White/Light Papers and Technical Notes

White/Light Papers and Technical Notes

This page lists our white papers, light papers and technical notes. Make sure to visit this page to stay up to date with our developments and new features.

Library Qualification, From Requirements to Test Design

Considering the complexity of the C language specification and the importance of its correct implementation, standard library implementations cannot be taken for granted. The best way to verify that your library is implemented correctly is to qualify it with a test suite. Read the light paper here.

Overview of New SuperTest Features and Tests

To continue a high level of software quality, we often send out new Updates and Releases to our users. Curious to discover the ingredients of SuperTest? Find out which new features are added to SuperTest here and if you want to know more about the number of tests in SuperTest you should go here.

Verification of Optimization Correctness 

If you think advanced compiler optimizations are robust and well-tested, you are wrong. Our recent experiments with optimization testing have uncovered errors in every compiler technology that we got our hands on. Our conclusion is that advanced optimization testing is currently an underdeveloped skill of compiler developers and that action is required. Read our white paper here

The Day That GNU-C++ -OS Broke

We encounter a lot of compiler problems that require deeper research. Recently we hit on an interesting optimization error. The -Os option caused several tests related to exception handling and inheritance to fail on GNU-C++ – further confirmation that compiler qualification must be use-case specific. Read our light paper here

Learning From Math Library Testing For C

In the process of improving SuperTest, I recently dived into its math library testing. Turns out there were some interesting observations to make. I have summarized them here in four lessons. The take-away is that our intuition about real numbers does not translate directly to floating point computations. When working with floating point, it is essential to have a model of its accuracy in mind. This white paper is my attempt to capture some intuition about floating point computations. Read the full paper on FP Lessons.

The Benefits of C and C++ Compiler Qualification 

In embedded application development, the correct operation of the compilation toolset is critical to the functional safety of the application. Two options are available to build trust in the correct operation of the compiler: either by compiler qualification through testing, or application coverage testing at the machine code level. We argue that the first, compiler qualification, is much more efficient. In addition, separating compiler qualification from application development shortens the critical path to application deployment (time-to-market) because they are then independent of each other. Compiler qualification saves time and money. Read the white paper here.

CG Trainer – for Code Generator Development 

Developing a C compiler for a new (or old) target processor is one of the greatest and most rewarding software engineering projects imaginable. It is also challenging and daunting. This is where SuperTest’s new Code Generator Trainer suite comes in. Read the full paper on CGtrainer.

An Introducation to the MISRA C Suite

The SuperTest MISRA suites are created to verify the conformance of MISRA checking software. The aim of a, so-called, MISRA checker is to check application software for its compliance with the MISRA guidelines. The SuperTest MISRA suites in turn verify that such a MISRA checker generates the right diagnostics and not too many false positives or false negatives. Read the full paper on MISRA Suites

Code Generator Development and Validation

Why SuperTest should be your first choice for compiler code generator development and validation.
Read the full paper on Code Generator Development and Validation.

Compiler Validation

Compiler validation is simply highly controlled, repeatable and reproducible testing of a compiler using a recognized set of test programs commonly known as a “validation suite”.
Read the full paper on C Compiler Validation for Embedded Targets.

How a Rogue Optimization Introduces Data Races 

Not all optimizations that work well for sequential applications can be used for multi-threaded applications. This is important in particular since C11 defined C’s memory consistency model. A common optimization that is present in many compilers still used today does not work well with shared memory parallel programming.
Learn more about the details and about memory consistency in our technical note How a Rogue Optimization Breaks C11 Memory Consistency.