diff options
| author | Adrian Prantl <aprantl@apple.com> | 2016-12-16 19:39:01 +0000 |
|---|---|---|
| committer | Adrian Prantl <aprantl@apple.com> | 2016-12-16 19:39:01 +0000 |
| commit | 73ec065604a8ff2512f478fb763eaa4f9c2bf354 (patch) | |
| tree | 51d4abac2d0ddd62eff9bc43ea30b15d3486fa48 /llvm/lib/IR/DIBuilder.cpp | |
| parent | d0fffd1d1405823e4dc1a4ad16e007e3bdd4bf69 (diff) | |
| download | bcm5719-llvm-73ec065604a8ff2512f478fb763eaa4f9c2bf354.tar.gz bcm5719-llvm-73ec065604a8ff2512f478fb763eaa4f9c2bf354.zip | |
Revert "[IR] Remove the DIExpression field from DIGlobalVariable."
This reverts commit 289920 (again).
I forgot to implement a Bitcode upgrade for the case where a DIGlobalVariable
has not DIExpression. Unfortunately it is not possible to safely upgrade
these variables without adding a flag to the bitcode record indicating which
version they are.
My plan of record is to roll the planned follow-up patch that adds a
unit: field to DIGlobalVariable into this patch before recomitting.
This way we only need one Bitcode upgrade for both changes (with a
version flag in the bitcode record to safely distinguish the record
formats).
Sorry for the churn!
llvm-svn: 289982
Diffstat (limited to 'llvm/lib/IR/DIBuilder.cpp')
| -rw-r--r-- | llvm/lib/IR/DIBuilder.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/llvm/lib/IR/DIBuilder.cpp b/llvm/lib/IR/DIBuilder.cpp index d009322a572..dfca6895590 100644 --- a/llvm/lib/IR/DIBuilder.cpp +++ b/llvm/lib/IR/DIBuilder.cpp @@ -532,30 +532,29 @@ static void checkGlobalVariableScope(DIScope *Context) { #endif } -DIGlobalVariableExpression *DIBuilder::createGlobalVariableExpression( +DIGlobalVariable *DIBuilder::createGlobalVariable( DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *F, - unsigned LineNumber, DIType *Ty, bool isLocalToUnit, DIExpression *Expr, - MDNode *Decl, uint32_t AlignInBits) { + unsigned LineNumber, DIType *Ty, bool isLocalToUnit, + DIExpression *Expr, MDNode *Decl, uint32_t AlignInBits) { checkGlobalVariableScope(Context); - auto *GV = DIGlobalVariable::getDistinct( + auto *N = DIGlobalVariable::getDistinct( VMContext, cast_or_null<DIScope>(Context), Name, LinkageName, F, - LineNumber, Ty, isLocalToUnit, true, cast_or_null<DIDerivedType>(Decl), - AlignInBits); - auto *N = DIGlobalVariableExpression::get(VMContext, GV, Expr); + LineNumber, Ty, isLocalToUnit, true, Expr, + cast_or_null<DIDerivedType>(Decl), AlignInBits); AllGVs.push_back(N); return N; } DIGlobalVariable *DIBuilder::createTempGlobalVariableFwdDecl( DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *F, - unsigned LineNumber, DIType *Ty, bool isLocalToUnit, MDNode *Decl, - uint32_t AlignInBits) { + unsigned LineNumber, DIType *Ty, bool isLocalToUnit, + DIExpression *Expr, MDNode *Decl, uint32_t AlignInBits) { checkGlobalVariableScope(Context); return DIGlobalVariable::getTemporary( VMContext, cast_or_null<DIScope>(Context), Name, LinkageName, F, - LineNumber, Ty, isLocalToUnit, false, + LineNumber, Ty, isLocalToUnit, false, Expr, cast_or_null<DIDerivedType>(Decl), AlignInBits) .release(); } |

