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