[clang] c539be1 - [Hexagon] Add support for named registers cs0 and cs1

2021-03-18 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2021-03-18T09:53:22-05:00
New Revision: c539be1dcbcf88530cfaf1728b077feb564b72ec

URL: 
https://github.com/llvm/llvm-project/commit/c539be1dcbcf88530cfaf1728b077feb564b72ec
DIFF: 
https://github.com/llvm/llvm-project/commit/c539be1dcbcf88530cfaf1728b077feb564b72ec.diff

LOG: [Hexagon] Add support for named registers cs0 and cs1

Allow inline assembly code to referece cs0 and cs1.

Added: 


Modified: 
clang/lib/Basic/Targets/Hexagon.cpp
llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
llvm/test/CodeGen/Hexagon/namedreg.ll

Removed: 




diff  --git a/clang/lib/Basic/Targets/Hexagon.cpp 
b/clang/lib/Basic/Targets/Hexagon.cpp
index ba10459e9690..d1613fb22930 100644
--- a/clang/lib/Basic/Targets/Hexagon.cpp
+++ b/clang/lib/Basic/Targets/Hexagon.cpp
@@ -136,7 +136,7 @@ const char *const HexagonTargetInfo::GCCRegNames[] = {
 "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"

diff  --git a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp 
b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
index 30c3d3d4f570..a7e9ed34bfcb 100644
--- a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
@@ -308,6 +308,8 @@ Register HexagonTargetLowering::getRegisterByName(
  .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;

diff  --git a/llvm/test/CodeGen/Hexagon/namedreg.ll 
b/llvm/test/CodeGen/Hexagon/namedreg.ll
index 72ca50868828..a905332b2dee 100644
--- a/llvm/test/CodeGen/Hexagon/namedreg.ll
+++ b/llvm/test/CodeGen/Hexagon/namedreg.ll
@@ -4,10 +4,29 @@ entry:
   %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



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


[clang] 9bda29a - [Hexagon] Default linker tests can fail if CLANG_DEFAULT_LINKER is used.

2020-04-09 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-04-09T08:36:50-05:00
New Revision: 9bda29ab0fdfee4e4b5cbe17f87a16f673e91e1f

URL: 
https://github.com/llvm/llvm-project/commit/9bda29ab0fdfee4e4b5cbe17f87a16f673e91e1f
DIFF: 
https://github.com/llvm/llvm-project/commit/9bda29ab0fdfee4e4b5cbe17f87a16f673e91e1f.diff

LOG: [Hexagon] Default linker tests can fail if CLANG_DEFAULT_LINKER is used.

These values are not always known since there is a configuration
option to set the default linker, CLANG_DEFAULT_LINKER.

Differential Revision: https://reviews.llvm.org/D77684

Added: 


Modified: 
clang/test/Driver/hexagon-toolchain-elf.c
clang/test/Driver/hexagon-toolchain-linux.c

Removed: 




diff  --git a/clang/test/Driver/hexagon-toolchain-elf.c 
b/clang/test/Driver/hexagon-toolchain-elf.c
index 4590522d2b40..0a6c86424955 100644
--- a/clang/test/Driver/hexagon-toolchain-elf.c
+++ b/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
-// 
-

diff  --git a/clang/test/Driver/hexagon-toolchain-linux.c 
b/clang/test/Driver/hexagon-toolchain-linux.c
index 6c47044a2c0c..354a924f1209 100644
--- a/clang/test/Driver/hexagon-toolchain-linux.c
+++ b/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



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


[clang] aed2fdb - [Hexagon] Update paths for linux/musl

2020-04-07 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-04-07T13:45:52-05:00
New Revision: aed2fdb1671c31ceff6997af56ae67831dad2595

URL: 
https://github.com/llvm/llvm-project/commit/aed2fdb1671c31ceff6997af56ae67831dad2595
DIFF: 
https://github.com/llvm/llvm-project/commit/aed2fdb1671c31ceff6997af56ae67831dad2595.diff

LOG: [Hexagon] Update paths for linux/musl

Update the sysroot expectation to match other targets and breakout
linux/musl toolchain tests into a new file.

Differential Revision: https://reviews.llvm.org/D77440

Added: 

clang/test/Driver/Inputs/hexagon_tree/Tools/target/hexagon/include/c++/v1/readme
clang/test/Driver/hexagon-toolchain-linux.c

Modified: 
clang/lib/Driver/ToolChains/Hexagon.cpp
clang/lib/Driver/ToolChains/Hexagon.h
clang/test/Driver/hexagon-toolchain-elf.c

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Hexagon.cpp 
b/clang/lib/Driver/ToolChains/Hexagon.cpp
index 4a5e8254dfa0..cf0a0335fbdf 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -273,12 +273,13 @@ constructHexagonLinkArgs(Compilation , const JobAction 
,
 
 if (!Args.hasArg(options::OPT_shared, options::OPT_nostartfiles,
  options::OPT_nostdlib))
-  CmdArgs.push_back(Args.MakeArgString(D.SysRoot + "/lib/crt1.o"));
+  CmdArgs.push_back(Args.MakeArgString(D.SysRoot + "/usr/lib/crt1.o"));
 else if (Args.hasArg(options::OPT_shared) &&
  !Args.hasArg(options::OPT_nostartfiles, options::OPT_nostdlib))
-  CmdArgs.push_back(Args.MakeArgString(D.SysRoot + "/lib/Scrt1.o"));
+  CmdArgs.push_back(Args.MakeArgString(D.SysRoot + "/usr/lib/crti.o"));
 
-CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + D.SysRoot + 
"/lib"));
+CmdArgs.push_back(
+Args.MakeArgString(StringRef("-L") + D.SysRoot + "/usr/lib"));
 Args.AddAllArgs(CmdArgs,
 {options::OPT_T_Group, options::OPT_e, options::OPT_s,
  options::OPT_t, options::OPT_u_Group});
@@ -288,7 +289,10 @@ constructHexagonLinkArgs(Compilation , const JobAction 
,
   CmdArgs.push_back("-lclang_rt.builtins-hexagon");
   CmdArgs.push_back("-lc");
 }
-
+if (D.CCCIsCXX()) {
+  if (HTC.ShouldLinkCXXStdlib(Args))
+HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
+}
 return;
   }
 
