[PATCH] D157013: [Driver] Allow for sparcv8plus subdir with Solaris/SPARC GCC

2023-08-03 Thread Rainer Orth via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG43dfe0f08eca: [Driver] Allow for sparcv8plus subdir with 
Solaris/SPARC GCC (authored by ro).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D157013

Files:
  clang/lib/Driver/ToolChains/Gnu.cpp
  
clang/test/Driver/Inputs/solaris_sparc32_tree/usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.4.0/32/crtbegin.o
  
clang/test/Driver/Inputs/solaris_sparc32_tree/usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.4.0/crtbegin.o
  
clang/test/Driver/Inputs/solaris_sparcv8+_tree/usr/gcc/11/lib/gcc/sparcv9-sun-solaris2.11/11.3.0/crtbegin.o
  
clang/test/Driver/Inputs/solaris_sparcv8+_tree/usr/gcc/11/lib/gcc/sparcv9-sun-solaris2.11/11.3.0/sparcv8plus/crtbegin.o
  clang/test/Driver/lit.local.cfg
  clang/test/Driver/solaris-sparc-gcc-search.test

Index: clang/test/Driver/solaris-sparc-gcc-search.test
===
--- /dev/null
+++ clang/test/Driver/solaris-sparc-gcc-search.test
@@ -0,0 +1,56 @@
+/// Check that clang can handle both old-style (32) and new-style (sparcv8plus)
+/// 32-bit sparc multilib subdirs.
+
+/// Check sparc-sun-solaris2.11, 32-bit, GCC 4.8 tree
+// RUN: %clang -v 2>&1 --target=sparc-sun-solaris2.11 \
+// RUN: --gcc-toolchain=%S/Inputs/solaris_sparc_tree/usr/gcc/4.8 \
+// RUN:   | FileCheck --check-prefix=CHECK-SPARC32-GCC48 %s
+// CHECK-SPARC32-GCC48: Selected GCC installation: {{.*}}4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2
+// CHECK-SPARC32-GCC48-NEXT: Candidate multilib: .;@m32
+// CHECK-SPARC32-GCC48-NEXT: Candidate multilib: sparcv9;@m64
+// CHECK-SPARC32-GCC48-NEXT: Selected multilib: .;@m32
+
+/// Check sparc-sun-solaris2.11, 32-bit, GCC 10 tree
+// RUN: %clang -v 2>&1 --target=sparc-sun-solaris2.11 \
+// RUN: --gcc-toolchain=%S/Inputs/solaris_sparc32_tree/usr/gcc/10 \
+// RUN:   | FileCheck --check-prefix=CHECK-SPARC32-GCC10 %s
+// CHECK-SPARC32-GCC10: Selected GCC installation: {{.*}}10/lib/gcc/sparcv9-sun-solaris2.11/10.4.0
+// CHECK-SPARC32-GCC10-NEXT: Candidate multilib: .;@m64
+// CHECK-SPARC32-GCC10-NEXT: Candidate multilib: 32;@m32
+// CHECK-SPARC32-GCC10-NEXT: Selected multilib: 32;@m32
+
+/// Check sparc-sun-solaris2.11, 32-bit, GCC 11 tree
+// RUN: %clang -v 2>&1 --target=sparc-sun-solaris2.11 \
+// RUN: --gcc-toolchain=%S/Inputs/solaris_sparcv8+_tree/usr/gcc/11 \
+// RUN:   | FileCheck --check-prefix=CHECK-SPARC32-GCC11 %s
+// CHECK-SPARC32-GCC11: Selected GCC installation: {{.*}}11/lib/gcc/sparcv9-sun-solaris2.11/11.3.0
+// CHECK-SPARC32-GCC11-NEXT: Candidate multilib: .;@m64
+// CHECK-SPARC32-GCC11-NEXT: Candidate multilib: sparcv8plus;@m32
+// CHECK-SPARC32-GCC11-NEXT: Selected multilib: sparcv8plus;@m32
+
+/// Check sparcv9-sun-solaris2.11, 64-bit, GCC 4.8 tree
+// RUN: %clang -v 2>&1 --target=sparcv9-sun-solaris2.11 \
+// RUN: --gcc-toolchain=%S/Inputs/solaris_sparc_tree/usr/gcc/4.8 \
+// RUN:   | FileCheck --check-prefix=CHECK-SPARC64-GCC48 %s
+// CHECK-SPARC64-GCC48: Selected GCC installation: {{.*}}gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2
+// CHECK-SPARC64-GCC48-NEXT: Candidate multilib: .;@m32
+// CHECK-SPARC64-GCC48-NEXT: Candidate multilib: sparcv9;@m64
+// CHECK-SPARC64-GCC48-NEXT: Selected multilib: sparcv9;@m64
+
+/// Check sparcv9-sun-solaris2.11, 64-bit, GCC 10 tree
+// RUN: %clang -v 2>&1 --target=sparcv9-sun-solaris2.11 \
+// RUN: --gcc-toolchain=%S/Inputs/solaris_sparc32_tree/usr/gcc/10 \
+// RUN:   | FileCheck --check-prefix=CHECK-SPARC64-GCC10 %s
+// CHECK-SPARC64-GCC10: Selected GCC installation: {{.*}}10/lib/gcc/sparcv9-sun-solaris2.11/10.4.0
+// CHECK-SPARC64-GCC10-NEXT: Candidate multilib: .;@m64
+// CHECK-SPARC64-GCC10-NEXT: Candidate multilib: 32;@m32
+// CHECK-SPARC64-GCC10-NEXT: Selected multilib: .;@m64
+
+/// Check sparcv9-sun-solaris2.11, 64-bit, GCC 11 tree
+// RUN: %clang -v 2>&1 --target=sparcv9-sun-solaris2.11 \
+// RUN: --gcc-toolchain=%S/Inputs/solaris_sparcv8+_tree/usr/gcc/11 \
+// RUN:   | FileCheck --check-prefix=CHECK-SPARC64-GCC11 %s
+// CHECK-SPARC64-GCC11: Selected GCC installation: {{.*}}11/lib/gcc/sparcv9-sun-solaris2.11/11.3.0
+// CHECK-SPARC64-GCC11-NEXT: Candidate multilib: .;@m64
+// CHECK-SPARC64-GCC11-NEXT: Candidate multilib: sparcv8plus;@m32
+// CHECK-SPARC64-GCC11-NEXT: Selected multilib: .;@m64
Index: clang/test/Driver/lit.local.cfg
===
--- clang/test/Driver/lit.local.cfg
+++ clang/test/Driver/lit.local.cfg
@@ -20,6 +20,7 @@
 ".hipi",
 ".hlsl",
 ".yaml",
