From 4590e1108f2f3bf910a30a093ae905400940c433 Mon Sep 17 00:00:00 2001 From: Joerg Sonnenberger Date: Fri, 21 Feb 2014 21:53:33 +0000 Subject: [PATCH] Default to ARMv5e for NetBSD/EABI, ARMv4 for APCS. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201894 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 24 ++++++++++++++++++++---- test/Driver/netbsd.c | 31 +++++++++++++++++++++---------- 2 files changed, 41 insertions(+), 14 deletions(-) diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 3671880581..b6214a7177 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -4733,10 +4733,26 @@ const char *arm::getARMCPUForMArch(const ArgList &Args, if (result) return result; - return - Triple.getEnvironment() == llvm::Triple::GNUEABIHF - ? "arm1176jzf-s" - : "arm7tdmi"; + switch (Triple.getOS()) { + case llvm::Triple::NetBSD: + switch (Triple.getEnvironment()) { + case llvm::Triple::GNUEABIHF: + case llvm::Triple::GNUEABI: + case llvm::Triple::EABIHF: + case llvm::Triple::EABI: + return "arm926ej-s"; + default: + return "strongarm"; + } + default: + switch (Triple.getEnvironment()) { + case llvm::Triple::EABIHF: + case llvm::Triple::GNUEABIHF: + return "arm1176jzf-s"; + default: + return "arm7tdmi"; + } + } } /// getARMTargetCPU - Get the (LLVM) name of the ARM cpu we are targeting. diff --git a/test/Driver/netbsd.c b/test/Driver/netbsd.c index 78af6351ca..9cece62211 100644 --- a/test/Driver/netbsd.c +++ b/test/Driver/netbsd.c @@ -16,6 +16,9 @@ // RUN: %clang -no-canonical-prefixes -target arm--netbsd-eabi \ // RUN: -no-integrated-as --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ // RUN: | FileCheck -check-prefix=ARM %s +// RUN: %clang -no-canonical-prefixes -target arm--netbsd \ +// RUN: -no-integrated-as --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ +// RUN: | FileCheck -check-prefix=ARM-APCS %s // RUN: %clang -no-canonical-prefixes -target thumb--netbsd-eabi \ // RUN: -no-integrated-as --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ // RUN: | FileCheck -check-prefix=THUMB %s @@ -98,37 +101,45 @@ // AARCH64-7: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" // AARCH64-7: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" -// ARM: clang{{.*}}" "-cc1" "-triple" "armv4t--netbsd-eabi" -// ARM: as{{.*}}" "-mcpu=arm7tdmi" "-o" +// ARM: clang{{.*}}" "-cc1" "-triple" "armv5e--netbsd-eabi" +// ARM: as{{.*}}" "-mcpu=arm926ej-s" "-o" // ARM: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" // ARM: "-m" "armelf_nbsd_eabi" // ARM: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}crti.o" // ARM: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc" // ARM: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" -// THUMB: clang{{.*}}" "-cc1" "-triple" "armv4t--netbsd-eabi" -// THUMB: as{{.*}}" "-mcpu=arm7tdmi" "-o" +// ARM-APCS: clang{{.*}}" "-cc1" "-triple" "armv4--netbsd" +// ARM-APCS: as{{.*}}" "-mcpu=strongarm" "-o" +// ARM-APCS: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" +// ARM-APCS: "-m" "armelf_nbsd" +// ARM-APCS: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}crti.o" +// ARM-APCS: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc" +// ARM-APCS: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" + +// THUMB: clang{{.*}}" "-cc1" "-triple" "armv5e--netbsd-eabi" +// THUMB: as{{.*}}" "-mcpu=arm926ej-s" "-o" // THUMB: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" // THUMB: "-m" "armelf_nbsd_eabi" // THUMB: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}crti.o" // THUMB: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc" // THUMB: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" -// ARM-7: clang{{.*}}" "-cc1" "-triple" "armv4t--netbsd7.0.0-eabi" +// ARM-7: clang{{.*}}" "-cc1" "-triple" "armv5e--netbsd7.0.0-eabi" // ARM-7: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" // ARM-7: "-m" "armelf_nbsd_eabi" // ARM-7: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}crti.o" // ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc" // ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" -// ARM-6: clang{{.*}}" "-cc1" "-triple" "armv4t--netbsd6.0.0-eabi" +// ARM-6: clang{{.*}}" "-cc1" "-triple" "armv5e--netbsd6.0.0-eabi" // ARM-6: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" // ARM-6: "-m" "armelf_nbsd_eabi" // ARM-6: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}crti.o" // ARM-6: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc" // ARM-6: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" -// ARM-HF: clang{{.*}}" "-cc1" "-triple" "armv4t--netbsd-eabihf" +// ARM-HF: clang{{.*}}" "-cc1" "-triple" "armv5e--netbsd-eabihf" // ARM-HF: ld{{.*}}" "-m" "armelf_nbsd_eabihf" // SPARC: clang{{.*}}" "-cc1" "-triple" "sparc--netbsd" @@ -180,14 +191,14 @@ // S-AARCH64-7: "-lgcc_eh" "-lc" "-lgcc" // S-AARCH64-7: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" -// S-ARM: clang{{.*}}" "-cc1" "-triple" "armv4t--netbsd-eabi" +// S-ARM: clang{{.*}}" "-cc1" "-triple" "armv5e--netbsd-eabi" // S-ARM: ld{{.*}}" "-Bstatic" // S-ARM: "-m" "armelf_nbsd_eabi" // S-ARM: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}crti.o" // S-ARM: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc" // S-ARM: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" -// S-ARM-7: clang{{.*}}" "-cc1" "-triple" "armv4t--netbsd7.0.0-eabi" +// S-ARM-7: clang{{.*}}" "-cc1" "-triple" "armv5e--netbsd7.0.0-eabi" // S-ARM-7: ld{{.*}}" "-Bstatic" // S-ARM-7: "-m" "armelf_nbsd_eabi" // S-ARM-7: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}crti.o" @@ -195,7 +206,7 @@ // S-ARM-7: "-lgcc_eh" "-lc" "-lgcc" // S-ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" -// S-ARM-6: clang{{.*}}" "-cc1" "-triple" "armv4t--netbsd6.0.0-eabi" +// S-ARM-6: clang{{.*}}" "-cc1" "-triple" "armv5e--netbsd6.0.0-eabi" // S-ARM-6: ld{{.*}}" "-Bstatic" // S-ARM-6: "-m" "armelf_nbsd_eabi" // S-ARM-6: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}crti.o" -- 2.40.0