diff options
author | Adrian Prantl <aprantl@apple.com> | 2017-02-08 17:44:43 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2017-02-08 17:44:43 +0000 |
commit | a5bf2d7003928e5ada8e22d4bbf0c776633eecab (patch) | |
tree | 5dfa466d3e37dd36416b2a9be4ddd7a70acd8984 /llvm/lib/Bitcode/Reader/MetadataLoader.cpp | |
parent | d11a03b263f676bd198711b8e2818577228be648 (diff) | |
download | bcm5719-llvm-a5bf2d7003928e5ada8e22d4bbf0c776633eecab.tar.gz bcm5719-llvm-a5bf2d7003928e5ada8e22d4bbf0c776633eecab.zip |
Fix bitcode upgrade for DIGlobalVariables with a var: field.
This is a follow-up to https://reviews.llvm.org/D29349. It turns out
that NeedUpgradeToDIGlobalVariableExpression is always necessary when
we encountered a version==0 record because it may always be referenced
via a list of globals in a DICompileUnit. My tests weren't good enough
to catch this though. To trigger this case, we need much older bitcode
produced by LLVM around version 3.7.
<rdar://problem/30404262>
Differential Revision: https://reviews.llvm.org/D29693
llvm-svn: 294488
Diffstat (limited to 'llvm/lib/Bitcode/Reader/MetadataLoader.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Reader/MetadataLoader.cpp | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp index 41985e2590c..3baf0599341 100644 --- a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp +++ b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp @@ -1437,6 +1437,7 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata( } else if (Version == 0) { // Upgrade old metadata, which stored a global variable reference or a // ConstantInt here. + NeedUpgradeToDIGlobalVariableExpression = true; Metadata *Expr = getMDOrNull(Record[9]); uint32_t AlignInBits = 0; if (Record.size() > 11) { @@ -1467,8 +1468,6 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata( DIGlobalVariableExpression *DGVE = nullptr; if (Attach || Expr) DGVE = DIGlobalVariableExpression::getDistinct(Context, DGV, Expr); - else - NeedUpgradeToDIGlobalVariableExpression = true; if (Attach) Attach->addDebugInfo(DGVE); |