aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Expression/Materializer.cpp
diff options
context:
space:
mode:
authorDavide Italiano <davide@freebsd.org>2019-08-12 20:03:19 +0000
committerDavide Italiano <davide@freebsd.org>2019-08-12 20:03:19 +0000
commit36f13e49127e56d6db4aeb76c0bbfacab1988157 (patch)
tree30444a46b609ed4b3055d0b4059fbd1fcfa6d454 /lldb/source/Expression/Materializer.cpp
parentd2e493c3378b4b61e16109c67568f5d642f3c3a1 (diff)
downloadllvm-36f13e49127e56d6db4aeb76c0bbfacab1988157.zip
llvm-36f13e49127e56d6db4aeb76c0bbfacab1988157.tar.gz
llvm-36f13e49127e56d6db4aeb76c0bbfacab1988157.tar.bz2
[Symbol] GetTypeBitAlign() should return None in case of failure.
Summary: And not `zero`. This is the last API needed to be converted to an Optional<T>. Reviewers: xiaobai, compnerd Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D66093 llvm-svn: 368614
Diffstat (limited to 'lldb/source/Expression/Materializer.cpp')
-rw-r--r--lldb/source/Expression/Materializer.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/lldb/source/Expression/Materializer.cpp b/lldb/source/Expression/Materializer.cpp
index 64dffa3..c20422a 100644
--- a/lldb/source/Expression/Materializer.cpp
+++ b/lldb/source/Expression/Materializer.cpp
@@ -530,12 +530,15 @@ public:
return;
}
- size_t bit_align =
+ llvm::Optional<size_t> opt_bit_align =
m_variable_sp->GetType()->GetLayoutCompilerType().GetTypeBitAlign();
- size_t byte_align = (bit_align + 7) / 8;
+ if (!opt_bit_align) {
+ err.SetErrorStringWithFormat("can't get the type alignment for %s",
+ m_variable_sp->GetName().AsCString());
+ return;
+ }
- if (!byte_align)
- byte_align = 1;
+ size_t byte_align = (*opt_bit_align + 7) / 8;
Status alloc_error;
const bool zero_memory = false;
@@ -788,11 +791,14 @@ public:
err.SetErrorString("can't get size of type");
return;
}
- size_t bit_align = m_type.GetTypeBitAlign();
- size_t byte_align = (bit_align + 7) / 8;
- if (!byte_align)
- byte_align = 1;
+ llvm::Optional<size_t> opt_bit_align = m_type.GetTypeBitAlign();
+ if (!opt_bit_align) {
+ err.SetErrorStringWithFormat("can't get the type alignment");
+ return;
+ }
+
+ size_t byte_align = (*opt_bit_align + 7) / 8;
Status alloc_error;
const bool zero_memory = true;