commit | eb38a2a075bc5e6f13bc0b2da82e2e76779bf1bb | [log] [tgz] |
---|---|---|
author | Adrian Prantl <aprantl@apple.com> | Fri Dec 16 04:25:54 2016 +0000 |
committer | Adrian Prantl <aprantl@apple.com> | Fri Dec 16 04:25:54 2016 +0000 |
tree | aa86335e0a8e3dd9164e7680131feebed1e6037e | |
parent | 3b4ecf6e3739dc80ca10250f9d0bdfb973987efd [diff] |
[IR] Remove the DIExpression field from DIGlobalVariable. This patch implements PR31013 by introducing a DIGlobalVariableExpression that holds a pair of DIGlobalVariable and DIExpression. Currently, DIGlobalVariables holds a DIExpression. This is not the best way to model this: (1) The DIGlobalVariable should describe the source level variable, not how to get to its location. (2) It makes it unsafe/hard to update the expressions when we call replaceExpression on the DIGLobalVariable. (3) It makes it impossible to represent a global variable that is in more than one location (e.g., a variable with multiple DW_OP_LLVM_fragment-s). We also moved away from attaching the DIExpression to DILocalVariable for the same reasons. This reapplies r289902 with additional testcase upgrades. <rdar://problem/29250149> https://llvm.org/bugs/show_bug.cgi?id=31013 Differential Revision: https://reviews.llvm.org/D26769 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@289920 91177308-0d34-0410-b5e6-96231b3b80d8