Hello! Attached patch adds nonpic target requirement for some (obvious) cases, where data access or PIC register setup confuses scan-asms.
2015-01-30 Uros Bizjak <ubiz...@gmail.com> * gcc.target/i386/fuse-caller-save-rec.c: Require nonpic target. * gcc.target/i386/fuse-caller-save-xmm.c: Ditto. * gcc.target/i386/fuse-caller-save.c: Ditto. * gcc.target/i386/headmerge-1.c: Ditto. * gcc.target/i386/headmerge-2.c: Ditto. * gcc.target/i386/sibcall-6.c: Ditto. Tested on x86_64-linux-gnu {-m32} /-fpic and committed to mainline SVN. Uros.
Index: gcc.target/i386/fuse-caller-save-rec.c =================================================================== --- gcc.target/i386/fuse-caller-save-rec.c (revision 220294) +++ gcc.target/i386/fuse-caller-save-rec.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target nonpic } */ /* { dg-options "-O2 -fipa-ra -fomit-frame-pointer -fno-optimize-sibling-calls" } */ /* { dg-additional-options "-mregparm=1" { target ia32 } } */ Index: gcc.target/i386/fuse-caller-save-xmm.c =================================================================== --- gcc.target/i386/fuse-caller-save-xmm.c (revision 220294) +++ gcc.target/i386/fuse-caller-save-xmm.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target nonpic } */ /* { dg-options "-O2 -msse2 -mno-avx -fipa-ra -fomit-frame-pointer" } */ typedef double v2df __attribute__((vector_size (16))); Index: gcc.target/i386/fuse-caller-save.c =================================================================== --- gcc.target/i386/fuse-caller-save.c (revision 220294) +++ gcc.target/i386/fuse-caller-save.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target nonpic } */ /* { dg-options "-O2 -fipa-ra -fomit-frame-pointer" } */ /* { dg-additional-options "-mregparm=1" { target ia32 } } */ Index: gcc.target/i386/headmerge-1.c =================================================================== --- gcc.target/i386/headmerge-1.c (revision 220294) +++ gcc.target/i386/headmerge-1.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target nonpic } */ /* { dg-options "-O2" } */ /* { dg-final { scan-assembler-times "\\\$120|, 120" 1 } } */ Index: gcc.target/i386/headmerge-2.c =================================================================== --- gcc.target/i386/headmerge-2.c (revision 220294) +++ gcc.target/i386/headmerge-2.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target nonpic } */ /* { dg-options "-O2" } */ /* { dg-final { scan-assembler-times "\\\$120|, 120" 1 } } */ Index: gcc.target/i386/sibcall-6.c =================================================================== --- gcc.target/i386/sibcall-6.c (revision 220294) +++ gcc.target/i386/sibcall-6.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile { target ia32 } } */ +/* { dg-require-effective-target nonpic } */ /* { dg-options "-O2" } */ typedef void *ira_loop_tree_node_t;