Skip to content

Assertion `E->isRValue() && "missing lvalue-to-rvalue conv in bool condition"' failed #44428

@berolinux

Description

@berolinux
Bugzilla Link 45083
Resolution FIXED
Resolved on Mar 17, 2020 12:59
Version 10.0
OS Linux
Blocks #43900
Attachments Reduced test case, Manually reduced test case
CC @zmodem,@jsonn,@slacka,@zygoloid
Fixed by commit(s) 5c845c1, d9bd6e3

Extended Description

Trying to build inkscape 1.0beta2 with a clang 10.0 git snapshot from last week results in

clang++: /builddir/build/BUILD/llvm-project-release-10.x/clang/lib/AST/ExprConstant.cpp:2326: bool EvaluateAsBooleanCondition(const clang::Expr *, bool &, (anonymous namespace)::EvalInfo &): Assertion `E->isRValue() && "missing lvalue-to-rvalue conv in bool condition"' failed.
Stack dump:
0. Program arguments: /usr/bin/clang++ -DHAVE_CONFIG_H -DWITH_CSSBLEND -DWITH_CSSCOMPOSITE -DWITH_MESH -DWITH_SVG2 -Isrc -I../src -I../ -Iinclude -I../src/3rdparty/adaptagrams -isystem /usr/include/harfbuzz -isystem /usr/include/glib-2.0 -isystem /usr/lib64/glib-2.0/include -isystem /usr/include/pango-1.0 -isystem /usr/include/fribidi -isystem /usr/include/freetype2 -isystem /usr/include/libpng16 -isystem /usr/include/uuid -isystem /usr/include/cairo -isystem /usr/include/pixman-1 -isystem /usr/include/libsoup-2.4 -isystem /usr/include/libmount -isystem /usr/include/blkid -isystem /usr/include/libxml2 -isystem /usr/include/gc -isystem /usr/include/poppler -isystem /usr/include/libwpg-0.3 -isystem /usr/include/librevenge-0.0 -isystem /usr/include/libvisio-0.1 -isystem /usr/include/libcdr-0.1 -isystem /usr/include/dbus-1.0 -isystem /usr/lib64/dbus-1.0/include -isystem src/extension/dbus -isystem /usr/include/gtkmm-3.0 -isystem /usr/lib64/gtkmm-3.0/include -isystem /usr/include/atkmm-1.6 -isystem /usr/include/atk-1.0 -isystem /usr/include/glibmm-2.4 -isystem /usr/lib64/glibmm-2.4/include -isystem /usr/include/sigc++-2.0 -isystem /usr/lib64/sigc++-2.0/include -isystem /usr/include/giomm-2.4 -isystem /usr/lib64/giomm-2.4/include -isystem /usr/include/pangomm-1.4 -isystem /usr/lib64/pangomm-1.4/include -isystem /usr/include/cairomm-1.0 -isystem /usr/lib64/cairomm-1.0/include -isystem /usr/include/gtk-3.0 -isystem /usr/include/gdk-pixbuf-2.0 -isystem /usr/include/gio-unix-2.0 -isystem /usr/include/at-spi2-atk/2.0 -isystem /usr/include/at-spi-2.0 -isystem /usr/include/gtk-3.0/unix-print -isystem /usr/include/gdkmm-3.0 -isystem /usr/lib64/gdkmm-3.0/include -isystem /usr/include/libgdl-3.0 -isystem /usr/include/GraphicsMagick -Os -fomit-frame-pointer -g1 -Wstrict-aliasing=2 -pipe -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -m64 -mtune=generic -flto -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -Werror=format -Werror=format-security -pthread -fopenmp=libomp -Os -fomit-frame-pointer -g1 -Wstrict-aliasing=2 -pipe -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -m64 -mtune=generic -flto -pthread -std=gnu++11 -MD -MT src/CMakeFiles/inkscape_base.dir/style-internal.cpp.o -MF src/CMakeFiles/inkscape_base.dir/style-internal.cpp.o.d -o src/CMakeFiles/inkscape_base.dir/style-internal.cpp.o -c ../src/style-internal.cpp

  1.  ../src/style-internal.cpp:817:5 <Spelling=/usr/include/glib-2.0/glib/gmacros.h:934:68>: current parser token ')'
    
  2.  ../src/style-internal.cpp:816:1: parsing function body 'SPIEnum::update_value_merge'
    
  3.  ../src/style-internal.cpp:816:1: in compound statement ('{}')
    
  4.  ../src/style-internal.cpp:817:5 <Spelling=/usr/include/glib-2.0/glib/gtestutils.h:169:54>: in compound statement ('{}')
    

