Skip to content

Commit 59b25cb

Browse files
committedFeb 26, 2015
[Mips] Handle -mips32r[3|5] / -mips64r[3|5] options while selecting lib/headers paths
There is no supported toolchain which provides headers / libs / object files specific to the mips32r[3|5] and mips64r[3|5] ISA. So select "r2" specific folders when they are available. http://reviews.llvm.org/D7879 llvm-svn: 230611
1 parent a346e03 commit 59b25cb

File tree

2 files changed

+115
-2
lines changed

2 files changed

+115
-2
lines changed
 

‎clang/lib/Driver/ToolChains.cpp

+5-2
Original file line numberDiff line numberDiff line change
@@ -1783,10 +1783,13 @@ static bool findMIPSMultilibs(const llvm::Triple &TargetTriple, StringRef Path,
17831783
addMultilibFlag(isMips64(TargetArch), "m64", Flags);
17841784
addMultilibFlag(isMips16(Args), "mips16", Flags);
17851785
addMultilibFlag(CPUName == "mips32", "march=mips32", Flags);
1786-
addMultilibFlag(CPUName == "mips32r2", "march=mips32r2", Flags);
1786+
addMultilibFlag(CPUName == "mips32r2" || CPUName == "mips32r3" ||
1787+
CPUName == "mips32r5",
1788+
"march=mips32r2", Flags);
17871789
addMultilibFlag(CPUName == "mips32r6", "march=mips32r6", Flags);
17881790
addMultilibFlag(CPUName == "mips64", "march=mips64", Flags);
1789-
addMultilibFlag(CPUName == "mips64r2" || CPUName == "octeon",
1791+
addMultilibFlag(CPUName == "mips64r2" || CPUName == "mips64r3" ||
1792+
CPUName == "mips64r5" || CPUName == "octeon",
17901793
"march=mips64r2", Flags);
17911794
addMultilibFlag(isMicroMips(Args), "mmicromips", Flags);
17921795
addMultilibFlag(tools::mips::isUCLibc(Args), "muclibc", Flags);

‎clang/test/Driver/mips-fsf.cpp

+110
Original file line numberDiff line numberDiff line change
@@ -2699,3 +2699,113 @@
26992699
// CHECK-EL-NAN64-64R2-64-DEF: "-L[[TC]]/../../../../sysroot/mips64r2/64/el/nan2008/usr/lib"
27002700
// CHECK-EL-NAN64-64R2-64-DEF: "[[TC]]/mips64r2/64/el/nan2008{{/|\\\\}}crtend.o"
27012701
// CHECK-EL-NAN64-64R2-64-DEF: "[[TC]]/../../../../sysroot/mips64r2/64/el/nan2008/usr/lib{{/|\\\\}}crtn.o"
2702+
//
2703+
// Check that mips32r3 and mips32r5 are equal to mips32r2
2704+
//
2705+
// = Big-endian, mips32r3, hard float
2706+
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2707+
// RUN: --target=mips-linux-gnu -mips32r3 -mhard-float \
2708+
// RUN: --gcc-toolchain=%S/Inputs/mips_fsf_tree \
2709+
// RUN: | FileCheck --check-prefix=CHECK-BE-HF-32R3 %s
2710+
// CHECK-BE-HF-32R3: "-internal-isystem"
2711+
// CHECK-BE-HF-32R3: "[[TC:[^"]+/lib/gcc/mips-mti-linux-gnu/4.9.0]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0"
2712+
// CHECK-BE-HF-32R3: "-internal-isystem"
2713+
// CHECK-BE-HF-32R3: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu"
2714+
// CHECK-BE-HF-32R3: "-internal-isystem"
2715+
// CHECK-BE-HF-32R3: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/backward"
2716+
// CHECK-BE-HF-32R3: "-internal-externc-isystem"
2717+
// CHECK-BE-HF-32R3: "[[TC]]/include"
2718+
// CHECK-BE-HF-32R3: "-internal-externc-isystem"
2719+
// CHECK-BE-HF-32R3: "[[TC]]/../../../../sysroot/usr/include"
2720+
// CHECK-BE-HF-32R3: "{{.*}}ld{{(.exe)?}}"
2721+
// CHECK-BE-HF-32R3: "--sysroot=[[TC]]/../../../../sysroot"
2722+
// CHECK-BE-HF-32R3: "-dynamic-linker" "/lib/ld.so.1"
2723+
// CHECK-BE-HF-32R3: "[[TC]]/../../../../sysroot/usr/lib/../lib{{/|\\\\}}crt1.o"
2724+
// CHECK-BE-HF-32R3: "[[TC]]/../../../../sysroot/usr/lib/../lib{{/|\\\\}}crti.o"
2725+
// CHECK-BE-HF-32R3: "[[TC]]{{/|\\\\}}crtbegin.o"
2726+
// CHECK-BE-HF-32R3: "-L[[TC]]"
2727+
// CHECK-BE-HF-32R3: "-L[[TC]]/../../../../mips-mti-linux-gnu/lib/../lib"
2728+
// CHECK-BE-HF-32R3: "-L[[TC]]/../../../../sysroot/usr/lib/../lib"
2729+
// CHECK-BE-HF-32R3: "[[TC]]{{/|\\\\}}crtend.o"
2730+
// CHECK-BE-HF-32R3: "[[TC]]/../../../../sysroot/usr/lib/../lib{{/|\\\\}}crtn.o"
2731+
//
2732+
// = Big-endian, mips32r5, hard float
2733+
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2734+
// RUN: --target=mips-linux-gnu -mips32r5 -mhard-float \
2735+
// RUN: --gcc-toolchain=%S/Inputs/mips_fsf_tree \
2736+
// RUN: | FileCheck --check-prefix=CHECK-BE-HF-32R5 %s
2737+
// CHECK-BE-HF-32R5: "-internal-isystem"
2738+
// CHECK-BE-HF-32R5: "[[TC:[^"]+/lib/gcc/mips-mti-linux-gnu/4.9.0]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0"
2739+
// CHECK-BE-HF-32R5: "-internal-isystem"
2740+
// CHECK-BE-HF-32R5: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu"
2741+
// CHECK-BE-HF-32R5: "-internal-isystem"
2742+
// CHECK-BE-HF-32R5: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/backward"
2743+
// CHECK-BE-HF-32R5: "-internal-externc-isystem"
2744+
// CHECK-BE-HF-32R5: "[[TC]]/include"
2745+
// CHECK-BE-HF-32R5: "-internal-externc-isystem"
2746+
// CHECK-BE-HF-32R5: "[[TC]]/../../../../sysroot/usr/include"
2747+
// CHECK-BE-HF-32R5: "{{.*}}ld{{(.exe)?}}"
2748+
// CHECK-BE-HF-32R5: "--sysroot=[[TC]]/../../../../sysroot"
2749+
// CHECK-BE-HF-32R5: "-dynamic-linker" "/lib/ld.so.1"
2750+
// CHECK-BE-HF-32R5: "[[TC]]/../../../../sysroot/usr/lib/../lib{{/|\\\\}}crt1.o"
2751+
// CHECK-BE-HF-32R5: "[[TC]]/../../../../sysroot/usr/lib/../lib{{/|\\\\}}crti.o"
2752+
// CHECK-BE-HF-32R5: "[[TC]]{{/|\\\\}}crtbegin.o"
2753+
// CHECK-BE-HF-32R5: "-L[[TC]]"
2754+
// CHECK-BE-HF-32R5: "-L[[TC]]/../../../../mips-mti-linux-gnu/lib/../lib"
2755+
// CHECK-BE-HF-32R5: "-L[[TC]]/../../../../sysroot/usr/lib/../lib"
2756+
// CHECK-BE-HF-32R5: "[[TC]]{{/|\\\\}}crtend.o"
2757+
// CHECK-BE-HF-32R5: "[[TC]]/../../../../sysroot/usr/lib/../lib{{/|\\\\}}crtn.o"
2758+
//
2759+
// = Big-endian, mips64r3, ABI 64, hard float
2760+
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2761+
// RUN: --target=mips64-linux-gnu -mips64r3 -mabi=64 -mhard-float \
2762+
// RUN: --gcc-toolchain=%S/Inputs/mips_fsf_tree \
2763+
// RUN: | FileCheck --check-prefix=CHECK-BE-HF-64R3-64 %s
2764+
// CHECK-BE-HF-64R3-64: "-internal-isystem"
2765+
// CHECK-BE-HF-64R3-64: "[[TC:[^"]+/lib/gcc/mips-mti-linux-gnu/4.9.0]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0"
2766+
// CHECK-BE-HF-64R3-64: "-internal-isystem"
2767+
// CHECK-BE-HF-64R3-64: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips64r2/64"
2768+
// CHECK-BE-HF-64R3-64: "-internal-isystem"
2769+
// CHECK-BE-HF-64R3-64: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/backward"
2770+
// CHECK-BE-HF-64R3-64: "-internal-externc-isystem"
2771+
// CHECK-BE-HF-64R3-64: "[[TC]]/include"
2772+
// CHECK-BE-HF-64R3-64: "-internal-externc-isystem"
2773+
// CHECK-BE-HF-64R3-64: "[[TC]]/../../../../sysroot/usr/include"
2774+
// CHECK-BE-HF-64R3-64: "{{.*}}ld{{(.exe)?}}"
2775+
// CHECK-BE-HF-64R3-64: "--sysroot=[[TC]]/../../../../sysroot/mips64r2/64"
2776+
// CHECK-BE-HF-64R3-64: "-dynamic-linker" "/lib64/ld.so.1"
2777+
// CHECK-BE-HF-64R3-64: "[[TC]]/../../../../sysroot/mips64r2/64/usr/lib{{/|\\\\}}crt1.o"
2778+
// CHECK-BE-HF-64R3-64: "[[TC]]/../../../../sysroot/mips64r2/64/usr/lib{{/|\\\\}}crti.o"
2779+
// CHECK-BE-HF-64R3-64: "[[TC]]/mips64r2/64{{/|\\\\}}crtbegin.o"
2780+
// CHECK-BE-HF-64R3-64: "-L[[TC]]/mips64r2/64"
2781+
// CHECK-BE-HF-64R3-64: "-L[[TC]]/../../../../mips-mti-linux-gnu/lib/mips64r2/64"
2782+
// CHECK-BE-HF-64R3-64: "-L[[TC]]/../../../../sysroot/mips64r2/64/usr/lib"
2783+
// CHECK-BE-HF-64R3-64: "[[TC]]/mips64r2/64{{/|\\\\}}crtend.o"
2784+
// CHECK-BE-HF-64R3-64: "[[TC]]/../../../../sysroot/mips64r2/64/usr/lib{{/|\\\\}}crtn.o"
2785+
//
2786+
// = Big-endian, mips64r5, ABI 64, hard float
2787+
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2788+
// RUN: --target=mips64-linux-gnu -mips64r5 -mabi=64 -mhard-float \
2789+
// RUN: --gcc-toolchain=%S/Inputs/mips_fsf_tree \
2790+
// RUN: | FileCheck --check-prefix=CHECK-BE-HF-64R5-64 %s
2791+
// CHECK-BE-HF-64R5-64: "-internal-isystem"
2792+
// CHECK-BE-HF-64R5-64: "[[TC:[^"]+/lib/gcc/mips-mti-linux-gnu/4.9.0]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0"
2793+
// CHECK-BE-HF-64R5-64: "-internal-isystem"
2794+
// CHECK-BE-HF-64R5-64: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips64r2/64"
2795+
// CHECK-BE-HF-64R5-64: "-internal-isystem"
2796+
// CHECK-BE-HF-64R5-64: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/backward"
2797+
// CHECK-BE-HF-64R5-64: "-internal-externc-isystem"
2798+
// CHECK-BE-HF-64R5-64: "[[TC]]/include"
2799+
// CHECK-BE-HF-64R5-64: "-internal-externc-isystem"
2800+
// CHECK-BE-HF-64R5-64: "[[TC]]/../../../../sysroot/usr/include"
2801+
// CHECK-BE-HF-64R5-64: "{{.*}}ld{{(.exe)?}}"
2802+
// CHECK-BE-HF-64R5-64: "--sysroot=[[TC]]/../../../../sysroot/mips64r2/64"
2803+
// CHECK-BE-HF-64R5-64: "-dynamic-linker" "/lib64/ld.so.1"
2804+
// CHECK-BE-HF-64R5-64: "[[TC]]/../../../../sysroot/mips64r2/64/usr/lib{{/|\\\\}}crt1.o"
2805+
// CHECK-BE-HF-64R5-64: "[[TC]]/../../../../sysroot/mips64r2/64/usr/lib{{/|\\\\}}crti.o"
2806+
// CHECK-BE-HF-64R5-64: "[[TC]]/mips64r2/64{{/|\\\\}}crtbegin.o"
2807+
// CHECK-BE-HF-64R5-64: "-L[[TC]]/mips64r2/64"
2808+
// CHECK-BE-HF-64R5-64: "-L[[TC]]/../../../../mips-mti-linux-gnu/lib/mips64r2/64"
2809+
// CHECK-BE-HF-64R5-64: "-L[[TC]]/../../../../sysroot/mips64r2/64/usr/lib"
2810+
// CHECK-BE-HF-64R5-64: "[[TC]]/mips64r2/64{{/|\\\\}}crtend.o"
2811+
// CHECK-BE-HF-64R5-64: "[[TC]]/../../../../sysroot/mips64r2/64/usr/lib{{/|\\\\}}crtn.o"

0 commit comments

Comments
 (0)