From a5bf2d7003928e5ada8e22d4bbf0c776633eecab Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Wed, 8 Feb 2017 17:44:43 +0000 Subject: 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. Differential Revision: https://reviews.llvm.org/D29693 llvm-svn: 294488 --- llvm/lib/Bitcode/Reader/MetadataLoader.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'llvm/lib/Bitcode/Reader/MetadataLoader.cpp') 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); -- cgit v1.2.3