[Bug tree-optimization/105175] [12 Regression] Pointless warning about missed vector optimization
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Apr 6 08:17:21 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105175
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|rtl-optimization |tree-optimization
Last reconfirmed| |2022-04-06
Target Milestone|--- |12.0
Target| |x86_64-*-*
Status|UNCONFIRMED |ASSIGNED
Keywords| |diagnostic,
| |missed-optimization
Ever confirmed|0 |1
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
I think the issue is that the vectorizer generates
<bb 2> [local count: 1073741824]:
+ vect__1.5_8 = MEM <vector(2) unsigned int> [(unsigned int
*)&qemuMigrationCookieGetPersistent_mig];
+ vect__2.6_9 = vect__1.5_8 & { 1, 1 };
_1 = qemuMigrationCookieGetPersistent_mig.flags;
_2 = _1 & 1;
- qemuMigrationCookieGetPersistent_mig.flags = _2;
_3 = qemuMigrationCookieGetPersistent_mig.flagsMandatory;
_4 = _3 & 1;
- qemuMigrationCookieGetPersistent_mig.flagsMandatory = _4;
+ MEM <vector(2) unsigned int> [(unsigned int
*)&qemuMigrationCookieGetPersistent_mig] = vect__2.6_9;
but appearantly it does not check availability of the bitwise AND V2SImode
operation. vector lowering recognizes this missing operation and lowers
it to
+ long unsigned int _6;
+ long unsigned int _7;
+ vector(2) unsigned int _11;
<bb 2> [local count: 1073741824]:
vect__1.5_8 = MEM <vector(2) unsigned int> [(unsigned int
*)&qemuMigrationCookieGetPersistent_mig];
- vect__2.6_9 = vect__1.5_8 & { 1, 1 };
+ _7 = VIEW_CONVERT_EXPR<long unsigned int>(vect__1.5_8);
+ _6 = _7 & 4294967297;
+ _11 = VIEW_CONVERT_EXPR<vector(2) unsigned int>(_6);
+ vect__2.6_9 = _11;
_maybe_ V2SImode is also a real thing now even with -mno-sse, but the
AND is cut out (or not implemented).
That is, this is probably a vectorizer missed target check.
More information about the Gcc-bugs
mailing list