# Ada Programming/Pragmas
## Description

Pragmas control the compiler, i.e. they are compiler directives. They have the standard form of
where the parameter list is optional.

## List of language defined pragmas

Some pragmas are specially marked:

### Ada 2005

    This is a new Ada 2005 pragma.

### Ada 2012

    This is a new Ada 2012 pragma.

### Obsolescent

    This is a deprecated pragma and it should not be used in new code.

### A – H

* Admission_Policy (Ada 2022)
* All_Calls_Remote
* Assert (Ada 2005)
* Assertion_Policy (Ada 2005)
* Asynchronous (Obsolescent since Ada 2012)
* Atomic (Obsolescent since Ada 2012)
* Atomic_Components (Obsolescent since Ada 2012)
* Attach_Handler (Obsolescent since Ada 2012)
* Conflict_Check_Policy (Ada 2022)
* Controlled (Removed from Ada 2012)
* Convention (Obsolescent since Ada 2012)
* CPU (Ada 2012)
* Default_Storage_Pool (Ada 2012)
* Detect_Blocking (Ada 2005)
* Discard_Names
* Dispatching_Domain (Ada 2012)
* Elaborate
* Elaborate_All
* Elaborate_Body
* Export (Obsolescent since Ada 2012)
* Generate_Deadlines (Ada 2022)

### I – O

* Import (Obsolescent since Ada 2012)
* Independent (Ada 2012)
* Independent_Component (Ada 2012)
* Inline (Obsolescent since Ada 2012)
* Inspection_Point
* Interface (Obsolescent)
* Interrupt_Handler (Obsolescent since Ada 2012)
* Interrupt_Priority (Obsolescent since Ada 2012)
* Linker_Options
* List
* Locking_Policy
* Memory_Size (Obsolescent)
* No_Return (Ada 2005) (Obsolescent since Ada 2012)
* Normalize_Scalars
* Optimize

### P – R

* Pack (Obsolescent since Ada 2012)
* Page
* Partition_Elaboration_Policy (Ada 2005)
* Preelaborable_Initialization (Ada 2005)
* Preelaborate
* Priority (Obsolescent since Ada 2012)
* Priority_Specific_Dispatching (Ada 2005)
* Profile (Ada 2005)
* Pure
* Queueing_Policy
* Relative_Deadline (Ada 2005)
* Remote_Call_Interface
* Remote_Types
* Restrictions
* Reviewable

### S – Z

* Shared (Obsolescent)
* Shared_Passive
* Storage_Size
* Storage_Unit (Obsolescent)
* Suppress
* System_Name (Obsolescent)
* Task_Dispatching_Policy
* Unchecked_Union (Ada 2005)
* Unsuppress (Ada 2005)
* Volatile
* Volatile_Components

## List of implementation defined pragmas

The following pragmas are not available in all Ada compilers, only in those that had implemented them.
Currently, there are only listed the implementation-defined pragmas of a few compilers. You can help Wikibooks adding specific aspects of other compilers:

### GNAT

    Implementation defined pragma of the GNAT compiler from AdaCore and FSF.

### HP Ada

    Implementation defined pragma of the HP Ada compiler (formerly known as "DEC Ada").

### ICC

    Implementation-defined pragma of the Irvine ICC compiler.

### PowerAda

    Implementation defined pragma of OC Systems' PowerAda.

### SPARCompiler

    Implementation defined pragma of Sun's SPARCompiler Ada.

### A – C

