mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-04-01 12:43:47 +00:00
[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
This commit is contained in:
parent
d2e493c337
commit
36f13e4912
@ -708,7 +708,8 @@ public:
|
||||
|
||||
lldb::Format GetFormat(lldb::opaque_compiler_type_t type) override;
|
||||
|
||||
size_t GetTypeBitAlign(lldb::opaque_compiler_type_t type) override;
|
||||
llvm::Optional<size_t>
|
||||
GetTypeBitAlign(lldb::opaque_compiler_type_t type) override;
|
||||
|
||||
uint32_t GetNumChildren(lldb::opaque_compiler_type_t type,
|
||||
bool omit_empty_base_classes,
|
||||
|
@ -257,7 +257,7 @@ public:
|
||||
|
||||
lldb::Format GetFormat() const;
|
||||
|
||||
size_t GetTypeBitAlign() const;
|
||||
llvm::Optional<size_t> GetTypeBitAlign() const;
|
||||
|
||||
uint32_t GetNumChildren(bool omit_empty_base_classes,
|
||||
const ExecutionContext *exe_ctx) const;
|
||||
|
@ -386,7 +386,8 @@ public:
|
||||
virtual bool IsCStringType(lldb::opaque_compiler_type_t type,
|
||||
uint32_t &length) = 0;
|
||||
|
||||
virtual size_t GetTypeBitAlign(lldb::opaque_compiler_type_t type) = 0;
|
||||
virtual llvm::Optional<size_t>
|
||||
GetTypeBitAlign(lldb::opaque_compiler_type_t type) = 0;
|
||||
|
||||
virtual CompilerType GetBasicTypeFromAST(lldb::BasicType basic_type) = 0;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -1302,8 +1302,10 @@ bool IRForTarget::MaybeHandleVariable(Value *llvm_value_ptr) {
|
||||
llvm::Optional<uint64_t> value_size = compiler_type.GetByteSize(nullptr);
|
||||
if (!value_size)
|
||||
return false;
|
||||
lldb::offset_t value_alignment =
|
||||
(compiler_type.GetTypeBitAlign() + 7ull) / 8ull;
|
||||
llvm::Optional<size_t> opt_alignment = compiler_type.GetTypeBitAlign();
|
||||
if (!opt_alignment)
|
||||
return false;
|
||||
lldb::offset_t value_alignment = (*opt_alignment + 7ull) / 8ull;
|
||||
|
||||
LLDB_LOG(log,
|
||||
"Type of \"{0}\" is [clang \"{1}\", llvm \"{2}\"] [size {3}, "
|
||||
|
@ -5087,10 +5087,11 @@ ClangASTContext::GetBitSize(lldb::opaque_compiler_type_t type,
|
||||
return None;
|
||||
}
|
||||
|
||||
size_t ClangASTContext::GetTypeBitAlign(lldb::opaque_compiler_type_t type) {
|
||||
llvm::Optional<size_t>
|
||||
ClangASTContext::GetTypeBitAlign(lldb::opaque_compiler_type_t type) {
|
||||
if (GetCompleteType(type))
|
||||
return getASTContext()->getTypeAlign(GetQualType(type));
|
||||
return 0;
|
||||
return {};
|
||||
}
|
||||
|
||||
lldb::Encoding ClangASTContext::GetEncoding(lldb::opaque_compiler_type_t type,
|
||||
|
@ -503,10 +503,10 @@ CompilerType::GetByteSize(ExecutionContextScope *exe_scope) const {
|
||||
return {};
|
||||
}
|
||||
|
||||
size_t CompilerType::GetTypeBitAlign() const {
|
||||
llvm::Optional<size_t> CompilerType::GetTypeBitAlign() const {
|
||||
if (IsValid())
|
||||
return m_type_system->GetTypeBitAlign(m_type);
|
||||
return 0;
|
||||
return {};
|
||||
}
|
||||
|
||||
lldb::Encoding CompilerType::GetEncoding(uint64_t &count) const {
|
||||
|
Loading…
x
Reference in New Issue
Block a user