]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/33655 (ICE in bitfield_overlaps_p, at tree-sra.c:2901)
authorJames E Wilson <wilson@specifixinc.com>
Tue, 9 Oct 2007 04:55:17 +0000 (04:55 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Tue, 9 Oct 2007 04:55:17 +0000 (04:55 +0000)
PR tree-optimization/33655
PR middle-end/22156
* tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
convert it to bitsizetype before size_binop call.

From-SVN: r129152

gcc/ChangeLog
gcc/tree-sra.c

index d275fbb437dfe47eb81deec9330e7fce0e326b0f..03230d1eebe396acc3b5b7f0abd8500fe32d1954 100644 (file)
@@ -1,3 +1,10 @@
+2007-10-09  James E. Wilson  <wilson@specifix.com>
+
+       PR tree-optimization/33655
+       PR middle-end/22156
+       * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
+       convert it to bitsizetype before size_binop call.
+
 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
 
        PR tree-optimization/33572
index f8b4470562e4d7f4089f2632172cb80598762620..21da0c0a29803db2843edafaecf8cf3df6e50cde 100644 (file)
@@ -2906,7 +2906,8 @@ bitfield_overlaps_p (tree blen, tree bpos, struct sra_elt *fld,
   else if (TREE_CODE (fld->element) == INTEGER_CST)
     {
       flen = fold_convert (bitsizetype, TYPE_SIZE (fld->type));
-      fpos = size_binop (MULT_EXPR, flen, fld->element);
+      fpos = fold_convert (bitsizetype, fld->element);
+      fpos = size_binop (MULT_EXPR, flen, fpos);
     }
   else
     gcc_unreachable ();