* Abort_Defer (GNAT)
* Ada_83 (GNAT)
* Ada_95 (GNAT)
* Ada_05 (GNAT)
* Ada_2005 (GNAT)
* Ada_12 (GNAT)
* Ada_2012 (GNAT)
* Annotate (GNAT)
* Assume_No_Invalid_Values (GNAT)
* Ast_Entry (GNAT, HP Ada)
* Bit_Pack (SPARCompiler)
* Built_In (SPARCompiler)
* Byte_Pack (SPARCompiler)
* C_Pass_By_Copy (GNAT)
* Call_Mechanism (ICC)
* Canonical_Streams (GNAT)
* Check (GNAT)
* Check_Name (GNAT)
* Check_Policy (GNAT)
* CM_Info (PowerAda)
* Comment (GNAT)
* Common_Object (GNAT, HP Ada)
* Compatible_Calls (ICC)
* Compile_Time_Error (GNAT)
* Compile_Time_Warning (GNAT)
* Complete_Representation (GNAT)
* Complex_Representation (GNAT)
* Component_Alignment (GNAT, HP Ada)
* Compress (ICC)
* Constrain_Private (ICC)
* Convention_Identifier (GNAT)
* CPP_Class (GNAT)
* CPP_Constructor (GNAT)
* CPP_Virtual (GNAT)
* CPP_Vtable (GNAT)

### D – H

* Data_Mechanism (ICC)
* Debug (GNAT)
* Debug_Policy (GNAT)
* Delete_Subprogram_Entry (ICC)
* Elaboration_Checks (GNAT)
* Eliminate (GNAT)
* Error (SPARCompiler)
* Export_Exception (GNAT, HP Ada)
* Export_Function (GNAT, HP Ada, SPARCompiler)
* Export_Mechanism (ICC)
* Export_Object (GNAT, HP Ada, SPARCompiler)
* Export_Procedure (GNAT, HP Ada, SPARCompiler)
* Export_Value (GNAT)
* Export_Valued_Procedure (GNAT, HP Ada)
* Extend_System (GNAT)
* Extensions_Allowed (GNAT)
* External (GNAT, SPARCompiler)
* External_Name (ICC, SPARCompiler)
* External_Name_Casing (GNAT)
* Fast_Math (GNAT)
* Favor_Top_Level (GNAT)
* Finalize_Storage_Only (GNAT)
* Float_Representation (GNAT, HP Ada)
* Foreign (ICC)
* Generic_Mechanism (ICC)
* Generic_Policy (SPARCompiler)

### I – L

* i960_Intrinsic (ICC)
* Ident (GNAT, HP Ada)
* Images (PowerAda)
* Implemented, previously named 'Implemented_By_Entry' (GNAT)
* Implicit_Code (SPARCompiler)
* Implicit_Packing (GNAT)
* Import_Exception (GNAT, HP Ada)
* Import_Function (GNAT, HP Ada, SPARCompiler)
* Import_Mechanism (ICC)
* Import_Object (GNAT, HP Ada, SPARCompiler)
* Import_Procedure (GNAT, HP Ada, SPARCompiler)
* Import_Valued_Procedure (GNAT, HP Ada)
* Include (SPARCompiler)
* Initialize (SPARCompiler)
* Initialize_Scalars (GNAT)
* Inline_Always (GNAT)
* Inline_Generic (GNAT, HP Ada)
* Inline_Only (SPARCompiler)
* Instance_Policy (SPARCompiler)
* Interface_Constant (ICC)
* Interface_Information (PowerAda)
* Interface_Mechanism (ICC)
* Interface_Name (GNAT, HP Ada, ICC, SPARCompiler)
* Interrupt_State (GNAT)
* Invariant (GNAT)
* Keep_Names (GNAT)
* Label (ICC)
* License (GNAT)
* Link_With (GNAT, ICC, SPARCompiler)
* Linker_Alias (GNAT)
* Linker_Constructor (GNAT)
* Linker_Destructor (GNAT)
* Linker_Section (GNAT)
* Long_Float (GNAT: OpenVMS, HP Ada)

### M – P