+".test",
 ]
 config.substitutions = list(config.substitutions)
 config.substitutions.insert(
Index: clang/lib/Driver/ToolChains/Gnu.cpp
===
--- clang/lib/Driver/ToolChains/Gnu.cpp
+++ clang/lib/Driver/ToolChains/Gnu.cpp
@@ 

[PATCH] D157013: [Driver] Allow for sparcv8plus subdir with Solaris/SPARC GCC

2023-08-03 Thread Fangrui Song via Phabricator via cfe-commits
MaskRay added inline comments.



Comment at: clang/test/Driver/lit.local.cfg:23
 ".yaml",
+".test",
 ]

ro wrote:
> MaskRay wrote:
> > Instead of adding a new extension, you can just name your test `.c`?
> I could, but went for  `.test` instead because the `clang` invocations don't 
> need input.
> 
> Besides, there's still the issue of the existing `crash-report-null.test` 
> that's currently ignored.
OK, sounds good since many other directories accept `.test`


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D157013

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D157013: [Driver] Allow for sparcv8plus subdir with Solaris/SPARC GCC

2023-08-03 Thread Rainer Orth via Phabricator via cfe-commits
ro added inline comments.



Comment at: clang/test/Driver/lit.local.cfg:23
 ".yaml",
+".test",
 ]

