aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-sccvn.c
diff options
context:
space:
mode:
authorNathan Froyd <froydnj@codesourcery.com>2010-10-09 11:44:00 +0000
committerNathan Froyd <froydnj@gcc.gnu.org>2010-10-09 11:44:00 +0000
commit64978ba3f2ba45b89732cc3f70c7efbded95da2a (patch)
treea302a02b61eec992b31537ace2f76bfebadce537 /gcc/tree-ssa-sccvn.c
parent2b3967f08d82b554863f532cc6b524c1f0c48946 (diff)
downloadgcc-64978ba3f2ba45b89732cc3f70c7efbded95da2a.zip
gcc-64978ba3f2ba45b89732cc3f70c7efbded95da2a.tar.gz
gcc-64978ba3f2ba45b89732cc3f70c7efbded95da2a.tar.bz2
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
Diffstat (limited to 'gcc/tree-ssa-sccvn.c')
-rw-r--r--gcc/tree-ssa-sccvn.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index ed56d1d..33038b3 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. */