HomePhabricator

Add a module pass for order file instrumentation

Description

Add a module pass for order file instrumentation

The basic idea of the pass is to use a circular buffer to log the execution ordering of the functions. We only log the function when it is first executed. We use a 8-byte hash to log the function symbol name.

In this pass, we add three global variables:
(1) an order file buffer: a circular buffer at its own llvm section.
(2) a bitmap for each module: one byte for each function to say if the function is already executed.
(3) a global index to the order file buffer.

At the function prologue, if the function has not been executed (by checking the bitmap), log the function hash, then atomically increase the index.

Differential Revision: https://reviews.llvm.org/D57463

Details

Committed
mrenFeb 28 2019, 12:13 PM
Differential Revision
D57463: Add a module pass for order file instrumentation
Parents
rL355132: [clang-tidy] add OverrideMacro to modernize-use-override check
Branches
Unknown
Tags
Unknown