This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/33552] wrong code for multiple output asm, wrong df?
- From: "paolo dot bonzini at lu dot unisi dot ch" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 Sep 2007 14:22:03 -0000
- Subject: [Bug rtl-optimization/33552] wrong code for multiple output asm, wrong df?
- References: <bug-33552-10053@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #6 from paolo dot bonzini at lu dot unisi dot ch 2007-09-25 14:22 -------
Subject: Re: wrong code for multiple output asm,
wrong df?
ubizjak at gmail dot com wrote:
> ------- 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)))
I think that both version ought to work.
Paolo
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33552