diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-16 09:35:38 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-16 09:35:38 +0000 |
commit | e4401d9b9118e9ca34cfc8e87796fdc5b1c36404 (patch) | |
tree | 371893f5c05ecdcafc9b21849fc3cababeb2770a /gcc/ada/exp_ch9.adb | |
parent | e156dd80c9d5447d470a2a29acff4d97ba2bd355 (diff) | |
download | gcc-e4401d9b9118e9ca34cfc8e87796fdc5b1c36404.tar.gz |
2009-04-16 Ed Schonberg <schonberg@adacore.com>
* exp_ch9.adb (Expand_N_Protected_Type_Declaration): If a protected
operation has an inline pragma, propagate the flag to the internal
unprotected subprogram.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146156 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/exp_ch9.adb')
-rw-r--r-- | gcc/ada/exp_ch9.adb | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb index e4afe673cec..0284943cda0 100644 --- a/gcc/ada/exp_ch9.adb +++ b/gcc/ada/exp_ch9.adb @@ -7470,10 +7470,27 @@ package body Exp_Ch9 is E_Count : Int; Object_Comp : Node_Id; + procedure Check_Inlining (Subp : Entity_Id); + -- If the original operation has a pragma Inline, propagate the flag + -- to the internal body, for possible inlining later on. The source + -- operation is invisible to the back-end and is never actually called. + procedure Register_Handler; -- For a protected operation that is an interrupt handler, add the -- freeze action that will register it as such. + -------------------- + -- Check_Inlining -- + -------------------- + + procedure Check_Inlining (Subp : Entity_Id) is + begin + if Is_Inlined (Subp) then + Set_Is_Inlined (Protected_Body_Subprogram (Subp)); + Set_Is_Inlined (Subp, False); + end if; + end Check_Inlining; + ---------------------- -- Register_Handler -- ---------------------- @@ -7722,7 +7739,7 @@ package body Exp_Ch9 is Set_Protected_Body_Subprogram (Defining_Unit_Name (Specification (Priv)), Defining_Unit_Name (Specification (Sub))); - + Check_Inlining (Defining_Unit_Name (Specification (Priv))); Current_Node := Sub; Sub := @@ -7809,6 +7826,7 @@ package body Exp_Ch9 is Set_Protected_Body_Subprogram (Defining_Unit_Name (Specification (Comp)), Defining_Unit_Name (Specification (Sub))); + Check_Inlining (Defining_Unit_Name (Specification (Comp))); -- Make the protected version of the subprogram available for -- expansion of external calls. |