Downstream may naively translate between DSL and LLVM target triple. If OS version is lost in the process then Clang would default to a version that's no longer supported by OS vendor.
Example: https://bugzilla.mozilla.org/show_bug.cgi?id=1628567
$ cat a.cc #include <type_traits> $ clang++ -c a.cc $ clang++ --target=x86_64-unknown-freebsd -c a.cc a.cc:1:10: fatal error: 'type_traits' file not found #include <type_traits> ^~~~~~~~~~~~~
In main this is amd64-unknown-freebsd14.0, I have a fix for that staged before this diff
commit d99411fe6e0375041b80ba4f397a139218a3754d Author: Ed Maste <emaste@FreeBSD.org> Date: Mon Nov 22 11:26:55 2021 -0500 [Driver] correct typo in FreeBSD 14 test The test specified amd64-unknown-freebsd40.0 rather than 14.0. Since 40 is greater than 14 the test (for behaviour new in FreeBSD 14) worked despite the typo. Fixes: 699d47472c3f diff --git a/clang/test/Driver/freebsd.cpp b/clang/test/Driver/freebsd.cpp index fde888902e12..d199f6e2367a 100644 --- a/clang/test/Driver/freebsd.cpp +++ b/clang/test/Driver/freebsd.cpp @@ -5,7 +5,7 @@ // CHECK-TEN: "-lc++" "-lm" // CHECK-NINE: "-lstdc++" "-lm" -// RUN: %clangxx %s -### -pg -o %t.o -target amd64-unknown-freebsd40.0 -stdlib=platform 2>&1 \ +// RUN: %clangxx %s -### -pg -o %t.o -target amd64-unknown-freebsd14.0 -stdlib=platform 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-PG-FOURTEEN %s // RUN: %clangxx %s -### -pg -o %t.o -target amd64-unknown-freebsd10.0 -stdlib=platform 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-PG-TEN %s