On Thu, Oct 24, 2024 at 06:42:01PM +0000, Joseph Myers wrote:
> 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. OK to commit?
>
> * gcc.dg/stack-check-2.c: Use -fno-ipa-icf.
LGTM.
Jakub