Author: atanasyan Date: Wed Sep 26 22:04:50 2018 New Revision: 343169 URL: http://llvm.org/viewvc/llvm-project?rev=343169&view=rev Log: [driver][mips] Adjust target triple accordingly to provided ABI name
Explicitly selected MIPS ABI using the `-mabi` option implies corresponding target triple. For 'O32' ABI it's a 32-bit target triple like `mips-linux-gnu`. For 'N32' and 'N64' ABIs it's a 64-bit target triple like `mips64-linux-gnu`. This patch adjusts target triple accordingly these rules like we do for pseudo-target flags '-m64', '-m32' etc already. Differential revision: https://reviews.llvm.org/D52290 Modified: cfe/trunk/lib/Driver/Driver.cpp cfe/trunk/test/Driver/mips-abi.c Modified: cfe/trunk/lib/Driver/Driver.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=343169&r1=343168&r2=343169&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Driver.cpp (original) +++ cfe/trunk/lib/Driver/Driver.cpp Wed Sep 26 22:04:50 2018 @@ -481,6 +481,16 @@ static llvm::Triple computeTargetTriple( Target.setVendorName("intel"); } + // If target is MIPS adjust the target triple + // accordingly to provided ABI name. + A = Args.getLastArg(options::OPT_mabi_EQ); + if (A && Target.isMIPS()) + Target = llvm::StringSwitch<llvm::Triple>(A->getValue()) + .Case("32", Target.get32BitArchVariant()) + .Case("n32", Target.get64BitArchVariant()) + .Case("64", Target.get64BitArchVariant()) + .Default(Target); + return Target; } Modified: cfe/trunk/test/Driver/mips-abi.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mips-abi.c?rev=343169&r1=343168&r2=343169&view=diff ============================================================================== --- cfe/trunk/test/Driver/mips-abi.c (original) +++ cfe/trunk/test/Driver/mips-abi.c Wed Sep 26 22:04:50 2018 @@ -162,3 +162,28 @@ // RUN: -march=unknown 2>&1 \ // RUN: | FileCheck -check-prefix=MIPS-ARCH-UNKNOWN %s // MIPS-ARCH-UNKNOWN: error: unknown target CPU 'unknown' + +// Check adjusting of target triple accordingly to `-mabi` option. +// RUN: %clang -target mips64-linux-gnu -mabi=32 -### %s 2>&1 \ +// RUN: | FileCheck -check-prefix=TARGET-O32 %s +// TARGET-O32: "-triple" "mips-unknown-linux-gnu" +// TARGET-O32: "-target-cpu" "mips32r2" +// TARGET-O32: "-target-abi" "o32" +// TARGET-O32: ld{{.*}}" +// TARGET-O32: "-m" "elf32btsmip" + +// RUN: %clang -target mips-linux-gnu -mabi=n32 -### %s 2>&1 \ +// RUN: | FileCheck -check-prefix=TARGET-N32 %s +// TARGET-N32: "-triple" "mips64-unknown-linux-gnu" +// TARGET-N32: "-target-cpu" "mips64r2" +// TARGET-N32: "-target-abi" "n32" +// TARGET-N32: ld{{.*}}" +// TARGET-N32: "-m" "elf32btsmipn32" + +// RUN: %clang -target mips-linux-gnu -mabi=64 -### %s 2>&1 \ +// RUN: | FileCheck -check-prefix=TARGET-N64 %s +// TARGET-N64: "-triple" "mips64-unknown-linux-gnu" +// TARGET-N64: "-target-cpu" "mips64r2" +// TARGET-N64: "-target-abi" "n64" +// TARGET-N64: ld{{.*}}" +// TARGET-N64: "-m" "elf64btsmip" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits