diff --git a/lib/MC/MachObjectWriter.cpp b/lib/MC/MachObjectWriter.cpp
index b225802..619954c 100644
--- a/lib/MC/MachObjectWriter.cpp
+++ b/lib/MC/MachObjectWriter.cpp
@@ -1123,15 +1123,10 @@
                        UndefinedSymbolData);
   }
 
-
   bool IsFixupFullyResolved(const MCAssembler &Asm,
                             const MCValue Target,
                             bool IsPCRel,
                             const MCFragment *DF) const {
-    // If we aren't using scattered symbols, the fixup is fully resolved.
-    if (!Asm.getBackend().hasScatteredSymbols())
-      return true;
-
     // Otherwise, determine whether this value is actually resolved; scattering
     // may cause atoms to move.
 
diff --git a/lib/MC/TargetAsmBackend.cpp b/lib/MC/TargetAsmBackend.cpp
index 156bf19..e0653d0 100644
--- a/lib/MC/TargetAsmBackend.cpp
+++ b/lib/MC/TargetAsmBackend.cpp
@@ -11,8 +11,7 @@
 using namespace llvm;
 
 TargetAsmBackend::TargetAsmBackend()
-  : HasReliableSymbolDifference(false),
-    HasScatteredSymbols(false)
+  : HasReliableSymbolDifference(false)
 {
 }
 
diff --git a/lib/Target/ARM/ARMAsmBackend.cpp b/lib/Target/ARM/ARMAsmBackend.cpp
index db7e20c..9916de3 100644
--- a/lib/Target/ARM/ARMAsmBackend.cpp
+++ b/lib/Target/ARM/ARMAsmBackend.cpp
@@ -336,9 +336,7 @@
 public:
   Triple::OSType OSType;
   ELFARMAsmBackend(const Target &T, Triple::OSType _OSType)
-    : ARMAsmBackend(T), OSType(_OSType) {
-    HasScatteredSymbols = true;
-  }
+    : ARMAsmBackend(T), OSType(_OSType) { }
 
   virtual const MCObjectFormat &getObjectFormat() const {
     return Format;
@@ -376,9 +374,7 @@
 class DarwinARMAsmBackend : public ARMAsmBackend {
   MCMachOObjectFormat Format;
 public:
-  DarwinARMAsmBackend(const Target &T) : ARMAsmBackend(T) {
-    HasScatteredSymbols = true;
-  }
+  DarwinARMAsmBackend(const Target &T) : ARMAsmBackend(T) { }
 
   virtual const MCObjectFormat &getObjectFormat() const {
     return Format;
diff --git a/lib/Target/MBlaze/MBlazeAsmBackend.cpp b/lib/Target/MBlaze/MBlazeAsmBackend.cpp
index 83156f5..d3be2b5 100644
--- a/lib/Target/MBlaze/MBlazeAsmBackend.cpp
+++ b/lib/Target/MBlaze/MBlazeAsmBackend.cpp
@@ -105,9 +105,7 @@
 public:
   Triple::OSType OSType;
   ELFMBlazeAsmBackend(const Target &T, Triple::OSType _OSType)
-    : MBlazeAsmBackend(T), OSType(_OSType) {
-    HasScatteredSymbols = true;
-  }
+    : MBlazeAsmBackend(T), OSType(_OSType) { }
 
   virtual const MCObjectFormat &getObjectFormat() const {
     return Format;
diff --git a/lib/Target/PowerPC/PPCAsmBackend.cpp b/lib/Target/PowerPC/PPCAsmBackend.cpp
index bf437e3..9dfc6fc 100644
--- a/lib/Target/PowerPC/PPCAsmBackend.cpp
+++ b/lib/Target/PowerPC/PPCAsmBackend.cpp
@@ -84,9 +84,7 @@
   class DarwinPPCAsmBackend : public PPCAsmBackend {
     MCMachOObjectFormat Format;
   public:
-    DarwinPPCAsmBackend(const Target &T) : PPCAsmBackend(T) {
-      HasScatteredSymbols = true;
-    }
+    DarwinPPCAsmBackend(const Target &T) : PPCAsmBackend(T) { }
     
     virtual const MCObjectFormat &getObjectFormat() const {
       return Format;
diff --git a/lib/Target/X86/X86AsmBackend.cpp b/lib/Target/X86/X86AsmBackend.cpp
index d137875..3f58e43 100644
--- a/lib/Target/X86/X86AsmBackend.cpp
+++ b/lib/Target/X86/X86AsmBackend.cpp
@@ -289,7 +289,6 @@
   Triple::OSType OSType;
   ELFX86AsmBackend(const Target &T, Triple::OSType _OSType)
     : X86AsmBackend(T), OSType(_OSType) {
-    HasScatteredSymbols = true;
     HasReliableSymbolDifference = true;
   }
 
@@ -337,7 +336,6 @@
   WindowsX86AsmBackend(const Target &T, bool is64Bit)
     : X86AsmBackend(T)
     , Is64Bit(is64Bit) {
-    HasScatteredSymbols = true;
   }
 
   virtual const MCObjectFormat &getObjectFormat() const {
@@ -354,9 +352,7 @@
 
 public:
   DarwinX86AsmBackend(const Target &T)
-    : X86AsmBackend(T) {
-    HasScatteredSymbols = true;
-  }
+    : X86AsmBackend(T) { }
 
   virtual const MCObjectFormat &getObjectFormat() const {
     return Format;
