[Driver] -print-target-triple and -print-effective-triple options

These can be used to print Clang target and effective triple.

Differential Revision: https://reviews.llvm.org/D50755

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@339834 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Petr Hosek 2018-08-16 00:22:03 +00:00
parent 958ba22e48
commit 3bf779de60
4 changed files with 28 additions and 0 deletions

View File

@ -2348,6 +2348,10 @@ def print_multi_directory : Flag<["-", "--"], "print-multi-directory">;
def print_multi_lib : Flag<["-", "--"], "print-multi-lib">;
def print_multi_os_directory : Flag<["-", "--"], "print-multi-os-directory">,
Flags<[Unsupported]>;
def print_target_triple : Flag<["-", "--"], "print-target-triple">,
HelpText<"Print the normalized target triple">;
def print_effective_triple : Flag<["-", "--"], "print-effective-triple">,
HelpText<"Print the effective target triple">;
def print_prog_name_EQ : Joined<["-", "--"], "print-prog-name=">,
HelpText<"Print the full program path of <name>">, MetaVarName<"<name>">;
def print_resource_dir : Flag<["-", "--"], "print-resource-dir">,

View File

@ -1672,6 +1672,18 @@ bool Driver::HandleImmediateArgs(const Compilation &C) {
}
return false;
}
if (C.getArgs().hasArg(options::OPT_print_target_triple)) {
llvm::outs() << TC.getTripleString() << "\n";
return false;
}
if (C.getArgs().hasArg(options::OPT_print_effective_triple)) {
const llvm::Triple Triple(TC.ComputeEffectiveClangTriple(C.getArgs()));
llvm::outs() << Triple.getTriple() << "\n";
return false;
}
return true;
}

View File

@ -0,0 +1,6 @@
// Test that -print-target-triple prints correct triple.
// RUN: %clang -print-effective-triple 2>&1 \
// RUN: --target=thumb-linux-gnu \
// RUN: | FileCheck %s
// CHECK: armv4t-unknown-linux-gnu

View File

@ -0,0 +1,6 @@
// Test that -print-target-triple prints correct triple.
// RUN: %clang -print-target-triple 2>&1 \
// RUN: --target=x86_64-linux-gnu \
// RUN: | FileCheck %s
// CHECK: x86_64-unknown-linux-gnu