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