mirror of git://gcc.gnu.org/git/gcc.git
[multiple changes]
2012-08-06 Yannick Moy <moy@adacore.com> * sem_ch4.adb (Analyze_Selected_Component): Issue an error in Alfa mode for component not present. 2012-08-06 Thomas Quinot <quinot@adacore.com> * exp_ch7.adb (Insert_Actions_In_Scope_Around): Do not use a renaming of Scope_Stack.Table (Scope_Stack.Last), as Process_Transient_Object may introduce new scopes and cause Scope_Stack.Table to be reallocated. From-SVN: r190167
This commit is contained in:
parent
3217f71e44
commit
d7f41b2d87
|
|
@ -1,3 +1,15 @@
|
||||||
|
2012-08-06 Yannick Moy <moy@adacore.com>
|
||||||
|
|
||||||
|
* sem_ch4.adb (Analyze_Selected_Component): Issue an error in
|
||||||
|
Alfa mode for component not present.
|
||||||
|
|
||||||
|
2012-08-06 Thomas Quinot <quinot@adacore.com>
|
||||||
|
|
||||||
|
* exp_ch7.adb (Insert_Actions_In_Scope_Around): Do not
|
||||||
|
use a renaming of Scope_Stack.Table (Scope_Stack.Last), as
|
||||||
|
Process_Transient_Object may introduce new scopes and cause
|
||||||
|
Scope_Stack.Table to be reallocated.
|
||||||
|
|
||||||
2012-08-06 Robert Dewar <dewar@adacore.com>
|
2012-08-06 Robert Dewar <dewar@adacore.com>
|
||||||
|
|
||||||
* exp_util.adb, switch-c.adb, inline.ads, sem_ch10.adb, types.ads,
|
* exp_util.adb, switch-c.adb, inline.ads, sem_ch10.adb, types.ads,
|
||||||
|
|
|
||||||
|
|
@ -4345,9 +4345,13 @@ package body Exp_Ch7 is
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
procedure Insert_Actions_In_Scope_Around (N : Node_Id) is
|
procedure Insert_Actions_In_Scope_Around (N : Node_Id) is
|
||||||
SE : Scope_Stack_Entry renames Scope_Stack.Table (Scope_Stack.Last);
|
After : constant List_Id :=
|
||||||
After : List_Id renames SE.Actions_To_Be_Wrapped_After;
|
Scope_Stack.Table (Scope_Stack.Last).Actions_To_Be_Wrapped_After;
|
||||||
Before : List_Id renames SE.Actions_To_Be_Wrapped_Before;
|
Before : constant List_Id :=
|
||||||
|
Scope_Stack.Table (Scope_Stack.Last).Actions_To_Be_Wrapped_Before;
|
||||||
|
-- Note: We used to use renamings of Scope_Stack.Table (Scope_Stack.
|
||||||
|
-- Last), but this was incorrect as Process_Transient_Object may
|
||||||
|
-- introduce new scopes and cause a reallocation of Scope_Stack.Table.
|
||||||
|
|
||||||
procedure Process_Transient_Objects
|
procedure Process_Transient_Objects
|
||||||
(First_Object : Node_Id;
|
(First_Object : Node_Id;
|
||||||
|
|
@ -4694,11 +4698,13 @@ package body Exp_Ch7 is
|
||||||
-- Reset the action lists
|
-- Reset the action lists
|
||||||
|
|
||||||
if Present (Before) then
|
if Present (Before) then
|
||||||
Before := No_List;
|
Scope_Stack.Table (Scope_Stack.Last).
|
||||||
|
Actions_To_Be_Wrapped_Before := No_List;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
if Present (After) then
|
if Present (After) then
|
||||||
After := No_List;
|
Scope_Stack.Table (Scope_Stack.Last).
|
||||||
|
Actions_To_Be_Wrapped_After := No_List;
|
||||||
end if;
|
end if;
|
||||||
end;
|
end;
|
||||||
end Insert_Actions_In_Scope_Around;
|
end Insert_Actions_In_Scope_Around;
|
||||||
|
|
|
||||||
|
|
@ -4343,10 +4343,22 @@ package body Sem_Ch4 is
|
||||||
-- Emit appropriate message. Gigi will replace the
|
-- Emit appropriate message. Gigi will replace the
|
||||||
-- node subsequently with the appropriate Raise.
|
-- node subsequently with the appropriate Raise.
|
||||||
|
|
||||||
Apply_Compile_Time_Constraint_Error
|
-- In Alfa mode, this is an made into an error to
|
||||||
(N, "component not present in }?",
|
-- simplify the treatment of the formal verification
|
||||||
CE_Discriminant_Check_Failed,
|
-- backend.
|
||||||
Ent => Prefix_Type, Rep => False);
|
|
||||||
|
if Alfa_Mode then
|
||||||
|
Apply_Compile_Time_Constraint_Error
|
||||||
|
(N, "component not present in }",
|
||||||
|
CE_Discriminant_Check_Failed,
|
||||||
|
Ent => Prefix_Type, Rep => False);
|
||||||
|
else
|
||||||
|
Apply_Compile_Time_Constraint_Error
|
||||||
|
(N, "component not present in }?",
|
||||||
|
CE_Discriminant_Check_Failed,
|
||||||
|
Ent => Prefix_Type, Rep => False);
|
||||||
|
end if;
|
||||||
|
|
||||||
Set_Raises_Constraint_Error (N);
|
Set_Raises_Constraint_Error (N);
|
||||||
return;
|
return;
|
||||||
end if;
|
end if;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue