diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2018-07-28 10:51:19 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2018-07-28 10:51:19 +0000 |
commit | eb11fae6d08f479c0799db45860a98af528fa6e7 (patch) | |
tree | 44d492a50c8c1a7eb8e2d17ea3360ec4d066f042 /lib/MC/MCSectionCOFF.cpp | |
parent | b8a2042aa938069e862750553db0e4d82d25822c (diff) |
Notes
Diffstat (limited to 'lib/MC/MCSectionCOFF.cpp')
-rw-r--r-- | lib/MC/MCSectionCOFF.cpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/lib/MC/MCSectionCOFF.cpp b/lib/MC/MCSectionCOFF.cpp index 72a7fc36a460..c861963eec8a 100644 --- a/lib/MC/MCSectionCOFF.cpp +++ b/lib/MC/MCSectionCOFF.cpp @@ -69,35 +69,40 @@ void MCSectionCOFF::PrintSwitchToSection(const MCAsmInfo &MAI, const Triple &T, OS << '"'; if (getCharacteristics() & COFF::IMAGE_SCN_LNK_COMDAT) { - OS << ","; + if (COMDATSymbol) + OS << ","; + else + OS << "\n\t.linkonce\t"; switch (Selection) { case COFF::IMAGE_COMDAT_SELECT_NODUPLICATES: - OS << "one_only,"; + OS << "one_only"; break; case COFF::IMAGE_COMDAT_SELECT_ANY: - OS << "discard,"; + OS << "discard"; break; case COFF::IMAGE_COMDAT_SELECT_SAME_SIZE: - OS << "same_size,"; + OS << "same_size"; break; case COFF::IMAGE_COMDAT_SELECT_EXACT_MATCH: - OS << "same_contents,"; + OS << "same_contents"; break; case COFF::IMAGE_COMDAT_SELECT_ASSOCIATIVE: - OS << "associative,"; + OS << "associative"; break; case COFF::IMAGE_COMDAT_SELECT_LARGEST: - OS << "largest,"; + OS << "largest"; break; case COFF::IMAGE_COMDAT_SELECT_NEWEST: - OS << "newest,"; + OS << "newest"; break; default: assert(false && "unsupported COFF selection type"); break; } - assert(COMDATSymbol); - COMDATSymbol->print(OS, &MAI); + if (COMDATSymbol) { + OS << ","; + COMDATSymbol->print(OS, &MAI); + } } OS << '\n'; } |