https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25714

--- Comment #8 from Tobias Schlüter <tobi at gcc dot gnu.org> ---
No more temporary FAICT https://godbolt.org/z/o8fYE1nej

If written as a proper function:
function c(a, b)
character(2) :: c
character(1) :: a
character(1) :: b
c = a//b
end
we get:
c_:
        push    rbx
        mov     r9, rcx
        mov     rbx, rdi
        mov     rcx, rdx
        mov     r8d, 1
        mov     edx, 1
        mov     edi, 2
        sub     rsp, 16
        lea     rsi, [rsp+14]
        call    _gfortran_concat_string
        movzx   eax, WORD PTR [rsp+14]
        mov     WORD PTR [rbx], ax
        add     rsp, 16
        pop     rbx
        ret
... and likewise for the original testcase.

Reply via email to