Diagnostic messages include numbered and unnumbered messages that are produced during the three phases of the compiler. All lexical and syntax diagnostics are produced by phase 1 of the compiler, and code generation diagnostics are produced by phase 2. Messages containing the text CXERR are compiler internal errors and are not described in this chapter.
The Cross-Platform Compiler return codes, unlike those of the mainframe
compiler, have been chosen to be compatible with traditional UNIX program
development tools such as make
.
If the return code is a nonzero
integer, an error occurred; if it is zero, no error occurred.
Cross-platform warning messages do not affect the return code. If the
-mrc
option is specified, the return code is the same as would be
found on the mainframe.
Message levels ERROR and WARNING can be
controlled by compiler options. For example, the enforce
(SAS/C
mainframe Compiler) option or -w~n
(SAS/C Cross-Platform Compiler) option
can be used to turn any WARNING into an ERROR. Similarly, the suppress
or -wn
option can be used to make any phase 1 WARNING
disappear. This chapter describes the default message level (that is,
no options affect the message level).
When the compiler detects an error in an input file, it generates a diagnostic for numbered messages in the following form:
[message num] Error in [file] at line [line num] before column [col num] : [text]where
#include
file.
suppress
or -w
n option cannot be
used to ignore phase 2 error and warning messages.
suppress
or -w
n option
cannot be used to ignore these error and warning messages.
Note: The LSCC prefix that appears when a diagnostic message is generated has been omitted in the following descriptions. Additionally, SAS/C Compiler and SAS/C Cross-Platform messages are not always identical, so the exceptions are noted in the explanatory text.
ERROR/WARNING: Invalid preprocessor command.
sizeof
keyword or any cast expression in a
#if
command is used. Such uses are non-ISO/ANSI.
ERROR: Unexpected end of file.
#include
file or the original source file. In many
cases, correcting a previous error eliminates this
error.
ERROR: File not found [filename].
#include
command
was not found.
ERROR: Invalid lexical token.
ERROR: Invalid macro usage: [macro]
#define
macro was used with the
wrong number of arguments.
ERROR: Buffer overflow:expansion buffer.
#define
macro caused the compiler's expansion
buffer to overflow. This error may occur if more than one lengthy macro
appears on a single input line, or if a macro call is ill-formed by
having too few right parentheses. In the following example, if MAC
is a macro taking two arguments and a right parenthesis is omitted
in its call, the preprocessor will continue past the semicolon,
believing that it is still gathering arguments for the macro:
MAC(f(1),f(2);Although there is no fixed buffer size, an expansion that requires more space than the longest logical line occurring thus far in the compilation may cause buffer overflow. This error rarely occurs.
ERROR: #include nesting level exceeded.
#include
file nesting was exceeded;
the
compiler supports #include
nesting to a maximum depth of 16.
ERROR: Invalid conversion.
ERROR: Undefined identifier [symbol].
int
(which may cause other errors).
ERROR: Invalid subscript expression.
ERROR: String too large or not terminated.
ERROR: Invalid structure reference.
.
) or ( {tf:spmath {ndx 80} })
structure reference operator was not recognized by the compiler as a
structure or pointer to a structure.
ERROR: Member name missing.
.
) or
( {tf:spmath {ndx 80} }) operator.
ERROR: Undefined member [symbol]
.
.
) or ( {tf:spmath {ndx 80} })
referred.
ERROR: Invalid function call.
(
function call operator
was not implicitly or explicitly declared as a function.
ERROR: Invalid function argument.
(
function call operator. This error may occur if an argument
expression is omitted as in the following:
f(; f(.); f(,1);
ERROR: Too many operands.
ERROR: Unresolved operator.
ERROR: Unbalanced parentheses.
ERROR: Invalid constant expression.
ERROR: Illegal use of aggregate.
WARNING: Floating point value assigned to shorter type.
enforce
option (or cross-platform
-w~
n option) is specified.
ERROR: Invalid use of conditional operator.
?
) operator
is present, but the colon (:
) is not found where expected.
ERROR: Pointer operand required.
ERROR: Modifiable lvalue required.
const
) is a modifiable lvalue. This error may occur if
the expression following &
is not a modifiable lvalue or if the
left side of an assignment expression is not a modifiable lvalue. Note
that a cast does not yield a modifiable lvalue.
ERROR: Arithmetic operand required.
ERROR: Arithmetic or pointer operand required.
ERROR: Missing operand.
ERROR: Invalid pointer operation.
X
was never defined:
struct X *p; . . . p++;
WARNING: Pointers do not point to same type of object.
=
) operator did not
evaluate to a pointer of the same type as the assigned or NULLpointer variable.
The warning also occurs when a pointer of any type is assigned
to an arithmetic object.
The same message is generated as an ERROR
when
an expression initializes a pointer to an
int
(or vice versa), or during a pointer comparison operation.
ERROR: Integral operand required.
char
, int
, short
,
long
, unsigned char
, unsigned int
, unsigned short
, or unsigned long
.
ERROR: Invalid conversion specified.
ERROR: Illegal initializer expression.
extern
variable that has been
declared in function (or inner block) scope, as this example
illustrates:
func() extern int count = 0; . . .
ERROR: Invalid initializer expression.
char a [10] = 0; char b [3] = 1 2 3;
ERROR: Closing brace expected.
WARNING: Control cannot reach this statement.
return
, continue
, or goto
precipitating an unconditional
transfer of control; code within a switch block that was not reachable via a
case or default statement.
ERROR: Duplicate statement label [symbol]
.
ERROR: Unbalanced braces.
{
) and closing right braces (}
) was not equal.
The compiler may have been out of phase because of a previous
error.
ERROR: Invalid use of keyword [symbol]
.
ERROR: Break not inside loop or switch.
break
statement was detected that was not within
the scope of a while
, do
, for
, or
switch
statement. This error
may be caused by an error in a preceding statement.
ERROR: Case not inside switch.
case
prefix was encountered outside the scope of
a switch
statement. This error
may be caused by an error in a preceding statement.
ERROR: Invalid case expression.
case
value did not
evaluate to an integral constant.
ERROR: Duplicate case value.
case
prefix was encountered that defined a
constant value already used in a previous case
prefix
within the same switch
statement.
ERROR: Continue not inside loop.
continue
statement was detected that was not
within the scope of a while
, do
, or for
loop.
This message may be caused by an error in a preceding
statement.
ERROR: Default not inside switch.
default
prefix was encountered outside the scope
of a switch
statement. This message may be caused by an error
in a preceding statement.
ERROR: More than one default.
default
prefix within the scope
of a switch
statement that already contained a default
prefix.
ERROR: While missing from do statement.
while
clause was expected but not found after the body of a
do
statement. This message may
be caused by an error within the body of the
do
statement.
ERROR: Invalid while expression.
while
or do
loop was NULL (not present).
Indefinite loops must supply a constant, such as 1, if that is
what is intended.
ERROR: Else not associated with if.
else
keyword was detected that was not within
the scope of a preceding if
statement. This message
may be caused by an error in a preceding statement.
ERROR: label missing from goto.
goto
keyword was
expected but not found.
This message may be caused by an error in a preceding statement.
ERROR: Invalid if expression.
if
keyword was not present.
ERROR: Invalid return expression.
return
keyword could
not be converted to the type of the value returned
by the function.
ERROR: Invalid switch expression.
switch
statement could not be converted to an
integral type.
WARNING: No case values for switch statement.
switch
statement
did not contain at least one case
prefix.
ERROR: Colon expected.
:
), but did not find one. This
error may be generated if a case
expression is improperly
specified or if the colon was omitted following a label or prefix to a
statement.
ERROR: Semi-colon expected.
;
). Typically, the compiler
completed the processing of a statement but did not find
the statement terminator. This error may be caused by too
many closing parentheses, too few closing braces, or a statement
that is otherwise formed incorrectly.
ERROR: Missing parentheses.
while
or for
keyword. This error
may also occur if a parenthesized expression is incorrectly specified,
causing the compiler to end the expression early.
ERROR: Invalid storage class.
auto
or register
. This
message may be generated if previous errors have caused the compiler
to misinterpret statements within a function as file-scope
declarations.
ERROR: Incompatible aggregate types.
ERROR/WARNING: Undefined structure/union tag [symbol]
.
strict
option
(or cross-platform -W1,-ll
option) is used.
ERROR: Structure/union type mismatch.
ERROR/WARNING: Duplicate declaration of item [symbol].
__actual
declarations of an
__inline
function are encountered.
ERROR: Structure contains no members.
ERROR: Invalid function definition.
WARNING: Invalid array limit expression.
ERROR: Illegal object.
ERROR: Illegal object for structure.
ERROR: Structure includes instance of self.
*
) is forgotten on a structure pointer declaration
or if (due to some intertwining of structure definitions) the structure
actually contains an instance of itself.
ERROR: Formal declaration error [symbol]
.
ERROR/WARNING: Conflict with prior declaration of external: [symbol].
int
function returns
some other kind of value. Functions that return a value other than
int
must be declared before they are used so that the compiler
is aware of the type of the function value.
This message is issued as a warning if the type mismatch is harmless,
for example, int/long
, const/volatile
, or
char/unsigned char
. The message is issued as an error if the
mismatch is harmful.
ERROR: Declaration expected.
WARNING: Initializer data truncated.
char
or wchar_t
was initialized from a
string literal, but the literal contained more characters (not including
the ending null character) than the size of the array. The excess characters
were discarded.
ERROR: Invalid sizeof expression.
sizeof
.
This message also may be generated if
an attempt is made to take the size of a structure via
a tag that has not been defined, or if an attempt is made
to take the size of a function, bitfield, or incomplete type.
ERROR: Left brace expected.
ERROR: Identifier expected.
ERROR: Undefined statement label [symbol]
.
goto
statement
referred to a statement label but the compiler
could not find the definition of the label.
WARNING: Duplicate enumeration value.
ERROR: Invalid bitfield.
int
)
ERROR: Preprocessor limit exceeded.
ERROR: Maximum object/storage size exceeded.
WARNING: Reference beyond object size.
ERROR/WARNING: Redefinition of preprocessor symbol [symbol]
.
#define
statement for an already-defined
symbol. The symbol and the new statement specified a different replacement text
(that is, it was a nonbenign redefinition).
A warning is issued unless the redef
compiler option
(or cross-platform -W1,-cr
option) is
specified. In that case, the previous declaration is stacked and
reappears when a #undef
statement for the symbol appears. The
warning message is suppressed unless the enforce
or strict
option (or cross-platform -w~n
or -W1,-ll
option) is specified.
WARNING: Return value mismatch for function value [symbol]
.
WARNING: Formal definitions conflict with type list.
WARNING: Argument count incorrect.
WARNING: Argument type incorrect.
char
to int
, is needed.
WARNING: Constant converted to required type.
ERROR: Invalid argument type specifier.
void
).
ERROR: Illegal void operand.
void
operand was found in a context where a value is required.
WARNING: Statement has no effect.
x+2;Although this statement is a valid C statement, it may not be what the programmer intended to write.
WARNING: No reference to identifier [symbol]
.
auto
variable named in the message was declared but never
used. Although this is valid C, it may not be what the programmer
intended. Perhaps another variable was used where this one should have
been used.
WARNING: Uninitialized auto variable [symbol]
.
auto
variable appeared to be used before it
was assigned a value. This message may be generated for correct code,
if at execution time non-sequential execution (possibly using goto
or for
statements) would cause the variable to be
initialized before any use. Note that if the variable is inspected
before it is initialized, its value is undefined.
Although uninitialized variables often, by chance, have the
value 0, this is not (for auto
variables) guaranteed by the
ANSI/ISO Standard language definition. Changing the program or moving the program
to another system can change the value and cause undefined program
behavior.
WARNING: Symbol previously mapped.
#pragma map
statement has already
been mapped by a previous #pragma map
statement. The first
#pragma map
statement takes precedence.
WARNING: New pragma map symbol longer than 8 characters; truncated.
WARNING: Mapped name may conflict with other compiler-generated names.
ERROR: Attempt to change a const lvalue.
const
cannot be
changed. Either the program uses the identifier incorrectly, or the
const
type qualifier should be removed from the declaration.
WARNING: No prototype declared for function [symbol]
.
reqproto
option
(or cross-platform -W1,-cf
option) is in
effect. No prototype is in scope for the function at the time that
a call is made to the function.
ERROR: Redundant keywords in declaration.
xyz
is declared as long long xyz
.
ERROR: Conflicting keywords in declaration.
short long xyz
contains conflicting type
specifiers. The declaration extern static xyz
contains
conflicting storage-class specifiers.
WARNING: Uninitialized constant [symbol]
.
auto
or register const
variable was not initialized.
Constant values should be initialized at compile time since they cannot
be changed at execution time, and their values will be unpredictable
if they are not initialized.
WARNING: Conversion from pointer to const/volatile to pointer to non-const/volatile.
const
object to
a pointer to a non-const
object, or from a pointer to a
volatile
object to a pointer to a non-volatile
object.
If a pointer to non-const
is used to modify an object
declared as const
, a protection exception or other
incorrect results may occur. If a pointer to non-volatile
is used to access an object declared as volatile
, the results
are unpredictable.
WARNING: Function prototype not allowed for non-C function (except Assembler).
__fortran
, __cobol
, etc.
ERROR: Too many initializers.
ERROR: Invalid use of type name or keyword.
typedef
name or
keyword where an identifier or lvalue was expected.
ERROR: Execution terminated.
char
literal.
WARNING: External name longer than 8 characters [symbol]
.
extname
option
is specified.
WARNING: Extraneous information in include file name: [symbol].
#include [filename] [name.ext].
WARNING: Unable to open specified file, will attempt to include [filename].
#include "[name.h]"
.
It attempts to recover by opening the file as if it had
been specified by #include <name.h>
.
ERROR: Floating point constant out of machine range.
ERROR: Invalid record size (>1024 bytes).
ERROR/WARNING: Undefined enum tag [symbol]
.
enum
tag was not previously defined.
The message is issued as an error if an attempt is made to define
an enumeration by means of the undefined tag. Declarations that
are not definitions cause the message to be issued as a warning.
ERROR: Enum contains no members.
enum
type did not define at least one
enumeration constant.
ERROR: Conflicting use of enum/struct/union tag [symbol]
.
struct
,
union
or enum
) within a scope, and then referenced as
another sort. Usage of the tag must be consistent within its scope.
ERROR: Identifiers missing from definition of function
[symbol]
.
WARNING: Hex/octal constant too large (high bits are lost).
char
object. The compiler ignores all
but the last eight bits in the constant. For example, if the constant
x1234
is specified, the warning is issued and the
constant is treated as equivalent to x34
. The prefix
L
may be employed to specify a wide character constant as in
L'x12x34'
.
WARNING: Missing ellipsis.
...
), which
indicates that unspecified parameters may follow the last declared
parameter, is missing.
ERROR: Invalid number.
This message can also be generated if a number beginning
with a 0 contains an invalid octal digit, for example 08
.
WARNING: #endif, #else, or #elif out of order.
#endif
directive was read with no
previous unmatched #if
or #ifdef
.
ERROR: Operand to # operator must be a macro argument.
#error
directive was
encountered by the preprocessor. The text of the message is
specified by the #error
directive.
ERROR: Ambiguous member [symbol]
.
ERROR: Invalid or unsupported use of at-sign operator.
@
operator only can be used in the argument list of
a function call.
WARNING: Extra tokens after valid preprocessor directive.
ERROR: Cannot redefine macro [symbol]
.
__LINE__
, __FILE__
,
__STDC__
, __DATE__
, and
__TIME__
macro names cannot be used in a #define
or #undef
preprocessor directive.
ERROR: Too many arguments
ERROR: Invalid use of register keyword.
register
storage class specifier can be used only in the
declaration of a formal parameter or auto
variable for
integer, floating-point, and pointer types.
WARNING: Missing #endif.
#endif
preprocessor directive to
terminate a previous #if
or #ifdef
directive.
WARNING: Sizeof operator used on array that has been converted to pointer.
sizeof
operator is applied to a formal array, the return
value is the size of the pointer, not the size of the array.
ERROR/WARNING: Array size never given for [symbol]
.
ERROR: Object has no address
.
register
variables and bitfields cannot have their
addresses taken.
ERROR: Combined storage for strings and constants exceeds maximum.
const-
qualified objects exceeds 2 gigabytes.
WARNING: #include file name or suffix truncated to 8 characters.
#include
preprocessing directive exceeded eight characters
in length. The name is truncated on the right.
WARNING: Conversion between function and data pointers.
WARNING: Use of incomplete struct/union/enum tag [symbol]
.
strict
option is used.
WARNING: Undefined struct/union/enum tag in prototype scope [symbol]
.
struct
, union
, and enum
tags
that are used in a function prototype should be defined before the
prototype.
ERROR: Conversion to different struct | union | enum type.
ERROR: Cannot define function via typedef name.
typedef int FNC(void); FNC f {/* ... */}
WARNING: No prototype declared for function pointer.
reqproto
option
(or cross-platform -W1,-cf
option) is used.
WARNING: No statement after label.
;
) after the label.
switch(i) { . . . default: ; }
WARNING: Operation/comparison of pointer to int and pointer to [type].
int
may not be compared with or assigned to variables of
type pointer to short
or pointer to long
. The compiler
flags the statement as a possible portability problem.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
ERROR: Invalid type name [symbol]
.
offsetof
macro
is used incorrectly. This macro requires a structure
type name as its first argument.
WARNING: Use of unary minus on unsigned value [symbol]
.
unsigned
types cannot have a negative value. Examine the program to ensure that
the operator will have its intended effect.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: No prototype declared at definition for function [symbol]
.
reqproto
option
(or cross-platform -W1,-cf
option)
is used.
WARNING: Non-ANSI use of ellipsis punctuator.
...
) used in a way other than
as defined by the ANSI/ISO Standard. The Standard allows an ellipsis
only in a function declaration to indicate that the function accepts a
variable argument list. It also requires that a prototype contain at least
one parameter, and a function may take one or more
arguments but not zero arguments.
This compiler supports the following non-standard construction, which
indicates that func
is a function returning an int
that takes zero or more arguments:
int func(...)However, in such cases, this warning is issued to point out the divergence from standard use.
WARNING: Use of narrow type in prototype.
char
, short
, or float
was specified in a prototype. Such arguments
will not be widened in a function call. Because the behavior will be
different in a context where no prototype is in scope, this message
indicates a potential problem if all uses of the function are not
within scope of a prototype.
ERROR: Unrecoverable error or too many errors -- terminating the compilation.
ERROR: This function type should not be defined in C: [type]
.
__asm
function prefix may only appear in function
declarations which are not definitions.
WARNING: Assignment of long to [symbol]
.
long
is assigned to a short
or int
.
It is intended to warn of possible truncation and
portability problems.
WARNING: Incompatible operands of conditional operator.
?
) do not agree. Use casts to ensure that the types match.
WARNING: Overflow during operation on constants.
ERROR: Structure qualifiers do not match previous declarations of structure [symbol]
.
__alignmem
or __noalignmem
keywords in the named
structure declaration did not match a previous declaration of the same
tag.
WARNING: Implicitly promoted formal conflicts with prototype.
char
, short
or float
). The function definition was not in prototype format,
which implies that all arguments should be widened. This discrepancy
between the prototype and the function definition is not
standard-conforming, and may lead to incorrect results with some C
compilers. Either correct the prototype to specify the widened type,
or use the prototype format in the function definition.
WARNING: No space between macro name and its replacement list.
dollars
option
(or cross-platform -W1,-cd
option) has not been specified.
However, if the only error in the macro was
the omission of white space following the macro name, the macro will
work as intended.
WARNING: Function declared static but defined external [symbol]
.
WARNING: Static function declared but not defined [symbol]
.
WARNING: Inline function declared but not defined [symbol]
.
WARNING: Multiple characters in integral character constant.
ERROR: Comma expected.
WARNING: Implicit conversion between pointer and scalar.
static
or extern
pointer variable is
initialized using a scalar value. A cast should be used to
perform the conversion to a pointer type explicitly.
WARNING: Negative value assigned to unsigned type.
strict
option (or cross-platform -W1,-ll
option)
is used.
ERROR: Ambiguous use of ILC language keyword.
__fortran
. The following code shows
a pointer to a function returning a pointer to a function that returns a
pointer to int
:
__pli int * (* (* ab)( ) ) ( );In this case, however, the compiler cannot tell whether the first function or the second is in PL/I. Specify language keywords directly before the
*
(for function pointers) or the name (for
functions). For example:
int * (__pli * (* ad ) ( ) ) ( );This code shows a pointer to a function returning a pointer to a PL/I function that returns a pointer to
int
.
ERROR: Malformed double-byte characters.
WARNING: Mixed types in string concatenation - using original type.
ERROR: DBCS used outside of comment, character constant or string.
WARNING: Multiple characters in wide character constant.
wchar_t
.
ERROR: AT option required when using @ operator.
@
operator unless the at
option (or cross-platform -Kat
option) is used.
Recompile the program using the at
option (or cross-platform
-W1,-ca
option).
WARNING: No external functions or data defined.
ERROR: Unable to open pass 2 print file. Using stderr.
stderr
instead. stderr
also should be
inspected for information on why the phase 2 listing file failed to
open.
WARNING: Empty object module.
WARNING: Item is wrong size for conversion to pointer.
char
or short
item was converted to a pointer.
However, since all pointers on the IBM 370 are 4 bytes in length, it is
unlikely that the input item will convert to a valid pointer. However,
code to do the conversion is generated.
WARNING: Default section name [first function name] is too long. Section name truncated to 7 characters.
Since this message appears for the default section name only, you can
avoid it by supplying the sname
option
(or cross-platform -Ksname
option), which is limited to seven characters.
ERROR: Wrong number of parameters for built-in function. An actual function call has been generated.
This message is rare because the library prototypes for built-in functions ensure correct parameters in most cases. However, it can occur if a library prototype is removed from the header file.
ERROR: A constant has an invalid type or value, (unsigned) 1 was used instead.
double
instead of int
,
was specified for a constant argument to a built-in function.
The compiler substitutes an unsigned
constant 1.
ERROR: Maximum number of extended external names exceeded.
ERROR: Maximum number of extended function names exceeded.
NOTE: No extended names found.
extname
option
(or cross-platform -Kextname
option) is specified and
no extended names are found.
NOTE: No extended names defined.
enxref
option
(or any of the cross-platform -Wl,-xxe
, -Wl,-xxs
,
-Wl,-xxx
, or -Wl,-xxy
options) is specified and
no functions or variables with extended names are defined.
ERROR: Unsupported use of __remote with pflocal or __asm function.
__local
or
__asm
function pointer to a __remote function
pointer.
This conversion cannot be performed, because the source function
pointer contains no PRV information. Note that this message can be
generated for an unqualified function pointer if the pflocal
compiler option is used.
ERROR: Pointer to FILE required for this built-in function parameter.
__builtin_getc
or the second parameter
or __builtin_putc
must be a pointer to the FILE
type.
ERROR: Register mask is not a compile-time constant.
_ldregs
, _stregs
,
_code
, and branch
functions must be a compile-time constant so the compiler
can know what registers are needed.
ERROR: Undefined bits set in register mask.
<regs.h>
to create the register mask.
ERROR: Register mask does not match number of function parameters.
_ldregs
function must define a number of registers that matches
the number of parameters (excluding the mask) in the function call.
The register mask used in the _stregs
function must define a
number of registers that either equals the number of other parameters in
the function call or exceeds that number by one.
ERROR: Register mask specifies unsupported register(s).
ERROR: Parameter must be address or pointer.
_stregs
built-in
function, but one was not supplied. All arguments to the
_stregs
function (except the register mask) must be pointers.
ERROR: SVC number must be a compile-time constant in the range 0-255.
ERROR: DIAGNOSE number unsupported or not a compile-time constant.
_diag
function was
not a compile-time constant. The number must be a constant, since it
forms a part of the generated machine instruction.
ERROR: Parameter must be a constant in the range 0-0xFFFF.
_code
function must be
halfword constants.
ERROR: Structure or union parameter cannot be loaded into a register.
_ldregs
function. Inspect the function arguments
to see if an &
operator has been omitted.
ERROR: Inline machine code sequence does not begin with _ldregs
.
builtin_code
(or some other machine code function)
was made without a previous call to
__builtin_ldregs
, which must immediately
precede any sequence of calls to other inline machine code functions.
This message can occur if some C code intervenes
between a call to __builtin_ldregs
and a call to another
inline machine code function.
ERROR: Register mask does not specify a result register.
__builtin_stregs
with a parameter, but the
value of that parameter, the register mask, did not specify a result register.
ERROR: _stregs not preceded by _ldregs. (_stregs operand may be too complex.)
__builtin_stregs
must be
preceded by a call to __builtin_ldregs
. No C code other than
calls to inline machine code functions may appear between the call to __builtin_ldregs
and the call to __builtin__stregs
. The
generation of code will be halted if the operands of
the __builtin_stregs
function are overly complex, since they may
force interruption of the inline code sequence to compute the target
addresses.
ERROR: Unsupported opcode, mask, or index register for branch.
__builtin_branch
function specified an invalid
opcode, register mask, or index register.
ERROR: Error in debugging file: [description]
ERROR: Problem processing __builtin function '[function name]',
possibly incorrect type or number of arguments.
__builtin
function, causing the function to be replaced
with an actual function call. However, the calling function
does not have a DSA, and thus cannot support the call.
WARNING: Indirect reference through NULL pointer.
WARNING: Type punning involves representation change [symbol]
.
long
object was accessed as a pointer.
This message
can occur when an assignment is made to a member
of a union, and then the value is accessed from a different member of
the union. It can also occur when an address to data of one type is used
to access data of a dissimilar type by means of a cast.
WARNING: Reference has overlapping definition [symbol]
.
WARNING: Dead assignment eliminated [symbol]
.
WARNING: Uninitialized variable [symbol]
.
NOTE: [reason] function inlined: [function name] from line [number].
The [reason] indicates whether the __inline
keyword,
complexity=[c]
option, or local
option caused the inlining to occur. The [c] represents the
complexity of the function, not the value of the complexity=[c]
option.
Although the cross-platform form of the complexity=[c]
option is -Oic=
[number], the value for [reason] will assume
the "complexity" form even when the cross-platform compiler is used.
WARNING: Return value missing in inline function.
return
statement does not specify one.
WARNING: Inline function does not use formal parameter [symbol]
.
WARNING: Integer operation overflows.
WARNING: Static variable is unreachable
WARNING: Static function is unreachable
WARNING: Possibly uninitialized variable
WARNING: Invalid comparison of pointer and scalar.
ERROR: Illegal pointer subtraction for void pointers.
void *
pointers cannot be used in arithmetic
expressions because they point to objects that have no
size.
WARNING: Function declared/defined static was previously declared extern:[symbol].
static
keyword. This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is specified.
WARNING: Variable name conflicts with typedef name.
typedef
name that had been declared in an outer scope. The typedef
was hidden in the inner scope declaration. This message is
suppressed unless the strict
option is specified.
WARNING: Extraneous braces in initializer expression.
strict
option
(or cross-platform -W1,-ll
option) is specified.
WARNING: 'If' condition always [true | false].
if
statement was a constant expression. If the condition is true, the
compiler only generates code for the then
branch. If the
condition is false, the compiler only generates code for the
else
branch.
WARNING: Assignment statement as 'if' condition.
=
) was used when an equality operator
(==
) may have been intended.
WARNING: Function declared static within a block.
static
keyword if it is used in a
function declaration in an inner block. Static functions cannot be
declared in inner blocks.
ERROR: Size of object is unknown.
WARNING: Comparison of unsigned value and constant is always [true | false].
For example, this comparison will
always be false because ui
can never be a negative value:
unsigned int ui; if (ui < 0 ) ...The compiler does not generate code to perform the test, nor does it generate any code for the true branch of the
if
statement.
WARNING: Conversion of negative constant to unsigned type.
unsigned long
:
static unsigned long u1 = -1;The compiler issues a warning message in this case. A more correct method of setting all bits to 1 is as follows:
static unsigned long u1 = 0xffffffff;
WARNING: Trailing comma in enum declaration.
enum
declaration.
WARNING: Empty argument to a preprocessor macro.
cat(X,,Z)
produces XZ
:
#define cat(a,b,c) a##b##cThis message is suppressed unless the
strict
option
(or cross-platform -W1,-ll
option) is specified.
ERROR: Unexpected I/O error.
stderr
for more information.
WARNING: Argument type is unsupported for __ref functions.
__ref
function is of a type that
cannot have the @
operator applied to it. For instance, an attempt was made to pass
a bitfield to a __ref
function.
WARNING: Symbol exceeds maximum length: [symbol]
.
extname
option is specified, an identifier can be up to 64K characters long.
This message is suppressed unless the mention
option is
specified.
WARNING: Unknown option [name].
#pragma options
statement but is not a recognized compiler option. The option may be
misspelled, or it may be a command-line-only option.
WARNING: Option does not accept argument [name].
#pragma options
statement,
does not accept an argument in parentheses.
WARNING: Invalid argument to option [name].
#pragma options
statement is invalid or out of range.
WARNING: Invalid option in pragma: [name].
#pragma options
statement, the compiler
found the specified symbol instead of an option name.
WARNING: Option not allowed in options pragma: [name].
WARNING:Option can not be negated: [name].
no
. For example,
nopagesize
is not a valid option.
WARNING: Static prototype in included file.
mention
option (or cross-platform +n
option) is specified.
WARNING: Non-static prototype in main source file.
mention
option (or cross-platform -W1,+n
option) is specified.
WARNING: Only first dimension may be undefined.
WARNING: Assignment to non-const __norent variable will prevent reentrancy.
__norent
in a compilation using the rent
or rentext
option, but the const
qualifier was not specified.
This implies that the variable may be assigned elsewhere in the
program. If, in fact, the variable is assigned elsewhere, the program will
be non-reentrant.
WARNING: Initialization prevents reentrancy.
__norent
keyword in
the SAS/C Compiler and Library User's Guide for more information
WARNING: Operation/comparison of pointer to char and pointer to [type].
char
may not be compare or assigned to pointers of other
types. The compiler flags the statement as a possible portability
problem.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll option) is used.
WARNING: Application of this linkage request is invalid.
#pragma linkage
was specified for
an identifier declared with a conflicting keyword, such as __ref
. Either remove the conflicting keyword or the #pragma linkage
directive.
WARNING: Assignment of int to short.
signed
or unsigned int
was assigned to a short
or unsigned short
. Data truncation may
occur.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Function declared with two different types: [function name]
WARNING: Assignment of short to char.
signed
or unsigned short
was assigned to a char
(possibly signed
or unsigned
). Data truncation may occur.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Assignment of int to char.
signed
or unsigned int
was assigned to a char
. Data truncation may occur
(possibly signed
or unsigned
).
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Assignment of long to char.
signed
or unsigned long
was assigned to a char
. Data truncation may occur
(possibly signed
or unsigned
).
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Assignment of long to short.
signed
or unsigned long
was assigned to a
signed
or unsigned short
. Data truncation may occur.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Constant assignment too large for char.
char
was assigned to a variable of type char
.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Constant assignment too small for char.
char
was assigned to a variable of type char
.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Constant assignment too large for unsigned char.
unsigned char
. Data truncation will occur.
WARNING: Constant assignment too small for unsigned char.
unsigned char
. Data truncation will occur.
WARNING: Constant assignment too large for signed char.
signed char
. Data truncation will occur.
WARNING: Constant assignment too small for signed char.
signed char
. Data truncation will occur.
WARNING: Assignment of long constant to char.
long
was assigned to a variable of
type char
. This may indicate a portability problem, as
data truncation could occur on a different platform.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Constant assignment too large for short.
short
was assigned to a variable of type short
. Data
truncation will occur.
WARNING: Constant assignment too small for short.
short
was assigned to a variable of type short
. Data
truncation will occur.
WARNING: Constant assignment too large for unsigned short.
unsigned short
was assigned to a variable of type
unsigned short
. Data truncation will occur.
WARNING: Constant assignment too small for unsigned short.
unsigned short
was assigned to a variable of type unsigned short
. Data truncation may occur.
WARNING: Assignment of long constant to short.
long
was assigned to a variable of
type short
. This may indicate a portability problem, as
data truncation could occur on a different platform.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Constant assignment too large for int.
unsigned
value for the type int
was assigned to a variable of type
int
. Data truncation will occur.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Constant assignment too small for int.
int
was assigned to a variable of type int
. Data
truncation will occur.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Constant assignment too large for unsigned int.
unsigned int
was assigned to a variable of type
unsigned int
. Data truncation will occur.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Constant assignment too small for unsigned int.
unsigned int
. The
constant will be converted to a large unsigned
value, which
may not be the intended effect.
WARNING: Assignment of long constant to int.
long
was assigned to a variable of
type int
. The assignment will behave properly on the 370,
but may not if ported to another machine architecture. This message is
suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Constant assignment too small for unsigned long.
unsigned long
.
The constant will be converted to a large unsigned long
value, which
may not be the intended effect.
WARNING: Assignment of unsigned constant to long.
unsigned long
whose value is greater than
the maximum value of the type long
was assigned to a
variable of type long
. Data truncation will occur.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Operation/comparison of unsigned *char and signed *char.
signed
and unsigned char
pointers.
This message is suppressed unless the strict
option
(or cross-platform -W1,-ll
option) is used.
WARNING: Invalid control expression in for statement.
for
statement had void
type. The control expression must either have an arithmetic or
pointer type, or be omitted.
WARNING: Unmatched quote in #pragma title preprocessor command.
#pragma
title
compiler directive.
Invalid DDname prefix specified
files
compiler option
contains characters that cannot be used in a DDname, or the argument
is longer than three characters (MVS, TSO only).
Invalid default bitfield type.
bitfield
option
must be either 1, 2, or 4. The bitfield
option
(or cross-platform -Kbitfield
option) is
ignored.
Invalid GO complexity() option: 0-20 allowed - overridden.
complexity
option (or cross-platform -Oic=
[number]
option) requires an integer value between 0 and 20,
inclusive. The compiler will use a default value of 0.
Invalid GO depth() option: 0 -6 allowed - overridden.
depth
option (or cross-platform -Oid=
[number] option)
requires an integer value between
0 and 6, inclusive. The compiler will use a default value of 3.
Invalid GO rdepth() option: 0-6 allowed - overridden.
rdepth
option (or cross-platform -Oir=
[number] option)
requires an integer value between 0 and 6, inclusive.
The compiler will use a default value of 1.
Invalid LISTING disposition specified
Invalid multiple specified for zapspace size.
zapspace
option (or cross-platform -Kzapspace
option)
requires an integer value between
0 and 22, inclusive. A value was found that did not fit these
criteria, so the compiler used the default value of 1.
Invalid number of lines per page specified for listing
pagesize
option was not greater
than 10 and less than 255. The compiler sets the page size to
55.
Invalid section name specified.
sname
option (or cross-platform -ksname
option)
specified a string that either contained invalid characters
or was longer than seven characters.
Invalid symbol definition.
define
option (or cross-platform -Dsym=
[value] option).
Invalid value specified for minimum zapspace size.
zapmin
option (or cross-platform -Kzapmin
option) requires an integer value between 24 and 512, inclusive.
The compiler will use a default value of 1.
stderr
, provide additional information.
Can't close file for debugger symbol information.
Can't create file for debugger symbol information.
Can't create object file.
Can't create quad file.
Can't open quad file.
Can't open source file.
End-of-file on object file.
Error closing object file.
Intermediate file error.
Invalid quad file.
No functions or data defined.
Not enough memory.
Object file error.
Can't reopen output quad file.
Error while replacing quad file.
Quad file not replaced.
Copyright (c) 1998 SAS Institute Inc. Cary, NC, USA. All rights reserved.