ieee_9.f90: XFAIL on arm*-*-gnueabi[hf].
[official-gcc.git] / gcc / testsuite / gfortran.dg / pr37243.f
blobf2a10a080555d0a818e1d515d09d88d7b7c72d39
1 ! PR rtl-optimization/37243
2 ! { dg-do run }
3 ! { dg-options "-std=legacy" }
4 ! { dg-add-options ieee }
5 ! Check if register allocator handles IR flattening correctly.
6 SUBROUTINE SCHMD(V,M,N,LDV)
7 IMPLICIT DOUBLE PRECISION(A-H,O-Z)
8 LOGICAL GOPARR,DSKWRK,MASWRK
9 DIMENSION V(LDV,N)
10 COMMON /IOFILE/ IR,IW,IP,IS,IPK,IDAF,NAV,IODA(400)
11 COMMON /PAR / ME,MASTER,NPROC,IBTYP,IPTIM,GOPARR,DSKWRK,MASWRK
12 PARAMETER (ZERO=0.0D+00, ONE=1.0D+00, TOL=1.0D-10)
13 IF (M .EQ. 0) GO TO 180
14 DO 160 I = 1,M
15 DUMI = ZERO
16 DO 100 K = 1,N
17 100 DUMI = DUMI+V(K,I)*V(K,I)
18 DUMI = ONE/ SQRT(DUMI)
19 DO 120 K = 1,N
20 120 V(K,I) = V(K,I)*DUMI
21 IF (I .EQ. M) GO TO 160
22 I1 = I+1
23 DO 140 J = I1,M
24 DUM = -DDOT(N,V(1,J),1,V(1,I),1)
25 CALL DAXPY(N,DUM,V(1,I),1,V(1,J),1)
26 140 CONTINUE
27 160 CONTINUE
28 IF (M .EQ. N) RETURN
29 180 CONTINUE
30 I = M
31 J = 0
32 200 I0 = I
33 I = I+1
34 IF (I .GT. N) RETURN
35 220 J = J+1
36 IF (J .GT. N) GO TO 320
37 DO 240 K = 1,N
38 240 V(K,I) = ZERO
39 CALL DAXPY(N,DUM,V(1,I),1,V(1,I),1)
40 260 CONTINUE
41 DUMI = ZERO
42 DO 280 K = 1,N
43 280 DUMI = DUMI+V(K,I)*V(K,I)
44 IF ( ABS(DUMI) .LT. TOL) GO TO 220
45 DO 300 K = 1,N
46 300 V(K,I) = V(K,I)*DUMI
47 GO TO 200
48 320 END
49 program main
50 DOUBLE PRECISION V
51 DIMENSION V(18, 18)
52 common // v
54 call schmd(V, 1, 18, 18)
55 end
57 subroutine DAXPY(N,D,V,M,W,L)
58 INTEGER :: N, M, L
59 DOUBLE PRECISION D, V(1,1), W(1,1)
60 end
62 FUNCTION DDOT (N,V,M,W,L)
63 INTEGER :: N, M, L
64 DOUBLE PRECISION DDOT, V(1,1), W(1,1)
65 DDOT = 1
66 end