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
This commit is contained in:
Javier Miranda 2013-04-11 15:26:40 +00:00 committed by Arnaud Charlet
parent 5bfc86d857
commit 0a3763018e
3 changed files with 18 additions and 0 deletions

View File

@ -1,3 +1,10 @@
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>
* sem_prag.adb (Analyze_Pragma, case Priority): pre-analyze

View File

@ -6583,6 +6583,13 @@ package body Checks is
return;
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
-- the expander within exception handlers, since we know that the value
-- can never be null.

View File

@ -7485,12 +7485,16 @@ package body Exp_Ch6 is
-- return expression has a specific type whose level is known not to
-- 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
-- does not seem to be any practical way to implement this check.
elsif Ada_Version >= Ada_2005
and then Tagged_Type_Expansion
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
(Is_Class_Wide_Type (Etype (Exp))