@@ -508,6 +512,22 @@ HexagonToolChain::HexagonToolChain(const Driver , const 
llvm::Triple ,
 
 HexagonToolChain::~HexagonToolChain() {}
 
+void HexagonToolChain::AddCXXStdlibLibArgs(const ArgList ,
+   ArgStringList ) const {
+  CXXStdlibType Type = GetCXXStdlibType(Args);
+  switch (Type) {
+  case ToolChain::CST_Libcxx:
+CmdArgs.push_back("-lc++");
+CmdArgs.push_back("-lc++abi");
+CmdArgs.push_back("-lunwind");
+break;
+
+  case ToolChain::CST_Libstdcxx:
+CmdArgs.push_back("-lstdc++");
+break;
+  }
+}
+
 Tool *HexagonToolChain::buildAssembler() const {
   return new tools::hexagon::Assembler(*this);
 }
@@ -571,7 +591,10 @@ void HexagonToolChain::AddClangSystemIncludeArgs(const 
ArgList ,
   const Driver  = getDriver();
   if (!D.SysRoot.empty()) {
 SmallString<128> P(D.SysRoot);
-llvm::sys::path::append(P, "include");
+if (getTriple().isMusl())
+  llvm::sys::path::append(P, "usr/include");
+else
+  llvm::sys::path::append(P, "include");
 addExternCSystemInclude(DriverArgs, CC1Args, P.str());
 return;
   }
@@ -581,7 +604,22 @@ void HexagonToolChain::AddClangSystemIncludeArgs(const 
ArgList ,
   addExternCSystemInclude(DriverArgs, CC1Args, TargetDir + "/hexagon/include");
 }
 
-
+void HexagonToolChain::addLibCxxIncludePaths(
+const llvm::opt::ArgList ,
+llvm::opt::ArgStringList ) const {
+  const Driver  = getDriver();
+  if (!D.SysRoot.empty() && getTriple().isMusl())
+addLibStdCXXIncludePaths(D.SysRoot + "/usr/include/c++/v1", "", "", "", "",
+ "", DriverArgs, CC1Args);
+  else if (getTriple().isMusl())
+addLibStdCXXIncludePaths("/usr/include/c++/v1", "", "", "", "", "",
+ DriverArgs, CC1Args);
+  else {
+std::string TargetDir = getHexagonTargetDir(D.InstalledDir, D.PrefixDirs);
+addLibStdCXXIncludePaths(TargetDir, "/hexagon/include/c++/v1", "", "", "",
+ "", DriverArgs, CC1Args);
+  }
+}
 void HexagonToolChain::addLibStdCxxIncludePaths(
 const llvm::opt::ArgList ,
 llvm::opt::ArgStringList ) const {
@@ -594,14 +632,22 @@ void HexagonToolChain::addLibStdCxxIncludePaths(
 ToolChain::CXXStdlibType
 HexagonToolChain::GetCXXStdlibType(const ArgList ) const {
   Arg *A = Args.getLastArg(options::OPT_stdlib_EQ);
-  if (!A)
-return ToolChain::CST_Libstdcxx;
-
+  if (!A) {
+if (getTriple().isMusl())
+  return ToolChain::CST_Libcxx;
+else
+  return ToolChain::CST_Libstdcxx;
+  }
   StringRef Value = 

[clang] 2c5d6df - [Hexagon] Make lld be the default linker for linux/musl

2020-04-06 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-04-06T12:59:07-05:00
New Revision: 2c5d6dfda98e409f6a6b4b577ebdf59a35ff2ebe

URL: 
https://github.com/llvm/llvm-project/commit/2c5d6dfda98e409f6a6b4b577ebdf59a35ff2ebe
DIFF: 
https://github.com/llvm/llvm-project/commit/2c5d6dfda98e409f6a6b4b577ebdf59a35ff2ebe.diff

LOG: [Hexagon] Make lld be the default linker for linux/musl

When the target is hexagon-unknown-linux-musl select lld as the default
linker.

Differential Revision: https://reviews.llvm.org/D77498

Added: 


Modified: 
clang/lib/Driver/ToolChains/Hexagon.h
clang/test/Driver/hexagon-toolchain-elf.c

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Hexagon.h 
b/clang/lib/Driver/ToolChains/Hexagon.h
index d7b4a13d3a4f..0158b9c42af9 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.h
+++ b/clang/lib/Driver/ToolChains/Hexagon.h
@@ -81,7 +81,9 @@ class LLVM_LIBRARY_VISIBILITY HexagonToolChain : public Linux 
{
   const llvm::opt::ArgList ,
   llvm::opt::ArgStringList ) 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 ) const 
override;
 

diff  --git a/clang/test/Driver/hexagon-toolchain-elf.c 
b/clang/test/Driver/hexagon-toolchain-elf.c
index fba1a891a361..ee5fb220d220 100644
--- a/clang/test/Driver/hexagon-toolchain-elf.c
+++ b/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
+// 
-



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


[clang] 81194bf - [Hexagon] MaxAtomicPromoteWidth and MaxAtomicInlineWidth are not getting set.

2020-03-30 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-03-30T12:33:51-05:00
New Revision: 81194bfeea7b40b6e8c543bb4ae49b59f590475b

URL: 
https://github.com/llvm/llvm-project/commit/81194bfeea7b40b6e8c543bb4ae49b59f590475b
DIFF: 
https://github.com/llvm/llvm-project/commit/81194bfeea7b40b6e8c543bb4ae49b59f590475b.diff

LOG: [Hexagon] MaxAtomicPromoteWidth and MaxAtomicInlineWidth are not getting 
set.

Noticed when building llvm's c++ library.

Differential Revision: https://reviews.llvm.org/D76546

Added: 


Modified: 
clang/lib/Basic/Targets/Hexagon.h
clang/test/Preprocessor/hexagon-predefines.c

Removed: 




diff  --git a/clang/lib/Basic/Targets/Hexagon.h 
b/clang/lib/Basic/Targets/Hexagon.h
index 89e3fa3fa6bf..7e173df81683 100644
--- a/clang/lib/Basic/Targets/Hexagon.h
+++ b/clang/lib/Basic/Targets/Hexagon.h
@@ -57,6 +57,7 @@ class LLVM_LIBRARY_VISIBILITY HexagonTargetInfo : public 
TargetInfo {
 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

diff  --git a/clang/test/Preprocessor/hexagon-predefines.c 
b/clang/test/Preprocessor/hexagon-predefines.c
index 54013ceffa64..7979d567134b 100644
--- a/clang/test/Preprocessor/hexagon-predefines.c
+++ b/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



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


[clang] b0da094 - [Hexagon] Add support for Linux/Musl ABI (part 2)

2020-03-26 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-03-26T17:19:46-05:00
New Revision: b0da094983948c8a82f1a26eaa0702920c2b2b36

URL: 
https://github.com/llvm/llvm-project/commit/b0da094983948c8a82f1a26eaa0702920c2b2b36
DIFF: 
https://github.com/llvm/llvm-project/commit/b0da094983948c8a82f1a26eaa0702920c2b2b36.diff

LOG: [Hexagon] Add support for Linux/Musl ABI (part 2)

A continuation of https://reviews.llvm.org/D72701.  This
adds support needed in clang.

Differential Revision: https://reviews.llvm.org/D75638

Added: 
clang/test/CodeGen/hexagon-linux-vararg.c

Modified: 
clang/include/clang/Basic/TargetInfo.h
clang/lib/AST/ASTContext.cpp
clang/lib/Basic/Targets/Hexagon.h
clang/lib/CodeGen/TargetInfo.cpp

Removed: 




diff  --git a/clang/include/clang/Basic/TargetInfo.h 
b/clang/include/clang/Basic/TargetInfo.h
index 615f09985132..81760ec82838 100644
--- a/clang/include/clang/Basic/TargetInfo.h
+++ b/clang/include/clang/Basic/TargetInfo.h
@@ -273,7 +273,14 @@ class TargetInfo : public virtual TransferrableTargetInfo,
 // void *__overflow_arg_area;
 // void *__reg_save_area;
 //   } va_list[1];
-SystemZBuiltinVaList
+SystemZBuiltinVaList,
+
+// typedef struct __va_list_tag {
+//void *__current_saved_reg_area_pointer;
+//void *__saved_reg_area_end_pointer;
+//void *__overflow_area_pointer;
+//} va_list;
+HexagonBuiltinVaList
   };
 
 protected:

diff  --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index dca6523d5176..19f67fc2bb3f 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -7795,6 +7795,57 @@ CreateSystemZBuiltinVaListDecl(const ASTContext 
*Context) {
   return Context->buildImplicitTypedef(VaListTagArrayType, 
"__builtin_va_list");
 }
 
+static TypedefDecl *CreateHexagonBuiltinVaListDecl(const ASTContext *Context) {
+  // typedef struct __va_list_tag {
+  RecordDecl *VaListTagDecl;
+  VaListTagDecl = Context->buildImplicitRecord("__va_list_tag");
+  VaListTagDecl->startDefinition();
+
+  const size_t NumFields = 3;
+  QualType FieldTypes[NumFields];
+  const char *FieldNames[NumFields];
+
+  //   void *CurrentSavedRegisterArea;
+  FieldTypes[0] = Context->getPointerType(Context->VoidTy);
+  FieldNames[0] = "__current_saved_reg_area_pointer";
+
+  //   void *SavedRegAreaEnd;
+  FieldTypes[1] = Context->getPointerType(Context->VoidTy);
+  FieldNames[1] = "__saved_reg_area_end_pointer";
+
+  //   void *OverflowArea;
+  FieldTypes[2] = Context->getPointerType(Context->VoidTy);
+  FieldNames[2] = "__overflow_area_pointer";
+
+  // Create fields
+  for (unsigned i = 0; i < NumFields; ++i) {
+FieldDecl *Field = FieldDecl::Create(
+const_cast(*Context), VaListTagDecl, SourceLocation(),
+SourceLocation(), >Idents.get(FieldNames[i]), FieldTypes[i],
+/*TInfo=*/0,
+/*BitWidth=*/0,
+/*Mutable=*/false, ICIS_NoInit);
+Field->setAccess(AS_public);
+VaListTagDecl->addDecl(Field);
+  }
+  VaListTagDecl->completeDefinition();
+  Context->VaListTagDecl = VaListTagDecl;
+  QualType VaListTagType = Context->getRecordType(VaListTagDecl);
+
+  // } __va_list_tag;
+  TypedefDecl *VaListTagTypedefDecl =
+  Context->buildImplicitTypedef(VaListTagType, "__va_list_tag");
+
+  QualType VaListTagTypedefType = 
Context->getTypedefType(VaListTagTypedefDecl);
+
+  // typedef __va_list_tag __builtin_va_list[1];
+  llvm::APInt Size(Context->getTypeSize(Context->getSizeType()), 1);
+  QualType VaListTagArrayType = Context->getConstantArrayType(
+  VaListTagTypedefType, Size, nullptr, ArrayType::Normal, 0);
+
+  return Context->buildImplicitTypedef(VaListTagArrayType, 
"__builtin_va_list");
+}
+
 static TypedefDecl *CreateVaListDecl(const ASTContext *Context,
  TargetInfo::BuiltinVaListKind Kind) {
   switch (Kind) {
@@ -7814,6 +7865,8 @@ static TypedefDecl *CreateVaListDecl(const ASTContext 
*Context,
 return CreateAAPCSABIBuiltinVaListDecl(Context);
   case TargetInfo::SystemZBuiltinVaList:
 return CreateSystemZBuiltinVaListDecl(Context);
+  case TargetInfo::HexagonBuiltinVaList:
+return CreateHexagonBuiltinVaListDecl(Context);
   }
 
   llvm_unreachable("Unhandled __builtin_va_list type kind");

diff  --git a/clang/lib/Basic/Targets/Hexagon.h 
b/clang/lib/Basic/Targets/Hexagon.h
index f58f594b104f..89e3fa3fa6bf 100644
--- a/clang/lib/Basic/Targets/Hexagon.h
+++ b/clang/lib/Basic/Targets/Hexagon.h
@@ -103,6 +103,8 @@ class LLVM_LIBRARY_VISIBILITY HexagonTargetInfo : public 
TargetInfo {
 DiagnosticsEngine ) override;
 
   BuiltinVaListKind getBuiltinVaListKind() const override {
+if (getTriple().isMusl())
+  return TargetInfo::HexagonBuiltinVaList;
 return TargetInfo::CharPtrBuiltinVaList;
   }
 

diff  --git a/clang/lib/CodeGen/TargetInfo.cpp 
b/clang/lib/CodeGen/TargetInfo.cpp
index 

[clang] 430c9a8 - [Hexagon] Enable linux #defines

2020-03-19 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-03-19T14:33:49-05:00
New Revision: 430c9a80c17b00ec65b8254810e3c9e122d13f98

URL: 
https://github.com/llvm/llvm-project/commit/430c9a80c17b00ec65b8254810e3c9e122d13f98
DIFF: 
https://github.com/llvm/llvm-project/commit/430c9a80c17b00ec65b8254810e3c9e122d13f98.diff

LOG: [Hexagon] Enable linux #defines

Enable standard linux defines when the triple is Linux and the
environment is musl.

Differential Revision: https://reviews.llvm.org/D76310

Added: 


Modified: 
clang/lib/Basic/Targets.cpp
clang/test/Preprocessor/hexagon-predefines.c

Removed: 




diff  --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index c063f8ca4472..9181c715085e 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -117,6 +117,9 @@ TargetInfo *AllocateTarget(const llvm::Triple ,
 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:

diff  --git a/clang/test/Preprocessor/hexagon-predefines.c 
b/clang/test/Preprocessor/hexagon-predefines.c
index 5be8b96e290d..54013ceffa64 100644
--- a/clang/test/Preprocessor/hexagon-predefines.c
+++ b/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



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


[clang] 6174fdd - [Hexagon] Enable init_arrays when target is linux-musl

2020-03-12 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-03-12T15:00:15-05:00
New Revision: 6174fddbe3d40972d97f63d9bf6bb1c4236de0e3

URL: 
https://github.com/llvm/llvm-project/commit/6174fddbe3d40972d97f63d9bf6bb1c4236de0e3
DIFF: 
https://github.com/llvm/llvm-project/commit/6174fddbe3d40972d97f63d9bf6bb1c4236de0e3.diff

LOG: [Hexagon] Enable init_arrays when target is linux-musl

Differential Revision: https://reviews.llvm.org/D76079

Added: 


Modified: 
clang/lib/Driver/ToolChains/Hexagon.cpp
clang/test/Driver/hexagon-toolchain-elf.c

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Hexagon.cpp 
b/clang/lib/Driver/ToolChains/Hexagon.cpp
index 1e2e7c84b006..4a5e8254dfa0 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -544,7 +544,8 @@ unsigned HexagonToolChain::getOptimizationLevel(
 void HexagonToolChain::addClangTargetOptions(const ArgList ,
  ArgStringList ,
  Action::OffloadKind) const {
-  bool UseInitArrayDefault = false;
+
+  bool UseInitArrayDefault = getTriple().isMusl();
 
   if (!DriverArgs.hasFlag(options::OPT_fuse_init_array,
   options::OPT_fno_use_init_array,

diff  --git a/clang/test/Driver/hexagon-toolchain-elf.c 
b/clang/test/Driver/hexagon-toolchain-elf.c
index 93c9da2250f5..fba1a891a361 100644
--- a/clang/test/Driver/hexagon-toolchain-elf.c
+++ b/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
+// 
-



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


[clang] d481e59 - [hexagon] Add default paths to support musl target

2020-03-03 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-03-03T08:43:10-06:00
New Revision: d481e59863ac0eaca813a972f0dc79b763012d30

URL: 
https://github.com/llvm/llvm-project/commit/d481e59863ac0eaca813a972f0dc79b763012d30
DIFF: 
https://github.com/llvm/llvm-project/commit/d481e59863ac0eaca813a972f0dc79b763012d30.diff

LOG: [hexagon] Add default paths to support musl target

Pickup the default crt and libs when the target is musl.
Resubmitting after updating the testcase.

Differential Revision: https://reviews.llvm.org/D75139

Added: 


Modified: 
clang/lib/Driver/ToolChains/Hexagon.cpp
clang/test/Driver/hexagon-toolchain-elf.c

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Hexagon.cpp 
b/clang/lib/Driver/ToolChains/Hexagon.cpp
index 88523cd4bb1c..1e2e7c84b006 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -264,18 +264,39 @@ constructHexagonLinkArgs(Compilation , const JobAction 
,
 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,
+ options::OPT_nostdlib))
+  CmdArgs.push_back(Args.MakeArgString(D.SysRoot + "/lib/crt1.o"));
+else if (Args.hasArg(options::OPT_shared) &&
+ !Args.hasArg(options::OPT_nostartfiles, options::OPT_nostdlib))
+  CmdArgs.push_back(Args.MakeArgString(D.SysRoot + "/lib/Scrt1.o"));
+
+CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + D.SysRoot + 
"/lib"));
+Args.AddAllArgs(CmdArgs,
+{options::OPT_T_Group, options::OPT_e, options::OPT_s,
+ options::OPT_t, options::OPT_u_Group});
+AddLinkerInputs(HTC, Inputs, Args, CmdArgs, JA);
+
+if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
+  CmdArgs.push_back("-lclang_rt.builtins-hexagon");
+  CmdArgs.push_back("-lc");
+}
+
+return;
+  }
+
   
//
   // moslib
   
//
   std::vector OsLibs;
   bool HasStandalone = false;
-
   for (const Arg *A : Args.filtered(options::OPT_moslib_EQ)) {
 A->claim();
 OsLibs.emplace_back(A->getValue());

diff  --git a/clang/test/Driver/hexagon-toolchain-elf.c 
b/clang/test/Driver/hexagon-toolchain-elf.c
index 0a6c86424955..93c9da2250f5 100644
--- a/clang/test/Driver/hexagon-toolchain-elf.c
+++ b/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 

[clang] 0858eeb - Revert "Add default paths to support musl target"

2020-03-02 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-03-02T14:09:52-06:00
New Revision: 0858eebd2a48b931f2ef1dfa23042980bd6a773d

URL: 
https://github.com/llvm/llvm-project/commit/0858eebd2a48b931f2ef1dfa23042980bd6a773d
DIFF: 
https://github.com/llvm/llvm-project/commit/0858eebd2a48b931f2ef1dfa23042980bd6a773d.diff

LOG: Revert "Add default paths to support musl target"

This reverts commit 637767665141ae48c7a0558903bb29e03bf5ad6f.
Need to fix the testcase.

Added: 


Modified: 
clang/lib/Driver/ToolChains/Hexagon.cpp
clang/test/Driver/hexagon-toolchain-elf.c

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Hexagon.cpp 
b/clang/lib/Driver/ToolChains/Hexagon.cpp
index c069eefde9af..88523cd4bb1c 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -264,41 +264,18 @@ constructHexagonLinkArgs(Compilation , const JobAction 
,
 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,
- options::OPT_nostdlib))
-  CmdArgs.push_back(Args.MakeArgString(D.SysRoot + "/lib/crt1.o"));
-else if (Args.hasArg(options::OPT_shared) &&
- !Args.hasArg(options::OPT_nostartfiles, options::OPT_nostdlib))
-  CmdArgs.push_back(Args.MakeArgString(D.SysRoot + "/lib/Scrt1.o"));
-
-CmdArgs.push_back(
-Args.MakeArgString(StringRef("-L") + D.SysRoot + "/lib"));
-Args.AddAllArgs(CmdArgs,
-{options::OPT_T_Group, options::OPT_e, options::OPT_s,
- options::OPT_t, options::OPT_u_Group});
-AddLinkerInputs(HTC, Inputs, Args, CmdArgs, JA);
-
-if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
-  CmdArgs.push_back("-lclang_rt.builtins-hexagon");
-  CmdArgs.push_back("-lc");
-}
-
-return;
-  }
-
   
//
   // moslib
   
//
   std::vector OsLibs;
   bool HasStandalone = false;
+
   for (const Arg *A : Args.filtered(options::OPT_moslib_EQ)) {
 A->claim();
 OsLibs.emplace_back(A->getValue());

diff  --git a/clang/test/Driver/hexagon-toolchain-elf.c 
b/clang/test/Driver/hexagon-toolchain-elf.c
index 24daac05d612..0a6c86424955 100644
--- a/clang/test/Driver/hexagon-toolchain-elf.c
+++ b/clang/test/Driver/hexagon-toolchain-elf.c
@@ -597,69 +597,3 @@
 // 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:   

[clang] 6377676 - Add default paths to support musl target

2020-03-02 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-03-02T13:39:42-06:00
New Revision: 637767665141ae48c7a0558903bb29e03bf5ad6f

URL: 
https://github.com/llvm/llvm-project/commit/637767665141ae48c7a0558903bb29e03bf5ad6f
DIFF: 
https://github.com/llvm/llvm-project/commit/637767665141ae48c7a0558903bb29e03bf5ad6f.diff

LOG: Add default paths to support musl target

Pickup the default crt and libs when the target is musl.

Differential Revision: https://reviews.llvm.org/D75139

Added: 


Modified: 
clang/lib/Driver/ToolChains/Hexagon.cpp
clang/test/Driver/hexagon-toolchain-elf.c

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Hexagon.cpp 
b/clang/lib/Driver/ToolChains/Hexagon.cpp
index 88523cd4bb1c..c069eefde9af 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -264,18 +264,41 @@ constructHexagonLinkArgs(Compilation , const JobAction 
,
 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,
+ options::OPT_nostdlib))
+  CmdArgs.push_back(Args.MakeArgString(D.SysRoot + "/lib/crt1.o"));
+else if (Args.hasArg(options::OPT_shared) &&
+ !Args.hasArg(options::OPT_nostartfiles, options::OPT_nostdlib))
+  CmdArgs.push_back(Args.MakeArgString(D.SysRoot + "/lib/Scrt1.o"));
+
+CmdArgs.push_back(
+Args.MakeArgString(StringRef("-L") + D.SysRoot + "/lib"));
+Args.AddAllArgs(CmdArgs,
+{options::OPT_T_Group, options::OPT_e, options::OPT_s,
+ options::OPT_t, options::OPT_u_Group});
+AddLinkerInputs(HTC, Inputs, Args, CmdArgs, JA);
+
+if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
+  CmdArgs.push_back("-lclang_rt.builtins-hexagon");
+  CmdArgs.push_back("-lc");
+}
+
+return;
+  }
+
   
//
   // moslib
   
//
   std::vector OsLibs;
   bool HasStandalone = false;
-
   for (const Arg *A : Args.filtered(options::OPT_moslib_EQ)) {
 A->claim();
 OsLibs.emplace_back(A->getValue());

diff  --git a/clang/test/Driver/hexagon-toolchain-elf.c 
b/clang/test/Driver/hexagon-toolchain-elf.c
index 0a6c86424955..24daac05d612 100644
--- a/clang/test/Driver/hexagon-toolchain-elf.c
+++ b/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:   

[clang] d37cbda - [Hexagon] Define __ELF__ by default.

2020-02-21 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-02-21T16:10:31-06:00
New Revision: d37cbda5f9a47a4206439632ef4fa1534e66f856

URL: 
https://github.com/llvm/llvm-project/commit/d37cbda5f9a47a4206439632ef4fa1534e66f856
DIFF: 
https://github.com/llvm/llvm-project/commit/d37cbda5f9a47a4206439632ef4fa1534e66f856.diff

LOG: [Hexagon] Define __ELF__ by default.

Differential Revision: https://reviews.llvm.org/D74972

Added: 


Modified: 
clang/lib/Basic/Targets/Hexagon.cpp
clang/test/Preprocessor/hexagon-predefines.c
compiler-rt/lib/builtins/CMakeLists.txt

Removed: 




diff  --git a/clang/lib/Basic/Targets/Hexagon.cpp 
b/clang/lib/Basic/Targets/Hexagon.cpp
index fcf9e9cff31d..205601c359d0 100644
--- a/clang/lib/Basic/Targets/Hexagon.cpp
+++ b/clang/lib/Basic/Targets/Hexagon.cpp
@@ -24,6 +24,8 @@ void HexagonTargetInfo::getTargetDefines(const LangOptions 
,
   Builder.defineMacro("__qdsp6__", "1");
   Builder.defineMacro("__hexagon__", "1");
 
+  Builder.defineMacro("__ELF__");
+
   // The macro __HVXDBL__ is deprecated.
   bool DefineHvxDbl = false;
 

diff  --git a/clang/test/Preprocessor/hexagon-predefines.c 
b/clang/test/Preprocessor/hexagon-predefines.c
index fd33a6667170..5be8b96e290d 100644
--- a/clang/test/Preprocessor/hexagon-predefines.c
+++ b/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

diff  --git a/compiler-rt/lib/builtins/CMakeLists.txt 
b/compiler-rt/lib/builtins/CMakeLists.txt
index 125a3a1b1476..21cac1c23539 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -492,7 +492,6 @@ set(armv7m_SOURCES ${arm_SOURCES})
 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 @@ set(hexagon_SOURCES
   hexagon/udivsi3.S
   hexagon/umoddi3.S
   hexagon/umodsi3.S
+  ${GENERIC_SOURCES}
+  ${GENERIC_TF_SOURCES}
 )
 
 



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


[clang] cf45742 - [hexagon] Fix testcase issue with windows builder.

2020-02-18 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-02-18T16:36:38-06:00
New Revision: cf4574299a279beeb8acb894583962ec0f41286c

URL: 
https://github.com/llvm/llvm-project/commit/cf4574299a279beeb8acb894583962ec0f41286c
DIFF: 
https://github.com/llvm/llvm-project/commit/cf4574299a279beeb8acb894583962ec0f41286c.diff

LOG: [hexagon] Fix testcase issue with windows builder.

Added: 


Modified: 
clang/test/Driver/hexagon-toolchain-elf.c

Removed: 




diff  --git a/clang/test/Driver/hexagon-toolchain-elf.c 
b/clang/test/Driver/hexagon-toolchain-elf.c
index 4af00215ea31..a0bf8cac9668 100644
--- a/clang/test/Driver/hexagon-toolchain-elf.c
+++ b/clang/test/Driver/hexagon-toolchain-elf.c
@@ -587,4 +587,4 @@
 // RUN:   %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK083 %s
 // CHECK083:  "-isysroot" "/hexagon"
-// CHECK083:  "-internal-externc-isystem" "/hexagon/include"
+// CHECK083:  "-internal-externc-isystem" "/hexagon{{/|}}include"



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


[clang] faa889b - [Hexagon] clang driver should consider --sysroot option

2020-02-18 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2020-02-18T14:25:55-06:00
New Revision: faa889b2358704c57febf2ad75ad88eec5debf31

URL: 
https://github.com/llvm/llvm-project/commit/faa889b2358704c57febf2ad75ad88eec5debf31
DIFF: 
https://github.com/llvm/llvm-project/commit/faa889b2358704c57febf2ad75ad88eec5debf31.diff

LOG: [Hexagon] clang driver should consider --sysroot option

Hexagon's clang driver should consider --sysroot option when setting
up include paths.

Differential Revision: https://reviews.llvm.org/D74776

Added: 


Modified: 
clang/lib/Driver/ToolChains/Hexagon.cpp
clang/test/Driver/hexagon-toolchain-elf.c

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Hexagon.cpp 
b/clang/lib/Driver/ToolChains/Hexagon.cpp
index 2b9046712a26..25e9f1b6c222 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -540,6 +540,13 @@ void HexagonToolChain::AddClangSystemIncludeArgs(const 
ArgList ,
 return;
 
   const Driver  = 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");

diff  --git a/clang/test/Driver/hexagon-toolchain-elf.c 
b/clang/test/Driver/hexagon-toolchain-elf.c
index 9b5ebe3c86a4..4af00215ea31 100644
--- a/clang/test/Driver/hexagon-toolchain-elf.c
+++ b/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"



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


[clang] d567b0b - Avoid unsupported LLD options

2019-12-20 Thread Sid Manning via cfe-commits

Author: Sid Manning
Date: 2019-12-20T14:18:10-06:00
New Revision: d567b0ba841d4b6f4b0d906da350a3bb2b2f769f

URL: 
https://github.com/llvm/llvm-project/commit/d567b0ba841d4b6f4b0d906da350a3bb2b2f769f
DIFF: 
https://github.com/llvm/llvm-project/commit/d567b0ba841d4b6f4b0d906da350a3bb2b2f769f.diff

LOG: Avoid unsupported LLD options

Differential Revision: https://reviews.llvm.org/D70919

Added: 
clang/test/Driver/Inputs/hexagon_tree/Tools/bin/ld.lld

Modified: 
clang/lib/Driver/ToolChains/Hexagon.cpp
clang/test/Driver/hexagon-toolchain-elf.c

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Hexagon.cpp 
b/clang/lib/Driver/ToolChains/Hexagon.cpp
index 4a735a2a1d59..e4d9ea8a70f9 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -209,7 +209,11 @@ constructHexagonLinkArgs(Compilation , const JobAction 
,
   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 @@ constructHexagonLinkArgs(Compilation , const JobAction 
,
   for (const auto  : 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");

diff  --git a/clang/test/Driver/Inputs/hexagon_tree/Tools/bin/ld.lld 
b/clang/test/Driver/Inputs/hexagon_tree/Tools/bin/ld.lld
new file mode 100755
index ..e69de29bb2d1

diff  --git a/clang/test/Driver/hexagon-toolchain-elf.c 
b/clang/test/Driver/hexagon-toolchain-elf.c
index 661e758d931b..0339619e1c1f 100644
--- a/clang/test/Driver/hexagon-toolchain-elf.c
+++ b/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=



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


r344482 - [Hexagon] Update tests account for non-hardcoded linker name.

2018-10-14 Thread Sid Manning via cfe-commits
Author: sidneym
Date: Sun Oct 14 10:51:36 2018
New Revision: 344482

URL: http://llvm.org/viewvc/llvm-project?rev=344482=rev
Log:
[Hexagon] Update tests account for non-hardcoded linker name.

Tests should not assume the linker's name, CLANG_DEFAULT_LINKER could
change it.

Differential Revision: https://reviews.llvm.org/D53219

Modified:
cfe/trunk/test/Driver/hexagon-toolchain-elf.c
cfe/trunk/test/Driver/linux-ld.c

Modified: cfe/trunk/test/Driver/hexagon-toolchain-elf.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/hexagon-toolchain-elf.c?rev=344482=344481=344482=diff
==
--- cfe/trunk/test/Driver/hexagon-toolchain-elf.c (original)
+++ cfe/trunk/test/Driver/hexagon-toolchain-elf.c Sun Oct 14 10:51:36 2018
@@ -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-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}}

r344147 - [Hexagon] Use GetLinkerPath instead of hard-coded string.

2018-10-10 Thread Sid Manning via cfe-commits
Author: sidneym
Date: Wed Oct 10 08:37:03 2018
New Revision: 344147

URL: http://llvm.org/viewvc/llvm-project?rev=344147=rev
Log:
[Hexagon] Use GetLinkerPath instead of hard-coded string.

Add GetLinkerPath and set the default to "hexagon-link".
Use GetLinkerPath instead of the hard-coded string.

This change will allow -fuse-ld to function correctly.

Differential revision: https://reviews.llvm.org/D53038

Modified:
cfe/trunk/lib/Driver/ToolChains/Hexagon.cpp
cfe/trunk/lib/Driver/ToolChains/Hexagon.h

Modified: cfe/trunk/lib/Driver/ToolChains/Hexagon.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Hexagon.cpp?rev=344147=344146=344147=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Hexagon.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Hexagon.cpp Wed Oct 10 08:37:03 2018
@@ -369,9 +369,8 @@ void hexagon::Linker::ConstructJob(Compi
   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.
 

Modified: cfe/trunk/lib/Driver/ToolChains/Hexagon.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Hexagon.h?rev=344147=344146=344147=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Hexagon.h (original)
+++ cfe/trunk/lib/Driver/ToolChains/Hexagon.h Wed Oct 10 08:37:03 2018
@@ -81,6 +81,9 @@ public:
   void addLibStdCxxIncludePaths(
   const llvm::opt::ArgList ,
   llvm::opt::ArgStringList ) const override;
+
+  const char *getDefaultLinker() const override { return "hexagon-link"; }
+
   CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList ) 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