https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115493

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
The cruical difference is:

-  _60 = BIT_FIELD_REF <vect_cstore_15.37_59, 32, 0>;
-  _61 = BIT_FIELD_REF <vect_cstore_15.37_59, 32, 32>;
-  _62 = MAX_EXPR <_61, _60>;
-  _63 = BIT_FIELD_REF <vect_cstore_15.37_59, 32, 64>;
-  _64 = MAX_EXPR <_63, _62>;
-  _65 = BIT_FIELD_REF <vect_cstore_15.37_59, 32, 96>;
-  _66 = MAX_EXPR <_65, _64>;
-  _67 = _66 == -1;
-  stmp_cstore_15.38_68 = _67 ? arr__I_lsm.26_4 : _66;
+  _58 = BIT_FIELD_REF <vect_cstore_15.37_57, 32, 0>;
+  _59 = BIT_FIELD_REF <vect_cstore_15.37_57, 32, 32>;
+  _60 = BIT_FIELD_REF <vect_cstore_15.37_57, 32, 64>;
+  _61 = BIT_FIELD_REF <vect_cstore_15.37_57, 32, 96>;
+  _62 = MAX_EXPR <_58, _59>;
+  _63 = MAX_EXPR <_62, _60>;
+  _64 = MAX_EXPR <_63, _61>;
+  _65 = _61 == -1;
+  stmp_cstore_15.38_66 = _65 ? arr__I_lsm.26_4 : _61;

note how the compare against -1 uses the vector component rather the MAX
reduced value.

Reply via email to