Attribute::AttrKind AK[] = { Attribute::NoCapture };
AttributeSet AS = AttributeSet::get(context, 0, AK);
- Argument *A = F1->arg_begin();
+ Argument *A = &*F1->arg_begin();
A->addAttr(AS);
SmallVector<ReturnInst*, 4> Returns;
SmallVector<ReturnInst*, 4> Returns;
ValueToValueMapTy VMap;
- VMap[F1->arg_begin()] = F2->arg_begin();
+ VMap[&*F1->arg_begin()] = &*F2->arg_begin();
CloneFunctionInto(F2, F1, VMap, false, Returns);
EXPECT_EQ(CallingConv::Cold, F2->getCallingConv());
auto *File = DBuilder.createFile("filename.c", "/file/dir/");
DITypeRefArray ParamTypes = DBuilder.getOrCreateTypeArray(None);
DISubroutineType *FuncType =
- DBuilder.createSubroutineType(File, ParamTypes);
+ DBuilder.createSubroutineType(ParamTypes);
auto *CU =
DBuilder.createCompileUnit(dwarf::DW_LANG_C99, "filename.c",
"/file/dir", "CloneFunc", false, "", 0);
auto *Subprogram = DBuilder.createFunction(
- CU, "f", "f", File, 4, FuncType, true, true, 3, 0, false, OldFunc);
+ CU, "f", "f", File, 4, FuncType, true, true, 3, 0, false);
+ OldFunc->setSubprogram(Subprogram);
// Function body
BasicBlock* Entry = BasicBlock::Create(C, "", OldFunc);
auto *Sub2 = cast<DISubprogram>(*Iter);
EXPECT_TRUE(
- (Sub1->getFunction() == OldFunc && Sub2->getFunction() == NewFunc) ||
- (Sub1->getFunction() == NewFunc && Sub2->getFunction() == OldFunc));
+ (Sub1 == OldFunc->getSubprogram() && Sub2 == NewFunc->getSubprogram()) ||
+ (Sub1 == NewFunc->getSubprogram() && Sub2 == OldFunc->getSubprogram()));
}
// Test that the new subprogram entry was not added to the CU which doesn't
// But that they belong to different functions
auto *OldSubprogram = cast<DISubprogram>(OldDL.getScope());
auto *NewSubprogram = cast<DISubprogram>(NewDL.getScope());
- EXPECT_EQ(OldFunc, OldSubprogram->getFunction());
- EXPECT_EQ(NewFunc, NewSubprogram->getFunction());
+ EXPECT_EQ(OldFunc->getSubprogram(), OldSubprogram);
+ EXPECT_EQ(NewFunc->getSubprogram(), NewSubprogram);
}
++OldIter;
getParent()->getParent());
// Old variable must belong to the old function
- EXPECT_EQ(OldFunc,
- cast<DISubprogram>(OldIntrin->getVariable()->getScope())
- ->getFunction());
+ EXPECT_EQ(OldFunc->getSubprogram(),
+ cast<DISubprogram>(OldIntrin->getVariable()->getScope()));
// New variable must belong to the New function
- EXPECT_EQ(NewFunc,
- cast<DISubprogram>(NewIntrin->getVariable()->getScope())
- ->getFunction());
+ EXPECT_EQ(NewFunc->getSubprogram(),
+ cast<DISubprogram>(NewIntrin->getVariable()->getScope()));
} else if (DbgValueInst* OldIntrin = dyn_cast<DbgValueInst>(&OldI)) {
DbgValueInst* NewIntrin = dyn_cast<DbgValueInst>(&NewI);
EXPECT_TRUE(NewIntrin);
// Old variable must belong to the old function
- EXPECT_EQ(OldFunc,
- cast<DISubprogram>(OldIntrin->getVariable()->getScope())
- ->getFunction());
+ EXPECT_EQ(OldFunc->getSubprogram(),
+ cast<DISubprogram>(OldIntrin->getVariable()->getScope()));
// New variable must belong to the New function
- EXPECT_EQ(NewFunc,
- cast<DISubprogram>(NewIntrin->getVariable()->getScope())
- ->getFunction());
+ EXPECT_EQ(NewFunc->getSubprogram(),
+ cast<DISubprogram>(NewIntrin->getVariable()->getScope()));
}
++OldIter;