[llvm] r258638 - [CUDA] Die gracefully when trying to output an LLVM alias.

Justin Lebar via llvm-commits llvm-commits at lists.llvm.org
Sat Jan 23 13:12:20 PST 2016


Author: jlebar
Date: Sat Jan 23 15:12:20 2016
New Revision: 258638

URL: http://llvm.org/viewvc/llvm-project?rev=258638&view=rev
Log:
[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

Added:
    llvm/trunk/test/CodeGen/NVPTX/alias.ll
Modified:
    llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp

Modified: llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp?rev=258638&r1=258637&r2=258638&view=diff
==============================================================================
--- llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp Sat Jan 23 15:12:20 2016
@@ -812,6 +812,11 @@ bool NVPTXAsmPrinter::doInitialization(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);
 

Added: llvm/trunk/test/CodeGen/NVPTX/alias.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/NVPTX/alias.ll?rev=258638&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/NVPTX/alias.ll (added)
+++ llvm/trunk/test/CodeGen/NVPTX/alias.ll Sat Jan 23 15:12:20 2016
@@ -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
+ at b = internal alias i32 (), i32 ()* @a




More information about the llvm-commits mailing list