Home / ARM Development Tools
Compiler Verification
For more than 20 years, the ARM Compiler toolchain has provided a robust platform for software development.
The ARM Compiler is used to develop software applications in Aerospace, Banking, Healthcare, Automotive, Transportation, Manufacturing, Consumer, Military and Telecommunications.
Today, there are over 2 billion devices running software developed with the ARM Compiler toolchain.
Each ARM Compiler release is subjected to a thorough verification process involving thousands of test cases targeting code generation correctness.
The Compiler, Assembler, Linker, and Libraries are tested using different optimization levels and architecture-specific options on both simulation and hardware targets.
Validation Testing
Approved ARM Compiler test suites include:
The Perennial Validation Suite for ISO/IEC Conformance
The Perennial Validation Suite for C is the industry standard for the verification of C compilers. The Perennial Validation Suite uses both positive and negative test techniques to accomplish the following:
- Test basic conformance to the ISO c90 and c99 C language standards.
- Generate self-checking C programs that test permutations of operators and data types.
- Determine the size of certain compile time limits, e.g., significant length of identifiers or how deeply include files may be nested.
- Test for legal expressions by generating self-checking expressions of arbitrary complexity.
In-House Validation Suites
- Diff Tests - For detecting differences in the code quality, ARM compares the code generated from new compiler versions with that of previously tested versions. This test suite generates an internal report showing differences against the previous version. ARM analyzes this report to verify if any code differences are unexpected.
- Regression Suite - When defects are fixed, tests are added to our regression tests suite to ensure the defect is not re-enabled by future compiler changes.
- Language Extensions - ARM maintains an in-house test suite for testing product language extensions which are not covered in the ANSI/ISO standard.
- C-Header Tests - Verifies the internal consistency of the standard C header files. They work by running the compiler over each header and having it dump out its internal state. The result is then examined to ensure consistency.
- Nullspace Tests - Measures consistency of expected compiler behavior and optimizations across semantically equivalent, but syntactically different source code.
- Math Library Tests - The Floating-Point and Math libraries experience directed tests of special cases (NaNs, infinites, underflow, etc.) as well as tests associated with known difficult values.
- Convergence Tests - This suite tests that the ARM Compiler can build itself. This is done in two stages, first using the ARM Compiler to build a semi-hosted version of itself targeting ARM, then using the semi-hosted version to build the second version, and comparing the final images and objects.
- Code Database (CodeDB) - CodeDB is a collection of open source applications and approved customer code used to verify that complex real-world applications can be built with the latest compiler version.
- Product Integration Tests - These tests ensure that the different product components have been successfully integrated and produce the preferred user experience. New tests are generated for each release based on new features in that release. In addition to new tests, product integration testing consists of more than 1,200 regression test cases.
Edison Design Group (EDG) Front-End Test Suite
EDG Front End software is tested using Gimpel's FlexeLint, Plum Hall, and Perennial commercial test suites.
Additionally, the front-end software is subjected to ~25,000 local regression tests developed over the past 20 years.
Roguewave C++ Library Self Tests
A self-test suite supplied with the RogueWave C++ Standard Template Library (STL).
GNU Torture
These tests form part of the GNU C compiler distribution. They include self-checking tests and also tests for the compiler front end.
Standard Benchmark Tests
Standard benchmarks such as EEMBC and Dhrystone are used to verify that the benchmark suites compile and execute properly.
ABI Test Suite
This suite tests conformance to the ARM-THUMB Embedded Application Binary Interface (EABI) Procedure Call Standard.
Debug Tests
This tool checks that the ARM Compiler is generating valid DWARF debugging information, it analyzes source file information via embedded annotations using a purpose-designed language, DVAL (DWARF Validator Annotation Language).
Defect Management
Defects are numbered, documented, and prioritized in our defect database.
Defects are regularly reviewed and targeted for correction based on priority. Defect data is secured via nightly backups and offsite storage.
ISO Certification
ARM maintains ISO9001:2008 certification (number LRQ 0963114) which is applicable to design, development, and quality management of software solutions at ARM.
Keil Product Integration
The ARM Compiler has been used in all versions of the Keil MDK-ARM (Microcontroller Development Kit) since its release in 2006.
A full MDK-ARM version history is available for reference.