From: Mikael Morin <[email protected]>
Regression tested on aarch64-unknown-linux-gnu.
-- >8 --
Before this change, the getter functions giving access to the individual
fields of array descriptors return a bare reference to the field. This
makes it possible to overuse the result of the getter by assigning a value
to it.
This change makes that overuse invalid by wrapping the value returned by
each getter in a non_lvalue expression. This alone doesn't forbid the usage
of the value on the left side of an assignment, because the non_lvalue is
unwrapped by gimplification. A follow-up change will reject the case before
that unwrapping happens.
There is an exception for the data getter which is not modified here. The
data getter is special because it returns a conversion of the field
reference instead of the reference itself, so that it's already not an
lvalue, and the creation of a non_lvalue around it is immediately folded
away.
This change requires the dump patterns of the testsuite to allow an optional
NON_LVALUE_EXPR <...> wrapping, wich causes some churn. To compensate a bit
the additional verbosity, brace quotes are used, which reduces the number of
escape characters.
PR fortran/122521
gcc/fortran/ChangeLog:
* trans-descriptor.cc (gfc_conv_descriptor_offset_get,
gfc_conv_descriptor_dtype_get, gfc_conv_descriptor_span_get,
gfc_conv_descriptor_rank_get, gfc_conv_descriptor_version_get,
gfc_conv_descriptor_elem_len_get, gfc_conv_descriptor_type_get,
gfc_conv_descriptor_dimension_get, gfc_conv_descriptor_stride_get,
gfc_conv_descriptor_lbound_get, gfc_conv_descriptor_ubound_get):
Wrap the result in a non_lvalue.
libgomp/ChangeLog:
* testsuite/libgomp.fortran/allocators-1.f90: In the tree dump
patterns, use brace quotes and allow an optional NON_LVALUE_EXPR
wrapper around array descriptor field references.
gcc/testsuite/ChangeLog:
* gfortran.dg/PR93963.f90: In the tree dump patterns, use brace
quotes and allow an optional NON_LVALUE_EXPR wrapper around array
descriptor field references.
* gfortran.dg/array_reference_3.f90: Likewise.
* gfortran.dg/bind-c-contiguous-2.f90: Likewise.
* gfortran.dg/bind_c_array_params_2.f90: Likewise.
* gfortran.dg/coarray_lib_this_image_1.f90: Likewise.
* gfortran.dg/coarray_lib_this_image_2.f90: Likewise.
* gfortran.dg/coarray_lock_7.f90: Likewise.
* gfortran.dg/contiguous_3.f90: Likewise.
* gfortran.dg/intrinsic_size_3.f90: Likewise.
* gfortran.dg/gomp/depend-4.f90: Likewise.
* gfortran.dg/gomp/depend-5.f90: Likewise.
* gfortran.dg/gomp/depend-6.f90: Likewise.
---
gcc/fortran/trans-descriptor.cc | 20 +++++++--------
gcc/testsuite/gfortran.dg/PR93963.f90 | 2 +-
.../gfortran.dg/array_reference_3.f90 | 10 ++++----
.../gfortran.dg/bind-c-contiguous-2.f90 | 12 ++++-----
.../gfortran.dg/bind_c_array_params_2.f90 | 4 +--
.../gfortran.dg/coarray_lib_this_image_1.f90 | 2 +-
.../gfortran.dg/coarray_lib_this_image_2.f90 | 2 +-
gcc/testsuite/gfortran.dg/coarray_lock_7.f90 | 12 ++++-----
gcc/testsuite/gfortran.dg/contiguous_3.f90 | 4 +--
gcc/testsuite/gfortran.dg/gomp/depend-4.f90 | 24 +++++++++---------
gcc/testsuite/gfortran.dg/gomp/depend-5.f90 | 12 ++++-----
gcc/testsuite/gfortran.dg/gomp/depend-6.f90 | 25 ++++++++++---------
.../gfortran.dg/intrinsic_size_3.f90 | 2 +-
.../libgomp.fortran/allocators-1.f90 | 4 +--
14 files changed, 68 insertions(+), 67 deletions(-)
diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index 6156f4e2db1..8103a080ccb 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -136,7 +136,7 @@ conv_descriptor_offset (tree desc)
tree
gfc_conv_descriptor_offset_get (tree desc)
{
- return conv_descriptor_offset (desc);
+ return non_lvalue_loc (input_location, conv_descriptor_offset (desc));
}
/* Add code to BLOCK assigning VALUE to the offset field of the array
descriptor
@@ -165,7 +165,7 @@ conv_descriptor_dtype (tree desc)
tree
gfc_conv_descriptor_dtype_get (tree desc)
{
- return conv_descriptor_dtype (desc);
+ return non_lvalue_loc (input_location, conv_descriptor_dtype (desc));
}
/* Add code to BLOCK assigning VALUE to the dtype field of the array descriptor
@@ -196,7 +196,7 @@ conv_descriptor_span (tree desc)
tree
gfc_conv_descriptor_span_get (tree desc)
{
- return conv_descriptor_span (desc);
+ return non_lvalue_loc (input_location, conv_descriptor_span (desc));
}
/* Add code to BLOCK assigning VALUE to the span field of the array descriptor
@@ -231,7 +231,7 @@ conv_descriptor_rank (tree desc)
tree
gfc_conv_descriptor_rank_get (tree desc)
{
- return conv_descriptor_rank (desc);
+ return non_lvalue_loc (input_location, conv_descriptor_rank (desc));
}
/* Add code to BLOCK assigning VALUE to the rank field of the array descriptor
@@ -278,7 +278,7 @@ conv_descriptor_version (tree desc)
tree
gfc_conv_descriptor_version_get (tree desc)
{
- return conv_descriptor_version (desc);
+ return non_lvalue_loc (input_location, conv_descriptor_version (desc));
}
/* Add code to BLOCK assigning VALUE to the format version field of the array
@@ -317,7 +317,7 @@ conv_descriptor_elem_len (tree desc)
tree
gfc_conv_descriptor_elem_len_get (tree desc)
{
- return conv_descriptor_elem_len (desc);
+ return non_lvalue_loc (input_location, conv_descriptor_elem_len (desc));
}
/* Add code to BLOCK assigning VALUE to the element length field of the array
@@ -355,7 +355,7 @@ conv_descriptor_type (tree desc)
tree
gfc_conv_descriptor_type_get (tree desc)
{
- return conv_descriptor_type (desc);
+ return non_lvalue_loc (input_location, conv_descriptor_type (desc));
}
/* Add code to BLOCK assigning VALUE to the type discriminator field of the
@@ -510,7 +510,7 @@ gfc_conv_descriptor_stride_get (tree desc, tree dim)
|| GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_POINTER_CONT))
return gfc_index_one_node;
- return conv_descriptor_stride (desc, dim);
+ return non_lvalue_loc (input_location, conv_descriptor_stride (desc, dim));
}
/* Add code to BLOCK assigning VALUE to the stride field of the (zero-based)
@@ -542,7 +542,7 @@ conv_descriptor_lbound (tree desc, tree dim)
tree
gfc_conv_descriptor_lbound_get (tree desc, tree dim)
{
- return conv_descriptor_lbound (desc, dim);
+ return non_lvalue_loc (input_location, conv_descriptor_lbound (desc, dim));
}
/* Add code to BLOCK assigning VALUE to the lower bound field of the
@@ -574,7 +574,7 @@ conv_descriptor_ubound (tree desc, tree dim)
tree
gfc_conv_descriptor_ubound_get (tree desc, tree dim)
{
- return conv_descriptor_ubound (desc, dim);
+ return non_lvalue_loc (input_location, conv_descriptor_ubound (desc, dim));
}
/* Add code to BLOCK assigning VALUE to the upper bound field of the
diff --git a/gcc/testsuite/gfortran.dg/PR93963.f90
b/gcc/testsuite/gfortran.dg/PR93963.f90
index 6769d7fe061..22092b22412 100644
--- a/gcc/testsuite/gfortran.dg/PR93963.f90
+++ b/gcc/testsuite/gfortran.dg/PR93963.f90
@@ -194,4 +194,4 @@ end program selr_p
! Special code for assumed rank - but only if not allocatable/pointer
! Thus, expect it only once for subroutine rank_o but not for rank_a or rank_p
-! { dg-final { scan-tree-dump-times "ubound != -1" 1 "original" } }
+! { dg-final { scan-tree-dump-times {(?:NON_LVALUE_EXPR <)?ubound>? != -1} 1
"original" } }
diff --git a/gcc/testsuite/gfortran.dg/array_reference_3.f90
b/gcc/testsuite/gfortran.dg/array_reference_3.f90
index 85fa3317d98..9a0093e82eb 100644
--- a/gcc/testsuite/gfortran.dg/array_reference_3.f90
+++ b/gcc/testsuite/gfortran.dg/array_reference_3.f90
@@ -65,7 +65,7 @@ contains
call ccfis(x)
if (any(x /= 13)) stop 13
! The cfi descriptor’s dim array is referenced with array indexing.
- ! { dg-final { scan-tree-dump-times
"cfi_descriptor->dim\\\[idx.\\d+\\\]\\.ubound =
_cfi_descriptor->dim\\\[idx.\\d+\\\]\\.extent \\+
\\(cfi_descriptor->dim\\\[idx.\\d+\\\]\\.lbound \\+ -1\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times
{cfi_descriptor->dim\[idx.\d+\]\.ubound =
_cfi_descriptor->dim\[idx.\d+\]\.extent \+ \((?:NON_LVALUE_EXPR
<)?cfi_descriptor->dim\[idx.\d+\]\.lbound>? \+ -1\);} 1 "original" } }
end subroutine check_cfi_dim
subroutine css(c) bind(c)
character :: c
@@ -87,7 +87,7 @@ contains
ptr_x(4) = 16
if (any(ptr_x /= (/ 0, 0, 0, 16, 0, 0, 0 /))) stop 16
! pointers are referenced with pointer arithmetic.
- ! { dg-final { scan-tree-dump-times "\\*\\(integer\\(kind=4\\) \\*\\)
\\(ptr_x\\.data \\+ \\(sizetype\\) \\(\\(ptr_x\\.offset \\+
ptr_x\\.dim\\\[0\\\]\\.stride \\* 4\\) \\* ptr_x\\.span\\)\\) = 16;" 1
"original" } }
+ ! { dg-final { scan-tree-dump-times {\*\(integer\(kind=4\) \*\)
\(ptr_x\.data \+ \(sizetype\) \(\((?:NON_LVALUE_EXPR <)?ptr_x\.offset>? \+
(?:NON_LVALUE_EXPR <)?ptr_x\.dim\[0\]\.stride>? \* 4\) \* (?:NON_LVALUE_EXPR
<)?ptr_x\.span>?\)\) = 16;} 1 "original" } }
end subroutine check_ptr_elem
subroutine check_ptr_scalarized
integer, target :: y(8)
@@ -97,7 +97,7 @@ contains
ptr_y = 17
if (any(ptr_y /= 17)) stop 17
! pointers are referenced with pointer arithmetic.
- ! { dg-final { scan-tree-dump-times "\\*\\(\\(integer\\(kind=4\\) \\*\\)
D.\\d+ \\+ \\(sizetype\\) \\(\\(S.\\d+ \\* D.\\d+ \\+ D.\\d+\\) \\*
ptr_y\\.span\\)\\) = 17;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times {\*\(\(integer\(kind=4\) \*\) D.\d+ \+
\(sizetype\) \(\(S.\d+ \* D.\d+ [+-] D.\d+\) \* (?:NON_LVALUE_EXPR
<)?ptr_y\.span>?\)\) = 17;} 1 "original" } }
end subroutine check_ptr_scalarized
subroutine check_explicit_shape_elem
integer :: explicit_shape_x(9)
@@ -129,7 +129,7 @@ contains
allocatable_x(2) = 20
if (any(allocatable_x /= (/ 0, 20, 0, 0 /))) stop 20
! Allocatable arrays are referenced with array indexing.
- ! { dg-final { scan-tree-dump-times
"\\(\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\)
allocatable_x\\.data\\)\\\[allocatable_x\\.offset \\+ 2\\\] = 20;" 1 "original"
} }
+ ! { dg-final { scan-tree-dump-times {\*\(integer\(kind=4\)\[0:\] \*
restrict\) allocatable_x\.data\)\[(?:NON_LVALUE_EXPR <)?allocatable_x\.offset>?
\+ 2\] = 20;} 1 "original" } }
end subroutine check_allocatable_array_elem
subroutine check_allocatable_array_scalarized
integer, allocatable :: allocatable_y(:)
@@ -152,7 +152,7 @@ contains
call cares(x)
if (any(x /= (/ 0, 0, 22, 0, 0, 0 /))) stop 22
! Assumed rank arrays are referenced with pointer arithmetic.
- ! { dg-final { scan-tree-dump-times "\\*\\(\\(integer\\(kind=4\\) \\*\\)
__tmp_INTEGER_4_rank_1\\.data \\+ \\(sizetype\\)
\\(\\(__tmp_INTEGER_4_rank_1\\.offset \\+
__tmp_INTEGER_4_rank_1\\.dim\\\[0\\\]\\.stride \\* 3\\) \\* 4\\)\\) = 22;" 1
"original" } }
+ ! { dg-final { scan-tree-dump-times {\*\(\(integer\(kind=4\) \*\)
__tmp_INTEGER_4_rank_1\.data \+ \(sizetype\) \(\((?:NON_LVALUE_EXPR
<)?__tmp_INTEGER_4_rank_1\.offset>? \+ (?:NON_LVALUE_EXPR
<)?__tmp_INTEGER_4_rank_1\.dim\[0\]\.stride>? \* 3\) \* 4\)\) = 22;} 1
"original" } }
end subroutine check_assumed_rank_elem
subroutine carss(assumed_rank_y)
integer :: assumed_rank_y(..)
diff --git a/gcc/testsuite/gfortran.dg/bind-c-contiguous-2.f90
b/gcc/testsuite/gfortran.dg/bind-c-contiguous-2.f90
index 5b546800e7f..38e60ba897f 100644
--- a/gcc/testsuite/gfortran.dg/bind-c-contiguous-2.f90
+++ b/gcc/testsuite/gfortran.dg/bind-c-contiguous-2.f90
@@ -60,12 +60,12 @@ end
! Copy in + out
-! { dg-final { scan-tree-dump-times "__builtin_memcpy \\(\\(void \\*\\)
xx->data \\+ xx->dtype.elem_len \\* arrayidx.\[0-9\]+, _xx->base_addr \\+
shift.\[0-9\]+, xx->dtype.elem_len\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {__builtin_memcpy \(\(void \*\) xx->data
\+ (?:NON_LVALUE_EXPR <)?xx->dtype\.elem_len>? \* arrayidx.[0-9]+,
_xx->base_addr \+ shift.[0-9]+, (?:NON_LVALUE_EXPR <)?xx->dtype.elem_len>?\);}
1 "original" } }
! { dg-final { scan-tree-dump-times "xx->data = \\(void \\* restrict\\)
_xx->base_addr;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "__builtin_memcpy \\(\\(void \\*\\)
xx->data \\+ xx->dtype.elem_len \\* arrayidx.\[0-9\]+, _xx->base_addr \\+
shift.\[0-9\]+, xx->dtype.elem_len\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "__builtin_memcpy \\(\\(void \\*\\)
yy->data \\+ yy->dtype.elem_len \\* arrayidx.\[0-9\]+, _yy->base_addr \\+
shift.\[0-9\]+, yy->dtype.elem_len\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {__builtin_memcpy \(\(void \*\) xx->data
\+ (?:NON_LVALUE_EXPR <)?xx->dtype\.elem_len>? \* arrayidx.[0-9]+,
_xx->base_addr \+ shift.[0-9]+, (?:NON_LVALUE_EXPR <)?xx->dtype.elem_len>?\);}
1 "original" } }
+! { dg-final { scan-tree-dump-times {__builtin_memcpy \(\(void \*\) yy->data
\+ (?:NON_LVALUE_EXPR <)?yy->dtype\.elem_len>? \* arrayidx.[0-9]+,
_yy->base_addr \+ shift.[0-9]+, (?:NON_LVALUE_EXPR <)?yy->dtype.elem_len>?\);}
1 "original" } }
! { dg-final { scan-tree-dump-times "yy->data = \\(void \\* restrict\\)
_yy->base_addr;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "__builtin_memcpy \\(_yy->base_addr \\+
shift.\[0-9\]+, \\(void \\*\\) yy->data \\+ yy->dtype.elem_len \\*
arrayidx.\[0-9\]+, yy->dtype.elem_len\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {__builtin_memcpy \(_yy->base_addr \+
shift.[0-9]+, \(void \*\) yy->data \+ (?:NON_LVALUE_EXPR
<)?yy->dtype\.elem_len>? \* arrayidx.[0-9]+, (?:NON_LVALUE_EXPR
<)?yy->dtype.elem_len>?\);} 1 "original" } }
! { dg-final { scan-tree-dump-times "zz =
\\(character\\(kind=1\\)\\\[0:\\\]\\\[1:zz.\[0-9\]+\\\] \\* restrict\\)
_zz->base_addr;" 1 "original" } }
! { dg-final { scan-tree-dump-times "__builtin_memcpy \\(\\(void \\*\\) zz \\+
_zz->elem_len \\* arrayidx.\[0-9\]+, _zz->base_addr \\+ shift.\[0-9\]+,
_zz->elem_len\\);" 1 "original" } }
@@ -73,10 +73,10 @@ end
! Copy in only
-! { dg-final { scan-tree-dump-times "__builtin_memcpy \\(\\(void \\*\\)
aa->data \\+ aa->dtype.elem_len \\* arrayidx.\[0-9\]+, _aa->base_addr \\+
shift.\[0-9\]+, aa->dtype.elem_len\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {__builtin_memcpy \(\(void \*\) aa->data
\+ (?:NON_LVALUE_EXPR <)?aa->dtype\.elem_len>? \* arrayidx.[0-9]+,
_aa->base_addr \+ shift.[0-9]+, (?:NON_LVALUE_EXPR <)?aa->dtype.elem_len>?\);}
1 "original" } }
! { dg-final { scan-tree-dump-times "aa->data = \\(void \\* restrict\\)
_aa->base_addr;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "__builtin_memcpy \\(\\(void \\*\\)
bb->data \\+ bb->dtype.elem_len \\* arrayidx.\[0-9\]+, _bb->base_addr \\+
shift.\[0-9\]+, bb->dtype.elem_len\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {__builtin_memcpy \(\(void \*\) bb->data
\+ (?:NON_LVALUE_EXPR <)?bb->dtype\.elem_len>? \* arrayidx.[0-9]+,
_bb->base_addr \+ shift.[0-9]+, (?:NON_LVALUE_EXPR <)?bb->dtype.elem_len>?\);}
1 "original" } }
! { dg-final { scan-tree-dump-times "bb->data = \\(void \\* restrict\\)
_bb->base_addr;" 1 "original" } }
! { dg-final { scan-tree-dump-times "cc =
\\(character\\(kind=1\\)\\\[0:\\\]\\\[1:cc.\[0-9\]+\\\] \\* restrict\\)
_cc->base_addr;" 1 "original" } }
! { dg-final { scan-tree-dump-times "__builtin_memcpy \\(\\(void \\*\\) cc \\+
_cc->elem_len \\* arrayidx.\[0-9\]+, _cc->base_addr \\+ shift.\[0-9\]+,
_cc->elem_len\\);" 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90
b/gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90
index aa6a37b4850..7d79d9b44ac 100644
--- a/gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90
+++ b/gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90
@@ -46,8 +46,8 @@ end
! { dg-final { scan-tree-dump "if \\(idx.. <= 1\\) goto L..;" "original" } }
! { dg-final { scan-tree-dump "cfi...dim\\\[idx..\\\].lower_bound = 0;"
"original" } }
-! { dg-final { scan-tree-dump "cfi...dim\\\[idx..\\\].extent =
\\(parm...dim\\\[idx..\\\].ubound - parm...dim\\\[idx..\\\].lbound\\) \\+ 1;"
"original" } }
-! { dg-final { scan-tree-dump "cfi...dim\\\[idx..\\\].sm =
parm...dim\\\[idx..\\\].stride \\* parm...span;" "original" } }
+! { dg-final { scan-tree-dump {cfi..\.dim\[idx..\].extent =
\((?:NON_LVALUE_EXPR <)?parm..\.dim\[idx..\]\.ubound>? - (?:NON_LVALUE_EXPR
<)?parm..\.dim\[idx..\]\.lbound>?\) \+ 1;} "original" } }
+! { dg-final { scan-tree-dump {cfi..\.dim\[idx..\].sm = (?:NON_LVALUE_EXPR
<)?parm...dim\[idx..\].stride>? \* (?:NON_LVALUE_EXPR <)?parm..\.span>?;}
"original" } }
! { dg-final { scan-tree-dump "idx.. = idx.. \\+ 1;" "original" } }
! { dg-final { scan-tree-dump "test \\(&cfi..\\);" "original" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray_lib_this_image_1.f90
b/gcc/testsuite/gfortran.dg/coarray_lib_this_image_1.f90
index 7939a797501..6f46c4c5243 100644
--- a/gcc/testsuite/gfortran.dg/coarray_lib_this_image_1.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_lib_this_image_1.f90
@@ -19,7 +19,7 @@ end
! { dg-final { scan-tree-dump-times "bar \\(real\\(kind=4\\)\\\[2\\\] \\*
restrict x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\)
caf_offset..\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "mylcobound = 5;" 1 "original" } }
! { dg-final { scan-tree-dump-times "parm...dim\\\[1\\\].lbound = 5;" 1
"original" } }
-! { dg-final { scan-tree-dump-times "myucobound =\[^\n\r\]*
parm...dim\\\[1\\\].lbound \\+ \[^\n\r]*_gfortran_caf_num_images \\(0B, 0B\\).?
\\+ -?\[0-9\]+\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {myucobound =[^\n\r]* (?:NON_LVALUE_EXPR
<)?parm..\.dim\[1\].lbound>? \+ [^\n\r]*_gfortran_caf_num_images \(0B, 0B\).?
\+ -?[0-9]+\);} 1 "original" } }
! { dg-final { scan-tree-dump-times "mylbound = 1;" 1 "original" } }
! { dg-final { scan-tree-dump-times "mythis_image = _gfortran_caf_this_image
\\(0B\\);" 1 "original" } }
! { dg-final { scan-tree-dump-times "bar \\(x, caf_token.., 0\\);" 1
"original" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray_lib_this_image_2.f90
b/gcc/testsuite/gfortran.dg/coarray_lib_this_image_2.f90
index 31a7677ed0e..e23bc5e6e38 100644
--- a/gcc/testsuite/gfortran.dg/coarray_lib_this_image_2.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_lib_this_image_2.f90
@@ -19,7 +19,7 @@ end
! { dg-final { scan-tree-dump-times "bar \\(struct array02_real\\(kind=4\\) &
restrict x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\)
caf_offset..\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "mylcobound = 5;" 1 "original" } }
! { dg-final { scan-tree-dump-times "parm...dim\\\[1\\\].lbound = 5;" 1
"original" } }
-! { dg-final { scan-tree-dump-times "myucobound =\[^\n\r\]*
parm...dim\\\[1\\\].lbound \\+ \[^\n\r\]*_gfortran_caf_num_images \\(0B,
0B\\).? \\+ -?\[0-9\]+\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {myucobound =[^\n\r]* (?:NON_LVALUE_EXPR
<)?parm..\.dim\[1\]\.lbound>? \+ [^\n\r]*_gfortran_caf_num_images \(0B, 0B\).?
\+ -?[0-9]+\);} 1 "original" } }
! { dg-final { scan-tree-dump-times "mylbound = 1;" 1 "original" } }
! { dg-final { scan-tree-dump-times "mythis_image = _gfortran_caf_this_image
\\(0B\\);" 1 "original" } }
! { dg-final { scan-tree-dump-times "bar \\(&parm.\[0-9\]+,
caf_token.\[0-9\]+, \\(integer\\(kind=\[48\]\\)\\) parm.\[0-9\]+.data -
\\(integer\\(kind=\[48\]\\)\\) x\\);" 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray_lock_7.f90
b/gcc/testsuite/gfortran.dg/coarray_lock_7.f90
index 4f4bdde856d..314cf91cc87 100644
--- a/gcc/testsuite/gfortran.dg/coarray_lock_7.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_lock_7.f90
@@ -35,12 +35,12 @@ end
! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(caf_token.., 0, 0,
0B, 0B, 0B, 0\\);" 1 "original" } }
! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(caf_token.., 0,
0, 0B, 0B, 0\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(caf_token..,
.*\\(\\(3 - parm.\\d+.dim\\\[0\\\].lbound\\) \\+ \\(MAX_EXPR
<parm.\\d+.dim\\\[0\\\].ubound - parm.\\d+.dim\\\[0\\\].lbound, -1> \\+ 1\\)
\\* \\(3 - parm.\\d+.dim\\\[1\\\].lbound\\)\\), 0, 0B, &ii, 0B,
0\\);|_gfortran_caf_lock \\(caf_token.1, \\(3 -
parm.\\d+.dim\\\[0\\\].lbound\\) \\+ \\(MAX_EXPR <parm.\\d+.dim\\\[0\\\].ubound
- parm.\\d+.dim\\\[0\\\].lbound, -1> \\+ 1\\) \\* \\(3 -
parm.\\d+.dim\\\[1\\\].lbound\\), 0, 0B, &ii, 0B, 0\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(caf_token..,
.*\\(\\(2 - parm.\\d+.dim\\\[0\\\].lbound\\) \\+ \\(MAX_EXPR
<parm.\\d+.dim\\\[0\\\].ubound - parm.\\d+.dim\\\[0\\\].lbound, -1> \\+ 1\\)
\\* \\(3 - parm.\\d+.dim\\\[1\\\].lbound\\)\\), 0, &ii, 0B,
0\\);|_gfortran_caf_unlock \\(caf_token.., \\(2 -
parm.\\d+.dim\\\[0\\\].lbound\\) \\+ \\(MAX_EXPR <parm.\\d+.dim\\\[0\\\].ubound
- parm.\\d+.dim\\\[0\\\].lbound, -1> \\+ 1\\) \\* \\(3 -
parm.\\d+.dim\\\[1\\\].lbound\\), 0, &ii, 0B, 0\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_lock \(caf_token.., .*\(\(3
- (?:NON_LVALUE_EXPR <)?parm.\d+\.dim\[0\]\.lbound>?\) \+
\(\((?:NON_LVALUE_EXPR <)?parm.\d+\.dim\[0\]\.ubound>? - (?:NON_LVALUE_EXPR
<)?parm.\d+\.dim\[0\]\.lbound>?\) \+ 1\) \* \(3 - (?:NON_LVALUE_EXPR
<)?parm.\d+\.dim\[1\]\.lbound>?\)\), 0, 0B, &ii, 0B, 0\);|_gfortran_caf_lock
\(caf_token.1, \(.*?\) \(\(3 - (?:NON_LVALUE_EXPR
<)?parm.\d+\.dim\[0\]\.lbound>?\) \+ \(MAX_EXPR <(?:NON_LVALUE_EXPR
<)?parm.\d+\.dim\[0\]\.ubound>? - (?:NON_LVALUE_EXPR
<)?parm.\d+\.dim\[0\]\.lbound>?, -1> \+ 1\) \* \(3 - (?:NON_LVALUE_EXPR
<)?parm.\d+\.dim\[1\]\.lbound>?\)\), 0, 0B, &ii, 0B, 0\);} 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_unlock \(caf_token..,
.*\(\(2 - (?:NON_LVALUE_EXPR <)?parm.\d+\.dim\[0\]\.lbound>?\) \+
\(\(parm.\d+\.dim\[0\]\.ubound - (?:NON_LVALUE_EXPR
<)?parm.\d+\.dim\[0\]\.lbound>?\) \+ 1\) \* \(3 - (?:NON_LVALUE_EXPR
<)?parm.\d+\.dim\[1\]\.lbound>?\)\), 0, &ii, 0B, 0\);|_gfortran_caf_unlock
\(caf_token.., \(.*?\) \(\(2 - (?:NON_LVALUE_EXPR
<)?parm.\d+\.dim\[0\]\.lbound>?\) \+ \(MAX_EXPR <(?:NON_LVALUE_EXPR
<)?parm.\d+\.dim\[0\]\.ubound>? - (?:NON_LVALUE_EXPR
<)?parm.\d+\.dim\[0\]\.lbound>?, -1> \+ 1\) \* \(3 - (?:NON_LVALUE_EXPR
<)?parm.\d+\.dim\[1\]\.lbound>?\)\), 0, &ii, 0B, 0\);} 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(three.token, 0,
\\(integer\\(kind=4\\)\\) \\(5 - three.dim\\\[0\\\].lbound\\),
&acquired.\[0-9\]+, 0B, 0B, 0\\);|_gfortran_caf_lock \\(three.token, 0, 5 -
three.dim\\\[0\\\].lbound, &acquired.\[0-9\]+, 0B, 0B, 0\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(three.token, 0,
\\(integer\\(kind=4\\)\\) \\(8 - three.dim\\\[0\\\].lbound\\), &ii, 0B,
0\\);|_gfortran_caf_unlock \\(three.token, 0, 8 - three.dim\\\[0\\\].lbound,
&ii, 0B, 0\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_lock \(three.token, 0,
\(integer\(kind=4\)\) \(5 - (?:NON_LVALUE_EXPR <)?three.dim\[0\].lbound>?\),
&acquired.[0-9]+, 0B, 0B, 0\);|_gfortran_caf_lock \(three.token, 0, 5 -
(?:NON_LVALUE_EXPR <)?three.dim\[0\].lbound>?, &acquired.[0-9]+, 0B, 0B, 0\);}
1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_unlock \(three.token, 0,
\(integer\(kind=4\)\) \(8 - (?:NON_LVALUE_EXPR <)?three.dim\[0\].lbound>?\),
&ii, 0B, 0\);|_gfortran_caf_unlock \(three.token, 0, 8 - (?:NON_LVALUE_EXPR
<)?three.dim\[0\].lbound>?, &ii, 0B, 0\);} 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(four.token, .*\\(1
- four.dim\\\[0\\\].lbound\\), \\(integer\\(kind=4\\)\\) \\(7 -
four.dim\\\[1\\\].lbound\\), &acquired.\[0-9\]+, &ii, 0B,
0\\);|_gfortran_caf_lock \\(four.token, \[^\n\r]*1 -
four.dim\\\[0\\\].lbound\\)?, 7 - four.dim\\\[1\\\].lbound, &acquired.\[0-9\]+,
&ii, 0B, 0\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(four.token,
.*\\(2 - four.dim\\\[0\\\].lbound\\), \\(integer\\(kind=4\\)\\) \\(8 -
four.dim\\\[1\\\].lbound\\), 0B, 0B, 0\\);|_gfortran_caf_unlock \\(four.token,
\[^\n\r]*2 - four.dim\\\[0\\\].lbound\\)?, 8 - four.dim\\\[1\\\].lbound, 0B,
0B, 0\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_lock \(four.token, .*\(1 -
(?:NON_LVALUE_EXPR <)?four.dim\[0\].lbound>?\), \(integer\(kind=4\)\) \(7 -
(?:NON_LVALUE_EXPR <)?four.dim\[1\].lbound>?\), &acquired.[0-9]+, &ii, 0B,
0\);|_gfortran_caf_lock \(four.token, [^\n\r]*1 - (?:NON_LVALUE_EXPR
<)?four.dim\[0\].lbound>?\)?, 7 - (?:NON_LVALUE_EXPR <)?four.dim\[1\].lbound>?,
&acquired.[0-9]+, &ii, 0B, 0\);} 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_unlock \(four.token, .*\(2
- (?:NON_LVALUE_EXPR <)?four.dim\[0\].lbound>?\), \(integer\(kind=4\)\) \(8 -
(?:NON_LVALUE_EXPR <)?four.dim\[1\].lbound>?\), 0B, 0B,
0\);|_gfortran_caf_unlock \(four.token, \[^\n\r]*2 - (?:NON_LVALUE_EXPR
<)?four.dim\[0\].lbound>?\)?, 8 - four.dim\[1\].lbound, 0B, 0B, 0\);} 1
"original" } }
diff --git a/gcc/testsuite/gfortran.dg/contiguous_3.f90
b/gcc/testsuite/gfortran.dg/contiguous_3.f90
index ba0ccce8f9e..05bd785be46 100644
--- a/gcc/testsuite/gfortran.dg/contiguous_3.f90
+++ b/gcc/testsuite/gfortran.dg/contiguous_3.f90
@@ -35,8 +35,8 @@ end subroutine t2
! { dg-final { scan-tree-dump-times "= a1->dim.0..stride;" 0 "original" } }
! { dg-final { scan-tree-dump-times "= b1->dim.0..stride;" 0 "original" } }
-! { dg-final { scan-tree-dump-times "= c2->dim.0..stride;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "= d2->dim.0..stride;" 1 "original" } }
+! { dg-final { scan-tree-dump-times {= (?:NON_LVALUE_EXPR
<)?c2->dim\[0\]\.stride>?;} 1 "original" } }
+! { dg-final { scan-tree-dump-times {= (?:NON_LVALUE_EXPR
<)?d2->dim\[0\]\.stride>?;} 1 "original" } }
subroutine test3()
diff --git a/gcc/testsuite/gfortran.dg/gomp/depend-4.f90
b/gcc/testsuite/gfortran.dg/gomp/depend-4.f90
index edc30fe7291..042a8a5da90 100644
--- a/gcc/testsuite/gfortran.dg/gomp/depend-4.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/depend-4.f90
@@ -194,14 +194,14 @@ end
! { dg-final { scan-tree-dump-times "&object\\\[19\\\] = &dossv;" 1 "original"
} }
! { dg-final { scan-tree-dump-times "&elem\\\[0\\\] = &aa\\\[1\\\];" 1
"original" } }
-! { dg-final { scan-tree-dump-times "&elem\\\[1\\\] =
&\\(\\*\\(integer.kind=4.\\\[0:\\\] \\* restrict\\) aaa.data\\)\\\[aaa.offset
\\+ 2\\\];" 1 "original" } }
-! { dg-final { scan-tree-dump-times "&elem\\\[2\\\] = \\(integer.kind=4.
\\*\\) \\(aap.data \\+ .sizetype. \\(\\(aap.offset \\+ aap.dim\\\[0\\\].stride
\\* 2\\) \\* aap.span\\)\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {&elem\[1\] =
&\(\*\(integer\(kind=4\)\[0:\] \* restrict\) aaa\.data\)\[(?:NON_LVALUE_EXPR
<)?aaa\.offset>? \+ 2\];} 1 "original" } }
+! { dg-final { scan-tree-dump-times {&elem\[2\] = \(integer\(kind=4\) \*\)
\(aap\.data \+ \(sizetype\) \(\((?:NON_LVALUE_EXPR <)?aap\.offset>? \+
(?:NON_LVALUE_EXPR <)?aap\.dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR
<)?aap\.span>?\)\);} 1 "original" } }
! { dg-final { scan-tree-dump-times "&elem\\\[3\\\] = &\\(\\*daa\\)\\\[1\\\];"
1 "original" } }
-! { dg-final { scan-tree-dump-times "&elem\\\[4\\\] =
&\\(\\*\\(integer.kind=4.\\\[0:\\\] \\* restrict\\)
daaa->data\\)\\\[daaa->offset \\+ 2\\\];" 1 "original" } }
-! { dg-final { scan-tree-dump-times "&elem\\\[5\\\] = \\(integer.kind=4.
\\*\\) \\(daap->data \\+ .sizetype. \\(\\(daap->offset \\+
daap->dim\\\[0\\\].stride \\* 2\\) \\* daap->span\\)\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {&elem\[4\] =
&\(\*\(integer\(kind=4\)\[0:\] \* restrict\) daaa->data\)\[(?:NON_LVALUE_EXPR
<)?daaa->offset>? \+ 2\];} 1 "original" } }
+! { dg-final { scan-tree-dump-times {&elem\[5\] = \(integer\(kind=4\) \*\)
\(daap->data \+ \(sizetype\) \(\((?:NON_LVALUE_EXPR <)?daap->offset>? \+
(?:NON_LVALUE_EXPR <)?daap->dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR
<)?daap->span>?\)\);} 1 "original" } }
! { dg-final { scan-tree-dump-times "&elem\\\[6\\\] =
&\\(\\*doaa\\)\\\[1\\\];" 1 "original" } }
-! { dg-final { scan-tree-dump-times "&elem\\\[7\\\] =
&\\(\\*\\(integer.kind=4.\\\[0:\\\] \\* restrict\\)
doaaa->data\\)\\\[doaaa->offset \\+ 2\\\];" 1 "original" } }
-! { dg-final { scan-tree-dump-times "&elem\\\[8\\\] = \\(integer.kind=4.
\\*\\) \\(doaap->data \\+ .sizetype. \\(\\(doaap->offset \\+
doaap->dim\\\[0\\\].stride \\* 2\\) \\* doaap->span\\)\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {&elem\[7\] =
&\(\*\(integer\(kind=4\)\[0:\] \* restrict\) doaaa->data\)\[(?:NON_LVALUE_EXPR
<)?doaaa->offset>? \+ 2\];} 1 "original" } }
+! { dg-final { scan-tree-dump-times {&elem\[8\] = \(integer\(kind=4\) \*\)
\(doaap->data \+ \(sizetype\) \(\((?:NON_LVALUE_EXPR <)?doaap->offset>? \+
(?:NON_LVALUE_EXPR <)?doaap->dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR
<)?doaap->span>?\)\);} 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:ss\\)" 1
"original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*sp\\)" 1
"original" } }
@@ -222,14 +222,14 @@ end
! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\)
doaaa->data\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\*\\) doaap->data\\)" 1
"original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:aa\\\[1\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\(\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\)
aaa.data\\)\\\[aaa.offset \\+ 2\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\*\\(integer\\(kind=4\\) \\*\\) \\(aap.data \\+ \\(sizetype\\)
\\(\\(aap.offset \\+ aap.dim\\\[0\\\].stride \\* 2\\) \\* aap.span\\)\\)\\)" 1
"original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task
depend\(out:\(\*\(integer\(kind=4\)\[0:\] \* restrict\)
aaa\.data\)\[(?:NON_LVALUE_EXPR <)?aaa\.offset>? \+ 2\]\)} 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task
depend\(out:\*\(integer\(kind=4\) \*\) \(aap\.data \+ \(sizetype\)
\(\((?:NON_LVALUE_EXPR <)?aap\.offset>? \+ (?:NON_LVALUE_EXPR
<)?aap\.dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR <)?aap\.span>?\)\)\)} 1
"original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\(\\*daa\\)\\\[1\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\(\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\)
daaa->data\\)\\\[daaa->offset \\+ 2\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\*\\(integer\\(kind=4\\) \\*\\) \\(daap->data \\+ \\(sizetype\\)
\\(\\(daap->offset \\+ daap->dim\\\[0\\\].stride \\* 2\\) \\*
daap->span\\)\\)\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task
depend\(out:\(\*\(integer\(kind=4\)\[0:\] \* restrict\)
daaa->data\)\[(?:NON_LVALUE_EXPR <)?daaa->offset>? \+ 2\]\)} 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task
depend\(out:\*\(integer\(kind=4\) \*\) \(daap->data \+ \(sizetype\)
\(\((?:NON_LVALUE_EXPR <)?daap->offset>? \+ (?:NON_LVALUE_EXPR
<)?daap->dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR <)?daap->span>?\)\)\)}
1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\(\\*doaa\\)\\\[1\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\(\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\)
doaaa->data\\)\\\[doaaa->offset \\+ 2\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\*\\(integer\\(kind=4\\) \\*\\) \\(doaap->data \\+ \\(sizetype\\)
\\(\\(doaap->offset \\+ doaap->dim\\\[0\\\].stride \\* 2\\) \\*
doaap->span\\)\\)\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task
depend\(out:\(\*\(integer\(kind=4\)\[0:\] \* restrict\)
doaaa->data\)\[(?:NON_LVALUE_EXPR <)?doaaa->offset>? \+ 2\]\)} 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task
depend\(out:\*\(integer\(kind=4\) \*\) \(doaap->data \+ \(sizetype\)
\(\((?:NON_LVALUE_EXPR <)?doaap->offset>? \+ (?:NON_LVALUE_EXPR
<)?doaap->dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR
<)?doaap->span>?\)\)\)} 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:dossv\\)" 1
"original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:dssv\\)" 1
"original" } }
diff --git a/gcc/testsuite/gfortran.dg/gomp/depend-5.f90
b/gcc/testsuite/gfortran.dg/gomp/depend-5.f90
index 4cbe3d47d02..c7c27009e07 100644
--- a/gcc/testsuite/gfortran.dg/gomp/depend-5.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/depend-5.f90
@@ -72,11 +72,11 @@ end
! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(depobj:\\*\\*dosa\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(depobj:aa\\\[1\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(depobj:\\(\\*\\(integer\\(kind=\[0-9\]+\\)\\\[0:\\\] \\* restrict\\)
aaa.data\\)\\\[aaa.offset \\+ 2\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(depobj:\\*\\(integer\\(kind=\[0-9\]+\\) \\*\\) \\(aap.data \\+
\\(sizetype\\) \\(\\(aap.offset \\+ aap.dim\\\[0\\\].stride \\* 2\\) \\*
aap.span\\)\\)\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task
depend\(depobj:\(\*\(integer\(kind=[0-9]+\)\[0:\] \* restrict\)
aaa\.data\)\[(?:NON_LVALUE_EXPR <)?aaa\.offset>? \+ 2\]\)} 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task
depend\(depobj:\*\(integer\(kind=[0-9]+\) \*\) \(aap\.data \+ \(sizetype\)
\(\((?:NON_LVALUE_EXPR <)?aap\.offset>? \+ (?:NON_LVALUE_EXPR
<)?aap\.dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR <)?aap\.span>?\)\)\)} 1
"original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(depobj:\\(\\*daa\\)\\\[1\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(depobj:\\(\\*\\(integer\\(kind=\[0-9\]+\\)\\\[0:\\\] \\* restrict\\)
daaa->data\\)\\\[daaa->offset \\+ 2\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(depobj:\\*\\(integer\\(kind=\[0-9\]+\\) \\*\\) \\(daap->data \\+
\\(sizetype\\) \\(\\(daap->offset \\+ daap->dim\\\[0\\\].stride \\* 2\\) \\*
daap->span\\)\\)\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task
depend\(depobj:\(\*\(integer\(kind=[0-9]+\)\[0:\] \* restrict\)
daaa->data\)\[(?:NON_LVALUE_EXPR <)?daaa->offset>? \+ 2\]\)} 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task
depend\(depobj:\*\(integer\(kind=[0-9]+\) \*\) \(daap->data \+ \(sizetype\)
\(\((?:NON_LVALUE_EXPR <)?daap->offset>? \+ (?:NON_LVALUE_EXPR
<)?daap->dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR <)?daap->span>?\)\)\)}
1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(depobj:\\(\\*doaa\\)\\\[1\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(depobj:\\(\\*\\(integer\\(kind=\[0-9\]+\\)\\\[0:\\\] \\* restrict\\)
doaaa->data\\)\\\[doaaa->offset \\+ 2\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(depobj:\\*\\(integer\\(kind=\[0-9\]+\\) \\*\\) \\(doaap->data \\+
\\(sizetype\\) \\(\\(doaap->offset \\+ doaap->dim\\\[0\\\].stride \\* 2\\) \\*
doaap->span\\)\\)\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task
depend\(depobj:\(\*\(integer\(kind=[0-9]+\)\[0:\] \* restrict\)
doaaa->data\)\[(?:NON_LVALUE_EXPR <)?doaaa->offset>? \+ 2\]\)} 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task
depend\(depobj:\*\(integer\(kind=[0-9]+\) \*\) \(doaap->data \+ \(sizetype\)
\(\((?:NON_LVALUE_EXPR <)?doaap->offset>? \+ (?:NON_LVALUE_EXPR
<)?doaap->dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR
<)?doaap->span>?\)\)\)} 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/gomp/depend-6.f90
b/gcc/testsuite/gfortran.dg/gomp/depend-6.f90
index fbac14b1b94..315eed4453d 100644
--- a/gcc/testsuite/gfortran.dg/gomp/depend-6.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/depend-6.f90
@@ -194,14 +194,14 @@ end
! { dg-final { scan-tree-dump-times "&object\\\[19\\\] = &dossv;" 1 "original"
} }
! { dg-final { scan-tree-dump-times "&elem\\\[0\\\] = &aa\\\[1\\\];" 1
"original" } }
-! { dg-final { scan-tree-dump-times "&elem\\\[1\\\] = &\\(\\*\\(void
\\*\\\[0:\\\] \\* restrict\\) aaa.data\\)\\\[aaa.offset \\+ 2\\\];" 1
"original" } }
-! { dg-final { scan-tree-dump-times "&elem\\\[2\\\] = \\(void \\* \\*\\)
\\(aap.data \\+ .sizetype. \\(\\(aap.offset \\+ aap.dim\\\[0\\\].stride \\*
2\\) \\* aap.span\\)\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {&elem\[1\] = &\(\*\(void \*\[0:\] \*
restrict\) aaa\.data\)\[(?:NON_LVALUE_EXPR <)?aaa\.offset>? \+ 2\];} 1
"original" } }
+! { dg-final { scan-tree-dump-times {&elem\[2\] = \(void \* \*\) \(aap\.data
\+ \(sizetype\) \(\((?:NON_LVALUE_EXPR <)?aap\.offset>? \+ (?:NON_LVALUE_EXPR
<)?aap\.dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR <)?aap\.span>?\)\);} 1
"original" } }
! { dg-final { scan-tree-dump-times "&elem\\\[3\\\] = &\\(\\*daa\\)\\\[1\\\];"
1 "original" } }
-! { dg-final { scan-tree-dump-times "&elem\\\[4\\\] = &\\(\\*\\(void
\\*\\\[0:\\\] \\* restrict\\) daaa->data\\)\\\[daaa->offset \\+ 2\\\];" 1
"original" } }
-! { dg-final { scan-tree-dump-times "&elem\\\[5\\\] = \\(void \\* \\*\\)
\\(daap->data \\+ .sizetype. \\(\\(daap->offset \\+ daap->dim\\\[0\\\].stride
\\* 2\\) \\* daap->span\\)\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {&elem\[4\] = &\(\*\(void \*\[0:\] \*
restrict\) daaa->data\)\[(?:NON_LVALUE_EXPR <)?daaa->offset>? \+ 2\];} 1
"original" } }
+! { dg-final { scan-tree-dump-times {&elem\[5\] = \(void \* \*\) \(daap->data
\+ \(sizetype\) \(\((?:NON_LVALUE_EXPR <)?daap->offset>? \+ (?:NON_LVALUE_EXPR
<)?daap->dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR <)?daap->span>?\)\);}
1 "original" } }
! { dg-final { scan-tree-dump-times "&elem\\\[6\\\] =
&\\(\\*doaa\\)\\\[1\\\];" 1 "original" } }
-! { dg-final { scan-tree-dump-times "&elem\\\[7\\\] = &\\(\\*\\(void
\\*\\\[0:\\\] \\* restrict\\) doaaa->data\\)\\\[doaaa->offset \\+ 2\\\];" 1
"original" } }
-! { dg-final { scan-tree-dump-times "&elem\\\[8\\\] = \\(void \\* \\*\\)
\\(doaap->data \\+ .sizetype. \\(\\(doaap->offset \\+
doaap->dim\\\[0\\\].stride \\* 2\\) \\* doaap->span\\)\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {&elem\[7\] = &\(\*\(void \*\[0:\] \*
restrict\) doaaa->data\)\[(?:NON_LVALUE_EXPR <)?doaaa->offset>? \+ 2\];} 1
"original" } }
+! { dg-final { scan-tree-dump-times {&elem\[8\] = \(void \* \*\) \(doaap->data
\+ \(sizetype\) \(\((?:NON_LVALUE_EXPR <)?doaap->offset>? \+ (?:NON_LVALUE_EXPR
<)?doaap->dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR
<)?doaap->span>?\)\);} 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:ss\\)" 1
"original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*sp\\)" 1
"original" } }
@@ -222,14 +222,15 @@ end
! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(void
\\*\\\[0:\\\] \\* restrict\\) doaaa->data\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(void
\\*\\\[0:\\\] \\*\\) doaap->data\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:aa\\\[1\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\(\\*\\(void \\*\\\[0:\\\] \\* restrict\\)
aaa.data\\)\\\[aaa.offset \\+ 2\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(void
\\* \\*\\) \\(aap.data \\+ \\(sizetype\\) \\(\\(aap.offset \\+
aap.dim\\\[0\\\].stride \\* 2\\) \\* aap.span\\)\\)\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task depend\(out:\(\*\(void
\*\[0:\] \* restrict\) aaa\.data\)\[(?:NON_LVALUE_EXPR <)?aaa\.offset>? \+
2\]\)} 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task depend\(out:\*\(void \*
\*\) \(aap\.data \+ \(sizetype\) \(\((?:NON_LVALUE_EXPR <)?aap\.offset>? \+
(?:NON_LVALUE_EXPR <)?aap\.dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR
<)?aap\.span>?\)\)\)} 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\(\\*daa\\)\\\[1\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\(\\*\\(void \\*\\\[0:\\\] \\* restrict\\)
daaa->data\\)\\\[daaa->offset \\+ 2\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(void
\\* \\*\\) \\(daap->data \\+ \\(sizetype\\) \\(\\(daap->offset \\+
daap->dim\\\[0\\\].stride \\* 2\\) \\* daap->span\\)\\)\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task depend\(out:\(\*\(void
\*\[0:\] \* restrict\) daaa->data\)\[(?:NON_LVALUE_EXPR <)?daaa->offset>? \+
2\]\)} 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task depend\(out:\*\(void \*
\*\) \(daap->data \+ \(sizetype\) \(\((?:NON_LVALUE_EXPR <)?daap->offset>? \+
(?:NON_LVALUE_EXPR <)?daap->dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR
<)?daap->span>?\)\)\)} 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\(\\*doaa\\)\\\[1\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task
depend\\(out:\\(\\*\\(void \\*\\\[0:\\\] \\* restrict\\)
doaaa->data\\)\\\[doaaa->offset \\+ 2\\\]\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(void
\\* \\*\\) \\(doaap->data \\+ \\(sizetype\\) \\(\\(doaap->offset \\+
doaap->dim\\\[0\\\].stride \\* 2\\) \\* doaap->span\\)\\)\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task depend\(out:\(\*\(void
\*\[0:\] \* restrict\) doaaa->data\)\[(?:NON_LVALUE_EXPR <)?doaaa->offset>? \+
2\]\)} 1 "original" } }
+! { dg-final { scan-tree-dump-times {#pragma omp task depend\(out:\*\(void \*
\*\) \(doaap->data \+ \(sizetype\)
+! \(\((?:NON_LVALUE_EXPR <)?doaap->offset>? \+ (?:NON_LVALUE_EXPR
<)?doaap->dim\[0\]\.stride>? \* 2\) \* (?:NON_LVALUE_EXPR
<)?doaap->span>?\)\)\)} 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:dossv\\)" 1
"original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:dssv\\)" 1
"original" } }
diff --git a/gcc/testsuite/gfortran.dg/intrinsic_size_3.f90
b/gcc/testsuite/gfortran.dg/intrinsic_size_3.f90
index afdf9b34d4b..593296c0a7e 100644
--- a/gcc/testsuite/gfortran.dg/intrinsic_size_3.f90
+++ b/gcc/testsuite/gfortran.dg/intrinsic_size_3.f90
@@ -22,4 +22,4 @@ program bug
stop
end program bug
-! { dg-final { scan-tree-dump-times "iszs = \\(integer\\(kind=2\\)\\) MAX_EXPR
<\\(a.dim.0..ubound - a.dim.0..lbound\\) \\+ 1, 0>;" 1 "original" } }
+! { dg-final { scan-tree-dump-times {iszs = \(integer\(kind=2\)\) MAX_EXPR
<\((?:NON_LVALUE_EXPR <)?a\.dim\[0\]\.ubound>? - (?:NON_LVALUE_EXPR
<)?a\.dim\[0\]\.lbound>?\) \+ 1, 0>;} 1 "original" } }
diff --git a/libgomp/testsuite/libgomp.fortran/allocators-1.f90
b/libgomp/testsuite/libgomp.fortran/allocators-1.f90
index 8e1d1944fa5..6bba6e04672 100644
--- a/libgomp/testsuite/libgomp.fortran/allocators-1.f90
+++ b/libgomp/testsuite/libgomp.fortran/allocators-1.f90
@@ -49,8 +49,8 @@ end
! { dg-final { scan-tree-dump-times "a.data = \\(void \\* restrict\\)
__builtin_GOMP_alloc \\(512, 20, D\\.\[0-9\]+\\);" 1 "original" } }
! { dg-final { scan-tree-dump-times "a.data = \\(void \\* restrict\\)
__builtin_GOMP_alloc \\(4, 28, 0B\\);" 1 "original" } }
! { dg-final { scan-tree-dump-times "a.dtype.version = 1;" 2 "original" } }
-! { dg-final { scan-tree-dump-times "a.data = \\(void \\* restrict\\)
\\(a.dtype.version == 1 \\? __builtin_omp_realloc \\(\\(void \\*\\) a.data, 4,
0B, 0B\\) : __builtin_realloc \\(\\(void \\*\\) a.data, 4\\)\\);" 2 "original"
} }
-! { dg-final { scan-tree-dump-times "if \\(a.dtype.version == 1\\)" 3
"original" } }
+! { dg-final { scan-tree-dump-times "a.data = \\(void \\* restrict\\)
\\((?:NON_LVALUE_EXPR <)?a.dtype.version>? == 1 \\? __builtin_omp_realloc
\\(\\(void \\*\\) a.data, 4, 0B, 0B\\) : __builtin_realloc \\(\\(void \\*\\)
a.data, 4\\)\\);" 2 "original" } }
+! { dg-final { scan-tree-dump-times "if \\((?:NON_LVALUE_EXPR
<)?a.dtype.version>? == 1\\)" 3 "original" } }
! { dg-final { scan-tree-dump-times "__builtin_GOMP_free
\\(\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) a.data, 0B\\);" 3
"original" } }
! { dg-final { scan-tree-dump-times "a.dtype.version = 0;" 3 "original" } }
--
2.53.0