From: Eric Botcazou Date: Sat, 12 Sep 2020 10:47:39 +0000 (+0200) Subject: Fix small inconsistency in new predicate X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fe47e8163928d2cc42ad84634cfd147f948aad4a;p=gcc.git Fix small inconsistency in new predicate This can result on the mainline in a segfault when an object declared at library level is used in the declaration of another, local object. gcc/ada/ChangeLog: * gcc-interface/trans.c (lvalue_for_aggr_p) : Return false unconditionally. --- diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index aa4393c24b7..39d4d28fa67 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -968,12 +968,8 @@ lvalue_for_aggregate_p (Node_Id gnat_node, tree gnu_type) get_unpadded_type (Etype (gnat_parent))); case N_Object_Declaration: - /* For an aggregate object declaration, return the constant at top level - in order to avoid generating elaboration code. */ - if (global_bindings_p ()) - return false; - - /* ... fall through ... */ + /* For an aggregate object declaration, return false consistently. */ + return false; case N_Assignment_Statement: /* For an aggregate assignment, decide based on the size. */