------- Comment #1 from jakub at gcc dot gnu dot org  2010-08-11 19:42 -------
/* PR debug/45259 */
/* { dg-do compile } */
/* { dg-options "-g -O2 -fpic -w" { target fpic } } */

struct S { void (*bar) (long); };
struct T { struct S *t; };
int w;
extern int baz (int);

void
foo (int x, int u, char *z)
{
  struct T *v;
  static void *y[256] = { &&l1, &&l2 };
  for (;;)
      switch (x)
        {
        l2:
          x = 9;
        case 9:
          goto *y[*z++];
        case 10:
        case 27:
        case 54:
        case 99:
        case 100:
        case 120:
        case 122:
        case 131:
        case 132:
        case 134:
        case 141:
        case 142:
          v->t->bar (u);
          v->t->bar (u);
        case 143:
          continue;
        l1:
        default:
          baz (w);
        }
}

ICEs:
internal compiler error: in save_call_clobbered_regs, at caller-save.c:896
with both trunk and 4.5.  last here is a JUMP_INSN with ADDR_DIFF_VEC before bb
5 (but last->block is 5), this is followed by barrier, code_label and a
debug_insn.  So before the debug_insn isn't any note, nor last->insn, but
code_label (and barrier).


-- 

jakub at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |jakub at gcc dot gnu dot org
                   |dot org                     |
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|0                           |1
           Keywords|                            |ice-on-valid-code
   Last reconfirmed|0000-00-00 00:00:00         |2010-08-11 19:42:30
               date|                            |
            Summary|[4.5/4.6 Regression         |[4.5/4.6 Regression] ICE in
                   |                            |save_call_clobbered_regs
   Target Milestone|---                         |4.5.2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45259

Reply via email to