[ARM] Fix Tag_ABI_HardFP_use build attribute
[oota-llvm.git] / lib / Target / ARM / ARMAsmPrinter.cpp
index 8653a7c73b67526a5f187fb6c3de7573a39bed60..c0f6d1fad3488abb5c3fd00041cb3d8265bb21d0 100644 (file)
@@ -692,11 +692,15 @@ void ARMAsmPrinter::emitAttributes() {
   ATS.emitAttribute(ARMBuildAttrs::ABI_align8_needed, 1);
   ATS.emitAttribute(ARMBuildAttrs::ABI_align8_preserved, 1);
 
+  // ABI_HardFP_use attribute to indicate single precision FP.
+  if (Subtarget->isFPOnlySP())
+    ATS.emitAttribute(ARMBuildAttrs::ABI_HardFP_use,
+                      ARMBuildAttrs::HardFPSinglePrecision);
+
   // Hard float.  Use both S and D registers and conform to AAPCS-VFP.
-  if (Subtarget->isAAPCS_ABI() && TM.Options.FloatABIType == FloatABI::Hard) {
-    ATS.emitAttribute(ARMBuildAttrs::ABI_HardFP_use, 3);
-    ATS.emitAttribute(ARMBuildAttrs::ABI_VFP_args, 1);
-  }
+  if (Subtarget->isAAPCS_ABI() && TM.Options.FloatABIType == FloatABI::Hard)
+    ATS.emitAttribute(ARMBuildAttrs::ABI_VFP_args, ARMBuildAttrs::HardFPAAPCS);
+
   // FIXME: Should we signal R9 usage?
 
   if (Subtarget->hasDivide()) {