From: Benjamin Kramer Date: Tue, 31 Oct 2017 19:40:03 +0000 (+0000) Subject: [DWARF] Now that Optional is standard layout, put it into an union instead of splatti... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=159d0eccfeefcc80fdbf2142bba72fe49d0535aa;p=llvm [DWARF] Now that Optional is standard layout, put it into an union instead of splatting it. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317028 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h b/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h index 84b23398b8c..de49be5c0b5 100644 --- a/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h +++ b/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/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp b/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp index a88dcfcf542..1fc54d2065e 100644 --- a/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp +++ b/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());