Commit 2f283818 by Eric Botcazou Committed by Eric Botcazou

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
parent ac53d5f2
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.
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment