summaryrefslogtreecommitdiff
path: root/lib/Target/NVPTX/NVPTXTargetMachine.cpp
diff options
context:
space:
mode:
authorJustin Holewinski <jholewinski@nvidia.com>2013-03-30 14:29:25 +0000
committerJustin Holewinski <jholewinski@nvidia.com>2013-03-30 14:29:25 +0000
commit21fdcb02716f5eae097abfd2f44e40563e90180a (patch)
treea22b3d6bd88893175984ae4e699c41b9ccad8b55 /lib/Target/NVPTX/NVPTXTargetMachine.cpp
parent3639ce2575660a0e6938d2e84e8bd9a738fd7051 (diff)
downloadllvm-21fdcb02716f5eae097abfd2f44e40563e90180a.tar.gz
llvm-21fdcb02716f5eae097abfd2f44e40563e90180a.tar.bz2
llvm-21fdcb02716f5eae097abfd2f44e40563e90180a.tar.xz
[NVPTX] Add NVVMReflect pass to allow compile-time selection of
specific code paths. This allows us to write code like: if (__nvvm_reflect("FOO")) // Do something else // Do something else and compile into a library, then give "FOO" a value at kernel compile-time so the check becomes a no-op. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178416 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/NVPTX/NVPTXTargetMachine.cpp')
-rw-r--r--lib/Target/NVPTX/NVPTXTargetMachine.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/lib/Target/NVPTX/NVPTXTargetMachine.cpp
index 17cd9b75ba..67ca6b58e5 100644
--- a/lib/Target/NVPTX/NVPTXTargetMachine.cpp
+++ b/lib/Target/NVPTX/NVPTXTargetMachine.cpp
@@ -47,6 +47,10 @@
using namespace llvm;
+namespace llvm {
+void initializeNVVMReflectPass(PassRegistry&);
+}
+
extern "C" void LLVMInitializeNVPTXTarget() {
// Register the target.
RegisterTargetMachine<NVPTXTargetMachine32> X(TheNVPTXTarget32);
@@ -55,6 +59,9 @@ extern "C" void LLVMInitializeNVPTXTarget() {
RegisterMCAsmInfo<NVPTXMCAsmInfo> A(TheNVPTXTarget32);
RegisterMCAsmInfo<NVPTXMCAsmInfo> B(TheNVPTXTarget64);
+ // FIXME: This pass is really intended to be invoked during IR optimization,
+ // but it's very NVPTX-specific.
+ initializeNVVMReflectPass(*PassRegistry::getPassRegistry());
}
NVPTXTargetMachine::NVPTXTargetMachine(