https://gcc.gnu.org/g:097994003cb3b09af2b07238e54f08b89dd34369

commit r15-4616-g097994003cb3b09af2b07238e54f08b89dd34369
Author: Joseph Myers <josmy...@redhat.com>
Date:   Thu Oct 24 19:41:26 2024 +0000

    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.

Diff:
---
 gcc/testsuite/gcc.dg/stack-check-2.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/testsuite/gcc.dg/stack-check-2.c 
b/gcc/testsuite/gcc.dg/stack-check-2.c
index 196c4bbfbdda..a821c0ef8657 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__));

Reply via email to