MC tweak symbol difference resolution for non-local symbols.
[oota-llvm.git] / lib / MC / MachObjectWriter.cpp
index e016f09c95f0e5b605debbce0e007bd3c15e1a8b..ce222b75cf4de4b7067645c4aca2c0e3101fbcc4 100644 (file)
@@ -590,8 +590,8 @@ IsSymbolRefDifferenceFullyResolvedImpl(const MCAssembler &Asm,
     // assembler locals.
 
     if (!Asm.getBackend().hasReliableSymbolDifference()) {
-      if ((!SA.isTemporary() && Asm.getSubsectionsViaSymbols()) ||
-           !SA.isInSection() || &SecA != &SecB)
+      if (!SA.isInSection() || &SecA != &SecB ||
+          (!SA.isTemporary() && &FB != Asm.getSymbolData(SA).getFragment()))
         return false;
       return true;
     }