aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/MCObjectStreamer.cpp
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2025-07-12 20:29:34 -0700
committerFangrui Song <i@maskray.me>2025-07-12 20:29:34 -0700
commit267b136359d8448c73432b4f3ceeefbf4c35e00b (patch)
tree4b034b6d71924b809c04704c401501a45d5987ee /llvm/lib/MC/MCObjectStreamer.cpp
parent6f923134ddf4afc4266c4c32854d7cc2793c23a1 (diff)
downloadllvm-267b136359d8448c73432b4f3ceeefbf4c35e00b.zip
llvm-267b136359d8448c73432b4f3ceeefbf4c35e00b.tar.gz
llvm-267b136359d8448c73432b4f3ceeefbf4c35e00b.tar.bz2
MCFragment: Refactor code for MCFragment
To prepare for moving content and fixup member variables from MCEncodedFragment to MCFragment and removing MCDataFragment/MCRelaxableFragment classes, replace dyn_cast with getKind() tests.
Diffstat (limited to 'llvm/lib/MC/MCObjectStreamer.cpp')
-rw-r--r--llvm/lib/MC/MCObjectStreamer.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/MC/MCObjectStreamer.cpp b/llvm/lib/MC/MCObjectStreamer.cpp
index 5cc9bed..b03c228 100644
--- a/llvm/lib/MC/MCObjectStreamer.cpp
+++ b/llvm/lib/MC/MCObjectStreamer.cpp
@@ -84,8 +84,9 @@ static std::optional<uint64_t> absoluteSymbolDiff(const MCSymbol *Hi,
return 0;
if (Hi->isVariable() || Lo->isVariable())
return std::nullopt;
- auto *LoF = dyn_cast_or_null<MCDataFragment>(Lo->getFragment());
- if (!LoF || Hi->getFragment() != LoF || LoF->isLinkerRelaxable())
+ auto *LoF = Lo->getFragment();
+ if (!LoF || LoF->getKind() != MCFragment::FT_Data ||
+ Hi->getFragment() != LoF || LoF->isLinkerRelaxable())
return std::nullopt;
return Hi->getOffset() - Lo->getOffset();