mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-21 15:15:07 +00:00
sema_manager: Use llvm::CrashRecoveryContext
This commit is contained in:
parent
c018bce9af
commit
80d06eb476
@ -327,19 +327,26 @@ buildCompilerInstance(Session &session, std::unique_ptr<CompilerInvocation> ci,
|
||||
|
||||
bool parse(CompilerInstance &clang) {
|
||||
SyntaxOnlyAction action;
|
||||
if (!action.BeginSourceFile(clang, clang.getFrontendOpts().Inputs[0]))
|
||||
return false;
|
||||
llvm::CrashRecoveryContext crc;
|
||||
bool ok = false;
|
||||
auto run = [&]() {
|
||||
if (!action.BeginSourceFile(clang, clang.getFrontendOpts().Inputs[0]))
|
||||
return;
|
||||
#if LLVM_VERSION_MAJOR >= 9 // rL364464
|
||||
if (llvm::Error e = action.Execute()) {
|
||||
llvm::consumeError(std::move(e));
|
||||
return false;
|
||||
}
|
||||
if (llvm::Error e = action.Execute()) {
|
||||
llvm::consumeError(std::move(e));
|
||||
return;
|
||||
}
|
||||
#else
|
||||
if (!action.Execute())
|
||||
return false;
|
||||
if (!action.Execute())
|
||||
return;
|
||||
#endif
|
||||
action.EndSourceFile();
|
||||
return true;
|
||||
action.EndSourceFile();
|
||||
ok = true;
|
||||
};
|
||||
if (!crc.RunSafely(run))
|
||||
LOG_S(ERROR) << "clang crashed";
|
||||
return ok;
|
||||
}
|
||||
|
||||
void buildPreamble(Session &session, CompilerInvocation &ci,
|
||||
|
Loading…
Reference in New Issue
Block a user