mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
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:
@@ -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);
|
||||
};
|
||||
|
||||
@@ -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!");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user