summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/array_section_2.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/array_section_2.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/array_section_2.f9016
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/array_section_2.f90 b/gcc/testsuite/gfortran.dg/array_section_2.f90
new file mode 100644
index 000000000..ed5208cf3
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/array_section_2.f90
@@ -0,0 +1,16 @@
+! { dg-do compile }
+! { dg-options "-fdump-tree-original" }
+!
+! PR38033 - size(a) was not stabilized correctly and so the expression was
+! evaluated twice outside the loop and then within the scalarization loops.
+!
+! Contributed by Thomas Bruel <tmbdev@gmail.com>
+!
+program test
+ integer, parameter :: n = 100
+ real, pointer :: a(:),temp(:) ! pointer or allocatable have the same effect
+ allocate(a(n), temp(n))
+ temp(1:size(a)) = a
+end program
+! { dg-final { scan-tree-dump-times "MAX_EXPR\[^\n\t\]+ubound\[^\n\t\]+lbound" 1 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }