bill@ur-cvsvax.UUCP (Bill Vaughn) (07/21/85)
I haven't seen any bug fixes to f77 since we've installed Don Seeley's version late last year. Pardon me if I've missed this one. Description: The f77 VAX code generator creates illegal instructions ("cvtll") whenever the target of an 'assign' statement is an integer*2 variable. Repeat-by: Run the following program through the f77 compiler: integer*2 i assign 10 to i goto i 10 continue end The assembler reports an error of this form: Assembler: "/tmp/fortxxxxx.s", line 21: "cvtll" is not followed by a ':' for a label definition Fix: 1. Don't use integer*2 variables as targets of 'assign' statements. 2. Wait for someone to post a fix to the f77 VAX code generator. Bill Vaughn Univ. of Rochester {allegra,seismo,decvax}!rochester!ur-cvsvax!bill
woods@hao.UUCP (Greg Woods) (07/21/85)
> I haven't seen any bug fixes to f77 since we've installed Don Seeley's version > late last year. Pardon me if I've missed this one. > > Description: > The f77 VAX code generator creates illegal instructions ("cvtll") > whenever the target of an 'assign' statement is an integer*2 > variable. Well, you must have missed one of the bug fixes, because your test program compiles, assembles and links just fine on our 11/750. I even tried a more complicated program to verify correct operation of the assign statement. --Greg -- {ucbvax!hplabs | allegra!nbires | decvax!noao | harpo!seismo | ihnp4!noao} !hao!woods CSNET: woods@NCAR ARPA: woods%ncar@CSNET-RELAY
gwyn@brl-smoke.ARPA (Doug Gwyn ) (05/15/86)
Posted back in mid-1985: > Description: > The f77 VAX code generator creates illegal instructions ("cvtll") > whenever the target of an 'assign' statement is an integer*2 > variable. > > Repeat-by: > Run the following program through the f77 compiler: > > integer*2 i > assign 10 to i > goto i > 10 continue > end I just got around to looking at this problem, originally reported for VAX 4.2BSD f77, using the VAX SVR2 f77. It has a similar problem, not in the code generator, but in the optimizer (/lib/c2). The optimizer removes the labeled "ret" that is the target of the goto, because it doesn't realize that the CVTLW (of the label into a variable which is then indirectly jumped through for the goto) is a label reference. The CVTLL seems to be a Berkeley special.. ASSIGN moves a label, NOT an integer, into the assign variable, which for that reason must not be an INTEGER*2. The compiler should, however, have warned about this user error.