This is the mail archive of the gcc-patches@gcc.gnu.org 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]

Re: PATCH: PR target/47715: [x32] Use SImode for thread pointer


On Thu, Jul 28, 2011 at 3:40 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
> On Fri, Jul 29, 2011 at 12:28 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>
>>>>>>>>>> TP is 32bit in x32 ?For load_tp_x32, we load SImode value and
>>>>>>>>>> zero-extend to DImode. For add_tp_x32, we are adding SImode
>>>>>>>>>> value. ?We can't pretend TP is 64bit. ?load_tp_x32 and add_tp_x32
>>>>>>>>>> must take SImode TP.
>>>
>>>> Here is the revised patch. ?The difference is I changed *add_tp_x32 to SImode.
>>>> For
>>>>
>>>> ---
>>>> extern __thread int __libc_errno __attribute__ ((tls_model ("initial-exec")));
>>>>
>>>> int *
>>>> __errno_location (void)
>>>> {
>>>> ?return &__libc_errno;
>>>> }
>>>> ---
>>>>
>>>> compiled with -mx32 -O2 -fPIC ?DImode *add_tp_x32 generates:
>>>>
>>>> ? ? ? ?movq ? ?__libc_errno@gottpoff(%rip), %rax
>>>> ? ? ? ?addl ? ?%fs:0, %eax
>>>> ? ? ? ?mov ? ? %eax, %eax
>>>> ? ? ? ?ret
>>>>
>>>> SImode *add_tp_x32 generates:
>>>>
>>>> ? ? ? ?movl ? ?%fs:0, %eax
>>>> ? ? ? ?addl ? ?__libc_errno@gottpoff(%rip), %eax
>>>> ? ? ? ?ret
>>>
>>> This happens because combine can't combine DImode load and SImode plus
>>> RTXes. These RTXes have to be in Pmode, see the intention in
>>> legitimize_tls_address, also for TARGET_GNU2_TLS.
>>>
>>> Can you please debug what goes wrong with tp_add_x32 in DImode?
>>>
>>
>> We start with
>
> Uh, we didn't understand each other... can you please debug what goes
> wrong with glibc runtime test?
>

I haven't be able to reproduce it.  I may have a typo when I fixed the
pattern.  I will try again.



-- 
H.J.


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