[PATCH] D77776: [Driver] Drop support for FreeBSD < 10

2020-04-08 Thread Jan Beich via Phabricator via cfe-commits
jbeich created this revision.
jbeich added reviewers: clang, dim.
Herald added subscribers: cfe-commits, fedor.sergeev, krytarowski, arichardson, 
emaste.
Herald added a project: clang.

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 
  
  $ 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 
   ^


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D6

Files:
  clang/lib/CodeGen/TargetInfo.cpp
  clang/lib/Driver/ToolChains/FreeBSD.cpp


Index: clang/lib/Driver/ToolChains/FreeBSD.cpp
===
--- clang/lib/Driver/ToolChains/FreeBSD.cpp
+++ clang/lib/Driver/ToolChains/FreeBSD.cpp
@@ -172,9 +172,8 @@
   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");
   }
@@ -378,9 +377,7 @@
 }
 
 ToolChain::CXXStdlibType FreeBSD::GetDefaultCXXStdlibType() const {
-  if (getTriple().getOSMajorVersion() >= 10)
-return ToolChain::CST_Libcxx;
-  return ToolChain::CST_Libstdcxx;
+  return ToolChain::CST_Libcxx;
 }
 
 unsigned FreeBSD::GetDefaultDwarfVersion() const {
Index: clang/lib/CodeGen/TargetInfo.cpp
===
--- clang/lib/CodeGen/TargetInfo.cpp
+++ clang/lib/CodeGen/TargetInfo.cpp
@@ -2224,7 +2224,7 @@
 const llvm::Triple &Triple = getTarget().getTriple();
 if (Triple.isOSDarwin() || Triple.getOS() == llvm::Triple::PS4)
   return false;
-if (Triple.isOSFreeBSD() && Triple.getOSMajorVersion() >= 10)
+if (Triple.isOSFreeBSD())
   return false;
 return true;
   }


Index: clang/lib/Driver/ToolChains/FreeBSD.cpp
===
--- clang/lib/Driver/ToolChains/FreeBSD.cpp
+++ clang/lib/Driver/ToolChains/FreeBSD.cpp
@@ -172,9 +172,8 @@
   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");
   }
@@ -378,9 +377,7 @@
 }
 
 ToolChain::CXXStdlibType FreeBSD::GetDefaultCXXStdlibType() const {
-  if (getTriple().getOSMajorVersion() >= 10)
-return ToolChain::CST_Libcxx;
-  return ToolChain::CST_Libstdcxx;
+  return ToolChain::CST_Libcxx;
 }
 
 unsigned FreeBSD::GetDefaultDwarfVersion() const {
Index: clang/lib/CodeGen/TargetInfo.cpp
===
--- clang/lib/CodeGen/TargetInfo.cpp
+++ clang/lib/CodeGen/TargetInfo.cpp
@@ -2224,7 +2224,7 @@
 const llvm::Triple &Triple = getTarget().getTriple();
 if (Triple.isOSDarwin() || Triple.getOS() == llvm::Triple::PS4)
   return false;
-if (Triple.isOSFreeBSD() && Triple.getOSMajorVersion() >= 10)
+if (Triple.isOSFreeBSD())
   return false;
 return true;
   }
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D77776: [Driver] Drop support for FreeBSD < 10

2020-04-09 Thread Jan Beich via Phabricator via cfe-commits
jbeich updated this revision to Diff 256202.
jbeich added a comment.

- Attempt to unbreak tests


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D6/new/

https://reviews.llvm.org/D6

Files:
  clang/lib/CodeGen/TargetInfo.cpp
  clang/lib/Driver/ToolChains/FreeBSD.cpp
  clang/test/Driver/freebsd.c
  clang/test/Driver/freebsd.cpp


Index: clang/test/Driver/freebsd.cpp
===
--- clang/test/Driver/freebsd.cpp
+++ clang/test/Driver/freebsd.cpp
@@ -1,13 +1,13 @@
-// RUN: %clangxx %s -### -o %t.o -target amd64-unknown-freebsd10.0 
-stdlib=platform 2>&1 \
+// RUN: %clangxx %s -### -o %t.o -target amd64-unknown-freebsd -stdlib=libc++ 
2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-TEN %s
-// RUN: %clangxx %s -### -o %t.o -target amd64-unknown-freebsd9.2 
-stdlib=platform 2>&1 \
+// RUN: %clangxx %s -### -o %t.o -target amd64-unknown-freebsd 
-stdlib=libstdc++ 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-NINE %s
 // CHECK-TEN: "-lc++" "-lm"
 // CHECK-NINE: "-lstdc++" "-lm"
 
