diff options
Diffstat (limited to 'gcc/ada/gcc-interface/decl.c')
-rw-r--r-- | gcc/ada/gcc-interface/decl.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index e6cd8d6..e0d7a5f 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -8070,7 +8070,7 @@ annotate_value (tree gnu_size) can appear for discriminants in expressions for variants. */ if (tree_int_cst_sgn (gnu_size) < 0) { - tree t = wide_int_to_tree (sizetype, wi::neg (gnu_size)); + tree t = wide_int_to_tree (sizetype, -wi::to_wide (gnu_size)); tcode = Negate_Expr; ops[0] = UI_From_gnu (t); } @@ -8174,7 +8174,8 @@ annotate_value (tree gnu_size) if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST) { tree op1 = TREE_OPERAND (gnu_size, 1); - wide_int signed_op1 = wi::sext (op1, TYPE_PRECISION (sizetype)); + wide_int signed_op1 = wi::sext (wi::to_wide (op1), + TYPE_PRECISION (sizetype)); if (wi::neg_p (signed_op1)) { op1 = wide_int_to_tree (sizetype, wi::neg (signed_op1)); |