diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp
index fc65144..03ac17b 100644
--- a/lib/Target/ARM/ARMAsmPrinter.cpp
+++ b/lib/Target/ARM/ARMAsmPrinter.cpp
@@ -834,17 +834,18 @@
           SwitchToDataSection(TAI->getDataSection(), I);
         else {
           // Read-only data.
-          bool isIntFPLiteral = Type->isInteger()  || Type->isFloatingPoint();
-          if (C->ContainsRelocations() && Subtarget->isTargetDarwin() &&
+          bool HasReloc = C->ContainsRelocations();
+          if (HasReloc &&
+              Subtarget->isTargetDarwin() &&
               TM.getRelocationModel() != Reloc::Static)
             SwitchToDataSection("\t.const_data\n");
-          else if (isIntFPLiteral && Size == 4 &&
+          else if (!HasReloc && Size == 4 &&
                    TAI->getFourByteConstantSection())
             SwitchToDataSection(TAI->getFourByteConstantSection(), I);
-          else if (isIntFPLiteral && Size == 8 &&
+          else if (!HasReloc && Size == 8 &&
                    TAI->getEightByteConstantSection())
             SwitchToDataSection(TAI->getEightByteConstantSection(), I);
-          else if (isIntFPLiteral && Size == 16 &&
+          else if (!HasReloc && Size == 16 &&
                    TAI->getSixteenByteConstantSection())
             SwitchToDataSection(TAI->getSixteenByteConstantSection(), I);
           else if (TAI->getReadOnlySection())
diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp
index e16303e..7f57f69 100644
--- a/lib/Target/PowerPC/PPCAsmPrinter.cpp
+++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp
@@ -701,7 +701,10 @@
                                                 + ",\"aw\",@progbits";
           SwitchToDataSection(SectionName.c_str());
         } else {
-          SwitchToDataSection(TAI->getDataSection(), I);
+          if (I->isConstant() && TAI->getReadOnlySection())
+            SwitchToDataSection(TAI->getReadOnlySection(), I);
+          else
+            SwitchToDataSection(TAI->getDataSection(), I);
         }
         break;
       default:
@@ -942,17 +945,17 @@
           SwitchToDataSection(TAI->getDataSection(), I);
         else {
           // Read-only data.
-          bool isIntFPLiteral = Type->isInteger()  || Type->isFloatingPoint();
-          if (C->ContainsRelocations() &&
+          bool HasReloc = C->ContainsRelocations();
+          if (HasReloc &&
               TM.getRelocationModel() != Reloc::Static)
             SwitchToDataSection("\t.const_data\n");
-          else if (isIntFPLiteral && Size == 4 &&
+          else if (!HasReloc && Size == 4 &&
                    TAI->getFourByteConstantSection())
             SwitchToDataSection(TAI->getFourByteConstantSection(), I);
-          else if (isIntFPLiteral && Size == 8 &&
+          else if (!HasReloc && Size == 8 &&
                    TAI->getEightByteConstantSection())
             SwitchToDataSection(TAI->getEightByteConstantSection(), I);
-          else if (isIntFPLiteral && Size == 16 &&
+          else if (!HasReloc && Size == 16 &&
                    TAI->getSixteenByteConstantSection())
             SwitchToDataSection(TAI->getSixteenByteConstantSection(), I);
           else if (TAI->getReadOnlySection())
diff --git a/lib/Target/X86/X86AsmPrinter.cpp b/lib/Target/X86/X86AsmPrinter.cpp
index ad9a1e8..81ec50e 100644
--- a/lib/Target/X86/X86AsmPrinter.cpp
+++ b/lib/Target/X86/X86AsmPrinter.cpp
@@ -255,17 +255,18 @@
           SwitchToDataSection(TAI->getDataSection(), I);
         else {
           // Read-only data.
-          bool isIntFPLiteral = Type->isInteger()  || Type->isFloatingPoint();
-          if (C->ContainsRelocations() && Subtarget->isTargetDarwin() &&
+          bool HasReloc = C->ContainsRelocations();
+          if (HasReloc &&
+              Subtarget->isTargetDarwin() &&
               TM.getRelocationModel() != Reloc::Static)
             SwitchToDataSection("\t.const_data\n");
-          else if (isIntFPLiteral && Size == 4 &&
+          else if (!HasReloc && Size == 4 &&
                    TAI->getFourByteConstantSection())
             SwitchToDataSection(TAI->getFourByteConstantSection(), I);
-          else if (isIntFPLiteral && Size == 8 &&
+          else if (!HasReloc && Size == 8 &&
                    TAI->getEightByteConstantSection())
             SwitchToDataSection(TAI->getEightByteConstantSection(), I);
-          else if (isIntFPLiteral && Size == 16 &&
+          else if (!HasReloc && Size == 16 &&
                    TAI->getSixteenByteConstantSection())
             SwitchToDataSection(TAI->getSixteenByteConstantSection(), I);
           else if (TAI->getReadOnlySection())
