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: Assertion `(Previous.empty() || llvm::any_of(Previous, [](const NamedDecl *ND) { return ND->hasAttr<OverloadableAttr>(); })) && "Non-redecls shouldn't happen without overloadable present"' failed. #50192

Closed
chengniansun opened this issue Jun 24, 2021 · 2 comments
Assignees
Labels
bugzilla Issues migrated from bugzilla c clang:frontend Language frontend issues, e.g. anything involving "Sema"

Comments

@chengniansun
Copy link

chengniansun commented Jun 24, 2021

Bugzilla Link 50848
Version trunk
OS All
CC @DougGregor,@zygoloid

Extended Description

$ clang-trunk -v
clang version 13.0.0 (https://github.com/llvm/llvm-project.git 24d48d45cc302a6abeab139d87ba87f7a2335323)
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__((target("sse4.2"))) foo(int) {}
__attribute__((target("arch=sandybridge"))) foo(int);
foo(unsigned) {}

$ clang-trunk  mutant.c
mutant.c:1:35: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
__attribute__((target("sse4.2"))) foo(int) {}
                                  ^
mutant.c:1:42: warning: omitting the parameter name in a function definition is a C2x extension [-Wc2x-extensions]
__attribute__((target("sse4.2"))) foo(int) {}
                                         ^
mutant.c:1:45: warning: non-void function does not return a value [-Wreturn-type]
__attribute__((target("sse4.2"))) foo(int) {}
                                            ^
mutant.c:2:45: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
__attribute__((target("arch=sandybridge"))) foo(int);
                                            ^
mutant.c:3:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
foo(unsigned) {}
^
clang-13: /tmp/tmp.nPuVKAIgXI-clang-builder/llvm-project/clang/lib/Sema/SemaDecl.cpp:10974: bool clang::Sema::CheckFunctionDeclaration(clang::Scope*, clang::FunctionDecl*, clang::LookupResult&, bool): Assertion `(Previous.empty() || llvm::any_of(Previous, [](const NamedDecl *ND) { return ND->hasAttr<OverloadableAttr>(); })) && "Non-redecls shouldn't happen without overloadable present"' 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: /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/default_c_finding_folder/crash_20210623_042516_0004/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/default_c_finding_folder/crash_20210623_042516_0004/delta/perses_result -ferror-limit 19 -fgnuc-version=4.2.1 -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/mutant-9e265a.o -x c mutant.c
1.	mutant.c:3:15: current parser token '{'
 #&#8203;0 0x00005621289bf274 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #&#8203;1 0x00005621289bca2e SignalHandler(int) Signals.cpp:0:0
 #&#8203;2 0x00007fcbfee0f3c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x153c0)
 #&#8203;3 0x00007fcbfe8ae18b raise /build/glibc-ZN95T4/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #&#8203;4 0x00007fcbfe88d859 abort /build/glibc-ZN95T4/glibc-2.31/stdlib/abort.c:81:7
 #&#8203;5 0x00007fcbfe88d729 get_sysdep_segment_value /build/glibc-ZN95T4/glibc-2.31/intl/loadmsgcat.c:509:8
 #&#8203;6 0x00007fcbfe88d729 _nl_load_domain /build/glibc-ZN95T4/glibc-2.31/intl/loadmsgcat.c:970:34
 #&#8203;7 0x00007fcbfe89ef36 (/lib/x86_64-linux-gnu/libc.so.6+0x36f36)
 #&#8203;8 0x000056212aeaab0b clang::Sema::CheckFunctionDeclaration(clang::Scope*, clang::FunctionDecl*, clang::LookupResult&, bool) (/scratch/software/clang-trunk/bin/clang-13+0x5e3bb0b)
 #&#8203;9 0x000056212aeb0601 clang::Sema::ActOnFunctionDeclarator(clang::Scope*, clang::Declarator&, clang::DeclContext*, clang::TypeSourceInfo*, clang::LookupResult&, llvm::MutableArrayRef<clang::TemplateParameterList*>, bool&) (/scratch/software/clang-trunk/bin/clang-13+0x5e41601)
