Index: cfe/trunk/lib/Driver/Tools.cpp =================================================================== --- cfe/trunk/lib/Driver/Tools.cpp +++ cfe/trunk/lib/Driver/Tools.cpp @@ -582,6 +582,10 @@ FloatABI = "soft"; } } + + if (Triple.isOSDarwin() && FloatABI == "hard") + D.Diag(diag::err_drv_unsupported_opt_for_target) << A->getAsString(Args) + << Triple.getArchName(); } // If unspecified, choose the default based on the platform. Index: cfe/trunk/test/Driver/arm-float-abi.c =================================================================== --- cfe/trunk/test/Driver/arm-float-abi.c +++ cfe/trunk/test/Driver/arm-float-abi.c @@ -0,0 +1,5 @@ +// RUN: not %clang %s -target armv7-apple-ios -mfloat-abi=hard 2>&1 | FileCheck -check-prefix=ARMV7-HARD %s +// RUN: %clang %s -target armv7-apple-ios -mfloat-abi=softfp -### 2>&1 | FileCheck -check-prefix=ARMV7-SOFTFP %s + +// ARMV7-HARD: unsupported option '-mfloat-abi=hard' for target 'thumbv7' +// ARMV7-SOFTFP-NOT: unsupported option