-// RUN: %clangxx %s -### -pg -o %t.o -target amd64-unknown-freebsd10.0 
-stdlib=platform 2>&1 \
+// RUN: %clangxx %s -### -pg -o %t.o -target amd64-unknown-freebsd 
-stdlib=libc++ 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-PG-TEN %s
-// RUN: %clangxx %s -### -pg -o %t.o -target amd64-unknown-freebsd9.2 
-stdlib=platform 2>&1 \
+// RUN: %clangxx %s -### -pg -o %t.o -target amd64-unknown-freebsd 
-stdlib=libstdc++ 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-PG-NINE %s
 // CHECK-PG-TEN: "-lc++_p" "-lm_p"
 // CHECK-PG-NINE: "-lstdc++_p" "-lm_p"
Index: clang/test/Driver/freebsd.c
===
--- clang/test/Driver/freebsd.c
+++ clang/test/Driver/freebsd.c
@@ -73,19 +73,11 @@
 // CHECK-RV64I-LD: ld{{.*}}" {{.*}} "-m" "elf64lriscv"
 //
 // Check that the new linker flags are passed to FreeBSD
-// RUN: %clang -no-canonical-prefixes -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 -no-canonical-prefixes -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 -no-canonical-prefixes -target x86_64-pc-freebsd10.0 -m32 %s \
+// RUN: %clang -no-canonical-prefixes -target x86_64-pc-freebsd -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
-// CHECK-LDFLAGS9: --hash-style=both
-// CHECK-LDFLAGS9: --enable-new-dtags
+// RUN:   | FileCheck --check-prefix=CHECK-LDFLAGS %s
+// CHECK-LDFLAGS: --hash-style=both
+// CHECK-LDFLAGS: --enable-new-dtags
 //
 // Check that we do not pass --hash-style=gnu and --hash-style=both to linker
 // and provide correct path to the dynamic linker for MIPS platforms.
Index: clang/lib/Driver/ToolChains/FreeBSD.cpp
===
--- clang/lib/Driver/ToolChains/FreeBSD.cpp
+++ clang/lib/Driver/ToolChains/FreeBSD.cpp
@@ -172,9 +172,8 @@
   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");
   }
@@ -378,9 +377,7 @@
 }
 
 ToolChain::CXXStdlibType FreeBSD::GetDefaultCXXStdlibType() const {
-  if (getTriple().getOSMajorVersion() >= 10)
-return ToolChain::CST_Libcxx;
-  return ToolChain::CST_Libstdcxx;
+  return ToolChain::CST_Libcxx;
 }
 
 unsigned FreeBSD::GetDefaultDwarfVersion() const {
Index: clang/lib/CodeGen/TargetInfo.cpp
===
--- clang/lib/CodeGen/TargetInfo.cpp
+++ clang/lib/CodeGen/TargetInfo.cpp
@@ -2224,7 +2224,7 @@
 const llvm::Triple &Triple = getTarget().getTriple();
 if (Triple.isOSDarwin() || Triple.getOS() == llvm::Triple::PS4)
   return false;
-if (Triple.isOSFreeBSD() && Triple.getOSMajorVersion() >= 10)
+if (Triple.isOSFreeBSD())
   return false;
 return true;
   }


Index: clang/test/Driver/freebsd.cpp
===
--- clang/test/Driver/freebsd.cpp
+++ clang/test/Driver/freebsd.cpp
@@ -1,13 +1,13 @@
-// RUN: %clangxx %s -### -o %t.o -target amd64-unknown-freebsd10.0 -stdlib=platform 2>&1 \
+// RUN: %clangxx %s -### -o %t.o -target amd64-unknown-freebsd -stdlib=libc++ 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-TEN 

[PATCH] D77776: [Driver] Default to libc++ on FreeBSD

2020-04-14 Thread Jan Beich via Phabricator via cfe-commits
jbeich updated this revision to Diff 257403.
jbeich retitled this revision from "[Driver] Drop support for FreeBSD < 10" to 
"[Driver] Default to libc++ on FreeBSD".
jbeich added a comment.

- Limit the scope to `-stdlib`

In D6#1972543 , @dim wrote:

> the lowest supported version, which is currently 10


