[PATCH] D105502: [SystemZ] Support the 'N' code for the odd register in inline-asm.

Nathan Chancellor via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 9 11:54:03 PDT 2021


nathanchance added a comment.

I see the following crash when compiling the -next Linux kernel, which contains https://git.kernel.org/next/linux-next/c/4516f355c55f6da231c494c6d2be7d863d02f13c, which mentions this commit directly:

  $ make -skj"$(nproc)" ARCH=s390 CC=clang CROSS_COMPILE=s390x-linux-gnu- O=build/s390 distclean defconfig drivers/s390/crypto/
  clang-13: /home/nathan/cbl/github/tc-build/llvm-project/llvm/lib/CodeGen/MachineRegisterInfo.cpp:285: void llvm::MachineRegisterInfo::addRegOperandToUseList(llvm::MachineOperand *): Assertion `Last && "Inconsistent use list"' failed.
  PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
  Stack dump:
  0.	Program arguments: /home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13 -cc1 -triple s390x-unknown-linux-gnu -S -disable-free -main-file-name ap_queue.c -mrelocation-model pic -pic-level 2 -pic-is-pie -fno-delete-null-pointer-checks -fwarn-stack-size=2048 -mframe-pointer=none -relaxed-aliasing -fmath-errno -fno-rounding-math -no-integrated-as -mconstructor-aliases -target-cpu zEC12 -target-feature +soft-float -mbackchain -mpacked-stack -msoft-float -mfloat-abi soft -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=limited -dwarf-version=4 -debugger-tuning=gdb -fcoverage-compilation-dir=/home/nathan/cbl/src/linux-next/build/s390 -nostdsysteminc -nobuiltininc -resource-dir /home/nathan/cbl/github/tc-build/build/llvm/stage1/lib/clang/13.0.0 -dependency-file drivers/s390/crypto/.ap_queue.o.d -MT drivers/s390/crypto/ap_queue.o -isystem /home/nathan/cbl/github/tc-build/build/llvm/stage1/lib/clang/13.0.0/include -include /home/nathan/cbl/src/linux-next/include/linux/compiler-version.h -include /home/nathan/cbl/src/linux-next/include/linux/kconfig.h -include /home/nathan/cbl/src/linux-next/include/linux/compiler_types.h -I /home/nathan/cbl/src/linux-next/arch/s390/include -I ./arch/s390/include/generated -I /home/nathan/cbl/src/linux-next/include -I ./include -I /home/nathan/cbl/src/linux-next/arch/s390/include/uapi -I ./arch/s390/include/generated/uapi -I /home/nathan/cbl/src/linux-next/include/uapi -I ./include/generated/uapi -D __KERNEL__ -D __PACK_STACK -D CONFIG_AS_CFI_VAL_OFFSET=1 -D CC_USING_NOP_MCOUNT -D CC_USING_FENTRY -I /home/nathan/cbl/src/linux-next/drivers/s390/crypto -I ./drivers/s390/crypto -D KBUILD_MODFILE=\"drivers/s390/crypto/ap\" -D KBUILD_BASENAME=\"ap_queue\" -D KBUILD_MODNAME=\"ap\" -D __KBUILD_MODNAME=kmod_ap -fmacro-prefix-map=/home/nathan/cbl/src/linux-next/= -O2 -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -Werror=unknown-warning-option -Wno-sign-compare -Wno-frame-address -Wno-address-of-packed-member -Wframe-larger-than=2048 -Wno-format-invalid-specifier -Wno-gnu -Wno-unused-but-set-variable -Wno-unused-const-variable -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-array-bounds -Werror=date-time -Werror=incompatible-pointer-types -Wno-initializer-overrides -Wno-format -Wno-sign-compare -Wno-format-zero-length -Wno-pointer-to-enum-cast -Wno-tautological-constant-out-of-range-compare -std=gnu89 -fno-dwarf-directory-asm -fdebug-compilation-dir=/home/nathan/cbl/src/linux-next/build/s390 -ferror-limit 19 -pg -mfentry -mnop-mcount -mrecord-mcount -fwrapv -fno-signed-char -fwchar-type=short -fno-signed-wchar -fgnuc-version=4.2.1 -fcolor-diagnostics -vectorize-loops -vectorize-slp -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/ap_queue-73312c.s -x c /home/nathan/cbl/src/linux-next/drivers/s390/crypto/ap_queue.c
  1.	<eof> parser at end of file
  2.	Code generation
  3.	Running pass 'Function Pass Manager' on module '/home/nathan/cbl/src/linux-next/drivers/s390/crypto/ap_queue.c'.
  4.	Running pass 'SystemZ Assembly Printer' on function '@ap_recv'
   #0 0x0000000002abf4c3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x2abf4c3)
   #1 0x0000000002abd30e llvm::sys::RunSignalHandlers() (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x2abd30e)
   #2 0x0000000002abf98a SignalHandler(int) Signals.cpp:0:0
   #3 0x00007f7231630870 __restore_rt sigaction.c:0:0
   #4 0x00007f72310ead22 raise (/usr/lib/libc.so.6+0x3cd22)
   #5 0x00007f72310d4862 abort (/usr/lib/libc.so.6+0x26862)
   #6 0x00007f72310d4747 _nl_load_domain.cold loadmsgcat.c:0:0
   #7 0x00007f72310e3616 (/usr/lib/libc.so.6+0x35616)
   #8 0x0000000001f95442 llvm::MachineRegisterInfo::addRegOperandToUseList(llvm::MachineOperand*) (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x1f95442)
   #9 0x000000000188a865 llvm::SystemZAsmPrinter::PrintAsmOperand(llvm::MachineInstr const*, unsigned int, char const*, llvm::raw_ostream&) SystemZAsmPrinter.cpp:0:0
  #10 0x00000000037dffdb llvm::AsmPrinter::emitInlineAsm(llvm::MachineInstr const*) const (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x37dffdb)
  #11 0x00000000037cd10e llvm::AsmPrinter::emitFunctionBody() (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x37cd10e)
  #12 0x000000000188aac5 llvm::AsmPrinter::runOnMachineFunction(llvm::MachineFunction&) SystemZAsmPrinter.cpp:0:0
  #13 0x0000000001f6553d llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x1f6553d)
  #14 0x00000000023f62a8 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x23f62a8)
  #15 0x00000000023fe771 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x23fe771)
  #16 0x00000000023f6da1 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x23f6da1)
  #17 0x00000000031aa4bf (anonymous namespace)::EmitAssemblyHelper::EmitAssemblyWithNewPassManager(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) BackendUtil.cpp:0:0
  #18 0x00000000031a4c1c clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x31a4c1c)
  #19 0x000000000363ed30 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) CodeGenAction.cpp:0:0
  #20 0x0000000003d582f4 clang::ParseAST(clang::Sema&, bool, bool) (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x3d582f4)
  #21 0x0000000003593240 clang::FrontendAction::Execute() (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x3593240)
  #22 0x00000000035064ff clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x35064ff)
  #23 0x0000000003638db7 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x3638db7)
  #24 0x000000000187bc28 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x187bc28)
  #25 0x000000000187977d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
  #26 0x00000000018794dd main (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x18794dd)
  #27 0x00007f72310d5b25 __libc_start_main (/usr/lib/libc.so.6+0x27b25)
  #28 0x00000000018763ee _start (/home/nathan/cbl/github/tc-build/build/llvm/stage1/bin/clang-13+0x18763ee)
  clang-13: error: unable to execute command: Aborted (core dumped)
  clang-13: error: clang frontend command failed due to signal (use -v to see invocation)
  ClangBuiltLinux clang version 13.0.0 (https://github.com/llvm/llvm-project a821df993def459009a0d8263af879fc35400a94)
  Target: s390x-unknown-linux-gnu
  Thread model: posix
  InstalledDir: /home/nathan/cbl/github/tc-build/build/llvm/stage1/bin
  clang-13: note: diagnostic msg: 
  ********************
  
  PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
  Preprocessed source(s) and associated run script(s) are located at:
  clang-13: note: diagnostic msg: /tmp/ap_queue-12da73.c
  clang-13: note: diagnostic msg: /tmp/ap_queue-12da73.sh
  clang-13: note: diagnostic msg: 
  
  ********************
  make[4]: *** [/home/nathan/cbl/src/linux-next/scripts/Makefile.build:272: drivers/s390/crypto/ap_queue.o] Error 254
  make[4]: Target '__build' not remade because of errors.
  make[3]: *** [/home/nathan/cbl/src/linux-next/scripts/Makefile.build:536: drivers/s390/crypto] Error 2
  make[3]: Target '__build' not remade because of errors.
  make[2]: *** [/home/nathan/cbl/src/linux-next/Makefile:1993: drivers/s390] Error 2
  make[2]: Target 'drivers/s390/crypto/' not remade because of errors.
  make[1]: *** [/home/nathan/cbl/src/linux-next/Makefile:358: __build_one_by_one] Error 2
  make[1]: Target 'distclean' not remade because of errors.
  make[1]: Target 'defconfig' not remade because of errors.
  make[1]: Target 'drivers/s390/crypto/' not remade because of errors.
  make: *** [Makefile:227: __sub-make] Error 2
  make: Target 'distclean' not remade because of errors.
  make: Target 'defconfig' not remade because of errors.
  make: Target 'drivers/s390/crypto/' not remade because of errors.

`cvise` spits out:

  $ cat ap_queue.i
  __int128 ap_dqap_resgr0_rp2_0;
  ap_dqap_resgr0() {
    asm("0:       ltgr    %N[rp2],%N[rp2]\n" : [rp2] "+&d"(ap_dqap_resgr0_rp2_0));
  }
  
  $ clang -O2 --target=s390x-linux-gnu -c -o /dev/null ap_queue.i
  clang: /home/nathan/cbl/github/tc-build/llvm-project/llvm/lib/CodeGen/MachineRegisterInfo.cpp:285: void llvm::MachineRegisterInfo::addRegOperandToUseList(llvm::MachineOperand *): Assertion `Last && "Inconsistent use list"' failed.
  ...


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D105502



More information about the llvm-commits mailing list