On 03/06/2015 05:42 AM, H.J. Lu wrote: > gcc/ > > PR target/65248 > * output.h (default_binds_local_p_2): New. > * varasm.c (default_binds_local_p_2): Renamed to ... > (default_binds_local_p_3): This. Don't return true on protected > data symbol if protected data may be external. > (default_binds_local_p): Use default_binds_local_p_3. > (default_binds_local_p_1): Likewise. > (default_binds_local_p_2): New. > * config/i386/i386.c (TARGET_BINDS_LOCAL_P): Replace > darwin_binds_local_p with default_binds_local_p_2.
Ok. > PR target/65248 > * gcc.target/i386/pr65248-1.c: New file. > * gcc.target/i386/pr65248-2.c: Likewise. > * gcc.target/i386/pr65248-3.c: Likewise. > * gcc.target/i386/pr65248-4.c: Likewise. These need some tidying, I think. > +/* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %eax" { target > { ! ia32 } } } } */ > +/* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */ > +/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), > %eax" { target ia32 } } } */ > +/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { > target ia32 } } } */ The second line is what the rest of these should look like. You don't need to scan for movl or %eax. The relocation used is the only thing that's relevant. Thus xxx\\(%rip\\) xxx@GOTPCREL xxx@GOTOFF xxx@GOT\\( respectively. r~