Patchwork [PR58066] preferred_stack_boundary update for tls expanded call

login
register
mail settings
Submitter Wei Mi
Date March 12, 2014, 9:58 p.m.
Message ID <CA+4CFy4PrriWXnfdixdpJO-6XmQSwCPWV9a3-GsZ2Uy2U+bQVA@mail.gmail.com>
Download mbox | patch
Permalink /patch/329719/
State New
Headers show

Comments

Wei Mi - March 12, 2014, 9:58 p.m.
This is the updated testcase.

Thanks,
Wei.


On Wed, Mar 12, 2014 at 2:51 PM, Wei Mi <wmi@google.com> wrote:
> Oh, I see. Thanks!
>
> Wei.
>
> On Wed, Mar 12, 2014 at 2:42 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Wed, Mar 12, 2014 at 2:36 PM, Wei Mi <wmi@google.com> wrote:
>>> Hi H.J.,
>>>
>>> Could you show me why you postpone the setting
>>> ix86_tls_descriptor_calls_expanded_in_cfun until reload_complete and
>>> use ix86_tls_descriptor_calls_expanded_in_cfun instead of
>>> ix86_current_function_calls_tls_descriptor? Isn't
>>> ix86_current_function_calls_tls_descriptor useful to consider the case
>>> that tls call is optimized away?
>>>
>>
>> When a tls call is optimized away, it won't survive reload.
>> If it does survive reload, it isn't optimized away.  Also
>> checking df_regs_ever_live_p (SP_REG) isn't reliable
>> when called from ix86_compute_frame_layout.
>>
>> --
>> H.J.
H.J. Lu - March 12, 2014, 10:07 p.m.
On Wed, Mar 12, 2014 at 2:58 PM, Wei Mi <wmi@google.com> wrote:
> This is the updated testcase.

Does my patch fix the original problem?

> Thanks,
> Wei.
>
> ===================================================================
> --- testsuite/gcc.dg/pr58066.c (revision 0)
> +++ testsuite/gcc.dg/pr58066.c (revision 0)
> @@ -0,0 +1,18 @@
> +/* { dg-do compile { target {{ i?86-*-* x86_64-*-* } && { ! ia32 } } } } */

Since it is a C testcase and we should test it under ia32, it
should be moved to gcc.target/i386 and remove target.

> +/* { dg-options "-fPIC -O2" } */
> +
> +/* Check whether the stack frame starting addresses of tls expanded calls
> +   in foo and goo are 16bytes aligned.  */
> +static __thread char ccc1;
> +void* foo()
> +{
> + return &ccc1;
> +}
> +
> +__thread char ccc2;
> +void* goo()
> +{
> + return &ccc2;
> +}
> +
> +/* { dg-final { scan-assembler-times ".cfi_def_cfa_offset 16" 2 } } */
>
> On Wed, Mar 12, 2014 at 2:51 PM, Wei Mi <wmi@google.com> wrote:
>> Oh, I see. Thanks!
>>
>> Wei.
>>
>> On Wed, Mar 12, 2014 at 2:42 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>> On Wed, Mar 12, 2014 at 2:36 PM, Wei Mi <wmi@google.com> wrote:
>>>> Hi H.J.,
>>>>
>>>> Could you show me why you postpone the setting
>>>> ix86_tls_descriptor_calls_expanded_in_cfun until reload_complete and
>>>> use ix86_tls_descriptor_calls_expanded_in_cfun instead of
>>>> ix86_current_function_calls_tls_descriptor? Isn't
>>>> ix86_current_function_calls_tls_descriptor useful to consider the case
>>>> that tls call is optimized away?
>>>>
>>>
>>> When a tls call is optimized away, it won't survive reload.
>>> If it does survive reload, it isn't optimized away.  Also
>>> checking df_regs_ever_live_p (SP_REG) isn't reliable
>>> when called from ix86_compute_frame_layout.
>>>
>>> --
>>> H.J.

Patch

===================================================================
--- testsuite/gcc.dg/pr58066.c (revision 0)
+++ testsuite/gcc.dg/pr58066.c (revision 0)
@@ -0,0 +1,18 @@ 
+/* { dg-do compile { target {{ i?86-*-* x86_64-*-* } && { ! ia32 } } } } */
+/* { dg-options "-fPIC -O2" } */
+
+/* Check whether the stack frame starting addresses of tls expanded calls
+   in foo and goo are 16bytes aligned.  */
+static __thread char ccc1;
+void* foo()
+{
+ return &ccc1;
+}
+
+__thread char ccc2;
+void* goo()
+{
+ return &ccc2;
+}
+
+/* { dg-final { scan-assembler-times ".cfi_def_cfa_offset 16" 2 } } */