This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/33552] wrong code for multiple output asm, wrong df?

------- Comment #5 from ubizjak at gmail dot com  2007-09-25 13:58 -------
(In reply to comment #1)

> #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
>   __asm__ ("addq %5,%q1\n\tadcq %3,%q0"                                 \
>            : "=r" (sh), "=&r" (sl)                                      \
>            : "0"  ((UDItype)(ah)), "rme" ((UDItype)(bh)),               \
>              "%1" ((UDItype)(al)), "rme" ((UDItype)(bl)))
> marking %0 early-clobbered fixes the problem.

We also have longlong.h in gcc/ directory, where

#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
  __asm__ ("addq %5,%1\n\tadcq %3,%0"                                   \
           : "=r" ((UDItype) (sh)),                                     \
             "=&r" ((UDItype) (sl))                                     \
           : "%0" ((UDItype) (ah)),                                     \
             "rme" ((UDItype) (bh)),                                    \
             "%1" ((UDItype) (al)),                                     \
             "rme" ((UDItype) (bl)))

It looks to me that gmp's longlong.h is buggy (gcc/longlong.h is used in
soft-fp TFmode calculations and these are used in a couple of places through
the testsuite).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]