[PATCH] D97449: [Diagnose] Unify MCContext and LLVMContext diagnosing

Nick Desaulniers via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 26 18:44:00 PST 2021


nickdesaulniers added a comment.

I tested this on some wacko LTO kernel build failure (https://github.com/ClangBuiltLinux/linux/issues/1269).  The error message went from:

> <unknown>:0: error: __ia32_compat_sys_sysctl changed binding to STB_GLOBAL

To:

  unimplemented
  UNREACHABLE executed at ../include/llvm/IR/DiagnosticInfo.h:1036!
  PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
  Stack dump:
  0.      Program arguments: ld.lld -m elf_x86_64 -z max-page-size=0x200000 -plugin-opt=-code-model=kernel -plugin-opt=-stack-alignment=8 -mllvm -import-instr-limit=5 -r -o vmlinux.o -T .tmp_lto.lds --whole-archive built-in.a --no-whole-archive --start-group lib/lib.a arch/x86/lib/lib.a --end-group
  1.      Running pass 'Function Pass Manager' on module 'ld-temp.o'.
  2.      Running pass 'X86 Assembly Printer' on function '@__ia32_compat_sys_sysctl'
   #0 0x0000000001bb2d13 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/android0/llvm-project/llvm/build/bin/lld+0x1bb2d13)
   #1 0x0000000001bb0a5e llvm::sys::RunSignalHandlers() (/android0/llvm-project/llvm/build/bin/lld+0x1bb0a5e)
   #2 0x0000000001bb330f SignalHandler(int) Signals.cpp:0:0
   #3 0x00007f5d1768b140 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14140)
   #4 0x00007f5d16fb5ce1 raise ./signal/../sysdeps/unix/sysv/linux/raise.c:51:1
   #5 0x00007f5d16f9f537 abort ./stdlib/abort.c:81:7
   #6 0x0000000001b2a261 (/android0/llvm-project/llvm/build/bin/lld+0x1b2a261)
   #7 0x0000000002cd3199 (/android0/llvm-project/llvm/build/bin/lld+0x2cd3199)
   #8 0x0000000001bb4479 lld::diagnosticHandler(llvm::DiagnosticInfo const&) (/android0/llvm-project/llvm/build/bin/lld+0x1bb4479)
   #9 0x0000000002bb03bf llvm::lto::LTOLLVMDiagnosticHandler::handleDiagnostics(llvm::DiagnosticInfo const&) LTO.cpp:0:0
  #10 0x000000000407f96c llvm::LLVMContext::diagnose(llvm::DiagnosticInfo const&) (/android0/llvm-project/llvm/build/bin/lld+0x407f96c)
  #11 0x0000000002cd30b4 std::_Function_handler<void (llvm::SMDiagnostic const&, bool, llvm::SourceMgr const&, std::vector<llvm::MDNode const*, std::allocator<llvm::MDNode const*> >&), llvm::MachineModuleInfoWrapperPass::doInitialization(llvm::Module&)::$_1>::_M_invoke(std::_Any_data const&, llvm::SMDiagnostic const&, bool&&, llvm::SourceMgr const&, std::vector<llvm::MDNode const*, std::allocator<llvm::MDNode const*> >&) MachineModuleInfo.cpp:0:0
  #12 0x0000000003e5e87a llvm::MCContext::reportCommon(llvm::SMLoc, std::function<void (llvm::SMDiagnostic&, llvm::SourceMgr const*)>) (/android0/llvm-project/llvm/build/bin/lld+0x3e5e87a)
  #13 0x0000000003e5aeee llvm::MCContext::reportError(llvm::SMLoc, llvm::Twine const&) (/android0/llvm-project/llvm/build/bin/lld+0x3e5aeee)
  #14 0x0000000003e6c7de llvm::MCELFStreamer::emitSymbolAttribute(llvm::MCSymbol*, llvm::MCSymbolAttr) (/android0/llvm-project/llvm/build/bin/lld+0x3e6c7de)
  #15 0x000000000271b6f2 llvm::AsmPrinter::emitFunctionHeader() (/android0/llvm-project/llvm/build/bin/lld+0x271b6f2)
  #16 0x000000000271cb3d llvm::AsmPrinter::emitFunctionBody() (/android0/llvm-project/llvm/build/bin/lld+0x271cb3d)
  #17 0x0000000002482556 llvm::X86AsmPrinter::runOnMachineFunction(llvm::MachineFunction&) X86AsmPrinter.cpp:0:0
  #18 0x0000000002cb37fe llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/android0/llvm-project/llvm/build/bin/lld+0x2cb37fe)
  #19 0x00000000040912a8 llvm::FPPassManager::runOnFunction(llvm::Function&) (/android0/llvm-project/llvm/build/bin/lld+0x40912a8)
  #20 0x00000000040979a8 llvm::FPPassManager::runOnModule(llvm::Module&) (/android0/llvm-project/llvm/build/bin/lld+0x40979a8)
  #21 0x0000000004091957 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/android0/llvm-project/llvm/build/bin/lld+0x4091957)



================
Comment at: llvm/test/CodeGen/AMDGPU/lds-initializer.ll:1-2
-; RUN: llc -march=amdgcn -mcpu=tahiti < %s -o /dev/null 2>&1 | FileCheck %s
-; RUN: llc -march=amdgcn -mcpu=tonga < %s -o /dev/null 2>&1 | FileCheck %s
+; RUN: not llc -march=amdgcn -mcpu=tahiti < %s -o /dev/null 2>&1 | FileCheck %s
+; RUN: not llc -march=amdgcn -mcpu=tonga < %s -o /dev/null 2>&1 | FileCheck %s
 
----------------
Does the addition of `not` mean that this test would have failed due to these changes? How come?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D97449/new/

https://reviews.llvm.org/D97449



More information about the cfe-commits mailing list