Where is this defined? Does someone build LLVM master on FreeBSD < 11.3?

ports/ (for dependencies) quickly cut off EOL support to avoid bitrot due to 
lack of QA.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D6/new/

https://reviews.llvm.org/D6

Files:
  clang/lib/Driver/ToolChains/FreeBSD.cpp
  clang/test/Driver/freebsd.cpp


Index: clang/test/Driver/freebsd.cpp
===
--- clang/test/Driver/freebsd.cpp
+++ clang/test/Driver/freebsd.cpp
@@ -1,13 +1,19 @@
+// RUN: %clangxx %s -### -o %t.o -target amd64-unknown-freebsd 
-stdlib=platform 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-DEFAULT %s
 // RUN: %clangxx %s -### -o %t.o -target amd64-unknown-freebsd10.0 
-stdlib=platform 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-TEN %s
 // RUN: %clangxx %s -### -o %t.o -target amd64-unknown-freebsd9.2 
-stdlib=platform 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-NINE %s
+// CHECK-DEFAULT: "-lc++" "-lm"
 // CHECK-TEN: "-lc++" "-lm"
 // CHECK-NINE: "-lstdc++" "-lm"
 
+// RUN: %clangxx %s -### -pg -o %t.o -target amd64-unknown-freebsd 
-stdlib=platform 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-PG-DEFAULT %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
 // RUN: %clangxx %s -### -pg -o %t.o -target amd64-unknown-freebsd9.2 
-stdlib=platform 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-PG-NINE %s
+// CHECK-PG-DEFAULT: "-lc++_p" "-lm_p"
 // CHECK-PG-TEN: "-lc++_p" "-lm_p"
 // CHECK-PG-NINE: "-lstdc++_p" "-lm_p"
Index: clang/lib/Driver/ToolChains/FreeBSD.cpp
===
--- clang/lib/Driver/ToolChains/FreeBSD.cpp
+++ clang/lib/Driver/ToolChains/FreeBSD.cpp
@@ -378,7 +378,8 @@
 }
 
 ToolChain::CXXStdlibType FreeBSD::GetDefaultCXXStdlibType() const {
-  if (getTriple().getOSMajorVersion() >= 10)
+  unsigned Major = getTriple().getOSMajorVersion();
+  if (Major >= 10 || Major == 0)
 return ToolChain::CST_Libcxx;
   return ToolChain::CST_Libstdcxx;
 }


Index: clang/test/Driver/freebsd.cpp
===
--- clang/test/Driver/freebsd.cpp
+++ clang/test/Driver/freebsd.cpp
@@ -1,13 +1,19 @@
+// RUN: %clangxx %s -### -o %t.o -target amd64-unknown-freebsd -stdlib=platform 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-DEFAULT %s
 // RUN: %clangxx %s -### -o %t.o -target amd64-unknown-freebsd10.0 -stdlib=platform 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-TEN %s
 // RUN: %clangxx %s -### -o %t.o -target amd64-unknown-freebsd9.2 -stdlib=platform 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-NINE %s
+// CHECK-DEFAULT: "-lc++" "-lm"
 // CHECK-TEN: "-lc++" "-lm"
 // CHECK-NINE: "-lstdc++" "-lm"
 
+// RUN: %clangxx %s -### -pg -o %t.o -target amd64-unknown-freebsd -stdlib=platform 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-PG-DEFAULT %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
 // RUN: %clangxx %s -### -pg -o %t.o -target amd64-unknown-freebsd9.2 -stdlib=platform 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-PG-NINE %s
+// CHECK-PG-DEFAULT: "-lc++_p" "-lm_p"
 // CHECK-PG-TEN: "-lc++_p" "-lm_p"
 // CHECK-PG-NINE: "-lstdc++_p" "-lm_p"
Index: clang/lib/Driver/ToolChains/FreeBSD.cpp
===
--- clang/lib/Driver/ToolChains/FreeBSD.cpp
+++ clang/lib/Driver/ToolChains/FreeBSD.cpp
@@ -378,7 +378,8 @@
 }
 
 ToolChain::CXXStdlibType FreeBSD::GetDefaultCXXStdlibType() const {
-  if (getTriple().getOSMajorVersion() >= 10)
+  unsigned Major = getTriple().getOSMajorVersion();
+  if (Major >= 10 || Major == 0)
 return ToolChain::CST_Libcxx;
   return ToolChain::CST_Libstdcxx;
 }
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits