aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog8
-rw-r--r--gcc/ada/gcc-interface/decl.c3
-rw-r--r--gcc/ada/gcc-interface/trans.c5
3 files changed, 12 insertions, 4 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index d393c45..924e8d6 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,13 @@
2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: If
+ this is not a definition, retrieve the expression in all cases
+ even if we are just annotating types.
+ * gcc-interface/trans.c (gnat_to_gnu): Also translate Size
+ attribute for constrained types in this mode.
+
+2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
+
* adaint.c (__gnat_get_executable_suffix_ptr): Add new line.
(__gnat_locate_exec): Check that HOST_EXECUTABLE_SUFFIX is not
empty before doing a string search for it.
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index ff87529..a0d2cbe 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -612,8 +612,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition)
&& !No_Initialization (gnat_decl)
&& !Is_Dispatch_Table_Entity (gnat_entity)
&& Present (gnat_temp = Expression (gnat_decl))
- && Nkind (gnat_temp) != N_Allocator
- && (!type_annotate_only || Compile_Time_Known_Value (gnat_temp)))
+ && Nkind (gnat_temp) != N_Allocator)
gnu_expr = gnat_to_gnu_external (gnat_temp);
/* ... fall through ... */
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index 53513e5..6757c2f 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -5930,8 +5930,9 @@ gnat_to_gnu (Node_Id gnat_node)
|| kind == N_Type_Conversion)
&& Is_Integer_Type (Etype (gnat_node)))
&& !(kind == N_Attribute_Reference
- && Get_Attribute_Id (Attribute_Name (gnat_node)) == Attr_Length
- && Ekind (Etype (Prefix (gnat_node))) == E_Array_Subtype
+ && (Get_Attribute_Id (Attribute_Name (gnat_node)) == Attr_Length
+ || Get_Attribute_Id (Attribute_Name (gnat_node)) == Attr_Size)
+ && Is_Constrained (Etype (Prefix (gnat_node)))
&& !Is_Constr_Subt_For_U_Nominal (Etype (Prefix (gnat_node))))
&& kind != N_Expanded_Name
&& kind != N_Identifier