diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 29db9543f3655..00e14071a4afe 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -1443,16 +1443,18 @@ Compilation *Driver::BuildCompilation(ArrayRef ArgList) { const ToolChain &TC = getToolChain( *UArgs, computeTargetTriple(*this, TargetTriple, *UArgs)); - // Check if the environment version is valid. + // Check if the environment version is valid except wasm case. llvm::Triple Triple = TC.getTriple(); - StringRef TripleVersionName = Triple.getEnvironmentVersionString(); - StringRef TripleObjectFormat = - Triple.getObjectFormatTypeName(Triple.getObjectFormat()); - if (Triple.getEnvironmentVersion().empty() && TripleVersionName != "" && - TripleVersionName != TripleObjectFormat) { - Diags.Report(diag::err_drv_triple_version_invalid) - << TripleVersionName << TC.getTripleString(); - ContainsError = true; + if (!Triple.isWasm()) { + StringRef TripleVersionName = Triple.getEnvironmentVersionString(); + StringRef TripleObjectFormat = + Triple.getObjectFormatTypeName(Triple.getObjectFormat()); + if (Triple.getEnvironmentVersion().empty() && TripleVersionName != "" && + TripleVersionName != TripleObjectFormat) { + Diags.Report(diag::err_drv_triple_version_invalid) + << TripleVersionName << TC.getTripleString(); + ContainsError = true; + } } // Report warning when arm64EC option is overridden by specified target diff --git a/clang/test/Driver/android-version.cpp b/clang/test/Driver/invalid-version.cpp similarity index 54% rename from clang/test/Driver/android-version.cpp rename to clang/test/Driver/invalid-version.cpp index d365b701c0223..6a4702a9b66b0 100644 --- a/clang/test/Driver/android-version.cpp +++ b/clang/test/Driver/invalid-version.cpp @@ -14,3 +14,18 @@ // RUN: FileCheck --check-prefix=CHECK-TARGET %s // CHECK-TARGET: "aarch64-unknown-linux-android31" + +// RUN: not %clang --target=armv7-linux-gnuS -c %s -### 2>&1 | \ +// RUN: FileCheck --check-prefix=CHECK-ERROR2 %s + +// CHECK-ERROR2: error: version 'S' in target triple 'armv7-unknown-linux-gnuS' is invalid + +// RUN: %clang --target=wasm32-unknown-wasi-preview2 -c %s -### 2>&1 | \ +// RUN: FileCheck --check-prefix=CHECK-WASM %s + +// CHECK-WASM: "-triple" "wasm32-unknown-wasi-preview2" + +// RUN: %clang --target=wasm32-wasi-pthread -c %s -### 2>&1 | \ +// RUN: FileCheck --check-prefix=CHECK-WASM1 %s + +// CHECK-WASM1: "-triple" "wasm32-unknown-wasi-pthread"