llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
28.69k stars 11.86k forks source link

[clang++] crash when trying compile a multi-if-else code #69344

Open jiacai-wang opened 1 year ago

jiacai-wang commented 1 year ago

error message

./if.inc:26663:9: warning: stack nearly exhausted; compilation time may suffer, and crashes due to stack overflow are likely [-Wstack-exhausted] printf("%d\n", 8888); clang: error: unable to execute command: Segmentation fault clang: error: clang frontend command failed due to signal (use -v to see invocation) clang version 10.0.0-4ubuntu1

how to reproduce:

multi-if-else.cpp

#include <ctime>
#include <iostream>

using namespace std;

int getVal() {
    srand(time(0));
    return rand();
}

int main() {
    int val = getVal();
    val = val % 10000;
    if (val == -1) {
        printf("%d\n", val);
    }
#include "if.inc"
}

a 'gen.sh' script to generate if.inc

#!/bin/bash

for ((i=0; i<10000; i++))
do
    echo -e "    else if(val == $i) {"
    echo -e "        printf(\"%d\\\n\", $((i+1)));"
    echo -e "    }"
done

./gen.sh > if.inc; clang++ multi-if-else.cpp and it crashes.

jiacai-wang commented 1 year ago

I'm trying to test the performance between if-else and switch-case. So I wrote a demo with 10000 switch-case and another with 10000 if-else-if. clang++ compiles way faster than g++ for switch-case, but it crashes for 10000 if-else-if program. g++ can compile both fine with very slow speed.

jiacai-wang commented 1 year ago
clang version 10.0.0-4ubuntu1 
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
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/bin/../lib/gcc/x86_64-linux-gnu/9
Candidate multilib: .;@m64
Selected multilib: .;@m64
 "/usr/lib/llvm-10/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name case.cpp -mrelocation-model static -mthread-model posix -mframe-pointer=all -fmath-errno -fno-rounding-math -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -dwarf-column-info -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /usr/lib/llvm-10/lib/clang/10.0.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/backward -internal-isystem /usr/local/include -internal-isystem /usr/lib/llvm-10/lib/clang/10.0.0/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fdebug-compilation-dir /home/wjc/code/cpp_playground/misc -ferror-limit 19 -fmessage-length 0 -fgnuc-version=4.2.1 -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -faddrsig -o /tmp/case-72a63f.o -x c++ case.cpp
clang -cc1 version 10.0.0 based upon LLVM 10.0.0 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/include"
ignoring duplicate directory "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9"
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9
 /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9
 /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/backward
 /usr/local/include
 /usr/lib/llvm-10/lib/clang/10.0.0/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
In file included from case.cpp:22:
./if.inc:26663:9: warning: stack nearly exhausted; compilation time may suffer, and crashes due to stack overflow are likely [-Wstack-exhausted]
        printf("%d\n", 8888);
        ^
