add nocapture attribute to llvm.mem* intrinsics and have tblgen

parse them.  tblgen doesn't yet do anything with this info though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62065 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2009-01-12 01:12:03 +00:00
parent c344371854
commit a62c302ddd
3 changed files with 29 additions and 16 deletions
+8 -4
View File
@@ -63,13 +63,17 @@ namespace llvm {
NoMem, ReadArgMem, ReadMem, WriteArgMem, WriteMem
} ModRef;
// This is set to true if the intrinsic is overloaded by its argument
// types.
/// This is set to true if the intrinsic is overloaded by its argument
/// types.
bool isOverloaded;
// isCommutative - True if the intrinsic is commutative.
//
/// isCommutative - True if the intrinsic is commutative.
bool isCommutative;
enum ArgAttribute {
NoCapture
};
std::vector<std::pair<unsigned, ArgAttribute> > ArgumentAttributes;
CodeGenIntrinsic(Record *R);
};
+4 -1
View File
@@ -546,7 +546,10 @@ CodeGenIntrinsic::CodeGenIntrinsic(Record *R) {
ModRef = WriteMem;
else if (Property->getName() == "Commutative")
isCommutative = true;
else
else if (Property->isSubClassOf("NoCapture")) {
unsigned ArgNo = Property->getValueAsInt("ArgNo");
ArgumentAttributes.push_back(std::make_pair(ArgNo, NoCapture));
} else
assert(0 && "Unknown property!");
}
}