Accelerator Manual (G06.24+, H06.03+)

Error, Warning, and Note Messages
Accelerator Manual527303-002
9-12
Warning Messages
Effect. If the named procedure references the condition codes before performing some
work that would reset them, then the accelerated code is incorrect. The Accelerator did
not propagate the value stored in the condition codes from the calling procedure to the
named procedure.
Recovery. Ignore this warning for non-TAL procedures. If the named TAL procedure
inherits condition codes from its calling procedure, then specify the InheritsCC_ON
option for the procedure and accelerate the program again.
This message can be spurious if the first line of a procedure calls an external
procedure and the Accelerator cannot determine the return value size of the external
procedure because the external procedure is in a user library that has not been
accelerated and specified in a UserLib option. Specify a UserLib option to eliminate
this warning and to generate more efficient code.
34
Cause. The Accelerator assumes that procedures do not reference registers in the
TNS register stack before resetting them. The Accelerator found a procedure that
references a register before it resets it. A procedure that references a register before it
resets it is said to “inherit a register” because the value in the referenced register must
have been inherited from a calling procedure.
For TAL programs, the USE, STACK, and CODE statements can be used to write
procedures that inherit registers.
For non-TAL programs, it is not possible to write code that explicitly inherits registers.
The accelerated code is correct, with one exception for C programs. In versions of the
C30 C compiler released before 01DEC90, the C run-time library function
CLIB^EXTFNAME^TO^INTFNAME contained an uninitialized register variable.
The following conditions can cause a spurious Warning 34. The accelerated code is
correct, so you can safely ignore the warning in these cases:
1. The Accelerator guesses an incorrect RP value (as reported by a note message).
2. An InheritsR0 through InheritsR7 option was specified for a procedure that does
not really inherit registers.
3. A procedure makes a call to Debug.
Effect. If the named procedure does not reference registers looking for values set by a
calling procedure, then the accelerated code is correct. If the named procedure
references registers and expects them to contain values set by a calling procedure (it
inherits a register), then the accelerated code is incorrect. The Accelerator did not
propagate the value stored in the register from the calling procedure to the named
procedure.
Warning 34: The following procedures unexpectedly inherit
registers: '<proc name>' at offsets(s): <address>