#​0 0x00007f05492fdde2 (/usr/lib64/libLLVMSupport.so.10.0+0x21bde2)
#​1 0x00007f05492fb38e llvm::sys::RunSignalHandlers() (/usr/lib64/libLLVMSupport.so.10.0+0x21938e)
#​2 0x00007f05492fce40 llvm::sys::CleanupOnSignal(unsigned long) (/usr/lib64/libLLVMSupport.so.10.0+0x21ae40)
#​3 0x00007f054921abb3 (/usr/lib64/libLLVMSupport.so.10.0+0x138bb3)
#​4 0x00007f054921ad23 (/usr/lib64/libLLVMSupport.so.10.0+0x138d23)
#​5 0x00007f0548d57980 __restore_rt (/lib64/libc.so.6+0x44980)
#​6 0x00007f0548d578f7 raise (/lib64/libc.so.6+0x448f7)
#​7 0x00007f0548d3853d abort (/lib64/libc.so.6+0x2553d)
#​8 0x00007f0548d38411 _nl_load_domain.cold (/lib64/libc.so.6+0x25411)
#​9 0x00007f0548d48912 (/lib64/libc.so.6+0x35912)
#​10 0x00007f05479cf1e9 (/usr/lib64/libclangAST.so.10.0+0x5201e9)
#​11 0x00007f05479dcaf4 (/usr/lib64/libclangAST.so.10.0+0x52daf4)
#​12 0x00007f05479e9575 (/usr/lib64/libclangAST.so.10.0+0x53a575)
#​13 0x00007f05479b0a5b (/usr/lib64/libclangAST.so.10.0+0x501a5b)
#​14 0x00007f05479b3a87 (/usr/lib64/libclangAST.so.10.0+0x504a87)
#​15 0x00007f05479aebc9 clang::Expr::EvaluateAsRValue(clang::Expr::EvalResult&, clang::ASTContext const&, bool) const (/usr/lib64/libclangAST.so.10.0+0x4ffbc9)
#​16 0x00007f054667076b (/usr/lib64/libclangSema.so.10.0+0x3d676b)
#​17 0x00007f054666a0f6 (/usr/lib64/libclangSema.so.10.0+0x3d00f6)
#​18 0x00007f054665b0d6 (/usr/lib64/libclangSema.so.10.0+0x3c10d6)
#​19 0x00007f054665bba3 (/usr/lib64/libclangSema.so.10.0+0x3c1ba3)
#​20 0x00007f054665c7da clang::Sema::CheckCompletedExpr(clang::Expr*, clang::SourceLocation, bool) (/usr/lib64/libclangSema.so.10.0+0x3c27da)
#​21 0x00007f05469ee209 clang::Sema::ActOnFinishFullExpr(clang::Expr*, clang::SourceLocation, bool, bool) (/usr/lib64/libclangSema.so.10.0+0x754209)
#​22 0x00007f0546972e2d clang::Sema::ActOnCondition(clang::Scope*, clang::SourceLocation, clang::Expr*, clang::Sema::ConditionKind) (/usr/lib64/libclangSema.so.10.0+0x6d8e2d)
#​23 0x00007f0546ef1c4b clang::Parser::ParseCXXCondition(clang::ActionResult<clang::Stmt*, true>, clang::SourceLocation, clang::Sema::ConditionKind, clang::Parser::ForRangeInfo) (/usr/lib64/libclangParse.so.10.0+0xd3c4b)
#​24 0x00007f0546f3eedf clang::Parser::ParseParenExprOrCondition(clang::ActionResult<clang::Stmt*, true>, clang::Sema::ConditionResult&, clang::SourceLocation, clang::Sema::ConditionKind) (/usr/lib64/libclangParse.so.10.0+0x120edf)
#​25 0x00007f0546f388cc clang::Parser::ParseIfStatement(clang::SourceLocation
) (/usr/lib64/libclangParse.so.10.0+0x11a8cc)
#​26 0x00007f0546f35d67 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/usr/lib64/libclangParse.so.10.0+0x117d67)
#​27 0x00007f0546f35468 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/usr/lib64/libclangParse.so.10.0+0x117468)
#​28 0x00007f0546f3e606 clang::Parser::ParseCompoundStatementBody(bool) (/usr/lib64/libclangParse.so.10.0+0x120606)
#​29 0x00007f0546f3d342 clang::Parser::ParseCompoundStatement(bool, unsigned int) (/usr/lib64/libclangParse.so.10.0+0x11f342)
#​30 0x00007f0546f35dc1 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/usr/lib64/libclangParse.so.10.0+0x117dc1)
#​31 0x00007f0546f35468 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/usr/lib64/libclangParse.so.10.0+0x117468)
#​32 0x00007f0546f399e9 clang::Parser::ParseDoStatement() (/usr/lib64/libclangParse.so.10.0+0x11b9e9)
#​33 0x00007f0546f35b7b clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/usr/lib64/libclangParse.so.10.0+0x117b7b)
#​34 0x00007f0546f35468 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/usr/lib64/libclangParse.so.10.0+0x117468)
#​35 0x00007f0546f3e606 clang::Parser::ParseCompoundStatementBody(bool) (/usr/lib64/libclangParse.so.10.0+0x120606)
#​36 0x00007f0546f3f69b clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/usr/lib64/libclangParse.so.10.0+0x12169b)
#​37 0x00007f0546f5dcb0 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/usr/lib64/libclangParse.so.10.0+0x13fcb0)
#​38 0x00007f0546f498de clang::Parser::ParseSingleDeclarationAfterTemplate(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo const&, clang::ParsingDeclRAIIObject&, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/usr/lib64/libclangParse.so.10.0+0x12b8de)
#​39 0x00007f0546f47fc1 clang::Parser::ParseTemplateDeclarationOrSpecialization(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/usr/lib64/libclangParse.so.10.0+0x129fc1)
#​40 0x00007f0546f47740 clang::Parser::ParseDeclarationStartingWithTemplate(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/usr/lib64/libclangParse.so.10.0+0x129740)
#​41 0x00007f0546e9e256 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&, clang::SourceLocation*) (/usr/lib64/libclangParse.so.10.0+0x80256)
#​42 0x00007f0546f5abe0 clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) (/usr/lib64/libclangParse.so.10.0+0x13cbe0)
#​43 0x00007f0546f592db clang::Parser::ParseTopLevelDecl(clang::OpaquePtrclang::DeclGroupRef&, bool) (/usr/lib64/libclangParse.so.10.0+0x13b2db)
#​44 0x00007f0546e8a7cd clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib64/libclangParse.so.10.0+0x6c7cd)
#​45 0x00007f054c56b285 clang::CodeGenAction::ExecuteAction() (/usr/lib64/libclangCodeGen.so.10.0+0x594285)
#​46 0x00007f054ab48c1d clang::FrontendAction::Execute() (/usr/lib64/libclangFrontend.so.10.0+0x174c1d)
#​47 0x00007f054aace0ea clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib64/libclangFrontend.so.10.0+0xfa0ea)
#​48 0x00007f054cf9e9b4 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib64/libclangFrontendTool.so.10.0+0x59b4)
#​49 0x00000000002180d0 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/bin/clang+++0x2180d0)
#​50 0x0000000000215fe1 (/usr/bin/clang+++0x215fe1)
#​51 0x00007f054a83cdc2 (/usr/lib64/libclangDriver.so.10.0+0xf7dc2)
#​52 0x00007f054921aac1 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib64/libLLVMSupport.so.10.0+0x138ac1)
#​53 0x00007f054a83c1c7 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optionalllvm::StringRef >, std::__cxx11::basic_string<char, std::char_traits, std::allocator >, bool) const (/usr/lib64/libclangDriver.so.10.0+0xf71c7)
#​54 0x00007f054a803aba clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/usr/lib64/libclangDriver.so.10.0+0xbeaba)
#​55 0x00007f054a803fda clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/usr/lib64/libclangDriver.so.10.0+0xbefda)
#​56 0x00007f054a81fe97 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/usr/lib64/libclangDriver.so.10.0+0xdae97)
#​57 0x0000000000214fde main (/usr/bin/clang+++0x214fde)
#​58 0x00007f0548d39dbb __libc_start_main (/lib64/libc.so.6+0x26dbb)
#​59 0x0000000000211a2a _start (/usr/bin/clang+++0x211a2a)
clang++: /builddir/build/BUILD/llvm-project-release-10.x/clang/lib/Parse/Parser.cpp:444: virtual clang::Parser::~Parser(): Assertion `TemplateIds.empty() && "Still alive TemplateIdAnnotations around?"' failed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzilla

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions