aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/MCObjectStreamer.cpp
diff options
context:
space:
mode:
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();