https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118867
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amacleod at redhat dot com, | |rguenth at gcc dot gnu.org --- Comment #14 from Richard Biener <rguenth at gcc dot gnu.org> --- We have helpers for folding compares that canonicalize on the fly - we are nowhere canonializing such ADDR_EXPRs (to &MEM[&decl + CST]) because of object-size and late diagnostics. VN _should_ have figured this though by means of predication _30 = listJets.D.31591._M_impl._M_node.D.14392._M_next; if (&listJets.D.31591._M_impl._M_node.D.14392 == _30) goto <bb 19>; [5.50%] else goto <bb 9>; [94.50%] -> register &listJets.D.31591._M_impl._M_node.D.14392 != _30 <bb 9> [local count: 118111600]: if (&MEM[(struct _List_node_header *)&listJets].D.14392 != _30) -> find it. Unless there are other edges into BB 9, of course, in which case jump-threading is required and likely ranger / relations do not record "canonialized" ADDR_EXPRs.