[llvm] 58d16db - MCAssembler: Simplify relaxation of FT_Fill and FT_Org
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat Aug 23 20:33:13 PDT 2025
Author: Fangrui Song
Date: 2025-08-23T20:33:07-07:00
New Revision: 58d16db8b5d2aa98ed1e5b5a5d14b9ba7042f6d0
URL: https://github.com/llvm/llvm-project/commit/58d16db8b5d2aa98ed1e5b5a5d14b9ba7042f6d0
DIFF: https://github.com/llvm/llvm-project/commit/58d16db8b5d2aa98ed1e5b5a5d14b9ba7042f6d0.diff
LOG: MCAssembler: Simplify relaxation of FT_Fill and FT_Org
Added:
Modified:
llvm/include/llvm/MC/MCSection.h
llvm/lib/MC/MCAssembler.cpp
llvm/test/MC/ELF/mc-dump.s
Removed:
################################################################################
diff --git a/llvm/include/llvm/MC/MCSection.h b/llvm/include/llvm/MC/MCSection.h
index a1762fc337612..12389d623e588 100644
--- a/llvm/include/llvm/MC/MCSection.h
+++ b/llvm/include/llvm/MC/MCSection.h
@@ -307,7 +307,6 @@ class MCFillFragment : public MCFragment {
uint64_t Value;
/// The number of bytes to insert.
const MCExpr &NumValues;
- uint64_t Size = 0;
/// Source location of the directive that this fragment was created for.
SMLoc Loc;
@@ -321,8 +320,6 @@ class MCFillFragment : public MCFragment {
uint64_t getValue() const { return Value; }
uint8_t getValueSize() const { return ValueSize; }
const MCExpr &getNumValues() const { return NumValues; }
- uint64_t getSize() const { return Size; }
- void setSize(uint64_t Value) { Size = Value; }
SMLoc getLoc() const { return Loc; }
@@ -371,16 +368,12 @@ class MCOrgFragment : public MCFragment {
/// Source location of the directive that this fragment was created for.
SMLoc Loc;
- uint64_t Size = 0;
-
public:
MCOrgFragment(const MCExpr &Offset, int8_t Value, SMLoc Loc)
: MCFragment(FT_Org), Value(Value), Offset(&Offset), Loc(Loc) {}
const MCExpr &getOffset() const { return *Offset; }
uint8_t getValue() const { return Value; }
- uint64_t getSize() const { return Size; }
- void setSize(uint64_t Value) { Size = Value; }
SMLoc getLoc() const { return Loc; }
diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp
index 29a9fadbe2433..b1031d7822604 100644
--- a/llvm/lib/MC/MCAssembler.cpp
+++ b/llvm/lib/MC/MCAssembler.cpp
@@ -915,7 +915,7 @@ void MCAssembler::relaxDwarfCallFrameFragment(MCFragment &F) {
}
bool MCAssembler::relaxFragment(MCFragment &F) {
- size_t Size = computeFragmentSize(F);
+ auto Size = computeFragmentSize(F);
switch (F.getKind()) {
default:
return false;
@@ -943,20 +943,9 @@ bool MCAssembler::relaxFragment(MCFragment &F) {
getContext().getCVContext().encodeDefRange(
*this, static_cast<MCCVDefRangeFragment &>(F));
break;
- case MCFragment::FT_Fill: {
- auto &FF = static_cast<MCFillFragment &>(F);
- if (FF.getSize() == Size)
- return false;
- FF.setSize(Size);
- return true;
- }
- case MCFragment::FT_Org: {
- auto &FF = static_cast<MCOrgFragment &>(F);
- if (FF.getSize() == Size)
- return false;
- FF.setSize(Size);
- return true;
- }
+ case MCFragment::FT_Fill:
+ case MCFragment::FT_Org:
+ return F.getNext()->Offset - F.Offset != Size;
}
return computeFragmentSize(F) != Size;
}
diff --git a/llvm/test/MC/ELF/mc-dump.s b/llvm/test/MC/ELF/mc-dump.s
index a590e1c3d9be4..51b3ff4774cf3 100644
--- a/llvm/test/MC/ELF/mc-dump.s
+++ b/llvm/test/MC/ELF/mc-dump.s
@@ -30,7 +30,7 @@
# CHECK-NEXT:5 LEB Size:0+1 [15] Value:.Ltmp0-_start Signed:0
# CHECK:]
-# CHECK: 3 assembler - Number of fixup evaluations for relaxation
+# CHECK: 2 assembler - Number of fixup evaluations for relaxation
# CHECK: 8 assembler - Number of fixups
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t -debug-only=mc-dump -save-temp-labels -g 2>&1 | FileCheck %s --check-prefix=CHECK2
More information about the llvm-commits
mailing list