[PATCH] D53038: [Hexagon] Use GetLinkerPath method instead of hard-coded linker name.
sidneym created this revision. sidneym added reviewers: shankare, ruiu, kparzysz, bcain. Herald added a subscriber: cfe-commits. Use GetLinkerPath method instead of hard-coding linker name. Change should allow -fuse-ld to work on the Hexagon target. Repository: rC Clang https://reviews.llvm.org/D53038 Files: lib/Driver/ToolChains/Hexagon.cpp lib/Driver/ToolChains/Hexagon.h Index: lib/Driver/ToolChains/Hexagon.h === --- lib/Driver/ToolChains/Hexagon.h +++ lib/Driver/ToolChains/Hexagon.h @@ -81,6 +81,9 @@ void addLibStdCxxIncludePaths( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; + + const char *getDefaultLinker() const override { return "hexagon-link"; } + CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; StringRef GetGCCLibAndIncVersion() const { return GCCLibAndIncVersion.Text; } Index: lib/Driver/ToolChains/Hexagon.cpp === --- lib/Driver/ToolChains/Hexagon.cpp +++ lib/Driver/ToolChains/Hexagon.cpp @@ -369,9 +369,8 @@ constructHexagonLinkArgs(C, JA, HTC, Output, Inputs, Args, CmdArgs, LinkingOutput); - std::string Linker = HTC.GetProgramPath("hexagon-link"); - C.addCommand(llvm::make_unique(JA, *this, Args.MakeArgString(Linker), - CmdArgs, Inputs)); + const char *Exec = Args.MakeArgString(HTC.GetLinkerPath()); + C.addCommand(llvm::make_unique(JA, *this, Exec, CmdArgs, Inputs)); } // Hexagon tools end. Index: lib/Driver/ToolChains/Hexagon.h === --- lib/Driver/ToolChains/Hexagon.h +++ lib/Driver/ToolChains/Hexagon.h @@ -81,6 +81,9 @@ void addLibStdCxxIncludePaths( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; + + const char *getDefaultLinker() const override { return "hexagon-link"; } + CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; StringRef GetGCCLibAndIncVersion() const { return GCCLibAndIncVersion.Text; } Index: lib/Driver/ToolChains/Hexagon.cpp === --- lib/Driver/ToolChains/Hexagon.cpp +++ lib/Driver/ToolChains/Hexagon.cpp @@ -369,9 +369,8 @@ constructHexagonLinkArgs(C, JA, HTC, Output, Inputs, Args, CmdArgs, LinkingOutput); - std::string Linker = HTC.GetProgramPath("hexagon-link"); - C.addCommand(llvm::make_unique(JA, *this, Args.MakeArgString(Linker), - CmdArgs, Inputs)); + const char *Exec = Args.MakeArgString(HTC.GetLinkerPath()); + C.addCommand(llvm::make_unique(JA, *this, Exec, CmdArgs, Inputs)); } // Hexagon tools end. ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D53038: [Hexagon] Use GetLinkerPath method instead of hard-coded linker name.
This revision was automatically updated to reflect the committed changes. Closed by commit rC344147: [Hexagon] Use GetLinkerPath instead of hard-coded string. (authored by sidneym, committed by ). Repository: rC Clang https://reviews.llvm.org/D53038 Files: lib/Driver/ToolChains/Hexagon.cpp lib/Driver/ToolChains/Hexagon.h Index: lib/Driver/ToolChains/Hexagon.cpp === --- lib/Driver/ToolChains/Hexagon.cpp +++ lib/Driver/ToolChains/Hexagon.cpp @@ -369,9 +369,8 @@ constructHexagonLinkArgs(C, JA, HTC, Output, Inputs, Args, CmdArgs, LinkingOutput); - std::string Linker = HTC.GetProgramPath("hexagon-link"); - C.addCommand(llvm::make_unique(JA, *this, Args.MakeArgString(Linker), - CmdArgs, Inputs)); + const char *Exec = Args.MakeArgString(HTC.GetLinkerPath()); + C.addCommand(llvm::make_unique(JA, *this, Exec, CmdArgs, Inputs)); } // Hexagon tools end. Index: lib/Driver/ToolChains/Hexagon.h === --- lib/Driver/ToolChains/Hexagon.h +++ lib/Driver/ToolChains/Hexagon.h @@ -81,6 +81,9 @@ void addLibStdCxxIncludePaths( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; + + const char *getDefaultLinker() const override { return "hexagon-link"; } + CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; StringRef GetGCCLibAndIncVersion() const { return GCCLibAndIncVersion.Text; } Index: lib/Driver/ToolChains/Hexagon.cpp === --- lib/Driver/ToolChains/Hexagon.cpp +++ lib/Driver/ToolChains/Hexagon.cpp @@ -369,9 +369,8 @@ constructHexagonLinkArgs(C, JA, HTC, Output, Inputs, Args, CmdArgs, LinkingOutput); - std::string Linker = HTC.GetProgramPath("hexagon-link"); - C.addCommand(llvm::make_unique(JA, *this, Args.MakeArgString(Linker), - CmdArgs, Inputs)); + const char *Exec = Args.MakeArgString(HTC.GetLinkerPath()); + C.addCommand(llvm::make_unique(JA, *this, Exec, CmdArgs, Inputs)); } // Hexagon tools end. Index: lib/Driver/ToolChains/Hexagon.h === --- lib/Driver/ToolChains/Hexagon.h +++ lib/Driver/ToolChains/Hexagon.h @@ -81,6 +81,9 @@ void addLibStdCxxIncludePaths( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; + + const char *getDefaultLinker() const override { return "hexagon-link"; } + CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; StringRef GetGCCLibAndIncVersion() const { return GCCLibAndIncVersion.Text; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D53038: [Hexagon] Use GetLinkerPath method instead of hard-coded linker name.
sidneym added a comment. Seems like the test cases do not consider the possibility of CLANG_DEFAULT_LINKER being set. If CLANG_DEFAULT_LINKER was set to "hexagon-link" these tests would probably pass. I'm checking this out now. Repository: rC Clang https://reviews.llvm.org/D53038 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D53219: Update hexagon driver tests
sidneym created this revision. sidneym added reviewers: bcain, davezarzycki, kparzysz, shankare. Herald added a subscriber: cfe-commits. Don't assume the linker is hexagon-link. https://reviews.llvm.org/D53038 removed the hard-coded name so now it is possible for the other named linkers to be used. Assume either hexagon-link or *ld*. Repository: rC Clang https://reviews.llvm.org/D53219 Files: test/Driver/hexagon-toolchain-elf.c test/Driver/linux-ld.c Index: test/Driver/linux-ld.c === --- test/Driver/linux-ld.c +++ test/Driver/linux-ld.c @@ -879,7 +879,7 @@ // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=hexagon-linux-gnu \ // RUN: | FileCheck --check-prefix=CHECK-HEXAGON %s -// CHECK-HEXAGON: "{{.*}}hexagon-link{{(.exe)?}}" +// CHECK-HEXAGON: "{{.*}}{{hexagon-link|ld}}{{(.exe)?}}" // CHECK-HEXAGON-NOT: "--hash-style={{gnu|both}}" // // Check that we do not pass --hash-style=gnu and --hash-style=both to linker Index: test/Driver/hexagon-toolchain-elf.c === --- test/Driver/hexagon-toolchain-elf.c +++ test/Driver/hexagon-toolchain-elf.c @@ -63,7 +63,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK020 %s // CHECK020: "-cc1" {{.*}} "-target-cpu" "hexagonv4" -// CHECK020: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v4/crt0 +// CHECK020: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v4/crt0 // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ @@ -71,7 +71,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK021 %s // CHECK021: "-cc1" {{.*}} "-target-cpu" "hexagonv5" -// CHECK021: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v5/crt0 +// CHECK021: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v5/crt0 // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ @@ -79,7 +79,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK022 %s // CHECK022: "-cc1" {{.*}} "-target-cpu" "hexagonv55" -// CHECK022: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v55/crt0 +// CHECK022: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v55/crt0 // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ @@ -87,7 +87,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK023 %s // CHECK023: "-cc1" {{.*}} "-target-cpu" "hexagonv60" -// CHECK023: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0 +// CHECK023: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0 // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ @@ -95,7 +95,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK024 %s // CHECK024: "-cc1" {{.*}} "-target-cpu" "hexagonv62" -// CHECK024: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v62/crt0 +// CHECK024: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v62/crt0 // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ @@ -103,7 +103,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK025 %s // CHECK025: "-cc1" {{.*}} "-target-cpu" "hexagonv65" -// CHECK025: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v65/crt0 +// CHECK025: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v65/crt0 // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ @@ -111,7 +111,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK026 %s // CHECK026-NOT: "-ffp-contract=fast" -// CHECK026: hexagon-link +// CHECK026: {{hexagon-link|ld}} // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ @@ -119,7 +119,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK027 %s // CHECK027-NOT: "-ffp-contract=fast" -// CHECK027: hexagon-link +// CHECK027: {{hexagon-link|ld}} // - // Test Linker related args @@ -134,7 +134,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK030 %s // CHECK030: "-cc1" -// CHECK030-NEXT: hexagon-link +// CHECK030: {{hexagon-link|ld}} // CHECK030-NOT: "-static" // CHECK030-NOT: "-shared" // CHECK030: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o" @@ -155,7 +155,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK031 %s // CHECK031: "-cc1" -// CHECK031-NEX
[PATCH] D53038: [Hexagon] Use GetLinkerPath method instead of hard-coded linker name.
sidneym added a comment. I updated the tests: https://reviews.llvm.org/D53219 Repository: rC Clang https://reviews.llvm.org/D53038 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D53219: Update hexagon driver tests
This revision was automatically updated to reflect the committed changes. Closed by commit rL344482: [Hexagon] Update tests account for non-hardcoded linker name. (authored by sidneym, committed by ). Changed prior to commit: https://reviews.llvm.org/D53219?vs=169491&id=169608#toc Repository: rL LLVM https://reviews.llvm.org/D53219 Files: cfe/trunk/test/Driver/hexagon-toolchain-elf.c cfe/trunk/test/Driver/linux-ld.c Index: cfe/trunk/test/Driver/hexagon-toolchain-elf.c === --- cfe/trunk/test/Driver/hexagon-toolchain-elf.c +++ cfe/trunk/test/Driver/hexagon-toolchain-elf.c @@ -63,63 +63,63 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK020 %s // CHECK020: "-cc1" {{.*}} "-target-cpu" "hexagonv4" -// CHECK020: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v4/crt0 +// CHECK020: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v4/crt0 // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv5 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK021 %s // CHECK021: "-cc1" {{.*}} "-target-cpu" "hexagonv5" -// CHECK021: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v5/crt0 +// CHECK021: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v5/crt0 // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv55 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK022 %s // CHECK022: "-cc1" {{.*}} "-target-cpu" "hexagonv55" -// CHECK022: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v55/crt0 +// CHECK022: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v55/crt0 // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv60 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK023 %s // CHECK023: "-cc1" {{.*}} "-target-cpu" "hexagonv60" -// CHECK023: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0 +// CHECK023: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0 // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv62 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK024 %s // CHECK024: "-cc1" {{.*}} "-target-cpu" "hexagonv62" -// CHECK024: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v62/crt0 +// CHECK024: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v62/crt0 // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv65 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK025 %s // CHECK025: "-cc1" {{.*}} "-target-cpu" "hexagonv65" -// CHECK025: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v65/crt0 +// CHECK025: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v65/crt0 // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -O3 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK026 %s // CHECK026-NOT: "-ffp-contract=fast" -// CHECK026: hexagon-link +// CHECK026: {{hexagon-link|ld}} // RUN: %clang -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -O3 -ffp-contract=off \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK027 %s // CHECK027-NOT: "-ffp-contract=fast" -// CHECK027: hexagon-link +// CHECK027: {{hexagon-link|ld}} // - // Test Linker related args @@ -134,7 +134,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK030 %s // CHECK030: "-cc1" -// CHECK030-NEXT: hexagon-link +// CHECK030: {{hexagon-link|ld}} // CHECK030-NOT: "-static" // CHECK030-NOT: "-shared" // CHECK030: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o" @@ -155,7 +155,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK031 %s // CHECK031: "-cc1" -// CHECK031-NEXT: hexagon-link +// CHECK031: {{hexagon-link|ld}} // CHECK031-NOT: "-static" // CHECK031-NOT: "-shared" // CHECK031: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o" @@ -178,7 +178,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK032 %s // CHECK032: "-cc1" -// CHECK032-NEXT: hexagon-link +// CHECK032: {{hexagon-link|ld}} // CHECK032-NOT: "-static" // CHECK032-NOT: "-shared" // CHECK032: "{{.*}}/Inputs/hexagon_tree/Tools/bin
[PATCH] D53249: Force Hexagon to use default (hexagon-link) linker
sidneym added a comment. https://reviews.llvm.org/D53219 added a check for either hexagon-ld or ld. I merged that change earlier today. I can change the test to pass -fuse-ld, let me know. Thanks, Repository: rC Clang https://reviews.llvm.org/D53249 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D53327: [Hexagon] Use -fuse-ld update checks.
sidneym created this revision. sidneym added reviewers: phosek, rsmith, kparzysz, bcain. Herald added a subscriber: cfe-commits. Use -fuse-ld to explicitly name the linker. Replace checks for hexagon-link | ld to just "hexagon-link", the name of the explicitly chosen linker. Repository: rC Clang https://reviews.llvm.org/D53327 Files: test/Driver/hexagon-toolchain-elf.c test/Driver/linux-ld.c Index: test/Driver/linux-ld.c === --- test/Driver/linux-ld.c +++ test/Driver/linux-ld.c @@ -876,10 +876,10 @@ // // Check that we do not pass --hash-style=gnu or --hash-style=both to // hexagon linux linker -// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: %clang %s -### -o %t.o -fuse-ld=hexagon-link 2>&1 \ // RUN: --target=hexagon-linux-gnu \ // RUN: | FileCheck --check-prefix=CHECK-HEXAGON %s -// CHECK-HEXAGON: "{{.*}}{{hexagon-link|ld}}{{(.exe)?}}" +// CHECK-HEXAGON: "{{.*}}hexagon-link{{(.exe)?}}" // CHECK-HEXAGON-NOT: "--hash-style={{gnu|both}}" // // Check that we do not pass --hash-style=gnu and --hash-style=both to linker Index: test/Driver/hexagon-toolchain-elf.c === --- test/Driver/hexagon-toolchain-elf.c +++ test/Driver/hexagon-toolchain-elf.c @@ -57,69 +57,69 @@ // - // Test -mcpu= -mv // - -// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: %clang -### -target hexagon-unknown-elf -fuse-ld=hexagon-link \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv4 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK020 %s // CHECK020: "-cc1" {{.*}} "-target-cpu" "hexagonv4" -// CHECK020: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v4/crt0 +// CHECK020: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v4/crt0 -// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: %clang -### -target hexagon-unknown-elf -fuse-ld=hexagon-link \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv5 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK021 %s // CHECK021: "-cc1" {{.*}} "-target-cpu" "hexagonv5" -// CHECK021: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v5/crt0 +// CHECK021: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v5/crt0 -// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: %clang -### -target hexagon-unknown-elf -fuse-ld=hexagon-link \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv55 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK022 %s // CHECK022: "-cc1" {{.*}} "-target-cpu" "hexagonv55" -// CHECK022: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v55/crt0 +// CHECK022: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v55/crt0 -// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: %clang -### -target hexagon-unknown-elf -fuse-ld=hexagon-link \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv60 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK023 %s // CHECK023: "-cc1" {{.*}} "-target-cpu" "hexagonv60" -// CHECK023: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0 +// CHECK023: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0 -// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: %clang -### -target hexagon-unknown-elf -fuse-ld=hexagon-link \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv62 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK024 %s // CHECK024: "-cc1" {{.*}} "-target-cpu" "hexagonv62" -// CHECK024: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v62/crt0 +// CHECK024: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v62/crt0 -// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: %clang -### -target hexagon-unknown-elf -fuse-ld=hexagon-link \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv65 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK025 %s // CHECK025: "-cc1" {{.*}} "-target-cpu" "hexagonv65" -// CHECK025: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v65/crt0 +// CHECK025: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v65/crt0 -// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: %clang -### -target hexagon-unknown-elf -fuse-ld=hexagon-link \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -O3 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-
[PATCH] D61130: [llvm-mc] Add reportWarning() to MCContext
sidneym accepted this revision. sidneym added a comment. This revision is now accepted and ready to land. LGTM Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61130/new/ https://reviews.llvm.org/D61130 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D77440: [Hexagon] Update include paths for linux/musl
sidneym created this revision. sidneym added reviewers: kparzysz, bcain, bcahoon, adasgupt. Herald added a project: clang. Herald added a subscriber: cfe-commits. Update CXX paths for linux/musl. And update the sysroot expectation to match other targets. At this point I might pull out the linux/musl stuff that is in hexagon-toolchain-elf.c and create a new file, hexagon-toolchain-linux.c putting the linux/musl test there. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D77440 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/lib/Driver/ToolChains/Hexagon.h clang/test/Driver/Inputs/hexagon_tree/Tools/target/hexagon/include/c++/v1/readme clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -587,7 +587,7 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK083 %s // CHECK083: "-isysroot" "/hexagon" -// CHECK083: "-internal-externc-isystem" "/hexagon{{/|}}include" +// CHECK083: "-internal-externc-isystem" "/hexagon{{/|}}usr{{/|}}include" // - // Passing -fno-use-init-array // - @@ -604,12 +604,12 @@ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv60 \ // RUN: -fuse-ld=lld \ -// RUN: --sysroot=/hexagon \ +// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK085 %s -// CHECK085-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK085-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crti.o // CHECK085: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" -// CHECK085: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK085: "{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o" // CHECK085: "-lclang_rt.builtins-hexagon" "-lc" // - // Passing --musl --shared @@ -617,25 +617,25 @@ // RUN: %clang -### -target hexagon-unknown-linux-musl \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv60 \ -// RUN: --sysroot=/hexagon -shared \ +// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -shared \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK086 %s // CHECK086-NOT:-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1 -// CHECK086:"/hexagon{{/|}}lib{{/|}}Scrt1.o" +// CHECK086:"{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crti.o" // CHECK086:"-lclang_rt.builtins-hexagon" "-lc" -// CHECK086-NOT:/hexagon{{/|}}lib{{/|}}crt1.o +// CHECK086-NOT:{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o // - // Passing --musl -nostdlib // - // RUN: %clang -### -target hexagon-unknown-linux-musl \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv60 \ -// RUN: --sysroot=/hexagon -nostdlib \ +// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -nostdlib \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK087 %s // CHECK087: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" -// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o -// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK087-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crti.o +// CHECK087-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o // CHECK087-NOT: -lclang_rt.builtins-hexagon // CHECK087-NOT: -lc // - @@ -644,12 +644,12 @@ // RUN: %clang -### -target hexagon-unknown-linux-musl \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ // RUN: -mcpu=hexagonv60 \ -// RUN: --sysroot=/hexagon -nostartfiles \ +// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -nostartfiles \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK088 %s // CHECK088: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" -// CHECK088-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o -// CHECK088-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK088-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}Scrt1.o +// CHECK088-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o // CHECK088: "-lclang_rt.builtins-hexagon" "-lc" // --
[PATCH] D77498: [Hexagon] Select lld as the default linker for linux-musl target
sidneym created this revision. sidneym added reviewers: adasgupt, bcain, kparzysz, bcahoon, shankare. Herald added a project: clang. Herald added a subscriber: cfe-commits. When the target is hexagon-unknown-linux-musl select lld as the default linker. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D77498 Files: clang/lib/Driver/ToolChains/Hexagon.h clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -674,3 +674,15 @@ // RUN: | FileCheck -check-prefix=CHECK090 %s // CHECK090-NOT: -fno-use-init-array // - +// Check default linker for musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK091 %s +// CHECK091: ld.lld +// - +// Check default linker for elf +// - +// RUN: %clang -### -target hexagon-unknown-elf %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK092 %s +// CHECK092: hexagon-link +// - Index: clang/lib/Driver/ToolChains/Hexagon.h === --- clang/lib/Driver/ToolChains/Hexagon.h +++ clang/lib/Driver/ToolChains/Hexagon.h @@ -81,7 +81,9 @@ const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; - const char *getDefaultLinker() const override { return "hexagon-link"; } + const char *getDefaultLinker() const override { +return getTriple().isMusl() ? "ld.lld" : "hexagon-link"; + } CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -674,3 +674,15 @@ // RUN: | FileCheck -check-prefix=CHECK090 %s // CHECK090-NOT: -fno-use-init-array // - +// Check default linker for musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK091 %s +// CHECK091: ld.lld +// - +// Check default linker for elf +// - +// RUN: %clang -### -target hexagon-unknown-elf %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK092 %s +// CHECK092: hexagon-link +// - Index: clang/lib/Driver/ToolChains/Hexagon.h === --- clang/lib/Driver/ToolChains/Hexagon.h +++ clang/lib/Driver/ToolChains/Hexagon.h @@ -81,7 +81,9 @@ const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; - const char *getDefaultLinker() const override { return "hexagon-link"; } + const char *getDefaultLinker() const override { +return getTriple().isMusl() ? "ld.lld" : "hexagon-link"; + } CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D77498: [Hexagon] Select lld as the default linker for linux-musl target
This revision was automatically updated to reflect the committed changes. Closed by commit rG2c5d6dfda98e: [Hexagon] Make lld be the default linker for linux/musl (authored by sidneym). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77498/new/ https://reviews.llvm.org/D77498 Files: clang/lib/Driver/ToolChains/Hexagon.h clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -674,3 +674,15 @@ // RUN: | FileCheck -check-prefix=CHECK090 %s // CHECK090-NOT: -fno-use-init-array // - +// Check default linker for musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK091 %s +// CHECK091: ld.lld +// - +// Check default linker for elf +// - +// RUN: %clang -### -target hexagon-unknown-elf %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK092 %s +// CHECK092: hexagon-link +// - Index: clang/lib/Driver/ToolChains/Hexagon.h === --- clang/lib/Driver/ToolChains/Hexagon.h +++ clang/lib/Driver/ToolChains/Hexagon.h @@ -81,7 +81,9 @@ const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; - const char *getDefaultLinker() const override { return "hexagon-link"; } + const char *getDefaultLinker() const override { +return getTriple().isMusl() ? "ld.lld" : "hexagon-link"; + } CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -674,3 +674,15 @@ // RUN: | FileCheck -check-prefix=CHECK090 %s // CHECK090-NOT: -fno-use-init-array // - +// Check default linker for musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK091 %s +// CHECK091: ld.lld +// - +// Check default linker for elf +// - +// RUN: %clang -### -target hexagon-unknown-elf %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK092 %s +// CHECK092: hexagon-link +// - Index: clang/lib/Driver/ToolChains/Hexagon.h === --- clang/lib/Driver/ToolChains/Hexagon.h +++ clang/lib/Driver/ToolChains/Hexagon.h @@ -81,7 +81,9 @@ const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; - const char *getDefaultLinker() const override { return "hexagon-link"; } + const char *getDefaultLinker() const override { +return getTriple().isMusl() ? "ld.lld" : "hexagon-link"; + } CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D77440: [Hexagon] Update include paths for linux/musl
sidneym updated this revision to Diff 255655. sidneym added a comment. Herald added a subscriber: ormris. Break out linux parts of hexagon-toolchain-elf.c into hexagon-toolchain-linux.c Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77440/new/ https://reviews.llvm.org/D77440 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/lib/Driver/ToolChains/Hexagon.h clang/test/Driver/Inputs/hexagon_tree/Tools/target/hexagon/include/c++/v1/readme clang/test/Driver/hexagon-toolchain-elf.c clang/test/Driver/hexagon-toolchain-linux.c Index: clang/test/Driver/hexagon-toolchain-linux.c === --- /dev/null +++ clang/test/Driver/hexagon-toolchain-linux.c @@ -0,0 +1,101 @@ +// - +// Passing --musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK000 %s +// CHECK000-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crti.o +// CHECK000: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK000: "{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o" +// CHECK000: "-lclang_rt.builtins-hexagon" "-lc" +// - +// Passing --musl --shared +// - +// 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 -shared \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK001 %s +// CHECK001-NOT:-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1 +// CHECK001:"{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crti.o" +// CHECK001:"-lclang_rt.builtins-hexagon" "-lc" +// CHECK001-NOT:{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o +// - +// Passing --musl -nostdlib +// - +// 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 -nostdlib \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK002 %s +// CHECK002: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK002-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crti.o +// CHECK002-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o +// CHECK002-NOT: -lclang_rt.builtins-hexagon +// CHECK002-NOT: -lc +// - +// Passing --musl -nostartfiles +// - +// 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 -nostartfiles \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK003 %s +// CHECK003: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK003-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}Scrt1.o +// CHECK003-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o +// CHECK003: "-lclang_rt.builtins-hexagon" "-lc" +// - +// Passing --musl -nodefaultlibs +// - +// 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 -nodefaultlibs \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK004 %s +// CHECK004: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK004: "{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o" +// CHECK004-NOT: -lclang_rt.builtins-hexagon +// CHECK004-NOT: -lc +// - +// Not Passing -fno-use-init-array when musl is selected +// - +// RU
[PATCH] D77440: [Hexagon] Update include paths for linux/musl
sidneym updated this revision to Diff 255680. sidneym added a comment. Fix formatting issues. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77440/new/ https://reviews.llvm.org/D77440 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/lib/Driver/ToolChains/Hexagon.h clang/test/Driver/Inputs/hexagon_tree/Tools/target/hexagon/include/c++/v1/readme clang/test/Driver/hexagon-toolchain-elf.c clang/test/Driver/hexagon-toolchain-linux.c Index: clang/test/Driver/hexagon-toolchain-linux.c === --- /dev/null +++ clang/test/Driver/hexagon-toolchain-linux.c @@ -0,0 +1,101 @@ +// - +// Passing --musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK000 %s +// CHECK000-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crti.o +// CHECK000: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK000: "{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o" +// CHECK000: "-lclang_rt.builtins-hexagon" "-lc" +// - +// Passing --musl --shared +// - +// 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 -shared \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK001 %s +// CHECK001-NOT:-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1 +// CHECK001:"{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crti.o" +// CHECK001:"-lclang_rt.builtins-hexagon" "-lc" +// CHECK001-NOT:{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o +// - +// Passing --musl -nostdlib +// - +// 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 -nostdlib \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK002 %s +// CHECK002: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK002-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crti.o +// CHECK002-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o +// CHECK002-NOT: -lclang_rt.builtins-hexagon +// CHECK002-NOT: -lc +// - +// Passing --musl -nostartfiles +// - +// 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 -nostartfiles \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK003 %s +// CHECK003: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK003-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}Scrt1.o +// CHECK003-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o +// CHECK003: "-lclang_rt.builtins-hexagon" "-lc" +// - +// Passing --musl -nodefaultlibs +// - +// 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 -nodefaultlibs \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK004 %s +// CHECK004: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK004: "{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o" +// CHECK004-NOT: -lclang_rt.builtins-hexagon +// CHECK004-NOT: -lc +// - +// Not Passing -fno-use-init-array when musl is selected +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/he
[PATCH] D77440: [Hexagon] Update include paths for linux/musl
This revision was automatically updated to reflect the committed changes. Closed by commit rGaed2fdb1671c: [Hexagon] Update paths for linux/musl (authored by sidneym). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77440/new/ https://reviews.llvm.org/D77440 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/lib/Driver/ToolChains/Hexagon.h clang/test/Driver/Inputs/hexagon_tree/Tools/target/hexagon/include/c++/v1/readme clang/test/Driver/hexagon-toolchain-elf.c clang/test/Driver/hexagon-toolchain-linux.c Index: clang/test/Driver/hexagon-toolchain-linux.c === --- /dev/null +++ clang/test/Driver/hexagon-toolchain-linux.c @@ -0,0 +1,101 @@ +// - +// Passing --musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK000 %s +// CHECK000-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crti.o +// CHECK000: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK000: "{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o" +// CHECK000: "-lclang_rt.builtins-hexagon" "-lc" +// - +// Passing --musl --shared +// - +// 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 -shared \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK001 %s +// CHECK001-NOT:-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1 +// CHECK001:"{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crti.o" +// CHECK001:"-lclang_rt.builtins-hexagon" "-lc" +// CHECK001-NOT:{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o +// - +// Passing --musl -nostdlib +// - +// 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 -nostdlib \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK002 %s +// CHECK002: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK002-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crti.o +// CHECK002-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o +// CHECK002-NOT: -lclang_rt.builtins-hexagon +// CHECK002-NOT: -lc +// - +// Passing --musl -nostartfiles +// - +// 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 -nostartfiles \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK003 %s +// CHECK003: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK003-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}Scrt1.o +// CHECK003-NOT: {{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o +// CHECK003: "-lclang_rt.builtins-hexagon" "-lc" +// - +// Passing --musl -nodefaultlibs +// - +// 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 -nodefaultlibs \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK004 %s +// CHECK004: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK004: "{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o" +// CHECK004-NOT: -lclang_rt.builtins-hexagon +// CHECK004-NOT: -lc +// - +// Not Passing -fno-use-init-array when musl is selected +// - +// RUN: %clang -### -tar
[PATCH] D77498: [Hexagon] Select lld as the default linker for linux-musl target
sidneym added a comment. These are new tests how do you get the generic lld driver to work? When I invoke it using just "lld" I need to add -flavor gnu or I get this error: Invoke ld.lld (Unix), ld64.lld (macOS), lld-link (Windows), wasm-ld (WebAssembly) instead Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77498/new/ https://reviews.llvm.org/D77498 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D77498: [Hexagon] Select lld as the default linker for linux-musl target
sidneym added a comment. Since this isn't something that can be always known in advance I think the testcase should just be removed. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77498/new/ https://reviews.llvm.org/D77498 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D77684: [Hexagon] Remove testcases that check for default linker.
sidneym created this revision. sidneym added reviewers: bcain, kparzysz, nathanchance, bcahoon. Herald added a project: clang. Herald added a subscriber: cfe-commits. These values are not always known since there is a configuration option to set the default linker, CLANG_DEFAULT_LINKER. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D77684 Files: clang/test/Driver/hexagon-toolchain-elf.c clang/test/Driver/hexagon-toolchain-linux.c Index: clang/test/Driver/hexagon-toolchain-linux.c === --- clang/test/Driver/hexagon-toolchain-linux.c +++ clang/test/Driver/hexagon-toolchain-linux.c @@ -95,7 +95,3 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK007 %s // CHECK007: "-internal-isystem" "{{.*}}hexagon{{/|}}include{{/|}}c++{{/|}}v1" -// - -// RUN: %clang -### -target hexagon-unknown-linux-musl %s 2>&1 \ -// RUN: | FileCheck -check-prefix=CHECK008 %s -// CHECK008: ld.lld Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -597,10 +597,3 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK084 %s // CHECK084: "-fno-use-init-array" -// - -// Check default linker for elf -// - -// RUN: %clang -### -target hexagon-unknown-elf %s 2>&1 \ -// RUN: | FileCheck -check-prefix=CHECK092 %s -// CHECK092: hexagon-link -// - Index: clang/test/Driver/hexagon-toolchain-linux.c === --- clang/test/Driver/hexagon-toolchain-linux.c +++ clang/test/Driver/hexagon-toolchain-linux.c @@ -95,7 +95,3 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK007 %s // CHECK007: "-internal-isystem" "{{.*}}hexagon{{/|}}include{{/|}}c++{{/|}}v1" -// - -// RUN: %clang -### -target hexagon-unknown-linux-musl %s 2>&1 \ -// RUN: | FileCheck -check-prefix=CHECK008 %s -// CHECK008: ld.lld Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -597,10 +597,3 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK084 %s // CHECK084: "-fno-use-init-array" -// - -// Check default linker for elf -// - -// RUN: %clang -### -target hexagon-unknown-elf %s 2>&1 \ -// RUN: | FileCheck -check-prefix=CHECK092 %s -// CHECK092: hexagon-link -// - ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D77684: [Hexagon] Remove testcases that check for default linker.
This revision was automatically updated to reflect the committed changes. Closed by commit rG9bda29ab0fdf: [Hexagon] Default linker tests can fail if CLANG_DEFAULT_LINKER is used. (authored by sidneym). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77684/new/ https://reviews.llvm.org/D77684 Files: clang/test/Driver/hexagon-toolchain-elf.c clang/test/Driver/hexagon-toolchain-linux.c Index: clang/test/Driver/hexagon-toolchain-linux.c === --- clang/test/Driver/hexagon-toolchain-linux.c +++ clang/test/Driver/hexagon-toolchain-linux.c @@ -95,7 +95,3 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK007 %s // CHECK007: "-internal-isystem" "{{.*}}hexagon{{/|}}include{{/|}}c++{{/|}}v1" -// - -// RUN: %clang -### -target hexagon-unknown-linux-musl %s 2>&1 \ -// RUN: | FileCheck -check-prefix=CHECK008 %s -// CHECK008: ld.lld Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -597,10 +597,3 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK084 %s // CHECK084: "-fno-use-init-array" -// - -// Check default linker for elf -// - -// RUN: %clang -### -target hexagon-unknown-elf %s 2>&1 \ -// RUN: | FileCheck -check-prefix=CHECK092 %s -// CHECK092: hexagon-link -// - Index: clang/test/Driver/hexagon-toolchain-linux.c === --- clang/test/Driver/hexagon-toolchain-linux.c +++ clang/test/Driver/hexagon-toolchain-linux.c @@ -95,7 +95,3 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK007 %s // CHECK007: "-internal-isystem" "{{.*}}hexagon{{/|}}include{{/|}}c++{{/|}}v1" -// - -// RUN: %clang -### -target hexagon-unknown-linux-musl %s 2>&1 \ -// RUN: | FileCheck -check-prefix=CHECK008 %s -// CHECK008: ld.lld Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -597,10 +597,3 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK084 %s // CHECK084: "-fno-use-init-array" -// - -// Check default linker for elf -// - -// RUN: %clang -### -target hexagon-unknown-elf %s 2>&1 \ -// RUN: | FileCheck -check-prefix=CHECK092 %s -// CHECK092: hexagon-link -// - ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D106737: DRAFT - [clang] [hexagon] Add resource include dir
sidneym added inline comments. Comment at: clang/lib/Driver/ToolChains/Hexagon.cpp:604 + const bool HasSysRoot = !D.SysRoot.empty(); + if (HasSysRoot) { SmallString<128> P(D.SysRoot); bcain wrote: > MaskRay wrote: > > To match Linux.cpp, this code block should be unconditional. > I *think* this is an intentional difference from `Linux.cpp` in order to suit > `hexagon-unknown-elf`. @sidneym do you think we need this conditional > behavior? The isMusl check is to distinguish between our internal c-library and musl c-library. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106737/new/ https://reviews.llvm.org/D106737 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D108083: add sanitizer support to hexagon
sidneym added inline comments. Comment at: compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc:124 + +bool internal_iserror(uptr retval, int *rverrno) { + if (retval == (uptr)-1) { bcain wrote: > @sidneym Can you confirm that this implementation looks correct? I thought > the convention was -1 for failed syscalls. Maybe it should be <0 instead. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D108083/new/ https://reviews.llvm.org/D108083 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D108178: [PATCH 8/8] [clang] enable sanitizers for hexagon
sidneym added a comment. LGTM Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D108178/new/ https://reviews.llvm.org/D108178 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D98436: [Hexagon] Support inlined use of cs0 and cs1
sidneym created this revision. sidneym added reviewers: bcain, kparzysz. Herald added a subscriber: hiraditya. sidneym requested review of this revision. Herald added projects: clang, LLVM. Herald added a subscriber: cfe-commits. Allow inline assembly to reference cs0 and cs1 registers. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D98436 Files: clang/lib/Basic/Targets/Hexagon.cpp llvm/lib/Target/Hexagon/HexagonISelLowering.cpp llvm/test/CodeGen/Hexagon/namedreg.ll Index: llvm/test/CodeGen/Hexagon/namedreg.ll === --- llvm/test/CodeGen/Hexagon/namedreg.ll +++ llvm/test/CodeGen/Hexagon/namedreg.ll @@ -4,10 +4,29 @@ %0 = call i32 @llvm.read_register.i32(metadata !0) ret i32 %0 } - declare i32 @llvm.read_register.i32(metadata) #1 +define dso_local i32 @rcs0() #0 { +entry: + %0 = call i32 @llvm.read_register.i32(metadata !1) + ret i32 %0 +} + +define dso_local i32 @rcs1() #0 { +entry: + %0 = call i32 @llvm.read_register.i32(metadata !2) + ret i32 %0 +} + + + !llvm.named.register.r19 = !{!0} +!llvm.named.register.cs0 = !{!1} +!llvm.named.register.cs1 = !{!2} !0 = !{!"r19"} +!1 = !{!"cs0"} +!2 = !{!"cs1"} ; CHECK: r0 = r19 +; CHECK: r0 = cs0 +; CHECK: r0 = cs1 Index: llvm/lib/Target/Hexagon/HexagonISelLowering.cpp === --- llvm/lib/Target/Hexagon/HexagonISelLowering.cpp +++ llvm/lib/Target/Hexagon/HexagonISelLowering.cpp @@ -308,6 +308,8 @@ .Case("m1", Hexagon::M1) .Case("usr", Hexagon::USR) .Case("ugp", Hexagon::UGP) + .Case("cs0", Hexagon::CS0) + .Case("cs1", Hexagon::CS1) .Default(Register()); if (Reg) return Reg; Index: clang/lib/Basic/Targets/Hexagon.cpp === --- clang/lib/Basic/Targets/Hexagon.cpp +++ clang/lib/Basic/Targets/Hexagon.cpp @@ -136,7 +136,7 @@ "r9", "r10", "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", "p0", "p1", "p2", "p3", -"sa0", "lc0", "sa1", "lc1", "m0", "m1", "usr", "ugp", +"sa0", "lc0", "sa1", "lc1", "m0", "m1", "usr", "ugp", "cs0", "cs1", "r1:0", "r3:2", "r5:4", "r7:6", "r9:8", "r11:10", "r13:12", "r15:14", "r17:16", "r19:18", "r21:20", "r23:22", "r25:24", "r27:26", "r29:28", "r31:30" Index: llvm/test/CodeGen/Hexagon/namedreg.ll === --- llvm/test/CodeGen/Hexagon/namedreg.ll +++ llvm/test/CodeGen/Hexagon/namedreg.ll @@ -4,10 +4,29 @@ %0 = call i32 @llvm.read_register.i32(metadata !0) ret i32 %0 } - declare i32 @llvm.read_register.i32(metadata) #1 +define dso_local i32 @rcs0() #0 { +entry: + %0 = call i32 @llvm.read_register.i32(metadata !1) + ret i32 %0 +} + +define dso_local i32 @rcs1() #0 { +entry: + %0 = call i32 @llvm.read_register.i32(metadata !2) + ret i32 %0 +} + + + !llvm.named.register.r19 = !{!0} +!llvm.named.register.cs0 = !{!1} +!llvm.named.register.cs1 = !{!2} !0 = !{!"r19"} +!1 = !{!"cs0"} +!2 = !{!"cs1"} ; CHECK: r0 = r19 +; CHECK: r0 = cs0 +; CHECK: r0 = cs1 Index: llvm/lib/Target/Hexagon/HexagonISelLowering.cpp === --- llvm/lib/Target/Hexagon/HexagonISelLowering.cpp +++ llvm/lib/Target/Hexagon/HexagonISelLowering.cpp @@ -308,6 +308,8 @@ .Case("m1", Hexagon::M1) .Case("usr", Hexagon::USR) .Case("ugp", Hexagon::UGP) + .Case("cs0", Hexagon::CS0) + .Case("cs1", Hexagon::CS1) .Default(Register()); if (Reg) return Reg; Index: clang/lib/Basic/Targets/Hexagon.cpp === --- clang/lib/Basic/Targets/Hexagon.cpp +++ clang/lib/Basic/Targets/Hexagon.cpp @@ -136,7 +136,7 @@ "r9", "r10", "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", "p0", "p1", "p2", "p3", -"sa0", "lc0", "sa1", "lc1", "m0", "m1", "usr", "ugp", +"sa0", "lc0", "sa1", "lc1", "m0", "m1", "usr", "ugp", "cs0", "cs1", "r1:0", "r3:2", "r5:4", "r7:6", "r9:8", "r11:10", "r13:12", "r15:14", "r17:16", "r19:18", "r21:20", "r23:22", "r25:24", "r27:26", "r29:28", "r31:30" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D98436: [Hexagon] Support inlined use of cs0 and cs1
sidneym updated this revision to Diff 330032. sidneym added a comment. Same patch, just added full context. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D98436/new/ https://reviews.llvm.org/D98436 Files: clang/lib/Basic/Targets/Hexagon.cpp llvm/lib/Target/Hexagon/HexagonISelLowering.cpp llvm/test/CodeGen/Hexagon/namedreg.ll Index: llvm/test/CodeGen/Hexagon/namedreg.ll === --- llvm/test/CodeGen/Hexagon/namedreg.ll +++ llvm/test/CodeGen/Hexagon/namedreg.ll @@ -4,10 +4,29 @@ %0 = call i32 @llvm.read_register.i32(metadata !0) ret i32 %0 } - declare i32 @llvm.read_register.i32(metadata) #1 +define dso_local i32 @rcs0() #0 { +entry: + %0 = call i32 @llvm.read_register.i32(metadata !1) + ret i32 %0 +} + +define dso_local i32 @rcs1() #0 { +entry: + %0 = call i32 @llvm.read_register.i32(metadata !2) + ret i32 %0 +} + + + !llvm.named.register.r19 = !{!0} +!llvm.named.register.cs0 = !{!1} +!llvm.named.register.cs1 = !{!2} !0 = !{!"r19"} +!1 = !{!"cs0"} +!2 = !{!"cs1"} ; CHECK: r0 = r19 +; CHECK: r0 = cs0 +; CHECK: r0 = cs1 Index: llvm/lib/Target/Hexagon/HexagonISelLowering.cpp === --- llvm/lib/Target/Hexagon/HexagonISelLowering.cpp +++ llvm/lib/Target/Hexagon/HexagonISelLowering.cpp @@ -308,6 +308,8 @@ .Case("m1", Hexagon::M1) .Case("usr", Hexagon::USR) .Case("ugp", Hexagon::UGP) + .Case("cs0", Hexagon::CS0) + .Case("cs1", Hexagon::CS1) .Default(Register()); if (Reg) return Reg; Index: clang/lib/Basic/Targets/Hexagon.cpp === --- clang/lib/Basic/Targets/Hexagon.cpp +++ clang/lib/Basic/Targets/Hexagon.cpp @@ -136,7 +136,7 @@ "r9", "r10", "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", "p0", "p1", "p2", "p3", -"sa0", "lc0", "sa1", "lc1", "m0", "m1", "usr", "ugp", +"sa0", "lc0", "sa1", "lc1", "m0", "m1", "usr", "ugp", "cs0", "cs1", "r1:0", "r3:2", "r5:4", "r7:6", "r9:8", "r11:10", "r13:12", "r15:14", "r17:16", "r19:18", "r21:20", "r23:22", "r25:24", "r27:26", "r29:28", "r31:30" Index: llvm/test/CodeGen/Hexagon/namedreg.ll === --- llvm/test/CodeGen/Hexagon/namedreg.ll +++ llvm/test/CodeGen/Hexagon/namedreg.ll @@ -4,10 +4,29 @@ %0 = call i32 @llvm.read_register.i32(metadata !0) ret i32 %0 } - declare i32 @llvm.read_register.i32(metadata) #1 +define dso_local i32 @rcs0() #0 { +entry: + %0 = call i32 @llvm.read_register.i32(metadata !1) + ret i32 %0 +} + +define dso_local i32 @rcs1() #0 { +entry: + %0 = call i32 @llvm.read_register.i32(metadata !2) + ret i32 %0 +} + + + !llvm.named.register.r19 = !{!0} +!llvm.named.register.cs0 = !{!1} +!llvm.named.register.cs1 = !{!2} !0 = !{!"r19"} +!1 = !{!"cs0"} +!2 = !{!"cs1"} ; CHECK: r0 = r19 +; CHECK: r0 = cs0 +; CHECK: r0 = cs1 Index: llvm/lib/Target/Hexagon/HexagonISelLowering.cpp === --- llvm/lib/Target/Hexagon/HexagonISelLowering.cpp +++ llvm/lib/Target/Hexagon/HexagonISelLowering.cpp @@ -308,6 +308,8 @@ .Case("m1", Hexagon::M1) .Case("usr", Hexagon::USR) .Case("ugp", Hexagon::UGP) + .Case("cs0", Hexagon::CS0) + .Case("cs1", Hexagon::CS1) .Default(Register()); if (Reg) return Reg; Index: clang/lib/Basic/Targets/Hexagon.cpp === --- clang/lib/Basic/Targets/Hexagon.cpp +++ clang/lib/Basic/Targets/Hexagon.cpp @@ -136,7 +136,7 @@ "r9", "r10", "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", "p0", "p1", "p2", "p3", -"sa0", "lc0", "sa1", "lc1", "m0", "m1", "usr", "ugp", +"sa0", "lc0", "sa1", "lc1", "m0", "m1", "usr", "ugp", "cs0", "cs1", "r1:0", "r3:2", "r5:4", "r7:6", "r9:8", "r11:10", "r13:12", "r15:14", "r17:16", "r19:18", "r21:20", "r23:22", "r25:24", "r27:26", "r29:28", "r31:30" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D113638: [xray] Add support for hexagon architecture
sidneym added a comment. LGTM. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D113638/new/ https://reviews.llvm.org/D113638 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D156771: [clang][hexagon] Handle library path arguments earlier
sidneym added a comment. LGTM Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156771/new/ https://reviews.llvm.org/D156771 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D76546: [Hexagon] MaxAtomicPromoteWidth, MaxAtomicInlineWidth are not getting set.
sidneym created this revision. sidneym added reviewers: kparzysz, adasgupt, bcain. Herald added subscribers: cfe-commits, jfb. Herald added a project: clang. Seeing errors while building the c++ library: atomic:2756:16: error: use of undeclared identifier '__libcpp_signed_lock_free' typedef atomic<__libcpp_signed_lock_free> atomic_signed_lock_free; Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D76546 Files: clang/lib/Basic/Targets/Hexagon.h clang/test/Preprocessor/hexagon-predefines.c Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -113,3 +113,20 @@ // CHECK-LINUX: #define __unix__ 1 // CHECK-LINUX: #define linux 1 // CHECK-LINUX: #define unix 1 + + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-linux-musl \ +// RUN: -target-cpu hexagonv67 -target-feature +hvxv67 \ +// RUN: -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-ATOMIC +// CHECK-ATOMIC: #define __CLANG_ATOMIC_BOOL_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR32_T_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_INT_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_LLONG_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_LONG_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_POINTER_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_SHORT_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2 + Index: clang/lib/Basic/Targets/Hexagon.h === --- clang/lib/Basic/Targets/Hexagon.h +++ clang/lib/Basic/Targets/Hexagon.h @@ -57,6 +57,7 @@ LargeArrayAlign = 64; UseBitFieldTypeAlignment = true; ZeroLengthBitfieldBoundary = 32; +MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; // These are the default values anyway, but explicitly make sure // that the size of the boolean type is 8 bits. Bool vectors are used Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -113,3 +113,20 @@ // CHECK-LINUX: #define __unix__ 1 // CHECK-LINUX: #define linux 1 // CHECK-LINUX: #define unix 1 + + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-linux-musl \ +// RUN: -target-cpu hexagonv67 -target-feature +hvxv67 \ +// RUN: -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-ATOMIC +// CHECK-ATOMIC: #define __CLANG_ATOMIC_BOOL_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR32_T_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_INT_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_LLONG_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_LONG_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_POINTER_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_SHORT_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2 + Index: clang/lib/Basic/Targets/Hexagon.h === --- clang/lib/Basic/Targets/Hexagon.h +++ clang/lib/Basic/Targets/Hexagon.h @@ -57,6 +57,7 @@ LargeArrayAlign = 64; UseBitFieldTypeAlignment = true; ZeroLengthBitfieldBoundary = 32; +MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; // These are the default values anyway, but explicitly make sure // that the size of the boolean type is 8 bits. Bool vectors are used ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D76546: [Hexagon] MaxAtomicPromoteWidth, MaxAtomicInlineWidth are not getting set.
sidneym marked an inline comment as done. sidneym added inline comments. Comment at: clang/test/Preprocessor/hexagon-predefines.c:117 + + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-linux-musl \ The extra line break? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76546/new/ https://reviews.llvm.org/D76546 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D76546: [Hexagon] MaxAtomicPromoteWidth, MaxAtomicInlineWidth are not getting set.
sidneym updated this revision to Diff 251896. sidneym added a comment. remove extra line break. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76546/new/ https://reviews.llvm.org/D76546 Files: clang/lib/Basic/Targets/Hexagon.h clang/test/Preprocessor/hexagon-predefines.c Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -113,3 +113,19 @@ // CHECK-LINUX: #define __unix__ 1 // CHECK-LINUX: #define linux 1 // CHECK-LINUX: #define unix 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-linux-musl \ +// RUN: -target-cpu hexagonv67 -target-feature +hvxv67 \ +// RUN: -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-ATOMIC +// CHECK-ATOMIC: #define __CLANG_ATOMIC_BOOL_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR32_T_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_INT_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_LLONG_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_LONG_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_POINTER_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_SHORT_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2 + Index: clang/lib/Basic/Targets/Hexagon.h === --- clang/lib/Basic/Targets/Hexagon.h +++ clang/lib/Basic/Targets/Hexagon.h @@ -57,6 +57,7 @@ LargeArrayAlign = 64; UseBitFieldTypeAlignment = true; ZeroLengthBitfieldBoundary = 32; +MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; // These are the default values anyway, but explicitly make sure // that the size of the boolean type is 8 bits. Bool vectors are used Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -113,3 +113,19 @@ // CHECK-LINUX: #define __unix__ 1 // CHECK-LINUX: #define linux 1 // CHECK-LINUX: #define unix 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-linux-musl \ +// RUN: -target-cpu hexagonv67 -target-feature +hvxv67 \ +// RUN: -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-ATOMIC +// CHECK-ATOMIC: #define __CLANG_ATOMIC_BOOL_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR32_T_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_INT_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_LLONG_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_LONG_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_POINTER_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_SHORT_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2 + Index: clang/lib/Basic/Targets/Hexagon.h === --- clang/lib/Basic/Targets/Hexagon.h +++ clang/lib/Basic/Targets/Hexagon.h @@ -57,6 +57,7 @@ LargeArrayAlign = 64; UseBitFieldTypeAlignment = true; ZeroLengthBitfieldBoundary = 32; +MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; // These are the default values anyway, but explicitly make sure // that the size of the boolean type is 8 bits. Bool vectors are used ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D76582: [Hexagon] Don't clear libpath when target is linux-musl
sidneym created this revision. sidneym added reviewers: kparzysz, bcain, adasgupt. Herald added a project: clang. Herald added a subscriber: cfe-commits. Use the default libpath when the target is linux-musl Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D76582 Files: clang/lib/Driver/ToolChains/Hexagon.cpp Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -499,11 +499,10 @@ ToolChain::path_list &LibPaths = getFilePaths(); - // Remove paths added by Linux toolchain. Currently Hexagon_TC really targets - // 'elf' OS type, so the Linux paths are not appropriate. When we actually - // support 'linux' we'll need to fix this up - LibPaths.clear(); - getHexagonLibraryPaths(Args, LibPaths); + if (!Triple.isMusl()) { +LibPaths.clear(); +getHexagonLibraryPaths(Args, LibPaths); + } } HexagonToolChain::~HexagonToolChain() {} Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -499,11 +499,10 @@ ToolChain::path_list &LibPaths = getFilePaths(); - // Remove paths added by Linux toolchain. Currently Hexagon_TC really targets - // 'elf' OS type, so the Linux paths are not appropriate. When we actually - // support 'linux' we'll need to fix this up - LibPaths.clear(); - getHexagonLibraryPaths(Args, LibPaths); + if (!Triple.isMusl()) { +LibPaths.clear(); +getHexagonLibraryPaths(Args, LibPaths); + } } HexagonToolChain::~HexagonToolChain() {} ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D75638: [Hexagon] Support for Linux/Musl ABI.
sidneym updated this revision to Diff 252950. sidneym added a comment. update for new tidy checks. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D75638/new/ https://reviews.llvm.org/D75638 Files: clang/include/clang/Basic/TargetInfo.h clang/lib/AST/ASTContext.cpp clang/lib/Basic/Targets/Hexagon.h clang/lib/CodeGen/TargetInfo.cpp clang/test/CodeGen/hexagon-linux-vararg.c Index: clang/test/CodeGen/hexagon-linux-vararg.c === --- /dev/null +++ clang/test/CodeGen/hexagon-linux-vararg.c @@ -0,0 +1,81 @@ +// REQUIRES: hexagon-registered-target +// RUN: %clang_cc1 -emit-llvm -triple hexagon-unknown-linux-musl %s -o - | FileCheck %s +#include + +struct AAA { + int x; + int y; + int z; + int d; +}; + +// CHECK: call void @llvm.va_start(i8* %arraydecay1) +// CHECK: %arraydecay2 = getelementptr inbounds [1 x %struct.__va_list_tag], +// [1 x %struct.__va_list_tag]* %ap, i32 0, i32 0 +// CHECK: br label %vaarg.maybe_reg + +// CHECK: vaarg.maybe_reg: ; preds = %entry +// CHECK: %__current_saved_reg_area_pointer_p = getelementptr inbounds +// %struct.__va_list_tag, %struct.__va_list_tag* %arraydecay2, i32 0, i32 0 +// CHECK: %__current_saved_reg_area_pointer = load i8*, i8** +// %__current_saved_reg_area_pointer_p +// CHECK: %__saved_reg_area_end_pointer_p = getelementptr inbounds +// %struct.__va_list_tag, %struct.__va_list_tag* %arraydecay2, i32 0, i32 1 +// CHECK: %__saved_reg_area_end_pointer = load i8*, i8** +// %__saved_reg_area_end_pointer_p +// CHECK: %__new_saved_reg_area_pointer = getelementptr i8, i8* +// %__current_saved_reg_area_pointer, i32 4 +// CHECK: %0 = icmp sgt i8* %__new_saved_reg_area_pointer, +// %__saved_reg_area_end_pointer +// CHECK: br i1 %0, label %vaarg.on_stack, label %vaarg.in_reg + +// CHECK: vaarg.in_reg: ; preds = +// %vaarg.maybe_reg +// CHECK: %1 = bitcast i8* %__current_saved_reg_area_pointer to i32* +// CHECK: store i8* %__new_saved_reg_area_pointer, i8** +// %__current_saved_reg_area_pointer_p +// CHECK: br label %vaarg.end + +// CHECK: vaarg.on_stack: ; preds = +// %vaarg.maybe_reg +// CHECK: %__overflow_area_pointer_p = getelementptr inbounds +// %struct.__va_list_tag, %struct.__va_list_tag* %arraydecay2, i32 0, i32 2 +// CHECK: %__overflow_area_pointer = load i8*, i8** %__overflow_area_pointer_p +// CHECK: %__overflow_area_pointer.next = getelementptr i8, i8* +// %__overflow_area_pointer, i32 4 +// CHECK: store i8* %__overflow_area_pointer.next, i8** +// %__overflow_area_pointer_p +// CHECK: store i8* %__overflow_area_pointer.next, i8** +// %__current_saved_reg_area_pointer_p +// CHECK: %2 = bitcast i8* %__overflow_area_pointer to i32* +// CHECK: br label %vaarg.end + +// CHECK: vaarg.end:; preds = +// %vaarg.on_stack, %vaarg.in_reg +// CHECK: %vaarg.addr = phi i32* [ %1, %vaarg.in_reg ], [ %2, %vaarg.on_stack +// ] +// CHECK: %3 = load i32, i32* %vaarg.addr + +struct AAA aaa = {100, 200, 300, 400}; + +int foo(int xx, ...) { + va_list ap; + int d; + int ret = 0; + struct AAA bbb; + va_start(ap, xx); + d = va_arg(ap, int); + ret += d; + bbb = va_arg(ap, struct AAA); + ret += bbb.d; + d = va_arg(ap, int); + ret += d; + va_end(ap); + return ret; +} + +int main(void) { + int x; + x = foo(1, 2, aaa, 4); + return x; +} Index: clang/lib/CodeGen/TargetInfo.cpp === --- clang/lib/CodeGen/TargetInfo.cpp +++ clang/lib/CodeGen/TargetInfo.cpp @@ -7584,18 +7584,25 @@ namespace { -class HexagonABIInfo : public ABIInfo { +class HexagonABIInfo : public DefaultABIInfo { public: - HexagonABIInfo(CodeGenTypes &CGT) : ABIInfo(CGT) {} + HexagonABIInfo(CodeGenTypes &CGT) : DefaultABIInfo(CGT) {} private: ABIArgInfo classifyReturnType(QualType RetTy) const; ABIArgInfo classifyArgumentType(QualType RetTy) const; + ABIArgInfo classifyArgumentType(QualType RetTy, unsigned *RegsLeft) const; void computeInfo(CGFunctionInfo &FI) const override; Address EmitVAArg(CodeGenFunction &CGF, Address VAListAddr, QualType Ty) const override; + Address EmitVAArgFromMemory(CodeGenFunction &CFG, Address VAListAddr, + QualType Ty) const; + Address EmitVAArgForHexagon(CodeGenFunction &CFG, Address VAListAddr, + QualType Ty) const; + Address EmitVAArgForHexagonLinux(CodeGenFunction &CFG, Address VAListAddr, + QualType Ty) const; }; class HexagonTargetCodeGenInfo : public TargetCodeGenInfo { @@ -7606,23 +7613,63 @@ int getDwarfEHStackPointer(CodeGen::CodeGenModule &M) const override { return 29; } + + void setTargetAttributes(const Decl *D, llvm::GlobalValue *GV, +
[PATCH] D75638: [Hexagon] Support for Linux/Musl ABI.
This revision was automatically updated to reflect the committed changes. Closed by commit rGb0da09498394: [Hexagon] Add support for Linux/Musl ABI (part 2) (authored by sidneym). Changed prior to commit: https://reviews.llvm.org/D75638?vs=252950&id=253000#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D75638/new/ https://reviews.llvm.org/D75638 Files: clang/include/clang/Basic/TargetInfo.h clang/lib/AST/ASTContext.cpp clang/lib/Basic/Targets/Hexagon.h clang/lib/CodeGen/TargetInfo.cpp clang/test/CodeGen/hexagon-linux-vararg.c Index: clang/test/CodeGen/hexagon-linux-vararg.c === --- /dev/null +++ clang/test/CodeGen/hexagon-linux-vararg.c @@ -0,0 +1,81 @@ +// REQUIRES: hexagon-registered-target +// RUN: %clang_cc1 -emit-llvm -triple hexagon-unknown-linux-musl %s -o - | FileCheck %s +#include + +struct AAA { + int x; + int y; + int z; + int d; +}; + +// CHECK: call void @llvm.va_start(i8* %arraydecay1) +// CHECK: %arraydecay2 = getelementptr inbounds [1 x %struct.__va_list_tag], +// [1 x %struct.__va_list_tag]* %ap, i32 0, i32 0 +// CHECK: br label %vaarg.maybe_reg + +// CHECK: vaarg.maybe_reg: ; preds = %entry +// CHECK: %__current_saved_reg_area_pointer_p = getelementptr inbounds +// %struct.__va_list_tag, %struct.__va_list_tag* %arraydecay2, i32 0, i32 0 +// CHECK: %__current_saved_reg_area_pointer = load i8*, i8** +// %__current_saved_reg_area_pointer_p +// CHECK: %__saved_reg_area_end_pointer_p = getelementptr inbounds +// %struct.__va_list_tag, %struct.__va_list_tag* %arraydecay2, i32 0, i32 1 +// CHECK: %__saved_reg_area_end_pointer = load i8*, i8** +// %__saved_reg_area_end_pointer_p +// CHECK: %__new_saved_reg_area_pointer = getelementptr i8, i8* +// %__current_saved_reg_area_pointer, i32 4 +// CHECK: %0 = icmp sgt i8* %__new_saved_reg_area_pointer, +// %__saved_reg_area_end_pointer +// CHECK: br i1 %0, label %vaarg.on_stack, label %vaarg.in_reg + +// CHECK: vaarg.in_reg: ; preds = +// %vaarg.maybe_reg +// CHECK: %1 = bitcast i8* %__current_saved_reg_area_pointer to i32* +// CHECK: store i8* %__new_saved_reg_area_pointer, i8** +// %__current_saved_reg_area_pointer_p +// CHECK: br label %vaarg.end + +// CHECK: vaarg.on_stack: ; preds = +// %vaarg.maybe_reg +// CHECK: %__overflow_area_pointer_p = getelementptr inbounds +// %struct.__va_list_tag, %struct.__va_list_tag* %arraydecay2, i32 0, i32 2 +// CHECK: %__overflow_area_pointer = load i8*, i8** %__overflow_area_pointer_p +// CHECK: %__overflow_area_pointer.next = getelementptr i8, i8* +// %__overflow_area_pointer, i32 4 +// CHECK: store i8* %__overflow_area_pointer.next, i8** +// %__overflow_area_pointer_p +// CHECK: store i8* %__overflow_area_pointer.next, i8** +// %__current_saved_reg_area_pointer_p +// CHECK: %2 = bitcast i8* %__overflow_area_pointer to i32* +// CHECK: br label %vaarg.end + +// CHECK: vaarg.end:; preds = +// %vaarg.on_stack, %vaarg.in_reg +// CHECK: %vaarg.addr = phi i32* [ %1, %vaarg.in_reg ], [ %2, %vaarg.on_stack +// ] +// CHECK: %3 = load i32, i32* %vaarg.addr + +struct AAA aaa = {100, 200, 300, 400}; + +int foo(int xx, ...) { + va_list ap; + int d; + int ret = 0; + struct AAA bbb; + va_start(ap, xx); + d = va_arg(ap, int); + ret += d; + bbb = va_arg(ap, struct AAA); + ret += bbb.d; + d = va_arg(ap, int); + ret += d; + va_end(ap); + return ret; +} + +int main(void) { + int x; + x = foo(1, 2, aaa, 4); + return x; +} Index: clang/lib/CodeGen/TargetInfo.cpp === --- clang/lib/CodeGen/TargetInfo.cpp +++ clang/lib/CodeGen/TargetInfo.cpp @@ -7584,18 +7584,25 @@ namespace { -class HexagonABIInfo : public ABIInfo { +class HexagonABIInfo : public DefaultABIInfo { public: - HexagonABIInfo(CodeGenTypes &CGT) : ABIInfo(CGT) {} + HexagonABIInfo(CodeGenTypes &CGT) : DefaultABIInfo(CGT) {} private: ABIArgInfo classifyReturnType(QualType RetTy) const; ABIArgInfo classifyArgumentType(QualType RetTy) const; + ABIArgInfo classifyArgumentType(QualType RetTy, unsigned *RegsLeft) const; void computeInfo(CGFunctionInfo &FI) const override; Address EmitVAArg(CodeGenFunction &CGF, Address VAListAddr, QualType Ty) const override; + Address EmitVAArgFromMemory(CodeGenFunction &CFG, Address VAListAddr, + QualType Ty) const; + Address EmitVAArgForHexagon(CodeGenFunction &CFG, Address VAListAddr, + QualType Ty) const; + Address EmitVAArgForHexagonLinux(CodeGenFunction &CFG, Address VAListAddr, + QualType Ty) const; }; class HexagonTargetCodeGenInfo : public TargetCodeGenInfo { @@ -7606,23 +7613,63 @@ int getDwarfE
[PATCH] D76546: [Hexagon] MaxAtomicPromoteWidth, MaxAtomicInlineWidth are not getting set.
This revision was automatically updated to reflect the committed changes. Closed by commit rG81194bfeea7b: [Hexagon] MaxAtomicPromoteWidth and MaxAtomicInlineWidth are not getting set. (authored by sidneym). Changed prior to commit: https://reviews.llvm.org/D76546?vs=251896&id=253640#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76546/new/ https://reviews.llvm.org/D76546 Files: clang/lib/Basic/Targets/Hexagon.h clang/test/Preprocessor/hexagon-predefines.c Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -113,3 +113,18 @@ // CHECK-LINUX: #define __unix__ 1 // CHECK-LINUX: #define linux 1 // CHECK-LINUX: #define unix 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-linux-musl \ +// RUN: -target-cpu hexagonv67 -target-feature +hvxv67 \ +// RUN: -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-ATOMIC +// CHECK-ATOMIC: #define __CLANG_ATOMIC_BOOL_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR32_T_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_INT_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_LLONG_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_LONG_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_POINTER_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_SHORT_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2 Index: clang/lib/Basic/Targets/Hexagon.h === --- clang/lib/Basic/Targets/Hexagon.h +++ clang/lib/Basic/Targets/Hexagon.h @@ -57,6 +57,7 @@ LargeArrayAlign = 64; UseBitFieldTypeAlignment = true; ZeroLengthBitfieldBoundary = 32; +MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; // These are the default values anyway, but explicitly make sure // that the size of the boolean type is 8 bits. Bool vectors are used Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -113,3 +113,18 @@ // CHECK-LINUX: #define __unix__ 1 // CHECK-LINUX: #define linux 1 // CHECK-LINUX: #define unix 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-linux-musl \ +// RUN: -target-cpu hexagonv67 -target-feature +hvxv67 \ +// RUN: -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-ATOMIC +// CHECK-ATOMIC: #define __CLANG_ATOMIC_BOOL_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR32_T_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_CHAR_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_INT_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_LLONG_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_LONG_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_POINTER_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_SHORT_LOCK_FREE 2 +// CHECK-ATOMIC: #define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2 Index: clang/lib/Basic/Targets/Hexagon.h === --- clang/lib/Basic/Targets/Hexagon.h +++ clang/lib/Basic/Targets/Hexagon.h @@ -57,6 +57,7 @@ LargeArrayAlign = 64; UseBitFieldTypeAlignment = true; ZeroLengthBitfieldBoundary = 32; +MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; // These are the default values anyway, but explicitly make sure // that the size of the boolean type is 8 bits. Bool vectors are used ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D74972: [hexagon] Define __ELF__ by default.
sidneym created this revision. sidneym added reviewers: kparzysz, bcain. Herald added subscribers: Sanitizers, cfe-commits, mgorny. Herald added projects: clang, Sanitizers, LLVM. __ELF__ is not enabled by default. Correcting an issue in compiler-rt's cmake revealed that __ELF__ was not defined. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D74972 Files: clang/lib/Basic/Targets/Hexagon.cpp clang/test/Preprocessor/hexagon-predefines.c compiler-rt/lib/builtins/CMakeLists.txt Index: compiler-rt/lib/builtins/CMakeLists.txt === --- compiler-rt/lib/builtins/CMakeLists.txt +++ compiler-rt/lib/builtins/CMakeLists.txt @@ -492,7 +492,6 @@ set(armv7em_SOURCES ${arm_SOURCES}) # hexagon arch -set(hexagon_SOURCES ${GENERIC_SOURCES} ${GENERIC_TF_SOURCES}) set(hexagon_SOURCES hexagon/common_entry_exit_abi1.S hexagon/common_entry_exit_abi2.S @@ -524,6 +523,8 @@ hexagon/udivsi3.S hexagon/umoddi3.S hexagon/umodsi3.S + ${GENERIC_SOURCES} + ${GENERIC_TF_SOURCES} ) Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -96,3 +96,8 @@ // CHECK-V67HVX-128B: #define __HVX_LENGTH__ 128 // CHECK-V67HVX-128B: #define __HVX__ 1 // CHECK-V67HVX-128B: #define __hexagon__ 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv67 \ +// RUN: -target-feature +hvxv67 -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-ELF +// CHECK-ELF: #define __ELF__ 1 Index: clang/lib/Basic/Targets/Hexagon.cpp === --- clang/lib/Basic/Targets/Hexagon.cpp +++ clang/lib/Basic/Targets/Hexagon.cpp @@ -24,6 +24,8 @@ Builder.defineMacro("__qdsp6__", "1"); Builder.defineMacro("__hexagon__", "1"); + Builder.defineMacro("__ELF__"); + // The macro __HVXDBL__ is deprecated. bool DefineHvxDbl = false; Index: compiler-rt/lib/builtins/CMakeLists.txt === --- compiler-rt/lib/builtins/CMakeLists.txt +++ compiler-rt/lib/builtins/CMakeLists.txt @@ -492,7 +492,6 @@ set(armv7em_SOURCES ${arm_SOURCES}) # hexagon arch -set(hexagon_SOURCES ${GENERIC_SOURCES} ${GENERIC_TF_SOURCES}) set(hexagon_SOURCES hexagon/common_entry_exit_abi1.S hexagon/common_entry_exit_abi2.S @@ -524,6 +523,8 @@ hexagon/udivsi3.S hexagon/umoddi3.S hexagon/umodsi3.S + ${GENERIC_SOURCES} + ${GENERIC_TF_SOURCES} ) Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -96,3 +96,8 @@ // CHECK-V67HVX-128B: #define __HVX_LENGTH__ 128 // CHECK-V67HVX-128B: #define __HVX__ 1 // CHECK-V67HVX-128B: #define __hexagon__ 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv67 \ +// RUN: -target-feature +hvxv67 -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-ELF +// CHECK-ELF: #define __ELF__ 1 Index: clang/lib/Basic/Targets/Hexagon.cpp === --- clang/lib/Basic/Targets/Hexagon.cpp +++ clang/lib/Basic/Targets/Hexagon.cpp @@ -24,6 +24,8 @@ Builder.defineMacro("__qdsp6__", "1"); Builder.defineMacro("__hexagon__", "1"); + Builder.defineMacro("__ELF__"); + // The macro __HVXDBL__ is deprecated. bool DefineHvxDbl = false; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D74972: [hexagon] Define __ELF__ by default.
This revision was automatically updated to reflect the committed changes. Closed by commit rGd37cbda5f9a4: [Hexagon] Define __ELF__ by default. (authored by sidneym). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74972/new/ https://reviews.llvm.org/D74972 Files: clang/lib/Basic/Targets/Hexagon.cpp clang/test/Preprocessor/hexagon-predefines.c compiler-rt/lib/builtins/CMakeLists.txt Index: compiler-rt/lib/builtins/CMakeLists.txt === --- compiler-rt/lib/builtins/CMakeLists.txt +++ compiler-rt/lib/builtins/CMakeLists.txt @@ -492,7 +492,6 @@ set(armv7em_SOURCES ${arm_SOURCES}) # hexagon arch -set(hexagon_SOURCES ${GENERIC_SOURCES} ${GENERIC_TF_SOURCES}) set(hexagon_SOURCES hexagon/common_entry_exit_abi1.S hexagon/common_entry_exit_abi2.S @@ -524,6 +523,8 @@ hexagon/udivsi3.S hexagon/umoddi3.S hexagon/umodsi3.S + ${GENERIC_SOURCES} + ${GENERIC_TF_SOURCES} ) Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -96,3 +96,8 @@ // CHECK-V67HVX-128B: #define __HVX_LENGTH__ 128 // CHECK-V67HVX-128B: #define __HVX__ 1 // CHECK-V67HVX-128B: #define __hexagon__ 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv67 \ +// RUN: -target-feature +hvxv67 -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-ELF +// CHECK-ELF: #define __ELF__ 1 Index: clang/lib/Basic/Targets/Hexagon.cpp === --- clang/lib/Basic/Targets/Hexagon.cpp +++ clang/lib/Basic/Targets/Hexagon.cpp @@ -24,6 +24,8 @@ Builder.defineMacro("__qdsp6__", "1"); Builder.defineMacro("__hexagon__", "1"); + Builder.defineMacro("__ELF__"); + // The macro __HVXDBL__ is deprecated. bool DefineHvxDbl = false; Index: compiler-rt/lib/builtins/CMakeLists.txt === --- compiler-rt/lib/builtins/CMakeLists.txt +++ compiler-rt/lib/builtins/CMakeLists.txt @@ -492,7 +492,6 @@ set(armv7em_SOURCES ${arm_SOURCES}) # hexagon arch -set(hexagon_SOURCES ${GENERIC_SOURCES} ${GENERIC_TF_SOURCES}) set(hexagon_SOURCES hexagon/common_entry_exit_abi1.S hexagon/common_entry_exit_abi2.S @@ -524,6 +523,8 @@ hexagon/udivsi3.S hexagon/umoddi3.S hexagon/umodsi3.S + ${GENERIC_SOURCES} + ${GENERIC_TF_SOURCES} ) Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -96,3 +96,8 @@ // CHECK-V67HVX-128B: #define __HVX_LENGTH__ 128 // CHECK-V67HVX-128B: #define __HVX__ 1 // CHECK-V67HVX-128B: #define __hexagon__ 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv67 \ +// RUN: -target-feature +hvxv67 -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-ELF +// CHECK-ELF: #define __ELF__ 1 Index: clang/lib/Basic/Targets/Hexagon.cpp === --- clang/lib/Basic/Targets/Hexagon.cpp +++ clang/lib/Basic/Targets/Hexagon.cpp @@ -24,6 +24,8 @@ Builder.defineMacro("__qdsp6__", "1"); Builder.defineMacro("__hexagon__", "1"); + Builder.defineMacro("__ELF__"); + // The macro __HVXDBL__ is deprecated. bool DefineHvxDbl = false; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D75139: [hexagon] Pickup the default crt and libs when the musl target is selected
sidneym created this revision. sidneym added reviewers: kparzysz, bcain, adasgupt. Herald added a project: clang. Herald added a subscriber: cfe-commits. Pickup the default crt and libs when the musl target is selected. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D75139 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -588,3 +588,69 @@ // RUN: | FileCheck -check-prefix=CHECK083 %s // CHECK083: "-isysroot" "/hexagon" // CHECK083: "-internal-externc-isystem" "/hexagon{{/|}}include" +// - +// Passing --musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK084 %s +// CHECK084-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK084: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK084: "-lclang_rt.builtins-hexagon" "-lc" +// CHECK084: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// - +// Passing --musl --shared +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -shared \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK085 %s +// CHECK085:"/hexagon{{/|}}lib{{/|}}Scrt1.o" +// CHECK085:"-lclang_rt.builtins-hexagon" "-lc" +// CHECK085-NOT:/hexagon{{/|}}lib{{/|}}crt1.o +// CHECK085-NOT:-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1 +// - +// Passing --musl -nostdlib +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nostdlib \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK086 %s +// CHECK086-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK086-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK086-NOT: -lclang_rt.builtins-hexagon +// CHECK086-NOT: -lc +// CHECK086: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// - +// Passing --musl -nostartfiles +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nostartfiles \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK087 %s +// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK087: "-lclang_rt.builtins-hexagon" "-lc" +// CHECK087: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// - +// Passing --musl -nodefaultlibs +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nodefaultlibs \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK088 %s +// CHECK088: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK088-NOT: -lclang_rt.builtins-hexagon +// CHECK088-NOT: -lc +// CHECK088: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -264,18 +264,40 @@ UseG0 = G.getValue() == 0; } - // - // - // CmdArgs.push_back("-o"); CmdArgs.push_back(Output.getFilename()); + if (HTC.getTriple().isMusl()) { +if (!Args.hasArg(options::OPT_shared, + options::OPT_nostartfiles, + options::OPT_nostdlib)
[PATCH] D75139: [hexagon] Pickup the default crt and libs when the musl target is selected
sidneym marked an inline comment as done. sidneym added inline comments. Comment at: clang/lib/Driver/ToolChains/Hexagon.cpp:290 +} +if (!Args.hasArg(options::OPT_shared)) + CmdArgs.push_back("-dynamic-linker=/lib/ld-musl-hexagon.so.1"); the default selection of the dynamic-linker needs to move above AddAllArgs. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D75139/new/ https://reviews.llvm.org/D75139 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D75139: [hexagon] Pickup the default crt and libs when the musl target is selected
sidneym updated this revision to Diff 247251. sidneym added a comment. Move selection of the dynamic linker before user args are added. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D75139/new/ https://reviews.llvm.org/D75139 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -588,3 +588,69 @@ // RUN: | FileCheck -check-prefix=CHECK083 %s // CHECK083: "-isysroot" "/hexagon" // CHECK083: "-internal-externc-isystem" "/hexagon{{/|}}include" +// - +// Passing --musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK084 %s +// CHECK084-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK084: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK084: "-lclang_rt.builtins-hexagon" "-lc" +// CHECK084: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// - +// Passing --musl --shared +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -shared \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK085 %s +// CHECK085:"/hexagon{{/|}}lib{{/|}}Scrt1.o" +// CHECK085:"-lclang_rt.builtins-hexagon" "-lc" +// CHECK085-NOT:/hexagon{{/|}}lib{{/|}}crt1.o +// CHECK085-NOT:-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1 +// - +// Passing --musl -nostdlib +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nostdlib \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK086 %s +// CHECK086-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK086-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK086-NOT: -lclang_rt.builtins-hexagon +// CHECK086-NOT: -lc +// CHECK086: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// - +// Passing --musl -nostartfiles +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nostartfiles \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK087 %s +// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK087: "-lclang_rt.builtins-hexagon" "-lc" +// CHECK087: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// - +// Passing --musl -nodefaultlibs +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nodefaultlibs \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK088 %s +// CHECK088: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK088-NOT: -lclang_rt.builtins-hexagon +// CHECK088-NOT: -lc +// CHECK088: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -264,18 +264,41 @@ UseG0 = G.getValue() == 0; } - // - // - // CmdArgs.push_back("-o"); CmdArgs.push_back(Output.getFilename()); + if (HTC.getTriple().isMusl()) { +if (!Args.hasArg(options::OPT_shared, options::OPT_static)) + CmdArgs.push_back("-dynamic-linker=/lib/ld-musl-hexagon.so.1"); + +if (!Args.h
[PATCH] D75139: [hexagon] Pickup the default crt and libs when the musl target is selected
This revision was automatically updated to reflect the committed changes. Closed by commit rG637767665141: Add default paths to support musl target (authored by sidneym). Changed prior to commit: https://reviews.llvm.org/D75139?vs=247251&id=247701#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D75139/new/ https://reviews.llvm.org/D75139 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -597,3 +597,69 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK084 %s // CHECK084: "-fno-use-init-array" +// - +// Passing --musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK085 %s +// CHECK085-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK085: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK085: "-lclang_rt.builtins-hexagon" "-lc" +// CHECK085: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// - +// Passing --musl --shared +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -shared \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK086 %s +// CHECK086:"/hexagon{{/|}}lib{{/|}}Scrt1.o" +// CHECK086:"-lclang_rt.builtins-hexagon" "-lc" +// CHECK086-NOT:/hexagon{{/|}}lib{{/|}}crt1.o +// CHECK086-NOT:-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1 +// - +// Passing --musl -nostdlib +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nostdlib \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK087 %s +// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK087-NOT: -lclang_rt.builtins-hexagon +// CHECK087-NOT: -lc +// CHECK087: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// - +// Passing --musl -nostartfiles +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nostartfiles \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK088 %s +// CHECK088-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK088-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK088: "-lclang_rt.builtins-hexagon" "-lc" +// CHECK088: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// - +// Passing --musl -nodefaultlibs +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nodefaultlibs \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK089 %s +// CHECK089: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK089-NOT: -lclang_rt.builtins-hexagon +// CHECK089-NOT: -lc +// CHECK089: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -264,18 +264,41 @@ UseG0 = G.getValue() == 0; } - // - // - // CmdArgs.push_back("-o"); CmdArgs.push_back(Output.getFilename()); + if (HTC.getTriple().isMusl()) { +if (!Args.hasArg(options::OPT_shared, options::OPT_static)) + CmdArgs.push_back("-dyn
[PATCH] D75139: [hexagon] Pickup the default crt and libs when the musl target is selected
sidneym updated this revision to Diff 247711. sidneym added a comment. Update testcase. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D75139/new/ https://reviews.llvm.org/D75139 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -597,3 +597,70 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK084 %s // CHECK084: "-fno-use-init-array" +// - +// Passing --musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: --sysroot=/hexagon \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK085 %s +// CHECK085-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK085: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK085: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK085: "-lclang_rt.builtins-hexagon" "-lc" +// - +// Passing --musl --shared +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -shared \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK086 %s +// CHECK086-NOT:-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1 +// CHECK086:"/hexagon{{/|}}lib{{/|}}Scrt1.o" +// CHECK086:"-lclang_rt.builtins-hexagon" "-lc" +// CHECK086-NOT:/hexagon{{/|}}lib{{/|}}crt1.o +// - +// Passing --musl -nostdlib +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nostdlib \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK087 %s +// CHECK087: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK087-NOT: -lclang_rt.builtins-hexagon +// CHECK087-NOT: -lc +// - +// Passing --musl -nostartfiles +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nostartfiles \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK088 %s +// CHECK088: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK088-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK088-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK088: "-lclang_rt.builtins-hexagon" "-lc" +// - +// Passing --musl -nodefaultlibs +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nodefaultlibs \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK089 %s +// CHECK089: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK089: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK089-NOT: -lclang_rt.builtins-hexagon +// CHECK089-NOT: -lc Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -264,18 +264,41 @@ UseG0 = G.getValue() == 0; } - // - // - // CmdArgs.push_back("-o"); CmdArgs.push_back(Output.getFilename()); + if (HTC.getTriple().isMusl()) { +if (!Args.hasArg(options::OPT_shared, options::OPT_static)) + CmdArgs.push_back("-dynamic-linker=/lib/ld-musl-hexagon.so.1"); + +if (!Args.hasArg(options::OPT_shared, + options::OPT_nostartfiles, +
[PATCH] D75139: [hexagon] Pickup the default crt and libs when the musl target is selected
sidneym updated this revision to Diff 247724. sidneym added a comment. address clang-tidy issues Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D75139/new/ https://reviews.llvm.org/D75139 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -597,3 +597,70 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK084 %s // CHECK084: "-fno-use-init-array" +// - +// Passing --musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: --sysroot=/hexagon \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK085 %s +// CHECK085-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK085: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK085: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK085: "-lclang_rt.builtins-hexagon" "-lc" +// - +// Passing --musl --shared +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -shared \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK086 %s +// CHECK086-NOT:-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1 +// CHECK086:"/hexagon{{/|}}lib{{/|}}Scrt1.o" +// CHECK086:"-lclang_rt.builtins-hexagon" "-lc" +// CHECK086-NOT:/hexagon{{/|}}lib{{/|}}crt1.o +// - +// Passing --musl -nostdlib +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nostdlib \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK087 %s +// CHECK087: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK087-NOT: -lclang_rt.builtins-hexagon +// CHECK087-NOT: -lc +// - +// Passing --musl -nostartfiles +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nostartfiles \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK088 %s +// CHECK088: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK088-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK088-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK088: "-lclang_rt.builtins-hexagon" "-lc" +// - +// Passing --musl -nodefaultlibs +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nodefaultlibs \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK089 %s +// CHECK089: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK089: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK089-NOT: -lclang_rt.builtins-hexagon +// CHECK089-NOT: -lc Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -264,18 +264,39 @@ UseG0 = G.getValue() == 0; } - // - // - // CmdArgs.push_back("-o"); CmdArgs.push_back(Output.getFilename()); + if (HTC.getTriple().isMusl()) { +if (!Args.hasArg(options::OPT_shared, options::OPT_static)) + CmdArgs.push_back("-dynamic-linker=/lib/ld-musl-hexagon.so.1"); + +if (!Args.hasArg(options::OPT_shared, options::OPT_nostartfiles, +
[PATCH] D75139: [hexagon] Pickup the default crt and libs when the musl target is selected
This revision was automatically updated to reflect the committed changes. Closed by commit rGd481e59863ac: [hexagon] Add default paths to support musl target (authored by sidneym). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D75139/new/ https://reviews.llvm.org/D75139 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -597,3 +597,70 @@ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK084 %s // CHECK084: "-fno-use-init-array" +// - +// Passing --musl +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: --sysroot=/hexagon \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK085 %s +// CHECK085-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK085: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK085: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK085: "-lclang_rt.builtins-hexagon" "-lc" +// - +// Passing --musl --shared +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -shared \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK086 %s +// CHECK086-NOT:-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1 +// CHECK086:"/hexagon{{/|}}lib{{/|}}Scrt1.o" +// CHECK086:"-lclang_rt.builtins-hexagon" "-lc" +// CHECK086-NOT:/hexagon{{/|}}lib{{/|}}crt1.o +// - +// Passing --musl -nostdlib +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nostdlib \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK087 %s +// CHECK087: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK087-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK087-NOT: -lclang_rt.builtins-hexagon +// CHECK087-NOT: -lc +// - +// Passing --musl -nostartfiles +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nostartfiles \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK088 %s +// CHECK088: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK088-NOT: /hexagon{{/|}}lib{{/|}}Scrt1.o +// CHECK088-NOT: /hexagon{{/|}}lib{{/|}}crt1.o +// CHECK088: "-lclang_rt.builtins-hexagon" "-lc" +// - +// Passing --musl -nodefaultlibs +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon -nodefaultlibs \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK089 %s +// CHECK089: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK089: "/hexagon{{/|}}lib{{/|}}crt1.o" +// CHECK089-NOT: -lclang_rt.builtins-hexagon +// CHECK089-NOT: -lc Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -264,18 +264,39 @@ UseG0 = G.getValue() == 0; } - // - // - // CmdArgs.push_back("-o"); CmdArgs.push_back(Output.getFilename()); + if (HTC.getTriple().isMusl()) { +if (!Args.hasArg(options::OPT_shared, options::OPT_static)) + CmdArgs.push_back("-dynamic-linker=/lib/ld-musl-hexagon.so.1"); + +
[PATCH] D75638: [Hexagon] Support for Linux/Musl ABI.
sidneym created this revision. sidneym added reviewers: kparzysz, bcain, adasgupt. Herald added a project: clang. Herald added a subscriber: cfe-commits. The clang driver updates needed to support Hexagon's Linux ABI. This builds on what was added by https://reviews.llvm.org/rG7fee4fed4c75c13d0cec7ff3a043e0313a3abc55 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D75638 Files: clang/include/clang/Basic/TargetInfo.h clang/lib/AST/ASTContext.cpp clang/lib/Basic/Targets/Hexagon.h clang/lib/CodeGen/TargetInfo.cpp clang/test/CodeGen/hexagon-linux-vararg.c Index: clang/test/CodeGen/hexagon-linux-vararg.c === --- /dev/null +++ clang/test/CodeGen/hexagon-linux-vararg.c @@ -0,0 +1,65 @@ +// REQUIRES: hexagon-registered-target +// RUN: %clang_cc1 -emit-llvm -triple hexagon-unknown-linux-musl %s -o - | FileCheck %s +#include + +struct AAA { + int x; int y; int z; int d; +}; + +// CHECK: call void @llvm.va_start(i8* %arraydecay1) +// CHECK: %arraydecay2 = getelementptr inbounds [1 x %struct.__va_list_tag], [1 x %struct.__va_list_tag]* %ap, i32 0, i32 0 +// CHECK: br label %vaarg.maybe_reg + +// CHECK: vaarg.maybe_reg: ; preds = %entry +// CHECK: %__current_saved_reg_area_pointer_p = getelementptr inbounds %struct.__va_list_tag, %struct.__va_list_tag* %arraydecay2, i32 0, i32 0 +// CHECK: %__current_saved_reg_area_pointer = load i8*, i8** %__current_saved_reg_area_pointer_p +// CHECK: %__saved_reg_area_end_pointer_p = getelementptr inbounds %struct.__va_list_tag, %struct.__va_list_tag* %arraydecay2, i32 0, i32 1 +// CHECK: %__saved_reg_area_end_pointer = load i8*, i8** %__saved_reg_area_end_pointer_p +// CHECK: %__new_saved_reg_area_pointer = getelementptr i8, i8* %__current_saved_reg_area_pointer, i32 4 +// CHECK: %0 = icmp sgt i8* %__new_saved_reg_area_pointer, %__saved_reg_area_end_pointer +// CHECK: br i1 %0, label %vaarg.on_stack, label %vaarg.in_reg + +// CHECK: vaarg.in_reg: ; preds = %vaarg.maybe_reg +// CHECK: %1 = bitcast i8* %__current_saved_reg_area_pointer to i32* +// CHECK: store i8* %__new_saved_reg_area_pointer, i8** %__current_saved_reg_area_pointer_p +// CHECK: br label %vaarg.end + +// CHECK: vaarg.on_stack: ; preds = %vaarg.maybe_reg +// CHECK: %__overflow_area_pointer_p = getelementptr inbounds %struct.__va_list_tag, %struct.__va_list_tag* %arraydecay2, i32 0, i32 2 +// CHECK: %__overflow_area_pointer = load i8*, i8** %__overflow_area_pointer_p +// CHECK: %__overflow_area_pointer.next = getelementptr i8, i8* %__overflow_area_pointer, i32 4 +// CHECK: store i8* %__overflow_area_pointer.next, i8** %__overflow_area_pointer_p +// CHECK: store i8* %__overflow_area_pointer.next, i8** %__current_saved_reg_area_pointer_p +// CHECK: %2 = bitcast i8* %__overflow_area_pointer to i32* +// CHECK: br label %vaarg.end + +// CHECK: vaarg.end:; preds = %vaarg.on_stack, %vaarg.in_reg +// CHECK: %vaarg.addr = phi i32* [ %1, %vaarg.in_reg ], [ %2, %vaarg.on_stack ] +// CHECK: %3 = load i32, i32* %vaarg.addr + +struct AAA aaa = { 100, 200, 300, 400 }; + +int foo(int xx, ...) +{ + va_list ap; + int d; + int ret = 0; + struct AAA bbb; + va_start(ap, xx); + d = va_arg(ap, int); + ret += d; + bbb = va_arg(ap, struct AAA); + ret += bbb.d; + d = va_arg(ap, int); + ret += d; + va_end(ap); + return ret; +} + +int +main(void) +{ + int x; + x = foo(1, 2, aaa, 4); + return x; +} Index: clang/lib/CodeGen/TargetInfo.cpp === --- clang/lib/CodeGen/TargetInfo.cpp +++ clang/lib/CodeGen/TargetInfo.cpp @@ -7511,18 +7511,25 @@ namespace { -class HexagonABIInfo : public ABIInfo { +class HexagonABIInfo : public DefaultABIInfo { public: - HexagonABIInfo(CodeGenTypes &CGT) : ABIInfo(CGT) {} + HexagonABIInfo(CodeGenTypes &CGT) : DefaultABIInfo(CGT) {} private: ABIArgInfo classifyReturnType(QualType RetTy) const; ABIArgInfo classifyArgumentType(QualType RetTy) const; + ABIArgInfo classifyArgumentType(QualType RetTy, unsigned *RegsLeft) const; void computeInfo(CGFunctionInfo &FI) const override; Address EmitVAArg(CodeGenFunction &CGF, Address VAListAddr, QualType Ty) const override; + Address EmitVAArgFromMemory(CodeGenFunction &CFG, Address VAListAddr, + QualType Ty) const; + Address EmitVAArgForHexagon(CodeGenFunction &CFG, Address VAListAddr, + QualType Ty) const; + Address EmitVAArgForHexagonLinux(CodeGenFunction &CFG, Address VAListAddr, + QualType Ty) const; }; class HexagonTargetCodeGenInfo : public TargetCodeGenInfo { @@ -7533,23 +7540,58 @@ int getDwarfEHStackPointer(CodeGen::CodeGenModule &M) const override { return 29;
[PATCH] D70919: [Hexagon] Avoid passing unsupported options to lld when -fuse-ld=lld is used
sidneym created this revision. sidneym added reviewers: kparzysz, bcain, ruiu. Herald added a project: clang. Herald added a subscriber: cfe-commits. sidneym added a subscriber: llvm-commits. Avoid passing unsupported options to lld when -fuse-ld=lld is used. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D70919 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: "-march=hexagon" +// CHECK082-NOT: "-mcpu=hexagon" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,9 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + bool UseLLD = Args.getLastArgValue(options::OPT_fuse_ld_EQ).startswith("lld"); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); // // Silence warnings for various options @@ -232,9 +234,10 @@ for (const auto &Opt : HTC.ExtraOpts) CmdArgs.push_back(Opt.c_str()); - CmdArgs.push_back("-march=hexagon"); - StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); - CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + if (!UseLLD) { +CmdArgs.push_back("-march=hexagon"); +CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + } if (IsShared) { CmdArgs.push_back("-shared"); Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: "-march=hexagon" +// CHECK082-NOT: "-mcpu=hexagon" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,9 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + bool UseLLD = Args.getLastArgValue(options::OPT_fuse_ld_EQ).startswith("lld"); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); // // Silence warnings for various options
[PATCH] D70919: [Hexagon] Avoid passing unsupported options to lld when -fuse-ld=lld is used
sidneym updated this revision to Diff 231765. sidneym added a comment. Update testcase. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70919/new/ https://reviews.llvm.org/D70919 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: "-march=" +// CHECK082-NOT: "-mcpu=" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,9 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + bool UseLLD = Args.getLastArgValue(options::OPT_fuse_ld_EQ).startswith("lld"); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); // // Silence warnings for various options @@ -232,9 +234,10 @@ for (const auto &Opt : HTC.ExtraOpts) CmdArgs.push_back(Opt.c_str()); - CmdArgs.push_back("-march=hexagon"); - StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); - CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + if (!UseLLD) { +CmdArgs.push_back("-march=hexagon"); +CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + } if (IsShared) { CmdArgs.push_back("-shared"); Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: "-march=" +// CHECK082-NOT: "-mcpu=" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,9 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + bool UseLLD = Args.getLastArgValue(options::OPT_fuse_ld_EQ).startswith("lld"); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); // // Silence warnings for various options @@ -232,9 +234,10 @@ for (const auto &Opt : HTC.ExtraOpts) CmdArgs.push_back(Opt.c_str()); - CmdArgs.push_back("-march=hexagon"); - StringRef CpuVer = toolchains
[PATCH] D70919: [Hexagon] Avoid passing unsupported options to lld when -fuse-ld=lld is used
sidneym updated this revision to Diff 232374. sidneym added a comment. Remove quotes around check-not. -fuse-ld=lld is the correct usage. -fuse-ld=ld.lld results in an error message: error: invalid linker name in argument '-fuse-ld=ld.lld' Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70919/new/ https://reviews.llvm.org/D70919 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: -march= +// CHECK082-NOT: -mcpu= Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,9 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + bool UseLLD = Args.getLastArgValue(options::OPT_fuse_ld_EQ).startswith("lld"); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); // // Silence warnings for various options @@ -232,9 +234,10 @@ for (const auto &Opt : HTC.ExtraOpts) CmdArgs.push_back(Opt.c_str()); - CmdArgs.push_back("-march=hexagon"); - StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); - CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + if (!UseLLD) { +CmdArgs.push_back("-march=hexagon"); +CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + } if (IsShared) { CmdArgs.push_back("-shared"); Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: -march= +// CHECK082-NOT: -mcpu= Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,9 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + bool UseLLD = Args.getLastArgValue(options::OPT_fuse_ld_EQ).startswith("lld"); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); // // Silence warnings for vari
[PATCH] D70919: [Hexagon] Avoid passing unsupported options to lld when -fuse-ld=lld is used
sidneym updated this revision to Diff 233687. sidneym added a comment. Herald added a project: LLVM. make check for lld more generic. Repository: rL LLVM CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70919/new/ https://reviews.llvm.org/D70919 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: "-march=" +// CHECK082-NOT: "-mcpu=" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,9 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + bool UseLLD = Args.getLastArgValue(options::OPT_fuse_ld_EQ).contains_lower("lld"); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); // // Silence warnings for various options @@ -232,9 +234,10 @@ for (const auto &Opt : HTC.ExtraOpts) CmdArgs.push_back(Opt.c_str()); - CmdArgs.push_back("-march=hexagon"); - StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); - CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + if (!UseLLD) { +CmdArgs.push_back("-march=hexagon"); +CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + } if (IsShared) { CmdArgs.push_back("-shared"); Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: "-march=" +// CHECK082-NOT: "-mcpu=" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,9 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + bool UseLLD = Args.getLastArgValue(options::OPT_fuse_ld_EQ).contains_lower("lld"); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); // // Silence warnings for various options @@ -232,9 +234,10 @@ for (const auto &Opt : HTC.ExtraOpts) CmdArgs.push_back(Opt.c_str()
[PATCH] D70919: [Hexagon] Avoid passing unsupported options to lld when -fuse-ld=lld is used
sidneym updated this revision to Diff 233864. sidneym added a comment. OK, Yes Fuchsia is a good example. Using that pattern Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70919/new/ https://reviews.llvm.org/D70919 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: "-march=" +// CHECK082-NOT: "-mcpu=" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,11 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + const char *Exec = Args.MakeArgString(HTC.GetLinkerPath()); + bool UseLLD = (llvm::sys::path::filename(Exec).equals_lower("ld.lld") || + llvm::sys::path::stem(Exec).equals_lower("ld.lld")); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); // // Silence warnings for various options @@ -232,9 +236,10 @@ for (const auto &Opt : HTC.ExtraOpts) CmdArgs.push_back(Opt.c_str()); - CmdArgs.push_back("-march=hexagon"); - StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); - CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + if (!UseLLD) { +CmdArgs.push_back("-march=hexagon"); +CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + } if (IsShared) { CmdArgs.push_back("-shared"); Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: "-march=" +// CHECK082-NOT: "-mcpu=" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,11 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + const char *Exec = Args.MakeArgString(HTC.GetLinkerPath()); + bool UseLLD = (llvm::sys::path::filename(Exec).equals_lower("ld.lld") || + llvm::sys::path::stem(Exec).equals_lower("ld.lld")); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonTool
[PATCH] D70919: [Hexagon] Avoid passing unsupported options to lld when -fuse-ld=lld is used
sidneym updated this revision to Diff 234174. sidneym added a comment. Remove quotes. Also add ld.lld file so that configurations that don't enable lld will still pass this test. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70919/new/ https://reviews.llvm.org/D70919 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/Inputs/hexagon_tree/Tools/bin/ld.lld clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: -march= +// CHECK082-NOT: -mcpu= Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,11 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + const char *Exec = Args.MakeArgString(HTC.GetLinkerPath()); + bool UseLLD = (llvm::sys::path::filename(Exec).equals_lower("ld.lld") || + llvm::sys::path::stem(Exec).equals_lower("ld.lld")); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); // // Silence warnings for various options @@ -232,9 +236,10 @@ for (const auto &Opt : HTC.ExtraOpts) CmdArgs.push_back(Opt.c_str()); - CmdArgs.push_back("-march=hexagon"); - StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); - CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + if (!UseLLD) { +CmdArgs.push_back("-march=hexagon"); +CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + } if (IsShared) { CmdArgs.push_back("-shared"); Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: -march= +// CHECK082-NOT: -mcpu= Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,11 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + const char *Exec = Args.MakeArgString(HTC.GetLinkerPath()); + bool UseLLD = (llvm::sys::path::filename(Exec).equals_lower("ld.lld") || + llvm::sys::path::stem(Exec).equals_lo
[PATCH] D70919: [Hexagon] Avoid passing unsupported options to lld when -fuse-ld=lld is used
This revision was not accepted when it landed; it landed in state "Needs Review". This revision was automatically updated to reflect the committed changes. Closed by commit rGd567b0ba841d: Avoid unsupported LLD options (authored by sidneym). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70919/new/ https://reviews.llvm.org/D70919 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/Inputs/hexagon_tree/Tools/bin/ld.lld clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: -march= +// CHECK082-NOT: -mcpu= Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,11 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + const char *Exec = Args.MakeArgString(HTC.GetLinkerPath()); + bool UseLLD = (llvm::sys::path::filename(Exec).equals_lower("ld.lld") || + llvm::sys::path::stem(Exec).equals_lower("ld.lld")); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); // // Silence warnings for various options @@ -232,9 +236,10 @@ for (const auto &Opt : HTC.ExtraOpts) CmdArgs.push_back(Opt.c_str()); - CmdArgs.push_back("-march=hexagon"); - StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); - CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + if (!UseLLD) { +CmdArgs.push_back("-march=hexagon"); +CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + } if (IsShared) { CmdArgs.push_back("-shared"); Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// - +// Default, not passing -fuse-ld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// - +// Passing -fuse-ld=lld +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: -march= +// CHECK082-NOT: -mcpu= Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,11 @@ bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + const char *Exec = Args.MakeArgString(HTC.GetLinkerPath()); + bool UseLLD = (llvm::sys::path::filename(Exec).equals_lower("ld.lld
[PATCH] D76079: [Hexagon] Enable init_arrays when target is linux-musl
sidneym created this revision. sidneym added reviewers: kparzysz, bcain, adasgupt. Herald added a project: clang. Herald added a subscriber: cfe-commits. linux/musl will use init arrays by default. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D76079 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -664,3 +664,13 @@ // CHECK089: "/hexagon{{/|}}lib{{/|}}crt1.o" // CHECK089-NOT: -lclang_rt.builtins-hexagon // CHECK089-NOT: -lc +// - +// Not Passing -fno-use-init-array when musl is selected +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK090 %s +// CHECK090-NOT: -fno-use-init-array +// - Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -544,7 +544,8 @@ void HexagonToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, Action::OffloadKind) const { - bool UseInitArrayDefault = false; + + bool UseInitArrayDefault = (getTriple().isMusl()) ? true : false; if (!DriverArgs.hasFlag(options::OPT_fuse_init_array, options::OPT_fno_use_init_array, Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -664,3 +664,13 @@ // CHECK089: "/hexagon{{/|}}lib{{/|}}crt1.o" // CHECK089-NOT: -lclang_rt.builtins-hexagon // CHECK089-NOT: -lc +// - +// Not Passing -fno-use-init-array when musl is selected +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK090 %s +// CHECK090-NOT: -fno-use-init-array +// - Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -544,7 +544,8 @@ void HexagonToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, Action::OffloadKind) const { - bool UseInitArrayDefault = false; + + bool UseInitArrayDefault = (getTriple().isMusl()) ? true : false; if (!DriverArgs.hasFlag(options::OPT_fuse_init_array, options::OPT_fno_use_init_array, ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D76079: [Hexagon] Enable init_arrays when target is linux-musl
sidneym updated this revision to Diff 24. sidneym added a comment. Drop ternary. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76079/new/ https://reviews.llvm.org/D76079 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -664,3 +664,13 @@ // CHECK089: "/hexagon{{/|}}lib{{/|}}crt1.o" // CHECK089-NOT: -lclang_rt.builtins-hexagon // CHECK089-NOT: -lc +// - +// Not Passing -fno-use-init-array when musl is selected +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK090 %s +// CHECK090-NOT: -fno-use-init-array +// - Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -544,7 +544,8 @@ void HexagonToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, Action::OffloadKind) const { - bool UseInitArrayDefault = false; + + bool UseInitArrayDefault = getTriple().isMusl(); if (!DriverArgs.hasFlag(options::OPT_fuse_init_array, options::OPT_fno_use_init_array, Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -664,3 +664,13 @@ // CHECK089: "/hexagon{{/|}}lib{{/|}}crt1.o" // CHECK089-NOT: -lclang_rt.builtins-hexagon // CHECK089-NOT: -lc +// - +// Not Passing -fno-use-init-array when musl is selected +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK090 %s +// CHECK090-NOT: -fno-use-init-array +// - Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -544,7 +544,8 @@ void HexagonToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, Action::OffloadKind) const { - bool UseInitArrayDefault = false; + + bool UseInitArrayDefault = getTriple().isMusl(); if (!DriverArgs.hasFlag(options::OPT_fuse_init_array, options::OPT_fno_use_init_array, ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D76079: [Hexagon] Enable init_arrays when target is linux-musl
This revision was automatically updated to reflect the committed changes. Closed by commit rG6174fddbe3d4: [Hexagon] Enable init_arrays when target is linux-musl (authored by sidneym). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76079/new/ https://reviews.llvm.org/D76079 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -664,3 +664,13 @@ // CHECK089: "/hexagon{{/|}}lib{{/|}}crt1.o" // CHECK089-NOT: -lclang_rt.builtins-hexagon // CHECK089-NOT: -lc +// - +// Not Passing -fno-use-init-array when musl is selected +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK090 %s +// CHECK090-NOT: -fno-use-init-array +// - Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -544,7 +544,8 @@ void HexagonToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, Action::OffloadKind) const { - bool UseInitArrayDefault = false; + + bool UseInitArrayDefault = getTriple().isMusl(); if (!DriverArgs.hasFlag(options::OPT_fuse_init_array, options::OPT_fno_use_init_array, Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -664,3 +664,13 @@ // CHECK089: "/hexagon{{/|}}lib{{/|}}crt1.o" // CHECK089-NOT: -lclang_rt.builtins-hexagon // CHECK089-NOT: -lc +// - +// Not Passing -fno-use-init-array when musl is selected +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK090 %s +// CHECK090-NOT: -fno-use-init-array +// - Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -544,7 +544,8 @@ void HexagonToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, Action::OffloadKind) const { - bool UseInitArrayDefault = false; + + bool UseInitArrayDefault = getTriple().isMusl(); if (!DriverArgs.hasFlag(options::OPT_fuse_init_array, options::OPT_fno_use_init_array, ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D76310: [Hexagon] Add linux #defines when linux triple is selected
sidneym created this revision. sidneym added reviewers: bcain, kparzysz, adasgupt. Herald added subscribers: cfe-commits, krytarowski. Herald added a project: clang. Add Linux default defines when the triple includes -linux-musl. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D76310 Files: clang/lib/Basic/Targets.cpp clang/test/Preprocessor/hexagon-predefines.c Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -101,3 +101,15 @@ // RUN: -target-feature +hvxv67 -target-feature +hvx-length128b %s | FileCheck \ // RUN: %s -check-prefix CHECK-ELF // CHECK-ELF: #define __ELF__ 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-linux-musl \ +// RUN: -target-cpu hexagonv67 -target-feature +hvxv67 \ +// RUN: -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-LINUX +// CHECK-LINUX: #define __gnu_linux__ 1 +// CHECK-LINUX: #define __linux 1 +// CHECK-LINUX: #define __linux__ 1 +// CHECK-LINUX: #define __unix 1 +// CHECK-LINUX: #define __unix__ 1 +// CHECK-LINUX: #define linux 1 +// CHECK-LINUX: #define unix 1 Index: clang/lib/Basic/Targets.cpp === --- clang/lib/Basic/Targets.cpp +++ clang/lib/Basic/Targets.cpp @@ -117,6 +117,9 @@ return new XCoreTargetInfo(Triple, Opts); case llvm::Triple::hexagon: +if (os == llvm::Triple::Linux && +Triple.getEnvironment() == llvm::Triple::Musl) + return new LinuxTargetInfo(Triple, Opts); return new HexagonTargetInfo(Triple, Opts); case llvm::Triple::lanai: Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -101,3 +101,15 @@ // RUN: -target-feature +hvxv67 -target-feature +hvx-length128b %s | FileCheck \ // RUN: %s -check-prefix CHECK-ELF // CHECK-ELF: #define __ELF__ 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-linux-musl \ +// RUN: -target-cpu hexagonv67 -target-feature +hvxv67 \ +// RUN: -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-LINUX +// CHECK-LINUX: #define __gnu_linux__ 1 +// CHECK-LINUX: #define __linux 1 +// CHECK-LINUX: #define __linux__ 1 +// CHECK-LINUX: #define __unix 1 +// CHECK-LINUX: #define __unix__ 1 +// CHECK-LINUX: #define linux 1 +// CHECK-LINUX: #define unix 1 Index: clang/lib/Basic/Targets.cpp === --- clang/lib/Basic/Targets.cpp +++ clang/lib/Basic/Targets.cpp @@ -117,6 +117,9 @@ return new XCoreTargetInfo(Triple, Opts); case llvm::Triple::hexagon: +if (os == llvm::Triple::Linux && +Triple.getEnvironment() == llvm::Triple::Musl) + return new LinuxTargetInfo(Triple, Opts); return new HexagonTargetInfo(Triple, Opts); case llvm::Triple::lanai: ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D76310: [Hexagon] Add linux #defines when linux triple is selected
This revision was not accepted when it landed; it landed in state "Needs Review". This revision was automatically updated to reflect the committed changes. Closed by commit rG430c9a80c17b: [Hexagon] Enable linux #defines (authored by sidneym). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76310/new/ https://reviews.llvm.org/D76310 Files: clang/lib/Basic/Targets.cpp clang/test/Preprocessor/hexagon-predefines.c Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -101,3 +101,15 @@ // RUN: -target-feature +hvxv67 -target-feature +hvx-length128b %s | FileCheck \ // RUN: %s -check-prefix CHECK-ELF // CHECK-ELF: #define __ELF__ 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-linux-musl \ +// RUN: -target-cpu hexagonv67 -target-feature +hvxv67 \ +// RUN: -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-LINUX +// CHECK-LINUX: #define __gnu_linux__ 1 +// CHECK-LINUX: #define __linux 1 +// CHECK-LINUX: #define __linux__ 1 +// CHECK-LINUX: #define __unix 1 +// CHECK-LINUX: #define __unix__ 1 +// CHECK-LINUX: #define linux 1 +// CHECK-LINUX: #define unix 1 Index: clang/lib/Basic/Targets.cpp === --- clang/lib/Basic/Targets.cpp +++ clang/lib/Basic/Targets.cpp @@ -117,6 +117,9 @@ return new XCoreTargetInfo(Triple, Opts); case llvm::Triple::hexagon: +if (os == llvm::Triple::Linux && +Triple.getEnvironment() == llvm::Triple::Musl) + return new LinuxTargetInfo(Triple, Opts); return new HexagonTargetInfo(Triple, Opts); case llvm::Triple::lanai: Index: clang/test/Preprocessor/hexagon-predefines.c === --- clang/test/Preprocessor/hexagon-predefines.c +++ clang/test/Preprocessor/hexagon-predefines.c @@ -101,3 +101,15 @@ // RUN: -target-feature +hvxv67 -target-feature +hvx-length128b %s | FileCheck \ // RUN: %s -check-prefix CHECK-ELF // CHECK-ELF: #define __ELF__ 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-linux-musl \ +// RUN: -target-cpu hexagonv67 -target-feature +hvxv67 \ +// RUN: -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-LINUX +// CHECK-LINUX: #define __gnu_linux__ 1 +// CHECK-LINUX: #define __linux 1 +// CHECK-LINUX: #define __linux__ 1 +// CHECK-LINUX: #define __unix 1 +// CHECK-LINUX: #define __unix__ 1 +// CHECK-LINUX: #define linux 1 +// CHECK-LINUX: #define unix 1 Index: clang/lib/Basic/Targets.cpp === --- clang/lib/Basic/Targets.cpp +++ clang/lib/Basic/Targets.cpp @@ -117,6 +117,9 @@ return new XCoreTargetInfo(Triple, Opts); case llvm::Triple::hexagon: +if (os == llvm::Triple::Linux && +Triple.getEnvironment() == llvm::Triple::Musl) + return new LinuxTargetInfo(Triple, Opts); return new HexagonTargetInfo(Triple, Opts); case llvm::Triple::lanai: ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D74260: Change default relocation model for hexagon when triple includes musl
sidneym created this revision. sidneym added reviewers: kparzysz, bcain, martell, dalias. Herald added a project: clang. Herald added a subscriber: cfe-commits. Right now if the triple includes musl, saying something like: "--target=x86_64--linux-musl" then the default relocation model is pic. When the target is hexagon I want the default relocation model to be static. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D74260 Files: clang/lib/Driver/ToolChains/Linux.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -576,3 +576,21 @@ // RUN: | FileCheck -check-prefix=CHECK082 %s // CHECK082-NOT: -march= // CHECK082-NOT: -mcpu= +// - +// Check default relocation model +// - +// RUN: %clang -### -target hexagon-linux-unknown-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK083 %s +// CHECK083: "-mrelocation-model" "static" +// - +// Check default relocation model when -fpic is passed +// - +// RUN: %clang -### -target hexagon-linux-unknown-musl -fpic \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK084 %s +// CHECK084: "-mrelocation-model" "pic" Index: clang/lib/Driver/ToolChains/Linux.cpp === --- clang/lib/Driver/ToolChains/Linux.cpp +++ clang/lib/Driver/ToolChains/Linux.cpp @@ -919,8 +919,9 @@ } bool Linux::isPIEDefault() const { - return (getTriple().isAndroid() && !getTriple().isAndroidVersionLT(16)) || - getTriple().isMusl() || getSanitizerArgs().requiresPIE(); + return ((getTriple().isAndroid() && !getTriple().isAndroidVersionLT(16)) || + getTriple().isMusl() || getSanitizerArgs().requiresPIE()) && + getTriple().getArch() != llvm::Triple::hexagon; } bool Linux::isNoExecStackDefault() const { Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -576,3 +576,21 @@ // RUN: | FileCheck -check-prefix=CHECK082 %s // CHECK082-NOT: -march= // CHECK082-NOT: -mcpu= +// - +// Check default relocation model +// - +// RUN: %clang -### -target hexagon-linux-unknown-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK083 %s +// CHECK083: "-mrelocation-model" "static" +// - +// Check default relocation model when -fpic is passed +// - +// RUN: %clang -### -target hexagon-linux-unknown-musl -fpic \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK084 %s +// CHECK084: "-mrelocation-model" "pic" Index: clang/lib/Driver/ToolChains/Linux.cpp === --- clang/lib/Driver/ToolChains/Linux.cpp +++ clang/lib/Driver/ToolChains/Linux.cpp @@ -919,8 +919,9 @@ } bool Linux::isPIEDefault() const { - return (getTriple().isAndroid() && !getTriple().isAndroidVersionLT(16)) || - getTriple().isMusl() || getSanitizerArgs().requiresPIE(); + return ((getTriple().isAndroid() && !getTriple().isAndroidVersionLT(16)) || + getTriple().isMusl() || getSanitizerArgs().requiresPIE()) && + getTriple().getArch() != llvm::Triple::hexagon; } bool Linux::isNoExecStackDefault() const { ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D74776: [Hexagon] clang driver should consider --sysroot option when looking for includes
sidneym created this revision. sidneym added reviewers: kparzysz, bcain. Herald added a project: clang. Herald added a subscriber: cfe-commits. Consider --sysroot when building the system c include paths. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D74776 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -577,3 +577,14 @@ // RUN: | FileCheck -check-prefix=CHECK082 %s // CHECK082-NOT: -march= // CHECK082-NOT: -mcpu= +// - +// Passing --sysroot +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK083 %s +// CHECK083: "-isysroot" "/hexagon" +// CHECK083: "-internal-externc-isystem" "/hexagon/include" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -540,6 +540,13 @@ return; const Driver &D = getDriver(); + if (!D.SysRoot.empty()) { +SmallString<128> P(D.SysRoot); +llvm::sys::path::append(P, "include"); +addExternCSystemInclude(DriverArgs, CC1Args, P.str()); +return; + } + std::string TargetDir = getHexagonTargetDir(D.getInstalledDir(), D.PrefixDirs); addExternCSystemInclude(DriverArgs, CC1Args, TargetDir + "/hexagon/include"); Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -577,3 +577,14 @@ // RUN: | FileCheck -check-prefix=CHECK082 %s // CHECK082-NOT: -march= // CHECK082-NOT: -mcpu= +// - +// Passing --sysroot +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK083 %s +// CHECK083: "-isysroot" "/hexagon" +// CHECK083: "-internal-externc-isystem" "/hexagon/include" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -540,6 +540,13 @@ return; const Driver &D = getDriver(); + if (!D.SysRoot.empty()) { +SmallString<128> P(D.SysRoot); +llvm::sys::path::append(P, "include"); +addExternCSystemInclude(DriverArgs, CC1Args, P.str()); +return; + } + std::string TargetDir = getHexagonTargetDir(D.getInstalledDir(), D.PrefixDirs); addExternCSystemInclude(DriverArgs, CC1Args, TargetDir + "/hexagon/include"); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D74776: [Hexagon] clang driver should consider --sysroot option when looking for includes
This revision was automatically updated to reflect the committed changes. Closed by commit rGfaa889b23587: [Hexagon] clang driver should consider --sysroot option (authored by sidneym). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74776/new/ https://reviews.llvm.org/D74776 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -577,3 +577,14 @@ // RUN: | FileCheck -check-prefix=CHECK082 %s // CHECK082-NOT: -march= // CHECK082-NOT: -mcpu= +// - +// Passing --sysroot +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK083 %s +// CHECK083: "-isysroot" "/hexagon" +// CHECK083: "-internal-externc-isystem" "/hexagon/include" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -540,6 +540,13 @@ return; const Driver &D = getDriver(); + if (!D.SysRoot.empty()) { +SmallString<128> P(D.SysRoot); +llvm::sys::path::append(P, "include"); +addExternCSystemInclude(DriverArgs, CC1Args, P.str()); +return; + } + std::string TargetDir = getHexagonTargetDir(D.getInstalledDir(), D.PrefixDirs); addExternCSystemInclude(DriverArgs, CC1Args, TargetDir + "/hexagon/include"); Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -577,3 +577,14 @@ // RUN: | FileCheck -check-prefix=CHECK082 %s // CHECK082-NOT: -march= // CHECK082-NOT: -mcpu= +// - +// Passing --sysroot +// - +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=/hexagon \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK083 %s +// CHECK083: "-isysroot" "/hexagon" +// CHECK083: "-internal-externc-isystem" "/hexagon/include" Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -540,6 +540,13 @@ return; const Driver &D = getDriver(); + if (!D.SysRoot.empty()) { +SmallString<128> P(D.SysRoot); +llvm::sys::path::append(P, "include"); +addExternCSystemInclude(DriverArgs, CC1Args, P.str()); +return; + } + std::string TargetDir = getHexagonTargetDir(D.getInstalledDir(), D.PrefixDirs); addExternCSystemInclude(DriverArgs, CC1Args, TargetDir + "/hexagon/include"); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits