c/2456: gcc crashes in build_insn_chain

paolo_faraboschi@hp.com paolo_faraboschi@hp.com
Mon Apr 2 06:46:00 GMT 2001


>Number:         2456
>Category:       c
>Synopsis:       gcc crashes in build_insn_chain
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Apr 02 06:46:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     paolo_faraboschi@hp.com
>Release:        gcc version 2.95 19990728 (release)
>Organization:
>Environment:
Linux RedHat 6.0
>Description:
When compiled with -O (or -O1) gcc crashes in "build_insn_chain". Works fine with -g, -O0, -O2, -O3
>How-To-Repeat:
gcc -c -O1 xx.c
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="xx.c"
Content-Disposition: inline; filename="xx.c"

extern int sim_mem_probe (volatile unsigned int);
extern unsigned int sim_mem_access32 (volatile unsigned int);
extern unsigned short sim_mem_access16 (volatile unsigned int);
extern unsigned char sim_mem_access8 (volatile unsigned int);
extern void sim_ta_init (int);

extern main ();
extern exit ();
extern printf ();

extern int mpn_random2 ();
extern int mpn_mul_1 ();
extern int mpn_cmp ();
extern int exxit ();
extern int mpn_print ();
extern int foo ();

static unsigned int _X1STRINGPACKETX1[1];
static unsigned int _X1STRINGPACKETX2[2];
static unsigned int _X1STRINGPACKETX3[2];
static unsigned int _X1STRINGPACKETX1[1];
static unsigned int _X1STRINGPACKETX2[2];
static unsigned int _X1STRINGPACKETX3[2];

extern unsigned int sim_create_stack (unsigned int, unsigned int);
extern void sim_check_stack (unsigned int, unsigned int);
extern void sim_bad_label (int);
unsigned int reg_b0_0, reg_b0_1, reg_b0_2, reg_b0_3;
unsigned int reg_b0_4, reg_b0_5, reg_b0_6, reg_b0_7;
unsigned int reg_b1_0, reg_b1_1, reg_b1_2, reg_b1_3;
unsigned int reg_b1_4, reg_b1_5, reg_b1_6, reg_b1_7;
unsigned int reg_b2_0, reg_b2_1, reg_b2_2, reg_b2_3;
unsigned int reg_b2_4, reg_b2_5, reg_b2_6, reg_b2_7;
unsigned int reg_b3_0, reg_b3_1, reg_b3_2, reg_b3_3;
unsigned int reg_b3_4, reg_b3_5, reg_b3_6, reg_b3_7;
unsigned int r0, r1, r2, r3;
unsigned int r4, r5, r6, r7;
unsigned int r8, r9, r10, r11;
unsigned int r12, r13, r14, r15;
unsigned int r16, r17, r18, r19;
unsigned int r20, r21, r22, r23;
unsigned int r24, r25, r26, r27;
unsigned int r28, r29, r30, r31;
unsigned int r32, r33, r34, r35;
unsigned int r36, r37, r38, r39;
unsigned int r40, r41, r42, r43;
unsigned int r44, r45, r46, r47;
unsigned int r48, r49, r50, r51;
unsigned int r52, r53, r54, r55;
unsigned int r56, r57, r58, r59;
unsigned int r60, r61, r62, r63;

extern
main ()
{
  unsigned int t_client_rpc;
  int t_labelnum;
  unsigned int t_bitbucket;
  static int sim_gprof_idx = 0;
  sim_ta_init (0);
  r12 = sim_create_stack (1048576, r12);
  sim_check_stack (r12, -24704);
  t_client_rpc = r63;
  r63 = (120 << 5);
  r12 = (r12) + ((unsigned int) -24704);
  r5 = (r12) + ((unsigned int) 16456);
  (*((volatile unsigned int *) (((r12 + (unsigned int) 24676))))) = ((unsigned int) (r63));
  r1 = (r12) + ((unsigned int) 16);
  r2 = (r12) + ((unsigned int) 8236);
l_L0X3:
  r17 = (unsigned int) 2055;
  r16 = r2;
  r63 = (120 << 5);
  r16 = (*((unsigned int (*)(unsigned int, unsigned int)) mpn_random2)) (r16, r17);
l_lr_2:
  r14 = (unsigned int) -1;
l_L1X3:
  reg_b0_0 = ((int) (r14) < (int) (0));
  r14 = (r14) + ((unsigned int) 1);
  if (!reg_b0_0)
      goto l_L2X3;
  goto l_L1X3;
l_L2X3:
  r14 = (unsigned int) -1;
  r15 = (unsigned int) 305419896;
  (*((volatile unsigned int *) (((r1 + (unsigned int) 8220))))) = ((unsigned int) (r15));
l_L3X3:
  reg_b0_0 = ((int) (r14) < (int) (0));
  (*((volatile unsigned int *) (((r12 + (unsigned int) 24680))))) = ((unsigned int) (r14));
  r16 = r1;
  if (!reg_b0_0)
      goto l_L4X3;
  r18 = (unsigned int) 2055;
  r17 = r2;
  r63 = (120 << 5);
  r16 = (*((unsigned int (*)(unsigned int, unsigned int, unsigned int)) mpn_mul_1)) (r16, r17, r18);
l_lr_7:
  r3 = r16;
  r14 = ((int) ((*((volatile unsigned int *) (((r12 + (unsigned int) 24680)))))));
  r14 = (r14) + ((unsigned int) 1);
  goto l_L3X3;
l_L4X3:
  reg_b0_0 = ((r4) != (r3));
  r18 = (unsigned int) 2056;
  r17 = r1;
  if (reg_b0_0)
      goto l_L5X3;
  r16 = r5;
  r63 = (120 << 5);
  r16 = (*((unsigned int (*)(unsigned int, unsigned int, unsigned int)) mpn_cmp)) (r16, r17, r18);
l_lr_10:
  r14 = ((int) (sim_mem_access32 (((r5 + (unsigned int) 8220)))));
  r14 = ((r14) != ((unsigned int) 305419896));
  reg_b0_0 = (((r16) == 0) & ((r14) == 0)) ? 1 : 0;
  if (!reg_b0_0)
      goto l_L5X3;
l_L6X3:
  r63 = (120 << 5);
  r16 = (*((unsigned int (*)()) exxit)) ();
l_lr_13:
  goto l_L0X3;
l_L5X3:
  r18 = r3;
  r17 = (unsigned int) 8;
  r16 = (unsigned int) _X1STRINGPACKETX1;
  r63 = (120 << 5);
  r16 = (*((unsigned int (*)(unsigned int, unsigned int, unsigned int)) foo)) (r16, r17, r18);
l_lr_16:
  r17 = (unsigned int) 2055;
  r16 = r1;
  r63 = (120 << 5);
  r16 = (*((unsigned int (*)(unsigned int, unsigned int)) mpn_print)) (r16, r17);
l_lr_18:
  goto l_L6X3;
  r63 = t_client_rpc;
  return;
labelfinder:
  switch (t_labelnum >> 5)
    {
    case 101: goto l_L0X3;
    case 103: goto l_lr_2;
    case 104: goto l_L1X3;
    case 105: goto l_L2X3;
    case 106: goto l_L3X3;
    case 108: goto l_lr_7;
    case 109: goto l_L4X3;
    case 111: goto l_lr_10;
    case 112: goto l_L6X3;
    case 114: goto l_lr_13;
    case 115: goto l_L5X3;
    case 117: goto l_lr_16;
    case 119: goto l_lr_18;
    case 120: r63 = t_client_rpc; return;
    default: sim_bad_label (t_labelnum);
    }
}



More information about the Gcc-bugs mailing list