aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2009-04-21 07:10:01 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2009-04-21 07:10:01 +0000
commit2f283818fcf75a4e94037882f3d305dea89f3a74 (patch)
tree101c901c474d666b5ad5859c560a2ad57d0666ff /gcc
parentac53d5f2542c1f667448d87b6640531caf3fa234 (diff)
downloadgcc-2f283818fcf75a4e94037882f3d305dea89f3a74.zip
gcc-2f283818fcf75a4e94037882f3d305dea89f3a74.tar.gz
gcc-2f283818fcf75a4e94037882f3d305dea89f3a74.tar.bz2
decl.c (gnat_to_gnu_entity): Do not make constant objects covered by 13.3(19) volatile.
* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Do not make constant objects covered by 13.3(19) volatile. From-SVN: r146468
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/decl.c13
2 files changed, 10 insertions, 8 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 0e48f78..d771e98 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,10 @@
2009-04-21 Eric Botcazou <ebotcazou@adacore.com>
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Do not make
+ constant objects covered by 13.3(19) volatile.
+
+2009-04-21 Eric Botcazou <ebotcazou@adacore.com>
+
* gcc-interface/utils.c (create_type_decl): Do not pass declarations
of dummy fat pointer types to the debug back-end.
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 390d458..18ebeff 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -967,15 +967,12 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
/* Make a volatile version of this object's type if we are to make
the object volatile. We also interpret 13.3(19) conservatively
- and disallow any optimizations for an object covered by it. */
+ and disallow any optimizations for such a non-constant object. */
if ((Treat_As_Volatile (gnat_entity)
- || (Is_Exported (gnat_entity)
- /* Exclude exported constants created by the compiler,
- which should boil down to static dispatch tables and
- make it possible to put them in read-only memory. */
- && (Comes_From_Source (gnat_entity) || !const_flag))
- || Is_Imported (gnat_entity)
- || Present (Address_Clause (gnat_entity)))
+ || (!const_flag
+ && (Is_Exported (gnat_entity)
+ || Is_Imported (gnat_entity)
+ || Present (Address_Clause (gnat_entity)))))
&& !TYPE_VOLATILE (gnu_type))
gnu_type = build_qualified_type (gnu_type,
(TYPE_QUALS (gnu_type)