[PATCH] D26526: Clean up DWARFFormValue by reducing duplicated code and removing DWARFFormValue::getFixedFormSizes()

Greg Clayton via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 10 15:16:51 PST 2016

clayborg marked 6 inline comments as done.
clayborg added a comment.

Marked things as done. Let me know if this is enough or if you have objections to the FormSizeHelper class. I think it is better than extracting 3 values that you are almost 90% of the time never use. The construction of FormSizeHelperDWARFUnit is very cheap and it will be 2 pointers in size so it shouldn't be too bad.

Comment at: lib/DebugInfo/DWARF/DWARFFormValue.cpp:120
+    }
+    return None;
+  }
dblaikie wrote:
> should probably be llvm_unreachable (LLVM might flag this code as unreachable, since the above switch is fully covering all the enum values - and we'll have a warning/error if a new enum value is added that's not covered in the switch)
Yeah, that is why I left it out as I figured the warning for a missing value would show up, but I can add an llvm_unreachable here.

Comment at: lib/DebugInfo/DWARF/DWARFFormValue.cpp:292-293
+                                 llvm::dwarf::DwarfFormat Format) {
+  return ::getFixedByteSize(form,
+                            FormSizeHelperManual(Version, AddrSize, Format));
Yeah I thought about these issues. I didn't want to always extract 3 values for each form we are going to skip since a large percent of the forms will never touch or access the data in the first place. So I kind of like the laziness of the current implementation because most forms don't need to access the DWARFUnit or the Version/AddrSize/Format.

I can remove the virtual destructor and declare the two classes final though. You ok with that?


More information about the llvm-commits mailing list