Stack dump:
0.      Program arguments: /usr/lib/llvm-10/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name case.cpp -mrelocation-model static -mthread-model posix -mframe-pointer=all -fmath-errno -fno-rounding-math -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -dwarf-column-info -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /usr/lib/llvm-10/lib/clang/10.0.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/backward -internal-isystem /usr/local/include -internal-isystem /usr/lib/llvm-10/lib/clang/10.0.0/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fdebug-compilation-dir /home/wjc/code/cpp_playground/misc -ferror-limit 19 -fmessage-length 0 -fgnuc-version=4.2.1 -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -faddrsig -o /tmp/case-72a63f.o -x c++ case.cpp 
1.      ./if.inc:27440:28: current parser token ')'
2.      case.cpp:12:12: parsing function body 'main'
3.      case.cpp:12:12: in compound statement ('{}')
4.      ./if.inc:27439:26: in compound statement ('{}')
  #0 0x00007f76250574ff llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/lib/x86_64-linux-gnu/libLLVM-10.so.1+0x9814ff)
  #1 0x00007f76250557b0 llvm::sys::RunSignalHandlers() (/lib/x86_64-linux-gnu/libLLVM-10.so.1+0x97f7b0)
  #2 0x00007f7625057ac5 (/lib/x86_64-linux-gnu/libLLVM-10.so.1+0x981ac5)
  #3 0x00007f762b826420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
  #4 0x00007f7624fc9a89 llvm::FoldingSetBase::FindNodeOrInsertPos(llvm::FoldingSetNodeID const&, void*&) (/lib/x86_64-linux-gnu/libLLVM-10.so.1+0x8f3a89)
  #5 0x00007f7629681c88 clang::ASTContext::getPointerType(clang::QualType) const (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x917c88)
  #6 0x00007f762968698f clang::ASTContext::getArrayDecayedType(clang::QualType) const (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x91c98f)
  #7 0x00007f7629e3ba81 clang::Sema::PerformImplicitConversion(clang::Expr*, clang::QualType, clang::StandardConversionSequence const&, clang::Sema::AssignmentAction, clang::Sema::CheckedConversionKind) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x10d1a81)
  #8 0x00007f7629e3b076 clang::Sema::PerformImplicitConversion(clang::Expr*, clang::QualType, clang::ImplicitConversionSequence const&, clang::Sema::AssignmentAction, clang::Sema::CheckedConversionKind) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x10d1076)
  #9 0x00007f7629eae674 clang::InitializationSequence::Perform(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::Expr*>, clang::QualType*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x1144674)
 #10 0x00007f7629eb9425 clang::Sema::PerformCopyInitialization(clang::InitializedEntity const&, clang::SourceLocation, clang::ActionResult<clang::Expr*, true>, bool, bool) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x114f425)
 #11 0x00007f7629dc073d clang::Sema::GatherArgumentsForCall(clang::SourceLocation, clang::FunctionDecl*, clang::FunctionProtoType const*, unsigned int, llvm::ArrayRef<clang::Expr*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::Sema::VariadicCallType, bool, bool) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x105673d)
 #12 0x00007f7629dbe9f2 clang::Sema::ConvertArgumentsForCall(clang::CallExpr*, clang::Expr*, clang::FunctionDecl*, clang::FunctionProtoType const*, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, bool) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x10549f2)
 #13 0x00007f7629dc201b clang::Sema::BuildResolvedCallExpr(clang::Expr*, clang::NamedDecl*, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, clang::CallExpr::ADLCallKind) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x105801b)
 #14 0x00007f7629fabaea (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x1241aea)
 #15 0x00007f7629fab18c clang::Sema::BuildOverloadedCallExpr(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x124118c)
 #16 0x00007f7629dabe79 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x1041e79)
 #17 0x00007f7629dc1388 clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x1057388)
 #18 0x00007f76295fd1ad clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8931ad)
 #19 0x00007f76295ff4da clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8954da)
 #20 0x00007f76295fae89 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x890e89)
 #21 0x00007f76295fadc9 clang::Parser::ParseExpression(clang::Parser::TypeCastState) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x890dc9)
 #22 0x00007f7629649a1c clang::Parser::ParseExprStatement(clang::Parser::ParsedStmtContext) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8dfa1c)
 #23 0x00007f76296484f7 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de4f7)
 #24 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #25 0x00007f762964f760 clang::Parser::ParseCompoundStatementBody(bool) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e5760)
 #26 0x00007f76296485d5 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de5d5)
 #27 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #28 0x00007f762964b2ea clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e12ea)
 #29 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #30 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #31 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #32 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #33 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #34 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #35 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #36 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #37 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #38 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #39 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #40 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #41 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #42 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #43 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #44 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #45 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #46 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #47 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #48 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #49 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #50 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #51 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #52 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #53 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #54 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #55 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #56 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #57 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #58 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #59 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #60 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #61 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #62 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #63 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #64 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #65 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #66 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #67 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #68 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #69 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #70 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #71 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #72 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #73 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #74 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #75 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #76 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #77 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #78 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #79 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #80 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #81 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #82 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #83 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #84 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #85 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #86 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #87 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #88 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #89 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #90 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #91 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #92 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #93 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #94 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #95 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #96 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
 #97 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
 #98 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
 #99 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#100 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#101 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#102 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#103 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#104 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#105 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#106 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#107 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#108 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#109 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#110 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#111 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#112 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#113 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#114 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#115 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#116 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#117 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#118 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#119 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#120 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#121 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#122 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#123 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#124 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#125 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#126 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#127 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#128 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#129 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#130 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#131 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#132 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#133 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#134 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#135 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#136 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#137 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#138 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#139 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#140 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#141 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#142 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#143 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#144 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#145 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#146 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#147 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#148 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#149 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#150 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#151 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#152 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#153 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#154 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#155 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#156 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#157 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#158 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#159 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#160 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#161 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#162 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#163 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#164 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#165 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#166 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#167 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#168 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#169 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#170 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#171 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#172 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#173 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#174 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#175 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#176 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#177 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#178 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#179 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#180 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#181 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#182 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#183 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#184 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#185 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#186 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#187 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#188 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#189 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#190 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#191 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#192 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#193 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#194 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#195 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#196 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#197 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#198 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#199 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#200 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#201 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#202 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#203 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#204 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#205 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#206 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#207 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#208 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#209 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#210 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#211 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#212 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#213 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#214 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#215 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#216 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#217 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#218 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#219 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#220 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#221 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#222 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#223 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#224 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#225 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#226 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#227 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#228 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#229 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#230 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#231 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#232 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#233 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#234 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#235 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#236 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#237 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#238 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#239 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#240 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#241 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#242 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#243 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#244 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#245 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#246 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#247 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#248 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#249 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#250 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#251 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#252 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
#253 0x00007f762964b59e clang::Parser::ParseIfStatement(clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8e159e)
#254 0x00007f762964875a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de75a)
#255 0x00007f762964802b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x8de02b)
clang: error: unable to execute command: Segmentation fault
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 10.0.0-4ubuntu1 
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang: note: diagnostic msg: PLEASE submit a bug report to https://bugs.llvm.org/ 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/case-826cb4.cpp
clang: note: diagnostic msg: /tmp/case-826cb4.sh
clang: note: diagnostic msg: 

********************
llvmbot commented 1 year ago

@llvm/issue-subscribers-clang-frontend

Author: jiacai_wang (jiacai-wang)

### error message ./if.inc:26663:9: warning: stack nearly exhausted; compilation time may suffer, and crashes due to stack overflow are likely [-Wstack-exhausted] printf("%d\n", 8888); clang: error: unable to execute command: Segmentation fault clang: error: clang frontend command failed due to signal (use -v to see invocation) clang version 10.0.0-4ubuntu1 ### how to reproduce: multi-if-else.cpp ``` #include <ctime> #include <iostream> using namespace std; int getVal() { srand(time(0)); return rand(); } int main() { int val = getVal(); val = val % 10000; if (val == -1) { printf("%d\n", val); } #include "if.inc" } ``` a 'gen.sh' script to generate if.inc ``` #!/bin/bash for ((i=0; i<10000; i++)) do echo -e " else if(val == $i) {" echo -e " printf(\"%d\\\n\", $((i+1)));" echo -e " }" done ``` `./gen.sh > if.inc; clang++ multi-if-else.cpp` and it crashes.
shafik commented 1 year ago

clang-10 is very old at this point. Can you please provide a minimal reproducer via godbolt using clang-17 and clang trunk with assertions: https://godbolt.org/

jiacai-wang commented 1 year ago

clang-10 is very old at this point. Can you please provide a minimal reproducer via godbolt using clang-17 and clang trunk with assertions: https://godbolt.org/

clang17 also crash https://godbolt.org/z/ooPe1K3s3

shafik commented 1 year ago

I can't get a stack trace on godbolt but locally w/ a debugger it looks like it is running out of stack space just churning through the else if statements.

CC @AaronBallman

AaronBallman commented 1 year ago

I can't get a stack trace on godbolt but locally w/ a debugger it looks like it is running out of stack space just churning through the else if statements.

CC @AaronBallman

Yup -- recursive descent parsing running out of stack space (we issue a warning about it before we get to the point of crashing). The way we usually handle that is to try to refactor to get tail call elimination where possible, but I don't think that's viable in this case. Reducing stack size will help increase the depth we can reach, but a true fix for this may be a significant amount of effort.