]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/45950 (ICE segmentation fault compiling __udivdi3)
authorNathan Froyd <froydnj@codesourcery.com>
Sat, 9 Oct 2010 11:44:00 +0000 (11:44 +0000)
committerNathan Froyd <froydnj@gcc.gnu.org>
Sat, 9 Oct 2010 11:44:00 +0000 (11:44 +0000)
PR tree-optimization/45950
* tree-ssa-sccvn.c (init_vn_nary_op_from_pieces): Consult length
before initializing vno->op.

From-SVN: r165220

gcc/ChangeLog
gcc/tree-ssa-sccvn.c

index 49f7274cfe7c6502941bede65a1e3ad354b4843e..b604ec6987537ca1cf8795ddc96c5340438bcf7b 100644 (file)
@@ -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.
index ed56d1de673b61882718bc6d5031048a28fe8f59..33038b37d63850e9599d705fef9674cd987dd072 100644 (file)
@@ -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.  */