Title: | Porting to Alpha AXP |
Notice: | http://www.partner.digital.com/www-swdev/ |
Moderator: | HDLITE::SCHAFER |
Created: | Tue Jan 21 1992 |
Last Modified: | Mon Apr 21 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 671 |
Total number of notes: | 3191 |
We have ported a large Macro application to the Alpha running OpenVMS 6.2 using the Macro-32 compiler. We have 5 programs which are generating a INSFREEREG error (insufficient free registers). The error is generated in a different section of code in each program. We are using the following compile command on the programs: MACRO - /NODIAG - /NOLIST - /MIGRATE - /OBJECT=MASTER5 - /UNALIGN - /WARN=NOINFO - SYS$LIBRARY:ARCH_DEFS.MAR + []MASTER5.MAR We've tried using the OPTIMZE=VAXREGS option. In some cases this eliminates the INSFREEREG error, but it also causes the error to appear in other programs where it was not previously present. We are in a situation where we need to use the same compile command for all modules. We reported the problem to Digital via the ASAP organization 4 weeks ago. They have confirmed that the problem is a Macro-32 compiler problem, but have been unable to offer a work-around, patch, or solution. Has anyone out there run into this error, and if so, how did you get around it? We can provide code examples which generate the error and have done so for Digital. Be advised the modules are rather large. Thanks, Bruce C. MSI
T.R | Title | User | Personal Name | Date | Lines |
---|---|---|---|---|---|
671.1 | 7388::SCHAFER | Mark Schafer, SPE MRO | Mon Apr 14 1997 11:57 | 5 | |
It was logged with the CSC sequence number 6970327-5502 as level urgent on March 28. Mark Schafer SPE MRO | |||||
671.2 | Qualifier Trials | ISVNET::MSI | Moving Software From Todays Systems to Tomorrows | Mon Apr 14 1997 18:07 | 5 |
We have tried using the /OPTIMIZE=NOADDRESS, /OPTIMIZE=NOREFERENCE, and /NOOPTIMIZE qualifiers, all without success. Using the /OPTIMIZE=VAXREG qualifer eliminates the INSFREEREG error in some programs, but causes MACRO-32 the compiler to generate it in other programs which had been compiling clean. | |||||
671.3 | Workaround | ISVNET::MSI | Moving Software From Todays Systems to Tomorrows | Wed Apr 16 1997 18:26 | 47 |
Engineering suggested via the ASAP Support Group using the /NOTIE compile qualifier to get around the INSFREEREG compilation error. The limitation here is that the compiled code cannot then be linked with vested or translated images. Using the /NOTIE qualifier elminated the INSFREEREG compilation problem. However, it caused an intermitent runtime problem when executing a CALLS instruction to a program referenced by address. i.e. CALLS #0006, @A00005 . . . .ADDRESS _PROG3A We were able to work around this problem by adding a .ALIGN LONG instruction in front of the .ADDRESS declaration and by adding the /OPTIMIZE=NOADDRESS qualifier to the compile command. i.e. CALLS #0006, @A00005 . . . .ALIGN LONG .ADDRESS _PROG3A Compile Command: MACRO - /NODIAG - /NOLIST - /MIGRATE - /OBJECT=[]MASTER3.OBJ - /OPTIMIZE=NOADDRESS - /NOTIE - /UNALIGN - /WARN=NOINFO - SYS$LIBRARY:ARCH_DEFS.MAR + []MASTER3.MAR Just adding the .ALIGN LONG did not resolve the problem. It looks like in some cases the .ADDRESS is being optimized out of existance. In the case of MASTER3, the CALLS example above is executed three times. When address optimization is enabled, two out of the three calls fail. One still works. Go figure. Bruce C. MSI |