]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* gcc-interface/decl.c (annotate_value): Fix thinko in latest change.
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 13 May 2014 21:17:07 +0000 (21:17 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 13 May 2014 21:17:07 +0000 (21:17 +0000)
From-SVN: r210403

gcc/ada/ChangeLog
gcc/ada/gcc-interface/decl.c

index 57c5176c838152c100acb0ea181c263193ef227d..7167f97d6f806f22434660c52a73b4af315f3f95 100644 (file)
@@ -1,3 +1,7 @@
+2014-05-13  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/decl.c (annotate_value): Fix thinko in latest change.
+
 2014-05-06  Kenneth Zadeck  <zadeck@naturalbridge.com>
            Mike Stump  <mikestump@comcast.net>
            Richard Sandiford  <rdsandiford@googlemail.com>
index 6d0b8b250386da80394db9a2b88fcddaf238df96..43ed0b33c3bde96e14c8e985187b2f05e079ff12 100644 (file)
@@ -7515,15 +7515,16 @@ annotate_value (tree gnu_size)
 
     case BIT_AND_EXPR:
       tcode = Bit_And_Expr;
-      /* For negative values, build NEGATE_EXPR of the opposite.  Such values
-        appear in expressions containing aligning patterns.  Note that, since
-        sizetype is unsigned, we have to jump through some hoops.   */
+      /* For negative values in sizetype, build NEGATE_EXPR of the opposite.
+        Such values appear in expressions with aligning patterns.  Note that,
+        since sizetype is unsigned, we have to jump through some hoops.   */
       if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST)
        {
          tree op1 = TREE_OPERAND (gnu_size, 1);
-         if (wi::neg_p (op1))
+         wide_int signed_op1 = wi::sext (op1, TYPE_PRECISION (sizetype));
+         if (wi::neg_p (signed_op1))
            {
-             op1 = wide_int_to_tree (sizetype, wi::neg (op1));
+             op1 = wide_int_to_tree (sizetype, wi::neg (signed_op1));
              pre_op1 = annotate_value (build1 (NEGATE_EXPR, sizetype, op1));
            }
        }