diff --git a/lib/PhasarLLVM/ControlFlow/VTA/TypeAssignmentGraph.cpp b/lib/PhasarLLVM/ControlFlow/VTA/TypeAssignmentGraph.cpp index e1fb2a84ce..f337da1060 100644 --- a/lib/PhasarLLVM/ControlFlow/VTA/TypeAssignmentGraph.cpp +++ b/lib/PhasarLLVM/ControlFlow/VTA/TypeAssignmentGraph.cpp @@ -475,7 +475,9 @@ static void handleCall(const llvm::CallBase *Call, TypeAssignmentGraph &TAG, } const auto HandleCallTarget = [&](const llvm::Function *Callee) { - handleEntryForCall(Call, *CSNod, TAG, Callee, VTP); + if (CSNod) { + handleEntryForCall(Call, *CSNod, TAG, Callee, VTP); + } if (Callee->isDeclaration()) { // XXX: Integrate with getLibCSummary() diff --git a/unittests/PhasarLLVM/ControlFlow/LLVMBasedCFGTest.cpp b/unittests/PhasarLLVM/ControlFlow/LLVMBasedCFGTest.cpp index 546306de0e..aea86712b8 100644 --- a/unittests/PhasarLLVM/ControlFlow/LLVMBasedCFGTest.cpp +++ b/unittests/PhasarLLVM/ControlFlow/LLVMBasedCFGTest.cpp @@ -249,6 +249,11 @@ PHASAR_SKIP_TEST(TEST(LLVMBasedCFGTest, HandlesCppStandardType) { LLVMBasedCFG CFG; auto *O = M->getFunction( "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev"); + if (!O) { + // with libstdc++ from gcc15, D2 is generated instead of D1 + O = M->getFunction( + "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev"); + } ASSERT_EQ(CFG.getSpecialMemberFunctionType(O), SpecialMemberFunctionType::Destructor); }) diff --git a/unittests/PhasarLLVM/DataFlow/IfdsIde/Problems/IFDSConstAnalysisTest.cpp b/unittests/PhasarLLVM/DataFlow/IfdsIde/Problems/IFDSConstAnalysisTest.cpp index 92a1a891d1..68402e4275 100644 --- a/unittests/PhasarLLVM/DataFlow/IfdsIde/Problems/IFDSConstAnalysisTest.cpp +++ b/unittests/PhasarLLVM/DataFlow/IfdsIde/Problems/IFDSConstAnalysisTest.cpp @@ -64,7 +64,7 @@ class IFDSConstAnalysisTest : public ::testing::Test { for (const auto *Fact : Facts) { if (isAllocaInstOrHeapAllocaFunction(Fact) || (llvm::isa(Fact) && - !Constproblem->isZeroValue(Fact))) { + !llvm::cast(Fact)->isConstant())) { llvm::outs() << "Found *Fact: " << *Fact << "\n"; AllMutableAllocas.insert(Fact); } @@ -439,7 +439,7 @@ TEST_F(IFDSConstAnalysisTest, HandleSTLArrayTest_02) { Llvmconstsolver.solve(); std::set GroundTruth = { LineColFun{4, 0, "main"}, - GlobalVar{"__const.main.a"}, + // GlobalVar{"__const.main.a"}, -- not portable across libstdc++ versions }; compareResults(GroundTruth, Llvmconstsolver); @@ -454,8 +454,9 @@ PHASAR_SKIP_TEST(TEST_F(IFDSConstAnalysisTest, HandleSTLArrayTest_03) { Llvmconstsolver.solve(); compareResults( { - GlobalVar{"__const.main.a"}, - GlobalVar{".str"}, + // GlobalVar{"__const.main.a"},-- not portable across libstdc++ + // versions + // GlobalVar{".str"},-- not portable across libstdc++ versions LineColFun{4, 0, "main"}, }, Llvmconstsolver);