[llvm-bugs] [Bug 44514] New: Assertion with invalid exception specification

via llvm-bugs llvm-bugs at lists.llvm.org
Fri Jan 10 12:17:39 PST 2020


https://bugs.llvm.org/show_bug.cgi?id=44514

            Bug ID: 44514
           Summary: Assertion with invalid exception specification
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P
         Component: -New Bugs
          Assignee: unassignedclangbugs at nondot.org
          Reporter: aaron at aaronballman.com
                CC: htmldeveloper at gmail.com, llvm-bugs at lists.llvm.org,
                    neeilans at live.com, richard-llvm at metafoo.co.uk

Given the following invalid code:

void f();
struct S {
  void func(void) const & noexcept(f());
};


I get a failed assertion:

..\..\test.cpp:3:36: error: value of type 'void' is not contextually
convertible to 'bool'
  void func(void) const & noexcept(f());
                                   ^~~
Assertion failed: TypeLoc::getFullDataSizeForType(Updated) ==
TypeLoc::getFullDataSizeForType(TSInfo->getType()) && "TypeLoc size mismatch
from updating exception specification", file
C:\llvm-project\clang\lib\AST\ASTContext.cpp, line 2970
Stack dump:
0.      Program arguments: C:\CMakeBuilds\build\x64-Debug\bin\clang.exe -cc1
-ast-dump=json ..\..\test.cpp
1.      <eof> parser at end of file
2.      ..\..\test.cpp:2:1: parsing struct/union/class body 'S'
 #0 0x00007ff7cd8ece9c HandleAbort
C:\llvm-project\llvm\lib\Support\Windows\Signals.inc:408:0
 #1 0x00007fff9271c3e1 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x6c3e1)
 #2 0x00007fff9271e039 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x6e039)
 #3 0x00007fff92723c65 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x73c65)
 #4 0x00007fff927237d7 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x737d7)
 #5 0x00007fff92721841 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x71841)
 #6 0x00007fff927241cf (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x741cf)
 #7 0x00007ff7d2d97157 clang::ASTContext::adjustExceptionSpec(class
clang::FunctionDecl *, struct clang::FunctionProtoType::ExceptionSpecInfo const
&, bool) C:\llvm-project\clang\lib\AST\ASTContext.cpp:2968:0
 #8 0x00007ff7d18d942d clang::Sema::actOnDelayedExceptionSpecification(class
clang::Decl *, enum clang::ExceptionSpecificationType, class
clang::SourceRange, class llvm::ArrayRef<class clang::OpaquePtr<class
clang::QualType>>, class llvm::ArrayRef<class clang::SourceRange>, class
clang::Expr *) C:\llvm-project\clang\lib\Sema\SemaDeclCXX.cpp:17289:0
 #9 0x00007ff7d16788fb clang::Parser::ParseLexedMethodDeclaration(struct
