On Tue, Mar 20, 2012 at 4:52 PM, H.J. Lu <hjl.to...@gmail.com> wrote:

>>> Yeah, my bootstrap just failed the same.  Will test:
>>>
>>> 2012-03-20  Jakub Jelinek  <ja...@redhat.com>
>>>
>>>       * config/i386/i386.c (ix86_decompose_address) <case ZERO_EXTEND>:
>>>       If operand isn't UNSPEC, return 0.
>>
>> Committed as obvious now that bootstrap/regtest finished on x86_64-linux
>> and i686-linux.
>>
>>> --- gcc/config/i386/i386.c.jj 2012-03-20 09:35:06.000000000 +0100
>>> +++ gcc/config/i386/i386.c    2012-03-20 09:56:35.038835835 +0100
>>> @@ -11516,6 +11516,8 @@ ix86_decompose_address (rtx addr, struct
>>>
>>>           case ZERO_EXTEND:
>>>             op = XEXP (op, 0);
>>> +           if (GET_CODE (op) != UNSPEC)
>>> +             return 0;
>>>             /* FALLTHRU */
>>>
>>>           case UNSPEC:
>>
>
> Uros,
>
> I think use the OS provided instruction to load TP into DImode register
> could simplify the code.

Which OS provided instruction?

Please see how TP is defined in get_thread_pointer, it is in ptr_mode:

  rtx tp = gen_rtx_UNSPEC (ptr_mode, gen_rtvec (1, const0_rtx), UNSPEC_TP);

This says that TP is in SImode on X32.

Uros.

Reply via email to