From: Davide Italiano Date: Wed, 30 Dec 2015 13:53:25 +0000 (+0000) Subject: Disable generating movt on FreeBSD. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f1f0c5f32f0b6dc2c6ed3c89545bb79ae00c1fce;p=clang Disable generating movt on FreeBSD. It's sort of an hack, but we have no choice. The linker in the base system doesn't handle that correctly (yet). Once FreeBSD will import lld, this can be backed out. Patch by: Andrew Turner! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256641 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 7a185dc076..bf0470bbd1 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -938,8 +938,8 @@ static void getARMTargetFeatures(const ToolChain &TC, if (Args.hasArg(options::OPT_ffixed_r9)) Features.push_back("+reserve-r9"); - // The kext linker doesn't know how to deal with movw/movt. - if (KernelOrKext) + // The kext and FreeBSD linkers don't know how to deal with movw/movt. + if (KernelOrKext || Triple.isOSFreeBSD()) Features.push_back("+no-movt"); } diff --git a/test/Driver/arm-no-movt.c b/test/Driver/arm-no-movt.c index 9684d0e16c..1107cf8ff8 100644 --- a/test/Driver/arm-no-movt.c +++ b/test/Driver/arm-no-movt.c @@ -4,6 +4,11 @@ // RUN: %clang -target armv7-apple-darwin -mkernel -### %s 2>&1 \ // RUN: | FileCheck %s -check-prefix CHECK-KERNEL +// RUN: %clang -target armv7-gnueabi-freebsd11 -### %s 2>&1 \ +// RUN: | FileCheck %s -check-prefix CHECK-FREEBSD + // CHECK-DEFAULT-NOT: "-target-feature" "+no-movt" // CHECK-KERNEL: "-target-feature" "+no-movt" + +// CHECK-FREEBSD: "-target-feature" "+no-movt"