List of the old-style armcc error and warning messages

The following old-style error and warning messages might still be given:

C3000E
SWI number 0x<num> too large
C3002W
illegal unaligned load or store access - use __packed instead
C3008W
splitting LDM/STM has no benefit

Inappropriate use of the switch "--split_ldm". This option has no significant benefit for cached systems, or for processors with a write buffer.

C3009E
unsupported CPU <entity>
C3015E
Unbalanced pragma pop, ignored

#pragma push and #pragma pop save and restore the current pragma state.

A pop must be paired with a push. An error is given for:

#pragma push 
: 
#pragma pop 
: 
#pragma pop 
C3016W
unknown option '-<entity><entity>': ignored
C3017W
<entity> may be used before being set

The data flow analysis feature in the compiler is on by default.

Note

Be aware that data flow analysis is always disabled at -O0 .

The compiler performs data flow analysis as part of its optimization process, and this information can be used to identify potential problems in the code such as variables being used before being set. However, this is really a by-product of optimization rather than a feature in its own right. The data flow analysis that detects used before being set only analyses hardware register use, that is, variables that are held in processor registers. It does not analyze variables or structures that are allocated on the stack, that is, stored in memory rather than in processor registers.

As code (and also register memory usage) generated by the compiler varies with the level of optimization, the warning might appear for code compiled at one level of optimization but not others. You might see it, for example, at -O2, but not -O1.

Note

The data flow analysis is not intended to be a fully complete feature. You must only treat the warnings of the form CnnnnW given by the compiler as a guide, and not rely on these warnings to identify faulty code reliably. The compiler never provides as much information as a special purpose tool such as Lint.

C3018W
division by zero: <entity>

Constant propagation shows that a divide or remainder operator has a second operand with value 0. It is an error if execution reaches this expression. The compiler returns a result of 0 for a divide by constant 0.

C3038E
Function too large or complicated to compile (0x<num>)
C3041U
I/O error writing '<entity>': <entity>
C3047U
Too many errors
C3048U
out of store while compiling with -g. Allocation size was <entity>, system size is <entity>
C3049U
out of store. Allocation size was <entity>, system size is <entity>

A storage allocation request by the compiler failed. Compilation of the debugging tables requested with the -g option might require a large amount of memory. Recompiling without -g, or with the program split into smaller pieces, might help.

C3050U
Compilation aborted.
C3051E
couldn't write file '<entity>': <entity>
C3052E
couldn't read file '<entity>': <entity>
C3055U
internal fault in inferFileName
C3056E
bad option '<s>'
C3057E
bad option '<s1> <s2>'
C3064E
Overlong filename: <entity>
C3065E
type of input file '<entity>' unknown
C3066E
The code space needed for this object is too large for this version of the compiler

Split the source file into smaller pieces.

C3075E
Can't open <entity> for output
C3078E
stdin ('-') combined with other files
C3079E
<entity> command with no effect
C3317W
translated cpu or architecture option <option> is not valid
C3318W
unable to read file <file>
C3319W
cannot recognise type of file <file> - file will be ignored
C3320W
cannot find file <file> - file will be ignored
C3327W
cannot determine application entry point function - using <value> as default
C3329W
option is missing an argument : <option>
C3331W
script file <file> will be treated as a scatter file
C3332E
I/O error reading via file <file>
C3333E
I/O error closing via file <file>
C3403E
__alloca_state not defined
C3419W
dynamic stack alignment veneer inserted in <entity>

This warning is given when compiling __irq functions for --cpu=Cortex-M3-rev0 to force the stack to be 8-byte aligned on entry into the interrupt.

C3421W
write to string literal

There is a write through a pointer that has been assigned to point at a literal string. The behavior is undefined by to the ANSI standard. A subsequent read from the location written might not reflect the write.

C3435E
reference to <entity> not allowed
C3447E
option '-E' and input file '<filename>' type conflict
C3484E
Minimum toplevel array alignment must be 1, 2, 4 or 8
C3486W
option '-<optionchar>' causes input file '<filename>' to be ignored
C3487E
read from variable '<var>' with offset out of bounds

For example :

void foo(void) {
  unsigned int pntr;
  pntr = (unsigned int)&pntr;
  pntr -= 4;
  pntr = *(unsigned int*)pntr;
}
C3488E
write to variable '<var>' with offset out of bounds
C3489E
__vfp_status() intrinsic not supported for targets without VFP
C3490W
instruction set switching using file extension is deprecated
C3493E
Function alignment must be a power of 2 and greater than 1
C3494E
invalid global register number <num>; 1 to <num> allowed
C3497E
invalid syntax for retention constraint: <text>
Copyright © 2011 ARM. All rights reserved.ARM DUI 0591A
Non-ConfidentialID061811