aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <richard@codesourcery.com>2007-03-21 09:11:25 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2007-03-21 09:11:25 +0000
commit39a39c8504a4188f5fea639e1c0ddc8cb57a4281 (patch)
treed58ec84bf1bdeb8d7d5b711c284bfb58697097f0 /gcc
parent2a450639801b638f5b28d00b1ba0b560d8a2c271 (diff)
downloadgcc-39a39c8504a4188f5fea639e1c0ddc8cb57a4281.zip
gcc-39a39c8504a4188f5fea639e1c0ddc8cb57a4281.tar.gz
gcc-39a39c8504a4188f5fea639e1c0ddc8cb57a4281.tar.bz2
target-supports.exp (check_effective_target_nonpic): New procedure.
gcc/testsuite/ * lib/target-supports.exp (check_effective_target_nonpic): New procedure. * gcc.target/i386/20020616-1.c: Use an alternative to %ebx when compiling PIC. * gcc.target/i386/asm-4.c: Require nonpic. * gcc.target/i386/cmov1.c: Likewise. * gcc.target/i386/mul.c: Likewise. * gcc.target/i386/pr21291.c: Require nonpic or ! ilp32. * gcc.target/i386/ssetype-1.c: Require nonpic. * gcc.target/i386/ssetype-3.c: Likewise. * gcc.target/i386/ssetype-5.c: Likewise. From-SVN: r123107
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog14
-rw-r--r--gcc/testsuite/gcc.target/i386/20020616-1.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/asm-4.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/cmov1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/mul.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr21291.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/ssetype-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/ssetype-3.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/ssetype-5.c2
-rw-r--r--gcc/testsuite/lib/target-supports.exp10
10 files changed, 48 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8be2829..656d05b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,19 @@
2007-03-21 Richard Sandiford <richard@codesourcery.com>
+ * lib/target-supports.exp (check_effective_target_nonpic): New
+ procedure.
+ * gcc.target/i386/20020616-1.c: Use an alternative to %ebx
+ when compiling PIC.
+ * gcc.target/i386/asm-4.c: Require nonpic.
+ * gcc.target/i386/cmov1.c: Likewise.
+ * gcc.target/i386/mul.c: Likewise.
+ * gcc.target/i386/pr21291.c: Require nonpic or ! ilp32.
+ * gcc.target/i386/ssetype-1.c: Require nonpic.
+ * gcc.target/i386/ssetype-3.c: Likewise.
+ * gcc.target/i386/ssetype-5.c: Likewise.
+
+2007-03-21 Richard Sandiford <richard@codesourcery.com>
+
* gcc.c-torture/execute/builtins/chk.h (LOCAL): Define.
* gcc.c-torture/execute/builtins/sprintf-chk.c (s1): Make LOCAL.
* gcc.c-torture/execute/builtins/stpcpy-chk.c (s1): Likewise.
diff --git a/gcc/testsuite/gcc.target/i386/20020616-1.c b/gcc/testsuite/gcc.target/i386/20020616-1.c
index 6db7842..5946770 100644
--- a/gcc/testsuite/gcc.target/i386/20020616-1.c
+++ b/gcc/testsuite/gcc.target/i386/20020616-1.c
@@ -2,7 +2,13 @@
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-O2" } */
+#if !__PIC__
register int k asm("%ebx");
+#elif __amd64
+register int k asm("%r12");
+#else
+register int k asm("%esi");
+#endif
void __attribute__((noinline))
foo()
diff --git a/gcc/testsuite/gcc.target/i386/asm-4.c b/gcc/testsuite/gcc.target/i386/asm-4.c
index d077e3a..7ca0c1b 100644
--- a/gcc/testsuite/gcc.target/i386/asm-4.c
+++ b/gcc/testsuite/gcc.target/i386/asm-4.c
@@ -2,6 +2,8 @@
taken in C code, don't use alternate calling convention for local
functions on IA-32. */
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* The asm in this test uses an absolute address. */
+/* { dg-require-effective-target nonpic } */
/* { dg-options "-O2" } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.target/i386/cmov1.c b/gcc/testsuite/gcc.target/i386/cmov1.c
index 9252d86..a20b213 100644
--- a/gcc/testsuite/gcc.target/i386/cmov1.c
+++ b/gcc/testsuite/gcc.target/i386/cmov1.c
@@ -1,4 +1,6 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* This test checks for absolute memory operands. */
+/* { dg-require-effective-target nonpic } */
/* { dg-options "-O2 -march=k8" } */
/* { dg-final { scan-assembler "sar\[^\\n\]*magic_namea" } } */
/* { dg-final { scan-assembler "sar\[^\\n\]*magic_nameb" } } */
diff --git a/gcc/testsuite/gcc.target/i386/mul.c b/gcc/testsuite/gcc.target/i386/mul.c
index 72069fe..d6e378d4 100644
--- a/gcc/testsuite/gcc.target/i386/mul.c
+++ b/gcc/testsuite/gcc.target/i386/mul.c
@@ -1,4 +1,6 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* This test checks for absolute memory operands. */
+/* { dg-require-effective-target nonpic } */
/* { dg-options "-O2 -march=k8" } */
/* { dg-final { scan-assembler "and\[^\\n\]*magic" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr21291.c b/gcc/testsuite/gcc.target/i386/pr21291.c
index acfc43d..f7348bd 100644
--- a/gcc/testsuite/gcc.target/i386/pr21291.c
+++ b/gcc/testsuite/gcc.target/i386/pr21291.c
@@ -1,4 +1,9 @@
-/* { dg-do compile } */
+/* The asm has 2 "r" in/out operands, 1 earlyclobber "r" output, 1 "r"
+ input and 2 fixed "r" clobbers (eax and edx), so there are a total of
+ 6 registers that must not conflict. Add to that the PIC register,
+ the frame pointer, and the stack pointer, and we've run out of
+ registers on 32-bit targets. */
+/* { dg-do compile { target { { ! ilp32 } || nonpic } } } */
/* { dg-options "-O" } */
typedef unsigned long bngdigit;
diff --git a/gcc/testsuite/gcc.target/i386/ssetype-1.c b/gcc/testsuite/gcc.target/i386/ssetype-1.c
index 47a6891..bd6dbbe 100644
--- a/gcc/testsuite/gcc.target/i386/ssetype-1.c
+++ b/gcc/testsuite/gcc.target/i386/ssetype-1.c
@@ -1,4 +1,6 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* This test checks for absolute memory operands. */
+/* { dg-require-effective-target nonpic } */
/* { dg-options "-O2 -msse2 -march=k8" } */
/* { dg-final { scan-assembler "andpd\[^\\n\]*magic" } } */
/* { dg-final { scan-assembler "andnpd\[^\\n\]*magic" } } */
diff --git a/gcc/testsuite/gcc.target/i386/ssetype-3.c b/gcc/testsuite/gcc.target/i386/ssetype-3.c
index cae79e5..3799896 100644
--- a/gcc/testsuite/gcc.target/i386/ssetype-3.c
+++ b/gcc/testsuite/gcc.target/i386/ssetype-3.c
@@ -1,4 +1,6 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* This test checks for absolute memory operands. */
+/* { dg-require-effective-target nonpic } */
/* { dg-options "-O2 -msse2 -march=k8" } */
/* { dg-final { scan-assembler "andps\[^\\n\]*magic" } } */
/* { dg-final { scan-assembler "andnps\[^\\n\]*magic" } } */
diff --git a/gcc/testsuite/gcc.target/i386/ssetype-5.c b/gcc/testsuite/gcc.target/i386/ssetype-5.c
index b03c83b..f9c257a 100644
--- a/gcc/testsuite/gcc.target/i386/ssetype-5.c
+++ b/gcc/testsuite/gcc.target/i386/ssetype-5.c
@@ -1,4 +1,6 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* This test checks for absolute memory operands. */
+/* { dg-require-effective-target nonpic } */
/* { dg-options "-O2 -msse2 -march=k8" } */
/* { dg-final { scan-assembler "pand\[^\\n\]*magic" } } */
/* { dg-final { scan-assembler "pandn\[^\\n\]*magic" } } */
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 0215bf9..4e80b91 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -527,6 +527,16 @@ proc check_effective_target_mpaired_single { } {
} "-mpaired-single"]
}
+# Return 1 if the current multilib does not generate PIC by default.
+
+proc check_effective_target_nonpic { } {
+ return [check_no_compiler_messages nonpic assembly {
+ #if __PIC__
+ #error FOO
+ #endif
+ }]
+}
+
# Return 1 if the target does not use a status wrapper.
proc check_effective_target_unwrapped { } {