<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>