[Bug tree-optimization/99728] code pessimization when using wrapper classes around SIMD types
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Jul 14 13:04:50 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99728
--- Comment #19 from Richard Biener <rguenth at gcc dot gnu.org> ---
Created attachment 51150
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51150&action=edit
patch
This is what I bootstrapped & tested on x86_64-unknown-linux-gnu. It causes
FAIL: g++.dg/warn/Wparentheses-22.C -std=gnu++14 correct warning (test for
warnings, line 104)
FAIL: g++.dg/warn/Wparentheses-22.C -std=gnu++14 correct warning (test for
warnings, line 33)
...
FAIL: g++.dg/warn/Wparentheses-23.C -std=gnu++14 (test for warnings, line
117)
FAIL: g++.dg/warn/Wparentheses-23.C -std=gnu++14 (test for warnings, line
118)
...
interfering with the intent to warn about code like
if (a = b) // { dg-warning "assignment" "correct warning" }
foo (0);
where a and b are aggregates convertible to bool. We end up generating
something that acts as a valid "fix" for the diagnostic:
if ((a = b), a)
similarly we'd beforehand not diagnose the case of an empty aggregate
assignment not wrapped in parentheses.
Adjusting the warning code to also look for the COMPOUND_EXPR case
wouldn't be valid if we'd not somehow mark those "fake" COMPOUND_EXPRs
in a special way.
Not sure what to do here. Maybe simply ignore the lost diagnostic and
XFAIL the testcase or adjust it to have a second member in the aggregate
used.
More information about the Gcc-bugs
mailing list