aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/decl.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2010-09-19 13:18:26 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2010-09-19 13:18:26 +0000
commita10623fb71eb10046cbd3d7ad7dc3b9cef781666 (patch)
treea5ed8033e0b3c5546a5519b7b314e7bbb3dd8ed4 /gcc/ada/gcc-interface/decl.c
parent50a6af053af7a89702c7093eec85b717257e88bc (diff)
downloadgcc-a10623fb71eb10046cbd3d7ad7dc3b9cef781666.zip
gcc-a10623fb71eb10046cbd3d7ad7dc3b9cef781666.tar.gz
gcc-a10623fb71eb10046cbd3d7ad7dc3b9cef781666.tar.bz2
decl.c (gnat_to_gnu_entity): Explicitly test _LEVEL variables against zero in all cases.
* gcc-interface/decl.c (gnat_to_gnu_entity): Explicitly test _LEVEL variables against zero in all cases. (rest_of_type_decl_compilation): Likewise. * gcc-interface/trans.c (gigi): Pass properly typed constants to create_var_decl. (call_to_gnu): Fix formatting. (Handled_Sequence_Of_Statements_to_gnu): Likewise. (Exception_Handler_to_gnu_zcx): Likewise. (gnat_to_gnu) <N_Object_Declaration>: Short-circuit handling of constant expressions in presence of a freeze node. From-SVN: r164415
Diffstat (limited to 'gcc/ada/gcc-interface/decl.c')
-rw-r--r--gcc/ada/gcc-interface/decl.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 6d77ffb..850777d 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -3510,7 +3510,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
&& TYPE_IS_DUMMY_P
(TREE_TYPE (get_gnu_tree (gnat_desig_equiv))))
|| (!in_main_unit
- && defer_incomplete_level
+ && defer_incomplete_level != 0
&& !present_gnu_tree (gnat_desig_equiv))
|| (in_main_unit
&& is_from_limited_with
@@ -3594,7 +3594,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
access type may be the full view of a private type. Note
that the unconstrained array case is handled above. */
|| ((!in_main_unit || imported_p)
- && defer_incomplete_level
+ && defer_incomplete_level != 0
&& !present_gnu_tree (gnat_desig_equiv)
&& (Is_Record_Type (gnat_desig_rep)
|| Is_Array_Type (gnat_desig_rep)))
@@ -3728,7 +3728,8 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
Besides, variants of this non-dummy type might have been created
along the way. update_pointer_to is expected to properly take
care of those situations. */
- if (!defer_incomplete_level && !is_from_limited_with_in_main_unit)
+ if (defer_incomplete_level == 0
+ && !is_from_limited_with_in_main_unit)
update_pointer_to (TYPE_MAIN_VARIANT (gnu_old_desig_type),
gnat_to_gnu_type (gnat_desig_equiv));
else
@@ -5045,7 +5046,7 @@ rest_of_type_decl_compilation (tree decl)
{
/* We need to defer finalizing the type if incomplete types
are being deferred or if they are being processed. */
- if (defer_incomplete_level || defer_finalize_level)
+ if (defer_incomplete_level != 0 || defer_finalize_level != 0)
VEC_safe_push (tree, heap, defer_finalize_list, decl);
else
rest_of_type_decl_compilation_no_defer (decl);