]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
testsuite, i386: Only check for cfi directives if supported [PR112729]
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Wed, 29 Nov 2023 13:52:04 +0000 (14:52 +0100)
committerRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Wed, 29 Nov 2023 13:52:04 +0000 (14:52 +0100)
gcc.target/i386/apx-interrupt-1.c and two more tests FAIL on Solaris/x86
with the native assembler.  Like Darwin as, it doesn't support cfi
directives.  Instead of adding more and more targets in every affected
test, this patch introduces a cfi effective-target keyword to check for
the prerequisite.

Tested on i386-pc-solaris2.11 (as and gas), x86_64-pc-linux-gnu, and
x86_64-apple-darwin23.1.0.

2023-11-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

gcc/testsuite:
PR testsuite/112729
* lib/target-supports.exp (check_effective_target_cfi): New proc.
* gcc.target/i386/apx-interrupt-1.c: Require cfi instead of
skipping on *-*-darwin*.
* gcc.target/i386/apx-push2pop2_force_drap-1.c: Likewise.
* gcc.target/i386/apx-push2pop2-1.c: Likewise.

gcc:
PR testsuite/112729
* doc/sourcebuild.texi (Effective-Target Keywords, Environment
attributes): Document cfi.

gcc/doc/sourcebuild.texi
gcc/testsuite/gcc.target/i386/apx-interrupt-1.c
gcc/testsuite/gcc.target/i386/apx-push2pop2-1.c
gcc/testsuite/gcc.target/i386/apx-push2pop2_force_drap-1.c
gcc/testsuite/lib/target-supports.exp

index e27e0fa606c4279c4c79bcf9ac6f724b0be81670..fbd45b5326860f7b2e251b68ffacd599a41be618 100644 (file)
@@ -2671,6 +2671,9 @@ The language for the compiler under test is C++.
 @item c99_runtime
 Target provides a full C99 runtime.
 
+@item cfi
+Target supports DWARF CFI directives.
+
 @item correct_iso_cpp_string_wchar_protos
 Target @code{string.h} and @code{wchar.h} headers provide C++ required
 overloads for @code{strchr} etc. functions.
index 6844e574d0059d920f227c76aa792d40988ee676..fefe2e6d6fc4699d0799d9c90a574ef6be08f758 100644 (file)
@@ -1,6 +1,5 @@
-/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-do compile { target { { ! ia32 } && cfi } } } */
 /* { dg-options "-mapx-features=egpr -m64 -O2 -mgeneral-regs-only -mno-cld -mno-push-args -maccumulate-outgoing-args -fomit-frame-pointer" } */
-/* { dg-skip-if "does not emit .cfi_xxx" "*-*-darwin*" } */
 
 extern void foo (void *) __attribute__ ((interrupt));
 extern int bar (int);
index 5f43b42e33f97eeddcb8a9f472a63d7167e44c95..06a7c0d41a53dd392a703caced100bda6cbd5349 100644 (file)
@@ -1,6 +1,5 @@
-/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-do compile { target { { ! ia32 } && cfi } } } */
 /* { dg-options "-O2 -mapx-features=push2pop2 -fomit-frame-pointer" } */
-/* { dg-skip-if "does not emit .cfi_xxx" "*-*-darwin*" } */
 
 extern int bar (int);
 
index 4e2259f0c997128cf74f9dbff54b69e557e63ee5..7e86e158a9b16bab41ccc9f10029b2151df067b3 100644 (file)
@@ -1,6 +1,5 @@
-/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-do compile { target { { ! ia32 } && cfi } } } */
 /* { dg-options "-O2 -mapx-features=push2pop2 -fomit-frame-pointer -mforce-drap" } */
-/* { dg-skip-if "does not emit .cfi_xxx" "*-*-darwin*" } */
 
 #include "apx-push2pop2-1.c"
 
index a72233588f90c822333cb334074e5a7a4950a210..8d874031ffea6306f680e8125fbe7445105e1c72 100644 (file)
@@ -10082,6 +10082,18 @@ proc check_effective_target_c99_runtime { } {
     }]
 }
 
+# Return 1 if the target supports DWARF CFI directives.
+
+proc check_effective_target_cfi { } {
+    return [check_no_compiler_messages cfi assembly {
+       #ifdef __GCC_HAVE_DWARF2_CFI_ASM
+        /* ok */
+       #else
+       #error unsupported
+       #endif
+    } ""]
+}
+
 # Return 1 if the target provides the D runtime.
 
 proc check_effective_target_d_runtime { } {