Skip to content

Commit db375e9

Browse files
committed
fix(bcf): Issue that no matching function for call to 'CreateNeg'
1 parent c3cd7c6 commit db375e9

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

llvm-project/llvm/lib/Passes/Obfuscation/BogusControlFlow.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,8 @@ BasicBlock *createAlteredBasicBlock(BasicBlock *basicBlock, const Twine &Name,
432432
case 0: // do nothing
433433
break;
434434
case 1:
435-
op = BinaryOperator::CreateNeg(i->getOperand(0), *var, &*i);
435+
// op = BinaryOperator::CreateNeg(i->getOperand(0), *var, &*i);
436+
op = BinaryOperator::CreateNeg(i->getOperand(0), *var, i); // Fix for llvm 19.0.0
436437
op1 = BinaryOperator::Create(Instruction::Add, op, i->getOperand(1),
437438
"gen", &*i);
438439
break;

llvm-project/llvm/lib/Passes/Obfuscation/Substitution.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ void SubstitutionPass::addNeg(BinaryOperator *bo) {
131131

132132
// Create sub
133133
if (bo->getOpcode() == Instruction::Add) {
134-
op = BinaryOperator::CreateNeg(bo->getOperand(1), "", bo);
134+
op = BinaryOperator::CreateNeg(bo->getOperand(1), "", bo->getIterator()); // Fix for llvm 19.0.0
135135
op =
136136
BinaryOperator::Create(Instruction::Sub, bo->getOperand(0), op, "", bo);
137137

@@ -152,10 +152,11 @@ void SubstitutionPass::addDoubleNeg(BinaryOperator *bo) {
152152
BinaryOperator *op, *op2 = NULL;
153153
UnaryOperator *op3, *op4;
154154
if (bo->getOpcode() == Instruction::Add) {
155-
op = BinaryOperator::CreateNeg(bo->getOperand(0), "", bo);
156-
op2 = BinaryOperator::CreateNeg(bo->getOperand(1), "", bo);
155+
BasicBlock::iterator insertPos = bo->getIterator(); // Fix for llvm 19.0.0
156+
op = BinaryOperator::CreateNeg(bo->getOperand(0), "", insertPos);
157+
op2 = BinaryOperator::CreateNeg(bo->getOperand(1), "", insertPos);
157158
op = BinaryOperator::Create(Instruction::Add, op, op2, "", bo);
158-
op = BinaryOperator::CreateNeg(op, "", bo);
159+
op = BinaryOperator::CreateNeg(op, "", insertPos);
159160
bo->replaceAllUsesWith(op);
160161
// Check signed wrap
161162
//op->setHasNoSignedWrap(bo->hasNoSignedWrap());
@@ -233,7 +234,7 @@ void SubstitutionPass::addRand2(BinaryOperator *bo) {
233234
void SubstitutionPass::subNeg(BinaryOperator *bo) {
234235
BinaryOperator *op = NULL;
235236
if (bo->getOpcode() == Instruction::Sub) {
236-
op = BinaryOperator::CreateNeg(bo->getOperand(1), "", bo);
237+
op = BinaryOperator::CreateNeg(bo->getOperand(1), "", bo->getIterator()); // Fix for llvm 19.0.0
237238
op = BinaryOperator::Create(Instruction::Add, bo->getOperand(0), op, "", bo);
238239
// Check signed wrap
239240
//op->setHasNoSignedWrap(bo->hasNoSignedWrap());

0 commit comments

Comments
 (0)