Quuxplusone / LLVMBugzillaTest

0 stars 0 forks source link

Deleting copy-assignment in struct nested in union template crashes clang. #14997

Open Quuxplusone opened 11 years ago

Quuxplusone commented 11 years ago
Bugzilla Link PR14997
Status NEW
Importance P enhancement
Reported by Peter Goodman (peter.goodman@gmail.com)
Reported on 2013-01-18 17:56:26 -0800
Last modified on 2013-02-26 14:49:21 -0800
Version trunk
Hardware PC Linux
CC dgregor@apple.com, llvm-bugs@lists.llvm.org, peter.goodman@gmail.com, rafael@espindo.la
Fixed by commit(s)
Attachments bug-ZKAnrN.cpp (1004 bytes, text/x-c++src)
bug-ZKAnrN.sh (562 bytes, application/x-shellscript)
Blocks
Blocked by
See also
Created attachment 9889
Example source code that produces bug.

Deleting a copy assignment operator in structure nested inside of a union
template partial specialization.

This might be illegal C++ (and there is a simple workaround), but it crashes
clang++.

clang version 3.3 (trunk 172567) (llvm/trunk 172566)
Target: x86_64-unknown-linux-gnu
Thread model: posix

Stack reported by clang:

clang: /home/pag/Code/llvm/tools/clang/lib/Sema/SemaLookup.cpp:2230:
clang::Sema::SpecialMemberOverloadResult*
clang::Sema::LookupSpecialMember(clang::CXXRecordDecl*,
clang::Sema::CXXSpecialMember, bool, bool, bool, bool, bool): Assertion
`CanDeclareSpecialMemberFunction(RD) && "doing special member lookup into
record that isn't fully complete"' failed.
0  clang           0x0000000001d44ba2 llvm::sys::PrintStackTrace(_IO_FILE*) + 34
1  clang           0x0000000001d447f9
2  libpthread.so.0 0x00007f56de2c7cb0
3  libc.so.6       0x00007f56dd516425 gsignal + 53
4  libc.so.6       0x00007f56dd519b8b abort + 379
5  libc.so.6       0x00007f56dd50f0ee
6  libc.so.6       0x00007f56dd50f192
7  clang           0x0000000000c4a7c1
clang::Sema::LookupSpecialMember(clang::CXXRecordDecl*,
clang::Sema::CXXSpecialMember, bool, bool, bool, bool, bool) + 1569
8  clang           0x0000000000b81c3c
9  clang           0x0000000000b81edc
10 clang           0x0000000000b82f65
clang::Sema::DiagnoseNontrivial(clang::CXXRecordDecl const*,
clang::Sema::CXXSpecialMember) + 85
11 clang           0x0000000000b0e9c7
clang::Sema::CheckNontrivialField(clang::FieldDecl*) + 471
12 clang           0x0000000000b17fec
clang::Sema::CheckFieldDecl(clang::DeclarationName, clang::QualType,
clang::TypeSourceInfo*, clang::RecordDecl*, clang::SourceLocation, bool,
clang::Expr*, clang::InClassInitStyle, clang::SourceLocation,
clang::AccessSpecifier, clang::NamedDecl*, clang::Declarator*) + 796
13 clang           0x0000000000b18776 clang::Sema::HandleField(clang::Scope*,
clang::RecordDecl*, clang::SourceLocation, clang::Declarator&, clang::Expr*,
clang::InClassInitStyle, clang::AccessSpecifier) + 662
14 clang           0x0000000000b74567
clang::Sema::ActOnCXXMemberDeclarator(clang::Scope*, clang::AccessSpecifier,
clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>,
clang::Expr*, clang::VirtSpecifiers const&, clang::InClassInitStyle) + 887
15 clang           0x0000000000a387e4
clang::Parser::ParseCXXClassMemberDeclaration(clang::AccessSpecifier,
clang::AttributeList*, clang::Parser::ParsedTemplateInfo const&,
clang::ParsingDeclRAIIObject*) + 3908
16 clang           0x0000000000a39f9c
clang::Parser::ParseCXXMemberSpecification(clang::SourceLocation,
clang::SourceLocation, clang::ParsedAttributes&, unsigned int, clang::Decl*) +
1660
17 clang           0x0000000000a3ba96
clang::Parser::ParseClassSpecifier(clang::tok::TokenKind,
clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo
const&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext,
clang::Parser::ParsedAttributesWithRange&) + 3894
18 clang           0x0000000000a23dec
clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&,
clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier,
clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*) + 4748
19 clang           0x0000000000a7acc7
clang::Parser::ParseSingleDeclarationAfterTemplate(unsigned int,
clang::Parser::ParsedTemplateInfo const&, clang::ParsingDeclRAIIObject&,
clang::SourceLocation&, clang::AccessSpecifier, clang::AttributeList*) + 951
20 clang           0x0000000000a7c04f
clang::Parser::ParseTemplateDeclarationOrSpecialization(unsigned int,
clang::SourceLocation&, clang::AccessSpecifier, clang::AttributeList*) + 719
21 clang           0x0000000000a7c52e
clang::Parser::ParseDeclarationStartingWithTemplate(unsigned int,
clang::SourceLocation&, clang::AccessSpecifier, clang::AttributeList*) + 158
22 clang           0x0000000000a2b501
clang::Parser::ParseDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, unsigned
int, clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&) + 545
23 clang           0x0000000000a15953
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) + 467
24 clang           0x0000000000a15e13
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 195
25 clang           0x0000000000a114bb clang::ParseAST(clang::Sema&, bool, bool)
+ 267
26 clang           0x00000000008c2d91 clang::CodeGenAction::ExecuteAction() + 97
27 clang           0x000000000075bf46 clang::FrontendAction::Execute() + 150
28 clang           0x000000000073f22d
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 349
29 clang           0x00000000007269a2
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1442
30 clang           0x00000000007200b8 cc1_main(char const**, char const**, char
const*, void*) + 984
31 clang           0x0000000000714b78 main + 4936
32 libc.so.6       0x00007f56dd50176d __libc_start_main + 237
33 clang           0x000000000071f079
Stack dump:
0.  Program arguments: /usr/local/bin/clang -cc1 -triple x86_64-unknown-linux-
gnu -emit-obj -mrelax-all -disable-free -main-file-name bug.cc -mrelocation-
model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases
-munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version
2.22.90.20120924 -momit-leaf-frame-pointer -resource-dir
/usr/local/bin/../lib/clang/3.3 -fmodule-cache-path /var/tmp/clang-module-cache
-internal-isystem /usr/include/c++/v1 -internal-isystem /usr/local/include -
internal-isystem /usr/local/bin/../lib/clang/3.3/include -internal-externc-
isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -
internal-externc-isystem /usr/include -std=c++11 -fdeprecated-macro -fdebug-
compilation-dir /home/pag/Code/RCU -ferror-limit 19 -fmessage-length 108 -
mstackrealign -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-
show-option -fcolor-diagnostics -backend-option -vectorize-loops -o /tmp/bug-
UoSft2.o -x c++ bug.cc
1.  bug.cc:38:11: current parser token ';'
2.  bug.cc:10:1: parsing struct/union/class body 'field_accessor'
clang: error: unable to execute command: Aborted (core dumped)
clang: error: clang frontend command failed due to signal (use -v to see
invocation)
clang version 3.3 (trunk 172567) (llvm/trunk 172566)
Target: x86_64-unknown-linux-gnu
Thread model: posix
clang: note: diagnostic msg: PLEASE submit a bug report to
http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, and
associated run script.
clang: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/bug-ZKAnrN.cpp
clang: note: diagnostic msg: /tmp/bug-ZKAnrN.sh
clang: note: diagnostic msg:

********************
Quuxplusone commented 11 years ago

Attached bug-ZKAnrN.cpp (1004 bytes, text/x-c++src): Example source code that produces bug.

Quuxplusone commented 11 years ago

Attached bug-ZKAnrN.sh (562 bytes, application/x-shellscript): Shell script generated by clang's bug reporter.