https://gcc.gnu.org/g:a2f397426617de9f74e0794bcb0863615762e07e

commit a2f397426617de9f74e0794bcb0863615762e07e
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Thu Jun 19 17:22:05 2025 +0200

    Ajout non_lvalue getters.
    
    Mises à jour dumps
    
    Mise à jour dump bind-c-contiguous-2.f90
    
    Mise à jour dumps coarray_poly_*.f90
    
    Mise à jour dump coarray_lock_7.f90
    
    Correction dump coarray_allocate_7.f08
    
    Mise à jour dump coarray_lib_alloc_4.f90
    
    Mise à jour dump coarray_lib_alloc_2.f90
    
    Mise à jour dump coarray_lib_alloc_3.f90
    
    Mise à jour dump coarray_lib_alloc_1.f90
    
    Mise à jour dump coarray_lib_token_4.f90
    
    Mise à jour dump coarray_lib_token_3.f90
    
    Mise à jour dump coarray_lib_token_2.f90
    
    Mise à jour dump contiguous_3.f90
    
    Correction dump coarray_poly_8
    
    Ajout non_lvalue dtype_get
    
    This reverts commit 753122549b057ad97ad6f98e5baa26c81706c9d9.
    
    Ajout non_lvalue elem_len_get
    
    This reverts commit b06c027e636068042a85adc5e5675ac8c48eb26c.
    
    Ajout non_lvalue version_get
    
    This reverts commit 708a228bd25a37b2d9590efe44a7f42b3eab46ed.
    
    Ajout non_lvalue rank_get
    
    This reverts commit e0fe5e4c8610e6dc14297a697287742a0c56386d.
    
    Ajout non_lvalue type_get
    
    This reverts commit 2c3a1a854faf2d271ade37615d1c5d32b07cf897.
    
    Ajout non_lvalue dimension_get
    
    This reverts commit 5e36be306d1faf013d4493ed302de8701f9815f9.
    
    Correction motif intrinsic_size_3
    
    Correction motifs dumps coarray_lib_this_image_{1,2}
    
    Correction format dump bind_c_array_params_2
    
    Correction motif dump PR93963
    
    Correction motif dump coarray_lock_7
    
    Correction motifs dump gomp/depend-5
    
    Correction motifs dump gomp/depend-4
    
    Correction motifs dump gomp/depend-6
    
    Mise à jour formats dump bind-c-contiguous-2
    
    Correction motifs dump array_reference_3
    
    Correction motifs dump coarray_lock_7
    
    Annulation partielle

Diff:
---
 gcc/fortran/trans-descriptor.cc                    | 50 +++++++++++++---------
 gcc/testsuite/gfortran.dg/PR93963.f90              |  2 +-
 gcc/testsuite/gfortran.dg/array_reference_3.f90    | 10 ++---
 gcc/testsuite/gfortran.dg/bind-c-contiguous-2.f90  | 12 +++---
 .../gfortran.dg/bind_c_array_params_2.f90          |  4 +-
 gcc/testsuite/gfortran.dg/coarray_allocate_7.f08   |  2 +-
 gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90  | 12 +++---
 gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90  | 12 +++---
 gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90  | 12 +++---
 gcc/testsuite/gfortran.dg/coarray_lib_alloc_4.f90  |  6 +--
 .../gfortran.dg/coarray_lib_this_image_1.f90       |  2 +-
 .../gfortran.dg/coarray_lib_this_image_2.f90       |  2 +-
 gcc/testsuite/gfortran.dg/coarray_lib_token_2.f90  |  4 +-
 gcc/testsuite/gfortran.dg/coarray_lib_token_3.f90  |  4 +-
 gcc/testsuite/gfortran.dg/coarray_lib_token_4.f90  |  6 +--
 gcc/testsuite/gfortran.dg/coarray_lock_7.f90       | 16 +++----
 gcc/testsuite/gfortran.dg/coarray_poly_4.f90       |  2 +-
 gcc/testsuite/gfortran.dg/coarray_poly_5.f90       |  2 +-
 gcc/testsuite/gfortran.dg/coarray_poly_6.f90       |  2 +-
 gcc/testsuite/gfortran.dg/coarray_poly_7.f90       |  2 +-
 gcc/testsuite/gfortran.dg/coarray_poly_8.f90       |  2 +-
 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        | 24 +++++------
 gcc/testsuite/gfortran.dg/intrinsic_size_3.f90     |  2 +-
 26 files changed, 120 insertions(+), 112 deletions(-)

diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index 0ac1660d21ad..3d7cbeb7f43a 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -196,6 +196,13 @@ gfc_get_descriptor_field (tree desc, unsigned field_idx)
                          desc, field, NULL_TREE);
 }
 
+
+static tree
+get_descriptor_data (tree desc)
+{
+  return gfc_get_descriptor_field (desc, DATA_FIELD);
+}
+
 /* This provides READ-ONLY access to the data field.  The field itself
    doesn't have the proper type.  */
 
@@ -203,11 +210,12 @@ tree
 gfc_conv_descriptor_data_get (tree desc)
 {
   tree type = TREE_TYPE (desc);
-  if (TREE_CODE (type) == REFERENCE_TYPE)
-    gcc_unreachable ();
+  gcc_assert (TREE_CODE (type) != REFERENCE_TYPE);
 
-  tree field = gfc_get_descriptor_field (desc, DATA_FIELD);
-  return fold_convert (GFC_TYPE_ARRAY_DATAPTR_TYPE (type), field);
+  tree field = get_descriptor_data (desc);
+  tree target_type = GFC_TYPE_ARRAY_DATAPTR_TYPE (TREE_TYPE (desc));
+  tree t = fold_convert (target_type, field);
+  return non_lvalue_loc (input_location, t);
 }
 
 /* This provides WRITE access to the data field.
@@ -237,7 +245,7 @@ get_descriptor_offset (tree desc)
 tree
 gfc_conv_descriptor_offset_get (tree desc)
 {
-  return get_descriptor_offset (desc);
+  return non_lvalue_loc (input_location, get_descriptor_offset (desc));
 }
 
 void
@@ -259,7 +267,7 @@ get_descriptor_dtype (tree desc)
 tree
 gfc_conv_descriptor_dtype_get (tree desc)
 {
-  return get_descriptor_dtype (desc);
+  return non_lvalue_loc (input_location, get_descriptor_dtype (desc));
 }
 
 void
@@ -283,7 +291,7 @@ gfc_conv_descriptor_span (tree desc)
 tree
 gfc_conv_descriptor_span_get (tree desc)
 {
-  return gfc_conv_descriptor_span (desc);
+  return non_lvalue_loc (input_location, gfc_conv_descriptor_span (desc));
 }
 
 void
@@ -312,7 +320,7 @@ get_descriptor_rank (tree desc)
 tree
 gfc_conv_descriptor_rank_get (tree desc)
 {
-  return get_descriptor_rank (desc);
+  return non_lvalue_loc (input_location, get_descriptor_rank (desc));
 }
 
 void
@@ -347,7 +355,7 @@ get_descriptor_version (tree desc)
 tree
 gfc_conv_descriptor_version_get (tree desc)
 {
-  return get_descriptor_version (desc);
+  return non_lvalue_loc (input_location, get_descriptor_version (desc));
 }
 
 void
@@ -380,7 +388,7 @@ get_descriptor_elem_len (tree desc)
 tree
 gfc_conv_descriptor_elem_len_get (tree desc)
 {
-  return get_descriptor_elem_len (desc);
+  return non_lvalue_loc (input_location, get_descriptor_elem_len (desc));
 }
 
 void
@@ -410,7 +418,7 @@ get_descriptor_type (tree desc)
 tree
 gfc_conv_descriptor_type_get (tree desc)
 {
-  return get_descriptor_type (desc);
+  return non_lvalue_loc (input_location, get_descriptor_type (desc));
 }
 
 void
@@ -482,7 +490,7 @@ get_descriptor_dimension (tree desc, tree dim)
 tree
 gfc_conv_descriptor_dimension_get (tree desc, tree dim)
 {
-  return get_descriptor_dimension (desc, dim);
+  return non_lvalue_loc (input_location, get_descriptor_dimension (desc, dim));
 }
 
 tree
@@ -542,7 +550,7 @@ gfc_conv_descriptor_subfield (tree desc, tree dim, unsigned 
field_idx)
 }
 
 static tree
-gfc_conv_descriptor_stride (tree desc, tree dim)
+get_descriptor_stride (tree desc, tree dim)
 {
   tree field = gfc_conv_descriptor_subfield (desc, dim, STRIDE_SUBFIELD);
   gcc_assert (TREE_TYPE (field) == gfc_array_index_type);
@@ -563,19 +571,19 @@ gfc_conv_descriptor_stride_get (tree desc, tree dim)
          || GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_POINTER_CONT))
     return gfc_index_one_node;
 
-  return gfc_conv_descriptor_stride (desc, dim);
+  return non_lvalue_loc (input_location, get_descriptor_stride (desc, dim));
 }
 
 void
 gfc_conv_descriptor_stride_set (stmtblock_t *block, tree desc,
                                tree dim, tree value)
 {
-  tree t = gfc_conv_descriptor_stride (desc, dim);
+  tree t = get_descriptor_stride (desc, dim);
   gfc_add_modify (block, t, fold_convert (TREE_TYPE (t), value));
 }
 
 static tree
-gfc_conv_descriptor_lbound (tree desc, tree dim)
+get_descriptor_lbound (tree desc, tree dim)
 {
   tree field = gfc_conv_descriptor_subfield (desc, dim, LBOUND_SUBFIELD);
   gcc_assert (TREE_TYPE (field) == gfc_array_index_type);
@@ -585,19 +593,19 @@ gfc_conv_descriptor_lbound (tree desc, tree dim)
 tree
 gfc_conv_descriptor_lbound_get (tree desc, tree dim)
 {
-  return gfc_conv_descriptor_lbound (desc, dim);
+  return non_lvalue_loc (input_location, get_descriptor_lbound (desc, dim));
 }
 
 void
 gfc_conv_descriptor_lbound_set (stmtblock_t *block, tree desc,
                                tree dim, tree value)
 {
-  tree t = gfc_conv_descriptor_lbound (desc, dim);
+  tree t = get_descriptor_lbound (desc, dim);
   gfc_add_modify (block, t, fold_convert (TREE_TYPE (t), value));
 }
 
 static tree
-gfc_conv_descriptor_ubound (tree desc, tree dim)
+get_descriptor_ubound (tree desc, tree dim)
 {
   tree field = gfc_conv_descriptor_subfield (desc, dim, UBOUND_SUBFIELD);
   gcc_assert (TREE_TYPE (field) == gfc_array_index_type);
@@ -607,14 +615,14 @@ gfc_conv_descriptor_ubound (tree desc, tree dim)
 tree
 gfc_conv_descriptor_ubound_get (tree desc, tree dim)
 {
-  return gfc_conv_descriptor_ubound (desc, dim);
+  return non_lvalue_loc (input_location, get_descriptor_ubound (desc, dim));
 }
 
 void
 gfc_conv_descriptor_ubound_set (stmtblock_t *block, tree desc,
                                tree dim, tree value)
 {
-  tree t = gfc_conv_descriptor_ubound (desc, dim);
+  tree t = get_descriptor_ubound (desc, dim);
   gfc_add_modify (block, t, fold_convert (TREE_TYPE (t), value));
 }
 
diff --git a/gcc/testsuite/gfortran.dg/PR93963.f90 
b/gcc/testsuite/gfortran.dg/PR93963.f90
index 6769d7fe0610..22092b224124 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 85fa3317d985..4841518dcc32 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 5b546800e7ff..38e60ba897f3 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 aa6a37b48504..7d79d9b44ac0 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_allocate_7.f08 
b/gcc/testsuite/gfortran.dg/coarray_allocate_7.f08
index 56160e29d9f4..ab363588b7bc 100644
--- a/gcc/testsuite/gfortran.dg/coarray_allocate_7.f08
+++ b/gcc/testsuite/gfortran.dg/coarray_allocate_7.f08
@@ -23,5 +23,5 @@ program main
   if ( object%indices(1) /= 1 ) STOP 2
 end program
 
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(0, 7, \\(void 
\\*\\) &mytype\\.\[0-9\]+\\.indices\\.token, &mytype\\.\[0-9\]+\\.indices, 0B, 
0B, 0\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \(0, 7, \(void 
\*\) &(?:NON_LVALUE_EXPR <)?mytype\.[0-9]+\.indices\.token>?, 
&mytype\.[0-9]+\.indices, 0B, 0B, 0\);} 1 "original" } }
 
diff --git a/gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90 
b/gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90
index 4f90bdfbdaa5..e3846599fc8f 100644
--- a/gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90
@@ -13,9 +13,9 @@
  deallocate(xx,yy,stat=stat, errmsg=errmsg)
  end
 
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(4, 1, 
&xx.token, \\(void \\*\\) &xx, &stat.., &errmsg, 200\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(8, 1, 
&yy.token, \\(void \\*\\) &yy, &stat.., &errmsg, 200\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&xx.token, 0, 
&stat.., &errmsg, 200.;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&yy.token, 0, 
&stat.., &errmsg, 200.;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&yy.token, 0, 
0B, 0B, 0.;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&xx.token, 0, 
0B, 0B, 0.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \(4, 1, 
&(?:NON_LVALUE_EXPR <)?xx\.token>?, \(void \*\) &xx, &stat.., &errmsg, 200\);} 
1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \(8, 1, 
&(?:NON_LVALUE_EXPR <)?yy\.token>?, \(void \*\) &yy, &stat.., &errmsg, 200\);} 
1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?xx\.token>?, 0, &stat.., &errmsg, 200\);} 1 "original" 
} }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?yy\.token>?, 0, &stat.., &errmsg, 200\);} 1 "original" 
} }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?yy\.token>?, 0, 0B, 0B, 0\);} 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?xx\.token>?, 0, 0B, 0B, 0\);} 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90 
b/gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
index 90998ee39aa0..995a0b6d05d7 100644
--- a/gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
@@ -15,9 +15,9 @@
  deallocate(xx,yy,stat=stat, errmsg=errmsg)
  end
 
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(1, 1, 
&xx._data.token, \\(void \\*\\) &xx._data, &stat.., &errmsg, 200\\);" 1 
"original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(1, 1, 
&yy._data.token, \\(void \\*\\) &yy._data, &stat.., &errmsg, 200\\);" 1 
"original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister 
.&xx._data.token, 0, &stat.., &errmsg, 200.;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister 
.&yy._data.token, 0, &stat.., &errmsg, 200.;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister 
.&yy._data.token, 0, 0B, 0B, 0.;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister 
.&xx._data.token, 0, 0B, 0B, 0.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \(1, 1, 
&(?:NON_LVALUE_EXPR <)?xx\._data\.token>?, \(void \*\) &xx._data, &stat.., 
&errmsg, 200\);} 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \(1, 1, 
&(?:NON_LVALUE_EXPR <)?yy\._data\.token>?, \(void \*\) &yy._data, &stat.., 
&errmsg, 200\);} 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?xx\._data\.token>?, 0, &stat.., &errmsg, 200\);} 1 
"original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?yy\._data\.token>?, 0, &stat.., &errmsg, 200\);} 1 
"original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?yy\._data\.token>?, 0, 0B, 0B, 0\);} 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?xx\._data\.token>?, 0, 0B, 0B, 0\);} 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90 
b/gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90
index 17f800ffe700..ad4ce887c944 100644
--- a/gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90
@@ -16,9 +16,9 @@ subroutine test
  deallocate(xx,yy,stat=stat, errmsg=errmsg)
  end
 
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(1, 1, 
&xx._data.token, \\(void \\*\\) &xx._data, &stat.., &errmsg, 200\\);" 1 
"original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(1, 1, 
&yy._data.token, \\(void \\*\\) &yy._data, &stat.., &errmsg, 200\\);" 1 
"original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister 
.&xx._data.token, 0, &stat.., &errmsg, 200.;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister 
.&yy._data.token, 0, &stat.., &errmsg, 200.;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister 
.&yy._data.token, 0, 0B, 0B, 0.;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister 
.&xx._data.token, 0, 0B, 0B, 0.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \(1, 1, 
&(?:NON_LVALUE_EXPR <)?xx\._data\.token>?, \(void \*\) &xx\._data, &stat.., 
&errmsg, 200\);} 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \(1, 1, 
&(?:NON_LVALUE_EXPR <)?yy\._data\.token>?, \(void \*\) &yy\._data, &stat.., 
&errmsg, 200\);} 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?xx\._data\.token>?, 0, &stat.., &errmsg, 200\);} 1 
"original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?yy\._data\.token>?, 0, &stat.., &errmsg, 200\);} 1 
"original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?yy\._data\.token>?, 0, 0B, 0B, 0\);} 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?xx\._data\.token>?, 0, 0B, 0B, 0\);} 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray_lib_alloc_4.f90 
b/gcc/testsuite/gfortran.dg/coarray_lib_alloc_4.f90
index e79ee442be82..5f9e1d4bbfe4 100644
--- a/gcc/testsuite/gfortran.dg/coarray_lib_alloc_4.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_lib_alloc_4.f90
@@ -39,9 +39,9 @@ program test_caf_alloc
 end
 
 ! { dg-final { scan-tree-dump-times "_gfortran_caf_is_present_on_remote" 10 
"original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(\[0-9\]+, 1, 
&xx\\.token, \\(void \\*\\) &xx, 0B, 0B, 0\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \([0-9]+, 1, 
&(?:NON_LVALUE_EXPR <)?xx\.token>?, \(void \*\) &xx, 0B, 0B, 0\)} 1 "original" 
} }
 ! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(\[0-9\]+, 7" 2 
"original" } }
 ! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(\[0-9\]+, 8" 2 
"original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister \\(&xx\\.token, 
0, 0B, 0B, 0\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister \\(&\\(\\(struct 
t \\* restrict\\) xx\\.data\\)->r\\.token, 1, 0B, 0B, 0\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?xx\.token>?, 0, 0B, 0B, 0\)} 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_deregister 
\(&(?:NON_LVALUE_EXPR <)?\(\(struct t \* restrict\) xx\.data\)->r\.token>?, 1, 
0B, 0B, 0\)} 1 "original" } }
 ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister \\(&\\(\\(struct 
t \\* restrict\\) xx\\.data\\)->_caf_i, 1, 0B, 0B, 0\\)" 1 "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 7939a797501a..6f46c4c5243e 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 31a7677ed0e1..e23bc5e6e38d 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_lib_token_2.f90 
b/gcc/testsuite/gfortran.dg/coarray_lib_token_2.f90
index 6aecc34b6656..891fabaae5c8 100644
--- a/gcc/testsuite/gfortran.dg/coarray_lib_token_2.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_lib_token_2.f90
@@ -96,7 +96,7 @@ end program main
 !  sub ((integer(kind=4) *) caf.data, &((struct t * restrict) caf_dt.data)->b,
 !       caf.token, 0, caf_dt.token, 4);
 !
-! { dg-final { scan-tree-dump-times "sub \\(\[^,\]*caf.data, 
&\[^,\]*caf_dt.data.->b, caf.token, 0, caf_dt.token, 4\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times {sub \(\([^,]+ \*\) caf\.data, 
&\(\([^)]+\) caf_dt\.data\)->b, (?:NON_LVALUE_EXPR <)?caf\.token>?, 0, 
(?:NON_LVALUE_EXPR <)?caf_dt\.token>?, 4\)} 1 "original" } }
 !
 !  sub2 ((integer(kind=4) *) x1, (integer(kind=4) *) x2,
 !        caf_token.4, NON_LVALUE_EXPR <caf_offset.5>,
@@ -110,5 +110,5 @@ end program main
 !
 ! CALL 4
 !
-! { dg-final { scan-tree-dump-times "sub_opt \\(.integer.kind=4. .. caf.data, 
caf.token, 0\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times {sub_opt \(\(integer\(kind=4\) \*\) 
caf\.data, (?:NON_LVALUE_EXPR <)?caf\.token>?, 0\)} 1 "original" } }
 !
diff --git a/gcc/testsuite/gfortran.dg/coarray_lib_token_3.f90 
b/gcc/testsuite/gfortran.dg/coarray_lib_token_3.f90
index bedb0919d006..c1f00731def4 100644
--- a/gcc/testsuite/gfortran.dg/coarray_lib_token_3.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_lib_token_3.f90
@@ -8,5 +8,5 @@ allocate(CAF(1)[*])
 allocate(CAF_SCALAR[*])
 end
 
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(4, 1, 
&caf.token, \\(void \\*\\) &caf, 0B, 0B, 0\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(4, 1, 
&caf_scalar.token, \\(void \\*\\) &caf_scalar, 0B, 0B, 0\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \(4, 1, 
&(?:NON_LVALUE_EXPR <)?caf\.token>?, \(void \*\) &caf, 0B, 0B, 0\);} 1 
"original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \(4, 1, 
&(?:NON_LVALUE_EXPR <)?caf_scalar\.token>?, \(void \*\) &caf_scalar, 0B, 0B, 
0\);} 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray_lib_token_4.f90 
b/gcc/testsuite/gfortran.dg/coarray_lib_token_4.f90
index b69aa5fce89a..fe500684fb5d 100644
--- a/gcc/testsuite/gfortran.dg/coarray_lib_token_4.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_lib_token_4.f90
@@ -43,9 +43,9 @@ end program test_caf
 !
 ! { dg-final { scan-tree-dump-times "expl \\(\\(integer\\(kind=4\\).0:. .\\) 
parm.\[0-9\]+.data, caf_token.\[0-9\]+, \\(\\(integer\\(kind=.\\)\\) 
parm.\[0-9\]+.data - \\(\\(integer\\(kind=.\\)\\) y.\[0-9\]+\\) \\+ 
caf_offset.\[0-9\]+\\);" 0 "original" } }
 !
-! { dg-final { scan-tree-dump-times "foo \\(&a, &a, &C.\[0-9\]+, a.token, 0, 
a.token, 0\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {foo \(&a, &a, &C.[0-9]+, 
(?:NON_LVALUE_EXPR <)?a\.token>?, 0, (?:NON_LVALUE_EXPR <)?a.token>?, 0\);} 1 
"original" } }
 !
-! { dg-final { scan-tree-dump-times "foo \\(&parm.\[0-9\]+, &parm.\[0-9\]+, 
&C.\[0-9\]+, a.token, \\(integer\\(kind=.\\)\\) parm.\[0-9\]+.data - 
\\(integer\\(kind=.\\)\\) a.data, caf_token.\[0-9\]+, \\(integer\\(kind=.\\)\\) 
parm.\[0-9\]+.data - \\(integer\\(kind=.\\)\\) b\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {foo \(&parm.[0-9]+, &parm.[0-9]+, 
&C.[0-9]+, (?:NON_LVALUE_EXPR <)?a\.token>?, \(integer\(kind=.\)\) 
parm.[0-9]+\.data - \(integer\(kind=.\)\) a\.data, caf_token.[0-9]+, 
\(integer\(kind=.\)\) parm.[0-9]+\.data - \(integer\(kind=.\)\) b\);} 1 
"original" } }
 !
-! { dg-final { scan-tree-dump-times "foo \\(&parm.\[0-9\]+, &a, &C.\[0-9\]+, 
caf_token.\[0-9\]+, \\(integer\\(kind=.\\)\\) parm.\[0-9\]+.data - 
\\(integer\\(kind=.\\)\\) b, a.token, 0\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {foo \(&parm.[0-9]+, &a, &C.[0-9]+, 
caf_token.[0-9]+, \(integer\(kind=.\)\) parm.[0-9]+\.data - 
\(integer\(kind=.\)\) b, (?:NON_LVALUE_EXPR <)?a\.token>?, 0\);} 1 "original" } 
}
 !
diff --git a/gcc/testsuite/gfortran.dg/coarray_lock_7.f90 
b/gcc/testsuite/gfortran.dg/coarray_lock_7.f90
index 4f4bdde856d9..b7b0409c1099 100644
--- a/gcc/testsuite/gfortran.dg/coarray_lock_7.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_lock_7.f90
@@ -29,18 +29,18 @@ end
 
 ! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(1, 2, \\(void 
\\* \\*\\) &caf_token.., \\(void \\*\\) &desc.., 0B, 0B, 0\\);" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(25, 2, \\(void 
\\* \\*\\) &caf_token.., \\(void \\*\\) &desc.., 0B, 0B, 0\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(1, 3, 
&three.token, \\(void \\*\\) &three, &stat.., 0B, 0\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(7, 3, 
&four.token, \\(void \\*\\) &four, &stat.., 0B, 0\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \(1, 3, 
&(?:NON_LVALUE_EXPR <)?three.token>?, \(void \*\) &three, &stat.., 0B, 0\);} 1 
"original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \(7, 3, 
&(?:NON_LVALUE_EXPR <)?four.token>?, \(void \*\) &four, &stat.., 0B, 0\);} 1 
"original" } }
 
 ! { 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 \((?:NON_LVALUE_EXPR 
<)?three.token>?, 0, \(integer\(kind=4\)\) \(5 - (?:NON_LVALUE_EXPR 
<)?three.dim\[0\].lbound>?\), &acquired.[0-9]+, 0B, 0B, 0\);|_gfortran_caf_lock 
\((?:NON_LVALUE_EXPR <)?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 \((?:NON_LVALUE_EXPR 
<)?three.token>?, 0, \(integer\(kind=4\)\) \(8 - (?:NON_LVALUE_EXPR 
<)?three.dim\[0\].lbound>?\), &ii, 0B, 0\);|_gfortran_caf_unlock 
\((?:NON_LVALUE_EXPR <)?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 \((?:NON_LVALUE_EXPR 
<)?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 \((?:NON_LVALUE_EXPR 
<)?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 \((?:NON_LVALUE_EXPR 
<)?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 \((?:NON_LVALUE_EXPR <)?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/coarray_poly_4.f90 
b/gcc/testsuite/gfortran.dg/coarray_poly_4.f90
index ff574c1ef650..22bd1c578a38 100644
--- a/gcc/testsuite/gfortran.dg/coarray_poly_4.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_poly_4.f90
@@ -19,4 +19,4 @@ allocate(var%x[*])
 call sub(var%x)
 end subroutine test
 
-! { dg-final { scan-tree-dump-times "sub \\(\\(real\\(kind=4\\) \\*\\) 
var.x.data, var.x.token, 0\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {sub \(\(real\(kind=4\) \*\) var.x.data, 
(?:NON_LVALUE_EXPR <)?var.x.token>?, 0\);} 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray_poly_5.f90 
b/gcc/testsuite/gfortran.dg/coarray_poly_5.f90
index 8e6142f935df..8c303f0beed6 100644
--- a/gcc/testsuite/gfortran.dg/coarray_poly_5.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_poly_5.f90
@@ -10,4 +10,4 @@ class(t) :: x
 allocate(x%x[*])
 end subroutine test
 
-! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(4, 1, 
&x->_data->x.token, \\(void \\*\\) &x->_data->x, 0B, 0B, 0\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {_gfortran_caf_register \(4, 1, 
&(?:NON_LVALUE_EXPR <)?x->_data->x.token>?, \(void \*\) &x->_data->x, 0B, 0B, 
0\);} 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray_poly_6.f90 
b/gcc/testsuite/gfortran.dg/coarray_poly_6.f90
index 344e12b4eff7..f2f084b9038c 100644
--- a/gcc/testsuite/gfortran.dg/coarray_poly_6.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_poly_6.f90
@@ -18,4 +18,4 @@ end
 ! { dg-final { scan-tree-dump-times "foo \\(struct __class_MAIN___T_0_1t & 
restrict x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\) 
caf_offset..\\)" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "bar \\(struct __class_MAIN___T_0_1t \\* 
restrict x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\) 
caf_offset..\\)" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "bar \\(0B, 0B, 0\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "foo \\(&class.., y._data.token, 
\\(integer\\(kind=\[48\]\\)\\) class..._data.data - 
\\(integer\\(kind=\[48\]\\)\\) y._data.data\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {foo \(&class.., (?:NON_LVALUE_EXPR 
<)?y._data.token>?, \(integer\(kind=[48]\)\) class..._data.data - 
\(integer\(kind=[48]\)\) y._data.data\);} 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray_poly_7.f90 
b/gcc/testsuite/gfortran.dg/coarray_poly_7.f90
index 21a3054f59c9..66fad278953f 100644
--- a/gcc/testsuite/gfortran.dg/coarray_poly_7.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_poly_7.f90
@@ -18,4 +18,4 @@ end
 ! { dg-final { scan-tree-dump-times "foo \\(struct __class_MAIN___T_1_1t & 
restrict x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\) 
caf_offset..\\)" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "bar \\(struct __class_MAIN___T_1_1t \\* 
restrict x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\) 
caf_offset..\\)" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "bar \\(0B, 0B, 0\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "foo \\(&class.\[0-9\]+, y._data.token, 
\\(integer\\(kind=\[48\]\\)\\) class.\[0-9\]+._data.data - 
\\(integer\\(kind=\[48\]\\)\\) y._data.data\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {foo \(&class.[0-9]+, (?:NON_LVALUE_EXPR 
<)?y._data.token>?, \(integer\(kind=[48]\)\) class.[0-9]+._data.data - 
\(integer\(kind=[48]\)\) y._data.data\);} 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray_poly_8.f90 
b/gcc/testsuite/gfortran.dg/coarray_poly_8.f90
index 9ceece419aeb..7b265cfacd22 100644
--- a/gcc/testsuite/gfortran.dg/coarray_poly_8.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_poly_8.f90
@@ -18,4 +18,4 @@ end
 ! { dg-final { scan-tree-dump-times "foo \\(struct __class_MAIN___T_1_1t & 
restrict x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\) 
caf_offset..\\)" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "bar \\(struct __class_MAIN___T_1_1t \\* 
restrict x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\) 
caf_offset..\\)" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "bar \\(0B, 0B, 0\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "foo \\(&class.\[0-9\]+, y._data.token, 
\\(integer\\(kind=\[48\]\\)\\) class.\[0-9\]+._data.data - 
\\(integer\\(kind=\[48\]\\)\\) y._data.data\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times {foo \(&class.[0-9]+, (?:NON_LVALUE_EXPR 
<)?y._data.token>?, \(integer\(kind=[48]\)\) class.[0-9]+._data.data - 
\(integer\(kind=[48]\)\) y._data.data\);} 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/contiguous_3.f90 
b/gcc/testsuite/gfortran.dg/contiguous_3.f90
index ba0ccce8f9ee..05bd785be464 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 edc30fe7291b..d0dea6b5894a 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 {\*(?:SAVE_EXPR <)?\(.*?\) 
&elem\[1\](?:\{lb: 0 sz: 16\})?>? = &\(\*\(integer\(kind=4\)\[0:\] \* 
restrict\) aaa.data\)\[(?:NON_LVALUE_EXPR <)?aaa.offset>? \+ 2\];} 1 "original" 
} }
+! { dg-final { scan-tree-dump-times {\*(?:SAVE_EXPR <)?\(.*?\) &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 {\*(?:SAVE_EXPR <)?\(.*?\) &elem\[4\]>? = 
&\(\*\(integer\(kind=4\)\[0:\] \* restrict\) daaa->data\)\[(?:NON_LVALUE_EXPR 
<)?daaa->offset>? \+ 2\];} 1 "original" } }
+! { dg-final { scan-tree-dump-times {\*(?:SAVE_EXPR <)?\(.*?\) &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 {\*(?:SAVE_EXPR <)?\(.*?\) &elem\[7\]>? = 
&\(\*\(integer\(kind=4\)\[0:\] \* restrict\) doaaa->data\)\[(?:NON_LVALUE_EXPR 
<)?doaaa->offset>? \+ 2\];} 1 "original" } }
+! { dg-final { scan-tree-dump-times {\*(?:SAVE_EXPR <)?\(.*?\) &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 4cbe3d47d021..72c537c5de0e 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 fbac14b1b944..ef1707e67eeb 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 {\*(?:SAVE_EXPR <)?\(.*?\) &elem\[1\]>? = 
&\(\*\(void \*\[0:\] \* restrict\) aaa.data\)\[(?:NON_LVALUE_EXPR 
<)?aaa\.offset>? \+ 2\];} 1 "original" } }
+! { dg-final { scan-tree-dump-times {\*(?:SAVE_EXPR <)?\(.*?\) &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 {\*(?:SAVE_EXPR <)?\(.*?\) &elem\[4\]>? = 
&\(\*\(void \*\[0:\] \* restrict\) daaa->data\)\[(?:NON_LVALUE_EXPR 
<)?daaa->offset>? \+ 2\];} 1 "original" } }
+! { dg-final { scan-tree-dump-times {\*(?:SAVE_EXPR <)?\(.*?\) &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 {\*(?:SAVE_EXPR <)?\(.*?\) &elem\[7\]>? = 
&\(\*\(void \*\[0:\] \* restrict\) doaaa->data\)\[(?:NON_LVALUE_EXPR 
<)?doaaa->offset>? \+ 2\];} 1 "original" } }
+! { dg-final { scan-tree-dump-times {\*(?:SAVE_EXPR <)?\(.*?\) &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,14 @@ 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 afdf9b34d4bc..593296c0a7e6 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" } }

Reply via email to