diff options
author | Tristan Gingold <gingold@adacore.com> | 2016-10-11 10:11:49 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2016-10-11 10:11:49 +0000 |
commit | abb3ea16fa70565acae570e7410eb6702cf631ed (patch) | |
tree | a433e2ca87289f9ffbd9dc0bd239fe55664fd83b /gcc | |
parent | 87e25aac8e807189725dccbfd7569b0af21f577a (diff) | |
download | gcc-abb3ea16fa70565acae570e7410eb6702cf631ed.zip gcc-abb3ea16fa70565acae570e7410eb6702cf631ed.tar.gz gcc-abb3ea16fa70565acae570e7410eb6702cf631ed.tar.bz2 |
fe.h (Constant_Value): Declare.
* fe.h (Constant_Value): Declare.
* gcc-interface/decl.c (compile_time_known_address_p): Also consider
references to constants.
From-SVN: r240977
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/fe.h | 4 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/decl.c | 9 |
3 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 62a6d5c..d73db7b 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2016-10-11 Tristan Gingold <gingold@adacore.com> + + * fe.h (Constant_Value): Declare. + * gcc-interface/decl.c (compile_time_known_address_p): Also consider + references to constants. + 2016-10-11 Eric Botcazou <ebotcazou@adacore.com> * gcc-interface/trans.c (gnat_to_gnu) <N_Op_Add>: Adjust comment. diff --git a/gcc/ada/fe.h b/gcc/ada/fe.h index e9c3721..6d31ae1 100644 --- a/gcc/ada/fe.h +++ b/gcc/ada/fe.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2015, Free Software Foundation, Inc. * + * Copyright (C) 1992-2016, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * @@ -226,6 +226,7 @@ extern Boolean Is_Others_Aggregate (Node_Id); /* sem_aux: */ #define Ancestor_Subtype sem_aux__ancestor_subtype +#define Constant_Value sem_aux__constant_value #define First_Discriminant sem_aux__first_discriminant #define First_Stored_Discriminant sem_aux__first_stored_discriminant #define First_Subtype sem_aux__first_subtype @@ -233,6 +234,7 @@ extern Boolean Is_Others_Aggregate (Node_Id); #define Is_Derived_Type sem_aux__is_derived_type extern Entity_Id Ancestor_Subtype (Entity_Id); +extern Node_Id Constant_Value (Entity_Id); extern Entity_Id First_Discriminant (Entity_Id); extern Entity_Id First_Stored_Discriminant (Entity_Id); extern Entity_Id First_Subtype (Entity_Id); diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 0d45392..58d6625 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -6333,6 +6333,15 @@ array_type_has_nonaliased_component (tree gnu_type, Entity_Id gnat_type) static bool compile_time_known_address_p (Node_Id gnat_address) { + /* Handle reference to a constant. */ + if (Is_Entity_Name (gnat_address) + && Ekind (Entity (gnat_address)) == E_Constant) + { + gnat_address = Constant_Value (Entity (gnat_address)); + if (No (gnat_address)) + return false; + } + /* Catch System'To_Address. */ if (Nkind (gnat_address) == N_Unchecked_Type_Conversion) gnat_address = Expression (gnat_address); |