Blog

Progress report - prime path coverage in gcc 2

It’s time for another progress report. The last post covered the phases at a high level – please read that first for an overview. Observing paths To observe paths we associate a bitset with each function, where each bit corresponds to a path. Which bit maps to which path is simply its index in the lexicographically sorted set of paths. When an edge is taken, the a mask is applied to the bitset so the paths not taken are masked out: accu[block] = accu[pred] & paths[block].

Read more →

June 25, 2024

Progress report - prime path coverage in gcc

After the success of getting MC/DC support into gcc, NASA decided to keep funding the project and focus on (prime) path coverage. I have been working on this problem for a while now and it is about time to write a post on the progress so far. Prime paths The number of paths in a program grows very fast. Somewhat simplified, a path is a sequence of blocks evaluated for a run.

Read more →

June 8, 2024

MC/DC merged into gcc

I have to admit, it feels quite nice to finally write this post. My support for MC/DC in gcc was merged April 4th, followed by a couple of bug fixes. This post is just an announcement - I plan to some time later write a more detailed post on how it works and how to use it, and maybe one on MC/DC itself. It has been a long project. I started working on it around the start of 2022, so it took a bit more than two calendar years from starting the work to the feature being merged, with mixed activity.

Read more →

April 18, 2024

Rebuilding the world (with nix)

I ran into an interesting problem when adding support for Modified Condition/Decision Coverage (MC/DC) in gcc (a topic for a later post): how do you large scale test a new compiler feature? In this case, I wanted to figure out what kind of control flow graphs gcc could create, how particular graph shapes would interact with my changes, and if my assumptions actually held. Hand rolled examples took me quite far, but not to the point I was confident I didn’t miss anything.

Read more →

March 3, 2024