Skip to content

MetaCG v0.5.0

Compare
Choose a tag to compare
@jplehr jplehr released this 12 Jan 09:23
· 144 commits to master since this release

Changelog

Functionality / Implementation

  • Significant speed improvement in MetaCG building and querying the call-graph
  • Adds MetaCG logger utility (to fix potential segmentation faults)
  • Improves the handling of Ctors/Dtors significantly (differences in mangling of symbols with internal linkage between GCC and Clang may occur)
  • Implements new and much better dot I/O functionality in separate (service) class and namespace.
  • Adds new command line option semantics for dot export
  • Removes some outdated command line options
  • Adds experimental Alias Analysis for better handling of function pointers and for enabling the handling of cross TU Calls (off by default)
  • Remove reachability fields from CgNode and related refactoring
  • Changed ownership logic from shared to unique pointer
    • Callgraph-object is uniquely owned by MCGManager
    • Nodes and Edges are uniquely owned by Callgraph object
    • Access to these now works via raw pointer
  • Fully switch from the old JSON annotation mechanism to the MCGWriter
  • Deprecation of the setGraph method: PGIS_PIRA phases are now supposed to explicitly pass a call-graph if needed
  • Changed program logic to be more conservative when dealing with questionable inputs
    • Querying existence of Metadata does not implicitly add Metadata
  • [deprecated] Explicit modelling of edges, and transfer of graph-structure knowledge from node to call-graph

Fixes

  • Fixes the reading of call counts and runtime from the cube file
  • Fixes potential nullptr dereference and segmentation fault
  • Fixes bug causing the format two tests to check the result of the format one tests
  • Fixes potential CMake issue with modern linkers
  • Fixes a bug that causes uninstantiated virtual template function to be added to the callgraph, causing clang to crash in getAllManglings()
  • Fixes build with/without optional components

Infrastructure

  • Matrix builds for GCC in version 10 and 11, and LLVM versions (10, 14) and (13, 14).
  • Removes outdated jobs / tags
  • Adds a template with our CI defaults
  • Re-enables the podman based build in Ubuntu container

Versions

  • Support for Clang/LLVM 10, 13 and 14