Commit 2beee64a by Arnaud Charlet Committed by Pierre-Marie de Rodat

[Ada] Document requirements for Pragma Lock_Free

2019-08-20  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst: Document
	requirements for Pragma Lock_Free.
	* gnat_rm.texi: Regenerate.

From-SVN: r274717
parent fdacd614
2019-08-20 Arnaud Charlet <charlet@adacore.com>
* doc/gnat_rm/implementation_defined_pragmas.rst: Document
requirements for Pragma Lock_Free.
* gnat_rm.texi: Regenerate.
2019-08-20 Philippe Gil <gil@adacore.com> 2019-08-20 Philippe Gil <gil@adacore.com>
* bindgen.adb (Gen_Main): Set gnat_argc/gnat_argv to argc/argv * bindgen.adb (Gen_Main): Set gnat_argc/gnat_argv to argc/argv
......
...@@ -3649,6 +3649,24 @@ the implementation of protected operations must be implemented without locks. ...@@ -3649,6 +3649,24 @@ the implementation of protected operations must be implemented without locks.
Compilation fails if the compiler cannot generate lock-free code for the Compilation fails if the compiler cannot generate lock-free code for the
operations. operations.
The current conditions required to support this pragma are:
* Protected type declarations may not contain entries
* Protected subprogram declarations may not have nonelementary parameters
In addition, each protected subprogram body must satisfy:
* May reference only one protected component
* May not reference nonconstant entities outside the protected subprogram
scope.
* May not contain address representation items, allocators, or quantified
expressions.
* May not contain delay, goto, loop, or procedure-call statements.
* May not contain exported and imported entities
* May not dereferenced access values
* Function calls and attribute references must be static
Pragma Loop_Invariant Pragma Loop_Invariant
===================== =====================
......
...@@ -5115,6 +5115,47 @@ the implementation of protected operations must be implemented without locks. ...@@ -5115,6 +5115,47 @@ the implementation of protected operations must be implemented without locks.
Compilation fails if the compiler cannot generate lock-free code for the Compilation fails if the compiler cannot generate lock-free code for the
operations. operations.
The current conditions required to support this pragma are:
@itemize *
@item
Protected type declarations may not contain entries
@item
Protected subprogram declarations may not have nonelementary parameters
@end itemize
In addition, each protected subprogram body must satisfy:
@itemize *
@item
May reference only one protected component
@item
May not reference nonconstant entities outside the protected subprogram
scope.
@item
May not contain address representation items, allocators, or quantified
expressions.
@item
May not contain delay, goto, loop, or procedure-call statements.
@item
May not contain exported and imported entities
@item
May not dereferenced access values
@item
Function calls and attribute references must be static
@end itemize
@node Pragma Loop_Invariant,Pragma Loop_Optimize,Pragma Lock_Free,Implementation Defined Pragmas @node Pragma Loop_Invariant,Pragma Loop_Optimize,Pragma Lock_Free,Implementation Defined Pragmas
@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{98} @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{98}
@section Pragma Loop_Invariant @section Pragma Loop_Invariant
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