https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86122
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P2 Status|UNCONFIRMED |NEW Last reconfirmed| |2018-06-13 CC| |glisse at gcc dot gnu.org, | |rguenth at gcc dot gnu.org Component|c |middle-end Target Milestone|--- |8.2 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. /* (A +- CST1) +- CST2 -> A + CST3 Use view_convert because it is safe for vectors and equivalent for scalars. */ (for outer_op (plus minus) ... /* Last resort, use some unsigned type. */ (with { tree utype = unsigned_type_for (type); } (view_convert (inner_op (view_convert:utype @0) (view_convert:utype { drop_tree_overflow (cst); }))))))))))))) but utype is NULL_TREE here. type is <complex_type 0x7ffff68b4e70 complex int> signed_or_unsigned_type_for doesn't handle COMPLEX_TYPE.