From: Jim Grosbach Date: Wed, 18 Jan 2012 21:54:12 +0000 (+0000) Subject: MCAssembler tweak for determining when a symbol difference is resolved. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=ec4ceb797a963b2d24b02d40fad6cc456fac3e5b;p=oota-llvm.git MCAssembler tweak for determining when a symbol difference is resolved. If the two fragments are in the same Atom, then the difference expression is resolvable at compile time. Previously we were checking that they were in the same fragment, but that breaks down in the presence of instruction relaxation which has multiple fragments in the same atom. rdar://10711829 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148423 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/MC/MachObjectWriter.cpp b/lib/MC/MachObjectWriter.cpp index ce222b75cf4..a3445219f1e 100644 --- a/lib/MC/MachObjectWriter.cpp +++ b/lib/MC/MachObjectWriter.cpp @@ -591,7 +591,8 @@ IsSymbolRefDifferenceFullyResolvedImpl(const MCAssembler &Asm, if (!Asm.getBackend().hasReliableSymbolDifference()) { if (!SA.isInSection() || &SecA != &SecB || - (!SA.isTemporary() && &FB != Asm.getSymbolData(SA).getFragment())) + (!SA.isTemporary() && + FB.getAtom() != Asm.getSymbolData(SA).getFragment()->getAtom())) return false; return true; }