[llvm-commits] [llvm] r49335 - in /llvm/trunk/lib/VMCore: Function.cpp Verifier.cpp
Duncan Sands
baldrick at free.fr
Mon Apr 7 06:39:14 PDT 2008
Author: baldrick
Date: Mon Apr 7 08:39:11 2008
New Revision: 49335
URL: http://llvm.org/viewvc/llvm-project?rev=49335&view=rev
Log:
Make sure that intrinsics automagically get the
right parameter attributes no matter how they
are obtained.
Modified:
llvm/trunk/lib/VMCore/Function.cpp
llvm/trunk/lib/VMCore/Verifier.cpp
Modified: llvm/trunk/lib/VMCore/Function.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Function.cpp?rev=49335&r1=49334&r2=49335&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/Function.cpp (original)
+++ llvm/trunk/lib/VMCore/Function.cpp Mon Apr 7 08:39:11 2008
@@ -160,6 +160,10 @@
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() {
@@ -328,11 +332,9 @@
unsigned numTys) {
// There can never be multiple globals with the same name of different types,
// because intrinsics must be a specific type.
- Function *F =
+ return
cast<Function>(M->getOrInsertFunction(getName(id, Tys, numTys),
getType(id, Tys, numTys)));
- F->setParamAttrs(getParamAttrs(id));
- return F;
}
Value *IntrinsicInst::StripPointerCasts(Value *Ptr) {
Modified: llvm/trunk/lib/VMCore/Verifier.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Verifier.cpp?rev=49335&r1=49334&r2=49335&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/Verifier.cpp (original)
+++ llvm/trunk/lib/VMCore/Verifier.cpp Mon Apr 7 08:39:11 2008
@@ -1452,6 +1452,10 @@
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);
}
More information about the llvm-commits
mailing list