From 07a64c021a8fbd6df4d411b9852cfa95afb1cf08 Mon Sep 17 00:00:00 2001
From: Arnaud Charlet <charlet@gcc.gnu.org>
Date: Fri, 20 Feb 2015 10:08:30 +0100
Subject: [multiple changes]

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb: Minor reformatting.
	* exp_ch9.adb (Build_Protected_Spec): Copy Aliased setting when
	building spec.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Exclude Boolean
	aspects from circuitry setting delay required to false if the
	argument is an integer literal.

2015-02-20  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads. einfo.adb (Partial_View_Has_Unknown_Discr):  New flag
	on type entities, to enforce AI12-0133: default initialization
	of types whose partial view has unknown discriminants does not
	get an invariant check, because clients of the unit can never
	declare objects of such types.
	* sem_ch3.adb (Find_Type_Name); Set new flag
	Partial_View_Has_Unknown_Discr when needed.
	* exp_ch3.adb (Expand_N_Object_Declaration): Use flag to suppress
	generation of invariant call on default-initialized object.

From-SVN: r220836
---
 gcc/ada/exp_ch3.adb | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

(limited to 'gcc/ada/exp_ch3.adb')

diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb
index a8e4137..095e233 100644
--- a/gcc/ada/exp_ch3.adb
+++ b/gcc/ada/exp_ch3.adb
@@ -5503,10 +5503,13 @@ package body Exp_Ch3 is
                Ensure_Freeze_Node (Def_Id);
                Set_Has_Delayed_Freeze (Def_Id);
                Set_Is_Frozen (Def_Id, False);
-               Append_Freeze_Action (Def_Id,
-                 Make_Invariant_Call (New_Occurrence_Of (Def_Id, Loc)));
 
-            else
+               if not Partial_View_Has_Unknown_Discr (Typ) then
+                  Append_Freeze_Action (Def_Id,
+                    Make_Invariant_Call (New_Occurrence_Of (Def_Id, Loc)));
+               end if;
+
+            elsif not Partial_View_Has_Unknown_Discr (Typ) then
                Insert_After (N,
                  Make_Invariant_Call (New_Occurrence_Of (Def_Id, Loc)));
             end if;
-- 
cgit v1.1