[clang] [llvm] [PATCH] [COFF] Implement pragma clang section on COFF targets (PR #112714)
David Spickett via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 1 02:26:34 PDT 2024
================
@@ -1677,6 +1677,22 @@ MCSection *TargetLoweringObjectFileCOFF::getExplicitSectionGlobal(
Name == getInstrProfSectionName(IPSK_covname, Triple::COFF,
/*AddSegmentInfo=*/false))
Kind = SectionKind::getMetadata();
+
+ const GlobalVariable *GV = dyn_cast<GlobalVariable>(GO);
+ if (GV && GV->hasImplicitSection()) {
+ auto Attrs = GV->getAttributes();
+ if (Attrs.hasAttribute("bss-section") && Kind.isBSS()) {
+ Name = Attrs.getAttribute("bss-section").getValueAsString();
+ } else if (Attrs.hasAttribute("rodata-section") && Kind.isReadOnly()) {
+ Name = Attrs.getAttribute("rodata-section").getValueAsString();
+ } else if (Attrs.hasAttribute("relro-section") &&
+ Kind.isReadOnlyWithRel()) {
+ Name = Attrs.getAttribute("relro-section").getValueAsString();
+ } else if (Attrs.hasAttribute("data-section") && Kind.isData()) {
+ Name = Attrs.getAttribute("data-section").getValueAsString();
+ }
----------------
DavidSpickett wrote:
I guess that the conditions here list all the valid combinations. If we got to the implicit `else`, would falling through without setting name be ok?
It would be as if `if (GV && GV->hasImplicitSection()) {` was false, so I think it would do something valid, since that path already exists.
https://github.com/llvm/llvm-project/pull/112714
More information about the cfe-commits
mailing list