Releases: tudasc/MetaCG
Releases · tudasc/MetaCG
v0.7.1
MetaCG v0.7.0
MetaCG v0.7.0
MetaCG v0.7.0 brings these new features and fixes
MetaCG graph library
- Fixes compilation errors with some gcc versions
- Implements a detection mechanism for node hash collisions
- Implements a new callgraph format version and accompanying reader and writer facilities
- Removes unmaintained dot-graph reading facilities
- Removes unmaintained call-graph statistics module
- Reorganizes namespaces throughout the whole library
- Streamlines usage of reader and writer facilities
- Unifies the logging usage throughout the project
PGIS
- Fixes an error in which PIRA could not complete any runs after the first one, if load imbalance was enabled in pgis due to an export error
Infrastructure
- Improves the docker container build times
- Improves the CMake setup to feature a default build configuration and better dependency handling
- Removes module that was once used to convert phasar generated callgraphs into the mcg format
MetaCG v0.6.2
Changelog
Fixes
- Fixes an issue which caused PIRA-related metadata not being serialized correctly again.
MetaCG v0.6.1
Changelog
Fixes
- Issues when building MetaCG on certain RHEL systems
MetaCG v0.6.0
MetaCG v0.6.0 brings these new features and fixes
- Improved CMake that allows to use the graph library via
add_link_libraries
- Utility tool to automatically generate a call graph via CMake File API
- Simplified and updated CMake handling of dependencies
- General code clean up
MetaCG Graph Library
- Removes explicit
edge
class - Metadata is now registered automatically, simplifying the use of it
- Metadata can be attached to edges (not serialized into the file)
- Better multigraph managing API
- Improved implementation for json generation in
MCGWriter
class - Ability to sort edges in generated dot output
- Ability to attach arbitrary
Metadata
and query its key - Several fixes for potential null pointer accesses
CGCollector
- Fixes to name generation
PGIS
- Overhead-based heuristics to work within the PIRA automatic profiler
Infrastructure
- Ability to run all integration tests concurrently
MetaCG v0.5.0
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
- Callgraph-object is uniquely owned by
- 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
MetaCG v0.4.0
Changelog
Functionality
- MCGWriter to serialize the Callgraph into a MetaCG file.
- MetaDataHandler required
value
function to serialize the MetaData for MCGWriter - Objects to model and consolidate file format information of MetaCG file format
- MCGManager can handle multiple call-graphs at a time
Fixes
- MCG file format version in CGMerge now read from first non-null file content
- Building error caused by static assert: ambigious operator
- Explicit list all required clang/llvm libraries as new versions of ld are stricter and don't link libraries just because a symbol in them is referenced.
Infrastructure
- Use C++17 instead of 20 to prevent build errors with GCC 11.2
- Improved library dependencies handling in CMake (especially for pre-installed libraries)
- Better Extra-P integration in builds
Versions
- Bumps nlohmann-json version to 3.10.5 (other versions may/should work too)
MetaCG v0.3.0
Changes
Features are user-facing, Fixes are both user-facing and developer-facing, Refactorings are developer-facing, CI are infrastructure related notes.
Features
- Aggregation strategies for Extra-P performance models and analysis parameter config file (PIRA II, LIDe)
- MetaCollectors for loop depth, conditional branches, (experimental) type of statements count, when type 2 metadata is enabled
- Add new algorithms for static filtering based on loop depth, FPAndMemOps or conditional branches
- Add options to select the algorithm for the cutoff selection
- Adds citation file
- Significant refactoring of MetaCG components (for details see below)
Fixes
- Update ToolchainOptions to explicit link required libraries. New linker versions are more strict with linking not explicit declared dependencies
- Update spdlog
- Fix warnings reported by clang-tidy, especially unnecessary copies
- Run tests in Debug configuration, so that asserts are enabled
- Remove leftover headers
- Update detection of python include directory
- Disable wrong asserts
- Updates MetaCG to correct release version
- Working on issue w.r.t. recursion and adds test for recursive function
- Potential temporary fix for non-terminating CGCollector on some target codes
Refactorings
- Split graph components into their own library / namespace
- Moved top-level MetaData to own file.
- Moved MCGReader to graph lib && removed outdated code
- New high-level interface for callgraph construction
- Moved MetaData basic definitions to their own respective file in graph namespace
- Moved graph library into separate componen
- Prefer set/map over the unordered variants to make results consistent across different systems
- External dependencies are now put into
${METACG_REPO}/extern
by default - Applies the source formatter to all source code files (seems that CLion in my branch messed that up)
- cmake-format style file to be used with cmake-format
- Removed outdated CMake resources
- Renamed CMake to better fit overall structure
CI
- Added container step in Gitlab CI
- Different stages won't work on different machines. Make sure you use the right tags.
- Updated Gitlab CI yaml config to account for new project structure
- Improves container setup to use pre-stored base image from registry
- CI will fail if CMakeLists and other CMake-related files do not adhere to the formatting style file
- Enables podman builds for all branches and runs PGIS unit tests in the container
- Uses more modern CMake commands to
build
andinstall
MetaCG
MetaCG v0.2.1
Changelog
CGCollector
Fixes non-termination issue in CGCollector for some cases
Fixes crashes for certain ways of recursion
PGIS
Fixes an error that prohibited PIRA I from producing any reasonable results.
Adds FindSynchronizationPoint mechanism to PGIS and its LI detection.
Makes the export of the CG as dot file a CLI switch in PGIS
Makes call-site instrumentation optional
MetaCG v0.2.0
Whole-program call-graph file format in json format.
Changelog
MetaCG
- Introduces new file format, with a more unified interface for meta annotations
- Adds a few other MetaInformation examples
CGCollector
- Improves the handling of function pointers within a single translation unit
PGIS
- Includes the load imbalance detection heuristics from Peter Arzt's Bachelor thesis
- Refactorings to the Reader to handle both file formats