[PATCH] D66032: [AIX][MC][NFC] Explicitly set containing csects on XCOFF Symbols

Sean Fertile via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 22 08:14:24 PDT 2019


This revision was automatically updated to reflect the committed changes.
Closed by commit rL369657: [PowerPC][XCOFF][MC] Explicitly set containing csect on symbols. [NFC] (authored by sfertile, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D66032?vs=216412&id=216628#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D66032/new/

https://reviews.llvm.org/D66032

Files:
  llvm/trunk/include/llvm/MC/MCSymbolXCOFF.h
  llvm/trunk/lib/MC/XCOFFObjectWriter.cpp
  llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp


Index: llvm/trunk/include/llvm/MC/MCSymbolXCOFF.h
===================================================================
--- llvm/trunk/include/llvm/MC/MCSymbolXCOFF.h
+++ llvm/trunk/include/llvm/MC/MCSymbolXCOFF.h
@@ -14,6 +14,8 @@
 
 namespace llvm {
 
+class MCSectionXCOFF;
+
 class MCSymbolXCOFF : public MCSymbol {
 public:
   MCSymbolXCOFF(const StringMapEntry<bool> *Name, bool isTemporary)
@@ -33,8 +35,22 @@
     return StorageClass.getValue();
   }
 
+  void setContainingCsect(const MCSectionXCOFF *C) {
+    assert((!ContainingCsect || ContainingCsect == C) &&
+           "Trying to set a containing csect that doesn't match the one that"
+           "this symbol is already mapped to.");
+    ContainingCsect = C;
+  }
+
+  const MCSectionXCOFF *getContainingCsect() const {
+    assert(ContainingCsect &&
+           "Trying to get containing csect but none was set.");
+    return ContainingCsect;
+  }
+
 private:
   Optional<XCOFF::StorageClass> StorageClass;
+  const MCSectionXCOFF *ContainingCsect = nullptr;
 };
 
 } // end namespace llvm
Index: llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp
===================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp
+++ llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp
@@ -1671,6 +1671,8 @@
   MCSymbolXCOFF *XSym = cast<MCSymbolXCOFF>(getSymbol(GV));
   XSym->setStorageClass(
       TargetLoweringObjectFileXCOFF::getStorageClassForGlobal(GV));
+  XSym->setContainingCsect(CSect);
+
   const DataLayout &DL = GV->getParent()->getDataLayout();
   unsigned Align =
       GV->getAlignment() ? GV->getAlignment() : DL.getPreferredAlignment(GV);
Index: llvm/trunk/lib/MC/XCOFFObjectWriter.cpp
===================================================================
--- llvm/trunk/lib/MC/XCOFFObjectWriter.cpp
+++ llvm/trunk/lib/MC/XCOFFObjectWriter.cpp
@@ -247,8 +247,7 @@
     const MCSymbolXCOFF *XSym = cast<MCSymbolXCOFF>(&S);
 
     // Map the symbol into its containing csect.
-    MCSectionXCOFF *ContainingCsect =
-        dyn_cast<MCSectionXCOFF>(XSym->getFragment(false)->getParent());
+    const MCSectionXCOFF *ContainingCsect = XSym->getContainingCsect();
     assert(WrapperMap.find(ContainingCsect) != WrapperMap.end() &&
            "Expected containing csect to exist in map");
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66032.216628.patch
Type: text/x-patch
Size: 2308 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190822/f4b37cc5/attachment.bin>


More information about the llvm-commits mailing list