about summary refs log tree commit diff
path: root/src/rustllvm/PassWrapper.cpp
diff options
context:
space:
mode:
authorMatt Ickstadt <mattico8@gmail.com>2017-09-07 20:07:16 -0500
committerMatt Ickstadt <mattico8@gmail.com>2017-09-15 00:32:59 -0500
commit824fb3817c0cbcb3a31a705d02a77219c8331608 (patch)
tree668e463f5f1f05f769a59e6e25473f3cc8f4d2ab /src/rustllvm/PassWrapper.cpp
parent2f1ef9ef1181298d46e79d5dde6bafeb6483926f (diff)
downloadrust-824fb3817c0cbcb3a31a705d02a77219c8331608.tar.gz
rust-824fb3817c0cbcb3a31a705d02a77219c8331608.zip
Add 'native' to -C target-cpu=help
Diffstat (limited to 'src/rustllvm/PassWrapper.cpp')
-rw-r--r--src/rustllvm/PassWrapper.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp
index ba0c4fbe173..2f966e5a1c5 100644
--- a/src/rustllvm/PassWrapper.cpp
+++ b/src/rustllvm/PassWrapper.cpp
@@ -299,10 +299,17 @@ static size_t getLongestEntryLength(ArrayRef<SubtargetFeatureKV> Table) {
 extern "C" void LLVMRustPrintTargetCPUs(LLVMTargetMachineRef TM) {
   const TargetMachine *Target = unwrap(TM);
   const MCSubtargetInfo *MCInfo = Target->getMCSubtargetInfo();
+  const Triple::ArchType HostArch = Triple(sys::getProcessTriple()).getArch();
+  const Triple::ArchType TargetArch = Target->getTargetTriple().getArch();
   const ArrayRef<SubtargetFeatureKV> CPUTable = MCInfo->getCPUTable();
   unsigned MaxCPULen = getLongestEntryLength(CPUTable);
 
   printf("Available CPUs for this target:\n");
+  if (HostArch == TargetArch) {
+    const StringRef HostCPU = sys::getHostCPUName();
+    printf("    %-*s - Select the CPU of the current host (currently %.*s).\n",
+      MaxCPULen, "native", (int)HostCPU.size(), HostCPU.data());
+  }
   for (auto &CPU : CPUTable)
     printf("    %-*s - %s.\n", MaxCPULen, CPU.Key, CPU.Desc);
   printf("\n");