diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-04 13:27:21 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-04 13:27:21 +0000 |
commit | 1735f9114114689b4d05cacbcdf7d11556728036 (patch) | |
tree | 617e7a72024f1df19ef1395e2e890a2461922a3f /gcc/ada/snames.h | |
parent | 586402e19ea0dcf17005106b7e5d14a8f39a1eb1 (diff) | |
download | gcc-1735f9114114689b4d05cacbcdf7d11556728036.tar.gz |
2005-07-04 Eric Botcazou <ebotcazou@adacore.com>
* decl.c (prepend_attributes) <Pragma_Linker_Constructor>: New case.
<Pragma_Linker_Destructor>: Likewise.
* einfo.ads (Has_Gigi_Rep_Item): Document Pragma_Linker_Constructor and
Pragma_Linker_Destructor.
* gigi.h (attr_type): Add ATTR_LINK_CONSTRUCTOR and
ATTR_LINK_DESTRUCTOR.
(static_ctors, static_dtors): New variables.
* misc.c (gnat_expand_body): Output current function as constructor
and destructor if requested.
* par-prag.adb: Add processing for pragma Linker_Constructor and
Linker_Destructor.
* sem_prag.adb (Find_Unique_Parameterless_Procedure): New function
extracted from Check_Interrupt_Or_Attach_Handler.
(Check_Interrupt_Or_Attach_Handler): Invoke it.
Implement pragma Linker_Constructor and Linker_Destructor with the
help of Find_Unique_Parameterless_Procedure.
Replace Name_Alias with Name_Target for pragma Linker_Alias.
* snames.h, snames.ads, snames.adb:
Add Name_Linker_Constructor and Name_Linker_Destructor.
Add Pragma_Linker_Constructor and Pragma_Linker_Destructor.
* snames.adb: Remove Name_Alias.
* trans.c: Include cgraph.h.
(build_global_cdtor): New function.
(Compilation_Unit_to_gnu): Build global constructor and destructor if
needed.
(tree_transform) <N_Identifier>: Substitute renaming of view-conversions
of objects too.
(addressable_p) <COMPONENT_REF>: Unconditionally test
DECL_NONADDRESSABLE_P on STRICT_ALIGNMENT platforms.
* utils.c (process_attributes) <ATTR_LINK_ALIAS>: Do not assemble the
variable if it is external.
(static_ctors, static_dtors): New global variables.
(process_attributes) <ATTR_LINK_CONSTRUCTOR>: New case.
<ATTR_LINK_DESTRUCTOR>: Likewise.
(end_subprog_body): Chain function as constructor and destructor
if requested.
* exp_util.adb (Force_Evaluation): Unconditionally invoke
Remove_Side_Effects with Variable_Ref set to true.
(Remove_Side_Effects): Handle scalar types first. Use a renaming
for non-scalar types even if Variable_Ref is true and for class-wide
expressions.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101576 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/snames.h')
-rw-r--r-- | gcc/ada/snames.h | 102 |
1 files changed, 52 insertions, 50 deletions
diff --git a/gcc/ada/snames.h b/gcc/ada/snames.h index 093dbd6ce44..7dd1f399130 100644 --- a/gcc/ada/snames.h +++ b/gcc/ada/snames.h @@ -307,55 +307,57 @@ extern unsigned char Get_Pragma_Id (int); #define Pragma_Keep_Names 93 #define Pragma_Link_With 94 #define Pragma_Linker_Alias 95 -#define Pragma_Linker_Options 96 -#define Pragma_Linker_Section 97 -#define Pragma_List 98 -#define Pragma_Machine_Attribute 99 -#define Pragma_Main 100 -#define Pragma_Main_Storage 101 -#define Pragma_Memory_Size 102 -#define Pragma_No_Return 103 -#define Pragma_Obsolescent 104 -#define Pragma_Optimize 105 -#define Pragma_Optional_Overriding 106 -#define Pragma_Pack 107 -#define Pragma_Page 108 -#define Pragma_Passive 109 -#define Pragma_Preelaborate 110 -#define Pragma_Preelaborate_05 111 -#define Pragma_Priority 112 -#define Pragma_Psect_Object 113 -#define Pragma_Pure 114 -#define Pragma_Pure_05 115 -#define Pragma_Pure_Function 116 -#define Pragma_Remote_Call_Interface 117 -#define Pragma_Remote_Types 118 -#define Pragma_Share_Generic 119 -#define Pragma_Shared 120 -#define Pragma_Shared_Passive 121 -#define Pragma_Source_Reference 122 -#define Pragma_Stream_Convert 123 -#define Pragma_Subtitle 124 -#define Pragma_Suppress_All 125 -#define Pragma_Suppress_Debug_Info 126 -#define Pragma_Suppress_Initialization 127 -#define Pragma_System_Name 128 -#define Pragma_Task_Info 129 -#define Pragma_Task_Name 130 -#define Pragma_Task_Storage 131 -#define Pragma_Thread_Body 132 -#define Pragma_Time_Slice 133 -#define Pragma_Title 134 -#define Pragma_Unchecked_Union 135 -#define Pragma_Unimplemented_Unit 136 -#define Pragma_Unreferenced 137 -#define Pragma_Unreserve_All_Interrupts 138 -#define Pragma_Volatile 139 -#define Pragma_Volatile_Components 140 -#define Pragma_Weak_External 141 -#define Pragma_AST_Entry 142 -#define Pragma_Interface 143 -#define Pragma_Storage_Size 144 -#define Pragma_Storage_Unit 145 +#define Pragma_Linker_Constructor 96 +#define Pragma_Linker_Destructor 97 +#define Pragma_Linker_Options 98 +#define Pragma_Linker_Section 99 +#define Pragma_List 100 +#define Pragma_Machine_Attribute 101 +#define Pragma_Main 102 +#define Pragma_Main_Storage 103 +#define Pragma_Memory_Size 104 +#define Pragma_No_Return 105 +#define Pragma_Obsolescent 106 +#define Pragma_Optimize 107 +#define Pragma_Optional_Overriding 108 +#define Pragma_Pack 109 +#define Pragma_Page 110 +#define Pragma_Passive 111 +#define Pragma_Preelaborate 112 +#define Pragma_Preelaborate_05 113 +#define Pragma_Priority 114 +#define Pragma_Psect_Object 115 +#define Pragma_Pure 116 +#define Pragma_Pure_05 117 +#define Pragma_Pure_Function 118 +#define Pragma_Remote_Call_Interface 119 +#define Pragma_Remote_Types 120 +#define Pragma_Share_Generic 121 +#define Pragma_Shared 122 +#define Pragma_Shared_Passive 123 +#define Pragma_Source_Reference 124 +#define Pragma_Stream_Convert 125 +#define Pragma_Subtitle 126 +#define Pragma_Suppress_All 127 +#define Pragma_Suppress_Debug_Info 128 +#define Pragma_Suppress_Initialization 129 +#define Pragma_System_Name 130 +#define Pragma_Task_Info 131 +#define Pragma_Task_Name 132 +#define Pragma_Task_Storage 133 +#define Pragma_Thread_Body 134 +#define Pragma_Time_Slice 135 +#define Pragma_Title 136 +#define Pragma_Unchecked_Union 137 +#define Pragma_Unimplemented_Unit 138 +#define Pragma_Unreferenced 139 +#define Pragma_Unreserve_All_Interrupts 140 +#define Pragma_Volatile 141 +#define Pragma_Volatile_Components 142 +#define Pragma_Weak_External 143 +#define Pragma_AST_Entry 144 +#define Pragma_Interface 145 +#define Pragma_Storage_Size 146 +#define Pragma_Storage_Unit 147 /* End of snames.h (C version of Snames package spec) */ |