[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-28 Thread via cfe-commits

https://github.com/androm3da closed 
https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-28 Thread via cfe-commits

https://github.com/androm3da resolved 
https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-28 Thread via cfe-commits

https://github.com/androm3da resolved 
https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-28 Thread via cfe-commits

https://github.com/androm3da resolved 
https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-28 Thread via cfe-commits

https://github.com/androm3da updated 
https://github.com/llvm/llvm-project/pull/67515

>From 4048b1e2557b11650cf2fa568c8814716e45daf5 Mon Sep 17 00:00:00 2001
From: Brian Cain 
Date: Tue, 26 Sep 2023 19:57:47 -0700
Subject: [PATCH] [clang][hexagon] Add support for -nolibc

---
 clang/lib/Driver/ToolChains/Hexagon.cpp |  6 --
 clang/test/Driver/hexagon-toolchain-elf.c   | 23 -
 clang/test/Driver/hexagon-toolchain-linux.c | 10 +
 3 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp 
b/clang/lib/Driver/ToolChains/Hexagon.cpp
index e7dca1053dc8d8a..d81e022708932f7 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -377,7 +377,8 @@ constructHexagonLinkArgs(Compilation , const JobAction 
,
 linkXRayRuntimeDeps(HTC, Args, CmdArgs);
 
   CmdArgs.push_back("-lclang_rt.builtins-hexagon");
-  CmdArgs.push_back("-lc");
+  if (!Args.hasArg(options::OPT_nolibc))
+CmdArgs.push_back("-lc");
 }
 if (D.CCCIsCXX()) {
   if (HTC.ShouldLinkCXXStdlib(Args))
@@ -470,7 +471,8 @@ constructHexagonLinkArgs(Compilation , const JobAction 
,
 if (!IsShared) {
   for (StringRef Lib : OsLibs)
 CmdArgs.push_back(Args.MakeArgString("-l" + Lib));
-  CmdArgs.push_back("-lc");
+  if (!Args.hasArg(options::OPT_nolibc))
+CmdArgs.push_back("-lc");
 }
 CmdArgs.push_back("-lgcc");
 
diff --git a/clang/test/Driver/hexagon-toolchain-elf.c 
b/clang/test/Driver/hexagon-toolchain-elf.c
index b840de28fd92089..da859a144cfc888 100644
--- a/clang/test/Driver/hexagon-toolchain-elf.c
+++ b/clang/test/Driver/hexagon-toolchain-elf.c
@@ -278,7 +278,7 @@
 // CHECK335-SAME: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/G0/fini.o"
 
 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-
-// -nostdlib, -nostartfiles, -nodefaultlibs
+// -nostdlib, -nostartfiles, -nodefaultlibs, -nolibc
 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-
 // RUN: %clangxx -### --target=hexagon-unknown-elf \
 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
@@ -337,6 +337,27 @@
 // CHECK338-NOT: "--end-group"
 // CHECK338: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
 
+// RUN: %clangxx -### --target=hexagon-unknown-elf \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin -mcpu=hexagonv60 \
+// RUN:   -fuse-ld=lld -nolibc %s 2>&1 | FileCheck -check-prefix=CHECK-NOLIBC 
%s
+// CHECK-NOLIBC: "-cc1"
+// CHECK-NOLIBC: ld.lld
+// CHECK-NOLIBC-SAME: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
+// CHECK-NOLIBC-SAME: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
+// CHECK-NOLIBC-SAME: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
+// CHECK-NOLIBC-SAME: 
"-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
+// CHECK-NOLIBC-SAME: 
"-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
+// CHECK-NOLIBC-SAME: "{{[^"]+}}.o"
+// CHECK-NOLIBC-SAME: "-lstdc++"
+// CHECK-NOLIBC-SAME: "-lm"
+// CHECK-NOLIBC-SAME: "--start-group"
+// CHECK-NOLIBC-SAME: "-lstandalone"
+// CHECK-NOLIBC-NOT: "-lc"
+// CHECK-NOLIBC-SAME: "-lgcc"
+// CHECK-NOLIBC-SAME: "--end-group"
+// CHECK-NOLIBC-SAME: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
+
+
 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-
 // -moslib
 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-
diff --git a/clang/test/Driver/hexagon-toolchain-linux.c 
b/clang/test/Driver/hexagon-toolchain-linux.c
index 51aa6ec90dc017b..fe32638417ea4ad 100644
--- a/clang/test/Driver/hexagon-toolchain-linux.c
+++ b/clang/test/Driver/hexagon-toolchain-linux.c
@@ -58,6 +58,16 @@
 // CHECK004-NOT:   "-lclang_rt.builtins-hexagon"
 // CHECK004-NOT:   "-lc"
 // 
-
+// Passing --musl -nolibc
+// 
-
+// RUN: %clang -### --target=hexagon-unknown-linux-musl \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   -mcpu=hexagonv60 --sysroot=%S/Inputs/basic_linux_libcxx_tree \
+// RUN:   -nolibc %s 2>&1 | FileCheck -check-prefix=CHECK-NOLIBC %s
+// CHECK-NOLIBC:   
"-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1"
+// CHECK-NOLIBC-SAME:  
"{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o"
+// CHECK-NOLIBC-NOT:   "-lc"
+// 
-
 // Not Passing -fno-use-init-array when musl is selected
 // 
-
 // RUN: %clang -### --target=hexagon-unknown-linux-musl \


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-27 Thread Fangrui Song via cfe-commits

https://github.com/MaskRay approved this pull request.


https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-27 Thread Fangrui Song via cfe-commits

https://github.com/MaskRay edited 
https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-27 Thread Fangrui Song via cfe-commits


@@ -401,6 +401,30 @@
 // CHECK338-NOT: "--end-group"
 // CHECK338: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
 
+// RUN: %clangxx -### -target hexagon-unknown-elf \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   -mcpu=hexagonv60 \
+// RUN:   -nolibc \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-NOLIBC %s
+// CHECK-NOLIBC: "-cc1"
+// CHECK-NOLIBC: {{hexagon-link|ld}}
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
+// CHECK-NOLIBC: 
"-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
+// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
+// CHECK-NOLIBC: "{{[^"]+}}.o"
+// CHECK-NOLIBC: "-lstdc++"
+// CHECK-NOLIBC: "-lm"

MaskRay wrote:

The pattern `{{hexagon-link|ld}}` is too broad. The `ld` part may match `clang 
-cc1 .../build/` if someone's build directory is called `build` (`ld` is a 
substring!).

With `-fuse-ld=lld`, we can ensure that the linker is not affected by 
`CLANG_DEFAULT_LINKER` and `"{{.*}}ld.lld"` will occur...

https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-27 Thread via cfe-commits


@@ -401,6 +401,30 @@
 // CHECK338-NOT: "--end-group"
 // CHECK338: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
 
+// RUN: %clangxx -### -target hexagon-unknown-elf \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   -mcpu=hexagonv60 \
+// RUN:   -nolibc \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-NOLIBC %s
+// CHECK-NOLIBC: "-cc1"
+// CHECK-NOLIBC: {{hexagon-link|ld}}
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
+// CHECK-NOLIBC: 
"-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
+// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
+// CHECK-NOLIBC: "{{[^"]+}}.o"
+// CHECK-NOLIBC: "-lstdc++"
+// CHECK-NOLIBC: "-lm"

androm3da wrote:

I may have done `-SAME` to excess. This test passes locally but fails on some 
of the bots because `hexagon-link` isn't on the same line as the subsequent 
`... crt0_standalone.o`.  Wouldn't have thought that behavior would be 
system-dependent but perhaps we can be less strict about this test.

https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-27 Thread via cfe-commits


@@ -401,6 +401,30 @@
 // CHECK338-NOT: "--end-group"
 // CHECK338: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
 
+// RUN: %clangxx -### -target hexagon-unknown-elf \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   -mcpu=hexagonv60 \
+// RUN:   -nolibc \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-NOLIBC %s
+// CHECK-NOLIBC: "-cc1"
+// CHECK-NOLIBC: {{hexagon-link|ld}}
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
+// CHECK-NOLIBC: 
"-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
+// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
+// CHECK-NOLIBC: "{{[^"]+}}.o"
+// CHECK-NOLIBC: "-lstdc++"
+// CHECK-NOLIBC: "-lm"

androm3da wrote:

> I'll tidy this test a bit first...

Oh whoops I didn't see this.  I'll rebase.

https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-27 Thread via cfe-commits

https://github.com/androm3da updated 
https://github.com/llvm/llvm-project/pull/67515

>From 87db8df7385b87f92f3bba2f80041e79039de78e Mon Sep 17 00:00:00 2001
From: Brian Cain 
Date: Wed, 27 Sep 2023 21:07:05 -0700
Subject: [PATCH 1/2] [clang][hexagon] Change driver tests to "--target="

`-target` has been deprecated, we can switch the tests to using `--target`
instead.
---
 clang/test/Driver/hexagon-hvx-ieee-fp.c |   6 +-
 clang/test/Driver/hexagon-hvx-qfloat.c  |   6 +-
 clang/test/Driver/hexagon-hvx.c | 174 ++--
 clang/test/Driver/hexagon-long-calls.c  |   6 +-
 clang/test/Driver/hexagon-memops.c  |   4 +-
 clang/test/Driver/hexagon-nvj.c |   4 +-
 clang/test/Driver/hexagon-nvs.c |   4 +-
 clang/test/Driver/hexagon-packets.c |   4 +-
 clang/test/Driver/hexagon-toolchain-elf.c   |  86 +-
 clang/test/Driver/hexagon-toolchain-linux.c |  20 +--
 clang/test/Driver/hexagon-vectorize.c   |   8 +-
 11 files changed, 161 insertions(+), 161 deletions(-)

diff --git a/clang/test/Driver/hexagon-hvx-ieee-fp.c 
b/clang/test/Driver/hexagon-hvx-ieee-fp.c
index 4166d640b6faa51..0e502941d62a999 100644
--- a/clang/test/Driver/hexagon-hvx-ieee-fp.c
+++ b/clang/test/Driver/hexagon-hvx-ieee-fp.c
@@ -2,13 +2,13 @@
 // Tests for the hvx ieee fp feature and errors.
 // 
-
 
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv68 -mhvx 
-mhvx-ieee-fp \
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv68 -mhvx 
-mhvx-ieee-fp \
 // RUN:  2>&1 | FileCheck -check-prefix=CHECK-IEEEFP %s
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv66 -mhvx=v68 
-mhvx-ieee-fp \
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv66 -mhvx=v68 
-mhvx-ieee-fp \
 // RUN:  2>&1 | FileCheck -check-prefix=CHECK-IEEEFP %s
 // CHECK-IEEEFP: "-target-feature" "+hvx-ieee-fp"
 
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv68 -mhvx 
-mhvx-ieee-fp \
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv68 -mhvx 
-mhvx-ieee-fp \
 // RUN:  -mno-hvx-ieee-fp 2>&1 | FileCheck -check-prefix=CHECK-NO-IEEEFP %s
 // CHECK-NO-IEEEFP: "-target-feature" "-hvx-ieee-fp"
 
diff --git a/clang/test/Driver/hexagon-hvx-qfloat.c 
b/clang/test/Driver/hexagon-hvx-qfloat.c
index ac3de8ded16ebd6..f3662da040a8fcf 100644
--- a/clang/test/Driver/hexagon-hvx-qfloat.c
+++ b/clang/test/Driver/hexagon-hvx-qfloat.c
@@ -2,13 +2,13 @@
 // Tests for the hvx qfloat feature and errors.
 // 
-
 
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv68 -mhvx -mhvx-qfloat 
\
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv68 -mhvx 
-mhvx-qfloat \
 // RUN:  2>&1 | FileCheck -check-prefix=CHECK-QFLOAT %s
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv66 -mhvx=v68 
-mhvx-qfloat \
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv66 -mhvx=v68 
-mhvx-qfloat \
 // RUN:  2>&1 | FileCheck -check-prefix=CHECK-QFLOAT %s
 // CHECK-QFLOAT: "-target-feature" "+hvx-qfloat"
 
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv68 -mhvx -mhvx-qfloat 
\
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv68 -mhvx 
-mhvx-qfloat \
 // RUN:  -mno-hvx-qfloat 2>&1 | FileCheck -check-prefix=CHECK-NO-QFLOAT %s
 // CHECK-NO-QFLOAT: "-target-feature" "-hvx-qfloat"
 
diff --git a/clang/test/Driver/hexagon-hvx.c b/clang/test/Driver/hexagon-hvx.c
index b57cc22515c2979..d21d88701ba5eff 100644
--- a/clang/test/Driver/hexagon-hvx.c
+++ b/clang/test/Driver/hexagon-hvx.c
@@ -8,31 +8,31 @@
 // CHECK-HVX-ON-NOT:  "-target-feature" "-hvx
 // CHECK-HVX-OFF-NOT: "-target-feature" "+hvx
 
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv5 \
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv5 \
 // RUN:  2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv55 \
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv55 \
 // RUN:  2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 \
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv60 \
 // RUN:  2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 \
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv62 \
 // RUN:  2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 \
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv65 \
 // RUN:  2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv66 \
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv66 \
 // RUN:  2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s
-// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv67 \
+// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv67 \
 // 

[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-27 Thread Fangrui Song via cfe-commits


@@ -401,6 +401,30 @@
 // CHECK338-NOT: "--end-group"
 // CHECK338: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
 
+// RUN: %clangxx -### -target hexagon-unknown-elf \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   -mcpu=hexagonv60 \

MaskRay wrote:

These files wrap too quickly. Most tests pack more than one options on one line 
and don't start a new line just for `%s 2>&1`.

https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-27 Thread Fangrui Song via cfe-commits


@@ -401,6 +401,30 @@
 // CHECK338-NOT: "--end-group"
 // CHECK338: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
 
+// RUN: %clangxx -### -target hexagon-unknown-elf \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   -mcpu=hexagonv60 \
+// RUN:   -nolibc \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-NOLIBC %s
+// CHECK-NOLIBC: "-cc1"
+// CHECK-NOLIBC: {{hexagon-link|ld}}
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
+// CHECK-NOLIBC: 
"-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
+// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
+// CHECK-NOLIBC: "{{[^"]+}}.o"
+// CHECK-NOLIBC: "-lstdc++"
+// CHECK-NOLIBC: "-lm"

MaskRay wrote:

Use -SAME whether applicable.

I'll tidy this test a bit first...

https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-27 Thread Fangrui Song via cfe-commits


@@ -401,6 +401,30 @@
 // CHECK338-NOT: "--end-group"
 // CHECK338: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
 
+// RUN: %clangxx -### -target hexagon-unknown-elf \

MaskRay wrote:

use `--target=` for new tests.
`-target ` has been deprecated since Clang 3.4

https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-27 Thread Krzysztof Parzyszek via cfe-commits

https://github.com/kparzysz-quic approved this pull request.


https://github.com/llvm/llvm-project/pull/67515
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][hexagon] Add support for -nolibc (PR #67515)

2023-09-26 Thread via cfe-commits

https://github.com/androm3da created 
https://github.com/llvm/llvm-project/pull/67515

None

>From 41a8826e647917042e8e5eaf0922f60e16d98839 Mon Sep 17 00:00:00 2001
From: Brian Cain 
Date: Tue, 26 Sep 2023 19:57:47 -0700
Subject: [PATCH] [clang][hexagon] Add support for -nolibc

---
 clang/lib/Driver/ToolChains/Hexagon.cpp |  6 +++--
 clang/test/Driver/hexagon-toolchain-elf.c   | 26 -
 clang/test/Driver/hexagon-toolchain-linux.c | 12 ++
 3 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp 
b/clang/lib/Driver/ToolChains/Hexagon.cpp
index e7dca1053dc8d8a..d81e022708932f7 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -377,7 +377,8 @@ constructHexagonLinkArgs(Compilation , const JobAction 
,
 linkXRayRuntimeDeps(HTC, Args, CmdArgs);
 
   CmdArgs.push_back("-lclang_rt.builtins-hexagon");
-  CmdArgs.push_back("-lc");
+  if (!Args.hasArg(options::OPT_nolibc))
+CmdArgs.push_back("-lc");
 }
 if (D.CCCIsCXX()) {
   if (HTC.ShouldLinkCXXStdlib(Args))
@@ -470,7 +471,8 @@ constructHexagonLinkArgs(Compilation , const JobAction 
,
 if (!IsShared) {
   for (StringRef Lib : OsLibs)
 CmdArgs.push_back(Args.MakeArgString("-l" + Lib));
-  CmdArgs.push_back("-lc");
+  if (!Args.hasArg(options::OPT_nolibc))
+CmdArgs.push_back("-lc");
 }
 CmdArgs.push_back("-lgcc");
 
diff --git a/clang/test/Driver/hexagon-toolchain-elf.c 
b/clang/test/Driver/hexagon-toolchain-elf.c
index 039b87347436d51..48b9aa2c22bffaa 100644
--- a/clang/test/Driver/hexagon-toolchain-elf.c
+++ b/clang/test/Driver/hexagon-toolchain-elf.c
@@ -330,7 +330,7 @@
 // CHECK335: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/G0/fini.o"
 
 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-
-// -nostdlib, -nostartfiles, -nodefaultlibs
+// -nostdlib, -nostartfiles, -nodefaultlibs, -nolibc
 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-
 // RUN: %clangxx -### -target hexagon-unknown-elf \
 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
@@ -401,6 +401,30 @@
 // CHECK338-NOT: "--end-group"
 // CHECK338: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
 
+// RUN: %clangxx -### -target hexagon-unknown-elf \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   -mcpu=hexagonv60 \
+// RUN:   -nolibc \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-NOLIBC %s
+// CHECK-NOLIBC: "-cc1"
+// CHECK-NOLIBC: {{hexagon-link|ld}}
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
+// CHECK-NOLIBC: 
"-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
+// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
+// CHECK-NOLIBC: "{{[^"]+}}.o"
+// CHECK-NOLIBC: "-lstdc++"
+// CHECK-NOLIBC: "-lm"
+// CHECK-NOLIBC: "--start-group"
+// CHECK-NOLIBC: "-lstandalone"
+// CHECK-NOLIBC-NOT: "-lc"
+// CHECK-NOLIBC: "-lgcc"
+// CHECK-NOLIBC: "--end-group"
+// CHECK-NOLIBC: 
"{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
+
+
 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-
 // -moslib
 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-
diff --git a/clang/test/Driver/hexagon-toolchain-linux.c 
b/clang/test/Driver/hexagon-toolchain-linux.c
index 423306affdce3ac..90a92900020fcda 100644
--- a/clang/test/Driver/hexagon-toolchain-linux.c
+++ b/clang/test/Driver/hexagon-toolchain-linux.c
@@ -68,6 +68,18 @@
 // CHECK004-NOT:   "-lclang_rt.builtins-hexagon"
 // CHECK004-NOT:   "-lc"
 // 
-
+// Passing --musl -nolibc
+// 
-
+// RUN: %clang -### -target hexagon-unknown-linux-musl \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   -mcpu=hexagonv60 \
+// RUN:   --sysroot=%S/Inputs/basic_linux_libcxx_tree -nolibc \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-NOLIBC %s
+// CHECK-NOLIBC:   
"-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1"
+// CHECK-NOLIBC:   
"{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o"
+// CHECK-NOLIBC-NOT:   "-lc"
+// 
-
 // Not Passing -fno-use-init-array when musl is selected
 // 
-
 // RUN: %clang -### -target hexagon-unknown-linux-musl \