[cfe-dev] Clang 3.2 assertion failure issuing diagnostics when compiling from AST files.
Tom Honermann
thonermann at coverity.com
Wed Feb 27 12:35:04 PST 2013
This issue reproduces with Clang 3.2 and with Clang trunk as of yesterday.
The following bug has been filed for this:
Bug 15377 - Clang assertion failure when issuing a diagnostic while
compiling from an AST file
http://llvm.org/bugs/show_bug.cgi?id=15377
This code is ill-formed:
$ cat t.cpp
template<typename T>
T tf() {
static const T i;
return i;
}
void f() {
tf<int>();
}
Compiling it directly to object file results in an appropriate diagnostic:
$ clang -c t.cpp
t.cpp:5:20: error: default initialization of an object of const type
'const int'
static const T i;
^
t.cpp:10:5: note: in instantiation of function template specialization
'tf<int>'
requested here
tf<int>();
^
1 error generated.
Emitting to an AST file and then compiling from it results in an
assertion failure when constructing the diagnostic:
$ clang -emit-ast t.cpp
$ clang -c t.ast
clang: lib/Frontend/TextDiagnosticPrinter.cpp:148: virtual void
clang::TextDiagnosticPrinter::HandleDiagnostic(clang::DiagnosticsEngine::Level,
const clang::Diagnostic&): Assertion `TextDiag && "Unexpected diagnostic
outside source file processing"' failed.
clang: error: unable to execute command: Segmentation fault (core dumped)
clang: error: clang frontend command failed due to signal (use -v to see
invocation)
clang version 3.2 (tags/RELEASE_32/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
clang: note: diagnostic msg: PLEASE submit a bug report to
http://llvm.org/bugs/ and include the crash backtrace, preprocessed
source, and associated run script.
clang: note: diagnostic msg: Error generating preprocessed source(s) -
no preprocessable inputs.
Backtrace and further information are available in the bug report.
Tom.
More information about the cfe-dev
mailing list