Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ICE on valid code: UNREACHABLE executed at llvm-project/clang/lib/CodeGen/CGExpr.cpp, __attribute__((naked)) #50541

Closed
chengniansun opened this issue Jul 23, 2021 · 3 comments
Assignees
Labels
bugzilla Issues migrated from bugzilla clang:codegen

Comments

@chengniansun
Copy link

Bugzilla Link 51197
Version trunk
OS All
CC @zygoloid

Extended Description

$ clang-trunk -v
clang version 13.0.0 (https://github.com/llvm/llvm-project.git ab5ac65)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/cnsun/usr/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@MX32
Selected multilib: .;@m64

$ cat mutant.c
attribute((naked)) foo(int len, char[len]) {}

$ clang-trunk mutant.c
mutant.c:1:24: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
attribute((naked)) foo(int len, char[len]) {}
^
mutant.c:1:41: warning: omitting the parameter name in a function definition is a C2x extension [-Wc2x-extensions]
attribute((naked)) foo(int len, char[len]) {}
^
DeclRefExpr for Decl not entered in LocalDeclMap?
UNREACHABLE executed at /tmp/tmp.Gcp8nSn9Hr-clang-builder/llvm-project/clang/lib/CodeGen/CGExpr.cpp:2794!
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: /scratch/software/clang-trunk/bin/clang-13 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -main-file-name mutant.c -mrelocation-model static -mframe-pointer=all -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/scratch/cnsun/workspace/perses-fuzzer/temp_testing_campaigns/default_finding_folder_c/crash_20210707_101723_1c32/delta/perses_result -resource-dir /scratch/software/clang-trunk/lib/clang/13.0.0 -c-isystem . -c-isystem /usr/local/include/cmsith -internal-isystem /scratch/software/clang-trunk/lib/clang/13.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir=/scratch/cnsun/workspace/perses-fuzzer/temp_testing_campaigns/default_finding_folder_c/crash_20210707_101723_1c32/delta/perses_result -ferror-limit 19 -fgnuc-version=4.2.1 -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/mutant-8f3361.o -x c mutant.c

  1. parser at end of file
  2. mutant.c:1:24: LLVM IR generation of declaration 'foo'
  3. mutant.c:1:24: Generating code for declaration 'foo'
    #​0 0x000055bbe2b60754 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
    #​1 0x000055bbe2b5de6e SignalHandler(int) Signals.cpp:0:0
    #​2 0x00007fd9c1a1d3c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x153c0)
    #​3 0x00007fd9c14bc18b raise /build/glibc-ZN95T4/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
    #​4 0x00007fd9c149b859 abort /build/glibc-ZN95T4/glibc-2.31/stdlib/abort.c:81:7
    #​5 0x000055bbe2aaa94e (/scratch/software/clang-trunk/bin/clang-13+0x3a6f94e)
    #​6 0x000055bbe3228da8 clang::CodeGen::CodeGenFunction::EmitDeclRefLValue(clang::DeclRefExpr const*) (/scratch/software/clang-trunk/bin/clang-13+0x41edda8)
    #​7 0x000055bbe3223ee9 clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*) (/scratch/software/clang-trunk/bin/clang-13+0x41e8ee9)
    #​8 0x000055bbe322e5fc clang::CodeGen::CodeGenFunction::EmitCheckedLValue(clang::Expr const*, clang::CodeGen::CodeGenFunction::TypeCheckKind) (/scratch/software/clang-trunk/bin/clang-13+0x41f35fc)
    #​9 0x000055bbe3269e21 (anonymous namespace)::ScalarExprEmitter::EmitLoadOfLValue(clang::Expr const*) CGExprScalar.cpp:0:0
    #​10 0x000055bbe3269454 (anonymous namespace)::ScalarExprEmitter::Visit(clang::Expr*) CGExprScalar.cpp:0:0
    #​11 0x000055bbe326fd53 (anonymous namespace)::ScalarExprEmitter::VisitCastExpr(clang::CastExpr*) CGExprScalar.cpp:0:0
    #​12 0x000055bbe32677ce (anonymous namespace)::ScalarExprEmitter::Visit(clang::Expr*) CGExprScalar.cpp:0:0
    #​13 0x000055bbe326982a clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) (/scratch/software/clang-trunk/bin/clang-13+0x422e82a)
    #​14 0x000055bbe2f63eec clang::CodeGen::CodeGenFunction::EmitVariablyModifiedType(clang::QualType) (/scratch/software/clang-trunk/bin/clang-13+0x3f28eec)
    #​15 0x000055bbe2f660ec clang::CodeGen::CodeGenFunction::StartFunction(clang::GlobalDecl, clang::QualType, llvm::Function*, clang::CodeGen::CGFunctionInfo const&, clang::CodeGen::FunctionArgList const&, clang::SourceLocation, clang::SourceLocation) (/scratch/software/clang-trunk/bin/clang-13+0x3f2b0ec)
    #​16 0x000055bbe2f6ae3f clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/scratch/software/clang-trunk/bin/clang-13+0x3f2fe3f)
    #​17 0x000055bbe2fc54c6 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/scratch/software/clang-trunk/bin/clang-13+0x3f8a4c6)
    #​18 0x000055bbe2fc0f35 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/scratch/software/clang-trunk/bin/clang-13+0x3f85f35)
    #​19 0x000055bbe2fc139b clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) (/scratch/software/clang-trunk/bin/clang-13+0x3f8639b)
    #​20 0x000055bbe2fc9eb2 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (.part.0) CodeGenModule.cpp:0:0
    #​21 0x000055bbe3cf6179 (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) ModuleBuilder.cpp:0:0
    #​22 0x000055bbe3ce8380 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) (/scratch/software/clang-trunk/bin/clang-13+0x4cad380)
    #​23 0x000055bbe4db8d34 clang::ParseAST(clang::Sema&, bool, bool) (/scratch/software/clang-trunk/bin/clang-13+0x5d7dd34)
    #​24 0x000055bbe3cf32f8 clang::CodeGenAction::ExecuteAction() (/scratch/software/clang-trunk/bin/clang-13+0x4cb82f8)
    #​25 0x000055bbe3591419 clang::FrontendAction::Execute() (/scratch/software/clang-trunk/bin/clang-13+0x4556419)
    #​26 0x000055bbe352707e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/scratch/software/clang-trunk/bin/clang-13+0x44ec07e)
    #​27 0x000055bbe366f710 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/scratch/software/clang-trunk/bin/clang-13+0x4634710)
    #​28 0x000055bbe03db15d cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/scratch/software/clang-trunk/bin/clang-13+0x13a015d)
    #​29 0x000055bbe03d74a8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
    #​30 0x000055bbe0302126 main (/scratch/software/clang-trunk/bin/clang-13+0x12c7126)
    #​31 0x00007fd9c149d0b3 __libc_start_main /build/glibc-ZN95T4/glibc-2.31/csu/../csu/libc-start.c:342:3
    #​32 0x000055bbe03d701e _start (/scratch/software/clang-trunk/bin/clang-13+0x139c01e)
    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)
    clang version 13.0.0 (https://github.com/llvm/llvm-project.git ab5ac65)
    Target: x86_64-unknown-linux-gnu
    Thread model: posix
    InstalledDir: /home/cnsun/usr/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/mutant-c1dca7.c
clang-13: note: diagnostic msg: /tmp/mutant-c1dca7.sh
clang-13: note: diagnostic msg:


@llvmbot llvmbot transferred this issue from llvm/llvm-bugzilla-archive Dec 11, 2021
@AaronBallman AaronBallman self-assigned this Mar 23, 2022
@AaronBallman
Copy link
Collaborator

Note, this requires an assertions build to trigger the ICE.

https://reviews.llvm.org/D122341 should improve the situation.

@EugeneZelenko EugeneZelenko added clang:codegen and removed clang Clang issues not falling into any other category labels Mar 23, 2022
@llvmbot
Copy link
Collaborator

llvmbot commented Mar 23, 2022

@llvm/issue-subscribers-clang-codegen

@AaronBallman
Copy link
Collaborator

This should now be fixed in 488c772.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugzilla Issues migrated from bugzilla clang:codegen
Projects
None yet
Development

No branches or pull requests

4 participants