aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBob Duff <duff@adacore.com>2021-12-10 15:53:04 -0500
committerPierre-Marie de Rodat <derodat@adacore.com>2022-01-07 16:24:05 +0000
commit5e5030df8f223fb800d5ad7735c419a16b37dfaf (patch)
tree02c9b99fe2f7ac44399caf9ba0b4190174c2fd33 /gcc
parent1226283cd9ec5c1a916ed219895ffe11b89ea9c0 (diff)
downloadgcc-5e5030df8f223fb800d5ad7735c419a16b37dfaf.zip
gcc-5e5030df8f223fb800d5ad7735c419a16b37dfaf.tar.gz
gcc-5e5030df8f223fb800d5ad7735c419a16b37dfaf.tar.bz2
[Ada] treepr: Print value of static expression
gcc/ada/ * treepr.adb (Print_Node_Ref): Print the value if available.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/treepr.adb19
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/ada/treepr.adb b/gcc/ada/treepr.adb
index c1e71b1..ad2bbf0 100644
--- a/gcc/ada/treepr.adb
+++ b/gcc/ada/treepr.adb
@@ -37,6 +37,7 @@ with Namet; use Namet;
with Nlists; use Nlists;
with Output; use Output;
with Seinfo; use Seinfo;
+with Sem_Eval; use Sem_Eval;
with Sinfo; use Sinfo;
with Sinfo.Nodes; use Sinfo.Nodes;
with Sinfo.Utils; use Sinfo.Utils;
@@ -1642,6 +1643,24 @@ package body Treepr is
end if;
end if;
+ -- If this is an integer-like expression whose value is known, print
+ -- that value.
+
+ if Nkind (N) in N_Subexpr
+ and then Compile_Time_Known_Value (N)
+ and then Present (Etype (N))
+ and then not Is_Array_Type (Etype (N))
+ then
+ if Is_Entity_Name (N) -- e.g. enumeration literal
+ or else Nkind (N) in N_Integer_Literal
+ | N_Character_Literal
+ | N_Unchecked_Type_Conversion
+ then
+ Print_Str (" val = ");
+ UI_Write (Expr_Value (N));
+ end if;
+ end if;
+
if Nkind (N) in N_Entity then
Write_Str (" (Entity_Id=");
else