Commit 48f05f09 by Javier Miranda Committed by Pierre-Marie de Rodat

[Ada] Pragma Linker_Section in subprogram instantiations in CCG

2019-12-13  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* sem_prag.adb (Analyze_Pragma): Propagate the
	Linker_Section_Attribute to the ultimate alias of the subprogram
	to facilitate the C backend processing this attribute.

From-SVN: r279360
parent de12d07e
2019-12-13 Javier Miranda <miranda@adacore.com>
* sem_prag.adb (Analyze_Pragma): Propagate the
Linker_Section_Attribute to the ultimate alias of the subprogram
to facilitate the C backend processing this attribute.
2019-12-13 Yannick Moy <moy@adacore.com> 2019-12-13 Yannick Moy <moy@adacore.com>
* sem_util.adb (Original_Aspect_Pragma_Name): Go through * sem_util.adb (Original_Aspect_Pragma_Name): Go through
......
...@@ -19188,6 +19188,17 @@ package body Sem_Prag is ...@@ -19188,6 +19188,17 @@ package body Sem_Prag is
Set_Linker_Section_Pragma Set_Linker_Section_Pragma
(Entity (Corresponding_Aspect (N)), N); (Entity (Corresponding_Aspect (N)), N);
-- Propagate it to its ultimate aliased entity to
-- facilitate the backend processing this attribute
-- in instantiations of generic subprograms.
if Present (Alias (Entity (Corresponding_Aspect (N))))
then
Set_Linker_Section_Pragma
(Ultimate_Alias
(Entity (Corresponding_Aspect (N))), N);
end if;
-- Pragma case, we must climb the homonym chain, but skip -- Pragma case, we must climb the homonym chain, but skip
-- any for which the linker section is already set. -- any for which the linker section is already set.
...@@ -19196,6 +19207,15 @@ package body Sem_Prag is ...@@ -19196,6 +19207,15 @@ package body Sem_Prag is
if No (Linker_Section_Pragma (Ent)) then if No (Linker_Section_Pragma (Ent)) then
Set_Linker_Section_Pragma (Ent, N); Set_Linker_Section_Pragma (Ent, N);
-- Propagate it to its ultimate aliased entity to
-- facilitate the backend processing this attribute
-- in instantiations of generic subprograms.
if Present (Alias (Ent)) then
Set_Linker_Section_Pragma
(Ultimate_Alias (Ent), N);
end if;
-- A pragma that applies to a Ghost entity becomes -- A pragma that applies to a Ghost entity becomes
-- Ghost for the purposes of legality checks and -- Ghost for the purposes of legality checks and
-- removal of ignored Ghost code. -- removal of ignored Ghost code.
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