aboutsummaryrefslogtreecommitdiff
path: root/gcc/common
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2025-03-13 13:23:28 +0000
committerRichard Sandiford <richard.sandiford@arm.com>2025-03-13 13:23:28 +0000
commit11c6d8cc9e5924c3a70e9289d1be2c2885b1dc6d (patch)
treed5ca1abee546855db43d8aba838b5c8eb9ad177e /gcc/common
parent50359c0a44381edb6dbd9359ef2ebdadbcc3ed42 (diff)
downloadgcc-11c6d8cc9e5924c3a70e9289d1be2c2885b1dc6d.zip
gcc-11c6d8cc9e5924c3a70e9289d1be2c2885b1dc6d.tar.gz
gcc-11c6d8cc9e5924c3a70e9289d1be2c2885b1dc6d.tar.bz2
testsuite: Add -fno-tree-sink to sve/pr96357.c
gcc.target/aarch64/sve/pr96357.c started failing after r15-518-g99b1daae18c095d6, which tweaked the heuristics about when to sink code. The testcase has: double i = d, j = 1.0 - f, k = j ? d : j; if (k == 1.0) i = 0.0; *l = *n = *g = *h = i * 0.5; where k == 1.0 is false if j is zero (since k is then also 0). So we end up with a diamond whose condition is j != 0 && d == 1. The else branch of the diamond is the only one that uses the result of i = d, so after the patch, we sink the conversion to there. And that seems like a reasonable thing to do. However, aarch64 doesn't yet allow int->double conversions to be predicated, so ifcvt cannot handle the sunk form, meaning that we can no longer vectorise. The testcase is highly artificial and so shouldn't IMO be used to tune the sinking heuristics. Instead I think we should just disable sinking for the test. An alternative would be to add -ffast-math, but I think that would interfere more with the original intent. gcc/testsuite/ * gcc.target/aarch64/sve/pr96357.c: Add -fno-tree-sink.
Diffstat (limited to 'gcc/common')
0 files changed, 0 insertions, 0 deletions