http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59860
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P1 Known to work| |4.8.2 Summary|[4.8 Regression] ICE in |[4.8/4.9 Regression] ICE in |compute_may_aliases, at |compute_may_aliases, at |tree-ssa-structalias.c:6843 |tree-ssa-structalias.c:6843 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Hmm, on s390x we fold # iftmp.0_1 = PHI <".raw"(4), ".wav"(5)> # .MEM_12 = VDEF <.MEM_2> __builtin___strcat_chk (outfilename_9(D), iftmp.0_1, 18446744073709551615); to _13 = __builtin_strlen (outfilename_9(D)); _14 = outfilename_9(D) + _13; __builtin_memcpy (_14, iftmp.0_1, 5); but not on other targets. Oh. static tree fold_builtin_strcat (location_t loc ATTRIBUTE_UNUSED, tree dst, tree src) { ... if (optimize_insn_for_speed_p ()) { That doesn't work when called from GIMPLE. and then /* If we don't have a movstr we don't want to emit an strcpy call. We have to do that if the length of the source string isn't computable (in that case we can use memcpy probably later expanding to a sequence of mov instructions). If we have movstr instructions we can emit strcpy calls. */ if (!HAVE_movstr) { tree len = c_strlen (src, 1); if (! len || TREE_SIDE_EFFECTS (len)) return NULL_TREE; } that probably makes it s390 specific. But it's a latent issue with folding stmts from object-size but not updating SSA form there. I'll fix it.