[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
Wed Aug 21 08:44:23 PDT 2019
sfertile updated this revision to Diff 216412.
sfertile marked an inline comment as done.
sfertile added a comment.
We were stretching the definition of an NFC patch by creating but not using the TOC-base on AIX. I've striped this down to the NFC part and will post a separate patch for the TOC base change that includes a test change to reflect the TOC-base being created.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D66032/new/
https://reviews.llvm.org/D66032
Files:
llvm/include/llvm/MC/MCSymbolXCOFF.h
llvm/lib/MC/XCOFFObjectWriter.cpp
llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
Index: llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
===================================================================
--- llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
+++ llvm/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/lib/MC/XCOFFObjectWriter.cpp
===================================================================
--- llvm/lib/MC/XCOFFObjectWriter.cpp
+++ llvm/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");
Index: llvm/include/llvm/MC/MCSymbolXCOFF.h
===================================================================
--- llvm/include/llvm/MC/MCSymbolXCOFF.h
+++ llvm/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 contain 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66032.216412.patch
Type: text/x-patch
Size: 2252 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190821/0cc1e55d/attachment.bin>
More information about the llvm-commits
mailing list