summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2017-08-31 15:56:49 +0000
committerReid Kleckner <rnk@google.com>2017-08-31 15:56:49 +0000
commit08f5fd51cc1690c86bac2f1dd841d27da2eefe44 (patch)
tree1d0792b0d3d2da9dd2f1b61d7d919e474c394b8b /llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h
parent341317fda43ba257be63836d6ddb3e3d3865ac33 (diff)
downloadbcm5719-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.h13
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;
OpenPOWER on IntegriCloud