Skip to content

Assertion `outgoing && "expression emission cleared block!"' failed when compiling mozilla's jsinterp.cpp #9339

@ehsan

Description

@ehsan
Bugzilla Link 8967
Resolution FIXED
Resolved on Jan 12, 2011 20:03
Version trunk
OS Linux
Attachments Source file (gzipped)
CC @rjmccall

Extended Description

I've been experimenting to compile mozilla's trunk using clang/llvm trunk, and I hit an assertion:

clang: /home/ehsan/src/llvm/tools/clang/lib/CodeGen/CGStmt.cpp:100: void clang::CodeGen::CodeGenFunction::EmitStmt(const clang::Stmt*): Assertion `outgoing && "expression emission cleared block!"' failed.
0 clang 0x000000000170af6f
1 clang 0x000000000170d1e2
2 libpthread.so.0 0x00007f667c987b40
3 libc.so.6 0x00007f667bc85ba5 gsignal + 53
4 libc.so.6 0x00007f667bc896b0 abort + 384
5 libc.so.6 0x00007f667bc7ea71 __assert_fail + 241
6 clang 0x000000000083f552 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 1362
7 clang 0x0000000000841f08 clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) + 264
8 clang 0x00000000008421a6 clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + 262
9 clang 0x000000000083f027 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 39
10 clang 0x0000000000841199 clang::CodeGen::CodeGenFunction::EmitDoStmt(clang::DoStmt const&) + 393
11 clang 0x0000000000841f08 clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) + 264
12 clang 0x00000000008421a6 clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + 262
13 clang 0x000000000083f027 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 39
14 clang 0x0000000000841199 clang::CodeGen::CodeGenFunction::EmitDoStmt(clang::DoStmt const&) + 393
15 clang 0x0000000000841f08 clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) + 264
16 clang 0x00000000008421a6 clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + 262
17 clang 0x000000000083f027 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 39
18 clang 0x00000000008631b9 clang::CodeGen::CodeGenFunction::GenerateCode(clang::CodeGen::GlobalDecl, llvm::Function*) + 617
19 clang 0x000000000075b765 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::CodeGen::GlobalDecl) + 725
20 clang 0x000000000075c292 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::CodeGen::GlobalDecl) + 194
21 clang 0x000000000075ce7d clang::CodeGen::CodeGenModule::EmitGlobal(clang::CodeGen::GlobalDecl) + 845
22 clang 0x000000000075d43b clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 411
23 clang 0x000000000075d93b clang::CodeGen::CodeGenModule::EmitNamespace(clang::NamespaceDecl const*) + 59
24 clang 0x000000000075d5d5 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 821
25 clang 0x000000000074fb61
26 clang 0x000000000074dec1
27 clang 0x000000000087a906 clang::ParseAST(clang::Sema&, bool) + 166
28 clang 0x000000000074ef14 clang::CodeGenAction::ExecuteAction() + 68
29 clang 0x00000000006449c5 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 357
30 clang 0x000000000062248c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1276
31 clang 0x0000000000619f85 cc1_main(char const**, char const**, char const*, void*) + 693
32 clang 0x000000000062149b main + 4587
33 libc.so.6 0x00007f667bc70d8e __libc_start_main + 254
34 clang 0x0000000000618679
Stack dump:
0. Program arguments: /home/ehsan/src/build/Release+Asserts/bin/clang -cc1 -triple x86_64-unknown-linux-gnu -S -disable-free -main-file-name jsinterp.cpp -pic-level 2 -mdisable-fp-elim -relaxed-aliasing -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -target-linker-version 2.20.51 -v -g -resource-dir /home/ehsan/src/build/Release+Asserts/bin/../lib/clang/2.9 -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -Wno-invalid-offsetof -Wno-variadic-macros -Werror=return-type -Wno-long-long -pedantic -ferror-limit 19 -fmessage-length 0 -pthread -fno-rtti -fgnu-runtime -fdiagnostics-show-option -o jsinterp.s -x c++-cpp-output tmp.ii

  1. parser at end of file
  2. tmp.ii:47169:11: LLVM IR generation of declaration 'js'
  3. tmp.ii:47172:1: Generating code for declaration 'js::Interpret'
  4. tmp.ii:47173:1: LLVM IR generation of compound statement ('{}')
  5. tmp.ii:48250:8: LLVM IR generation of compound statement ('{}')
  6. tmp.ii:48250:60: LLVM IR generation of compound statement ('{}')
    Aborted

I'm attaching the preprocessed source file.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillaclang:codegenIR generation bugs: mangling, exceptions, etc.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions