Commit cbb0b553 by Yannick Moy Committed by Pierre-Marie de Rodat

[Ada] Do not inline dispatching operations in GNATprove mode

In GNATprove, local subprograms without contracts are candidates for
inlining, so that they are only analyzed in the context of their calls.
This does not apply to dispatching operations, which may be called
through dispatching, in an unknown calling context. Hence such
operations should not be considered as candidates for inlining.

There is no test as this has no effect on compilation.

2019-09-17  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add handling
	for dispatching operations.

From-SVN: r275779
parent a9a08e6d
2019-09-17 Yannick Moy <moy@adacore.com>
* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add handling
for dispatching operations.
2019-09-17 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): In a
......
......@@ -1681,6 +1681,12 @@ package body Inline is
elsif not In_Extended_Main_Code_Unit (Id) then
return False;
-- Do not inline dispatching operations, as only their static calls
-- can be analyzed in context, and not their dispatching calls.
elsif Is_Dispatching_Operation (Id) then
return False;
-- Do not inline subprograms marked No_Return, possibly used for
-- signaling errors, which GNATprove handles specially.
......
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