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.
New SuperTest features over the years
Verification of Optimization Correctness with SuperTest
The Day that GNU-C++ -OS Broke
Learning from Math Library Testing for C
The Benefits of C and C++ Compiler Qualification
CG Trainer for Code Generator Development
An introduction to the SuperTest MISRA suites
Code Generator Development and Validation
Library Qualification in Safety Critical Applications
C Compiler Validation for Embedded Targets
How a Rogue Optimization Breaks C11 Memory Consistency
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 INTRODUCTION 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 MISRASuites
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.
SuperTest is the ideal starting point for standard library qualification, both for C and C++.
Read the full paper on SuperTest for C Library qualification.
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.