Index: lib/Target/NVPTX/NVPTXAsmPrinter.cpp =================================================================== --- lib/Target/NVPTX/NVPTXAsmPrinter.cpp +++ lib/Target/NVPTX/NVPTXAsmPrinter.cpp @@ -945,8 +945,16 @@ while (!global_list.empty()) global_list.remove(global_list.begin()); - // call doFinalization - bool ret = AsmPrinter::doFinalization(M); + // Aliases are emitted during AsmPrinter::doFinalization(), so bail before + // then if we have any. + bool ret = false; + if (M.alias_size()) { + report_fatal_error("Module has aliases, which NVPTX does not support."); + ret = true; // error + } + + if (!ret) + ret = AsmPrinter::doFinalization(M); // now we restore global variables for (i = 0; i < n; i++) Index: test/CodeGen/NVPTX/alias.ll =================================================================== --- /dev/null +++ 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