#&#8203;10 0x000056212aeb4011 clang::Sema::HandleDeclarator(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>) (/scratch/software/clang-trunk/bin/clang-13+0x5e45011)
#&#8203;11 0x000056212aeb4c17 clang::Sema::ActOnStartOfFunctionDef(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>, clang::Sema::SkipBodyInfo*) (/scratch/software/clang-trunk/bin/clang-13+0x5e45c17)
#&#8203;12 0x000056212abdf48f clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/scratch/software/clang-trunk/bin/clang-13+0x5b7048f)
#&#8203;13 0x000056212ac0c1c0 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/scratch/software/clang-trunk/bin/clang-13+0x5b9d1c0)
#&#8203;14 0x000056212abda066 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/scratch/software/clang-trunk/bin/clang-13+0x5b6b066)
#&#8203;15 0x000056212abda651 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.0) Parser.cpp:0:0
#&#8203;16 0x000056212abe0e57 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) (/scratch/software/clang-trunk/bin/clang-13+0x5b71e57)
#&#8203;17 0x000056212abe23ee clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, bool) (/scratch/software/clang-trunk/bin/clang-13+0x5b733ee)
#&#8203;18 0x000056212abd4c39 clang::ParseAST(clang::Sema&, bool, bool) (/scratch/software/clang-trunk/bin/clang-13+0x5b65c39)
#&#8203;19 0x0000562129b1bf98 clang::CodeGenAction::ExecuteAction() (/scratch/software/clang-trunk/bin/clang-13+0x4aacf98)
#&#8203;20 0x00005621293cae79 clang::FrontendAction::Execute() (/scratch/software/clang-trunk/bin/clang-13+0x435be79)
#&#8203;21 0x000056212935e0c6 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/scratch/software/clang-trunk/bin/clang-13+0x42ef0c6)
#&#8203;22 0x00005621294a8d00 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/scratch/software/clang-trunk/bin/clang-13+0x4439d00)
#&#8203;23 0x00005621262cfb06 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/scratch/software/clang-trunk/bin/clang-13+0x1260b06)
#&#8203;24 0x00005621262cbe48 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#&#8203;25 0x00005621261f90c6 main (/scratch/software/clang-trunk/bin/clang-13+0x118a0c6)
#&#8203;26 0x00007fcbfe88f0b3 __libc_start_main /build/glibc-ZN95T4/glibc-2.31/csu/../csu/libc-start.c:342:3
#&#8203;27 0x00005621262cb9be _start (/scratch/software/clang-trunk/bin/clang-13+0x125c9be)
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 24d48d45cc302a6abeab139d87ba87f7a2335323)
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-720ba0.c
clang-13: note: diagnostic msg: /tmp/mutant-720ba0.sh
clang-13: note: diagnostic msg:

********************
@tahonermann
Copy link
Contributor

This issue has been fixed in Clang trunk for Clang 15.

Previously, compilation aborted with an assertion failure in an asserts-enabled build and failed with a error: at most one overload for a given name may lack the 'overloadable' attribute diagnostic in a non-asserts-enabled build. Following the changes made in commit 8b6f1cbb21c58e255156aa32ac55530c807055a9, no assertion failures occur and a error: function declaration is missing 'target' attribute in a multiversioned function diagnostic is issued. See https://godbolt.org/z/31WrWofab. Changes to diagnose the type mismatch before diagnosing the missing target attribute would be a welcome improvement. In fact, such a diagnostic is currently missing; adding a target attribute to the last declaration suffices for compilation to be (incorrectly) successful. I filed issue #54892 to follow up on this.

@EugeneZelenko EugeneZelenko added the clang:frontend Language frontend issues, e.g. anything involving "Sema" label Apr 13, 2022
@llvmbot
Copy link
Collaborator

llvmbot commented Apr 13, 2022

@llvm/issue-subscribers-clang-frontend

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugzilla Issues migrated from bugzilla c clang:frontend Language frontend issues, e.g. anything involving "Sema"
Projects
None yet
Development

No branches or pull requests

4 participants