[PATCH] D54667: [CodeView] Emit proper debug info for ref-qualified member functions

Reid Kleckner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 19 12:03:07 PST 2018


rnk added inline comments.


================
Comment at: llvm/include/llvm/DebugInfo/CodeView/CodeView.h:362-364
 CV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(PointerOptions)
 
+enum class PointerQualifier : uint32_t {
----------------
Why should we separate these? I don't think the WinRT smart pointer bit really relates to ref qualifier overloading, does it? Since these are just more flags, grouping them together reduces the number of parameters we need to make pointer records.


================
Comment at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp:1717
 
-  PointerRecord PR(PointeeTI, PK, PM, PO, Ty->getSizeInBits() / 8);
+  PointerRecord PR(PointeeTI, PK, PM, PO, PQ, Ty->getSizeInBits() / 8);
   return TypeTable.writeLeafType(PR);
----------------
This constructor is getting pretty big at this point, for example.


================
Comment at: llvm/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp:364
   printTypeIndex("PointeeType", Ptr.getReferentType());
-  W->printHex("PointerAttributes", uint32_t(Ptr.getOptions()));
   W->printEnum("PtrType", unsigned(Ptr.getPointerKind()),
----------------
Most of the diff is updating tests to cope with this. You should be able to commit this one line change separately and fix up all the tests by deleting lines in test containing `PointerAttributes`.


https://reviews.llvm.org/D54667





More information about the llvm-commits mailing list