[PS5] Defaults for -fdeclspec, -ffunction/data-sections
authorPaul Robinson <paul.robinson@sony.com>
Thu, 28 Apr 2022 16:58:47 +0000 (09:58 -0700)
committerPaul Robinson <paul.robinson@sony.com>
Thu, 28 Apr 2022 17:03:46 +0000 (10:03 -0700)
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Driver/ToolChains/CommonArgs.cpp
clang/test/Driver/ps4-ps5-toolchain.c [new file with mode: 0644]

index 4c22d33..8c68473 100644 (file)
@@ -6441,9 +6441,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
   Args.addOptInFlag(CmdArgs, options::OPT_fborland_extensions,
                     options::OPT_fno_borland_extensions);
 
-  // -fno-declspec is default, except for PS4.
+  // -fno-declspec is default, except for PS4/PS5.
   if (Args.hasFlag(options::OPT_fdeclspec, options::OPT_fno_declspec,
-                   RawTriple.isPS4()))
+                   RawTriple.isPS()))
     CmdArgs.push_back("-fdeclspec");
   else if (Args.hasArg(options::OPT_fno_declspec))
     CmdArgs.push_back("-fno-declspec"); // Explicitly disabling __declspec.
index 03a887a..b646a1d 100644 (file)
@@ -486,9 +486,9 @@ llvm::StringRef tools::getLTOParallelism(const ArgList &Args, const Driver &D) {
   return LtoJobsArg->getValue();
 }
 
-// CloudABI uses -ffunction-sections and -fdata-sections by default.
+// CloudABI and PS4/PS5 use -ffunction-sections and -fdata-sections by default.
 bool tools::isUseSeparateSections(const llvm::Triple &Triple) {
-  return Triple.getOS() == llvm::Triple::CloudABI;
+  return Triple.getOS() == llvm::Triple::CloudABI || Triple.isPS();
 }
 
 void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args,
diff --git a/clang/test/Driver/ps4-ps5-toolchain.c b/clang/test/Driver/ps4-ps5-toolchain.c
new file mode 100644 (file)
index 0000000..308b80c
--- /dev/null
@@ -0,0 +1,7 @@
+// PS4/PS5 miscellaneous toolchain defaults.
+
+// RUN: %clang -c %s -### -target x86_64-scei-ps4 2>&1 | FileCheck %s
+// RUN: %clang -c %s -### -target x86_64-sie-ps5 2>&1 | FileCheck %s
+// CHECK-DAG: "-ffunction-sections"
+// CHECK-DAG: "-fdata-sections"
+// CHECK-DAG: "-fdeclspec"