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
C3301W
configuration file appears to be from a newer version of the compiler

The configuration file is one of the XML files supplied to the compiler with the --arm_linux_config_file switches when using --arm_linux_paths or GCC command-line translation. For example:

armcc --arm_linux_paths --arm_linux_config_file=arm_linux_config.xml

This warning indicates the file is from a newer compiler so might contain unsupported features. To avoid incompatibilites, either use the newer version of the compiler that was used to generate the configuration file, or re-generate the configuration file using your current compiler version.

See the following in the Compiler Reference:

C3302E
configuration file has an invalid version string

This represents an error reading from or writing to an ARM Linux configuration file.

Do the following:

  1. Check that the file can be read from and written to and has valid permissions.

  2. Try re-generating the configuration file using --arm_linux_configure.

See the following in the Compiler Reference:

C3303E
configuration file was not specified

See the description for error C3302E.

C3304E
I/O error reading configuration file <file>

See the description for error C3302E.

C3305E
I/O error writing configuration file <file>

See the description for error C3302E.

C3306E
could not parse configuration file <file>

See the description for error C3302E.

C3307E
unable to read configuration file

See the description for error C3302E.

C3308W
cannot find system include directory

When using an ARM Linux mode, --arm_linux, --arm_linux_paths, or GCC command-line translation, set the ARMCCnINC environment variable to install_directory\include. This ensures that the compiler can find the arm_linux header subdirectory.

See the following in the Compiler Reference:

See the following in Introducing the ARM® Compiler toolchain:

C3309E
automatic configuration failed - cannot find GCC

This error is produced when you try to automatically configure the tools with --arm_linux_configure, but GCC cannot be found. Use the --configure_gcc=path_to_gcc command -line option to specify the path to the GCC executable, such as arm-none-linux-gnueabi-gcc.

See the following in the Compiler Reference:

C3310W
automatic configuration is incomplete - cannot determine sysroot path from GCC

The GCC that was used for the ARM Linux configuration process did not provide a valid sysroot path. Use --configure_sysroot=sysroot_path to set the path.

See the following in the Compiler Reference:

C3311E
automatic configuration failed - cannot find GLD

This error is produced when you try to automatically configure the tools with --arm_linux_configure, but the GNU linker (ld) could not be found. Use the --configure_gkd=path_to_gcc command-line option to specify the path to the GNU ld executable, such as arm-none-linux-gnueabi-ld.

See the following in the Compiler Reference:

C3312E
automatic configuration failed - could not execute GCC

This error indicates that, when using automatic configuration for ARM Linux with --arm_linux_configure, the respective tools (GCC or GNU ld) could not be executed or failed when invoked. Check that they have execute permissions, and your GNU toolchain installation is working correctly.

See the following in the Compiler Reference:

C3313E
automatic configuration failed - could not execute GLD

See the description of error C3312E.

C3314W
gcc command line translation - ignoring option with no translation: <option>
C3315W
gcc command line translation - translation for this command is not fully supported: <option>
C3316W
option is not supported under arm linux: <option>
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
C3321E
automatic configuration failed - could not determine configuration from GCC

When configuring automatically for ARM Linux with --arm_linux_configure, the compiler could not determine sufficient information from GCC to produce the configuration. Try a manual configuration by specifying a sysroot path with --configure_sysroot and a path to the GNU C++ header files with --configure_cpp_headers.

See the following in the Compiler Reference:

C3322W
could not accurately determine library configuration from GCC - configuration might be incomplete
C3323E
automatic configuration failed - GCC internal specs configuration report error: <text>
C3324W
could not determine libstdc++ header file path - specify this manually to ensure that C++ code will compile correctly

The path to the libstdc++ header files could not be determined from GCC. Specify this path with --configure_cpp_headers=path

See the following in the Compiler Reference:

C3327W
cannot determine application entry point function - using <value> as default
C3328W
cannot determine library paths from GNU linker - trying to use defaults
C3329W
option is missing an argument : <option>
C3330E
GCC configuration is invalid
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>
C3334W
invalid GCC version in configuration file - using default
C3335E
cannot retry because configuration file does not provide path to GNU executable

Displayed when the ARM Linux configuration file specified for GCC fallback does not include the correct path to gcc.

See the following in Using the Compiler:

See the following in the Compiler Reference:

C3336W
compilation failed - retrying with GNU tools

Displayed if an armcc compilation fails and GCC fallback is specified. armcc then attempts to run gcc to complete the compilation.

See the following in Using the Compiler:

See the following in the Compiler Reference:

C3337E
compilation with GNU tools also failed

Displayed if gcc fails during GCC fallback.

See the following in Using the Compiler:

See the following in the Compiler Reference:

C3338W
compilation with GNU tools succeeded

Displayed when GCC fallback succeeds.

See the following in Using the Compiler:

See the following in the Compiler Reference:

C3339W
ambiguous translation mode options specified - using <option>

Multiple translation mode options --translate_gcc, --translate_g++, and --translate_gld were specified. You must specify only one of these options to select a particular translation mode.

See the following in the Compiler Reference:

C3340W
could not obtain license for vectorization (implied by -O3) - defaulting to -fno-tree-vectorize

With GCC command-line translation, -O3 implies vectorization. However, this requires a license to use the NEON vectorization feature of the compiler. Where a NEON vectorization license is not available, the compiler emits warning C3340W and disables vectorization.

See the following in Introducing the ARM Compiler toolchain:

See the following in the Compiler Reference:

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>
C3498E
option conflicts with an arm linux targeting option: <option>

Certain options are expected to be used when targeting ARM Linux, for example to select the correct ABI variant options. This message is given to indicate when an incompatible option is specified.

See the following in the Compiler Reference:

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0496F
Non-ConfidentialID091611