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

Reply via email to