From: Nathan Froyd Date: Sat, 9 Oct 2010 11:44:00 +0000 (+0000) Subject: re PR tree-optimization/45950 (ICE segmentation fault compiling __udivdi3) X-Git-Tag: releases/gcc-4.6.0~3710 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=64978ba3f2ba45b89732cc3f70c7efbded95da2a;p=thirdparty%2Fgcc.git re PR tree-optimization/45950 (ICE segmentation fault compiling __udivdi3) PR tree-optimization/45950 * tree-ssa-sccvn.c (init_vn_nary_op_from_pieces): Consult length before initializing vno->op. From-SVN: r165220 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 49f7274cfe7c..b604ec698753 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-10-09 Nathan Froyd + + PR tree-optimization/45950 + * tree-ssa-sccvn.c (init_vn_nary_op_from_pieces): Consult length + before initializing vno->op. + 2010-10-09 Ralf Corsépius * config.gcc (bfin*-rtems*): Add newlib-stdint.h. diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index ed56d1de673b..33038b37d638 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -1708,10 +1708,16 @@ init_vn_nary_op_from_pieces (vn_nary_op_t vno, unsigned int length, vno->opcode = code; vno->length = length; vno->type = type; - vno->op[0] = op0; - vno->op[1] = op1; - vno->op[2] = op2; - vno->op[3] = op3; + switch (length) + { + /* The fallthrus here are deliberate. */ + case 4: vno->op[3] = op3; + case 3: vno->op[2] = op2; + case 2: vno->op[1] = op1; + case 1: vno->op[0] = op0; + default: + break; + } } /* Initialize VNO from OP. */