Docs, OpenMP: Small fixes to internal OMP_FOR doc
Checks
Commit Message
Hi Sandra,
the OMP_FOR documentation says that the loop index variable
must be signed and it does not list "!=" in the allowed conditional
expressions. But there is nothing that would automatically cast an
unsigned variable
to signed or that converts the "!=" as you can see from the dump
for this program:
int main ()
{
#pragma omp for
for (unsigned i = 0; i != 10; i++) {}
}
The 005t.gimple dump is:
int __GIMPLE ()
{
int D_2064;
{
{
unsigned int i;
#pragma omp for private(i)
for (i = 0u; i != 10u; i = i + 1u)
}
}
D_2064 = 0;
return D_2064;
}
(Strictly speaking, the OMP_FOR is represented as a gomp_for at this point,
but this does not really matter.)
Can I commit the patch?
Best regards,
Frederik
Comments
On 4/19/23 07:51, Frederik Harwath wrote:
> Hi Sandra,
> the OMP_FOR documentation says that the loop index variable
> must be signed and it does not list "!=" in the allowed conditional
> expressions. But there is nothing that would automatically cast an
> unsigned variable
> to signed or that converts the "!=" as you can see from the dump
> for this program:
>
> int main ()
> {
> #pragma omp for
> for (unsigned i = 0; i != 10; i++) {}
> }
>
> The 005t.gimple dump is:
>
> int __GIMPLE ()
> {
> int D_2064;
>
> {
> {
> unsigned int i;
>
> #pragma omp for private(i)
> for (i = 0u; i != 10u; i = i + 1u)
> }
> }
> D_2064 = 0;
> return D_2064;
> }
>
> (Strictly speaking, the OMP_FOR is represented as a gomp_for at this point,
> but this does not really matter.)
>
> Can I commit the patch?
The patch is fine for the trunk, but GCC 13 is frozen for the release
right now and even doc fixes require RM approval. I'd have no objection
to putting it on the release branch too when it is unfrozen, but as this
isn't user-facing documentation there's no particularly urgent argument
for doing that.
-Sandra
From 8af01114c295086526a67f56f6256fc945b1ccb5 Mon Sep 17 00:00:00 2001
From: Frederik Harwath <frederik@codesourcery.com>
Date: Wed, 19 Apr 2023 13:18:55 +0200
Subject: [PATCH] Docs, OpenMP: Small fixes to internal OMP_FOR doc.
gcc/ChangeLog:
* doc/generic.texi (OpenMP): Add != to allowed
conditions and state that vars can be unsigned.
* tree.def (OMP_FOR): Likewise.
---
gcc/doc/generic.texi | 4 ++--
gcc/tree.def | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
@@ -2323,7 +2323,7 @@ Operand @code{OMP_FOR_INIT} is a vector containing iteration
variable initializations of the form @code{VAR = N1}.
Operand @code{OMP_FOR_COND} is vector containing loop
-conditional expressions of the form @code{VAR @{<,>,<=,>=@} N2}.
+conditional expressions of the form @code{VAR @{<,>,<=,>=,!=@} N2}.
Operand @code{OMP_FOR_INCR} is a vector containing loop index
increment expressions of the form @code{VAR @{+=,-=@} INCR}.
@@ -2349,7 +2349,7 @@ adjust their data-sharing attributes and diagnose errors.
@code{OMP_FOR_ORIG_DECLS} is a vector field, with each element holding
a list of @code{VAR_DECLS} for the corresponding collapse level.
-The loop index variable @code{VAR} must be a signed integer variable,
+The loop index variable @code{VAR} must be an integer variable,
which is implicitly private to each thread. For rectangular loops,
the bounds @code{N1} and @code{N2} and the increment expression
@code{INCR} are required to be loop-invariant integer expressions
@@ -1159,7 +1159,7 @@ DEFTREECODE (OMP_TASK, "omp_task", tcc_statement, 2)
variable initializations of the form VAR = N1.
Operand 3: OMP_FOR_COND is vector containing loop
- conditional expressions of the form VAR {<,>,<=,>=} N2.
+ conditional expressions of the form VAR {<,>,<=,>=,!=} N2.
Operand 4: OMP_FOR_INCR is a vector containing loop index
increment expressions of the form VAR {+=,-=} INCR.
@@ -1185,7 +1185,7 @@ DEFTREECODE (OMP_TASK, "omp_task", tcc_statement, 2)
OMP_FOR_ORIG_DECLS is a vector field, with each element holding
a list of VAR_DECLS for the corresponding collapse level.
- The loop index variable VAR must be a signed integer variable,
+ The loop index variable VAR must be an integer variable,
which is implicitly private to each thread. For rectangular loops,
the bounds N1 and N2 and the increment expression
INCR are required to be loop-invariant integer expressions
--
2.36.1