* Machine_Attribute (GNAT)
* Main (GNAT)
* Main_Storage (GNAT, HP Ada)
* No_Body (GNAT)
* No_Image (SPARCompiler)
* No_Strict_Aliasing (GNAT)
* No_Suppress (PowerAda)
* No_Reorder (ICC)
* No_Zero (ICC)
* Noinline (ICC)
* Non_Reentrant (SPARCompiler)
* Not_Elaborated (SPARCompiler)
* Not_Null (ICC)
* Obsolescent (GNAT)
* Optimize_Alignment (GNAT)
* Optimize_Code (SPARCompiler)
* Optimize_Options (ICC)
* Ordered (GNAT)
* Parameter_Mechanism (ICC)
* Passive (GNAT, HP Ada, SPARCompiler)
* Persistent_BSS (GNAT)
* Physical_Address (ICC)
* Polling (GNAT)
* Postcondition (GNAT)
* Precondition (GNAT)
* Preserve_Layout (PowerAda)
* Profile_Warnings (GNAT)
* Propagate_Exceptions (GNAT)
* Protect_Registers (ICC)
* Protected_Call (ICC)
* Protected_Return (ICC)
* Psect_Object (GNAT, HP Ada)
* Pure_Function (GNAT)
* Put (ICC)
* Put_Line (ICC)

### R – S

* Reserve_Registers (ICC)
* Restriction_Warnings (GNAT)
* RTS_Interface (SPARCompiler)
* SCCS_ID (PowerAda)
* Share_Body (SPARCompiler)
* Share_Code (SPARCompiler)
* Share_Generic (GNAT, HP Ada)
* Shareable (ICC)
* Short_Circuit_And_Or (GNAT)
* Short_Descriptors (GNAT)
* Simple_Storage_Pool_Type (GNAT)
* Simple_Task (ICC)
* Source_File_Name (GNAT)
* Source_File_Name_Project (GNAT)
* Source_Reference (GNAT)
* Stack_Size (ICC)
* Static_Elaboration (ICC)
* Static_Elaboration_Desired (GNAT)
* Stream_Convert (GNAT)
* Style_Checks (GNAT)
* Subtitle (GNAT)
* Suppress_All (GNAT, HP Ada, PowerAda, SPARCompiler)
* Suppress_Elaboration_Checks (SPARCompiler)
* Suppress_Exception_Locations (GNAT)
* Suppress_Initialization (GNAT)
* System_Table (ICC)

### T – Z

* Task_Attributes (SPARCompiler)
* Task_Info (GNAT)
* Task_Name (GNAT)
* Task_Storage (GNAT, HP Ada)
* Test_Case (GNAT)
* Thread_Body (GNAT)
* Thread_Local_Storage (GNAT)
* Time_Slice (GNAT, HP Ada, ICC)
* Time_Slice_Attributes (ICC)
* Title (GNAT, HP Ada)
* Unimplemented_Unit (GNAT)
* Universal_Aliasing (GNAT)
* Universal_Data (GNAT)
* Unmodified (GNAT)
* Unreferenced (GNAT)
* Unreferenced_Objects (GNAT)
* Unreserve_All_Interrupts (GNAT)
* Unsigned_Literal (ICC)
* Use_VADS_Size (GNAT)
* Validity_Checks (GNAT)
* Warning (SPARCompiler)
* Warnings (GNAT, SPARCompiler)
* Weak_External (GNAT)
* Wide_Character_Encoding (GNAT)

## See also
### Wikibook

* Ada Programming
* Ada Programming/Aspects
* Ada Programming/Attributes
* Ada Programming/Keywords

### Ada Reference Manual
#### Ada 83

* 2.8: Pragmas
* Annex B: Predefined Language Pragmas

#### Ada 95

* 2.8: Pragmas
* Annex L: (informative) Language-Defined Pragmas

#### Ada 2005

* 2.8: Pragmas
* Annex L: (informative) Language-Defined Pragmas

#### Ada 2012

* 2.8: Pragmas
* Annex L: (informative) Language-Defined Pragmas

## References

* ↑ "2.2 ICC-Defined Pragmas", ICC Ada Implementation Reference — ICC Ada Version 8.2.5 for i960MC Targets, document version 2.11.4.