[lld] [llvm] Reapply "[RISCV] Support RISCV Atomics ABI attributes (#84597)" (PR #90266)
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat Jun 29 11:51:12 PDT 2024
================
@@ -1084,10 +1084,62 @@ static void mergeArch(RISCVISAUtils::OrderedExtensionMap &mergedExts,
}
}
+static void mergeAtomic(DenseMap<unsigned, unsigned>::iterator it,
+ const InputSectionBase *oldSection,
+ const InputSectionBase *newSection, unsigned int oldTag,
+ unsigned int newTag) {
+ using RISCVAttrs::RISCVAtomicAbiTag::AtomicABI;
+ // Same tags stay the same, and UNKNOWN is compatible with anything
+ if (oldTag == newTag || newTag == AtomicABI::UNKNOWN)
+ return;
+
+ switch (oldTag) {
+ case AtomicABI::UNKNOWN:
+ it->getSecond() = newTag;
+ return;
+ case AtomicABI::A6C:
+ switch (newTag) {
+ case AtomicABI::A6S:
+ it->getSecond() = AtomicABI::A6C;
+ return;
+ case AtomicABI::A7:
+ errorOrWarn(toString(oldSection) + " has atomic_abi=" + Twine(oldTag) +
----------------
MaskRay wrote:
We have similar diagnostics in two places. One is OutputSections.cpp:127. Follow its style?
https://github.com/llvm/llvm-project/pull/90266
More information about the llvm-commits
mailing list