Index: lib/Driver/ToolChains/Arch/ARM.cpp =================================================================== --- lib/Driver/ToolChains/Arch/ARM.cpp +++ lib/Driver/ToolChains/Arch/ARM.cpp @@ -227,6 +227,10 @@ } } + // SUSE triples end with -gnueabi but all targets are hard-float + if (Triple.getVendor() == llvm::Triple::SUSE) + ABI = FloatABI::Hard; + assert(ABI != FloatABI::Invalid && "must select an ABI"); return ABI; } Index: test/Driver/linux-as.c =================================================================== --- test/Driver/linux-as.c +++ test/Driver/linux-as.c @@ -174,3 +174,9 @@ // RUN: -no-integrated-as -c %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK-Z-ARCH-Z196 %s // CHECK-Z-ARCH-Z196: as{{.*}} "-march=z196" +// +// RUN: %clang -target armv7hl-suse-linux-gnueabi -### \ +// RUN: -no-integrated-as -c %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-SUSE-ARMV7 %s +// CHECK-SUSE-ARMV7: as{{.*}}" "-mfloat-abi=hard" +