summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Lebar <jlebar@google.com>2016-01-23 21:12:20 +0000
committerJustin Lebar <jlebar@google.com>2016-01-23 21:12:20 +0000
commit3a5f5798a14e3d923cec8432a42986c93e2f2e76 (patch)
treeea8c25a86046f84222ccadedd917b37936374641
parent2a161f986fb063183284e1db30d3af2ea04c463c (diff)
downloadbcm5719-llvm-3a5f5798a14e3d923cec8432a42986c93e2f2e76.tar.gz
bcm5719-llvm-3a5f5798a14e3d923cec8432a42986c93e2f2e76.zip
[CUDA] Die gracefully when trying to output an LLVM alias.
Summary: Previously, we would just output "foo = bar" in the assembly, and then ptxas would choke. Now we die before emitting any invalid code. Reviewers: echristo Subscribers: jholewinski, llvm-commits, jhen, tra Differential Revision: http://reviews.llvm.org/D16490 llvm-svn: 258638
-rw-r--r--llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp5
-rw-r--r--llvm/test/CodeGen/NVPTX/alias.ll7
2 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
index c842cf86ae4..ebeeedaec69 100644
--- a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
@@ -812,6 +812,11 @@ bool NVPTXAsmPrinter::doInitialization(Module &M) {
const NVPTXTargetMachine &NTM = static_cast<const NVPTXTargetMachine &>(TM);
const NVPTXSubtarget STI(TT, CPU, FS, NTM);
+ if (M.alias_size()) {
+ report_fatal_error("Module has aliases, which NVPTX does not support.");
+ return true; // error
+ }
+
SmallString<128> Str1;
raw_svector_ostream OS1(Str1);
diff --git a/llvm/test/CodeGen/NVPTX/alias.ll b/llvm/test/CodeGen/NVPTX/alias.ll
new file mode 100644
index 00000000000..a2785192769
--- /dev/null
+++ b/llvm/test/CodeGen/NVPTX/alias.ll
@@ -0,0 +1,7 @@
+; RUN: not llc < %s -march=nvptx -mcpu=sm_20 2>&1 | FileCheck %s
+
+; Check that llc dies gracefully when given an alias.
+
+define i32 @a() { ret i32 0 }
+; CHECK: ERROR: Module has aliases
+@b = internal alias i32 (), i32 ()* @a
OpenPOWER on IntegriCloud