Author: danalbert Date: Fri Oct 12 10:06:31 2018 New Revision: 344367 URL: http://llvm.org/viewvc/llvm-project?rev=344367&view=rev Log: [Driver] Add defaults for Android ARM FPUs.
Summary: Android mandates that devices have at least vfpv3-d16 until Marshmallow and NEON after that. Still honor the user's decision, but raise the defaults for Android targets. Reviewers: srhines, pirama, javed.absar, kristof.beyls, peter.smith Reviewed By: peter.smith Subscribers: peter.smith, rengolin, kristof.beyls, chrib, cfe-commits Differential Revision: https://reviews.llvm.org/D53121 Modified: cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp cfe/trunk/test/Driver/arm-mfpu.c Modified: cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp?rev=344367&r1=344366&r2=344367&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp Fri Oct 12 10:06:31 2018 @@ -378,6 +378,13 @@ void arm::getARMTargetFeatures(const Too Features); } else if (FPUArg) { getARMFPUFeatures(D, FPUArg, Args, FPUArg->getValue(), Features); + } else if (Triple.isAndroid() && getARMSubArchVersionNumber(Triple) >= 7) { + // Android mandates minimum FPU requirements based on OS version. + const char *AndroidFPU = + Triple.isAndroidVersionLT(23) ? "vfpv3-d16" : "neon"; + if (!llvm::ARM::getFPUFeatures(llvm::ARM::parseFPU(AndroidFPU), Features)) + D.Diag(clang::diag::err_drv_clang_unsupported) + << std::string("-mfpu=") + AndroidFPU; } // Honor -mhwdiv=. ClangAs gives preference to -Wa,-mhwdiv=. Modified: cfe/trunk/test/Driver/arm-mfpu.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/arm-mfpu.c?rev=344367&r1=344366&r2=344367&view=diff ============================================================================== --- cfe/trunk/test/Driver/arm-mfpu.c (original) +++ cfe/trunk/test/Driver/arm-mfpu.c Fri Oct 12 10:06:31 2018 @@ -364,3 +364,67 @@ // CHECK-SOFT-ABI-FP: "-target-feature" "-fp-armv8" // CHECK-SOFT-ABI-FP: "-target-feature" "-neon" // CHECK-SOFT-ABI-FP: "-target-feature" "-crypto" + +// RUN: %clang -target arm-linux-androideabi21 %s -### -c 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ARM5-ANDROID-FP-DEFAULT %s +// CHECK-ARM5-ANDROID-FP-DEFAULT: "-target-feature" "+soft-float" +// CHECK-ARM5-ANDROID-FP-DEFAULT: "-target-feature" "+soft-float-abi" +// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+d16" +// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+vfp3" +// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+vfp4" +// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+fp-armv8" +// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+neon" +// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+crypto" + +// RUN: %clang -target arm-linux-androideabi21 -march=armv7-a %s -### -c 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-MARCH-ARM7-ANDROID-FP %s +// CHECK-MARCH-ARM7-ANDROID-FP-NOT: "-target-feature" "+soft-float" +// CHECK-MARCH-ARM7-ANDROID-FP: "-target-feature" "+soft-float-abi" +// CHECK-MARCH-ARM7-ANDROID-FP: "-target-feature" "+d16" +// CHECK-MARCH-ARM7-ANDROID-FP: "-target-feature" "+vfp3" +// CHECK-MARCH-ARM7-ANDROID-FP-NOT: "-target-feature" "+vfp4" +// CHECK-MARCH-ARM7-ANDROID-FP-NOT: "-target-feature" "+fp-armv8" +// CHECK-MARCH-ARM7-ANDROID-FP-NOT: "-target-feature" "+neon" +// CHECK-MARCH-ARM7-ANDROID-FP-NOT: "-target-feature" "+crypto" + +// RUN: %clang -target armv7-linux-androideabi21 %s -### -c 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ARM-ANDROID-L-FP-DEFAULT %s +// CHECK-ARM-ANDROID-L-FP-DEFAULT-NOT: "-target-feature" "+soft-float" +// CHECK-ARM-ANDROID-L-FP-DEFAULT: "-target-feature" "+soft-float-abi" +// CHECK-ARM-ANDROID-L-FP-DEFAULT: "-target-feature" "+d16" +// CHECK-ARM-ANDROID-L-FP-DEFAULT: "-target-feature" "+vfp3" +// CHECK-ARM-ANDROID-L-FP-DEFAULT-NOT: "-target-feature" "+vfp4" +// CHECK-ARM-ANDROID-L-FP-DEFAULT-NOT: "-target-feature" "+fp-armv8" +// CHECK-ARM-ANDROID-L-FP-DEFAULT-NOT: "-target-feature" "+neon" +// CHECK-ARM-ANDROID-L-FP-DEFAULT-NOT: "-target-feature" "+crypto" + +// RUN: %clang -target armv7-linux-androideabi21 -mfpu=neon %s -### -c 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ARM-ANDROID-L-FP-NEON %s +// CHECK-ARM-ANDROID-L-FP-NEON-NOT: "-target-feature" "+soft-float" +// CHECK-ARM-ANDROID-L-FP-NEON: "-target-feature" "+soft-float-abi" +// CHECK-ARM-ANDROID-L-FP-NEON: "-target-feature" "+vfp3" +// CHECK-ARM-ANDROID-L-FP-NEON-NOT: "-target-feature" "+vfp4" +// CHECK-ARM-ANDROID-L-FP-NEON-NOT: "-target-feature" "+fp-armv8" +// CHECK-ARM-ANDROID-L-FP-NEON: "-target-feature" "+neon" +// CHECK-ARM-ANDROID-L-FP-NEON-NOT: "-target-feature" "+crypto" + +// RUN: %clang -target armv7-linux-androideabi23 %s -### -c 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ARM-ANDROID-M-FP-DEFAULT %s +// CHECK-ARM-ANDROID-M-FP-DEFAULT-NOT: "-target-feature" "+soft-float" +// CHECK-ARM-ANDROID-M-FP-DEFAULT: "-target-feature" "+soft-float-abi" +// CHECK-ARM-ANDROID-M-FP-DEFAULT: "-target-feature" "+vfp3" +// CHECK-ARM-ANDROID-M-FP-DEFAULT-NOT: "-target-feature" "+vfp4" +// CHECK-ARM-ANDROID-M-FP-DEFAULT-NOT: "-target-feature" "+fp-armv8" +// CHECK-ARM-ANDROID-M-FP-DEFAULT: "-target-feature" "+neon" +// CHECK-ARM-ANDROID-M-FP-DEFAULT-NOT: "-target-feature" "+crypto" + +// RUN: %clang -target armv7-linux-androideabi23 %s -mfpu=vfp3-d16 -### -c 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ARM-ANDROID-M-FP-D16 %s +// CHECK-ARM-ANDROID-M-FP-D16-NOT: "-target-feature" "+soft-float" +// CHECK-ARM-ANDROID-M-FP-D16: "-target-feature" "+soft-float-abi" +// CHECK-ARM-ANDROID-M-FP-D16: "-target-feature" "+d16" +// CHECK-ARM-ANDROID-M-FP-D16: "-target-feature" "+vfp3" +// CHECK-ARM-ANDROID-M-FP-D16-NOT: "-target-feature" "+vfp4" +// CHECK-ARM-ANDROID-M-FP-D16-NOT: "-target-feature" "+fp-armv8" +// CHECK-ARM-ANDROID-M-FP-D16-NOT: "-target-feature" "+neon" +// CHECK-ARM-ANDROID-M-FP-D16-NOT: "-target-feature" "+crypto" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits