diff --git a/clang/lib/Driver/ToolChains/FreeBSD.cpp b/clang/lib/Driver/ToolChains/FreeBSD.cpp --- a/clang/lib/Driver/ToolChains/FreeBSD.cpp +++ b/clang/lib/Driver/ToolChains/FreeBSD.cpp @@ -175,11 +175,8 @@ CmdArgs.push_back("-dynamic-linker"); CmdArgs.push_back("/libexec/ld-elf.so.1"); } - const llvm::Triple &T = ToolChain.getTriple(); - if (T.getOSMajorVersion() >= 9) { - if (Arch == llvm::Triple::arm || Arch == llvm::Triple::sparc || T.isX86()) - CmdArgs.push_back("--hash-style=both"); - } + if (Arch == llvm::Triple::arm || Arch == llvm::Triple::sparc || T.isX86()) + CmdArgs.push_back("--hash-style=both"); CmdArgs.push_back("--enable-new-dtags"); } @@ -404,9 +401,10 @@ } unsigned FreeBSD::GetDefaultDwarfVersion() const { - if (getTriple().getOSMajorVersion() < 12) - return 2; - return 4; + unsigned Major = getTriple().getOSMajorVersion(); + if (Major >= 12 || Major == 0) + return 4; + return 2; } void FreeBSD::AddClangSystemIncludeArgs( @@ -550,8 +548,10 @@ void FreeBSD::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, Action::OffloadKind) const { + const llvm::Triple &T = getToolChain().getTriple(); if (!DriverArgs.hasFlag(options::OPT_fuse_init_array, options::OPT_fno_use_init_array, - getTriple().getOSMajorVersion() >= 12)) + (T.getOSMajorVersion().empty() || + T.getOSMajorVersion() >= 12))) CC1Args.push_back("-fno-use-init-array"); } diff --git a/clang/test/Driver/constructors.c b/clang/test/Driver/constructors.c --- a/clang/test/Driver/constructors.c +++ b/clang/test/Driver/constructors.c @@ -84,7 +84,11 @@ // RUN: %clang -### %s -fsyntax-only 2>&1 \ // RUN: --target=i386-unknown-freebsd11 \ // RUN: | FileCheck --check-prefix=CHECK-NO-INIT-ARRAY %s - +// +// RUN: %clang -### %s -fsyntax-only 2>&1 \ +// RUN: --target=i386-unknown-freebsd \ +// RUN: | FileCheck --check-prefix=CHECK-INIT-ARRAY %s +// // RUN: %clang -### %s -fsyntax-only 2>&1 \ // RUN: --target=i386-unknown-freebsd12 \ // RUN: | FileCheck --check-prefix=CHECK-INIT-ARRAY %s diff --git a/clang/test/Driver/freebsd.c b/clang/test/Driver/freebsd.c --- a/clang/test/Driver/freebsd.c +++ b/clang/test/Driver/freebsd.c @@ -81,17 +81,15 @@ // CHECK-RV64I-LD: ld{{.*}}" {{.*}} "-m" "elf64lriscv" // // Check that the new linker flags are passed to FreeBSD -// RUN: %clang --target=x86_64-pc-freebsd8 -m32 %s \ -// RUN: --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \ -// RUN: | FileCheck --check-prefix=CHECK-LDFLAGS8 %s // RUN: %clang --target=x86_64-pc-freebsd9 -m32 %s \ // RUN: --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-LDFLAGS9 %s // RUN: %clang --target=x86_64-pc-freebsd10.0 -m32 %s \ // RUN: --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-LDFLAGS9 %s -// CHECK-LDFLAGS8-NOT: --hash-style=both -// CHECK-LDFLAGS8: --enable-new-dtags +// RUN: %clang --target=x86_64-pc-freebsd -m32 %s \ +// RUN: --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-LDFLAGS9 %s // CHECK-LDFLAGS9: --hash-style=both // CHECK-LDFLAGS9: --enable-new-dtags //