http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58970

--- Comment #10 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
but this should'nt be neccessary then?

   if (bitoffset > *bitpos)
     {
       HOST_WIDE_INT adjust = bitoffset - *bitpos;
-
       gcc_assert ((adjust % BITS_PER_UNIT) == 0);
-      gcc_assert (*offset != NULL_TREE);

       *bitpos += adjust;
-      *offset
-    = size_binop (MINUS_EXPR, *offset, size_int (adjust / BITS_PER_UNIT));
+      if (*offset == NULL_TREE)
+    *offset = size_int (-adjust / BITS_PER_UNIT);
+      else
+    *offset
+      = size_binop (MINUS_EXPR, *offset, size_int (adjust / BITS_PER_UNIT));
       *bitstart = 0;
     }

Reply via email to