Warning Messages

Warning messages report legal but suspicious assembly language code. IAS execution and output file production is not disrupted by warnings. These are the warnings IAS may display:


A3100 unexpected usage of tag tag in element

This tag is used in an unexpected way. This can often be corrected by replacing the tag with a label.


A3102 symbol is a symbol and also an alias name

This name is defined as both a symbol and an alias name. The output file contains two different symbols with the same name.


A3103 register register dependency violation with line

The specified line contains a register dependency violation. Try to relocate one of the lines such that this dependency is avoided. Place a stop (;;) between the two dependent elements.


A3105 symbol name defined in a TLS section can't be referenced this way

The specified symbol name must be referenced as an operand of a secrel operator of an addl instruction. See the Intel® Itanium® Architecture Assembly Language Reference Guide for more information.

An example of code that generates this warning:

addl r3 = @gprel(sym), r3

An example of a correct symbol reference:

addl r3 = @secrel(sym), r3


A3106 symbol symbol is undefined

This symbol does not appear in the object file symbol table. A global or weak symbol must be either defined or declared. A local symbol must be defined.


A3200 32-bit relocatable expression in element

The model address size assumption is 32 bits. This does not correspond to the specified element.


A3201 alignment operand of symbol symbol is relation than the size operand

The COFF32 output file format has no symbol alignment field. At link-time, the linker assumes the alignment is equal to the size operand, which is different from the requested alignment.


A3202 alignment is greater than 64, the section alignment is restricted to 64

In COFF32 output file format, the section alignment request cannot exceed 64 bytes. Some linkers might not align sections on boundaries larger than 64 bytes. The actual alignment depends on the linker policy.


A3203 symbol symbol aliased to name does not appear in the object file symbol table

This symbol is not defined. Therefore the .alias directive will have no effect. You can correct this by defining the symbol using a .global, .local or .weak directive.


A3204 integer number does not fit in number bits: number

This number is too big for this instruction. This number may be the result of an internal calculation.


A3205 invalid operand immediate value: value

This immediate value is not valid for this instruction operand. See the Intel® Itanium® Architecture Software Developer’s Manual for more information.

An example of code that generates this error message:

fetchadd4.acq r3 = [r4], 7


A3300 .lcomm/.common directive for defined symbol symbol is ignored

When defining a symbol using an .lcomm or a .common directive, use a relative address definition. You can use a specific location for definition of a local or global symbol. However, when you combine a .lcomm or .common directive with a specific location definition, the specific location is ignored.

An example of specific location definition:

L:
.size L,16

An example of relative location definition:

.lcomm L,16,n
.lcomm L,4,n

In this example the linker chooses the largest size definition.


A3301 .common directive for symbol symbol overrides the local common declaration

This symbol is defined both as local-common (.lcomm) and as common (.common). The .common directive is the overriding definition.


A3302 size setting for undefined symbol: symbol

This symbol is not defined. Therefore, the .size directive will have no effect. You can correct this by defining the symbol using a .global, .local or .weak directive.


A3303 dangerous use of a symbolic address [can exceed number bits]

This symbolic address may exceed this instruction's limit. There are safer options for loading symbolic addresses.

movl r2 = <address>

add r3 = @gprel(symbol), gp
ld8 r4 = [r3]


A3304 Reference to current location in assignment directive may be incorrectly resolved when it appears within open bundle

When using implicit bundling, the specified assignment directive may provide an incorrect value when placed in an open bundle.

An example of code that generates this warning:

nop 5
A = $ + 5


A3305 Bundle was closed to resolve current location reference

This warning is generated in implicit bundling mode when the “current-location” special symbol (“$” or “.”) is referenced in a statement. IAS closes the bundle to resolve the ambiguity.

An example of code that generates this warning:

L::
nop.i 0

.size L, $ - L

To correct the code, put a label or temporary label immediately before the reference to the “current-location” special symbol.


A3306 label is undefined label_name

The label referred to in IAS annotation is undefined. IAS ignores the annotation.


A3307 label is not defined in the current section label_name

The label in IAS annotation is defined in another section. IAS ignores the annotation.

To correct the code, check for syntax errors, or move the annotation to the section with the label.


A3308 annotation is ignored

This type of directive or operands combination is not supported.


A3309 branch target is specified for non-branch instruction

.br.target must appear before a branch instruction.


A3310 branch target is not specified for branch instruction

.br.target does not precede an indirect branch instruction.


A3311 vral directive is ignored. Use -X vral flag

In order to use the virtual register allocation directives, you must specify –X vral in the command line.


A3312 explicit usage of allocatable register register

Explicit use of this register causes IAS to remove it from the set of allocatable registers.


A3313 This predicate relationship is currently ignored

The directive .pred.rel cannot be used with this operand combination.


A3315 Code is present in the non-executable section sec_name

Code in non-executable sections does not execute.


A3316 Directive unwind directive is ignored in the unwind generation mode

Unwind directives are ignored when using the -X unwind command-line option.


A3401 .plabel directive is obsolete. This directive is ignored

You cannot use the .plabel directive any longer. An example of code that generates this warning:

.proc foo
foo::

.plabel foo

.endp

To correct the code, declare the function symbol as either

.proc foo
or

.type

foo, @function


A3403 virtual register has never been defined

You may wish to define the virtual register named in .vreq.undef.


A3410 Unwind generator message in procedure procedure

The static analysis is not complete; IAS may require additional annotations for an indirect branch. This warning may also arise when the procedure code is incompatible with the Itanium® architecture software conventions.