From 8732bbec1ec96d78c9d79df3c24aae686a7b7a91 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Tue, 31 Oct 2017 19:40:03 +0000 Subject: [PATCH] [DWARF] Now that Optional is standard layout, put it into an union instead of splatting it. No functionality change intended. llvm-svn: 317028 --- .../llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h | 15 ++++----------- llvm/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp | 4 ++-- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/llvm/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h b/llvm/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h index 84b2339..de49be5 100644 --- a/llvm/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h +++ b/llvm/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h @@ -33,11 +33,8 @@ public: assert(isImplicitConst()); } AttributeSpec(dwarf::Attribute A, dwarf::Form F, Optional ByteSize) - : Attr(A), Form(F) { + : Attr(A), Form(F), ByteSize(ByteSize) { assert(!isImplicitConst()); - this->ByteSize.HasByteSize = ByteSize.hasValue(); - if (this->ByteSize.HasByteSize) - this->ByteSize.ByteSize = *ByteSize; } dwarf::Attribute Attr; @@ -48,21 +45,17 @@ public: /// attributes and as value for implicit_const ones, indicated by /// Form == DW_FORM_implicit_const. /// The following cases are distinguished: - /// * Form != DW_FORM_implicit_const and HasByteSize is true: + /// * Form != DW_FORM_implicit_const and ByteSize has a value: /// ByteSize contains the fixed size in bytes for the Form in this /// object. - /// * Form != DW_FORM_implicit_const and HasByteSize is false: + /// * Form != DW_FORM_implicit_const and ByteSize is None: /// byte size of Form either varies according to the DWARFUnit /// that it is contained in or the value size varies and must be /// decoded from the debug information in order to determine its size. /// * Form == DW_FORM_implicit_const: /// Value contains value for the implicit_const attribute. - struct ByteSizeStorage { - bool HasByteSize; - uint8_t ByteSize; - }; union { - ByteSizeStorage ByteSize; + Optional ByteSize; int64_t Value; }; diff --git a/llvm/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp b/llvm/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp index a88dcfc..1fc54d20 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp @@ -214,8 +214,8 @@ Optional DWARFAbbreviationDeclaration::AttributeSpec::getByteSize( const DWARFUnit &U) const { if (isImplicitConst()) return 0; - if (ByteSize.HasByteSize) - return ByteSize.ByteSize; + if (ByteSize) + return *ByteSize; Optional S; auto FixedByteSize = DWARFFormValue::getFixedByteSize(Form, U.getFormParams()); -- 2.7.4