aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2024-10-24 19:41:26 +0000
committerJoseph Myers <josmyers@redhat.com>2024-10-24 19:41:26 +0000
commit097994003cb3b09af2b07238e54f08b89dd34369 (patch)
tree353d877183590b553e7ddef30814db154810c94b
parentb3aa301db1b09b533b3635791a98d6bf906e9a15 (diff)
downloadgcc-097994003cb3b09af2b07238e54f08b89dd34369.zip
gcc-097994003cb3b09af2b07238e54f08b89dd34369.tar.gz
gcc-097994003cb3b09af2b07238e54f08b89dd34369.tar.bz2
testsuite: Use -fno-ipa-icf in gcc.dg/stack-check-2.c
One test failing with a -std=gnu23 default that I wanted to investigate further is gcc.dg/stack-check-2.c. The failures are FAIL: gcc.dg/stack-check-2.c scan-tree-dump-not optimized "tail call" FAIL: gcc.dg/stack-check-2.c scan-tree-dump-not tailc "tail call" but it turns out the tail calls in question are not the ones that test is actually checking for. Rather, when () is interpreted as (void) in C23 mode, ICF notices that certain functions are identical and so turns test_indirect_2 into a tail call to text_indirect_1 and test_indirect_casted_2 into a tail call to test_indirect_casted_1 (which it didn't do previously when one function used () and one used (void)). To avoid these spurious failures, make the test use -fno-ipa-icf rather than relying on () and (void) giving different function types to avoid ICF. Tested for x86_64-pc-linux-gnu. * gcc.dg/stack-check-2.c: Use -fno-ipa-icf.
-rw-r--r--gcc/testsuite/gcc.dg/stack-check-2.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.dg/stack-check-2.c b/gcc/testsuite/gcc.dg/stack-check-2.c
index 196c4bb..a821c0e 100644
--- a/gcc/testsuite/gcc.dg/stack-check-2.c
+++ b/gcc/testsuite/gcc.dg/stack-check-2.c
@@ -12,7 +12,7 @@
depend on to elide stack probes. */
/* { dg-do compile } */
-/* { dg-options "-O2 -fstack-clash-protection -fdump-tree-tailc -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fstack-clash-protection -fdump-tree-tailc -fdump-tree-optimized -fno-ipa-icf" } */
/* { dg-require-effective-target supports_stack_clash_protection } */
extern void foo (void) __attribute__ ((__noreturn__));