clang::Parser::LateParsedMethodDeclaration &)
C:\llvm-project\clang\lib\Parse\ParseCXXInlineMethods.cpp:456:0
#10 0x00007ff7d1676af1
clang::Parser::LateParsedMethodDeclaration::ParseLexedMethodDeclarations(void)
C:\llvm-project\clang\lib\Parse\ParseCXXInlineMethods.cpp:253:0
#11 0x00007ff7d1677b4e clang::Parser::ParseLexedMethodDeclarations(struct
clang::Parser::ParsingClass &)
C:\llvm-project\clang\lib\Parse\ParseCXXInlineMethods.cpp:292:0
#12 0x00007ff7d16f00bb clang::Parser::ParseCXXMemberSpecification(class
clang::SourceLocation, class clang::SourceLocation, struct
clang::Parser::ParsedAttributesWithRange &, unsigned int, class clang::Decl *)
C:\llvm-project\clang\lib\Parse\ParseDeclCXX.cpp:3368:0
#13 0x00007ff7d16eea08 clang::Parser::ParseClassSpecifier(enum
clang::tok::TokenKind, class clang::SourceLocation, class clang::DeclSpec &,
struct clang::Parser::ParsedTemplateInfo const &, enum clang::AccessSpecifier,
bool, enum clang::Parser::DeclSpecContext, struct
clang::Parser::ParsedAttributesWithRange &)
C:\llvm-project\clang\lib\Parse\ParseDeclCXX.cpp:1959:0
#14 0x00007ff7d1635e09 clang::Parser::ParseDeclarationSpecifiers(class
clang::DeclSpec &, struct clang::Parser::ParsedTemplateInfo const &, enum
clang::AccessSpecifier, enum clang::Parser::DeclSpecContext, class
clang::Parser::LateParsedAttrList *)
C:\llvm-project\clang\lib\Parse\ParseDecl.cpp:3869:0
#15 0x00007ff7d15ee4a2 clang::Parser::ParseDeclOrFunctionDefInternal(struct
clang::Parser::ParsedAttributesWithRange &, class clang::ParsingDeclSpec &,
enum clang::AccessSpecifier) C:\llvm-project\clang\lib\Parse\Parser.cpp:1010:0
#16 0x00007ff7d15ee3b0
clang::Parser::ParseDeclarationOrFunctionDefinition(struct
clang::Parser::ParsedAttributesWithRange &, class clang::ParsingDeclSpec *,
enum clang::AccessSpecifier) C:\llvm-project\clang\lib\Parse\Parser.cpp:1115:0
#17 0x00007ff7d15eddd6 clang::Parser::ParseExternalDeclaration(struct
clang::Parser::ParsedAttributesWithRange &, class clang::ParsingDeclSpec *)
C:\llvm-project\clang\lib\Parse\Parser.cpp:935:0
#18 0x00007ff7d15e8aab clang::Parser::ParseTopLevelDecl(class
clang::OpaquePtr<class clang::DeclGroupRef> &, bool)
C:\llvm-project\clang\lib\Parse\Parser.cpp:686:0
#19 0x00007ff7d15e4a56 clang::ParseAST(class clang::Sema &, bool, bool)
C:\llvm-project\clang\lib\Parse\ParseAST.cpp:158:0
#20 0x00007ff7ceb0b76b clang::ASTFrontendAction::ExecuteAction(void)
C:\llvm-project\clang\lib\Frontend\FrontendAction.cpp:1045:0
#21 0x00007ff7ceb0b0fc clang::FrontendAction::Execute(void)
C:\llvm-project\clang\lib\Frontend\FrontendAction.cpp:940:0
#22 0x00007ff7cea7cef2 clang::CompilerInstance::ExecuteAction(class
clang::FrontendAction &)
C:\llvm-project\clang\lib\Frontend\CompilerInstance.cpp:965:0
#23 0x00007ff7cece0bb3 clang::ExecuteCompilerInvocation(class
clang::CompilerInstance *)
C:\llvm-project\clang\lib\FrontendTool\ExecuteCompilerInvocation.cpp:290:0
#24 0x00007ff7c9a6005b cc1_main(class llvm::ArrayRef<char const *>, char const
*, void *) C:\llvm-project\clang\tools\driver\cc1_main.cpp:239:0
#25 0x00007ff7c9a4b52d ExecuteCC1Tool
C:\llvm-project\clang\tools\driver\driver.cpp:309:0
#26 0x00007ff7c9a4bdf9 main C:\llvm-project\clang\tools\driver\driver.cpp:382:0
#27 0x00007ff7d3be9c09 invoke_main
d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:79:0
#28 0x00007ff7d3be9aae __scrt_common_main_seh
d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288:0
#29 0x00007ff7d3be996e __scrt_common_main
d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:331:0
#30 0x00007ff7d3be9c99 mainCRTStartup
d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp:17:0
#31 0x00007ffffc877bd4 (C:\WINDOWS\System32\KERNEL32.DLL+0x17bd4)
#32 0x00007ffffe66ced1 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x6ced1)

It seems like we should probably not be adjusting the exception specification
when it is invalid.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20200110/e62477db/attachment.html>


More information about the llvm-bugs mailing list