------- Comment #2 from rguenth at gcc dot gnu dot org 2010-01-09 11:25 ------- Confirmed.
We arrive at PRE with OnDisplay (char * string) { int D.1959; <bb 2>: if (string_2(D) == 0B) goto <bb 5>; else goto <bb 3>; <bb 5>: goto <bb 4>; <bb 3>: <bb 4>: # string_1 = PHI <string_2(D)(3), &"(none)"[0](5)> D.1959_4 = strlen (string_1); WriteTextDots (D.1959_4); return; note the missing conversion on the strlen return value assignment which misses already from the original frontend trees. This is because the builtin strlen has a proper prototype which is overridden by the invalid prototype extern int strlen(const char *); The PRE assert might look overeager here, but really only the missing gimple type verification saves us (I guess I didn't add that just because of similar issues). -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|major |normal Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |ice-on-invalid-code Known to fail| |4.4.2 4.5.0 Known to work| |4.3.4 Last reconfirmed|0000-00-00 00:00:00 |2010-01-09 11:25:00 date| | Summary|internal compiler error: in |[4.4/4.5 Regression] |insert_into_preds_of_block, |internal compiler error: in |at tree-ssa-pre.c:3146 |insert_into_preds_of_block, | |at tree-ssa-pre.c:3146 Target Milestone|--- |4.4.3 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42667