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

--- Comment #3 from Bill Klees <bill.klees at teamquest dot com> ---
Simplified Preprocessed source fails with same error
----------------------------------------------------

typedef int TItype __attribute__((mode(TI)));
typedef int DItype __attribute__((mode(DI)));
typedef unsigned int UDItype __attribute__((mode(DI)));

struct DWstruct { DItype high, low; };

typedef union
{
    struct DWstruct s;
    TItype ll;
} DWunion;

TItype
__multi3(TItype u, TItype v)
{
    const DWunion uu = { .ll = u };
    const DWunion vv = { .ll = v };
    DWunion w = { .ll = ({ DWunion __w; __asm__("xma.hu %0 = %2, %3,
f0\n\txma.l %1 = %2, %3, f0" : "=&f" (__w.s.high)
        , "=f" (__w.s.low) : "f" (uu.s.low), "f" (vv.s.low)); __w.ll; }) };

    w.s.high += ((UDItype)uu.s.low * (UDItype)vv.s.high
        + (UDItype)uu.s.high * (UDItype)vv.s.low);

    return w.ll;
}

Reply via email to