[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference isvhub::alpha_vms

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

671.0. "INSFREEREG error - Macro-32" by ISVNET::MSI (Moving Software From Todays Systems to Tomorrows) Sat Apr 12 1997 11:56

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.RTitleUserPersonal
Name
DateLines
671.17388::SCHAFERMark Schafer, SPE MROMon Apr 14 1997 11:575
    It was logged with the CSC sequence number 6970327-5502
    as level urgent on March 28.
    
    Mark Schafer
    SPE MRO
671.2Qualifier TrialsISVNET::MSIMoving Software From Todays Systems to TomorrowsMon Apr 14 1997 18:075
    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.3WorkaroundISVNET::MSIMoving Software From Todays Systems to TomorrowsWed Apr 16 1997 18:2647
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