Commit 0a376301 by Javier Miranda Committed by Arnaud Charlet

check.ads, [...] (Install_Null_Excluding_Check): No check in interface thunks…

check.ads, [...] (Install_Null_Excluding_Check): No check in interface thunks since it is performed at the caller side.

2013-04-11  Javier Miranda  <miranda@adacore.com>
                                  
	* check.ads, exp_ch6.adb (Install_Null_Excluding_Check): No check in    
	interface thunks since it is performed at the caller side.
	(Expand_Simple_Function_Return): No accessibility check needed in thunks
	since the check is done by the target routine.

From-SVN: r197810
parent 5bfc86d8
2013-04-11 Javier Miranda <miranda@adacore.com>
* check.ads, exp_ch6.adb (Install_Null_Excluding_Check): No check in
interface thunks since it is performed at the caller side.
(Expand_Simple_Function_Return): No accessibility check needed in thunks
since the check is done by the target routine.
2013-04-11 Ed Schonberg <schonberg@adacore.com> 2013-04-11 Ed Schonberg <schonberg@adacore.com>
* sem_prag.adb (Analyze_Pragma, case Priority): pre-analyze * sem_prag.adb (Analyze_Pragma, case Priority): pre-analyze
......
...@@ -6583,6 +6583,13 @@ package body Checks is ...@@ -6583,6 +6583,13 @@ package body Checks is
return; return;
end if; end if;
-- No check needed in interface thunks since the runtime check is
-- already performed at the caller side.
if Is_Thunk (Current_Scope) then
return;
end if;
-- No check needed for the Get_Current_Excep.all.all idiom generated by -- No check needed for the Get_Current_Excep.all.all idiom generated by
-- the expander within exception handlers, since we know that the value -- the expander within exception handlers, since we know that the value
-- can never be null. -- can never be null.
......
...@@ -7485,12 +7485,16 @@ package body Exp_Ch6 is ...@@ -7485,12 +7485,16 @@ package body Exp_Ch6 is
-- return expression has a specific type whose level is known not to -- return expression has a specific type whose level is known not to
-- be statically deeper than the function's result type. -- be statically deeper than the function's result type.
-- No runtime check needed in interface thunks since it is performed
-- by the target primitive associated with the thunk.
-- Note: accessibility check is skipped in the VM case, since there -- Note: accessibility check is skipped in the VM case, since there
-- does not seem to be any practical way to implement this check. -- does not seem to be any practical way to implement this check.
elsif Ada_Version >= Ada_2005 elsif Ada_Version >= Ada_2005
and then Tagged_Type_Expansion and then Tagged_Type_Expansion
and then Is_Class_Wide_Type (R_Type) and then Is_Class_Wide_Type (R_Type)
and then not Is_Thunk (Current_Scope)
and then not Scope_Suppress.Suppress (Accessibility_Check) and then not Scope_Suppress.Suppress (Accessibility_Check)
and then and then
(Is_Class_Wide_Type (Etype (Exp)) (Is_Class_Wide_Type (Etype (Exp))
......
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