diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 4c1a1f5..01f3982 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -12,7 +12,7 @@ jobs: runs-on: macos-latest strategy: matrix: - LLVM_VERSION: [18, 19] + LLVM_VERSION: [18, 19, 20, 21] steps: - uses: actions/checkout@v4 diff --git a/tests/Mutations/CallRemovalTests.cpp b/tests/Mutations/CallRemovalTests.cpp index 31b58cd..8578327 100644 --- a/tests/Mutations/CallRemovalTests.cpp +++ b/tests/Mutations/CallRemovalTests.cpp @@ -43,8 +43,12 @@ TEST(CallRemoval, canMutate) { voidFunctionType, llvm::Function::InternalLinkage, "call_void", module); auto ptrType = llvm::PointerType::get(context, 0); -#if LLVM_VERSION_MAJOR >= 19 - auto intrinsicFunction = llvm::Intrinsic::getDeclaration(&module, llvm::Intrinsic::vastart, {ptrType}); +#if LLVM_VERSION_MAJOR >= 20 + auto intrinsicFunction = + llvm::Intrinsic::getOrInsertDeclaration(&module, llvm::Intrinsic::vastart, { ptrType }); +#elif LLVM_VERSION_MAJOR >= 19 + auto intrinsicFunction = + llvm::Intrinsic::getDeclaration(&module, llvm::Intrinsic::vastart, { ptrType }); #else auto intrinsicFunction = llvm::Intrinsic::getDeclaration(&module, llvm::Intrinsic::vastart); #endif diff --git a/tests/Mutations/InstrinsicReplacementTests.cpp b/tests/Mutations/InstrinsicReplacementTests.cpp index 01c6369..e9b4f7b 100644 --- a/tests/Mutations/InstrinsicReplacementTests.cpp +++ b/tests/Mutations/InstrinsicReplacementTests.cpp @@ -33,10 +33,21 @@ TEST(IntrinsicReplacement, canMutate) { auto basicBlock = llvm::BasicBlock::Create(context, "entry", function); auto intrinsicType = llvm::Type::getInt8Ty(context); +#if LLVM_VERSION_MAJOR >= 20 + auto sadd = llvm::Intrinsic::getOrInsertDeclaration( + &module, llvm::Intrinsic::sadd_with_overflow, { intrinsicType }); +#else auto sadd = llvm::Intrinsic::getDeclaration( &module, llvm::Intrinsic::sadd_with_overflow, { intrinsicType }); +#endif + +#if LLVM_VERSION_MAJOR >= 20 + auto ssub = llvm::Intrinsic::getOrInsertDeclaration( + &module, llvm::Intrinsic::ssub_with_overflow, { intrinsicType }); +#else auto ssub = llvm::Intrinsic::getDeclaration( &module, llvm::Intrinsic::ssub_with_overflow, { intrinsicType }); +#endif auto op1 = llvm::ConstantInt::get(intrinsicType, 5, false); auto op2 = llvm::ConstantInt::get(intrinsicType, 40, false); @@ -58,8 +69,14 @@ TEST(IntrinsicReplacement, mutate) { auto basicBlock = llvm::BasicBlock::Create(context, "entry", function); auto intrinsicType = llvm::Type::getInt8Ty(context); + +#if LLVM_VERSION_MAJOR >= 20 + auto sadd = llvm::Intrinsic::getOrInsertDeclaration( + &module, llvm::Intrinsic::sadd_with_overflow, { intrinsicType }); +#else auto sadd = llvm::Intrinsic::getDeclaration( &module, llvm::Intrinsic::sadd_with_overflow, { intrinsicType }); +#endif auto op1 = llvm::ConstantInt::get(intrinsicType, 5, false); auto op2 = llvm::ConstantInt::get(intrinsicType, 40, false);