diff options
author | Eli Bendersky <eliben@google.com> | 2014-03-18 23:51:07 +0000 |
---|---|---|
committer | Eli Bendersky <eliben@google.com> | 2014-03-18 23:51:07 +0000 |
commit | 21354ec60d0dde4f1995d816701b895c57f806bd (patch) | |
tree | c00e675912eb5ddca01b813594beb3b9d03dd719 /utils/TableGen/CodeGenTarget.cpp | |
parent | cae25dcbf7347d1a04f8746aedd6d6600b528a40 (diff) | |
download | llvm-21354ec60d0dde4f1995d816701b895c57f806bd.tar.gz llvm-21354ec60d0dde4f1995d816701b895c57f806bd.tar.bz2 llvm-21354ec60d0dde4f1995d816701b895c57f806bd.tar.xz |
Expose "noduplicate" attribute as a property for intrinsics.
The "noduplicate" function attribute exists to prevent certain optimizations
from duplicating calls to the function. This is important on platforms where
certain function call duplications are unsafe (for example execution barriers
for CUDA and OpenCL).
This patch makes it possible to specify intrinsics as "noduplicate" and
translates that to the appropriate function attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204200 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/CodeGenTarget.cpp')
-rw-r--r-- | utils/TableGen/CodeGenTarget.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp index 1f47675eb5..884af4c7cb 100644 --- a/utils/TableGen/CodeGenTarget.cpp +++ b/utils/TableGen/CodeGenTarget.cpp @@ -446,6 +446,7 @@ CodeGenIntrinsic::CodeGenIntrinsic(Record *R) { isCommutative = false; canThrow = false; isNoReturn = false; + isNoDuplicate = false; if (DefName.size() <= 4 || std::string(DefName.begin(), DefName.begin() + 4) != "int_") @@ -570,6 +571,8 @@ CodeGenIntrinsic::CodeGenIntrinsic(Record *R) { isCommutative = true; else if (Property->getName() == "Throws") canThrow = true; + else if (Property->getName() == "IntrNoDuplicate") + isNoDuplicate = true; else if (Property->getName() == "IntrNoReturn") isNoReturn = true; else if (Property->isSubClassOf("NoCapture")) { |