Latest Blog Posts

Verifying the compiler’s pipework

Verifying the compiler’s pipework

Compilers are highly complex machines with two areas that deserve extra scrutiny. They are the register allocator and the calling convention. While register allocation is the subject of countless research papers, the calling...

read more
Can your compiler count to ten?

Can your compiler count to ten?

The size of integers and other primitive types is not fixed by the C/C++ programming language specifications. It is implementation-defined. Unlike unspecified and undefined behavior, that is not a free lunch for the compiler....

read more
Automation saves time and is more accurate

Automation saves time and is more accurate

As we pointed out in the previous blog, before we qualify a compiler for a safety-critical project, it’s essential we know all the compiler options that the project intends to use. With typical projects being highly complex, like a...

read more
SuperTest and Frama-C: a clash of titans

SuperTest and Frama-C: a clash of titans

CEA List and Solid Sands entered into a partner agreement to make SuperTest available to the Frama-C team. Frama-C is a platform for source-code analysis of C software. The Frama-C analyzers assist with various source-code-related...

read more
The disadvantages of undefined behavior

The disadvantages of undefined behavior

In the previous blog I argued in favor of undefined behavior in C. The behaviors I was talking about, such as integer overflow, would be inefficient or counter-intuitive if they were defined. Nevertheless, it does mean that in their...

read more
The advantages of leaving it undefined

The advantages of leaving it undefined

Undefined behavior remains an elusive subject. On the one hand, it potentially exposes your program to dangerous situations and exploitations. On the other hand, it enables the speed and portability that the C programming language is...

read more