------- 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