diff options
author | Reid Kleckner <rnk@google.com> | 2017-08-31 15:56:49 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2017-08-31 15:56:49 +0000 |
commit | 08f5fd51cc1690c86bac2f1dd841d27da2eefe44 (patch) | |
tree | 1d0792b0d3d2da9dd2f1b61d7d919e474c394b8b /llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h | |
parent | 341317fda43ba257be63836d6ddb3e3d3865ac33 (diff) | |
download | bcm5719-llvm-08f5fd51cc1690c86bac2f1dd841d27da2eefe44.tar.gz bcm5719-llvm-08f5fd51cc1690c86bac2f1dd841d27da2eefe44.zip |
[codeview] Generalize DIExpression parsing to handle load chains
Summary:
Hopefully this also clarifies exactly when and why we're rewriting
certiain S_LOCALs using reference types: We're using the reference type
to stand in for a zero-offset load.
Reviewers: inglorion
Subscribers: llvm-commits, hiraditya
Differential Revision: https://reviews.llvm.org/D37309
llvm-svn: 312247
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h index 90f8287e76e..245d70038de 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h +++ b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h @@ -30,19 +30,12 @@ class MachineModuleInfo; /// Represents the location at which a variable is stored. struct DbgVariableLocation { - /// Offset relative to base register. - int64_t Offset; - /// Base register. unsigned Register; - /// If false, Register is the location. If true, - /// Register+Offset point at the location. - unsigned InMemory : 1; - - /// If false, the location holds the variable's value. - /// If true, the location holds the variable's address. - unsigned Deref : 1; + /// Chain of offsetted loads necessary to load the value if it lives in + /// memory. Every load except for the last is pointer-sized. + SmallVector<int64_t, 1> LoadChain; /// Present if the location is part of a larger variable. llvm::Optional<llvm::DIExpression::FragmentInfo> FragmentInfo; |