diff options
author | Rong Xu <xur@google.com> | 2020-02-25 08:04:01 -0800 |
---|---|---|
committer | Rong Xu <xur@google.com> | 2020-02-25 08:15:17 -0800 |
commit | 11857d49948b845dcfd7c7f78595095e3add012d (patch) | |
tree | 96e5566e03ef67510c0f40a4eb752af07a03035c /clang/lib/CodeGen/CodeGenAction.cpp | |
parent | fa755d3e71ed590ac5c62f0e1eff09435c9593fe (diff) | |
download | llvm-11857d49948b845dcfd7c7f78595095e3add012d.zip llvm-11857d49948b845dcfd7c7f78595095e3add012d.tar.gz llvm-11857d49948b845dcfd7c7f78595095e3add012d.tar.bz2 |
[remark][diagnostics] [codegen] Fix PR44896
This patch fixes PR44896. For IR input files, option fdiscard-value-names
should be ignored as we need named values in loadModule().
Commit 60d3947922 sets this option after loadModule() where valued names
already created. This creates an inconsistent state in setNameImpl()
that leads to a seg fault.
This patch forces fdiscard-value-names to be false for IR input files.
This patch also emits a warning of "ignoring -fdiscard-value-names" if
option fdiscard-value-names is explictly enabled in the commandline for
IR input files.
Differential Revision: https://reviews.llvm.org/D74878
Diffstat (limited to 'clang/lib/CodeGen/CodeGenAction.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenAction.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp index 5ebc34c..81946b1 100644 --- a/clang/lib/CodeGen/CodeGenAction.cpp +++ b/clang/lib/CodeGen/CodeGenAction.cpp @@ -1146,6 +1146,9 @@ void CodeGenAction::ExecuteAction() { CI.getTargetOpts(), CI.getLangOpts(), CI.getFrontendOpts().ShowTimers, std::move(LinkModules), *VMContext, nullptr); + // PR44896: Force DiscardValueNames as false. DiscardValueNames cannot be + // true here because the valued names are needed for reading textual IR. + Ctx.setDiscardValueNames(false); Ctx.setDiagnosticHandler( std::make_unique<ClangDiagnosticHandler>(CodeGenOpts, &Result)); |