summaryrefslogtreecommitdiff
path: root/gcc/ada/snames.h
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2005-07-04 13:27:21 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2005-07-04 13:27:21 +0000
commit1735f9114114689b4d05cacbcdf7d11556728036 (patch)
tree617e7a72024f1df19ef1395e2e890a2461922a3f /gcc/ada/snames.h
parent586402e19ea0dcf17005106b7e5d14a8f39a1eb1 (diff)
downloadgcc-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.h102
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) */