aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRobert Dewar <dewar@adacore.com>2008-05-26 11:41:03 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2008-05-26 11:41:03 +0200
commitb98bd80dcf9d82564a9f38930c87121910d7505f (patch)
treee61a2ec7f895f9b887d25f053c8e2cfee548edf9 /gcc
parentac38d4afd3c32dbedf87fc5aadf6cf5e40264389 (diff)
downloadgcc-b98bd80dcf9d82564a9f38930c87121910d7505f.zip
gcc-b98bd80dcf9d82564a9f38930c87121910d7505f.tar.gz
gcc-b98bd80dcf9d82564a9f38930c87121910d7505f.tar.bz2
2008-05-26 Robert Dewar <dewar@adacore.com>
* exp_ch2.adb: (Expand_Current_Value): Properly type generated integer literal From-SVN: r135904
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/exp_ch2.adb14
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ada/exp_ch2.adb b/gcc/ada/exp_ch2.adb
index 6093f2a..3825405 100644
--- a/gcc/ada/exp_ch2.adb
+++ b/gcc/ada/exp_ch2.adb
@@ -193,13 +193,21 @@ package body Exp_Ch2 is
Unchecked_Convert_To (T,
New_Occurrence_Of (Entity (Val), Loc)));
- -- Otherwise get the value, and convert to appropriate type
+ -- If constant is of an integer type, just make an appropriately
+ -- integer literal, which will get the proper type.
+
+ elsif Is_Integer_Type (T) then
+ Rewrite (N,
+ Make_Integer_Literal (Loc,
+ Intval => Expr_Rep_Value (Val)));
+
+ -- Otherwise do unchecked conversion of value to right type
else
Rewrite (N,
Unchecked_Convert_To (T,
- Make_Integer_Literal (Loc,
- Intval => Expr_Rep_Value (Val))));
+ Make_Integer_Literal (Loc,
+ Intval => Expr_Rep_Value (Val))));
end if;
Analyze_And_Resolve (N, T);