Skip to content

Release 2604#823

Merged
fabianbs96 merged 26 commits intomasterfrom
development
Apr 10, 2026
Merged

Release 2604#823
fabianbs96 merged 26 commits intomasterfrom
development

Conversation

@fabianbs96
Copy link
Copy Markdown
Member

No description provided.

fabianbs96 and others added 26 commits November 4, 2025 19:17
* Remove various deprecated APIs

* Remove the dependency to SQLite3 + use BUILD_PHASAR_CLANG=OFF by default

* Remove boost

* build: fix nlohmann_json dep for conan

---------

Co-authored-by: Lucas Briese <lucas.briese@iem.fraunhofer.de>
* added test coverage for ci

* merged coverage job into build, removed all but one step for testing

* test code for meeting

* Call-Graph Improvements (#785)

* minor fix in CHA and RTA resolvers

* Several small improvements for call-graph resolving

* Fix out-of-bounds access in getVarTypeFromIR()

* Add address-taken functions caching in base resolver

* Some cleanup in resolvers

* pre-commit

* Fix bug in the overloads of buildLLVMBasedCallGraph() that takes a CallGraphAnalysisType

* Dbg-Info based Type Matching (#791)

* moved stripPointerTypes() + debug prints

* MetadataKind approach

* I think we don't get around using getName()

* unittests still fail

* bugfix + cleanup

* Some cleanup

* Implement allocated-types collection in terms of debug info

* Fix libdeps

* Remove some unneeded includes

---------

Co-authored-by: Fabian Schiebel <52407375+fabianbs96@users.noreply.github.com>
Co-authored-by: Fabian Schiebel <fabian.schiebel@iem.fraunhofer.de>

* Some fixes in the IterativeIDESolver (#782)

* Fix the IterativeIDESolver by allowing to analyze problems that override extend() and combine()

* Use the logger in the IterativeIDESolver

* Make it possible to solve the IDEFeatureTaintAnalysis with the IterativeIDESolver

* Fix errors introduced by merge

* Bump dependencies (#784)

* Remove boost from BitVectorSet (#788)

* Remove boost from BitVectorSet

* Minor deboostifying

* Apply review comment on Bit-index-inbounds check + simplify operator<<

* GCC Compatibility (#787)

* Make phasar compile with gcc (g++-11) and uncover (and fix) two bugs related to json ser/de with LLVMAliasSet and LLVMBasedICFG that were not detected untio now, because of nlohmann's implicit conversions feature

* Address review comments

* Simplify isLLVMZeroValue according to the discussion in #787

* backup for rebase

* cmake works, g++ fails

* working version (with local hacks -20)

* added regex for filter, it is not working

* fixed filtering + cleanup

* basic ci impl, lib coverage, fixed release cmake error

* added cmake-scripts to submodule index

* set llvm-cov before code-cov script

* fixed version of llvm-cov

* testing v19 due to ci issues

* testing cov only when in debug build type

* fixed all build type checks

* added -v to see invocation of error in ci

* only run coverage when matrix.build is Debug

* Debug code + potential bug found?

* only run cov when PHASAR_DEBUG_LIBDEPS is off

* removed debug code, added messages for cov paths

* testing llvm cov 19

* hardcoded llvm-19 for cov

* adding llvm-19 as dependency for cov tools

* disabling asan for release for now

* removed unneccesary char

* development merge + json external

* Is the sanitizer the problem?

* fixed cmake failing when in debug w/o -DCODE_COVERAGE=ON

* added coverage report artifact uploading

* fixed ci

* fixed filtering not working correctly on runner

* docker sanitizer back ON + new matrix entry DebugCov

* Docker sanitizer still fails, disabling for now

* Removed coverage of unittests

* cleanup

* Some cleanup

* Add demangling to cov report

* artifact should be entire all-merged/ folder

* external diff

* removed rename of index.html

* Revert json downgrade

---------

Co-authored-by: Fabian Schiebel <52407375+fabianbs96@users.noreply.github.com>
Co-authored-by: Fabian Schiebel <fabian.schiebel@iem.fraunhofer.de>
Co-authored-by: Fabian Schiebel <fabianbs@mail.upb.de>
* fixed warnings coming from phasar code

* Fixed error + missed Z3 warnings

* changed tmpnam for mkstemp + maybe unused flags

* removed mkstemp, print ESG to llvm::errs()

---------

Co-authored-by: Fabian Schiebel <52407375+fabianbs96@users.noreply.github.com>
* iterative Tarjan Algorithm implemenmted

* SCCGeneric.h finished

* typeAssignmentGraph ported

* SCCGeneric.h, TypeTraits.h and TypeAssignmentGraph.h updated

* updated template types

* error corrections

* minor corrections

* SCCGeneric.h corrections

* SCC Tests added and VTACallGraphTest ported

* AnalysisConfig.h modified

* new test case in SCCGenericTest.cpp

* Update TAG, SCCs, and AdjacencyList to use TypedVector

* Update TAG to llvm::DIType instead of llvm::Type + fix VTACallGraphTest with opaque pointers

* Add call-graph tool to generate call-graphs for arbitrary LLVM IR files + compute CG statistics

* Add resolver-based TAG construction

* Fix SCCGenericTest

* Refine the concepts for GraphTraits + add some comments

* Some cleanup

* Add ground-truth to SCCGenericTest + fix error in Compressor introduced by merge + mino

* Some cleanup + some comments

* Adapt VTACallGraphTest to TestingSrcLocation + measure timing in call-graph tool  + some cleanup

* Fix AdjacencyList with TypedVector

* Fix stack-use-after-scope in TypedVector::operator[], materialized in minimizeGraph()

* some cleanup

* Replace Tarjan's algorithm with Pearce's algorithm for computing SCCs. This let's us compute SCCs and topological sorting in a single pass over the graph and also gets rid of the recursion

* Also test recursive version of SCC computation

* Use AliasIterator in VTA call-graph analysis

* minors

---------

Co-authored-by: bulletSpace <erik.binder@hotmail.com>
* Added workflow code + utility script

* Revert "Added workflow code + utility script"

This reverts commit 22b68c6.

* Testing hendrikmuhs ccache github action

* added key so different runs have their own ccache + moved ccache install

* Testing symlink variant

* Moving ccache step with key directly after checkout
* Requiring C++20

* Start replacing enable_if with requires

* Replace rest of enable_if with requires, except for AdjacencyList (see comment in file)

* Replace void_t-based SFINAE by requires and concepts

* minor

* Conceptify rest of phasar

* Fix clang dep scanning in CI and Dockerfile

* Replace  PSR_CONCEPT by concept

* minor cleanup

* Remove mentions of c++17

* adapt my mail-address in readme

---------

Co-authored-by: Fabian Schiebel <fabian.schiebel@iem.fraunhofer.de>
Co-authored-by: Fabian Schiebel <fabianbs@mail.upb.de>
Co-authored-by: Fabian Schiebel <52407375+fabianbs96@users.noreply.github.com>
* Make phasar compile with LLVM 16. One test (DIBasedTypeHierarchyTest) still fails

* Get rid of deprecation warnings due to LLVM 16

* Fix DIBasedTypeHierarchyTest with LLVM 16

* bump llvm version in dependency installation script

* bump llvm version in bootstrap script

TODO: The bootstrap script urgently needs to be updated! (see the different ways of installing llvm/boost, etc.)

* Start adding LLVM-17 compatibility

* Add some deprecations for LLVM-17 compatibility

* Fix removal of public Function::getBasicBlockList() in LLVM 16

* minor

* Fix compilation after merge
* Adjusted the ConstantEdgeFunction member templates to use trailing requires std::derived_from<ConcreteEF, ConstantEdgeFunction<L>> so Clang-llvm@16 can compile

* fix the formatting

* pre-commit

---------

Co-authored-by: Fabian Schiebel <52407375+fabianbs96@users.noreply.github.com>
Co-authored-by: Fabian Schiebel <fabian.schiebel@iem.fraunhofer.de>
* LLVM 17 compatibility

* Add CI-support for LLVM versions (16 + 17)

* Make coverage-report name dependent on the llvm version, so that we can have both simultaneously
* Add Nullable annotation to symbol-table getters in ProjectIRDBBase + improve global-lookup

* Additional API for CallGraphBase + minor optimization in CallGraph::deserialize()

* Minor changes in TypeTraits

begin/end in TypeTraits should take T& instead of T, because std::begin/end only work with lvalue references.
* Prevent summary-FF to be generated for arbitrary calls with sret

* Add unittest to catch fixed issue
* Add concepts for ProjectIRDB and IRDomain

* Add comcepts for CFG

* Add concepts for ICFG

* Fix and update module-header and c++20-module files

* LLVM 18 compatibility

* Add missing functioality to IRDB and change calls to the respective functions of CFG/ICFG to IRDB, wherever easily possible
* Add IDESolverAPIMixin to IterativeIDESolver + small  API-change in IDESolverAPIMixin::initialize()

* Testing the IDESolverAPIMixin on the IterativeIDESolver

* Fix example with solver API

* Fix ide-solver example
* Fix AllTop-compose

* Auto hashing of ConstantEdgeFunction + EdgeFunctionComposer

* Small optimization in IterativeIDESolver, based on AllTop
* Handle sink variables in IFDSTaintAnalysis

* Use auto-seeds in IFDS taint analysis
* Add alloc-sites-aware default problem + start adding IDEDroid-like formulation of field-sensitive IFDS

* Continue with CFL implementation (WIP)

* Fully compiling CFL-field-sens IFDS implementation

* Add some simple unittests (WIP)

* Add a hack to make the alias information partially field sensitive

* Change alias handling

* Add more (passing) XTaint tests

* Add sanitizer-customization-point + fix bug in combine() with EdgeIdentity

* Fix minor compilation issue

* Out-comment unnecessary stuff

* Convert CFLFieldSensTest to testingSrcLocation + add logger to FieldSensAllocSitesAwareIFDSProblem

* Optimize CFLFieldSensEdgeValue::applyTransforms

* Some cleanup + optimize creation of CFLFieldSensEdgeFunction

* minor

* Some optimizations

* Add corner case tests

* Fix edge-cases in CFL-Fieldsens analysis + make corresponding tests (xtaint 22,23) pass

* Small tweak in CFLFieldSensTest + minor

* Add structural sharing for Store- and Load sequences

* Some cleanup + small enhancement to LatticeDomain-join

* Add some comment

* Fix errors after merge

* minor

* Integrate CFL-fieldsens analysis into phasar-cli for IFDSTaintAnalysis

* Rename cfl fieldsens analysis problem + introduce own namespace for it

* Add generic mechanism to filter IFDS analysis results field-sensitively

* Properly handling non-existing value

* Add some comments + minor

* pre-commit

* Fix stack-use-after-return in IdBasedSolverResults

* small optimization based on alltop

---------

Co-authored-by: Fabian Schiebel <fabian.schiebel@uni-paderborn.de>
* Update code format

* Update pre-commit
#818)

Replace all brittle integer-ID-based IR.getInstruction(N) calls with
source-coordinate-based testingLocInIR() lookups using the
TestingSrcLocation facility from TestUtils/SrcCodeLocationEntry.h.
Also remove the now-unnecessary ValueAnnotationPass include and
resetValueID() call from SetUp().

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* changed test to src code based approach

* Shorten DefaultFlowFunctionTest a bit

---------

Co-authored-by: Fabian Schiebel <fabianbs@mail.upb.de>
Co-authored-by: Fabian Schiebel <52407375+fabianbs96@users.noreply.github.com>
* Initial PAGBuilder

* Add UnionFind + minor

* Optional type-erasure for PBStrategy + add PBStrategyCombinator

* Add basic union-find based Steensgaard-style alias analysis (WIP)

* Add utility for UnionFindAAResults intersection and caching + make LLVM-based UnionFindAA compile

* Add alias-iterator for union-find alias-results

* Add LLVMUnionFindAliasIterator + NonNullPtr

* Start adding unit-tests for union-find-AA

* Fix PBMixin + add some comments

* Added more basic and context tests for pointers

* Small fix in IndirectionSensUnionFindAA::onAddValue

* Add summary-based union-find alias-analysis

* context tests with different depth

* renamed tests

* More context tests

* fixed error

* removed bad basic tests + expanded unittest

* added context_08 to unittest, fails

* added more context tests to unittest

* Add soundness to BottomupUnionFindAA

* Add convenience-functions to compute union-find alias info for LLVM

* minor

* added more tests + fixed some old ones

* Fixed context unit tests

* added CtxSens and IndirSens unittests

* Some fix in BottomupUnionFindAA

* Fix error due to merge

* Start adding LLVMUnionFindAliasSet (WIP)

* Continue with LLVMUnionFindAliasSet

* Integrate Union-Find-AA into phasar-cli

* debug information

* disabled context_01 indir test due to a crash

* Add library summar to PAG

* fixed Indir Context01

* fixed LLVMAliasSet tests

* Fixed Indir Context02, 03 and 04_0

* Enable passing LLVMFunctionDataFlowFacts into LLVMPAGBuilder

* added missing allocas to ground truths 01 - 04_0

* Fixed ground truth of Indir Context Tests til 08

* new basic03, added basic04, gt fixes til 10_1

* Last of Indir Context tests fixed

* New tests

* fixed cmakelists for cpp tests

* Indir Unittests output comments + 01, 02 half done

* indir unittests

* Add TracingPBStrategy to dump the PAG

* new indir tests + fixed crashes

* fixed some unittests

* fixed half of ctx-sens Context tests

* Nearly all ctx-sens context tests done

* FuncByName TestingSrcLocation

* Update breaking changes

* Fix CtxSensUnionFindAATest.Indirection01

* commit for merge

* Half of Indir Tests fixed

* all unittests working now

* test tool

* Fix LLVMUnionFindAliasSet dependency to phasar_llvm_controlflow

* Add README

* minor

* added other two analyses + results table

* fixed table formatting

* Some cleanup

* Add ValueIdMap to use as cache for alias-sets

* minor

* pre-commit

* Cleanup + bug fixing

* Add Doxygen comments to new alias-analysis headers

Documents edge types, concepts, strategy combinators, analysis variants
(BasicUnionFindAA, CallingContextSens, IndirectionSens, BottomupUnionFindAA),
LLVM adapters, and utility types (RawAliasSet, UnionFind, ValueCompressor,
TypedArray, CallingContextConstructor).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* minor

* Make ValueIdMap allocator-aware

* Extend ValueIdMap STL API: range ctor, ilist ctor/assign, erase(const_iterator), operator==, max_size

- Add iterator-range constructor with O(1) reserve for random-access iterators
- Add initializer_list constructor (delegating to range ctor) and assignment operator,
  both accepting any V constructible to ValueT to avoid unnecessary copies
- Replace erase(iterator) with erase(const_iterator) per STL convention
- Add operator== hidden friend: compares IsSet bitsets first, then values directly
  via slot() without find(), for lower constant vs. a naive lookup-per-element
- Add max_size() capped at INT_MAX (llvm::BitVector internal limit)
- Add missing type aliases: difference_type, reference, const_reference, pointer,
  const_pointer
- Add #include <limits> and <initializer_list>

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* LLVM 17 compatibility

* Fix library-summary relocation with C++20 modules

* Fix new dependency of phasar_llvm_pointer to phasar_controlflow

* ci: ccache dedup per llvm version

* Silence self-assign warning in SelfAssign test for ValueIdMap

---------

Co-authored-by: mxHuber <huber.maximilian.leo@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@fabianbs96 fabianbs96 added this to the PhASAR 2604 milestone Apr 10, 2026
@fabianbs96 fabianbs96 self-assigned this Apr 10, 2026
@fabianbs96 fabianbs96 merged commit 6fae0d5 into master Apr 10, 2026
34 of 37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants