<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Clang crashes on simple testcase with syntax and sema errors"
   href="https://llvm.org/bugs/show_bug.cgi?id=27014">27014</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Clang crashes on simple testcase with syntax and sema errors
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Frontend
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>zinovy.nis@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Clang reports internal error on this (incorrect) code. GCC just prints
compilation error as expected:

$ clang -v
clang version 3.9.0 
Target: x86_64-unknown-linux-gnu

$ cat test.c

typedef double F64; 
typedef UL unsigned long; // THIS TYPO causes clang to crash

void test(UL a, UL b).
{
    UL c = a;
    for(i = 0; i < c/sizeof(F64); i++) c += 1; // "i" is also undeclared.
}

$ clang -c test.c

test.c:2:9: error: unknown type name 'UL'
typedef UL unsigned long; // THIS TYPO causes clang to crash
        ^
test.c:2:12: error: expected identifier or '('
typedef UL unsigned long; // THIS TYPO causes clang to crash
           ^
test.c:4:11: error: unknown type name 'UL'
void test(UL a, UL b)
          ^
test.c:4:17: error: unknown type name 'UL'
void test(UL a, UL b)
                ^
test.c:6:5: error: use of undeclared identifier 'UL'
    UL c = a;
    ^
test.c:7:13: error: use of undeclared identifier 'i'
        for(i = 0; i < c/sizeof(F64); i++) c += 1; // "i" is also undeclared.
            ^
test.c:7:24: error: use of undeclared identifier 'c'
        for(i = 0; i < c/sizeof(F64); i++) c += 1; // "i" is also undeclared.
                       ^
clang-3.9: llvm/llvm/tools/clang/lib/Sema/SemaLookup.cpp:5032: const
clang::Sema::TypoExprState& clang::Sema::getTypoExprState(clang::TypoExpr*)
const: Assertion `Entry != DelayedTypos.end() && "Failed to get the state for a
TypoExpr!"' failed.
0  clang-3.9       0x000000000131f2f5
llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 37
1  clang-3.9       0x000000000131d0a6 llvm::sys::RunSignalHandlers() + 54
2  clang-3.9       0x000000000131d2d1
3  libpthread.so.0 0x00007f53d7336130
4  libc.so.6       0x00007f53d65665d7 gsignal + 55
5  libc.so.6       0x00007f53d6567cc8 abort + 328
6  libc.so.6       0x00007f53d655f546
7  libc.so.6       0x00007f53d655f5f2
8  clang-3.9       0x00000000022947a9
clang::Sema::getTypoExprState(clang::TypoExpr*) const + 153
9  clang-3.9       0x0000000002229007
10 clang-3.9       0x00000000022298c9
11 clang-3.9       0x000000000222662c
clang::Sema::CorrectDelayedTyposInExpr(clang::Expr*, clang::VarDecl*,
llvm::function_ref<clang::ActionResult<clang::Expr*, true> (clang::Expr*)>) +
716
12 clang-3.9       0x0000000001e741cc
clang::Parser::ParseRHSOfBinaryExpression(clang::ActionResult<clang::Expr*,
true>, clang::prec::Level) + 3404
13 clang-3.9       0x0000000001e73902
clang::Parser::ParseRHSOfBinaryExpression(clang::ActionResult<clang::Expr*,
true>, clang::prec::Level) + 1154
14 clang-3.9       0x0000000001e733f9
clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) + 57
15 clang-3.9       0x0000000001e73469
clang::Parser::ParseExpression(clang::Parser::TypeCastState) + 9
16 clang-3.9       0x0000000001ea9ab8
clang::Parser::ParseForStatement(clang::SourceLocation*) + 2488
17 clang-3.9       0x0000000001ea6ebb
clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
32u>&, clang::Parser::AllowedContsructsKind, clang::SourceLocation*,
clang::Parser::ParsedAttributesWithRange&) + 1083
18 clang-3.9       0x0000000001ea766d
clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*,
32u>&, clang::Parser::AllowedContsructsKind, clang::SourceLocation*) + 125
19 clang-3.9       0x0000000001eaa8c9
clang::Parser::ParseCompoundStatementBody(bool) + 1641
20 clang-3.9       0x0000000001ead0a8
clang::Parser::ParseFunctionStatementBody(clang::Decl*,
clang::Parser::ParseScope&) + 216
21 clang-3.9       0x0000000001e3bbb5
clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) +
1173
22 clang-3.9       0x0000000001e5d820
clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned int,
clang::SourceLocation*, clang::Parser::ForRangeInit*) + 3072
23 clang-3.9       0x0000000001e38e52
clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec&, clang::AccessSpecifier) + 274
24 clang-3.9       0x0000000001e394ee
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier) + 942
25 clang-3.9       0x0000000001e3ceaf
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) + 255
26 clang-3.9       0x0000000001e3d680
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 384
27 clang-3.9       0x0000000001e36583 clang::ParseAST(clang::Sema&, bool, bool)
+ 371
28 clang-3.9       0x0000000001a2e0eb clang::CodeGenAction::ExecuteAction() +
59
29 clang-3.9       0x000000000176bc26 clang::FrontendAction::Execute() + 534
30 clang-3.9       0x000000000174755e
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 318
31 clang-3.9       0x00000000017ff69c
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 2300
32 clang-3.9       0x0000000000707b28 cc1_main(llvm::ArrayRef<char const*>,
char const*, void*) + 2104
33 clang-3.9       0x00000000006d36db main + 6171
34 libc.so.6       0x00007f53d6552af5 __libc_start_main + 245
35 clang-3.9       0x0000000000703b65
...</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>