right parameter attributes no matter how they
are obtained.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49335
91177308-0d34-0410-b5e6-
96231b3b80d8
if (ParentModule)
ParentModule->getFunctionList().push_back(this);
if (ParentModule)
ParentModule->getFunctionList().push_back(this);
+
+ // Ensure intrinsics have the right parameter attributes.
+ if (unsigned IID = getIntrinsicID(true))
+ setParamAttrs(Intrinsic::getParamAttrs(Intrinsic::ID(IID)));
}
Function::~Function() {
}
Function::~Function() {
unsigned numTys) {
// There can never be multiple globals with the same name of different types,
// because intrinsics must be a specific type.
unsigned numTys) {
// There can never be multiple globals with the same name of different types,
// because intrinsics must be a specific type.
cast<Function>(M->getOrInsertFunction(getName(id, Tys, numTys),
getType(id, Tys, numTys)));
cast<Function>(M->getOrInsertFunction(getName(id, Tys, numTys),
getType(id, Tys, numTys)));
- F->setParamAttrs(getParamAttrs(id));
- return F;
}
Value *IntrinsicInst::StripPointerCasts(Value *Ptr) {
}
Value *IntrinsicInst::StripPointerCasts(Value *Ptr) {
F->getName().substr(Name.length()) + "'. It should be '" +
Suffix + "'", F);
}
F->getName().substr(Name.length()) + "'. It should be '" +
Suffix + "'", F);
}
+
+ // Check parameter attributes.
+ Assert1(F->getParamAttrs() == Intrinsic::getParamAttrs(ID),
+ "Intrinsic has wrong parameter attributes!", F);