diff --git a/lib/Basic/LangOptions.cpp b/lib/Basic/LangOptions.cpp index 048f014fb7a35..4b0c4c1ba7b6d 100644 --- a/lib/Basic/LangOptions.cpp +++ b/lib/Basic/LangOptions.cpp @@ -327,6 +327,12 @@ std::pair LangOptions::setTarget(llvm::Triple triple) { case llvm::Triple::WASI: addPlatformConditionValue(PlatformConditionKind::OS, "WASI"); break; + case llvm::Triple::UnknownOS: + if (Target.getOSName() == "none") { + addPlatformConditionValue(PlatformConditionKind::OS, "none"); + break; + } + LLVM_FALLTHROUGH; default: UnsupportedOS = true; break; diff --git a/lib/Basic/Platform.cpp b/lib/Basic/Platform.cpp index 3c91d7f7d3b99..274a587e99803 100644 --- a/lib/Basic/Platform.cpp +++ b/lib/Basic/Platform.cpp @@ -175,8 +175,6 @@ static StringRef getPlatformNameForDarwin(const DarwinPlatformKind platform) { StringRef swift::getPlatformNameForTriple(const llvm::Triple &triple) { switch (triple.getOS()) { - case llvm::Triple::UnknownOS: - llvm_unreachable("unknown OS"); case llvm::Triple::ZOS: case llvm::Triple::Ananas: case llvm::Triple::CloudABI: @@ -234,6 +232,8 @@ StringRef swift::getPlatformNameForTriple(const llvm::Triple &triple) { return "haiku"; case llvm::Triple::WASI: return "wasi"; + case llvm::Triple::UnknownOS: + return "none"; } llvm_unreachable("unsupported OS"); } diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 4b3e384315fdb..bab897c8b4e89 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -368,6 +368,8 @@ Driver::buildToolChain(const llvm::opt::InputArgList &ArgList) { return std::make_unique(*this, target); case llvm::Triple::WASI: return std::make_unique(*this, target); + case llvm::Triple::UnknownOS: + return std::make_unique(*this, target); default: Diags.diagnose(SourceLoc(), diag::error_unknown_target, ArgList.getLastArg(options::OPT_target)->getValue()); diff --git a/test/Driver/baremetal-target.swift b/test/Driver/baremetal-target.swift new file mode 100644 index 0000000000000..25f292954a1c4 --- /dev/null +++ b/test/Driver/baremetal-target.swift @@ -0,0 +1,4 @@ +// RUN: %swiftc_driver_plain -target aarch64-unknwon-none-none -driver-print-jobs %s 2>&1 | %FileCheck %s + +// CHECK: {{.*}}swift{{c|-frontend}}{{(.exe)?"?}} -frontend -c +// CHECK: {{.*}}clang{{(.exe)?"?}} -fuse-ld=gold diff --git a/test/Driver/options.swift b/test/Driver/options.swift index 130eb959bf901..69de3189ad6f3 100644 --- a/test/Driver/options.swift +++ b/test/Driver/options.swift @@ -80,8 +80,8 @@ // RUN: %swift_driver -g -### %s 2>&1 | %FileCheck -check-prefix=OPTIONS_BEFORE_FILE %s // OPTIONS_BEFORE_FILE: -g -// RUN: not %swift_driver -target abc -### %s 2>&1 | %FileCheck -check-prefix=BAD_TARGET %s -// BAD_TARGET: error: unknown target 'abc' +// RUN: not %swiftc_driver_plain -target x86_64-unknown-hurd -### %s 2>&1 | %FileCheck -check-prefix=BAD_TARGET %s +// BAD_TARGET: error: unknown target 'x86_64-unknown-hurd' // RUN: %swiftc_driver -incremental %s -### 2>&1 | %FileCheck -check-prefix=INCREMENTAL_WITHOUT_OFM %s // INCREMENTAL_WITHOUT_OFM: warning: ignoring -incremental (currently requires an output file map)