summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/character_comparison_4.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/character_comparison_4.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/character_comparison_4.f9039
1 files changed, 39 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/character_comparison_4.f90 b/gcc/testsuite/gfortran.dg/character_comparison_4.f90
new file mode 100644
index 000000000..1ff8b4707
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/character_comparison_4.f90
@@ -0,0 +1,39 @@
+! { dg-do run }
+! { dg-options "-O -fdump-tree-original" }
+program main
+ implicit none
+ character(len=4) :: c, d
+ integer :: n
+ integer :: i
+ common /foo/ i
+
+ n = 0
+ i = 0
+ c = 'abcd'
+ d = 'efgh'
+
+ n = n + 1 ; if ('a' // c == 'a' // c) call yes
+ n = n + 1 ; if (c // 'a' == c // 'a') call yes
+ n = n + 1; if ('b' // c > 'a' // d) call yes
+ n = n + 1; if (c // 'b' > c // 'a') call yes
+
+ if ('a' // c /= 'a' // c) call abort
+ if ('a' // c // 'b' == 'a' // c // 'a') call abort
+ if ('b' // c == 'a' // c) call abort
+ if (c // 'a' == c // 'b') call abort
+ if (c // 'a ' /= c // 'a') call abort
+ if (c // 'b' /= c // 'b ') call abort
+
+ if (n /= i) call abort
+end program main
+
+subroutine yes
+ implicit none
+ common /foo/ i
+ integer :: i
+ i = i + 1
+end subroutine yes
+
+! { dg-final { scan-tree-dump-times "gfortran_compare_string" 0 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
+