[llvm] r317028 - [DWARF] Now that Optional is standard layout, put it into an union instead of splatting it.

Benjamin Kramer via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 31 12:40:03 PDT 2017


Author: d0k
Date: Tue Oct 31 12:40:03 2017
New Revision: 317028

URL: http://llvm.org/viewvc/llvm-project?rev=317028&view=rev
Log:
[DWARF] Now that Optional is standard layout, put it into an union instead of splatting it.

No functionality change intended.

Modified:
    llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h
    llvm/trunk/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp

Modified: llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h?rev=317028&r1=317027&r2=317028&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h Tue Oct 31 12:40:03 2017
@@ -33,11 +33,8 @@ public:
       assert(isImplicitConst());
     }
     AttributeSpec(dwarf::Attribute A, dwarf::Form F, Optional<uint8_t> 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<uint8_t> ByteSize;
       int64_t Value;
     };
 

Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp?rev=317028&r1=317027&r2=317028&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp (original)
+++ llvm/trunk/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp Tue Oct 31 12:40:03 2017
@@ -214,8 +214,8 @@ Optional<int64_t> DWARFAbbreviationDecla
     const DWARFUnit &U) const {
   if (isImplicitConst())
     return 0;
-  if (ByteSize.HasByteSize)
-    return ByteSize.ByteSize;
+  if (ByteSize)
+    return *ByteSize;
   Optional<int64_t> S;
   auto FixedByteSize =
       DWARFFormValue::getFixedByteSize(Form, U.getFormParams());




More information about the llvm-commits mailing list