aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-ssa-sccvn.c14
2 files changed, 16 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 49f7274..b604ec6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-10-09 Nathan Froyd <froydnj@codesourcery.com>
+
+ 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 <ralf.corsepius@rtems.org>
* config.gcc (bfin*-rtems*): Add newlib-stdint.h.
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. */