commit | 1b11b0778e152ed6be2b6ff313ab851fea89c842 | [log] [tgz] |
---|---|---|
author | Adrian Prantl <aprantl@apple.com> | Fri Dec 16 00:36:43 2016 +0000 |
committer | Adrian Prantl <aprantl@apple.com> | Fri Dec 16 00:36:43 2016 +0000 |
tree | 4b99e4ecf440bcae292f53e9317322db23159de2 | |
parent | c0621296d3e4f4924b8c9a80225b5ce468a9e152 [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. <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@289902 91177308-0d34-0410-b5e6-96231b3b80d8