MaskRay wrote:
> Instead of adding a new extension, you can just name your test `.c`?
I could, but went for  `.test` instead because the `clang` invocations don't 
need input.

Besides, there's still the issue of the existing `crash-report-null.test` 
that's currently ignored.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D157013

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D157013: [Driver] Allow for sparcv8plus subdir with Solaris/SPARC GCC

2023-08-03 Thread Fangrui Song via Phabricator via cfe-commits
MaskRay accepted this revision.
MaskRay added inline comments.
This revision is now accepted and ready to land.



Comment at: clang/test/Driver/lit.local.cfg:23
 ".yaml",
+".test",
 ]

Instead of adding a new extension, you can just name your test `.c`?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D157013

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D157013: [Driver] Allow for sparcv8plus subdir with Solaris/SPARC GCC

2023-08-03 Thread Rainer Orth via Phabricator via cfe-commits
ro created this revision.
ro added a reviewer: MaskRay.
ro added a project: clang.
Herald added subscribers: pengfei, jrtc27, fedor.sergeev, jyknight.
Herald added a project: All.
ro requested review of this revision.

Since GCC 11, the bundled Solaris/SPARC GCC uses the `sparcv8plus` subdirectory 
for 32-bit objects, just like upstream GCC.  Before that, it used `32` instead 
from a local patch.

Since `clang` doesn't know about that `sparcv8plus` subdirectory, it wouldn't 
properly use GCC 11+ installations.

The new `solaris-sparc-gcc-search.test` testcase wasn't run initially (like the 
existing `crash-report-null.test`) because the `.test` suffix wasn't handled.

Tested on `sparcv9-sun-solaris2.11`, `amd64-pc-solaris2.11`, and 
`x86_64-pc-linux-gnu`.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D157013

Files:
  clang/lib/Driver/ToolChains/Gnu.cpp
  
clang/test/Driver/Inputs/solaris_sparc32_tree/usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.4.0/32/crtbegin.o
  
clang/test/Driver/Inputs/solaris_sparc32_tree/usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.4.0/crtbegin.o
  
clang/test/Driver/Inputs/solaris_sparcv8+_tree/usr/gcc/11/lib/gcc/sparcv9-sun-solaris2.11/11.3.0/crtbegin.o
  
clang/test/Driver/Inputs/solaris_sparcv8+_tree/usr/gcc/11/lib/gcc/sparcv9-sun-solaris2.11/11.3.0/sparcv8plus/crtbegin.o
  clang/test/Driver/lit.local.cfg
  clang/test/Driver/solaris-sparc-gcc-search.test

