1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
* Date: Wed, 25 Jun 1997 12:48:26 +0200 (MET DST)
* MIME-Version: 1.0
* From: R.Hooft@EuroMail.com (Rob Hooft)
* To: g77-alpha@gnu.ai.mit.edu
* Subject: Re: testing 970624.
* In-Reply-To: <199706251027.GAA07892@churchy.gnu.ai.mit.edu>
* References: <199706251018.MAA21538@nu>
* <199706251027.GAA07892@churchy.gnu.ai.mit.edu>
* X-Mailer: VM 6.30 under Emacs 19.34.1
* Content-Type: text/plain; charset=US-ASCII
*
* >>>>> "CB" == Craig Burley <burley@gnu.ai.mit.edu> writes:
*
* CB> but OTOH I'd like to see more problems like this on other
* CB> applications, and especially other systems
*
* How about this one: An application that prints "112." on all
* compilers/platforms I have tested, except with the new g77 on ALPHA (I
* don't have the new g77 on any other platform here to test)?
*
* Application Appended. Source code courtesy of my boss.....
* Disclaimer: I do not know the right answer, or even whether there is a
* single right answer.....
*
* Regards,
* --
* ===== R.Hooft@EuroMail.com http://www.Sander.EMBL-Heidelberg.DE/rob/ ==
* ==== In need of protein modeling? http://www.Sander.EMBL-Heidelberg.DE/whatif/
* Validation of protein structures? http://biotech.EMBL-Heidelberg.DE:8400/ ====
* == PGPid 0xFA19277D == Use Linux! Free Software Rules The World! =============
*
* nu[152]for% cat humor.f
PROGRAM SUBROUTINE
LOGICAL ELSE IF
INTEGER REAL, GO TO PROGRAM, WHILE, THEN, END DO
REAL FORMAT(2)
DATA IF,REAL,END DO,WHILE,FORMAT(2),I2/2,6,7,1,112.,1/
DO THEN=1, END DO, WHILE
CALL = END DO - IF
PROGRAM = THEN - IF
ELSE IF = THEN .GT. IF
IF (THEN.GT.REAL) THEN
CALL FUNCTION PROGRAM (ELSE IF, GO TO PROGRAM, THEN) ! { dg-error "Type mismatch in argument" }
ELSE IF (ELSE IF) THEN
REAL = THEN + END DO
END IF
END DO
10 FORMAT(I2/I2) = WHILE*REAL*THEN
IF (FORMAT(I2) .NE. FORMAT(I2+I2)) CALL ABORT
END ! DO
SUBROUTINE FUNCTION PROGRAM (REAL,INTEGER, LOGICAL)
LOGICAL REAL
REAL LOGICAL
INTEGER INTEGER, STOP, RETURN, GO TO
ASSIGN 9 TO STOP ! { dg-warning "ASSIGN" "" }
ASSIGN = 9 + LOGICAL
ASSIGN 7 TO RETURN ! { dg-warning "ASSIGN" "" }
ASSIGN 9 TO GO TO ! { dg-warning "ASSIGN" "" }
GO TO = 5
STOP = 8
IF (.NOT.REAL) GOTO STOP ! { dg-warning "Assigned GOTO" "" }
IF (LOGICAL.GT.INTEGER) THEN
IF = LOGICAL +5
IF (LOGICAL.EQ.5) ASSIGN 5 TO IF ! { dg-warning "ASSIGN" "" }
INTEGER=IF
ELSE
IF (ASSIGN.GT.STOP) ASSIGN 9 TO GOTO ! { dg-warning "ASSIGN" "" }
ELSE = GO TO
END IF = ELSE + GO TO
IF (.NOT.REAL.AND.GOTO.GT.ELSE) GOTO RETURN ! { dg-warning "Assigned GOTO" "" }
END IF
5 CONTINUE
7 LOGICAL=LOGICAL+STOP
9 RETURN
END ! IF
* nu[153]for% f77 humor.f
* nu[154]for% ./a.out
* 112.0000
* nu[155]for% f90 humor.f
* nu[156]for% ./a.out
* 112.0000
* nu[157]for% g77 humor.f
* nu[158]for% ./a.out
* 40.
|