diff --git a/include/llvm/Target/TargetAsmInfo.h b/include/llvm/Target/TargetAsmInfo.h
index a8da6cb..e59b12a 100644
--- a/include/llvm/Target/TargetAsmInfo.h
+++ b/include/llvm/Target/TargetAsmInfo.h
@@ -601,13 +601,6 @@
     virtual SectionKind::Kind
     SectionKindForGlobal(const GlobalValue *GV) const;
 
-    /// RelocBehaviour - Describes how relocations should be treated when
-    /// selecting sections. Reloc::Global bit should be set if global
-    /// relocations should force object to be placed in read-write
-    /// sections. Reloc::Local bit should be set if local relocations should
-    /// force object to be placed in read-write sections.
-    virtual unsigned RelocBehaviour() const;
-
     /// SectionFlagsForGlobal - This hook allows the target to select proper
     /// section flags either for given global or for section.
 // FIXME: Eliminate this.
diff --git a/lib/Target/ELFTargetAsmInfo.cpp b/lib/Target/ELFTargetAsmInfo.cpp
index bd2dd0a..8ace00a 100644
--- a/lib/Target/ELFTargetAsmInfo.cpp
+++ b/lib/Target/ELFTargetAsmInfo.cpp
@@ -57,7 +57,13 @@
   if (GVar->hasInitializer()) {
     Constant *C = GVar->getInitializer();
     bool isConstant = GVar->isConstant();
-    unsigned Reloc = RelocBehaviour();
+    
+    
+    // By default - all relocations in PIC mode would force symbol to be
+    // placed in r/w section.
+    unsigned Reloc = (TM.getRelocationModel() != Reloc::Static ?
+                      Reloc::LocalOrGlobal : Reloc::None);
+    
     if (Reloc != Reloc::None && C->ContainsRelocations(Reloc))
       return (C->ContainsRelocations(Reloc::Global) ?
               (isConstant ?
diff --git a/lib/Target/TargetAsmInfo.cpp b/lib/Target/TargetAsmInfo.cpp
index 2cdaa74..e60855d 100644
--- a/lib/Target/TargetAsmInfo.cpp
+++ b/lib/Target/TargetAsmInfo.cpp
@@ -190,13 +190,6 @@
   return false;
 }
 
-unsigned TargetAsmInfo::RelocBehaviour() const {
-  // By default - all relocations in PIC mode would force symbol to be
-  // placed in r/w section.
-  return (TM.getRelocationModel() != Reloc::Static ?
-          Reloc::LocalOrGlobal : Reloc::None);
-}
-
 SectionKind::Kind
 TargetAsmInfo::SectionKindForGlobal(const GlobalValue *GV) const {
   // Early exit - functions should be always in text sections.
@@ -211,13 +204,14 @@
     // Variable can be easily put to BSS section.
     return (isThreadLocal ? SectionKind::ThreadBSS : SectionKind::BSS);
   } else if (GVar->isConstant() && !isThreadLocal) {
-    // Now we know, that varible has initializer and it is constant. We need to
+    // Now we know, that variable has initializer and it is constant. We need to
     // check its initializer to decide, which section to output it into. Also
     // note, there is no thread-local r/o section.
     Constant *C = GVar->getInitializer();
     if (C->ContainsRelocations(Reloc::LocalOrGlobal)) {
       // Decide, whether it is still possible to put symbol into r/o section.
-      unsigned Reloc = RelocBehaviour();
+      unsigned Reloc = (TM.getRelocationModel() != Reloc::Static ?
+                        Reloc::LocalOrGlobal : Reloc::None);
 
       // We already did a query for 'all' relocs, thus - early exits.
       if (Reloc == Reloc::LocalOrGlobal)