Index: clang/test/Driver/solaris-sparc-gcc-search.test
===
--- /dev/null
+++ clang/test/Driver/solaris-sparc-gcc-search.test
@@ -0,0 +1,56 @@
+/// Check that clang can handle both old-style (32) and new-style (sparcv8plus)
+/// 32-bit sparc multilib subdirs.
+
+/// Check sparc-sun-solaris2.11, 32-bit, GCC 4.8 tree
+// RUN: %clang -v 2>&1 --target=sparc-sun-solaris2.11 \
+// RUN: --gcc-toolchain=%S/Inputs/solaris_sparc_tree/usr/gcc/4.8 \
+// RUN:   | FileCheck --check-prefix=CHECK-SPARC32-GCC48 %s
+// CHECK-SPARC32-GCC48: Selected GCC installation: {{.*}}4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2
+// CHECK-SPARC32-GCC48-NEXT: Candidate multilib: .;@m32
+// CHECK-SPARC32-GCC48-NEXT: Candidate multilib: sparcv9;@m64
+// CHECK-SPARC32-GCC48-NEXT: Selected multilib: .;@m32
+
+/// Check sparc-sun-solaris2.11, 32-bit, GCC 10 tree
+// RUN: %clang -v 2>&1 --target=sparc-sun-solaris2.11 \
+// RUN: --gcc-toolchain=%S/Inputs/solaris_sparc32_tree/usr/gcc/10 \
+// RUN:   | FileCheck --check-prefix=CHECK-SPARC32-GCC10 %s
+// CHECK-SPARC32-GCC10: Selected GCC installation: {{.*}}10/lib/gcc/sparcv9-sun-solaris2.11/10.4.0
+// CHECK-SPARC32-GCC10-NEXT: Candidate multilib: .;@m64
+// CHECK-SPARC32-GCC10-NEXT: Candidate multilib: 32;@m32
+// CHECK-SPARC32-GCC10-NEXT: Selected multilib: 32;@m32
+
+/// Check sparc-sun-solaris2.11, 32-bit, GCC 11 tree
+// RUN: %clang -v 2>&1 --target=sparc-sun-solaris2.11 \
+// RUN: --gcc-toolchain=%S/Inputs/solaris_sparcv8+_tree/usr/gcc/11 \
+// RUN:   | FileCheck --check-prefix=CHECK-SPARC32-GCC11 %s
+// CHECK-SPARC32-GCC11: Selected GCC installation: {{.*}}11/lib/gcc/sparcv9-sun-solaris2.11/11.3.0
+// CHECK-SPARC32-GCC11-NEXT: Candidate multilib: .;@m64
+// CHECK-SPARC32-GCC11-NEXT: Candidate multilib: sparcv8plus;@m32
+// CHECK-SPARC32-GCC11-NEXT: Selected multilib: sparcv8plus;@m32
+
+/// Check sparcv9-sun-solaris2.11, 64-bit, GCC 4.8 tree
+// RUN: %clang -v 2>&1 --target=sparcv9-sun-solaris2.11 \
+// RUN: --gcc-toolchain=%S/Inputs/solaris_sparc_tree/usr/gcc/4.8 \
+// RUN:   | FileCheck --check-prefix=CHECK-SPARC64-GCC48 %s
+// CHECK-SPARC64-GCC48: Selected GCC installation: {{.*}}gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2
+// CHECK-SPARC64-GCC48-NEXT: Candidate multilib: .;@m32
+// CHECK-SPARC64-GCC48-NEXT: Candidate multilib: sparcv9;@m64
+// CHECK-SPARC64-GCC48-NEXT: Selected multilib: sparcv9;@m64
+
+/// Check sparcv9-sun-solaris2.11, 64-bit, GCC 10 tree
+// RUN: %clang -v 2>&1 --target=sparcv9-sun-solaris2.11 \
+// RUN: --gcc-toolchain=%S/Inputs/solaris_sparc32_tree/usr/gcc/10 \
+// RUN:   | FileCheck --check-prefix=CHECK-SPARC64-GCC10 %s
+// CHECK-SPARC64-GCC10: Selected GCC installation: {{.*}}10/lib/gcc/sparcv9-sun-solaris2.11/10.4.0
+// CHECK-SPARC64-GCC10-NEXT: Candidate multilib: .;@m64
+// CHECK-SPARC64-GCC10-NEXT: Candidate multilib: 32;@m32
+// CHECK-SPARC64-GCC10-NEXT: Selected multilib: .;@m64
+
+/// Check sparcv9-sun-solaris2.11, 64-bit, GCC 11 tree
+// RUN: %clang -v 2>&1 --target=sparcv9-sun-solaris2.11 \
+// RUN: --gcc-toolchain=%S/Inputs/solaris_sparcv8+_tree/usr/gcc/11 \
+// RUN:   | FileCheck --check-prefix=CHECK-SPARC64-GCC11 %s
+// CHECK-SPARC64-GCC11: Selected GCC installation: {{.*}}11/lib/gcc/sparcv9-sun-solaris2.11/11.3.0
+// CHECK-SPARC64-GCC11-NEXT: Candidate multilib: .;@m64
+// CHECK-SPARC64-GCC11-NEXT: Candidate multilib: sparcv8plus;@m32
+// CHECK-SPARC64-GCC11-NEXT: Selected multilib: .;@m64
Index: clang/test/Driver/lit.local.cfg