[PATCH] D21445: Comprehensive static instrumentation (1/3): LLVM pass

Tyler Denniston via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 16 12:51:07 PDT 2016


tdenniston created this revision.
tdenniston added reviewers: kcc, zhaoqin, bruening.
tdenniston added subscribers: eugenis, pcc, vitalybuka, aizatsky, llvm-commits.
tdenniston set the repository for this revision to rL LLVM.
tdenniston added a project: Comprehensive Static Instrumentation.

The Comprehensive Static Instrumentation (CSI) framework provides static instrumentation that a compiler inserts into a program-under-test so that dynamic-analysis tools -- memory checkers, race detectors, cache simulators, performance profilers, code-coverage analyzers, etc. -- can observe and investigate runtime behavior. Heretofore, tools based on compiler instrumentation would each separately modify the compiler to insert their own instrumentation. In contrast, CSI inserts a standard collection of instrumentation hooks into the program-under-test. Each CSI-tool is implemented as a library that defines relevant hooks, and the remaining hooks are "nulled'" out and elided during link-time optimization (LTO), resulting in instrumented runtimes on par with custom instrumentation. CSI allows many compiler-based tools to be written as simple libraries without modifying the compiler, greatly lowering the bar for developing dynamic-analysis tools.

This diff encompasses the compiler pass for CSI. For an extended usage doc, please see the docs/CSI.rst document submitted with the clang diff.

Repository:
  rL LLVM

http://reviews.llvm.org/D21445

Files:
  include/llvm/InitializePasses.h
  include/llvm/Transforms/Instrumentation.h
  include/llvm/Transforms/Utils/ModuleUtils.h
  lib/Transforms/Instrumentation/CMakeLists.txt
  lib/Transforms/Instrumentation/ComprehensiveStaticInstrumentation.cpp
  lib/Transforms/Instrumentation/Instrumentation.cpp
  lib/Transforms/Utils/ModuleUtils.cpp
  test/Instrumentation/ComprehensiveStaticInstrumentation/basicblock_entry_exit.ll
  test/Instrumentation/ComprehensiveStaticInstrumentation/func_entry_exit.ll
  test/Instrumentation/ComprehensiveStaticInstrumentation/interface.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D21445.61011.patch
Type: text/x-patch
Size: 42141 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160616/1199d3b5/attachment.bin>


More information about the llvm-commits mailing list