2012/3/30 Jan Hubicka <hubi...@ucw.cz>:
>> On Thu, Mar 29, 2012 at 8:34 PM, Richard Henderson <r...@redhat.com> wrote:
>> > On 03/29/2012 01:16 PM, Jan Hubicka wrote:
>> >>> Of course, there's still the problem of getting the unwind data correct 
>> >>> at
>> >>> the point of the asm.  I commented about that in the PR you filed.
>> >>
>> >> I think i386 still has the problem that it is small register class target 
>> >> and if you
>> >> set rdi/rax and friends as hard registers, you risk reload failures.
>> >
>> > True, and if this were i386 code I would certainly recommend using the 
>> > [acd]
>> > constraints instead (for suitible regparm signature).  But this is 
>> > explicitly
>> > x86_64 code and the compiler has 8 registers otherwise available.
>
> Sure, still rdi/rax is the only option for some of instructions, so x86-64
> doesn't really solve all the problems.
>> >
>> >> Do we prevent code motion of hard registers sets i.e. at GIMPLE level?
>>
>> Yes we do (modulo bugs).
>
> Good. Note that this also include transformations like frward substitution 
> into
> area where hard register is live (i.e. it is not enough to just not touch hard
> registers as volatile, but one needs to prevent moving other code in).

Motion across hardreg sets/uses are not restricted.  And I would not expect
an optimizing compiler to do that (it's your own fault to use hardregs in
complex C code).

Richard.

Reply via email to