aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/IntrinsicInst.h
diff options
context:
space:
mode:
authorMon P Wang <wangmp@apple.com>2010-04-02 18:04:15 +0000
committerMon P Wang <wangmp@apple.com>2010-04-02 18:04:15 +0000
commit703dd7c7eda9ffea68170bd9d8cdbc74322825dc (patch)
treed8d13ac711e9a0df3c65fd792c6cd834955925e1 /include/llvm/IntrinsicInst.h
parent9c0b8a8a72589ce295d0da96a0f0c8d0c917524f (diff)
downloadexternal_llvm-703dd7c7eda9ffea68170bd9d8cdbc74322825dc.zip
external_llvm-703dd7c7eda9ffea68170bd9d8cdbc74322825dc.tar.gz
external_llvm-703dd7c7eda9ffea68170bd9d8cdbc74322825dc.tar.bz2
Reapply address space patch after fixing an issue in MemCopyOptimizer.
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100191 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/IntrinsicInst.h')
-rw-r--r--include/llvm/IntrinsicInst.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/include/llvm/IntrinsicInst.h b/include/llvm/IntrinsicInst.h
index d86b33e..bd8a8c4 100644
--- a/include/llvm/IntrinsicInst.h
+++ b/include/llvm/IntrinsicInst.h
@@ -133,6 +133,13 @@ namespace llvm {
return getAlignmentCst()->getZExtValue();
}
+ ConstantInt *getVolatileCst() const {
+ return cast<ConstantInt>(const_cast<Value*>(getOperand(5)));
+ }
+ bool isVolatile() const {
+ return getVolatileCst()->getZExtValue() != 0;
+ }
+
/// getDest - This is just like getRawDest, but it strips off any cast
/// instructions that feed it, giving the original input. The returned
/// value is guaranteed to be a pointer.
@@ -155,7 +162,11 @@ namespace llvm {
void setAlignment(Constant* A) {
setOperand(4, A);
}
-
+
+ void setVolatile(Constant* V) {
+ setOperand(5, V);
+ }
+
const Type *getAlignmentType() const {
return getOperand(4)->getType();
}