r328836 - Set dso_local on cfi_slowpath.

2018-03-29 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Mar 29 15:08:01 2018
New Revision: 328836

URL: http://llvm.org/viewvc/llvm-project?rev=328836=rev
Log:
Set dso_local on cfi_slowpath.

Modified:
cfe/trunk/lib/CodeGen/CGExpr.cpp
cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c

Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=328836=328835=328836=diff
==
--- cfe/trunk/lib/CodeGen/CGExpr.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExpr.cpp Thu Mar 29 15:08:01 2018
@@ -2975,6 +2975,7 @@ void CodeGenFunction::EmitCfiSlowPathChe
   bool WithDiag = !CGM.getCodeGenOpts().SanitizeTrap.has(Kind);
 
   llvm::CallInst *CheckCall;
+  llvm::Constant *SlowPathFn;
   if (WithDiag) {
 llvm::Constant *Info = llvm::ConstantStruct::getAnon(StaticArgs);
 auto *InfoPtr =
@@ -2983,20 +2984,20 @@ void CodeGenFunction::EmitCfiSlowPathChe
 InfoPtr->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
 CGM.getSanitizerMetadata()->disableSanitizerForGlobal(InfoPtr);
 
-llvm::Constant *SlowPathDiagFn = CGM.getModule().getOrInsertFunction(
+SlowPathFn = CGM.getModule().getOrInsertFunction(
 "__cfi_slowpath_diag",
 llvm::FunctionType::get(VoidTy, {Int64Ty, Int8PtrTy, Int8PtrTy},
 false));
 CheckCall = Builder.CreateCall(
-SlowPathDiagFn,
-{TypeId, Ptr, Builder.CreateBitCast(InfoPtr, Int8PtrTy)});
+SlowPathFn, {TypeId, Ptr, Builder.CreateBitCast(InfoPtr, Int8PtrTy)});
   } else {
-llvm::Constant *SlowPathFn = CGM.getModule().getOrInsertFunction(
+SlowPathFn = CGM.getModule().getOrInsertFunction(
 "__cfi_slowpath",
 llvm::FunctionType::get(VoidTy, {Int64Ty, Int8PtrTy}, false));
 CheckCall = Builder.CreateCall(SlowPathFn, {TypeId, Ptr});
   }
 
+  CGM.setDSOLocal(cast(SlowPathFn->stripPointerCasts()));
   CheckCall->setDoesNotThrow();
 
   EmitBlock(Cont);

Modified: cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c?rev=328836=328835=328836=diff
==
--- cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c (original)
+++ cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c Thu Mar 29 15:08:01 2018
@@ -39,6 +39,11 @@
 // MS-DIAG: call void @__cfi_slowpath_diag(i64 4195979634929632483, i8* 
%{{.*}}, {{.*}}@[[DATA]]{{.*}}) {{.*}}, !nosanitize
 // MS-TRAP: call void @__cfi_slowpath(i64 4195979634929632483, i8* %{{.*}}) 
{{.*}}, !nosanitize
 
+// ITANIUM-DIAG: declare void @__cfi_slowpath_diag(
+// ITANIUM-TRAP: declare void @__cfi_slowpath(
+// MS-DIAG: declare dso_local void @__cfi_slowpath_diag(
+// MS-TRAP: declare dso_local void @__cfi_slowpath(
+
 void caller(void (*f)()) {
   f();
 }


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


r328801 - Set dso_local when clearing dllimport.

2018-03-29 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Mar 29 09:45:18 2018
New Revision: 328801

URL: http://llvm.org/viewvc/llvm-project?rev=328801=rev
Log:
Set dso_local when clearing dllimport.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/test/CodeGenCXX/dllimport.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328801=328800=328801=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Mar 29 09:45:18 2018
@@ -2398,8 +2398,10 @@ llvm::Constant *CodeGenModule::GetOrCrea
 }
 
 // Handle dropped DLL attributes.
-if (D && !D->hasAttr() && !D->hasAttr())
+if (D && !D->hasAttr() && !D->hasAttr()) {
   Entry->setDLLStorageClass(llvm::GlobalValue::DefaultStorageClass);
+  setDSOLocal(Entry);
+}
 
 // If there are two attempts to define the same mangled name, issue an
 // error.

Modified: cfe/trunk/test/CodeGenCXX/dllimport.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/dllimport.cpp?rev=328801=328800=328801=diff
==
--- cfe/trunk/test/CodeGenCXX/dllimport.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/dllimport.cpp Thu Mar 29 09:45:18 2018
@@ -203,6 +203,8 @@ USEVAR(VarTmpl)
 // Functions
 
//===--===//
 
+// GNU-DAG: declare dso_local void @_ZdlPv(i8*)
+
 // Import function declaration.
 // MSC-DAG: declare dllimport void @"?decl@@YAXXZ"()
 // GNU-DAG: declare dllimport void @_Z4declv()


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


r328800 - Add a dllimport test.

2018-03-29 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Mar 29 09:35:52 2018
New Revision: 328800

URL: http://llvm.org/viewvc/llvm-project?rev=328800=rev
Log:
Add a dllimport test.

Thanks to rnk for the suggestion.

Added:
cfe/trunk/test/CodeGen/flip-dllimport.c

Added: cfe/trunk/test/CodeGen/flip-dllimport.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/flip-dllimport.c?rev=328800=auto
==
--- cfe/trunk/test/CodeGen/flip-dllimport.c (added)
+++ cfe/trunk/test/CodeGen/flip-dllimport.c Thu Mar 29 09:35:52 2018
@@ -0,0 +1,7 @@
+// RUN: %clang_cc1 -triple x86_64-windows-msvc -fms-extensions -emit-llvm -o - 
%s | FileCheck %s
+
+__declspec(dllimport) void f();
+void g() { f(); } // use it
+
+// CHECK: define dso_local dllexport void @f
+void f() { }


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


r328288 - Bring r328238 back with a fix.

2018-03-22 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Mar 22 18:36:23 2018
New Revision: 328288

URL: http://llvm.org/viewvc/llvm-project?rev=328288=rev
Log:
Bring r328238 back with a fix.

The issues was that we were setting hidden visibility if, when
processing a hidden class, we found out that we needed to emit a
reference to a vtable provided by the standard library.

Original message:

Set dso_local on vtables.

Modified:
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/test/CodeGenCXX/dllexport.cpp

Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=328288=328287=328288=diff
==
--- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original)
+++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Thu Mar 22 18:36:23 2018
@@ -2948,6 +2948,7 @@ void ItaniumRTTIBuilder::BuildVTablePoin
 
   llvm::Constant *VTable =
 CGM.getModule().getOrInsertGlobal(VTableName, CGM.Int8PtrTy);
+  CGM.setDSOLocal(cast(VTable->stripPointerCasts()));
 
   llvm::Type *PtrDiffTy =
 CGM.getTypes().ConvertType(CGM.getContext().getPointerDiffType());

Modified: cfe/trunk/test/CodeGenCXX/dllexport.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/dllexport.cpp?rev=328288=328287=328288=diff
==
--- cfe/trunk/test/CodeGenCXX/dllexport.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/dllexport.cpp Thu Mar 22 18:36:23 2018
@@ -43,6 +43,8 @@ __declspec(dllexport) extern int ExternG
 
 // M64-DAG: @__ImageBase = external dso_local constant i8
 
+// GNU-DAG: @_ZTVN10__cxxabiv117__class_type_infoE = external dso_local global
+
 // dllexport implies a definition.
 // MSC-DAG: @"?GlobalDef@@3HA" = dso_local dllexport global i32 0, align 4
 // GNU-DAG: @GlobalDef= dso_local dllexport global i32 0, align 4


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


r328266 - Set dso_local on __ImageBase.

2018-03-22 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Mar 22 16:02:19 2018
New Revision: 328266

URL: http://llvm.org/viewvc/llvm-project?rev=328266=rev
Log:
Set dso_local on __ImageBase.

Modified:
cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp
cfe/trunk/test/CodeGenCXX/dllexport.cpp

Modified: cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp?rev=328266=328265=328266=diff
==
--- cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp (original)
+++ cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp Thu Mar 22 16:02:19 2018
@@ -523,10 +523,12 @@ public:
 if (llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(Name))
   return GV;
 
-return new llvm::GlobalVariable(CGM.getModule(), CGM.Int8Ty,
-/*isConstant=*/true,
-llvm::GlobalValue::ExternalLinkage,
-/*Initializer=*/nullptr, Name);
+auto *GV = new llvm::GlobalVariable(CGM.getModule(), CGM.Int8Ty,
+/*isConstant=*/true,
+llvm::GlobalValue::ExternalLinkage,
+/*Initializer=*/nullptr, Name);
+CGM.setDSOLocal(GV);
+return GV;
   }
 
   llvm::Constant *getImageRelativeConstant(llvm::Constant *PtrVal) {

Modified: cfe/trunk/test/CodeGenCXX/dllexport.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/dllexport.cpp?rev=328266=328265=328266=diff
==
--- cfe/trunk/test/CodeGenCXX/dllexport.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/dllexport.cpp Thu Mar 22 16:02:19 2018
@@ -41,6 +41,8 @@ struct External { int v; };
 // GNU-NOT: @ExternGlobalDecl
 __declspec(dllexport) extern int ExternGlobalDecl;
 
+// M64-DAG: @__ImageBase = external dso_local constant i8
+
 // dllexport implies a definition.
 // MSC-DAG: @"?GlobalDef@@3HA" = dso_local dllexport global i32 0, align 4
 // GNU-DAG: @GlobalDef= dso_local dllexport global i32 0, align 4


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


r328263 - Add a test.

2018-03-22 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Mar 22 15:57:48 2018
New Revision: 328263

URL: http://llvm.org/viewvc/llvm-project?rev=328263=rev
Log:
Add a test.

This would have found the regression in r328238.

Added:
cfe/trunk/test/CodeGenCXX/rtti-hidden.cpp

Added: cfe/trunk/test/CodeGenCXX/rtti-hidden.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/rtti-hidden.cpp?rev=328263=auto
==
--- cfe/trunk/test/CodeGenCXX/rtti-hidden.cpp (added)
+++ cfe/trunk/test/CodeGenCXX/rtti-hidden.cpp Thu Mar 22 15:57:48 2018
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 %s -triple=x86_64-pc-linux -emit-llvm -o - | FileCheck %s
+
+// Test that this is not hidden.
+// CHECK: @_ZTVN10__cxxabiv120__si_class_type_infoE = external global
+
+class foo {
+  virtual void baz();
+};
+struct __attribute__((__visibility__("hidden"))) bar : public foo {};
+bar zed;


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


r328242 - Revert "Set dso_local on vtables."

2018-03-22 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Mar 22 14:14:16 2018
New Revision: 328242

URL: http://llvm.org/viewvc/llvm-project?rev=328242=rev
Log:
Revert "Set dso_local on vtables."

This reverts commit r328238.

Looks like it broke some buildbots.

Modified:
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/test/CodeGenCXX/dllexport.cpp

Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=328242=328241=328242=diff
==
--- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original)
+++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Thu Mar 22 14:14:16 2018
@@ -2848,7 +2848,6 @@ void ItaniumRTTIBuilder::BuildVTablePoin
 
   const char *VTableName = nullptr;
 
-  const CXXRecordDecl *RD = nullptr;
   switch (Ty->getTypeClass()) {
 #define TYPE(Class, Base)
 #define ABSTRACT_TYPE(Class, Base)
@@ -2900,7 +2899,8 @@ void ItaniumRTTIBuilder::BuildVTablePoin
 break;
 
   case Type::Record: {
-RD = cast(cast(Ty)->getDecl());
+const CXXRecordDecl *RD =
+  cast(cast(Ty)->getDecl());
 
 if (!RD->hasDefinition() || !RD->getNumBases()) {
   VTableName = ClassTypeInfo;
@@ -2948,7 +2948,6 @@ void ItaniumRTTIBuilder::BuildVTablePoin
 
   llvm::Constant *VTable =
 CGM.getModule().getOrInsertGlobal(VTableName, CGM.Int8PtrTy);
-  CGM.setGVProperties(cast(VTable->stripPointerCasts()), 
RD);
 
   llvm::Type *PtrDiffTy =
 CGM.getTypes().ConvertType(CGM.getContext().getPointerDiffType());

Modified: cfe/trunk/test/CodeGenCXX/dllexport.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/dllexport.cpp?rev=328242=328241=328242=diff
==
--- cfe/trunk/test/CodeGenCXX/dllexport.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/dllexport.cpp Thu Mar 22 14:14:16 2018
@@ -41,8 +41,6 @@ struct External { int v; };
 // GNU-NOT: @ExternGlobalDecl
 __declspec(dllexport) extern int ExternGlobalDecl;
 
-// GNU-DAG: @_ZTVN10__cxxabiv117__class_type_infoE = external dso_local global
-
 // dllexport implies a definition.
 // MSC-DAG: @"?GlobalDef@@3HA" = dso_local dllexport global i32 0, align 4
 // GNU-DAG: @GlobalDef= dso_local dllexport global i32 0, align 4


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


r328238 - Set dso_local on vtables.

2018-03-22 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Mar 22 13:33:01 2018
New Revision: 328238

URL: http://llvm.org/viewvc/llvm-project?rev=328238=rev
Log:
Set dso_local on vtables.

Modified:
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/test/CodeGenCXX/dllexport.cpp

Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=328238=328237=328238=diff
==
--- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original)
+++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Thu Mar 22 13:33:01 2018
@@ -2848,6 +2848,7 @@ void ItaniumRTTIBuilder::BuildVTablePoin
 
   const char *VTableName = nullptr;
 
+  const CXXRecordDecl *RD = nullptr;
   switch (Ty->getTypeClass()) {
 #define TYPE(Class, Base)
 #define ABSTRACT_TYPE(Class, Base)
@@ -2899,8 +2900,7 @@ void ItaniumRTTIBuilder::BuildVTablePoin
 break;
 
   case Type::Record: {
-const CXXRecordDecl *RD =
-  cast(cast(Ty)->getDecl());
+RD = cast(cast(Ty)->getDecl());
 
 if (!RD->hasDefinition() || !RD->getNumBases()) {
   VTableName = ClassTypeInfo;
@@ -2948,6 +2948,7 @@ void ItaniumRTTIBuilder::BuildVTablePoin
 
   llvm::Constant *VTable =
 CGM.getModule().getOrInsertGlobal(VTableName, CGM.Int8PtrTy);
+  CGM.setGVProperties(cast(VTable->stripPointerCasts()), 
RD);
 
   llvm::Type *PtrDiffTy =
 CGM.getTypes().ConvertType(CGM.getContext().getPointerDiffType());

Modified: cfe/trunk/test/CodeGenCXX/dllexport.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/dllexport.cpp?rev=328238=328237=328238=diff
==
--- cfe/trunk/test/CodeGenCXX/dllexport.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/dllexport.cpp Thu Mar 22 13:33:01 2018
@@ -41,6 +41,8 @@ struct External { int v; };
 // GNU-NOT: @ExternGlobalDecl
 __declspec(dllexport) extern int ExternGlobalDecl;
 
+// GNU-DAG: @_ZTVN10__cxxabiv117__class_type_infoE = external dso_local global
+
 // dllexport implies a definition.
 // MSC-DAG: @"?GlobalDef@@3HA" = dso_local dllexport global i32 0, align 4
 // GNU-DAG: @GlobalDef= dso_local dllexport global i32 0, align 4


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


r328224 - Set dso_local on builtin functions.

2018-03-22 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Mar 22 11:03:13 2018
New Revision: 328224

URL: http://llvm.org/viewvc/llvm-project?rev=328224=rev
Log:
Set dso_local on builtin functions.

The difference between CreateRuntimeFunction and CreateBuiltinFunction
is that CreateBuiltinFunction would not set dllimport or dso_local.

To keep the current semantics, just forward to CreateRuntimeFunction
with Local=true so it doesn't add dllimport.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/test/CodeGen/mingw-long-double.c

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328224=328223=328224=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Mar 22 11:03:13 2018
@@ -2640,13 +2640,7 @@ CodeGenModule::CreateRuntimeFunction(llv
 llvm::Constant *
 CodeGenModule::CreateBuiltinFunction(llvm::FunctionType *FTy, StringRef Name,
  llvm::AttributeList ExtraAttrs) {
-  llvm::Constant *C =
-  GetOrCreateLLVMFunction(Name, FTy, GlobalDecl(), /*ForVTable=*/false,
-  /*DontDefer=*/false, /*IsThunk=*/false, 
ExtraAttrs);
-  if (auto *F = dyn_cast(C))
-if (F->empty())
-  F->setCallingConv(getRuntimeCC());
-  return C;
+  return CreateRuntimeFunction(FTy, Name, ExtraAttrs, true);
 }
 
 /// isTypeConstant - Determine whether an object of this type can be emitted

Modified: cfe/trunk/test/CodeGen/mingw-long-double.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/mingw-long-double.c?rev=328224=328223=328224=diff
==
--- cfe/trunk/test/CodeGen/mingw-long-double.c (original)
+++ cfe/trunk/test/CodeGen/mingw-long-double.c Thu Mar 22 11:03:13 2018
@@ -42,6 +42,6 @@ long double _Complex TestLDC(long double
 // GNU64: define dso_local void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret 
%agg.result, { x86_fp80, x86_fp80 }* %x)
 // MSC64: define dso_local void @TestLDC({ double, double }* noalias sret 
%agg.result, { double, double }* %x)
 
-// GNU32: declare void @__mulxc3
-// GNU64: declare void @__mulxc3
-// MSC64: declare void @__muldc3
+// GNU32: declare dso_local void @__mulxc3
+// GNU64: declare dso_local void @__mulxc3
+// MSC64: declare dso_local void @__muldc3


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


r328068 - Set dso_local on runtime variables.

2018-03-20 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Mar 20 18:30:16 2018
New Revision: 328068

URL: http://llvm.org/viewvc/llvm-project?rev=328068=rev
Log:
Set dso_local on runtime variables.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/test/CodeGenCXX/ubsan-vtable-checks.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328068=328067=328068=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Mar 20 18:30:16 2018
@@ -2953,7 +2953,10 @@ llvm::Constant *CodeGenModule::GetAddrOf
 llvm::Constant *
 CodeGenModule::CreateRuntimeVariable(llvm::Type *Ty,
  StringRef Name) {
-  return GetOrCreateLLVMGlobal(Name, llvm::PointerType::getUnqual(Ty), 
nullptr);
+  auto *Ret =
+  GetOrCreateLLVMGlobal(Name, llvm::PointerType::getUnqual(Ty), nullptr);
+  setDSOLocal(cast(Ret->stripPointerCasts()));
+  return Ret;
 }
 
 void CodeGenModule::EmitTentativeDefinition(const VarDecl *D) {

Modified: cfe/trunk/test/CodeGenCXX/ubsan-vtable-checks.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/ubsan-vtable-checks.cpp?rev=328068=328067=328068=diff
==
--- cfe/trunk/test/CodeGenCXX/ubsan-vtable-checks.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/ubsan-vtable-checks.cpp Tue Mar 20 18:30:16 2018
@@ -1,7 +1,7 @@
 // RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-linux -emit-llvm 
-fsanitize=null %s -o - | FileCheck %s --check-prefix=CHECK 
--check-prefix=CHECK-NULL --check-prefix=ITANIUM
 // RUN: %clang_cc1 -std=c++11 -triple x86_64-windows -emit-llvm 
-fsanitize=null %s -o - | FileCheck %s --check-prefix=CHECK 
--check-prefix=CHECK-NULL --check-prefix=MSABI
 // RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-linux -emit-llvm 
-fsanitize=null,vptr %s -o - | FileCheck %s --check-prefix=CHECK 
--check-prefix=CHECK-VPTR --check-prefix=ITANIUM
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-windows -emit-llvm 
-fsanitize=null,vptr %s -o - | FileCheck %s --check-prefix=CHECK 
--check-prefix=CHECK-VPTR --check-prefix=MSABI
+// RUN: %clang_cc1 -std=c++11 -triple x86_64-windows -emit-llvm 
-fsanitize=null,vptr %s -o - | FileCheck %s --check-prefix=CHECK 
--check-prefix=CHECK-VPTR --check-prefix=MSABI  --check-prefix=CHECK-VPTR-MS
 struct T {
   virtual ~T() {}
   virtual int v() { return 1; }
@@ -14,6 +14,8 @@ struct U : T {
 
 U::~U() {}
 
+// CHECK-VPTR-MS: @__ubsan_vptr_type_cache = external dso_local
+
 // ITANIUM: define i32 @_Z5get_vP1T
 // MSABI: define dso_local i32 @"?get_v
 int get_v(T* t) {


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


r328050 - Delete BuiltinCC. NFC.

2018-03-20 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Mar 20 15:02:57 2018
New Revision: 328050

URL: http://llvm.org/viewvc/llvm-project?rev=328050=rev
Log:
Delete BuiltinCC. NFC.

It is always identical to RuntimeCC.

Modified:
cfe/trunk/lib/CodeGen/ABIInfo.h
cfe/trunk/lib/CodeGen/CGExprComplex.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenTypeCache.h
cfe/trunk/lib/CodeGen/TargetInfo.cpp

Modified: cfe/trunk/lib/CodeGen/ABIInfo.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ABIInfo.h?rev=328050=328049=328050=diff
==
--- cfe/trunk/lib/CodeGen/ABIInfo.h (original)
+++ cfe/trunk/lib/CodeGen/ABIInfo.h Tue Mar 20 15:02:57 2018
@@ -53,12 +53,9 @@ namespace swiftcall {
 CodeGen::CodeGenTypes 
   protected:
 llvm::CallingConv::ID RuntimeCC;
-llvm::CallingConv::ID BuiltinCC;
   public:
 ABIInfo(CodeGen::CodeGenTypes )
-  : CGT(cgt),
-RuntimeCC(llvm::CallingConv::C),
-BuiltinCC(llvm::CallingConv::C) {}
+: CGT(cgt), RuntimeCC(llvm::CallingConv::C) {}
 
 virtual ~ABIInfo();
 
@@ -77,11 +74,6 @@ namespace swiftcall {
   return RuntimeCC;
 }
 
-/// Return the calling convention to use for compiler builtins
-llvm::CallingConv::ID getBuiltinCC() const {
-  return BuiltinCC;
-}
-
 virtual void computeInfo(CodeGen::CGFunctionInfo ) const = 0;
 
 /// EmitVAArg - Emit the target dependent code to load a value of

Modified: cfe/trunk/lib/CodeGen/CGExprComplex.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprComplex.cpp?rev=328050=328049=328050=diff
==
--- cfe/trunk/lib/CodeGen/CGExprComplex.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExprComplex.cpp Tue Mar 20 15:02:57 2018
@@ -629,7 +629,7 @@ ComplexPairTy ComplexExprEmitter::EmitCo
 
   llvm::Instruction *Call;
   RValue Res = CGF.EmitCall(FuncInfo, Callee, ReturnValueSlot(), Args, );
-  cast(Call)->setCallingConv(CGF.CGM.getBuiltinCC());
+  cast(Call)->setCallingConv(CGF.CGM.getRuntimeCC());
   return Res.getComplexVal();
 }
 

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328050=328049=328050=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Mar 20 15:02:57 2018
@@ -123,7 +123,6 @@ CodeGenModule::CodeGenModule(ASTContext
   ASTAllocaAddressSpace = getTargetCodeGenInfo().getASTAllocaAddressSpace();
 
   RuntimeCC = getTargetCodeGenInfo().getABIInfo().getRuntimeCC();
-  BuiltinCC = getTargetCodeGenInfo().getABIInfo().getBuiltinCC();
 
   if (LangOpts.ObjC1)
 createObjCRuntime();
@@ -2646,7 +2645,7 @@ CodeGenModule::CreateBuiltinFunction(llv
   /*DontDefer=*/false, /*IsThunk=*/false, 
ExtraAttrs);
   if (auto *F = dyn_cast(C))
 if (F->empty())
-  F->setCallingConv(getBuiltinCC());
+  F->setCallingConv(getRuntimeCC());
   return C;
 }
 

Modified: cfe/trunk/lib/CodeGen/CodeGenTypeCache.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenTypeCache.h?rev=328050=328049=328050=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenTypeCache.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenTypeCache.h Tue Mar 20 15:02:57 2018
@@ -112,8 +112,6 @@ struct CodeGenTypeCache {
 
   llvm::CallingConv::ID RuntimeCC;
   llvm::CallingConv::ID getRuntimeCC() const { return RuntimeCC; }
-  llvm::CallingConv::ID BuiltinCC;
-  llvm::CallingConv::ID getBuiltinCC() const { return BuiltinCC; }
 
   LangAS getASTAllocaAddressSpace() const { return ASTAllocaAddressSpace; }
 };

Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=328050=328049=328050=diff
==
--- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original)
+++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Tue Mar 20 15:02:57 2018
@@ -5690,18 +5690,6 @@ void ARMABIInfo::setCCs() {
   llvm::CallingConv::ID abiCC = getABIDefaultCC();
   if (abiCC != getLLVMDefaultCC())
 RuntimeCC = abiCC;
-
-  // AAPCS apparently requires runtime support functions to be soft-float, but
-  // that's almost certainly for historic reasons (Thumb1 not supporting VFP
-  // most likely). It's more convenient for AAPCS16_VFP to be hard-float.
-
-  // The Run-time ABI for the ARM Architecture section 4.1.2 requires
-  // AEABI-complying FP helper functions to use the base AAPCS.
-  // These AEABI functions are expanded in the ARM llvm backend, all the 
builtin
-  // support functions emitted by clang such as the _Complex helpers follow the
-  // abiCC.
-  if (abiCC != getLLVMDefaultCC())
-  

r328048 - Add CHECKs for a few declarations. NFC.

2018-03-20 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Mar 20 14:54:14 2018
New Revision: 328048

URL: http://llvm.org/viewvc/llvm-project?rev=328048=rev
Log:
Add CHECKs for a few declarations. NFC.

We were just missing test coverage for this.

Modified:
cfe/trunk/test/CodeGen/mingw-long-double.c

Modified: cfe/trunk/test/CodeGen/mingw-long-double.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/mingw-long-double.c?rev=328048=328047=328048=diff
==
--- cfe/trunk/test/CodeGen/mingw-long-double.c (original)
+++ cfe/trunk/test/CodeGen/mingw-long-double.c Tue Mar 20 14:54:14 2018
@@ -41,3 +41,7 @@ long double _Complex TestLDC(long double
 // GNU32: define dso_local void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret 
%agg.result, { x86_fp80, x86_fp80 }* byval align 4 %x)
 // GNU64: define dso_local void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret 
%agg.result, { x86_fp80, x86_fp80 }* %x)
 // MSC64: define dso_local void @TestLDC({ double, double }* noalias sret 
%agg.result, { double, double }* %x)
+
+// GNU32: declare void @__mulxc3
+// GNU64: declare void @__mulxc3
+// MSC64: declare void @__muldc3


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


r328040 - Set dso_local on string literals.

2018-03-20 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Mar 20 13:42:55 2018
New Revision: 328040

URL: http://llvm.org/viewvc/llvm-project?rev=328040=rev
Log:
Set dso_local on string literals.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/test/CodeGen/c-strings.c
cfe/trunk/test/CodeGen/string-literal-short-wstring.c
cfe/trunk/test/CodeGen/wchar-const.c
cfe/trunk/test/CodeGenCXX/funcsig.cpp
cfe/trunk/test/CodeGenCXX/ms_wide_predefined_expr.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328040=328039=328040=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Mar 20 13:42:55 2018
@@ -4016,6 +4016,7 @@ GenerateStringLiteral(llvm::Constant *C,
 assert(CGM.supportsCOMDAT() && "Only COFF uses weak string literals");
 GV->setComdat(M.getOrInsertComdat(GV->getName()));
   }
+  CGM.setDSOLocal(GV);
 
   return GV;
 }

Modified: cfe/trunk/test/CodeGen/c-strings.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/c-strings.c?rev=328040=328039=328040=diff
==
--- cfe/trunk/test/CodeGen/c-strings.c (original)
+++ cfe/trunk/test/CodeGen/c-strings.c Tue Mar 20 13:42:55 2018
@@ -6,7 +6,7 @@
 
 // CHECK: @align = {{(dso_local )?}}global i8 [[ALIGN:[0-9]+]]
 // ITANIUM: @.str = private unnamed_addr constant [6 x i8] c"hello\00"
-// MSABI: @"??_C@_05CJBACGMB@hello?$AA@" = linkonce_odr unnamed_addr constant 
[6 x i8] c"hello\00", comdat, align 1
+// MSABI: @"??_C@_05CJBACGMB@hello?$AA@" = linkonce_odr dso_local unnamed_addr 
constant [6 x i8] c"hello\00", comdat, align 1
 // ITANIUM: @f1.x = internal global i8* getelementptr inbounds ([6 x i8], [6 x 
i8]* @.str, i32 0, i32 0)
 // MSABI: @f1.x = internal global i8* getelementptr inbounds ([6 x i8], [6 x 
i8]* @"??_C@_05CJBACGMB@hello?$AA@", i32 0, i32 0)
 // CHECK: @f2.x = internal global [6 x i8] c"hello\00", align [[ALIGN]]

Modified: cfe/trunk/test/CodeGen/string-literal-short-wstring.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/string-literal-short-wstring.c?rev=328040=328039=328040=diff
==
--- cfe/trunk/test/CodeGen/string-literal-short-wstring.c (original)
+++ cfe/trunk/test/CodeGen/string-literal-short-wstring.c Tue Mar 20 13:42:55 
2018
@@ -12,12 +12,12 @@ int main() {
   char b[10] = "\u1120\u0220\U00102030";
 
   // ITANIUM: private unnamed_addr constant [3 x i16] [i16 65, i16 66, i16 0]
-  // MSABI: linkonce_odr unnamed_addr constant [3 x i16] [i16 65, i16 66, i16 
0]
+  // MSABI: linkonce_odr dso_local unnamed_addr constant [3 x i16] [i16 65, 
i16 66, i16 0]
   const wchar_t *foo = L"AB";
 
   // This should convert to utf16.
   // ITANIUM: private unnamed_addr constant [5 x i16] [i16 4384, i16 544, i16 
-9272, i16 -9168, i16 0]
-  // MSABI: linkonce_odr unnamed_addr constant [5 x i16] [i16 4384, i16 544, 
i16 -9272, i16 -9168, i16 0]
+  // MSABI: linkonce_odr dso_local unnamed_addr constant [5 x i16] [i16 4384, 
i16 544, i16 -9272, i16 -9168, i16 0]
   const wchar_t *bar = L"\u1120\u0220\U00102030";
 
 

Modified: cfe/trunk/test/CodeGen/wchar-const.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/wchar-const.c?rev=328040=328039=328040=diff
==
--- cfe/trunk/test/CodeGen/wchar-const.c (original)
+++ cfe/trunk/test/CodeGen/wchar-const.c Tue Mar 20 13:42:55 2018
@@ -15,7 +15,7 @@ typedef __WCHAR_TYPE__ wchar_t;
 
 
 // CHECK-DAR: private unnamed_addr constant [18 x i32] [i32 84,
-// CHECK-WIN: linkonce_odr unnamed_addr constant [18 x i16] [i16 84,
+// CHECK-WIN: linkonce_odr dso_local unnamed_addr constant [18 x i16] [i16 84,
 extern void foo(const wchar_t* p);
 int main (int argc, const char * argv[])
 {

Modified: cfe/trunk/test/CodeGenCXX/funcsig.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/funcsig.cpp?rev=328040=328039=328040=diff
==
--- cfe/trunk/test/CodeGenCXX/funcsig.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/funcsig.cpp Tue Mar 20 13:42:55 2018
@@ -12,24 +12,24 @@ int printf(const char *, ...);
 void funcNoProto() {
   printf("__FUNCSIG__ %s\n\n", __FUNCSIG__);
 }
-// CHECK-C:   @"??_C@_0BL@IHLLLCAO@void?5__cdecl?5funcNoProto?$CI?$CJ?$AA@" = 
linkonce_odr unnamed_addr constant [27 x i8] c"void __cdecl funcNoProto()\00"
-// CHECK-CXX: 
@"??_C@_0BP@PJOECCJN@void?5__cdecl?5funcNoProto?$CIvoid?$CJ?$AA@" = 
linkonce_odr unnamed_addr constant [31 x i8] c"void __cdecl 
funcNoProto(void)\00"
+// CHECK-C:   @"??_C@_0BL@IHLLLCAO@void?5__cdecl?5funcNoProto?$CI?$CJ?$AA@" = 
linkonce_odr dso_local unnamed_addr constant [27 x i8] c"void __cdecl 

r328036 - Set dso_local for runtime function.

2018-03-20 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Mar 20 13:27:30 2018
New Revision: 328036

URL: http://llvm.org/viewvc/llvm-project?rev=328036=rev
Log:
Set dso_local for runtime function.

This is another case where there is special logic for adding dllimport
and so we cannot use setGVProperties.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328036=328035=328036=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Mar 20 13:27:30 2018
@@ -2629,6 +2629,7 @@ CodeGenModule::CreateRuntimeFunction(llv
   F->setLinkage(llvm::GlobalValue::ExternalLinkage);
 }
   }
+  setDSOLocal(F);
 }
   }
 

Modified: cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp?rev=328036=328035=328036=diff
==
--- cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp Tue Mar 20 13:27:30 2018
@@ -106,16 +106,16 @@ void l() {
 }
 
 // CHECK-MS-DAG: @_Init_thread_epoch = external thread_local global i32
-// CHECK-MS-DAG: declare i32 @__tlregdtor(void ()*)
-// CHECK-MS-DAG: declare i32 @atexit(void ()*)
+// CHECK-MS-DAG: declare dso_local i32 @__tlregdtor(void ()*)
+// CHECK-MS-DAG: declare dso_local i32 @atexit(void ()*)
 // CHECK-MS-DYNAMIC-DAG: declare dllimport {{.*}} void @_CxxThrowException
 // CHECK-MS-STATIC-DAG: declare {{.*}} void @_CxxThrowException
 // CHECK-MS-DAG: declare dso_local noalias i8* @"??2@YAPAXI@Z"
-// CHECK-MS-DAG: declare void @_Init_thread_header(i32*)
-// CHECK-MS-DAG: declare void @_Init_thread_footer(i32*)
+// CHECK-MS-DAG: declare dso_local void @_Init_thread_header(i32*)
+// CHECK-MS-DAG: declare dso_local void @_Init_thread_footer(i32*)
 
 // CHECK-IA-DAG: @_ZTH1t = dso_local alias void (), void ()* @__tls_init
-// CHECK-IA-DAG: declare i32 @__gxx_personality_v0(...)
+// CHECK-IA-DAG: declare dso_local i32 @__gxx_personality_v0(...)
 // CHECK-IA-DAG: define linkonce_odr hidden void @__clang_call_terminate(i8*)
 
 // CHECK-DYNAMIC-IA-DAG: declare dllimport i32 @__cxa_thread_atexit(void 
(i8*)*, i8*, i8*)
@@ -135,25 +135,25 @@ void l() {
 // CHECK-DYNAMIC-IMPORT-IA-DAG: declare dllimport void 
@__cxa_guard_release(i64*)
 // CHECK-DYNAMIC-EXPORT-IA-DAG: declare dllimport void 
@__cxa_guard_release(i64*)
 // CHECK-DYANMIC-IA-DAG: declare dllimport void @_ZSt9terminatev()
-// CHECK-DYNAMIC-NODECL-IA-DAG: declare void @_ZSt9terminatev()
+// CHECK-DYNAMIC-NODECL-IA-DAG: declare dso_local void @_ZSt9terminatev()
 // CHECK-DYNAMIC-IMPORT-IA-DAG: declare dllimport void @_ZSt9terminatev()
 // CHECK-DYNAMIC-EXPORT-IA-DAG: declare dso_local dllexport void 
@_ZSt9terminatev()
 
-// CHECK-STATIC-IA-DAG: declare i32 @__cxa_thread_atexit(void (i8*)*, i8*, i8*)
-// CHECK-STATIC-IA-DAG: declare i32 @__cxa_atexit(void (i8*)*, i8*, i8*)
-// CHECK-STATIC-IA-DAG: declare i8* @__cxa_allocate_exception(i32)
-// CHECK-STATIC-IA-DAG: declare void @__cxa_throw(i8*, i8*, i8*)
-// CHECK-STATIC-DECL-IA-DAG: declare i32 @__cxa_guard_acquire(i64*)
-// CHECK-STATIC-NODECL-IA-DAG: declare i32 @__cxa_guard_acquire(i64*)
-// CHECK-STATIC-IMPORT-IA-DAG: declare i32 @__cxa_guard_acquire(i64*)
+// CHECK-STATIC-IA-DAG: declare dso_local i32 @__cxa_thread_atexit(void 
(i8*)*, i8*, i8*)
+// CHECK-STATIC-IA-DAG: declare dso_local i32 @__cxa_atexit(void (i8*)*, i8*, 
i8*)
+// CHECK-STATIC-IA-DAG: declare dso_local i8* @__cxa_allocate_exception(i32)
+// CHECK-STATIC-IA-DAG: declare dso_local void @__cxa_throw(i8*, i8*, i8*)
+// CHECK-STATIC-DECL-IA-DAG: declare dso_local i32 @__cxa_guard_acquire(i64*)
+// CHECK-STATIC-NODECL-IA-DAG: declare dso_local i32 @__cxa_guard_acquire(i64*)
+// CHECK-STATIC-IMPORT-IA-DAG: declare dso_local i32 @__cxa_guard_acquire(i64*)
 // CHECK-STATIC-EXPORT-IA-DAG: declare dso_local i32 @__cxa_guard_acquire(i64*)
 // CHECK-IA-DAG: declare dso_local noalias i8* @_Znwj(i32)
-// CHECK-STATIC-DECL-IA-DAG: declare void @__cxa_guard_release(i64*)
-// CHECK-STATIC-NODECL-IA-DAG: declare void @__cxa_guard_release(i64*)
-// CHECK-STATIC-IMPORT-IA-DAG: declare void @__cxa_guard_release(i64*)
+// CHECK-STATIC-DECL-IA-DAG: declare dso_local void @__cxa_guard_release(i64*)
+// CHECK-STATIC-NODECL-IA-DAG: declare dso_local void 
@__cxa_guard_release(i64*)
+// CHECK-STATIC-IMPORT-IA-DAG: declare dso_local void 
@__cxa_guard_release(i64*)
 // CHECK-STATIC-EXPORT-IA-DAG: declare dso_local void 
@__cxa_guard_release(i64*)
-// CHECK-STATIC-IA-DAG: declare void @_ZSt9terminatev()
-// CHECK-STATIC-NODECL-IA-DAG: declare void @_ZSt9terminatev()
-// CHECK-STATIC-IMPORT-IA-DAG: declare void 

r327993 - Set dso_local for CFConstantStringClassReference.

2018-03-20 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Mar 20 08:48:00 2018
New Revision: 327993

URL: http://llvm.org/viewvc/llvm-project?rev=327993=rev
Log:
Set dso_local for CFConstantStringClassReference.

This one cannot use setGVProperties since it has special logic for
when it is dllimport or not.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/test/CodeGen/cfstring-windows.c

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=327993=327992=327993=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Mar 20 08:48:00 2018
@@ -3810,14 +3810,13 @@ CodeGenModule::GetAddrOfConstantCFString
   if (!CFConstantStringClassRef) {
 llvm::Type *Ty = getTypes().ConvertType(getContext().IntTy);
 Ty = llvm::ArrayType::get(Ty, 0);
-llvm::Constant *GV =
-CreateRuntimeVariable(Ty, "__CFConstantStringClassReference");
+llvm::GlobalValue *GV = cast(
+CreateRuntimeVariable(Ty, "__CFConstantStringClassReference"));
 
 if (getTriple().isOSBinFormatCOFF()) {
   IdentifierInfo  = getContext().Idents.get(GV->getName());
   TranslationUnitDecl *TUDecl = getContext().getTranslationUnitDecl();
   DeclContext *DC = TranslationUnitDecl::castToDeclContext(TUDecl);
-  llvm::GlobalValue *CGV = cast(GV);
 
   const VarDecl *VD = nullptr;
   for (const auto  : DC->lookup())
@@ -3825,13 +3824,14 @@ CodeGenModule::GetAddrOfConstantCFString
   break;
 
   if (!VD || !VD->hasAttr()) {
-CGV->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass);
-CGV->setLinkage(llvm::GlobalValue::ExternalLinkage);
+GV->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass);
+GV->setLinkage(llvm::GlobalValue::ExternalLinkage);
   } else {
-CGV->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass);
-CGV->setLinkage(llvm::GlobalValue::ExternalLinkage);
+GV->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass);
+GV->setLinkage(llvm::GlobalValue::ExternalLinkage);
   }
 }
+setDSOLocal(GV);
 
 // Decay array -> ptr
 CFConstantStringClassRef =

Modified: cfe/trunk/test/CodeGen/cfstring-windows.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cfstring-windows.c?rev=327993=327992=327993=diff
==
--- cfe/trunk/test/CodeGen/cfstring-windows.c (original)
+++ cfe/trunk/test/CodeGen/cfstring-windows.c Tue Mar 20 08:48:00 2018
@@ -31,7 +31,7 @@ __declspec(dllimport) long __CFConstantS
 typedef struct __CFString *CFStringRef;
 const CFStringRef string = 
(CFStringRef)__builtin___CFStringMakeConstantString("string");
 
-// CHECK-CF-IN-CF-DECL: @__CFConstantStringClassReference = external dllexport 
global [0 x i32]
+// CHECK-CF-IN-CF-DECL: @__CFConstantStringClassReference = external dso_local 
dllexport global [0 x i32]
 // CHECK-CF-IN-CF-DEFN: @__CFConstantStringClassReference = common dso_local 
dllexport global [32 x i32]
 // CHECK-CF: @__CFConstantStringClassReference = external dllimport global [0 
x i32]
 // CHECK-CF-EXTERN: @__CFConstantStringClassReference = external dllimport 
global [0 x i32]


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


r327991 - Set dso_local for guid decls.

2018-03-20 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Mar 20 08:42:58 2018
New Revision: 327991

URL: http://llvm.org/viewvc/llvm-project?rev=327991=rev
Log:
Set dso_local for guid decls.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=327991=327990=327991=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Mar 20 08:42:58 2018
@@ -1921,6 +1921,7 @@ ConstantAddress CodeGenModule::GetAddrOf
   /*isConstant=*/true, llvm::GlobalValue::LinkOnceODRLinkage, Init, Name);
   if (supportsCOMDAT())
 GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
+  setDSOLocal(GV);
   return ConstantAddress(GV, Alignment);
 }
 

Modified: cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp?rev=327991=327990=327991=diff
==
--- cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp Tue Mar 20 08:42:58 
2018
@@ -15,6 +15,8 @@ struct __declspec(uuid("{--B
 
 struct __declspec(uuid("{----}")) C {};
 
+// CHECK-DAG: @_GUID_____ = linkonce_odr 
dso_local
+
 const _GUID  = __uuidof(X);
 // CHECK-DAG:  @"?xa@@3ABU_GUID@@B" = {{.*}} 
@_GUID_____
 


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


r327544 - Set dso_local for NSConcreteStackBlock.

2018-03-14 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Mar 14 11:19:26 2018
New Revision: 327544

URL: http://llvm.org/viewvc/llvm-project?rev=327544=rev
Log:
Set dso_local for NSConcreteStackBlock.

Modified:
cfe/trunk/lib/CodeGen/CGBlocks.cpp
cfe/trunk/test/CodeGen/blocks-windows.c

Modified: cfe/trunk/lib/CodeGen/CGBlocks.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBlocks.cpp?rev=327544=327543=327544=diff
==
--- cfe/trunk/lib/CodeGen/CGBlocks.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBlocks.cpp Wed Mar 14 11:19:26 2018
@@ -2586,11 +2586,11 @@ static void configureBlocksRuntimeObject
 }
   }
 
-  if (!CGM.getLangOpts().BlocksRuntimeOptional)
-return;
-
-  if (GV->isDeclaration() && GV->hasExternalLinkage())
+  if (CGM.getLangOpts().BlocksRuntimeOptional && GV->isDeclaration() &&
+  GV->hasExternalLinkage())
 GV->setLinkage(llvm::GlobalValue::ExternalWeakLinkage);
+
+  CGM.setDSOLocal(GV);
 }
 
 llvm::Constant *CodeGenModule::getBlockObjectDispose() {

Modified: cfe/trunk/test/CodeGen/blocks-windows.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/blocks-windows.c?rev=327544=327543=327544=diff
==
--- cfe/trunk/test/CodeGen/blocks-windows.c (original)
+++ cfe/trunk/test/CodeGen/blocks-windows.c Wed Mar 14 11:19:26 2018
@@ -67,7 +67,7 @@ int (*g(void))(void) {
   return _Block_copy(^{ ++i; return i; });
 }
 
-// CHECK-BLOCKS-IN-BLOCKS-DECL: @_NSConcreteStackBlock = external dllexport 
global i8*
+// CHECK-BLOCKS-IN-BLOCKS-DECL: @_NSConcreteStackBlock = external dso_local 
dllexport global i8*
 // CHECK-BLOCKS-IN-BLOCKS-DEFN: @_NSConcreteStackBlock = common dso_local 
dllexport global [5 x i32]
 // CHECK-BLOCKS-NOT-IN-BLOCKS: @_NSConcreteStackBlock = external dllimport 
global i8*
 // CHECK-BLOCKS-NOT-IN-BLOCKS-EXTERN: @_NSConcreteStackBlock = external 
dllimport global i8*


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


r327543 - Set dso_local on external rtti GVs.

2018-03-14 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Mar 14 11:14:46 2018
New Revision: 327543

URL: http://llvm.org/viewvc/llvm-project?rev=327543=rev
Log:
Set dso_local on external rtti GVs.

In this particular case it would be possible to just add an else with
CGM.setDSOLocal(GV), but it seems better to have as many callers as
possible just call setGVProperties so that we can centralize the logic
there.

This patch then makes setGVProperties able to handle null Decls.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=327543=327542=327543=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Mar 14 11:14:46 2018
@@ -707,7 +707,8 @@ void CodeGenModule::setGlobalVisibility(
 GV->setVisibility(llvm::GlobalValue::DefaultVisibility);
 return;
   }
-
+  if (!D)
+return;
   // Set visibility for definitions.
   LinkageInfo LV = D->getLinkageAndVisibility();
   if (LV.isVisibilityExplicit() || !GV->isDeclarationForLinker())
@@ -797,7 +798,7 @@ void CodeGenModule::setDLLImportDLLExpor
 
 void CodeGenModule::setDLLImportDLLExport(llvm::GlobalValue *GV,
   const NamedDecl *D) const {
-  if (D->isExternallyVisible()) {
+  if (D && D->isExternallyVisible()) {
 if (D->hasAttr())
   GV->setDLLStorageClass(llvm::GlobalVariable::DLLImportStorageClass);
 else if (D->hasAttr() && !GV->isDeclarationForLinker())

Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=327543=327542=327543=diff
==
--- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original)
+++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Wed Mar 14 11:14:46 2018
@@ -2616,10 +2616,8 @@ ItaniumRTTIBuilder::GetAddrOfExternalRTT
   /*Constant=*/true,
   llvm::GlobalValue::ExternalLinkage, nullptr,
   Name);
-if (const RecordType *RecordTy = dyn_cast(Ty)) {
-  const CXXRecordDecl *RD = cast(RecordTy->getDecl());
-  CGM.setGVProperties(GV, RD);
-}
+const CXXRecordDecl *RD = Ty->getAsCXXRecordDecl();
+CGM.setGVProperties(GV, RD);
   }
 
   return llvm::ConstantExpr::getBitCast(GV, CGM.Int8PtrTy);

Modified: cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp?rev=327543=327542=327543=diff
==
--- cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp Wed Mar 14 
11:14:46 2018
@@ -10,7 +10,7 @@ void attempt() {
   try { except(); } catch (...) { }
 }
 
-// CHECK: @_ZTIi = external constant i8*
+// CHECK: @_ZTIi = external dso_local constant i8*
 
 // CHECK: define {{.*}}void @_Z6exceptv() {{.*}} {
 // CHECK:   %exception = call {{.*}}i8* @__cxa_allocate_exception(i32 4)


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


r326961 - Set dso_local on tls init functions.

2018-03-07 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Mar  7 15:18:06 2018
New Revision: 326961

URL: http://llvm.org/viewvc/llvm-project?rev=326961=rev
Log:
Set dso_local on tls init functions.

We copy the visibility, so copying the dso_local flag seems the
natural thing to do.

Modified:
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp

Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=326961=326960=326961=diff
==
--- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original)
+++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Wed Mar  7 15:18:06 2018
@@ -2398,8 +2398,10 @@ void ItaniumCXXABI::EmitThreadLocalInitF
   CGM.SetLLVMFunctionAttributes(nullptr, FI, cast(Init));
 }
 
-if (Init)
+if (Init) {
   Init->setVisibility(Var->getVisibility());
+  Init->setDSOLocal(Var->isDSOLocal());
+}
 
 llvm::LLVMContext  = CGM.getModule().getContext();
 llvm::BasicBlock *Entry = llvm::BasicBlock::Create(Context, "", Wrapper);

Modified: cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp?rev=326961=326960=326961=diff
==
--- cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp Wed Mar  7 15:18:06 2018
@@ -114,6 +114,7 @@ void l() {
 // CHECK-MS-DAG: declare void @_Init_thread_header(i32*)
 // CHECK-MS-DAG: declare void @_Init_thread_footer(i32*)
 
+// CHECK-IA-DAG: @_ZTH1t = dso_local alias void (), void ()* @__tls_init
 // CHECK-IA-DAG: declare i32 @__gxx_personality_v0(...)
 // CHECK-IA-DAG: define linkonce_odr hidden void @__clang_call_terminate(i8*)
 


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


r326527 - Always set dso_local in CodeGenModule::setDSOLocal.

2018-03-01 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Mar  1 17:29:51 2018
New Revision: 326527

URL: http://llvm.org/viewvc/llvm-project?rev=326527=rev
Log:
Always set dso_local in CodeGenModule::setDSOLocal.

This shouldn't change any results for now, but is more consistent with
how we set dllimport/dllexport and will make future changes easier.

Since clang produces IR as it parses, it can find out mid file that
something is dllimport. When that happens we have to drop
dso_local. This is not a problem right now because
CodeGenModule::setDSOLocal is called from relatively few places at
the moment.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=326527=326526=326527=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Mar  1 17:29:51 2018
@@ -716,6 +716,12 @@ void CodeGenModule::setGlobalVisibility(
 
 static bool shouldAssumeDSOLocal(const CodeGenModule ,
  llvm::GlobalValue *GV) {
+  if (GV->hasLocalLinkage())
+return true;
+
+  if (!GV->hasDefaultVisibility() && !GV->hasExternalWeakLinkage())
+return true;
+
   // DLLImport explicitly marks the GV as external.
   if (GV->hasDLLImportStorageClass())
 return false;
@@ -773,8 +779,7 @@ static bool shouldAssumeDSOLocal(const C
 }
 
 void CodeGenModule::setDSOLocal(llvm::GlobalValue *GV) const {
-  if (shouldAssumeDSOLocal(*this, GV))
-GV->setDSOLocal(true);
+  GV->setDSOLocal(shouldAssumeDSOLocal(*this, GV));
 }
 
 void CodeGenModule::setDLLImportDLLExport(llvm::GlobalValue *GV,


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


r326397 - Start setting dllimport/dllexport in setGVProperties.

2018-02-28 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb 28 16:35:47 2018
New Revision: 326397

URL: http://llvm.org/viewvc/llvm-project?rev=326397=rev
Log:
Start setting dllimport/dllexport in setGVProperties.

This is the next step in setting dso_local for COFF.

The patches changes setGVProperties to first set dllimport/dllexport
and changes a few cases that were setting dllimport/dllexport
manually. With this a few more GVs are marked dso_local.

Modified:
cfe/trunk/lib/CodeGen/CGCXX.cpp
cfe/trunk/lib/CodeGen/CGCXXABI.h
cfe/trunk/lib/CodeGen/CGDecl.cpp
cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
cfe/trunk/lib/CodeGen/CGObjCMac.cpp
cfe/trunk/lib/CodeGen/CGVTables.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp
cfe/trunk/test/CodeGenCXX/dllexport-ctor-closure.cpp
cfe/trunk/test/CodeGenCXX/dllexport.cpp
cfe/trunk/test/CodeGenObjC/dllstorage.m
cfe/trunk/test/PCH/dllexport-default-arg-closure.cpp

Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCXX.cpp?rev=326397=326396=326397=diff
==
--- cfe/trunk/lib/CodeGen/CGCXX.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGCXX.cpp Wed Feb 28 16:35:47 2018
@@ -205,7 +205,7 @@ bool CodeGenModule::TryEmitDefinitionAsA
   }
 
   // Finally, set up the alias with its proper name and attributes.
-  setAliasAttributes(AliasDecl, Alias);
+  SetCommonAttributes(AliasDecl, Alias);
 
   return false;
 }
@@ -227,7 +227,6 @@ llvm::Function *CodeGenModule::codegenCX
   }
 
   setFunctionLinkage(GD, Fn);
-  setFunctionDLLStorageClass(GD, Fn);
 
   CodeGenFunction(*this).GenerateCode(GD, Fn, FnInfo);
   setNonAliasAttributes(GD, Fn);

Modified: cfe/trunk/lib/CodeGen/CGCXXABI.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCXXABI.h?rev=326397=326396=326397=diff
==
--- cfe/trunk/lib/CodeGen/CGCXXABI.h (original)
+++ cfe/trunk/lib/CodeGen/CGCXXABI.h Wed Feb 28 16:35:47 2018
@@ -433,6 +433,7 @@ public:
   /// base tables.
   virtual void emitVirtualInheritanceTables(const CXXRecordDecl *RD) = 0;
 
+  virtual bool exportThunk() = 0;
   virtual void setThunkLinkage(llvm::Function *Thunk, bool ForVTable,
GlobalDecl GD, bool ReturnAdjustment) = 0;
 

Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=326397=326396=326397=diff
==
--- cfe/trunk/lib/CodeGen/CGDecl.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDecl.cpp Wed Feb 28 16:35:47 2018
@@ -247,13 +247,6 @@ llvm::Constant *CodeGenModule::getOrCrea
   if (D.getTLSKind())
 setTLSMode(GV, D);
 
-  if (D.isExternallyVisible()) {
-if (D.hasAttr())
-  GV->setDLLStorageClass(llvm::GlobalVariable::DLLImportStorageClass);
-else if (D.hasAttr())
-  GV->setDLLStorageClass(llvm::GlobalVariable::DLLExportStorageClass);
-  }
-
   setGVProperties(GV, );
 
   // Make sure the result is of the correct type.

Modified: cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCGNU.cpp?rev=326397=326396=326397=diff
==
--- cfe/trunk/lib/CodeGen/CGObjCGNU.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCGNU.cpp Wed Feb 28 16:35:47 2018
@@ -1035,16 +1035,8 @@ llvm::Value *CGObjCGNU::GetClass(CodeGen
  const ObjCInterfaceDecl *OID) {
   auto *Value =
   GetClassNamed(CGF, OID->getNameAsString(), OID->isWeakImported());
-  if (CGM.getTriple().isOSBinFormatCOFF()) {
-if (auto *ClassSymbol = dyn_cast(Value)) {
-  auto DLLStorage = llvm::GlobalValue::DefaultStorageClass;
-  if (OID->hasAttr())
-DLLStorage = llvm::GlobalValue::DLLExportStorageClass;
-  else if (OID->hasAttr())
-DLLStorage = llvm::GlobalValue::DLLImportStorageClass;
-  ClassSymbol->setDLLStorageClass(DLLStorage);
-}
-  }
+  if (auto *ClassSymbol = dyn_cast(Value))
+CGM.setGVProperties(ClassSymbol, OID);
   return Value;
 }
 
@@ -1061,13 +1053,7 @@ llvm::Value *CGObjCGNU::EmitNSAutoreleas
 if ((VD = dyn_cast(Result)))
   break;
 
-  auto DLLStorage = llvm::GlobalValue::DefaultStorageClass;
-  if (!VD || VD->hasAttr())
-DLLStorage = llvm::GlobalValue::DLLImportStorageClass;
-  else if (VD->hasAttr())
-DLLStorage = llvm::GlobalValue::DLLExportStorageClass;
-
-  ClassSymbol->setDLLStorageClass(DLLStorage);
+  CGM.setGVProperties(ClassSymbol, VD);
 }
   }
   return Value;
@@ -2336,14 +2322,8 @@ void CGObjCGNU::GenerateClass(const ObjC
   NULLPtr, NULLPtr, 0x12L, ClassName.c_str(), nullptr, Zeros[0],

r326392 - Pass a GlobalDecl to SetCommonAttributes. NFC.

2018-02-28 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb 28 16:06:55 2018
New Revision: 326392

URL: http://llvm.org/viewvc/llvm-project?rev=326392=rev
Log:
Pass a GlobalDecl to SetCommonAttributes. NFC.

Part of D43900.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=326392=326391=326392=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Feb 28 16:06:55 2018
@@ -1232,8 +1232,8 @@ void CodeGenModule::SetLLVMFunctionAttri
   CreateFunctionTypeMetadata(FD, F);
 }
 
-void CodeGenModule::SetCommonAttributes(const Decl *D,
-llvm::GlobalValue *GV) {
+void CodeGenModule::SetCommonAttributes(GlobalDecl GD, llvm::GlobalValue *GV) {
+  const Decl *D = GD.getDecl();
   if (const auto *ND = dyn_cast_or_null(D))
 setGVProperties(GV, ND);
   else
@@ -1245,7 +1245,7 @@ void CodeGenModule::SetCommonAttributes(
 
 void CodeGenModule::setAliasAttributes(GlobalDecl GD, llvm::GlobalValue *GV) {
   const Decl *D = GD.getDecl();
-  SetCommonAttributes(D, GV);
+  SetCommonAttributes(GD, GV);
 
   // Process the dllexport attribute based on whether the original definition
   // (not necessarily the aliasee) was exported.
@@ -1302,7 +1302,7 @@ bool CodeGenModule::GetCPUAndFeaturesAtt
 void CodeGenModule::setNonAliasAttributes(GlobalDecl GD,
   llvm::GlobalObject *GO) {
   const Decl *D = GD.getDecl();
-  SetCommonAttributes(D, GO);
+  SetCommonAttributes(GD, GO);
 
   if (D) {
 if (auto *GV = dyn_cast(GO)) {
@@ -3731,7 +3731,7 @@ void CodeGenModule::emitIFuncDefinition(
   } else
 GIF->setName(MangledName);
 
-  SetCommonAttributes(D, GIF);
+  SetCommonAttributes(GD, GIF);
 }
 
 llvm::Function *CodeGenModule::getIntrinsic(unsigned IID,

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=326392=326391=326392=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h Wed Feb 28 16:06:55 2018
@@ -1188,7 +1188,7 @@ public:
   /// Objective-C method, function, global variable).
   ///
   /// NOTE: This should only be called for definitions.
-  void SetCommonAttributes(const Decl *D, llvm::GlobalValue *GV);
+  void SetCommonAttributes(GlobalDecl GD, llvm::GlobalValue *GV);
 
   /// Set attributes which must be preserved by an alias. This includes common
   /// attributes (i.e. it includes a call to SetCommonAttributes).


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


r326391 - Inline a trivial function. NFC.

2018-02-28 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb 28 16:00:02 2018
New Revision: 326391

URL: http://llvm.org/viewvc/llvm-project?rev=326391=rev
Log:
Inline a trivial function. NFC.

Modified:
cfe/trunk/lib/CodeGen/CGCXX.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h

Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCXX.cpp?rev=326391=326390=326391=diff
==
--- cfe/trunk/lib/CodeGen/CGCXX.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGCXX.cpp Wed Feb 28 16:00:02 2018
@@ -230,7 +230,7 @@ llvm::Function *CodeGenModule::codegenCX
   setFunctionDLLStorageClass(GD, Fn);
 
   CodeGenFunction(*this).GenerateCode(GD, Fn, FnInfo);
-  setFunctionDefinitionAttributes(GD, Fn);
+  setNonAliasAttributes(GD, Fn);
   SetLLVMFunctionAttributesForDefinition(MD, Fn);
   return Fn;
 }

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=326391=326390=326391=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Feb 28 16:00:02 2018
@@ -1080,11 +1080,6 @@ llvm::ConstantInt *CodeGenModule::Create
   return llvm::ConstantInt::get(Int64Ty, llvm::MD5Hash(MDS->getString()));
 }
 
-void CodeGenModule::setFunctionDefinitionAttributes(GlobalDecl GD,
-llvm::Function *F) {
-  setNonAliasAttributes(GD, F);
-}
-
 void CodeGenModule::SetLLVMFunctionAttributes(const Decl *D,
   const CGFunctionInfo ,
   llvm::Function *F) {
@@ -3593,7 +3588,7 @@ void CodeGenModule::EmitGlobalFunctionDe
 
   CodeGenFunction(*this).GenerateCode(D, Fn, FI);
 
-  setFunctionDefinitionAttributes(GD, Fn);
+  setNonAliasAttributes(GD, Fn);
   SetLLVMFunctionAttributesForDefinition(D, Fn);
 
   if (const ConstructorAttr *CA = D->getAttr())

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=326391=326390=326391=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h Wed Feb 28 16:00:02 2018
@@ -1182,9 +1182,6 @@ public:
   bool TryEmitDefinitionAsAlias(GlobalDecl Alias, GlobalDecl Target);
   bool TryEmitBaseDestructorAsAlias(const CXXDestructorDecl *D);
 
-  /// Set attributes for a global definition.
-  void setFunctionDefinitionAttributes(GlobalDecl GD, llvm::Function *F);
-
   llvm::GlobalValue *GetGlobalValue(StringRef Ref);
 
   /// Set attributes which are common to any form of a global definition 
(alias,


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


r326388 - Pass a GlobalDecl to setNonAliasAttributes. NFC.

2018-02-28 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb 28 15:54:23 2018
New Revision: 326388

URL: http://llvm.org/viewvc/llvm-project?rev=326388=rev
Log:
Pass a GlobalDecl to setNonAliasAttributes. NFC.

Also part of D43900.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=326388=326387=326388=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Feb 28 15:54:23 2018
@@ -1082,7 +1082,7 @@ llvm::ConstantInt *CodeGenModule::Create
 
 void CodeGenModule::setFunctionDefinitionAttributes(GlobalDecl GD,
 llvm::Function *F) {
-  setNonAliasAttributes(GD.getDecl(), F);
+  setNonAliasAttributes(GD, F);
 }
 
 void CodeGenModule::SetLLVMFunctionAttributes(const Decl *D,
@@ -1304,8 +1304,9 @@ bool CodeGenModule::GetCPUAndFeaturesAtt
   return AddedAttr;
 }
 
-void CodeGenModule::setNonAliasAttributes(const Decl *D,
+void CodeGenModule::setNonAliasAttributes(GlobalDecl GD,
   llvm::GlobalObject *GO) {
+  const Decl *D = GD.getDecl();
   SetCommonAttributes(D, GO);
 
   if (D) {
@@ -1350,7 +1351,7 @@ void CodeGenModule::SetInternalFunctionA
 
   F->setLinkage(llvm::Function::InternalLinkage);
 
-  setNonAliasAttributes(D, F);
+  setNonAliasAttributes(GD, F);
 }
 
 static void setLinkageForGV(llvm::GlobalValue *GV,

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=326388=326387=326388=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h Wed Feb 28 15:54:23 2018
@@ -1277,7 +1277,7 @@ private:
 
   bool GetCPUAndFeaturesAttributes(const Decl *D,
llvm::AttrBuilder );
-  void setNonAliasAttributes(const Decl *D, llvm::GlobalObject *GO);
+  void setNonAliasAttributes(GlobalDecl GD, llvm::GlobalObject *GO);
 
   /// Set function attributes for a function declaration.
   void SetFunctionAttributes(GlobalDecl GD, llvm::Function *F,


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


r326385 - Pass a GlobalDecl to SetInternalFunctionAttributes. NFC.

2018-02-28 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb 28 15:46:35 2018
New Revision: 326385

URL: http://llvm.org/viewvc/llvm-project?rev=326385=rev
Log:
Pass a GlobalDecl to SetInternalFunctionAttributes. NFC.

This just reduces the noise in a followup patch.

Part of D43900.

Modified:
cfe/trunk/lib/CodeGen/CGBlocks.cpp
cfe/trunk/lib/CodeGen/CGDeclCXX.cpp
cfe/trunk/lib/CodeGen/CGObjC.cpp
cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp
cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h

Modified: cfe/trunk/lib/CodeGen/CGBlocks.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBlocks.cpp?rev=326385=326384=326385=diff
==
--- cfe/trunk/lib/CodeGen/CGBlocks.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBlocks.cpp Wed Feb 28 15:46:35 2018
@@ -1659,7 +1659,7 @@ CodeGenFunction::GenerateCopyHelperFunct
   false,
   false);
 
-  CGM.SetInternalFunctionAttributes(nullptr, Fn, FI);
+  CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FI);
 
   StartFunction(FD, C.VoidTy, Fn, FI, args);
   ApplyDebugLocation NL{*this, blockInfo.getBlockExpr()->getLocStart()};
@@ -1837,7 +1837,7 @@ CodeGenFunction::GenerateDestroyHelperFu
   nullptr, SC_Static,
   false, false);
 
-  CGM.SetInternalFunctionAttributes(nullptr, Fn, FI);
+  CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FI);
 
   StartFunction(FD, C.VoidTy, Fn, FI, args);
   ApplyDebugLocation NL{*this, blockInfo.getBlockExpr()->getLocStart()};
@@ -2119,7 +2119,7 @@ generateByrefCopyHelper(CodeGenFunction
   SC_Static,
   false, false);
 
-  CGF.CGM.SetInternalFunctionAttributes(nullptr, Fn, FI);
+  CGF.CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FI);
 
   CGF.StartFunction(FD, R, Fn, FI, args);
 
@@ -2193,7 +2193,7 @@ generateByrefDisposeHelper(CodeGenFuncti
   SC_Static,
   false, false);
 
-  CGF.CGM.SetInternalFunctionAttributes(nullptr, Fn, FI);
+  CGF.CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FI);
 
   CGF.StartFunction(FD, R, Fn, FI, args);
 

Modified: cfe/trunk/lib/CodeGen/CGDeclCXX.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDeclCXX.cpp?rev=326385=326384=326385=diff
==
--- cfe/trunk/lib/CodeGen/CGDeclCXX.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDeclCXX.cpp Wed Feb 28 15:46:35 2018
@@ -312,7 +312,7 @@ llvm::Function *CodeGenModule::CreateGlo
   Fn->setSection(Section);
   }
 
-  SetInternalFunctionAttributes(nullptr, Fn, FI);
+  SetInternalFunctionAttributes(GlobalDecl(), Fn, FI);
 
   Fn->setCallingConv(getRuntimeCC());
 

Modified: cfe/trunk/lib/CodeGen/CGObjC.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp?rev=326385=326384=326385=diff
==
--- cfe/trunk/lib/CodeGen/CGObjC.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjC.cpp Wed Feb 28 15:46:35 2018
@@ -3243,7 +3243,7 @@ CodeGenFunction::GenerateObjCAtomicSette
"__assign_helper_atomic_property_",
());
 
-  CGM.SetInternalFunctionAttributes(nullptr, Fn, FI);
+  CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FI);
 
   StartFunction(FD, C.VoidTy, Fn, FI, args);
   
@@ -3324,8 +3324,8 @@ CodeGenFunction::GenerateObjCAtomicGette
   llvm::Function *Fn =
   llvm::Function::Create(LTy, llvm::GlobalValue::InternalLinkage,
  "__copy_helper_atomic_property_", ());
-  
-  CGM.SetInternalFunctionAttributes(nullptr, Fn, FI);
+
+  CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FI);
 
   StartFunction(FD, C.VoidTy, Fn, FI, args);
   

Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp?rev=326385=326384=326385=diff
==
--- cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp Wed Feb 28 15:46:35 2018
@@ -1209,7 +1209,7 @@ emitCombinerOrInitializer(CodeGenModule
   auto *Fn = llvm::Function::Create(
   FnTy, llvm::GlobalValue::InternalLinkage,
   IsCombiner ? ".omp_combiner." : ".omp_initializer.", ());
-  CGM.SetInternalFunctionAttributes(/*D=*/nullptr, Fn, FnInfo);
+  CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FnInfo);
   Fn->removeFnAttr(llvm::Attribute::NoInline);
   Fn->removeFnAttr(llvm::Attribute::OptimizeNone);
   Fn->addFnAttr(llvm::Attribute::AlwaysInline);
@@ -2804,7 +2804,7 @@ static llvm::Value 

r326272 - Inline trivial function. NFC.

2018-02-27 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Feb 27 16:14:18 2018
New Revision: 326272

URL: http://llvm.org/viewvc/llvm-project?rev=326272=rev
Log:
Inline trivial function. NFC.

Modified:
cfe/trunk/lib/CodeGen/CGVTables.cpp

Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=326272=326271=326272=diff
==
--- cfe/trunk/lib/CodeGen/CGVTables.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTables.cpp Tue Feb 27 16:14:18 2018
@@ -49,11 +49,6 @@ llvm::Constant *CodeGenModule::GetAddrOf
  /*DontDefer=*/true, /*IsThunk=*/true);
 }
 
-static void setThunkVisibility(CodeGenModule , const CXXMethodDecl *MD,
-   const ThunkInfo , llvm::Function *Fn) {
-  CGM.setGVProperties(Fn, MD);
-}
-
 static void setThunkProperties(CodeGenModule , const ThunkInfo ,
llvm::Function *ThunkFn, bool ForVTable,
GlobalDecl GD) {
@@ -62,8 +57,7 @@ static void setThunkProperties(CodeGenMo
   !Thunk.Return.isEmpty());
 
   // Set the right visibility.
-  const CXXMethodDecl *MD = cast(GD.getDecl());
-  setThunkVisibility(CGM, MD, Thunk, ThunkFn);
+  CGM.setGVProperties(ThunkFn, cast(GD.getDecl()));
 
   if (CGM.supportsCOMDAT() && ThunkFn->isWeakForLinker())
 ThunkFn->setComdat(CGM.getModule().getOrInsertComdat(ThunkFn->getName()));


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


r326270 - Pass a GlobalDecl to setAliasAttributes. NFC.

2018-02-27 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Feb 27 16:06:01 2018
New Revision: 326270

URL: http://llvm.org/viewvc/llvm-project?rev=326270=rev
Log:
Pass a GlobalDecl to setAliasAttributes. NFC.

This just makes a followup change easier to read.

Modified:
cfe/trunk/lib/CodeGen/CGCXX.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp

Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCXX.cpp?rev=326270=326269=326270=diff
==
--- cfe/trunk/lib/CodeGen/CGCXX.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGCXX.cpp Tue Feb 27 16:06:01 2018
@@ -205,7 +205,7 @@ bool CodeGenModule::TryEmitDefinitionAsA
   }
 
   // Finally, set up the alias with its proper name and attributes.
-  setAliasAttributes(cast(AliasDecl.getDecl()), Alias);
+  setAliasAttributes(AliasDecl, Alias);
 
   return false;
 }

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=326270=326269=326270=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Feb 27 16:06:01 2018
@@ -1248,8 +1248,8 @@ void CodeGenModule::SetCommonAttributes(
 addUsedGlobal(GV);
 }
 
-void CodeGenModule::setAliasAttributes(const Decl *D,
-   llvm::GlobalValue *GV) {
+void CodeGenModule::setAliasAttributes(GlobalDecl GD, llvm::GlobalValue *GV) {
+  const Decl *D = GD.getDecl();
   SetCommonAttributes(D, GV);
 
   // Process the dllexport attribute based on whether the original definition
@@ -3675,7 +3675,7 @@ void CodeGenModule::EmitAliasDefinition(
 if (VD->getTLSKind())
   setTLSMode(GA, *VD);
 
-  setAliasAttributes(D, GA);
+  setAliasAttributes(GD, GA);
 }
 
 void CodeGenModule::emitIFuncDefinition(GlobalDecl GD) {

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=326270=326269=326270=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h Tue Feb 27 16:06:01 2018
@@ -1197,7 +1197,7 @@ public:
   /// attributes (i.e. it includes a call to SetCommonAttributes).
   ///
   /// NOTE: This should only be called for definitions.
-  void setAliasAttributes(const Decl *D, llvm::GlobalValue *GV);
+  void setAliasAttributes(GlobalDecl GD, llvm::GlobalValue *GV);
 
   void addReplacement(StringRef Name, llvm::Constant *C);
 

Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=326270=326269=326270=diff
==
--- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original)
+++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Tue Feb 27 16:06:01 2018
@@ -3637,7 +3637,7 @@ static void emitConstructorDestructorAli
   }
 
   // Finally, set up the alias with its proper name and attributes.
-  CGM.setAliasAttributes(cast(AliasDecl.getDecl()), Alias);
+  CGM.setAliasAttributes(AliasDecl, Alias);
 }
 
 void ItaniumCXXABI::emitCXXStructor(const CXXMethodDecl *MD,


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


r326265 - Pass a GlobalDecl to setFunctionDefinitionAttributes. NFC.

2018-02-27 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Feb 27 15:44:36 2018
New Revision: 326265

URL: http://llvm.org/viewvc/llvm-project?rev=326265=rev
Log:
Pass a GlobalDecl to setFunctionDefinitionAttributes. NFC.

This just makes a followup patch easier to read.

Modified:
cfe/trunk/lib/CodeGen/CGCXX.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h

Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCXX.cpp?rev=326265=326264=326265=diff
==
--- cfe/trunk/lib/CodeGen/CGCXX.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGCXX.cpp Tue Feb 27 15:44:36 2018
@@ -230,7 +230,7 @@ llvm::Function *CodeGenModule::codegenCX
   setFunctionDLLStorageClass(GD, Fn);
 
   CodeGenFunction(*this).GenerateCode(GD, Fn, FnInfo);
-  setFunctionDefinitionAttributes(MD, Fn);
+  setFunctionDefinitionAttributes(GD, Fn);
   SetLLVMFunctionAttributesForDefinition(MD, Fn);
   return Fn;
 }

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=326265=326264=326265=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Feb 27 15:44:36 2018
@@ -1080,9 +1080,9 @@ llvm::ConstantInt *CodeGenModule::Create
   return llvm::ConstantInt::get(Int64Ty, llvm::MD5Hash(MDS->getString()));
 }
 
-void CodeGenModule::setFunctionDefinitionAttributes(const FunctionDecl *D,
+void CodeGenModule::setFunctionDefinitionAttributes(GlobalDecl GD,
 llvm::Function *F) {
-  setNonAliasAttributes(D, F);
+  setNonAliasAttributes(GD.getDecl(), F);
 }
 
 void CodeGenModule::SetLLVMFunctionAttributes(const Decl *D,
@@ -3591,7 +3591,7 @@ void CodeGenModule::EmitGlobalFunctionDe
 
   CodeGenFunction(*this).GenerateCode(D, Fn, FI);
 
-  setFunctionDefinitionAttributes(D, Fn);
+  setFunctionDefinitionAttributes(GD, Fn);
   SetLLVMFunctionAttributesForDefinition(D, Fn);
 
   if (const ConstructorAttr *CA = D->getAttr())

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=326265=326264=326265=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h Tue Feb 27 15:44:36 2018
@@ -1183,8 +1183,7 @@ public:
   bool TryEmitBaseDestructorAsAlias(const CXXDestructorDecl *D);
 
   /// Set attributes for a global definition.
-  void setFunctionDefinitionAttributes(const FunctionDecl *D,
-   llvm::Function *F);
+  void setFunctionDefinitionAttributes(GlobalDecl GD, llvm::Function *F);
 
   llvm::GlobalValue *GetGlobalValue(StringRef Ref);
 


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


r325943 - Really fix test on windows.

2018-02-23 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Fri Feb 23 11:38:41 2018
New Revision: 325943

URL: http://llvm.org/viewvc/llvm-project?rev=325943=rev
Log:
Really fix test on windows.

Sorry for the noise.

Modified:
cfe/trunk/test/CodeGenCUDA/filter-decl.cu

Modified: cfe/trunk/test/CodeGenCUDA/filter-decl.cu
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCUDA/filter-decl.cu?rev=325943=325942=325943=diff
==
--- cfe/trunk/test/CodeGenCUDA/filter-decl.cu (original)
+++ cfe/trunk/test/CodeGenCUDA/filter-decl.cu Fri Feb 23 11:38:41 2018
@@ -10,15 +10,15 @@
 __asm__("file scope asm is host only");
 
 // CHECK-HOST: constantdata = internal global
-// CHECK-DEVICE: constantdata = externally_initialized global
+// CHECK-DEVICE: constantdata = {{(dso_local )?}}externally_initialized global
 __constant__ char constantdata[256];
 
 // CHECK-HOST: devicedata = internal global
-// CHECK-DEVICE: devicedata = externally_initialized global
+// CHECK-DEVICE: devicedata = {{(dso_local )?}}externally_initialized global
 __device__ char devicedata[256];
 
 // CHECK-HOST: shareddata = internal global
-// CHECK-DEVICE: shareddata = global
+// CHECK-DEVICE: shareddata = {{(dso_local )?}}global
 __shared__ char shareddata[256];
 
 // CHECK-HOST: hostdata = {{(dso_local )?}}global


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


r325942 - Fix one last test on a windows host.

2018-02-23 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Fri Feb 23 11:36:20 2018
New Revision: 325942

URL: http://llvm.org/viewvc/llvm-project?rev=325942=rev
Log:
Fix one last test on a windows host.

Modified:
cfe/trunk/test/CodeGenCUDA/filter-decl.cu

Modified: cfe/trunk/test/CodeGenCUDA/filter-decl.cu
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCUDA/filter-decl.cu?rev=325942=325941=325942=diff
==
--- cfe/trunk/test/CodeGenCUDA/filter-decl.cu (original)
+++ cfe/trunk/test/CodeGenCUDA/filter-decl.cu Fri Feb 23 11:36:20 2018
@@ -21,7 +21,7 @@ __device__ char devicedata[256];
 // CHECK-DEVICE: shareddata = global
 __shared__ char shareddata[256];
 
-// CHECK-HOST: hostdata = global
+// CHECK-HOST: hostdata = {{(dso_local )?}}global
 // CHECK-DEVICE-NOT: hostdata = global
 char hostdata[256];
 


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


r325930 - Convert test to FileCheck. NFC.

2018-02-23 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Fri Feb 23 10:18:01 2018
New Revision: 325930

URL: http://llvm.org/viewvc/llvm-project?rev=325930=rev
Log:
Convert test to FileCheck. NFC.

Modified:
cfe/trunk/test/CodeGen/tentative-decls.c

Modified: cfe/trunk/test/CodeGen/tentative-decls.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/tentative-decls.c?rev=325930=325929=325930=diff
==
--- cfe/trunk/test/CodeGen/tentative-decls.c (original)
+++ cfe/trunk/test/CodeGen/tentative-decls.c Fri Feb 23 10:18:01 2018
@@ -1,16 +1,16 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
+// RUN: %clang_cc1 -emit-llvm -w -o - %s | FileCheck %s
 
-// RUN: grep '@r = common global \[1 x .*\] zeroinitializer' %t
+// CHECK-DAG: @r = common global [1 x {{.*}}] zeroinitializer
 
 int r[];
 int (*a)[] = 
 
 struct s0;
 struct s0 x;
-// RUN: grep '@x = common global .struct.s0 zeroinitializer' %t
+// CHECK-DAG: @x = common global %struct.s0 zeroinitializer
 
 struct s0 y;
-// RUN: grep '@y = common global .struct.s0 zeroinitializer' %t
+// CHECK-DAG: @y = common global %struct.s0 zeroinitializer
 struct s0 *f0() {
   return 
 }
@@ -19,19 +19,19 @@ struct s0 {
   int x;
 };
 
-// RUN: grep '@b = common global \[1 x .*\] zeroinitializer' %t
+// CHECK-DAG: @b = common global [1 x {{.*}}] zeroinitializer
 int b[];
 int *f1() {
   return b;
 }
 
 // Check that the most recent tentative definition wins.
-// RUN: grep '@c = common global \[4 x .*\] zeroinitializer' %t
+// CHECK-DAG: @c = common global [4 x {{.*}}] zeroinitializer
 int c[];
 int c[4];
 
 // Check that we emit static tentative definitions
-// RUN: grep '@c5 = internal global \[1 x .*\] zeroinitializer' %t
+// CHECK-DAG: @c5 = internal global [1 x {{.*}}] zeroinitializer
 static int c5[];
 static int func() { return c5[0]; }
 int callfunc() { return func(); }


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


r325846 - Simplify setting dso_local. NFC.

2018-02-22 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Feb 22 16:22:15 2018
New Revision: 325846

URL: http://llvm.org/viewvc/llvm-project?rev=325846=rev
Log:
Simplify setting dso_local. NFC.

The value of dso_local can be computed from just IR properties and
global information (object file type, command line options, etc).

With this patch we no longer pass in the Decl. It was almost unused
and making it fully unused guarantees that dso_local is consistent
with the rest of the IR.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=325846=325845=325846=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Feb 22 16:22:15 2018
@@ -712,7 +712,7 @@ void CodeGenModule::setGlobalVisibility(
 }
 
 static bool shouldAssumeDSOLocal(const CodeGenModule ,
- llvm::GlobalValue *GV, const NamedDecl *D) {
+ llvm::GlobalValue *GV) {
   const llvm::Triple  = CGM.getTriple();
   // Only handle ELF for now.
   if (!TT.isOSBinFormatELF())
@@ -742,31 +742,30 @@ static bool shouldAssumeDSOLocal(const C
 return false;
 
   // If we can use copy relocations we can assume it is local.
-  if (auto *VD = dyn_cast(D))
-if (VD->getTLSKind() == VarDecl::TLS_None &&
+  if (auto *Var = dyn_cast(GV))
+if (!Var->isThreadLocal() &&
 (RM == llvm::Reloc::Static || CGOpts.PIECopyRelocations))
   return true;
 
   // If we can use a plt entry as the symbol address we can assume it
   // is local.
   // FIXME: This should work for PIE, but the gold linker doesn't support it.
-  if (isa(D) && !CGOpts.NoPLT && RM == llvm::Reloc::Static)
+  if (isa(GV) && !CGOpts.NoPLT && RM == llvm::Reloc::Static)
 return true;
 
   // Otherwise don't assue it is local.
   return false;
 }
 
-void CodeGenModule::setDSOLocal(llvm::GlobalValue *GV,
-const NamedDecl *D) const {
-  if (shouldAssumeDSOLocal(*this, GV, D))
+void CodeGenModule::setDSOLocal(llvm::GlobalValue *GV) const {
+  if (shouldAssumeDSOLocal(*this, GV))
 GV->setDSOLocal(true);
 }
 
 void CodeGenModule::setGVProperties(llvm::GlobalValue *GV,
 const NamedDecl *D) const {
   setGlobalVisibility(GV, D);
-  setDSOLocal(GV, D);
+  setDSOLocal(GV);
 }
 
 static llvm::GlobalVariable::ThreadLocalMode GetLLVMTLSModel(StringRef S) {
@@ -2749,7 +2748,6 @@ CodeGenModule::GetOrCreateLLVMGlobal(Str
 GV->setAlignment(getContext().getDeclAlign(D).getQuantity());
 
 setLinkageForGV(GV, D);
-setGVProperties(GV, D);
 
 if (D->getTLSKind()) {
   if (D->getTLSKind() == VarDecl::TLS_Dynamic)
@@ -2757,6 +2755,8 @@ CodeGenModule::GetOrCreateLLVMGlobal(Str
   setTLSMode(GV, *D);
 }
 
+setGVProperties(GV, D);
+
 // If required by the ABI, treat declarations of static data members with
 // inline initializers as definitions.
 if (getContext().isMSStaticDataMemberInlineDefinition(D)) {

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=325846=325845=325846=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h Thu Feb 22 16:22:15 2018
@@ -721,7 +721,7 @@ public:
   /// Set the visibility for the given LLVM GlobalValue.
   void setGlobalVisibility(llvm::GlobalValue *GV, const NamedDecl *D) const;
 
-  void setDSOLocal(llvm::GlobalValue *GV, const NamedDecl *D) const;
+  void setDSOLocal(llvm::GlobalValue *GV) const;
 
   void setGVProperties(llvm::GlobalValue *GV, const NamedDecl *D) const;
 

Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=325846=325845=325846=diff
==
--- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original)
+++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Thu Feb 22 16:22:15 2018
@@ -3214,10 +3214,10 @@ llvm::Constant *ItaniumRTTIBuilder::Buil
 llvmVisibility = CodeGenModule::GetLLVMVisibility(Ty->getVisibility());
 
   TypeName->setVisibility(llvmVisibility);
-  CGM.setDSOLocal(TypeName, Ty->getAsCXXRecordDecl());
+  CGM.setDSOLocal(TypeName);
 
   GV->setVisibility(llvmVisibility);
-  CGM.setDSOLocal(GV, Ty->getAsCXXRecordDecl());
+  CGM.setDSOLocal(GV);
 
   if (CGM.getTriple().isWindowsItaniumEnvironment()) {
 auto RD = Ty->getAsCXXRecordDecl();


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


r325156 - Update for llvm change. NFC.

2018-02-14 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb 14 11:11:37 2018
New Revision: 325156

URL: http://llvm.org/viewvc/llvm-project?rev=325156=rev
Log:
Update for llvm change. NFC.

Modified:
cfe/trunk/lib/CodeGen/BackendUtil.cpp
cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp

Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=325156=325155=325156=diff
==
--- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original)
+++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Wed Feb 14 11:11:37 2018
@@ -1122,7 +1122,7 @@ static void runThinLTOBackend(ModuleSumm
 break;
   case Backend_EmitBC:
 Conf.PreCodeGenModuleHook = [&](size_t Task, const Module ) {
-  WriteBitcodeToFile(M, *OS, CGOpts.EmitLLVMUseLists);
+  WriteBitcodeToFile(*M, *OS, CGOpts.EmitLLVMUseLists);
   return false;
 };
 break;
@@ -1252,7 +1252,7 @@ void clang::EmbedBitcode(llvm::Module *M
   // If the input is LLVM Assembly, bitcode is produced by serializing
   // the module. Use-lists order need to be perserved in this case.
   llvm::raw_string_ostream OS(Data);
-  llvm::WriteBitcodeToFile(M, OS, /* ShouldPreserveUseListOrder */ true);
+  llvm::WriteBitcodeToFile(*M, OS, /* ShouldPreserveUseListOrder */ true);
   ModuleData =
   ArrayRef((const uint8_t *)OS.str().data(), OS.str().size());
 } else

Modified: cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp?rev=325156=325155=325156=diff
==
--- cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp (original)
+++ cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp Wed Feb 14 
11:11:37 2018
@@ -563,7 +563,7 @@ public:
   errs() << "error: unable to open temporary file.\n";
   return true;
 }
-WriteBitcodeToFile(AuxModule.get(), BitcodeFile);
+WriteBitcodeToFile(*AuxModule, BitcodeFile);
   }
 
   bool Failed = sys::ExecuteAndWait(ClangBinary.get(), ClangArgs);


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


r324552 - Add a testcase for PR36268.

2018-02-07 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb  7 17:17:26 2018
New Revision: 324552

URL: http://llvm.org/viewvc/llvm-project?rev=324552=rev
Log:
Add a testcase for PR36268.

Added:
cfe/trunk/test/CodeGenObjC/availability-dso-local.m

Added: cfe/trunk/test/CodeGenObjC/availability-dso-local.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/availability-dso-local.m?rev=324552=auto
==
--- cfe/trunk/test/CodeGenObjC/availability-dso-local.m (added)
+++ cfe/trunk/test/CodeGenObjC/availability-dso-local.m Wed Feb  7 17:17:26 2018
@@ -0,0 +1,6 @@
+// RUN: %clang_cc1 -triple thumbv7-apple-ios10.0.0 -emit-llvm -fvisibility 
hidden -w %s -o - | FileCheck %s
+
+// CHECK: @"OBJC_CLASS_$_a" = hidden global %struct._class_t
+
+__attribute__((availability(ios, introduced = 11.0))) @interface a @end
+@implementation a @end


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


r324539 - Don't try to use copy relocations with tls variables.

2018-02-07 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb  7 15:04:06 2018
New Revision: 324539

URL: http://llvm.org/viewvc/llvm-project?rev=324539=rev
Log:
Don't try to use copy relocations with tls variables.

Should fix the lldb bot.

Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/test/CodeGen/dso-local-executable.c

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=324539=324538=324539=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Feb  7 15:04:06 2018
@@ -746,9 +746,10 @@ static bool shouldAssumeDSOLocal(const C
 return false;
 
   // If we can use copy relocations we can assume it is local.
-  if (isa(D) &&
-  (RM == llvm::Reloc::Static || CGOpts.PIECopyRelocations))
-return true;
+  if (auto *VD = dyn_cast(D))
+if (VD->getTLSKind() == VarDecl::TLS_None &&
+(RM == llvm::Reloc::Static || CGOpts.PIECopyRelocations))
+  return true;
 
   // If we can use a plt entry as the symbol address we can assume it
   // is local.

Modified: cfe/trunk/test/CodeGen/dso-local-executable.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/dso-local-executable.c?rev=324539=324538=324539=diff
==
--- cfe/trunk/test/CodeGen/dso-local-executable.c (original)
+++ cfe/trunk/test/CodeGen/dso-local-executable.c Wed Feb  7 15:04:06 2018
@@ -4,6 +4,8 @@
 // STATIC-DAG: declare dso_local void @foo()
 // STATIC-DAG: @baz = dso_local global i32 42
 // STATIC-DAG: define dso_local i32* @zed()
+// STATIC-DAG: @thread_var = external thread_local global i32
+// STATIC-DAG: @local_thread_var = dso_local thread_local global i32 42
 
 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -pic-is-pie 
-mpie-copy-relocations %s -o - | FileCheck --check-prefix=PIE-COPY %s
 // PIE-COPY-DAG: @bar = external dso_local global i32
@@ -11,6 +13,8 @@
 // PIE-COPY-DAG: declare void @foo()
 // PIE-COPY-DAG: @baz = dso_local global i32 42
 // PIE-COPY-DAG: define dso_local i32* @zed()
+// PIE-COPY-DAG: @thread_var = external thread_local global i32
+// PIE-COPY-DAG: @local_thread_var = dso_local thread_local global i32 42
 
 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -pic-is-pie %s -o - | 
FileCheck --check-prefix=PIE %s
 // PIE-DAG: @bar = external global i32
@@ -18,6 +22,8 @@
 // PIE-DAG: declare void @foo()
 // PIE-DAG: @baz = dso_local global i32 42
 // PIE-DAG: define dso_local i32* @zed()
+// PIE-DAG: @thread_var = external thread_local global i32
+// PIE-DAG: @local_thread_var = dso_local thread_local global i32 42
 
 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -mrelocation-model 
static -fno-plt %s -o - | FileCheck --check-prefix=NOPLT %s
 // NOPLT-DAG: @bar = external dso_local global i32
@@ -25,6 +31,8 @@
 // NOPLT-DAG: declare void @foo()
 // NOPLT-DAG: @baz = dso_local global i32 42
 // NOPLT-DAG: define dso_local i32* @zed()
+// NOPLT-DAG: @thread_var = external thread_local global i32
+// NOPLT-DAG: @local_thread_var = dso_local thread_local global i32 42
 
 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -fno-plt -pic-is-pie 
-mpie-copy-relocations %s -o - | FileCheck --check-prefix=PIE-COPY-NOPLT %s
 // PIE-COPY-NOPLT-DAG: @bar = external dso_local global i32
@@ -32,6 +40,8 @@
 // PIE-COPY-NOPLT-DAG: declare void @foo()
 // PIE-COPY-NOPLT-DAG: @baz = dso_local global i32 42
 // PIE-COPY-NOPLT-DAG: define dso_local i32* @zed()
+// PIE-COPY-NOPLT-DAG: @thread_var = external thread_local global i32
+// PIE-COPY-NOPLT-DAG: @local_thread_var = dso_local thread_local global i32 42
 
 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -pic-is-pie -fno-plt %s 
-o - | FileCheck --check-prefix=PIE-NO-PLT %s
 // RUN: %clang_cc1 -triple powerpc64le-pc-linux -emit-llvm -mrelocation-model 
static %s -o - | FileCheck --check-prefix=PIE-NO-PLT %s
@@ -40,6 +50,8 @@
 // PIE-NO-PLT-DAG: declare void @foo()
 // PIE-NO-PLT-DAG: @baz = dso_local global i32 42
 // PIE-NO-PLT-DAG: define dso_local i32* @zed()
+// PIE-NO-PLT-DAG: @thread_var = external thread_local global i32
+// PIE-NO-PLT-DAG: @local_thread_var = dso_local thread_local global i32 42
 
 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm %s -o - | FileCheck 
--check-prefix=SHARED %s
 // SHARED-DAG: @bar = external global i32
@@ -47,6 +59,8 @@
 // SHARED-DAG: declare void @foo()
 // SHARED-DAG: @baz = global i32 42
 // SHARED-DAG: define i32* @zed()
+// SHARED-DAG: @thread_var = external thread_local global i32
+// SHARED-DAG: @local_thread_var = thread_local global i32 42
 
 extern int bar;
 __attribute__((weak)) extern int weak_bar;
@@ -57,3 +71,9 @@ int *zed() {
   foo();
   return baz ? _bar : 
 }
+
+extern __thread int thread_var;
+__thread int local_thread_var = 42;
+int *get_thread_var(int a) {
+  return a ? _var : 

r324535 - Recommit r324107 again.

2018-02-07 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb  7 14:15:33 2018
New Revision: 324535

URL: http://llvm.org/viewvc/llvm-project?rev=324535=rev
Log:
Recommit r324107 again.

The difference from the previous try is that we no longer directly
access function declarations from position independent executables. It
should work, but currently doesn't with some linkers.

It now includes a fix to not mark available_externally definitions as
dso_local.

Original message:

Start setting dso_local in clang.

This starts adding dso_local to clang.

The hope is to eventually have TargetMachine::shouldAssumeDsoLocal go
away. My objective for now is to move enough of it to clang to remove
the need for the TargetMachine one to handle PIE copy relocations and
-fno-plt. With that it should then be easy to implement a
-fno-copy-reloc in clang.

This patch just adds the cases where we assume a symbol to be local
based on the file being compiled for an executable or a shared
library.

Added:
cfe/trunk/test/CodeGen/dso-local-executable.c
cfe/trunk/test/CodeGenCXX/dso-local-executable.cpp
Modified:
cfe/trunk/lib/CodeGen/CGDecl.cpp
cfe/trunk/lib/CodeGen/CGVTT.cpp
cfe/trunk/lib/CodeGen/CGVTables.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/test/CodeGen/mbackchain-2.c
cfe/trunk/test/CodeGen/mbackchain-3.c
cfe/trunk/test/CodeGen/mips-vector-return.c
cfe/trunk/test/CodeGen/split-stacks.c
cfe/trunk/test/CodeGenCXX/debug-info-static-member.cpp
cfe/trunk/test/CodeGenCXX/debug-info-template.cpp
cfe/trunk/test/CodeGenCXX/float16-declarations.cpp
cfe/trunk/test/CodeGenCXX/split-stacks.cpp
cfe/trunk/test/Driver/lanai-unknown-unknown.cpp
cfe/trunk/test/Driver/le32-unknown-nacl.cpp
cfe/trunk/test/Driver/le64-unknown-unknown.cpp
cfe/trunk/test/Driver/riscv32-toolchain.c
cfe/trunk/test/Driver/riscv64-toolchain.c
cfe/trunk/test/Frontend/ast-codegen.c

Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=324535=324534=324535=diff
==
--- cfe/trunk/lib/CodeGen/CGDecl.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDecl.cpp Wed Feb  7 14:15:33 2018
@@ -240,7 +240,7 @@ llvm::Constant *CodeGenModule::getOrCrea
   getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name,
   nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS);
   GV->setAlignment(getContext().getDeclAlign().getQuantity());
-  setGlobalVisibility(GV, );
+  setGVProperties(GV, );
 
   if (supportsCOMDAT() && GV->isWeakForLinker())
 GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
@@ -344,6 +344,7 @@ CodeGenFunction::AddInitializerToStaticV
   OldGV->getThreadLocalMode(),

CGM.getContext().getTargetAddressSpace(D.getType()));
 GV->setVisibility(OldGV->getVisibility());
+GV->setDSOLocal(OldGV->isDSOLocal());
 GV->setComdat(OldGV->getComdat());
 
 // Steal the name of the old global

Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=324535=324534=324535=diff
==
--- cfe/trunk/lib/CodeGen/CGVTT.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTT.cpp Wed Feb  7 14:15:33 2018
@@ -100,7 +100,7 @@ CodeGenVTables::EmitVTTDefinition(llvm::
 VTT->setComdat(CGM.getModule().getOrInsertComdat(VTT->getName()));
 
   // Set the right visibility.
-  CGM.setGlobalVisibility(VTT, RD);
+  CGM.setGVProperties(VTT, RD);
 }
 
 llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) {

Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=324535=324534=324535=diff
==
--- cfe/trunk/lib/CodeGen/CGVTables.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTables.cpp Wed Feb  7 14:15:33 2018
@@ -51,7 +51,7 @@ llvm::Constant *CodeGenModule::GetAddrOf
 
 static void setThunkVisibility(CodeGenModule , const CXXMethodDecl *MD,
const ThunkInfo , llvm::Function *Fn) {
-  CGM.setGlobalVisibility(Fn, MD);
+  CGM.setGVProperties(Fn, MD);
 }
 
 static void setThunkProperties(CodeGenModule , const ThunkInfo ,
@@ -730,7 +730,7 @@ CodeGenVTables::GenerateConstructionVTab
   // Create the variable that will hold the construction vtable.
   llvm::GlobalVariable *VTable =
 CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage);
-  CGM.setGlobalVisibility(VTable, RD);
+  CGM.setGVProperties(VTable, RD);
 
   // V-tables are always unnamed_addr.
   VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 

r324505 - Revert "Recommit r324107."

2018-02-07 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb  7 11:44:15 2018
New Revision: 324505

URL: http://llvm.org/viewvc/llvm-project?rev=324505=rev
Log:
Revert "Recommit r324107."

This reverts commit r324500.

The bots found two failures:

ThreadSanitizer-x86_64 :: Linux/pie_no_aslr.cc
ThreadSanitizer-x86_64 :: pie_test.cc

when using gold. The issue is a limitation in gold when building pie
binaries. I will investigate how to work around it.

Removed:
cfe/trunk/test/CodeGen/dso-local-executable.c
cfe/trunk/test/CodeGenCXX/dso-local-executable.cpp
Modified:
cfe/trunk/lib/CodeGen/CGDecl.cpp
cfe/trunk/lib/CodeGen/CGVTT.cpp
cfe/trunk/lib/CodeGen/CGVTables.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/test/CodeGen/mbackchain-2.c
cfe/trunk/test/CodeGen/mbackchain-3.c
cfe/trunk/test/CodeGen/mips-vector-return.c
cfe/trunk/test/CodeGen/split-stacks.c
cfe/trunk/test/CodeGenCXX/debug-info-static-member.cpp
cfe/trunk/test/CodeGenCXX/debug-info-template.cpp
cfe/trunk/test/CodeGenCXX/float16-declarations.cpp
cfe/trunk/test/CodeGenCXX/split-stacks.cpp
cfe/trunk/test/Driver/lanai-unknown-unknown.cpp
cfe/trunk/test/Driver/le32-unknown-nacl.cpp
cfe/trunk/test/Driver/le64-unknown-unknown.cpp
cfe/trunk/test/Driver/riscv32-toolchain.c
cfe/trunk/test/Driver/riscv64-toolchain.c
cfe/trunk/test/Frontend/ast-codegen.c

Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=324505=324504=324505=diff
==
--- cfe/trunk/lib/CodeGen/CGDecl.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDecl.cpp Wed Feb  7 11:44:15 2018
@@ -240,7 +240,7 @@ llvm::Constant *CodeGenModule::getOrCrea
   getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name,
   nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS);
   GV->setAlignment(getContext().getDeclAlign().getQuantity());
-  setGVProperties(GV, );
+  setGlobalVisibility(GV, );
 
   if (supportsCOMDAT() && GV->isWeakForLinker())
 GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
@@ -344,7 +344,6 @@ CodeGenFunction::AddInitializerToStaticV
   OldGV->getThreadLocalMode(),

CGM.getContext().getTargetAddressSpace(D.getType()));
 GV->setVisibility(OldGV->getVisibility());
-GV->setDSOLocal(OldGV->isDSOLocal());
 GV->setComdat(OldGV->getComdat());
 
 // Steal the name of the old global

Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=324505=324504=324505=diff
==
--- cfe/trunk/lib/CodeGen/CGVTT.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTT.cpp Wed Feb  7 11:44:15 2018
@@ -100,7 +100,7 @@ CodeGenVTables::EmitVTTDefinition(llvm::
 VTT->setComdat(CGM.getModule().getOrInsertComdat(VTT->getName()));
 
   // Set the right visibility.
-  CGM.setGVProperties(VTT, RD);
+  CGM.setGlobalVisibility(VTT, RD);
 }
 
 llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) {

Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=324505=324504=324505=diff
==
--- cfe/trunk/lib/CodeGen/CGVTables.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTables.cpp Wed Feb  7 11:44:15 2018
@@ -51,7 +51,7 @@ llvm::Constant *CodeGenModule::GetAddrOf
 
 static void setThunkVisibility(CodeGenModule , const CXXMethodDecl *MD,
const ThunkInfo , llvm::Function *Fn) {
-  CGM.setGVProperties(Fn, MD);
+  CGM.setGlobalVisibility(Fn, MD);
 }
 
 static void setThunkProperties(CodeGenModule , const ThunkInfo ,
@@ -730,7 +730,7 @@ CodeGenVTables::GenerateConstructionVTab
   // Create the variable that will hold the construction vtable.
   llvm::GlobalVariable *VTable =
 CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage);
-  CGM.setGVProperties(VTable, RD);
+  CGM.setGlobalVisibility(VTable, RD);
 
   // V-tables are always unnamed_addr.
   VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=324505=324504=324505=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Feb  7 11:44:15 2018
@@ -715,62 +715,6 @@ void CodeGenModule::setGlobalVisibility(
 GV->setVisibility(GetLLVMVisibility(LV.getVisibility()));
 }
 
-static bool shouldAssumeDSOLocal(const CodeGenModule ,
- llvm::GlobalValue 

r324500 - Recommit r324107.

2018-02-07 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb  7 11:16:49 2018
New Revision: 324500

URL: http://llvm.org/viewvc/llvm-project?rev=324500=rev
Log:
Recommit r324107.

It now includes a fix to not mark available_externally definitions as
dso_local.

Original message:

Start setting dso_local in clang.

This starts adding dso_local to clang.

The hope is to eventually have TargetMachine::shouldAssumeDsoLocal go
away. My objective for now is to move enough of it to clang to remove
the need for the TargetMachine one to handle PIE copy relocations and
-fno-plt. With that it should then be easy to implement a
-fno-copy-reloc in clang.

This patch just adds the cases where we assume a symbol to be local
based on the file being compiled for an executable or a shared
library.

Added:
cfe/trunk/test/CodeGen/dso-local-executable.c
cfe/trunk/test/CodeGenCXX/dso-local-executable.cpp
Modified:
cfe/trunk/lib/CodeGen/CGDecl.cpp
cfe/trunk/lib/CodeGen/CGVTT.cpp
cfe/trunk/lib/CodeGen/CGVTables.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/test/CodeGen/mbackchain-2.c
cfe/trunk/test/CodeGen/mbackchain-3.c
cfe/trunk/test/CodeGen/mips-vector-return.c
cfe/trunk/test/CodeGen/split-stacks.c
cfe/trunk/test/CodeGenCXX/debug-info-static-member.cpp
cfe/trunk/test/CodeGenCXX/debug-info-template.cpp
cfe/trunk/test/CodeGenCXX/float16-declarations.cpp
cfe/trunk/test/CodeGenCXX/split-stacks.cpp
cfe/trunk/test/Driver/lanai-unknown-unknown.cpp
cfe/trunk/test/Driver/le32-unknown-nacl.cpp
cfe/trunk/test/Driver/le64-unknown-unknown.cpp
cfe/trunk/test/Driver/riscv32-toolchain.c
cfe/trunk/test/Driver/riscv64-toolchain.c
cfe/trunk/test/Frontend/ast-codegen.c

Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=324500=324499=324500=diff
==
--- cfe/trunk/lib/CodeGen/CGDecl.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDecl.cpp Wed Feb  7 11:16:49 2018
@@ -240,7 +240,7 @@ llvm::Constant *CodeGenModule::getOrCrea
   getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name,
   nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS);
   GV->setAlignment(getContext().getDeclAlign().getQuantity());
-  setGlobalVisibility(GV, );
+  setGVProperties(GV, );
 
   if (supportsCOMDAT() && GV->isWeakForLinker())
 GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
@@ -344,6 +344,7 @@ CodeGenFunction::AddInitializerToStaticV
   OldGV->getThreadLocalMode(),

CGM.getContext().getTargetAddressSpace(D.getType()));
 GV->setVisibility(OldGV->getVisibility());
+GV->setDSOLocal(OldGV->isDSOLocal());
 GV->setComdat(OldGV->getComdat());
 
 // Steal the name of the old global

Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=324500=324499=324500=diff
==
--- cfe/trunk/lib/CodeGen/CGVTT.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTT.cpp Wed Feb  7 11:16:49 2018
@@ -100,7 +100,7 @@ CodeGenVTables::EmitVTTDefinition(llvm::
 VTT->setComdat(CGM.getModule().getOrInsertComdat(VTT->getName()));
 
   // Set the right visibility.
-  CGM.setGlobalVisibility(VTT, RD);
+  CGM.setGVProperties(VTT, RD);
 }
 
 llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) {

Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=324500=324499=324500=diff
==
--- cfe/trunk/lib/CodeGen/CGVTables.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTables.cpp Wed Feb  7 11:16:49 2018
@@ -51,7 +51,7 @@ llvm::Constant *CodeGenModule::GetAddrOf
 
 static void setThunkVisibility(CodeGenModule , const CXXMethodDecl *MD,
const ThunkInfo , llvm::Function *Fn) {
-  CGM.setGlobalVisibility(Fn, MD);
+  CGM.setGVProperties(Fn, MD);
 }
 
 static void setThunkProperties(CodeGenModule , const ThunkInfo ,
@@ -730,7 +730,7 @@ CodeGenVTables::GenerateConstructionVTab
   // Create the variable that will hold the construction vtable.
   llvm::GlobalVariable *VTable =
 CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage);
-  CGM.setGlobalVisibility(VTable, RD);
+  CGM.setGVProperties(VTable, RD);
 
   // V-tables are always unnamed_addr.
   VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=324500=324499=324500=diff
==
--- 

r324499 - Don't pass ForDefinition_t in places it is redundant.

2018-02-07 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb  7 11:04:41 2018
New Revision: 324499

URL: http://llvm.org/viewvc/llvm-project?rev=324499=rev
Log:
Don't pass ForDefinition_t in places it is redundant.

I found this while looking at the ppc failures caused by the dso_local
change.

The issue was that the patch would produce the wrong answer for
available_externally. Having ForDefinition_t available in places where
the code can just check the linkage is a bit of a foot gun.

This patch removes the ForDefiniton_t argument in places where the
linkage is already know.

Modified:
cfe/trunk/lib/CodeGen/CGDecl.cpp
cfe/trunk/lib/CodeGen/CGVTT.cpp
cfe/trunk/lib/CodeGen/CGVTables.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/lib/CodeGen/TargetInfo.cpp
cfe/trunk/lib/CodeGen/TargetInfo.h

Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=324499=324498=324499=diff
==
--- cfe/trunk/lib/CodeGen/CGDecl.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDecl.cpp Wed Feb  7 11:04:41 2018
@@ -240,7 +240,7 @@ llvm::Constant *CodeGenModule::getOrCrea
   getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name,
   nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS);
   GV->setAlignment(getContext().getDeclAlign().getQuantity());
-  setGlobalVisibility(GV, , ForDefinition);
+  setGlobalVisibility(GV, );
 
   if (supportsCOMDAT() && GV->isWeakForLinker())
 GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));

Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=324499=324498=324499=diff
==
--- cfe/trunk/lib/CodeGen/CGVTT.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTT.cpp Wed Feb  7 11:04:41 2018
@@ -100,7 +100,7 @@ CodeGenVTables::EmitVTTDefinition(llvm::
 VTT->setComdat(CGM.getModule().getOrInsertComdat(VTT->getName()));
 
   // Set the right visibility.
-  CGM.setGlobalVisibility(VTT, RD, ForDefinition);
+  CGM.setGlobalVisibility(VTT, RD);
 }
 
 llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) {

Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=324499=324498=324499=diff
==
--- cfe/trunk/lib/CodeGen/CGVTables.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTables.cpp Wed Feb  7 11:04:41 2018
@@ -51,7 +51,7 @@ llvm::Constant *CodeGenModule::GetAddrOf
 
 static void setThunkVisibility(CodeGenModule , const CXXMethodDecl *MD,
const ThunkInfo , llvm::Function *Fn) {
-  CGM.setGlobalVisibility(Fn, MD, ForDefinition);
+  CGM.setGlobalVisibility(Fn, MD);
 }
 
 static void setThunkProperties(CodeGenModule , const ThunkInfo ,
@@ -730,7 +730,7 @@ CodeGenVTables::GenerateConstructionVTab
   // Create the variable that will hold the construction vtable.
   llvm::GlobalVariable *VTable =
 CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage);
-  CGM.setGlobalVisibility(VTable, RD, ForDefinition);
+  CGM.setGlobalVisibility(VTable, RD);
 
   // V-tables are always unnamed_addr.
   VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=324499=324498=324499=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Feb  7 11:04:41 2018
@@ -700,8 +700,7 @@ llvm::ConstantInt *CodeGenModule::getSiz
 }
 
 void CodeGenModule::setGlobalVisibility(llvm::GlobalValue *GV,
-const NamedDecl *D,
-ForDefinition_t IsForDefinition) const 
{
+const NamedDecl *D) const {
   if (GV->hasDLLImportStorageClass())
 return;
   // Internal definitions always have default visibility.
@@ -712,8 +711,7 @@ void CodeGenModule::setGlobalVisibility(
 
   // Set visibility for definitions.
   LinkageInfo LV = D->getLinkageAndVisibility();
-  if (LV.isVisibilityExplicit() ||
-  (IsForDefinition && !GV->hasAvailableExternallyLinkage()))
+  if (LV.isVisibilityExplicit() || !GV->isDeclarationForLinker())
 GV->setVisibility(GetLLVMVisibility(LV.getVisibility()));
 }
 
@@ -1174,7 +1172,7 @@ void CodeGenModule::SetLLVMFunctionAttri
 void CodeGenModule::SetCommonAttributes(const Decl *D,
 llvm::GlobalValue *GV) {
   if (const auto *ND = dyn_cast_or_null(D))
-setGlobalVisibility(GV, ND, ForDefinition);
+

r324108 - Revert "Start setting dso_local in clang."

2018-02-02 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Fri Feb  2 09:29:22 2018
New Revision: 324108

URL: http://llvm.org/viewvc/llvm-project?rev=324108=rev
Log:
Revert "Start setting dso_local in clang."

This reverts commit r324107.

I will have to test it on OS X.

Removed:
cfe/trunk/test/CodeGen/dso-local-executable.c
cfe/trunk/test/CodeGenCXX/dso-local-executable.cpp
Modified:
cfe/trunk/lib/CodeGen/CGDecl.cpp
cfe/trunk/lib/CodeGen/CGVTT.cpp
cfe/trunk/lib/CodeGen/CGVTables.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/test/CodeGen/mbackchain-2.c
cfe/trunk/test/CodeGen/mbackchain-3.c
cfe/trunk/test/CodeGen/mips-vector-return.c
cfe/trunk/test/CodeGen/split-stacks.c
cfe/trunk/test/CodeGenCXX/debug-info-static-member.cpp
cfe/trunk/test/CodeGenCXX/debug-info-template.cpp
cfe/trunk/test/CodeGenCXX/float16-declarations.cpp
cfe/trunk/test/CodeGenCXX/split-stacks.cpp
cfe/trunk/test/Driver/lanai-unknown-unknown.cpp
cfe/trunk/test/Driver/le32-unknown-nacl.cpp
cfe/trunk/test/Driver/le64-unknown-unknown.cpp
cfe/trunk/test/Driver/riscv32-toolchain.c
cfe/trunk/test/Driver/riscv64-toolchain.c
cfe/trunk/test/Frontend/ast-codegen.c

Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=324108=324107=324108=diff
==
--- cfe/trunk/lib/CodeGen/CGDecl.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDecl.cpp Fri Feb  2 09:29:22 2018
@@ -240,7 +240,7 @@ llvm::Constant *CodeGenModule::getOrCrea
   getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name,
   nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS);
   GV->setAlignment(getContext().getDeclAlign().getQuantity());
-  setGVProperties(GV, , ForDefinition);
+  setGlobalVisibility(GV, , ForDefinition);
 
   if (supportsCOMDAT() && GV->isWeakForLinker())
 GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
@@ -344,7 +344,6 @@ CodeGenFunction::AddInitializerToStaticV
   OldGV->getThreadLocalMode(),

CGM.getContext().getTargetAddressSpace(D.getType()));
 GV->setVisibility(OldGV->getVisibility());
-GV->setDSOLocal(OldGV->isDSOLocal());
 GV->setComdat(OldGV->getComdat());
 
 // Steal the name of the old global

Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=324108=324107=324108=diff
==
--- cfe/trunk/lib/CodeGen/CGVTT.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTT.cpp Fri Feb  2 09:29:22 2018
@@ -100,7 +100,7 @@ CodeGenVTables::EmitVTTDefinition(llvm::
 VTT->setComdat(CGM.getModule().getOrInsertComdat(VTT->getName()));
 
   // Set the right visibility.
-  CGM.setGVProperties(VTT, RD, ForDefinition);
+  CGM.setGlobalVisibility(VTT, RD, ForDefinition);
 }
 
 llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) {

Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=324108=324107=324108=diff
==
--- cfe/trunk/lib/CodeGen/CGVTables.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTables.cpp Fri Feb  2 09:29:22 2018
@@ -51,7 +51,7 @@ llvm::Constant *CodeGenModule::GetAddrOf
 
 static void setThunkVisibility(CodeGenModule , const CXXMethodDecl *MD,
const ThunkInfo , llvm::Function *Fn) {
-  CGM.setGVProperties(Fn, MD, ForDefinition);
+  CGM.setGlobalVisibility(Fn, MD, ForDefinition);
 }
 
 static void setThunkProperties(CodeGenModule , const ThunkInfo ,
@@ -730,7 +730,7 @@ CodeGenVTables::GenerateConstructionVTab
   // Create the variable that will hold the construction vtable.
   llvm::GlobalVariable *VTable =
 CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage);
-  CGM.setGVProperties(VTable, RD, ForDefinition);
+  CGM.setGlobalVisibility(VTable, RD, ForDefinition);
 
   // V-tables are always unnamed_addr.
   VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=324108=324107=324108=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Fri Feb  2 09:29:22 2018
@@ -717,63 +717,6 @@ void CodeGenModule::setGlobalVisibility(
 GV->setVisibility(GetLLVMVisibility(LV.getVisibility()));
 }
 
-static bool shouldAssumeDSOLocal(const CodeGenModule ,
- llvm::GlobalValue *GV, const NamedDecl *D,
- ForDefinition_t 

r324107 - Start setting dso_local in clang.

2018-02-02 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Fri Feb  2 09:17:39 2018
New Revision: 324107

URL: http://llvm.org/viewvc/llvm-project?rev=324107=rev
Log:
Start setting dso_local in clang.

This starts adding dso_local to clang.

The hope is to eventually have TargetMachine::shouldAssumeDsoLocal go
away. My objective for now is to move enough of it to clang to remove
the need for the TargetMachine one to handle PIE copy relocations and
-fno-plt. With that it should then be easy to implement a
-fno-copy-reloc in clang.

This patch just adds the cases where we assume a symbol to be local
based on the file being compiled for an executable or a shared
library.

Added:
cfe/trunk/test/CodeGen/dso-local-executable.c
cfe/trunk/test/CodeGenCXX/dso-local-executable.cpp
Modified:
cfe/trunk/lib/CodeGen/CGDecl.cpp
cfe/trunk/lib/CodeGen/CGVTT.cpp
cfe/trunk/lib/CodeGen/CGVTables.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/test/CodeGen/mbackchain-2.c
cfe/trunk/test/CodeGen/mbackchain-3.c
cfe/trunk/test/CodeGen/mips-vector-return.c
cfe/trunk/test/CodeGen/split-stacks.c
cfe/trunk/test/CodeGenCXX/debug-info-static-member.cpp
cfe/trunk/test/CodeGenCXX/debug-info-template.cpp
cfe/trunk/test/CodeGenCXX/float16-declarations.cpp
cfe/trunk/test/CodeGenCXX/split-stacks.cpp
cfe/trunk/test/Driver/lanai-unknown-unknown.cpp
cfe/trunk/test/Driver/le32-unknown-nacl.cpp
cfe/trunk/test/Driver/le64-unknown-unknown.cpp
cfe/trunk/test/Driver/riscv32-toolchain.c
cfe/trunk/test/Driver/riscv64-toolchain.c
cfe/trunk/test/Frontend/ast-codegen.c

Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=324107=324106=324107=diff
==
--- cfe/trunk/lib/CodeGen/CGDecl.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDecl.cpp Fri Feb  2 09:17:39 2018
@@ -240,7 +240,7 @@ llvm::Constant *CodeGenModule::getOrCrea
   getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name,
   nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS);
   GV->setAlignment(getContext().getDeclAlign().getQuantity());
-  setGlobalVisibility(GV, , ForDefinition);
+  setGVProperties(GV, , ForDefinition);
 
   if (supportsCOMDAT() && GV->isWeakForLinker())
 GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
@@ -344,6 +344,7 @@ CodeGenFunction::AddInitializerToStaticV
   OldGV->getThreadLocalMode(),

CGM.getContext().getTargetAddressSpace(D.getType()));
 GV->setVisibility(OldGV->getVisibility());
+GV->setDSOLocal(OldGV->isDSOLocal());
 GV->setComdat(OldGV->getComdat());
 
 // Steal the name of the old global

Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=324107=324106=324107=diff
==
--- cfe/trunk/lib/CodeGen/CGVTT.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTT.cpp Fri Feb  2 09:17:39 2018
@@ -100,7 +100,7 @@ CodeGenVTables::EmitVTTDefinition(llvm::
 VTT->setComdat(CGM.getModule().getOrInsertComdat(VTT->getName()));
 
   // Set the right visibility.
-  CGM.setGlobalVisibility(VTT, RD, ForDefinition);
+  CGM.setGVProperties(VTT, RD, ForDefinition);
 }
 
 llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) {

Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=324107=324106=324107=diff
==
--- cfe/trunk/lib/CodeGen/CGVTables.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTables.cpp Fri Feb  2 09:17:39 2018
@@ -51,7 +51,7 @@ llvm::Constant *CodeGenModule::GetAddrOf
 
 static void setThunkVisibility(CodeGenModule , const CXXMethodDecl *MD,
const ThunkInfo , llvm::Function *Fn) {
-  CGM.setGlobalVisibility(Fn, MD, ForDefinition);
+  CGM.setGVProperties(Fn, MD, ForDefinition);
 }
 
 static void setThunkProperties(CodeGenModule , const ThunkInfo ,
@@ -730,7 +730,7 @@ CodeGenVTables::GenerateConstructionVTab
   // Create the variable that will hold the construction vtable.
   llvm::GlobalVariable *VTable =
 CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage);
-  CGM.setGlobalVisibility(VTable, RD, ForDefinition);
+  CGM.setGVProperties(VTable, RD, ForDefinition);
 
   // V-tables are always unnamed_addr.
   VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=324107=324106=324107=diff
==
--- 

r323361 - Don't create hidden dllimport global values.

2018-01-24 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Jan 24 10:58:32 2018
New Revision: 323361

URL: http://llvm.org/viewvc/llvm-project?rev=323361=rev
Log:
Don't create hidden dllimport global values.

Hidden visibility is almost the opposite of dllimport. We were
producing them before (dllimport wins in the existing llvm
implementation), but now the llvm verifier produces an error.

Added:
cfe/trunk/test/CodeGenCXX/hidden-dllimport.cpp
Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=323361=323360=323361=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Jan 24 10:58:32 2018
@@ -694,6 +694,8 @@ llvm::ConstantInt *CodeGenModule::getSiz
 void CodeGenModule::setGlobalVisibility(llvm::GlobalValue *GV,
 const NamedDecl *D,
 ForDefinition_t IsForDefinition) const 
{
+  if (GV->hasDLLImportStorageClass())
+return;
   // Internal definitions always have default visibility.
   if (GV->hasLocalLinkage()) {
 GV->setVisibility(llvm::GlobalValue::DefaultVisibility);

Added: cfe/trunk/test/CodeGenCXX/hidden-dllimport.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/hidden-dllimport.cpp?rev=323361=auto
==
--- cfe/trunk/test/CodeGenCXX/hidden-dllimport.cpp (added)
+++ cfe/trunk/test/CodeGenCXX/hidden-dllimport.cpp Wed Jan 24 10:58:32 2018
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc -emit-llvm 
-fvisibility-inlines-hidden -o - %s | FileCheck %s
+
+// We used to declare this hidden dllimport, which is contradictory.
+
+// CHECK: declare dllimport void @"\01?bar@foo@@QEAAXXZ"(%struct.foo*)
+
+struct __attribute__((dllimport)) foo {
+  void bar() {}
+};
+void zed(foo *p) { p->bar(); }


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


r322808 - Update for llvm change.

2018-01-17 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Jan 17 18:08:38 2018
New Revision: 322808

URL: http://llvm.org/viewvc/llvm-project?rev=322808=rev
Log:
Update for llvm change.

Modified:
cfe/trunk/test/OpenMP/target_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_parallel_for_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_parallel_for_simd_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_simd_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_teams_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_teams_distribute_codegen_registration.cpp

cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_teams_distribute_simd_codegen_registration.cpp

Modified: cfe/trunk/test/OpenMP/target_codegen_registration.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_codegen_registration.cpp?rev=322808=322807=322808=diff
==
--- cfe/trunk/test/OpenMP/target_codegen_registration.cpp (original)
+++ cfe/trunk/test/OpenMP/target_codegen_registration.cpp Wed Jan 17 18:08:38 
2018
@@ -393,7 +393,7 @@ struct ST {
 //CHECK: ret void
 //CHECK: declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK: define linkonce dso_local hidden void @[[REGFN]](i8*)
+//CHECK: define linkonce hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK: call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK: call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast 
([[DSCTY]]* [[DESC]] to i8*),

Modified: cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp?rev=322808=322807=322808=diff
==
--- cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp (original)
+++ cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp Wed Jan 17 
18:08:38 2018
@@ -393,7 +393,7 @@ struct ST {
 //CHECK: ret void
 //CHECK: declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK: define linkonce dso_local hidden void @[[REGFN]](i8*)
+//CHECK: define linkonce hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK: call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK: call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast 
([[DSCTY]]* [[DESC]] to i8*),

Modified: cfe/trunk/test/OpenMP/target_parallel_for_codegen_registration.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_parallel_for_codegen_registration.cpp?rev=322808=322807=322808=diff
==
--- cfe/trunk/test/OpenMP/target_parallel_for_codegen_registration.cpp 
(original)
+++ cfe/trunk/test/OpenMP/target_parallel_for_codegen_registration.cpp Wed Jan 
17 18:08:38 2018
@@ -402,7 +402,7 @@ struct ST {
 //CHECK: ret void
 //CHECK: declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK: define linkonce dso_local hidden void @[[REGFN]](i8*)
+//CHECK: define linkonce hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK: call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK: call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast 
([[DSCTY]]* [[DESC]] to i8*),

Modified: 
cfe/trunk/test/OpenMP/target_parallel_for_simd_codegen_registration.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_parallel_for_simd_codegen_registration.cpp?rev=322808=322807=322808=diff
==
--- cfe/trunk/test/OpenMP/target_parallel_for_simd_codegen_registration.cpp 
(original)
+++ cfe/trunk/test/OpenMP/target_parallel_for_simd_codegen_registration.cpp Wed 
Jan 17 18:08:38 2018
@@ -402,7 +402,7 @@ struct ST {
 //CHECK: ret void
 //CHECK: declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK: define linkonce dso_local hidden void @[[REGFN]](i8*)
+//CHECK: define linkonce hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK: call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK: call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast 
([[DSCTY]]* [[DESC]] to i8*),

Modified: cfe/trunk/test/OpenMP/target_simd_codegen_registration.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_simd_codegen_registration.cpp?rev=322808=322807=322808=diff
==
--- cfe/trunk/test/OpenMP/target_simd_codegen_registration.cpp (original)
+++ cfe/trunk/test/OpenMP/target_simd_codegen_registration.cpp Wed Jan 17 
18:08:38 2018
@@ -402,7 +402,7 @@ struct ST {
 //CHECK: ret void
 //CHECK: declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK: define 

r322792 - Use an enum value instead of a string.

2018-01-17 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Jan 17 16:20:03 2018
New Revision: 322792

URL: http://llvm.org/viewvc/llvm-project?rev=322792=rev
Log:
Use an enum value instead of a string.

The old StringSwitch use was also broken. It assumed that a
StringSwitch returns Optional instead of T and was missing a
.Default.

Modified:
cfe/trunk/include/clang/Frontend/CodeGenOptions.h
cfe/trunk/lib/CodeGen/BackendUtil.cpp
cfe/trunk/lib/Frontend/CodeGenOptions.cpp
cfe/trunk/lib/Frontend/CompilerInvocation.cpp

Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.h?rev=322792=322791=322792=diff
==
--- cfe/trunk/include/clang/Frontend/CodeGenOptions.h (original)
+++ cfe/trunk/include/clang/Frontend/CodeGenOptions.h Wed Jan 17 16:20:03 2018
@@ -16,6 +16,7 @@
 
 #include "clang/Basic/DebugInfoOptions.h"
 #include "clang/Basic/Sanitizers.h"
+#include "llvm/Support/CodeGen.h"
 #include "llvm/Support/Regex.h"
 #include "llvm/Target/TargetOptions.h"
 #include 
@@ -167,7 +168,7 @@ public:
   std::string SplitDwarfFile;
 
   /// The name of the relocation model to use.
-  std::string RelocationModel;
+  llvm::Reloc::Model RelocationModel;
 
   /// The thread model to use
   std::string ThreadModel;

Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=322792=322791=322792=diff
==
--- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original)
+++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Wed Jan 17 16:20:03 2018
@@ -362,21 +362,6 @@ getCodeModel(const CodeGenOptions 
   return static_cast(CodeModel);
 }
 
-static llvm::Reloc::Model getRelocModel(const CodeGenOptions ) {
-  // Keep this synced with the equivalent code in
-  // lib/Frontend/CompilerInvocation.cpp
-  llvm::Optional RM;
-  RM = llvm::StringSwitch(CodeGenOpts.RelocationModel)
-  .Case("static", llvm::Reloc::Static)
-  .Case("pic", llvm::Reloc::PIC_)
-  .Case("ropi", llvm::Reloc::ROPI)
-  .Case("rwpi", llvm::Reloc::RWPI)
-  .Case("ropi-rwpi", llvm::Reloc::ROPI_RWPI)
-  .Case("dynamic-no-pic", llvm::Reloc::DynamicNoPIC);
-  assert(RM.hasValue() && "invalid PIC model!");
-  return *RM;
-}
-
 static TargetMachine::CodeGenFileType getCodeGenFileType(BackendAction Action) 
{
   if (Action == Backend_EmitObj)
 return TargetMachine::CGFT_ObjectFile;
@@ -692,7 +677,7 @@ void EmitAssemblyHelper::CreateTargetMac
   Optional CM = getCodeModel(CodeGenOpts);
   std::string FeaturesStr =
   llvm::join(TargetOpts.Features.begin(), TargetOpts.Features.end(), ",");
-  llvm::Reloc::Model RM = getRelocModel(CodeGenOpts);
+  llvm::Reloc::Model RM = CodeGenOpts.RelocationModel;
   CodeGenOpt::Level OptLevel = getCGOptLevel(CodeGenOpts);
 
   llvm::TargetOptions Options;
@@ -1113,7 +1098,7 @@ static void runThinLTOBackend(ModuleSumm
   Conf.CPU = TOpts.CPU;
   Conf.CodeModel = getCodeModel(CGOpts);
   Conf.MAttrs = TOpts.Features;
-  Conf.RelocModel = getRelocModel(CGOpts);
+  Conf.RelocModel = CGOpts.RelocationModel;
   Conf.CGOptLevel = getCGOptLevel(CGOpts);
   initTargetOptions(Conf.Options, CGOpts, TOpts, LOpts, HeaderOpts);
   Conf.SampleProfile = std::move(SampleProfile);

Modified: cfe/trunk/lib/Frontend/CodeGenOptions.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CodeGenOptions.cpp?rev=322792=322791=322792=diff
==
--- cfe/trunk/lib/Frontend/CodeGenOptions.cpp (original)
+++ cfe/trunk/lib/Frontend/CodeGenOptions.cpp Wed Jan 17 16:20:03 2018
@@ -17,7 +17,7 @@ CodeGenOptions::CodeGenOptions() {
 #define ENUM_CODEGENOPT(Name, Type, Bits, Default) set##Name(Default);
 #include "clang/Frontend/CodeGenOptions.def"
 
-  RelocationModel = "pic";
+  RelocationModel = llvm::Reloc::PIC_;
   memcpy(CoverageVersion, "402*", 4);
 }
 

Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=322792=322791=322792=diff
==
--- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
+++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Wed Jan 17 16:20:03 2018
@@ -330,15 +330,23 @@ static StringRef getCodeModel(ArgList 
   return "default";
 }
 
-static StringRef getRelocModel(ArgList , DiagnosticsEngine ) {
+static llvm::Reloc::Model getRelocModel(ArgList ,
+DiagnosticsEngine ) {
   if (Arg *A = Args.getLastArg(OPT_mrelocation_model)) {
 StringRef Value = A->getValue();
-if (Value == "static" || Value == "pic" || Value == "ropi" ||
-Value == "rwpi" || Value == "ropi-rwpi" || Value == "dynamic-no-pic")
-  return Value;
+auto RM = 

r322318 - Make internal/private GVs implicitly dso_local.

2018-01-11 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Jan 11 14:15:12 2018
New Revision: 322318

URL: http://llvm.org/viewvc/llvm-project?rev=322318=rev
Log:
Make internal/private GVs implicitly dso_local.

While updating clang tests for having clang set dso_local I noticed
that:

- There are *a lot* of tests to update.
- Many of the updates are redundant.

They are redundant because a GV is "obviously dso_local". This patch
starts formalizing that a bit by requiring that internal and private
GVs be dso_local too. Since they all are, we don't have to print
dso_local to the textual representation, making it a bit more compact
and easier to read.

Modified:
cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp
cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp
cfe/trunk/test/OpenMP/target_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_parallel_for_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_parallel_for_simd_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_simd_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_teams_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_teams_distribute_codegen_registration.cpp
cfe/trunk/test/OpenMP/target_teams_distribute_simd_codegen_registration.cpp

Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp?rev=322318=322317=322318=diff
==
--- cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp Thu Jan 11 14:15:12 2018
@@ -5912,6 +5912,7 @@ void CGOpenMPRuntime::emitTargetOutlined
   if (CGM.getLangOpts().OpenMPIsDevice) {
 OutlinedFnID = llvm::ConstantExpr::getBitCast(OutlinedFn, CGM.Int8PtrTy);
 OutlinedFn->setLinkage(llvm::GlobalValue::ExternalLinkage);
+OutlinedFn->setDSOLocal(false);
   } else
 OutlinedFnID = new llvm::GlobalVariable(
 CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,

Modified: cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp?rev=322318=322317=322318=diff
==
--- cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp Thu Jan 11 
14:15:12 2018
@@ -28,11 +28,11 @@ S s;
 // See @llvm.global_ctors above.
 __declspec(selectany) S selectany1;
 __declspec(selectany) S selectany2;
-// CHECK: define linkonce_odr void @"\01??__Eselectany1@@YAXXZ"() {{.*}} comdat
+// CHECK: define linkonce_odr dso_local void @"\01??__Eselectany1@@YAXXZ"() 
{{.*}} comdat
 // CHECK-NOT: @"\01??_Bselectany1
 // CHECK: call x86_thiscallcc %struct.S* @"\01??0S@@QAE@XZ"
 // CHECK: ret void
-// CHECK: define linkonce_odr void @"\01??__Eselectany2@@YAXXZ"() {{.*}} comdat
+// CHECK: define linkonce_odr dso_local void @"\01??__Eselectany2@@YAXXZ"() 
{{.*}} comdat
 // CHECK-NOT: @"\01??_Bselectany2
 // CHECK: call x86_thiscallcc %struct.S* @"\01??0S@@QAE@XZ"
 // CHECK: ret void
@@ -231,7 +231,7 @@ void force_usage() {
   DynamicDLLImportInitVSMangling::switch_test3();
 }
 
-// CHECK: define linkonce_odr void @"\01??__Efoo@?$B@H@@2VA@@A@YAXXZ"() {{.*}} 
comdat
+// CHECK: define linkonce_odr dso_local void 
@"\01??__Efoo@?$B@H@@2VA@@A@YAXXZ"() {{.*}} comdat
 // CHECK-NOT: and
 // CHECK-NOT: ?_Bfoo@
 // CHECK: call x86_thiscallcc %class.A* @"\01??0A@@QAE@XZ"

Modified: cfe/trunk/test/OpenMP/target_codegen_registration.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_codegen_registration.cpp?rev=322318=322317=322318=diff
==
--- cfe/trunk/test/OpenMP/target_codegen_registration.cpp (original)
+++ cfe/trunk/test/OpenMP/target_codegen_registration.cpp Thu Jan 11 14:15:12 
2018
@@ -393,7 +393,7 @@ struct ST {
 //CHECK: ret void
 //CHECK: declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK: define linkonce hidden void @[[REGFN]](i8*)
+//CHECK: define linkonce dso_local hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK: call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK: call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast 
([[DSCTY]]* [[DESC]] to i8*),

Modified: cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp?rev=322318=322317=322318=diff
==
--- cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp (original)
+++ cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp Thu Jan 11 
14:15:12 2018
@@ -393,7 +393,7 @@ struct ST {
 //CHECK: 

[clang-tools-extra] r312769 - Update for PrintHelpMessage not calling exit.

2017-09-07 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Sep  7 17:33:39 2017
New Revision: 312769

URL: http://llvm.org/viewvc/llvm-project?rev=312769=rev
Log:
Update for PrintHelpMessage not calling exit.

Modified:
clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp
clang-tools-extra/trunk/modularize/Modularize.cpp

Modified: clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp?rev=312769=312768=312769=diff
==
--- clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp Thu Sep  7 
17:33:39 2017
@@ -392,13 +392,13 @@ static int clangTidyMain(int argc, const
   if (EnabledChecks.empty()) {
 llvm::errs() << "Error: no checks enabled.\n";
 llvm::cl::PrintHelpMessage(/*Hidden=*/false, /*Categorized=*/true);
-return 1;
+return 0;
   }
 
   if (PathList.empty()) {
 llvm::errs() << "Error: no input files specified.\n";
 llvm::cl::PrintHelpMessage(/*Hidden=*/false, /*Categorized=*/true);
-return 1;
+return 0;
   }
 
   ProfileData Profile;

Modified: clang-tools-extra/trunk/modularize/Modularize.cpp
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/modularize/Modularize.cpp?rev=312769=312768=312769=diff
==
--- clang-tools-extra/trunk/modularize/Modularize.cpp (original)
+++ clang-tools-extra/trunk/modularize/Modularize.cpp Thu Sep  7 17:33:39 2017
@@ -825,7 +825,7 @@ int main(int Argc, const char **Argv) {
   // No go if we have no header list file.
   if (ListFileNames.size() == 0) {
 cl::PrintHelpMessage();
-return 1;
+return 0;
   }
 
   std::unique_ptr ModUtil;


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


r312766 - Update for llvm change.

2017-09-07 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Sep  7 17:01:26 2017
New Revision: 312766

URL: http://llvm.org/viewvc/llvm-project?rev=312766=rev
Log:
Update for llvm change.

Modified:
cfe/trunk/tools/clang-format/ClangFormat.cpp
cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp

Modified: cfe/trunk/tools/clang-format/ClangFormat.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/ClangFormat.cpp?rev=312766=312765=312766=diff
==
--- cfe/trunk/tools/clang-format/ClangFormat.cpp (original)
+++ cfe/trunk/tools/clang-format/ClangFormat.cpp Thu Sep  7 17:01:26 2017
@@ -351,8 +351,10 @@ int main(int argc, const char **argv) {
   "together with s, the files are edited in-place. Otherwise, the\n"
   "result is written to the standard output.\n");
 
-  if (Help)
+  if (Help) {
 cl::PrintHelpMessage();
+return 0;
+  }
 
   if (DumpConfig) {
 llvm::Expected FormatStyle =

Modified: cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp?rev=312766=312765=312766=diff
==
--- cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp (original)
+++ cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp Thu Sep  7 
17:01:26 2017
@@ -931,8 +931,10 @@ int main(int argc, const char **argv) {
   "one. The resulting file can also be unbundled into different files by 
\n"
   "this tool if -unbundle is provided.\n");
 
-  if (Help)
+  if (Help) {
 cl::PrintHelpMessage();
+return 0;
+  }
 
   bool Error = false;
   if (Unbundle) {


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


r309912 - Update for llvm change.

2017-08-02 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Aug  2 19:16:28 2017
New Revision: 309912

URL: http://llvm.org/viewvc/llvm-project?rev=309912=rev
Log:
Update for llvm change.

Modified:
cfe/trunk/lib/CodeGen/BackendUtil.cpp

Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=309912=309911=309912=diff
==
--- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original)
+++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Wed Aug  2 19:16:28 2017
@@ -335,16 +335,18 @@ static CodeGenOpt::Level getCGOptLevel(c
   }
 }
 
-static llvm::CodeModel::Model getCodeModel(const CodeGenOptions ) {
-  unsigned CodeModel =
-  llvm::StringSwitch(CodeGenOpts.CodeModel)
-  .Case("small", llvm::CodeModel::Small)
-  .Case("kernel", llvm::CodeModel::Kernel)
-  .Case("medium", llvm::CodeModel::Medium)
-  .Case("large", llvm::CodeModel::Large)
-  .Case("default", llvm::CodeModel::Default)
-  .Default(~0u);
+static Optional
+getCodeModel(const CodeGenOptions ) {
+  unsigned CodeModel = llvm::StringSwitch(CodeGenOpts.CodeModel)
+   .Case("small", llvm::CodeModel::Small)
+   .Case("kernel", llvm::CodeModel::Kernel)
+   .Case("medium", llvm::CodeModel::Medium)
+   .Case("large", llvm::CodeModel::Large)
+   .Case("default", ~1u)
+   .Default(~0u);
   assert(CodeModel != ~0u && "invalid code model!");
+  if (CodeModel == ~1u)
+return None;
   return static_cast(CodeModel);
 }
 
@@ -658,7 +660,7 @@ void EmitAssemblyHelper::CreateTargetMac
 return;
   }
 
-  llvm::CodeModel::Model CM  = getCodeModel(CodeGenOpts);
+  Optional CM = getCodeModel(CodeGenOpts);
   std::string FeaturesStr =
   llvm::join(TargetOpts.Features.begin(), TargetOpts.Features.end(), ",");
   llvm::Reloc::Model RM = getRelocModel(CodeGenOpts);


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


r309885 - Update for llvm change.

2017-08-02 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Aug  2 13:32:35 2017
New Revision: 309885

URL: http://llvm.org/viewvc/llvm-project?rev=309885=rev
Log:
Update for llvm change.

Modified:
cfe/trunk/lib/Parse/ParseStmtAsm.cpp
cfe/trunk/tools/driver/cc1as_main.cpp

Modified: cfe/trunk/lib/Parse/ParseStmtAsm.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseStmtAsm.cpp?rev=309885=309884=309885=diff
==
--- cfe/trunk/lib/Parse/ParseStmtAsm.cpp (original)
+++ cfe/trunk/lib/Parse/ParseStmtAsm.cpp Wed Aug  2 13:32:35 2017
@@ -578,8 +578,7 @@ StmtResult Parser::ParseMicrosoftAsmStat
 
   llvm::SourceMgr TempSrcMgr;
   llvm::MCContext Ctx(MAI.get(), MRI.get(), MOFI.get(), );
-  MOFI->InitMCObjectFileInfo(TheTriple, /*PIC*/ false, 
llvm::CodeModel::Default,
- Ctx);
+  MOFI->InitMCObjectFileInfo(TheTriple, /*PIC*/ false, Ctx);
   std::unique_ptr Buffer =
   llvm::MemoryBuffer::getMemBuffer(AsmString, "");
 

Modified: cfe/trunk/tools/driver/cc1as_main.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1as_main.cpp?rev=309885=309884=309885=diff
==
--- cfe/trunk/tools/driver/cc1as_main.cpp (original)
+++ cfe/trunk/tools/driver/cc1as_main.cpp Wed Aug  2 13:32:35 2017
@@ -356,7 +356,7 @@ static bool ExecuteAssembler(AssemblerIn
 PIC = false;
   }
 
-  MOFI->InitMCObjectFileInfo(Triple(Opts.Triple), PIC, CodeModel::Default, 
Ctx);
+  MOFI->InitMCObjectFileInfo(Triple(Opts.Triple), PIC, Ctx);
   if (Opts.SaveTemporaryLabels)
 Ctx.setAllowTemporaryLabels(false);
   if (Opts.GenDwarfForAssembly)


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


r295245 - Fix the static build.

2017-02-15 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Feb 15 16:19:04 2017
New Revision: 295245

URL: http://llvm.org/viewvc/llvm-project?rev=295245=rev
Log:
Fix the static build.

Modified:
cfe/trunk/tools/c-index-test/CMakeLists.txt

Modified: cfe/trunk/tools/c-index-test/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/CMakeLists.txt?rev=295245=295244=295245=diff
==
--- cfe/trunk/tools/c-index-test/CMakeLists.txt (original)
+++ cfe/trunk/tools/c-index-test/CMakeLists.txt Wed Feb 15 16:19:04 2017
@@ -17,6 +17,7 @@ endif()
 if (LLVM_BUILD_STATIC)
   target_link_libraries(c-index-test
 libclang_static
+clangCodeGen
 clangIndex
   )
 else()


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


r285561 - Fix this test when we have clang-offload-bundler.exe.

2016-10-31 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon Oct 31 06:47:37 2016
New Revision: 285561

URL: http://llvm.org/viewvc/llvm-project?rev=285561=rev
Log:
Fix this test when we have clang-offload-bundler.exe.

Modified:
cfe/trunk/test/Driver/openmp-offload.c

Modified: cfe/trunk/test/Driver/openmp-offload.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/openmp-offload.c?rev=285561=285560=285561=diff
==
--- cfe/trunk/test/Driver/openmp-offload.c (original)
+++ cfe/trunk/test/Driver/openmp-offload.c Mon Oct 31 06:47:37 2016
@@ -422,13 +422,13 @@
 // Create host object and bundle.
 // CHK-BUJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le--linux" "-emit-obj" 
{{.*}}"-fopenmp" {{.*}}"-o" "
 // CHK-BUJOBS-SAME: [[HOSTOBJ:[^\\/]+\.o]]" "-x" "ir" "{{.*}}[[HOSTBC]]"
-// CHK-BUJOBS: clang-offload-bundler" "-type=o" 
"-targets=openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu,host-powerpc64le--linux"
 "-outputs=
+// CHK-BUJOBS: clang-offload-bundler{{.*}}" "-type=o" 
"-targets=openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu,host-powerpc64le--linux"
 "-outputs=
 // CHK-BUJOBS-SAME: [[RES:[^\\/]+\.o]]" 
"-inputs={{.*}}[[T1OBJ]],{{.*}}[[T2OBJ]],{{.*}}[[HOSTOBJ]]"
 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le--linux" "-S" 
{{.*}}"-fopenmp" {{.*}}"-o" "
 // CHK-BUJOBS-ST-SAME: [[HOSTASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[HOSTBC]]"
 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le--linux" 
"-filetype" "obj" {{.*}}"-o" "
 // CHK-BUJOBS-ST-SAME: [[HOSTOBJ:[^\\/]+\.o]]" "{{.*}}[[HOSTASM]]"
-// CHK-BUJOBS-ST: clang-offload-bundler" "-type=o" 
"-targets=openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu,host-powerpc64le--linux"
 "-outputs=
+// CHK-BUJOBS-ST: clang-offload-bundler{{.*}}" "-type=o" 
"-targets=openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu,host-powerpc64le--linux"
 "-outputs=
 // CHK-BUJOBS-ST-SAME: [[RES:[^\\/]+\.o]]" 
"-inputs={{.*}}[[T1OBJ]],{{.*}}[[T2OBJ]],{{.*}}[[HOSTOBJ]]"
 
 /// ###
@@ -446,14 +446,14 @@
 // RUN:   | FileCheck -check-prefix=CHK-UBJOBS2-ST %s
 
 // Unbundle and create host BC.
-// CHK-UBJOBS: clang-offload-bundler" "-type=i" 
"-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu"
 "-inputs=
+// CHK-UBJOBS: clang-offload-bundler{{.*}}" "-type=i" 
"-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu"
 "-inputs=
 // CHK-UBJOBS-SAME: [[INPUT:[^\\/]+\.i]]" "-outputs=
 // CHK-UBJOBS-SAME: [[HOSTPP:[^\\/]+\.i]],
 // CHK-UBJOBS-SAME: [[T1PP:[^\\/]+\.i]],
 // CHK-UBJOBS-SAME: [[T2PP:[^\\/]+\.i]]" "-unbundle"
 // CHK-UBJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le--linux" 
"-emit-llvm-bc"  {{.*}}"-fopenmp" {{.*}}"-o" "
 // CHK-UBJOBS-SAME: [[HOSTBC:[^\\/]+\.bc]]" "-x" "cpp-output" 
"{{.*}}[[HOSTPP]]" 
"-fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu"
-// CHK-UBJOBS-ST: clang-offload-bundler" "-type=i" 
"-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu"
 "-inputs=
+// CHK-UBJOBS-ST: clang-offload-bundler{{.*}}" "-type=i" 
"-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu"
 "-inputs=
 // CHK-UBJOBS-ST-SAME: [[INPUT:[^\\/]+\.i]]" "-outputs=
 // CHK-UBJOBS-ST-SAME: [[HOSTPP:[^\\/,]+\.i]],
 // CHK-UBJOBS-ST-SAME: [[T1PP:[^\\/,]+\.i]],
@@ -504,7 +504,7 @@
 // CHK-UBJOBS-ST-SAME: [[LKS:[^\\/]+\.lk]]"
 
 // Unbundle object file.
-// CHK-UBJOBS2: clang-offload-bundler" "-type=o" 
"-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu"
 "-inputs=
+// CHK-UBJOBS2: clang-offload-bundler{{.*}}" "-type=o" 
"-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu"
 "-inputs=
 // CHK-UBJOBS2-SAME: [[INPUT:[^\\/]+\.o]]" "-outputs=
 // CHK-UBJOBS2-SAME: [[HOSTOBJ:[^\\/]+\.o]],
 // CHK-UBJOBS2-SAME: [[T1OBJ:[^\\/]+\.o]],
@@ -516,7 +516,7 @@
 // CHK-UBJOBS2: ld{{(\.exe)?}}" {{.*}}"-o" "
 // CHK-UBJOBS2-SAME: [[HOSTBIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[HOSTOBJ]]" 
{{.*}}"-T" "
 // CHK-UBJOBS2-SAME: [[LKS:[^\\/]+\.lk]]"
-// CHK-UBJOBS2-ST: clang-offload-bundler" "-type=o" 
"-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu"
 "-inputs=
+// CHK-UBJOBS2-ST: clang-offload-bundler{{.*}}" "-type=o" 
"-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu"
 "-inputs=
 // CHK-UBJOBS2-ST-SAME: [[INPUT:[^\\/]+\.o]]" "-outputs=
 // CHK-UBJOBS2-ST-SAME: [[HOSTOBJ:[^\\/,]+\.o]],
 // CHK-UBJOBS2-ST-SAME: [[T1OBJ:[^\\/,]+\.o]],
@@ -540,7 +540,7 @@
 // RUN:   | FileCheck -check-prefix=CHK-UBUJOBS-ST %s
 
 // Unbundle and create host BC.
-// CHK-UBUJOBS: clang-offload-bundler" "-type=i" 
"-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu"
 "-inputs=

r273735 - Add support for musl-libc on ARM Linux.

2016-06-24 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Fri Jun 24 16:35:06 2016
New Revision: 273735

URL: http://llvm.org/viewvc/llvm-project?rev=273735=rev
Log:
Add support for musl-libc on ARM Linux.

Patch by Lei Zhang!

Modified:
cfe/trunk/lib/Basic/Targets.cpp
cfe/trunk/lib/CodeGen/TargetInfo.cpp
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/CodeGen/arm-cc.c
cfe/trunk/test/CodeGen/arm-eabi.c
cfe/trunk/test/Driver/arm-abi.c
cfe/trunk/test/Driver/arm-mfpu.c
cfe/trunk/test/Driver/linux-ld.c

Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=273735=273734=273735=diff
==
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Fri Jun 24 16:35:06 2016
@@ -4876,6 +4876,8 @@ public:
   case llvm::Triple::Android:
   case llvm::Triple::GNUEABI:
   case llvm::Triple::GNUEABIHF:
+  case llvm::Triple::MuslEABI:
+  case llvm::Triple::MuslEABIHF:
 setABI("aapcs-linux");
 break;
   case llvm::Triple::EABIHF:

Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=273735=273734=273735=diff
==
--- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original)
+++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Fri Jun 24 16:35:06 2016
@@ -4963,6 +4963,8 @@ public:
 case llvm::Triple::EABIHF:
 case llvm::Triple::GNUEABI:
 case llvm::Triple::GNUEABIHF:
+case llvm::Triple::MuslEABI:
+case llvm::Triple::MuslEABIHF:
   return true;
 default:
   return false;
@@ -4973,6 +4975,7 @@ public:
 switch (getTarget().getTriple().getEnvironment()) {
 case llvm::Triple::EABIHF:
 case llvm::Triple::GNUEABIHF:
+case llvm::Triple::MuslEABIHF:
   return true;
 default:
   return false;
@@ -7933,6 +7936,7 @@ const TargetCodeGenInfo ::
 else if (CodeGenOpts.FloatABI == "hard" ||
  (CodeGenOpts.FloatABI != "soft" &&
   (Triple.getEnvironment() == llvm::Triple::GNUEABIHF ||
+   Triple.getEnvironment() == llvm::Triple::MuslEABIHF ||
Triple.getEnvironment() == llvm::Triple::EABIHF)))
   Kind = ARMABIInfo::AAPCS_VFP;
 

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=273735=273734=273735=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Fri Jun 24 16:35:06 2016
@@ -4157,8 +4157,23 @@ std::string Linux::getDynamicLinker(cons
 
   if (Triple.isAndroid())
 return Triple.isArch64Bit() ? "/system/bin/linker64" : 
"/system/bin/linker";
-  else if (Triple.getEnvironment() == llvm::Triple::Musl)
-return "/lib/ld-musl-" + Triple.getArchName().str() + ".so.1";
+  else if (Triple.isMusl()) {
+std::string ArchName;
+switch (Arch) {
+case llvm::Triple::thumb:
+  ArchName = "arm";
+  break;
+case llvm::Triple::thumbeb:
+  ArchName = "armeb";
+  break;
+default:
+  ArchName = Triple.getArchName().str();
+}
+if (Triple.getEnvironment() == llvm::Triple::MuslEABIHF)
+  ArchName += "hf";
+
+return "/lib/ld-musl-" + ArchName + ".so.1";
+  }
 
   std::string LibDir;
   std::string Loader;

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=273735=273734=273735=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Fri Jun 24 16:35:06 2016
@@ -803,10 +803,12 @@ arm::FloatABI arm::getARMFloatABI(const
 default:
   switch (Triple.getEnvironment()) {
   case llvm::Triple::GNUEABIHF:
+  case llvm::Triple::MuslEABIHF:
   case llvm::Triple::EABIHF:
 ABI = FloatABI::Hard;
 break;
   case llvm::Triple::GNUEABI:
+  case llvm::Triple::MuslEABI:
   case llvm::Triple::EABI:
 // EABI is always AAPCS, and if it was not marked 'hard', it's softfp
 ABI = FloatABI::SoftFP;
@@ -1052,6 +1054,8 @@ void Clang::AddARMTargetArgs(const llvm:
 case llvm::Triple::Android:
 case llvm::Triple::GNUEABI:
 case llvm::Triple::GNUEABIHF:
+case llvm::Triple::MuslEABI:
+case llvm::Triple::MuslEABIHF:
   ABIName = "aapcs-linux";
   break;
 case llvm::Triple::EABIHF:

Modified: cfe/trunk/test/CodeGen/arm-cc.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm-cc.c?rev=273735=273734=273735=diff
==
--- cfe/trunk/test/CodeGen/arm-cc.c (original)
+++ cfe/trunk/test/CodeGen/arm-cc.c Fri Jun 24 

r273566 - Restructure the propagation of -fPIC/-fPIE.

2016-06-23 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Jun 23 10:07:32 2016
New Revision: 273566

URL: http://llvm.org/viewvc/llvm-project?rev=273566=rev
Log:
Restructure the propagation of -fPIC/-fPIE.

The PIC and PIE levels are not independent. In fact, if PIE is defined
it is always the same as PIC.

This is clear in the driver where ParsePICArgs returns a PIC level and
a IsPIE boolean. Unfortunately that is currently lost and we pass two
redundant levels down the pipeline.

This patch keeps a bool and a PIC level all the way down to codegen.

Modified:
cfe/trunk/include/clang/Basic/LangOptions.def
cfe/trunk/include/clang/Driver/CC1Options.td
cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/lib/Frontend/CompilerInvocation.cpp
cfe/trunk/lib/Frontend/InitPreprocessor.cpp
cfe/trunk/test/Driver/fsanitize.c
cfe/trunk/test/Driver/pic.c
cfe/trunk/test/Driver/ps4-pic.c
cfe/trunk/test/Modules/explicit-build-flags.cpp
cfe/trunk/test/Preprocessor/pic.c

Modified: cfe/trunk/include/clang/Basic/LangOptions.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/LangOptions.def?rev=273566=273565=273566=diff
==
--- cfe/trunk/include/clang/Basic/LangOptions.def (original)
+++ cfe/trunk/include/clang/Basic/LangOptions.def Thu Jun 23 10:07:32 2016
@@ -158,7 +158,7 @@ VALUE_LANGOPT(MaxTypeAlign  , 32, 0,
   "default maximum alignment for types")
 VALUE_LANGOPT(AlignDouble, 1, 0, "Controls if doubles should be 
aligned to 8 bytes (x86 only)")
 COMPATIBLE_VALUE_LANGOPT(PICLevel, 2, 0, "__PIC__ level")
-COMPATIBLE_VALUE_LANGOPT(PIELevel, 2, 0, "__PIE__ level")
+COMPATIBLE_VALUE_LANGOPT(PIE , 1, 0, "is pie")
 COMPATIBLE_LANGOPT(GNUInline , 1, 0, "GNU inline semantics")
 COMPATIBLE_LANGOPT(NoInlineDefine, 1, 0, "__NO_INLINE__ predefined macro")
 COMPATIBLE_LANGOPT(Deprecated, 1, 0, "__DEPRECATED predefined macro")

Modified: cfe/trunk/include/clang/Driver/CC1Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=273566=273565=273566=diff
==
--- cfe/trunk/include/clang/Driver/CC1Options.td (original)
+++ cfe/trunk/include/clang/Driver/CC1Options.td Thu Jun 23 10:07:32 2016
@@ -546,8 +546,8 @@ def fencode_extended_block_signature : F
   HelpText<"enable extended encoding of block type signature">;
 def pic_level : Separate<["-"], "pic-level">,
   HelpText<"Value for __PIC__">;
-def pie_level : Separate<["-"], "pie-level">,
-  HelpText<"Value for __PIE__">;
+def pic_is_pie : Flag<["-"], "pic-is-pie">,
+  HelpText<"File is for a position independent executable">;
 def fno_validate_pch : Flag<["-"], "fno-validate-pch">,
   HelpText<"Disable validation of precompiled headers">;
 def dump_deserialized_pch_decls : Flag<["-"], "dump-deserialized-decls">,

Modified: cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCGNU.cpp?rev=273566=273565=273566=diff
==
--- cfe/trunk/lib/CodeGen/CGObjCGNU.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCGNU.cpp Thu Jun 23 10:07:32 2016
@@ -2830,7 +2830,7 @@ llvm::GlobalVariable *CGObjCGNU::ObjCIva
 // to replace it with the real version for a library.  In non-PIC code you
 // must compile with the fragile ABI if you want to use ivars from a
 // GCC-compiled class.
-if (CGM.getLangOpts().PICLevel || CGM.getLangOpts().PIELevel) {
+if (CGM.getLangOpts().PICLevel) {
   llvm::GlobalVariable *IvarOffsetGV = new llvm::GlobalVariable(TheModule,
 Int32Ty, false,
 llvm::GlobalValue::PrivateLinkage, OffsetGuess, Name+".guess");

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=273566=273565=273566=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Jun 23 10:07:32 2016
@@ -480,11 +480,8 @@ void CodeGenModule::Release() {
   if (uint32_t PLevel = Context.getLangOpts().PICLevel) {
 assert(PLevel < 3 && "Invalid PIC Level");
 getModule().setPICLevel(static_cast(PLevel));
-  }
-
-  if (uint32_t PLevel = Context.getLangOpts().PIELevel) {
-assert(PLevel < 3 && "Invalid PIE Level");
-getModule().setPIELevel(static_cast(PLevel));
+if (Context.getLangOpts().PIE)
+  getModule().setPIELevel(static_cast(PLevel));
   }
 
   SimplifyPersonality();

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=273566=273565=273566=diff

r273450 - Make this test a bit more strict and fix it.

2016-06-22 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Jun 22 13:04:52 2016
New Revision: 273450

URL: http://llvm.org/viewvc/llvm-project?rev=273450=rev
Log:
Make this test a bit more strict and fix it.

We do pass -pic-level to cc1 when targeting darwin. Given that codegen
itself doesn't use it, the only difference is whether __PIE__ and
__pie__ are defined.

Modified:
cfe/trunk/test/Driver/pic.c

Modified: cfe/trunk/test/Driver/pic.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/pic.c?rev=273450=273449=273450=diff
==
--- cfe/trunk/test/Driver/pic.c (original)
+++ cfe/trunk/test/Driver/pic.c Wed Jun 22 13:04:52 2016
@@ -7,9 +7,11 @@
 //
 // CHECK-PIC1: "-mrelocation-model" "pic"
 // CHECK-PIC1: "-pic-level" "1"
+// CHECK-PIC1-NOT: "-pie-level"
 //
 // CHECK-PIC2: "-mrelocation-model" "pic"
 // CHECK-PIC2: "-pic-level" "2"
+// CHECK-PIC2-NOT: "-pie-level"
 //
 // CHECK-STATIC: "-static"
 // CHECK-NO-STATIC-NOT: "-static"
@@ -151,10 +153,9 @@
 // RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIE
 //
 // Darwin is a beautiful and unique snowflake when it comes to these flags.
-// When targeting a 32-bit darwin system, the -fno-* flag variants work and
-// disable PIC, but any other flag enables PIC (*not* PIE) even if the flag
-// specifies PIE. On 64-bit targets, there is simply nothing you can do, there
-// is no PIE, there is only PIC when it comes to compilation.
+// When targeting a 32-bit darwin system, only level 2 is supported. On 64-bit
+// targets, there is simply nothing you can do, there is no PIE, there is only
+// PIC when it comes to compilation.
 // RUN: %clang -c %s -target i386-apple-darwin -### 2>&1 \
 // RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
 // RUN: %clang -c %s -target i386-apple-darwin -fpic -### 2>&1 \
@@ -162,9 +163,9 @@
 // RUN: %clang -c %s -target i386-apple-darwin -fPIC -### 2>&1 \
 // RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
 // RUN: %clang -c %s -target i386-apple-darwin -fpie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
+// RUN:   | FileCheck %s --check-prefix=CHECK-PIE2
 // RUN: %clang -c %s -target i386-apple-darwin -fPIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
+// RUN:   | FileCheck %s --check-prefix=CHECK-PIE2
 // RUN: %clang -c %s -target i386-apple-darwin -fno-PIC -### 2>&1 \
 // RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
 // RUN: %clang -c %s -target i386-apple-darwin -fno-PIE -### 2>&1 \
@@ -172,7 +173,7 @@
 // RUN: %clang -c %s -target i386-apple-darwin -fno-PIC -fpic -### 2>&1 \
 // RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
 // RUN: %clang -c %s -target i386-apple-darwin -fno-PIC -fPIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
+// RUN:   | FileCheck %s --check-prefix=CHECK-PIE2
 // RUN: %clang -c %s -target x86_64-apple-darwin -fno-PIC -### 2>&1 \
 // RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
 // RUN: %clang -c %s -target x86_64-apple-darwin -fno-PIE -### 2>&1 \


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


r273327 - Delete dead code.

2016-06-21 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Jun 21 17:24:45 2016
New Revision: 273327

URL: http://llvm.org/viewvc/llvm-project?rev=273327=rev
Log:
Delete dead code.

Found by gcc 6.

Modified:
cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp

Modified: cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp?rev=273327=273326=273327=diff
==
--- cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp (original)
+++ cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp Tue Jun 21 17:24:45 
2016
@@ -366,7 +366,6 @@ namespace {
 Stmt *RewriteContinueStmt(ContinueStmt *S);
 void RewriteCastExpr(CStyleCastExpr *CE);
 void RewriteImplicitCastObjCExpr(CastExpr *IE);
-void RewriteLinkageSpec(LinkageSpecDecl *LSD);
 
 // Computes ivar bitfield group no.
 unsigned ObjCIvarBitfieldGroupNo(ObjCIvarDecl *IV);
@@ -447,9 +446,6 @@ namespace {
 std::string );
 void RewriteObjCProtocolMetaData(ObjCProtocolDecl *Protocol,
  std::string );
-void RewriteObjCProtocolListMetaData(
-   const ObjCList ,
-   StringRef prefix, StringRef ClassName, std::string );
 void RewriteObjCClassMetaData(ObjCImplementationDecl *IDecl,
   std::string );
 void RewriteClassSetupInitHook(std::string );
@@ -522,7 +518,6 @@ namespace {
 QualType getSuperStructType();
 QualType getConstantStringStructType();
 QualType convertFunctionTypeOfBlocks(const FunctionType *FT);
-bool BufferContainsPPDirectives(const char *startBuf, const char *endBuf);
 
 void convertToUnqualifiedObjCType(QualType ) {
   if (T->isObjCQualifiedIdType()) {
@@ -742,10 +737,6 @@ void RewriteModernObjC::HandleTopLevelSi
 if (PD->isThisDeclarationADefinition())
   RewriteProtocolDecl(PD);
   } else if (LinkageSpecDecl *LSD = dyn_cast(D)) {
-// FIXME. This will not work in all situations and leaving it out
-// is harmless.
-// RewriteLinkageSpec(LSD);
-
 // Recurse into linkage specifications
 for (DeclContext::decl_iterator DI = LSD->decls_begin(),
  DIEnd = LSD->decls_end();
@@ -1210,22 +1201,6 @@ RewriteModernObjC::RewriteForwardProtoco
   ReplaceText(LocStart, 0, "// ");
 }
 
-void 
-RewriteModernObjC::RewriteLinkageSpec(LinkageSpecDecl *LSD) {
-  SourceLocation LocStart = LSD->getExternLoc();
-  if (LocStart.isInvalid())
-llvm_unreachable("Invalid extern SourceLocation");
-  
-  ReplaceText(LocStart, 0, "// ");
-  if (!LSD->hasBraces())
-return;
-  // FIXME. We don't rewrite well if '{' is not on same line as 'extern'.
-  SourceLocation LocRBrace = LSD->getRBraceLoc();
-  if (LocRBrace.isInvalid())
-llvm_unreachable("Invalid rbrace SourceLocation");
-  ReplaceText(LocRBrace, 0, "// ");
-}
-
 void RewriteModernObjC::RewriteTypeIntoString(QualType T, std::string 
,
 const FunctionType *) {
   if (T->isObjCQualifiedIdType())
@@ -3629,32 +3604,6 @@ Stmt *RewriteModernObjC::RewriteObjCProt
   return castExpr;
 }
 
-bool RewriteModernObjC::BufferContainsPPDirectives(const char *startBuf,
- const char *endBuf) {
-  while (startBuf < endBuf) {
-if (*startBuf == '#') {
-  // Skip whitespace.
-  for (++startBuf; startBuf[0] == ' ' || startBuf[0] == '\t'; ++startBuf)
-;
-  if (!strncmp(startBuf, "if", strlen("if")) ||
-  !strncmp(startBuf, "ifdef", strlen("ifdef")) ||
-  !strncmp(startBuf, "ifndef", strlen("ifndef")) ||
-  !strncmp(startBuf, "define", strlen("define")) ||
-  !strncmp(startBuf, "undef", strlen("undef")) ||
-  !strncmp(startBuf, "else", strlen("else")) ||
-  !strncmp(startBuf, "elif", strlen("elif")) ||
-  !strncmp(startBuf, "endif", strlen("endif")) ||
-  !strncmp(startBuf, "pragma", strlen("pragma")) ||
-  !strncmp(startBuf, "include", strlen("include")) ||
-  !strncmp(startBuf, "import", strlen("import")) ||
-  !strncmp(startBuf, "include_next", strlen("include_next")))
-return true;
-}
-startBuf++;
-  }
-  return false;
-}
-
 /// IsTagDefinedInsideClass - This routine checks that a named tagged type 
 /// is defined inside an objective-c class. If so, it returns true. 
 bool RewriteModernObjC::IsTagDefinedInsideClass(ObjCContainerDecl *IDecl, 
@@ -7048,51 +6997,6 @@ void RewriteModernObjC::RewriteObjCProto
 llvm_unreachable("protocol already synthesized");
 }
 
-void RewriteModernObjC::RewriteObjCProtocolListMetaData(
-const ObjCList ,
-StringRef prefix, StringRef ClassName,
-std::string ) {
-  if (Protocols.empty()) return;
- 

r273300 - Delete dead code.

2016-06-21 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Jun 21 14:19:31 2016
New Revision: 273300

URL: http://llvm.org/viewvc/llvm-project?rev=273300=rev
Log:
Delete dead code.

Found by gcc 6.

Modified:
cfe/trunk/lib/AST/ItaniumMangle.cpp
cfe/trunk/lib/Frontend/CompilerInvocation.cpp

Modified: cfe/trunk/lib/AST/ItaniumMangle.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ItaniumMangle.cpp?rev=273300=273299=273300=diff
==
--- cfe/trunk/lib/AST/ItaniumMangle.cpp (original)
+++ cfe/trunk/lib/AST/ItaniumMangle.cpp Tue Jun 21 14:19:31 2016
@@ -316,7 +316,6 @@ private:
   bool mangleSubstitution(TemplateName Template);
   bool mangleSubstitution(uintptr_t Ptr);
 
-  void mangleExistingSubstitution(QualType type);
   void mangleExistingSubstitution(TemplateName name);
 
   bool mangleStandardSubstitution(const NamedDecl *ND);
@@ -3875,12 +3874,6 @@ void CXXNameMangler::mangleSeqID(unsigne
   Out << '_';
 }
 
-void CXXNameMangler::mangleExistingSubstitution(QualType type) {
-  bool result = mangleSubstitution(type);
-  assert(result && "no existing substitution for type");
-  (void) result;
-}
-
 void CXXNameMangler::mangleExistingSubstitution(TemplateName tname) {
   bool result = mangleSubstitution(tname);
   assert(result && "no existing substitution for template name");

Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=273300=273299=273300=diff
==
--- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
+++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Tue Jun 21 14:19:31 2016
@@ -2374,59 +2374,6 @@ bool CompilerInvocation::CreateFromArgs(
   return Success;
 }
 
-namespace {
-
-  class ModuleSignature {
-SmallVector Data;
-unsigned CurBit;
-uint64_t CurValue;
-
-  public:
-ModuleSignature() : CurBit(0), CurValue(0) { }
-
-void add(uint64_t Value, unsigned Bits);
-void add(StringRef Value);
-void flush();
-
-llvm::APInt getAsInteger() const;
-  };
-}
-
-void ModuleSignature::add(uint64_t Value, unsigned int NumBits) {
-  CurValue |= Value << CurBit;
-  if (CurBit + NumBits < 64) {
-CurBit += NumBits;
-return;
-  }
-
-  // Add the current word.
-  Data.push_back(CurValue);
-
-  if (CurBit)
-CurValue = Value >> (64-CurBit);
-  else
-CurValue = 0;
-  CurBit = (CurBit+NumBits) & 63;
-}
-
-void ModuleSignature::flush() {
-  if (CurBit == 0)
-return;
-
-  Data.push_back(CurValue);
-  CurBit = 0;
-  CurValue = 0;
-}
-
-void ModuleSignature::add(StringRef Value) {
-  for (auto  : Value)
-add(c, 8);
-}
-
-llvm::APInt ModuleSignature::getAsInteger() const {
-  return llvm::APInt(Data.size() * 64, Data);
-}
-
 std::string CompilerInvocation::getModuleHash() const {
   // Note: For QoI reasons, the things we use as a hash here should all be
   // dumped via the -module-info flag.


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


r273224 - Add a ENABLE_X86_RELAX_RELOCATIONS cmake option.

2016-06-20 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon Jun 20 18:54:44 2016
New Revision: 273224

URL: http://llvm.org/viewvc/llvm-project?rev=273224=rev
Log:
Add a ENABLE_X86_RELAX_RELOCATIONS  cmake option.

This corresponds to binutils' --enable-x86-relax-relocations.

Modified:
cfe/trunk/CMakeLists.txt
cfe/trunk/include/clang/Config/config.h.cmake
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=273224=273223=273224=diff
==
--- cfe/trunk/CMakeLists.txt (original)
+++ cfe/trunk/CMakeLists.txt Mon Jun 20 18:54:44 2016
@@ -185,6 +185,9 @@ set(DEFAULT_SYSROOT "" CACHE PATH
 
 set(ENABLE_LINKER_BUILD_ID OFF CACHE BOOL "pass --build-id to ld")
 
+set(ENABLE_X86_RELAX_RELOCATIONS OFF CACHE BOOL
+"enable x86 relax relocations by default")
+
 set(CLANG_DEFAULT_CXX_STDLIB "" CACHE STRING
   "Default C++ stdlib to use (empty for architecture default, \"libstdc++\" or 
\"libc++\"")
 if (NOT(CLANG_DEFAULT_CXX_STDLIB STREQUAL "" OR

Modified: cfe/trunk/include/clang/Config/config.h.cmake
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Config/config.h.cmake?rev=273224=273223=273224=diff
==
--- cfe/trunk/include/clang/Config/config.h.cmake (original)
+++ cfe/trunk/include/clang/Config/config.h.cmake Mon Jun 20 18:54:44 2016
@@ -41,4 +41,7 @@
 /* pass --build-id to ld */
 #cmakedefine ENABLE_LINKER_BUILD_ID
 
+/* enable x86 relax relocations by default */
+#cmakedefine01 ENABLE_X86_RELAX_RELOCATIONS
+
 #endif

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=273224=273223=273224=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Mon Jun 20 18:54:44 2016
@@ -2839,7 +2839,7 @@ static void CollectArgsForIntegratedAsse
   // options.
   bool CompressDebugSections = false;
 
-  bool UseRelaxRelocations = false;
+  bool UseRelaxRelocations = ENABLE_X86_RELAX_RELOCATIONS;
   const char *MipsTargetFeature = nullptr;
   for (const Arg *A :
Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler)) {


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


r272825 - Add a few Musl related tests that already pass.

2016-06-15 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Jun 15 15:02:22 2016
New Revision: 272825

URL: http://llvm.org/viewvc/llvm-project?rev=272825=rev
Log:
Add a few Musl related tests that already pass.

Patch by Lei Zhang.

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

Modified: cfe/trunk/test/Driver/linux-ld.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/linux-ld.c?rev=272825=272824=272825=diff
==
--- cfe/trunk/test/Driver/linux-ld.c (original)
+++ cfe/trunk/test/Driver/linux-ld.c Wed Jun 15 15:02:22 2016
@@ -1575,9 +1575,33 @@
 // Check dynamic-linker for musl-libc
 // RUN: %clang %s -### -o %t.o 2>&1 \
 // RUN: --target=i386-pc-linux-musl \
-// RUN:   | FileCheck --check-prefix=CHECK-MUSL32 %s
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-X86 %s
 // RUN: %clang %s -### -o %t.o 2>&1 \
 // RUN: --target=x86_64-pc-linux-musl \
-// RUN:   | FileCheck --check-prefix=CHECK-MUSL64 %s
-// CHECK-MUSL32: "-dynamic-linker" "/lib/ld-musl-i386.so.1"
-// CHECK-MUSL64: "-dynamic-linker" "/lib/ld-musl-x86_64.so.1"
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-X86_64 %s
+// RUN: %clang %s -### -o %t.o 2>&1 \
+// RUN: --target=mips-pc-linux-musl \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS %s
+// RUN: %clang %s -### -o %t.o 2>&1 \
+// RUN: --target=mipsel-pc-linux-musl \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPSEL %s
+// RUN: %clang %s -### -o %t.o 2>&1 \
+// RUN: --target=mips64-pc-linux-musl \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS64 %s
+// RUN: %clang %s -### -o %t.o 2>&1 \
+// RUN: --target=mips64el-pc-linux-musl \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS64EL %s
+// RUN: %clang %s -### -o %t.o 2>&1 \
+// RUN: --target=powerpc-pc-linux-musl \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-PPC %s
+// RUN: %clang %s -### -o %t.o 2>&1 \
+// RUN: --target=powerpc64-pc-linux-musl \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-PPC64 %s
+// CHECK-MUSL-X86:  "-dynamic-linker" "/lib/ld-musl-i386.so.1"
+// CHECK-MUSL-X86_64:   "-dynamic-linker" "/lib/ld-musl-x86_64.so.1"
+// CHECK-MUSL-MIPS: "-dynamic-linker" "/lib/ld-musl-mips.so.1"
+// CHECK-MUSL-MIPSEL:   "-dynamic-linker" "/lib/ld-musl-mipsel.so.1"
+// CHECK-MUSL-MIPS64:   "-dynamic-linker" "/lib/ld-musl-mips64.so.1"
+// CHECK-MUSL-MIPS64EL: "-dynamic-linker" "/lib/ld-musl-mips64el.so.1"
+// CHECK-MUSL-PPC:  "-dynamic-linker" "/lib/ld-musl-powerpc.so.1"
+// CHECK-MUSL-PPC64:"-dynamic-linker" "/lib/ld-musl-powerpc64.so.1"


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


r272662 - Start adding support for Musl.

2016-06-14 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Jun 14 07:47:24 2016
New Revision: 272662

URL: http://llvm.org/viewvc/llvm-project?rev=272662=rev
Log:
Start adding support for Musl.

The two patches together enable clang to support targets like
"x86_64-pc-linux-musl" and build binaries against musl-libc instead of
glibc. This make it easy for clang to work on some musl-based systems
like Alpine Linux and certain flavors of Gentoo.

Patch by Lei Zhang.

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/test/Driver/linux-ld.c

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=272662=272661=272662=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Tue Jun 14 07:47:24 2016
@@ -4152,6 +4152,8 @@ std::string Linux::getDynamicLinker(cons
 
   if (Triple.isAndroid())
 return Triple.isArch64Bit() ? "/system/bin/linker64" : 
"/system/bin/linker";
+  else if (Triple.getEnvironment() == llvm::Triple::Musl)
+return "/lib/ld-musl-" + Triple.getArchName().str() + ".so.1";
 
   std::string LibDir;
   std::string Loader;

Modified: cfe/trunk/test/Driver/linux-ld.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/linux-ld.c?rev=272662=272661=272662=diff
==
--- cfe/trunk/test/Driver/linux-ld.c (original)
+++ cfe/trunk/test/Driver/linux-ld.c Tue Jun 14 07:47:24 2016
@@ -1571,3 +1571,13 @@
 // CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
 // CHECK-ARMV7EB: "--be8"
 // CHECK-ARMV7EB: "-m" "armelfb_linux_eabi"
+
+// Check dynamic-linker for musl-libc
+// RUN: %clang %s -### -o %t.o 2>&1 \
+// RUN: --target=i386-pc-linux-musl \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL32 %s
+// RUN: %clang %s -### -o %t.o 2>&1 \
+// RUN: --target=x86_64-pc-linux-musl \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL64 %s
+// CHECK-MUSL32: "-dynamic-linker" "/lib/ld-musl-i386.so.1"
+// CHECK-MUSL64: "-dynamic-linker" "/lib/ld-musl-x86_64.so.1"


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


r272260 - Replace an ambiguous "it"

2016-06-09 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Jun  9 08:35:55 2016
New Revision: 272260

URL: http://llvm.org/viewvc/llvm-project?rev=272260=rev
Log:
Replace an ambiguous "it"

Thanks to Sean for the suggestion.

Modified:
cfe/trunk/docs/ReleaseNotes.rst

Modified: cfe/trunk/docs/ReleaseNotes.rst
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ReleaseNotes.rst?rev=272260=272259=272260=diff
==
--- cfe/trunk/docs/ReleaseNotes.rst (original)
+++ cfe/trunk/docs/ReleaseNotes.rst Thu Jun  9 08:35:55 2016
@@ -49,7 +49,7 @@ Major New Features
 
 - Clang will no longer passes --build-id by default to the linker. In modern
   linkers that is a relatively expensive option. It can be passed explicitly
-  with -Wl,--build-id. To have clang always pass it, build it with
+  with -Wl,--build-id. To have clang always pass it, build clang with
   -DENABLE_LINKER_BUILD_ID.
 
 Improvements to Clang's diagnostics


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


r271918 - Add a release note about the --build-id change.

2016-06-06 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon Jun  6 13:23:11 2016
New Revision: 271918

URL: http://llvm.org/viewvc/llvm-project?rev=271918=rev
Log:
Add a release note about the --build-id change.

Modified:
cfe/trunk/docs/ReleaseNotes.rst

Modified: cfe/trunk/docs/ReleaseNotes.rst
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ReleaseNotes.rst?rev=271918=271917=271918=diff
==
--- cfe/trunk/docs/ReleaseNotes.rst (original)
+++ cfe/trunk/docs/ReleaseNotes.rst Mon Jun  6 13:23:11 2016
@@ -47,7 +47,10 @@ sections with improvements to Clang's su
 Major New Features
 --
 
-- Feature1...
+- Clang will no longer passes --build-id by default to the linker. In modern
+  linkers that is a relatively expensive option. It can be passed explicitly
+  with -Wl,--build-id. To have clang always pass it, build it with
+  -DENABLE_LINKER_BUILD_ID.
 
 Improvements to Clang's diagnostics
 ^^^


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


r271692 - Don't pass --build-id to ld by default.

2016-06-03 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Fri Jun  3 12:26:16 2016
New Revision: 271692

URL: http://llvm.org/viewvc/llvm-project?rev=271692=rev
Log:
Don't pass --build-id to ld by default.

We now have a cmake option to change the default: ENABLE_LINKER_BUILD_ID.

The reason is that build-id is fairly expensive, so we shouldn't impose
it in the regular edit/build cycle.

This is similar to gcc, that has an off by default --enable-linker-build-id
option.

Modified:
cfe/trunk/CMakeLists.txt
cfe/trunk/include/clang/Config/config.h.cmake
cfe/trunk/lib/Driver/ToolChains.cpp

Modified: cfe/trunk/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=271692=271691=271692=diff
==
--- cfe/trunk/CMakeLists.txt (original)
+++ cfe/trunk/CMakeLists.txt Fri Jun  3 12:26:16 2016
@@ -197,6 +197,8 @@ set(GCC_INSTALL_PREFIX "" CACHE PATH "Di
 set(DEFAULT_SYSROOT "" CACHE PATH
   "Default  to all compiler invocations for --sysroot=." )
 
+set(ENABLE_LINKER_BUILD_ID OFF CACHE BOOL "pass --build-id to ld")
+
 set(CLANG_DEFAULT_CXX_STDLIB "" CACHE STRING
   "Default C++ stdlib to use (empty for architecture default, \"libstdc++\" or 
\"libc++\"")
 if (NOT(CLANG_DEFAULT_CXX_STDLIB STREQUAL "" OR

Modified: cfe/trunk/include/clang/Config/config.h.cmake
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Config/config.h.cmake?rev=271692=271691=271692=diff
==
--- cfe/trunk/include/clang/Config/config.h.cmake (original)
+++ cfe/trunk/include/clang/Config/config.h.cmake Fri Jun  3 12:26:16 2016
@@ -38,4 +38,7 @@
 /* Linker version detected at compile time. */
 #cmakedefine HOST_LINK_VERSION "${HOST_LINK_VERSION}"
 
+/* pass --build-id to ld */
+#cmakedefine ENABLE_LINKER_BUILD_ID
+
 #endif

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=271692=271691=271692=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Fri Jun  3 12:26:16 2016
@@ -3978,10 +3978,9 @@ Linux::Linux(const Driver , const llvm
   if (IsRedhat(Distro) && Distro != RHEL5 && Distro != RHEL6)
 ExtraOpts.push_back("--no-add-needed");
 
-  if ((IsDebian(Distro) && Distro >= DebianSqueeze) || IsOpenSUSE(Distro) ||
-  (IsRedhat(Distro) && Distro != RHEL5) ||
-  (IsUbuntu(Distro) && Distro >= UbuntuKarmic))
-ExtraOpts.push_back("--build-id");
+#ifdef ENABLE_LINKER_BUILD_ID
+  ExtraOpts.push_back("--build-id");
+#endif
 
   if (IsOpenSUSE(Distro))
 ExtraOpts.push_back("--enable-new-dtags");


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


r271609 - Delete configure left over.

2016-06-02 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Jun  2 18:45:37 2016
New Revision: 271609

URL: http://llvm.org/viewvc/llvm-project?rev=271609=rev
Log:
Delete configure left over.

Removed:
cfe/trunk/include/clang/Config/config.h.in

Removed: cfe/trunk/include/clang/Config/config.h.in
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Config/config.h.in?rev=271608=auto
==
--- cfe/trunk/include/clang/Config/config.h.in (original)
+++ cfe/trunk/include/clang/Config/config.h.in (removed)
@@ -1,43 +0,0 @@
-/* This generated file is for internal use. Do not include it from headers. */
-
-#ifdef CLANG_CONFIG_H
-#error config.h can only be included once
-#else
-#define CLANG_CONFIG_H
-
-/* Bug report URL. */
-#undef BUG_REPORT_URL
-
-/* Default C++ stdlib to use. */
-#undef CLANG_DEFAULT_CXX_STDLIB
-
-/* Default OpenMP runtime used by -fopenmp. */
-#undef CLANG_DEFAULT_OPENMP_RUNTIME
-
-/* Multilib suffix for libdir. */
-#undef CLANG_LIBDIR_SUFFIX
-
-/* Relative directory for resource files */
-#undef CLANG_RESOURCE_DIR
-
-/* Directories clang will search for headers */
-#undef C_INCLUDE_DIRS
-
-/* Default  to all compiler invocations for --sysroot=. */
-#undef DEFAULT_SYSROOT
-
-/* Directory where gcc is installed. */
-#undef GCC_INSTALL_PREFIX
-
-/* Define if we have libxml2 */
-#undef CLANG_HAVE_LIBXML
-
-#undef PACKAGE_STRING
-
-/* The LLVM product name and version */
-#define BACKEND_PACKAGE_STRING PACKAGE_STRING
-
-/* Linker version detected at compile time. */
-#undef HOST_LINK_VERSION
-
-#endif


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


r271166 - Fix typo.

2016-05-28 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Sat May 28 22:03:22 2016
New Revision: 271166

URL: http://llvm.org/viewvc/llvm-project?rev=271166=rev
Log:
Fix typo.

Thanks to David Majnemer for noticing.

Modified:
cfe/trunk/include/clang/Driver/CC1Options.td

Modified: cfe/trunk/include/clang/Driver/CC1Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=271166=271165=271166=diff
==
--- cfe/trunk/include/clang/Driver/CC1Options.td (original)
+++ cfe/trunk/include/clang/Driver/CC1Options.td Sat May 28 22:03:22 2016
@@ -144,7 +144,7 @@ def mno_exec_stack : Flag<["-"], "mnoexe
 def massembler_fatal_warnings : Flag<["-"], "massembler-fatal-warnings">,
   HelpText<"Make assembler warnings fatal">;
 def mrelax_relocations : Flag<["--"], "mrelax-relocations">,
-HelpText<"Use relaxabel elf relocations">;
+HelpText<"Use relaxable elf relocations">;
 def compress_debug_sections : Flag<["-"], "compress-debug-sections">,
 HelpText<"Compress DWARF debug sections using zlib">;
 def msave_temp_labels : Flag<["-"], "msave-temp-labels">,


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


r271163 - Mark test as requiring x86-registered-target.

2016-05-28 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Sat May 28 21:36:16 2016
New Revision: 271163

URL: http://llvm.org/viewvc/llvm-project?rev=271163=rev
Log:
Mark test as requiring x86-registered-target.

Modified:
cfe/trunk/test/CodeGen/relax.c

Modified: cfe/trunk/test/CodeGen/relax.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/relax.c?rev=271163=271162=271163=diff
==
--- cfe/trunk/test/CodeGen/relax.c (original)
+++ cfe/trunk/test/CodeGen/relax.c Sat May 28 21:36:16 2016
@@ -1,3 +1,4 @@
+// REQUIRES: x86-registered-target
 // RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-obj --mrelax-relocations 
%s -mrelocation-model pic -o %t
 // RUN: llvm-readobj -r %t | FileCheck  %s
 


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


r271162 - Handle -Wa,--mrelax-relocations=[no|yes].

2016-05-28 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Sat May 28 21:01:14 2016
New Revision: 271162

URL: http://llvm.org/viewvc/llvm-project?rev=271162=rev
Log:
Handle -Wa,--mrelax-relocations=[no|yes].

Added:
cfe/trunk/test/CodeGen/relax.c
cfe/trunk/test/Driver/relax.c
cfe/trunk/test/Driver/relax.s
Modified:
cfe/trunk/include/clang/Driver/CC1Options.td
cfe/trunk/include/clang/Frontend/CodeGenOptions.def
cfe/trunk/lib/CodeGen/BackendUtil.cpp
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/lib/Frontend/CompilerInvocation.cpp
cfe/trunk/tools/driver/cc1as_main.cpp

Modified: cfe/trunk/include/clang/Driver/CC1Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=271162=271161=271162=diff
==
--- cfe/trunk/include/clang/Driver/CC1Options.td (original)
+++ cfe/trunk/include/clang/Driver/CC1Options.td Sat May 28 21:01:14 2016
@@ -143,6 +143,8 @@ def mno_exec_stack : Flag<["-"], "mnoexe
   HelpText<"Mark the file as not needing an executable stack">;
 def massembler_fatal_warnings : Flag<["-"], "massembler-fatal-warnings">,
   HelpText<"Make assembler warnings fatal">;
+def mrelax_relocations : Flag<["--"], "mrelax-relocations">,
+HelpText<"Use relaxabel elf relocations">;
 def compress_debug_sections : Flag<["-"], "compress-debug-sections">,
 HelpText<"Compress DWARF debug sections using zlib">;
 def msave_temp_labels : Flag<["-"], "msave-temp-labels">,

Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.def?rev=271162=271161=271162=diff
==
--- cfe/trunk/include/clang/Frontend/CodeGenOptions.def (original)
+++ cfe/trunk/include/clang/Frontend/CodeGenOptions.def Sat May 28 21:01:14 2016
@@ -30,6 +30,7 @@ CODEGENOPT(Name, Bits, Default)
 
 CODEGENOPT(DisableIntegratedAS, 1, 0) ///< -no-integrated-as
 CODEGENOPT(CompressDebugSections, 1, 0) ///< -Wa,-compress-debug-sections
+CODEGENOPT(RelaxELFRelocations, 1, 0) ///< -Wa,--mrelax-relocations
 CODEGENOPT(AsmVerbose, 1, 0) ///< -dA, -fverbose-asm.
 CODEGENOPT(AssumeSaneOperatorNew , 1, 1) ///< implicit __attribute__((malloc)) 
operator new
 CODEGENOPT(Autolink  , 1, 1) ///< -fno-autolink

Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=271162=271161=271162=diff
==
--- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original)
+++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Sat May 28 21:01:14 2016
@@ -593,6 +593,7 @@ TargetMachine *EmitAssemblyHelper::Creat
   Options.UseInitArray = CodeGenOpts.UseInitArray;
   Options.DisableIntegratedAS = CodeGenOpts.DisableIntegratedAS;
   Options.CompressDebugSections = CodeGenOpts.CompressDebugSections;
+  Options.RelaxELFRelocations = CodeGenOpts.RelaxELFRelocations;
 
   // Set EABI version.
   Options.EABIVersion = llvm::StringSwitch(TargetOpts.EABIVersion)

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=271162=271161=271162=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Sat May 28 21:01:14 2016
@@ -2797,6 +2797,8 @@ static void CollectArgsForIntegratedAsse
   // When using an integrated assembler, translate -Wa, and -Xassembler
   // options.
   bool CompressDebugSections = false;
+
+  bool UseRelaxRelocations = false;
   const char *MipsTargetFeature = nullptr;
   for (const Arg *A :
Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler)) {
@@ -2872,6 +2874,12 @@ static void CollectArgsForIntegratedAsse
   } else if (Value == "-nocompress-debug-sections" ||
  Value == "--nocompress-debug-sections") {
 CompressDebugSections = false;
+  } else if (Value == "-mrelax-relocations=yes" ||
+ Value == "--mrelax-relocations=yes") {
+UseRelaxRelocations = true;
+  } else if (Value == "-mrelax-relocations=no" ||
+ Value == "--mrelax-relocations=no") {
+UseRelaxRelocations = false;
   } else if (Value.startswith("-I")) {
 CmdArgs.push_back(Value.data());
 // We need to consume the next argument if the current arg is a plain
@@ -2903,6 +2911,8 @@ static void CollectArgsForIntegratedAsse
 else
   D.Diag(diag::warn_debug_compression_unavailable);
   }
+  if (UseRelaxRelocations)
+CmdArgs.push_back("--mrelax-relocations");
   if (MipsTargetFeature != nullptr) {
 CmdArgs.push_back("-target-feature");
 CmdArgs.push_back(MipsTargetFeature);

Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
URL: 

r270006 - Fix a funny Dvorak typo.

2016-05-18 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed May 18 19:16:09 2016
New Revision: 270006

URL: http://llvm.org/viewvc/llvm-project?rev=270006=rev
Log:
Fix a funny Dvorak typo.

Modified:
cfe/trunk/lib/Parse/ParseStmtAsm.cpp

Modified: cfe/trunk/lib/Parse/ParseStmtAsm.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseStmtAsm.cpp?rev=270006=270005=270006=diff
==
--- cfe/trunk/lib/Parse/ParseStmtAsm.cpp (original)
+++ cfe/trunk/lib/Parse/ParseStmtAsm.cpp Wed May 18 19:16:09 2016
@@ -572,7 +572,7 @@ StmtResult Parser::ParseMicrosoftAsmStat
 
   llvm::SourceMgr TempSrcMgr;
   llvm::MCContext Ctx(MAI.get(), MRI.get(), MOFI.get(), );
-  MOFI->InitMCObjectFileInfo(TheTriple, /*PIG*/ false, 
llvm::CodeModel::Default,
+  MOFI->InitMCObjectFileInfo(TheTriple, /*PIC*/ false, 
llvm::CodeModel::Default,
  Ctx);
   std::unique_ptr Buffer =
   llvm::MemoryBuffer::getMemBuffer(AsmString, "");


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


r269989 - Update for llvm change.

2016-05-18 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed May 18 17:04:57 2016
New Revision: 269989

URL: http://llvm.org/viewvc/llvm-project?rev=269989=rev
Log:
Update for llvm change.

Modified:
cfe/trunk/lib/CodeGen/BackendUtil.cpp
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=269989=269988=269989=diff
==
--- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original)
+++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Wed May 18 17:04:57 2016
@@ -528,7 +528,7 @@ TargetMachine *EmitAssemblyHelper::Creat
   llvm::join(TargetOpts.Features.begin(), TargetOpts.Features.end(), ",");
 
   // Keep this synced with the equivalent code in tools/driver/cc1as_main.cpp.
-  llvm::Reloc::Model RM = llvm::Reloc::Default;
+  llvm::Optional RM;
   if (CodeGenOpts.RelocationModel == "static") {
 RM = llvm::Reloc::Static;
   } else if (CodeGenOpts.RelocationModel == "pic") {

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=269989=269988=269989=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Wed May 18 17:04:57 2016
@@ -3609,8 +3609,6 @@ ParsePICArgs(const ToolChain ,
 
 static const char *RelocationModelName(llvm::Reloc::Model Model) {
   switch (Model) {
-  case llvm::Reloc::Default:
-return nullptr;
   case llvm::Reloc::Static:
 return "static";
   case llvm::Reloc::PIC_:


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


r269910 - Update for llvm change.

2016-05-18 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed May 18 06:58:56 2016
New Revision: 269910

URL: http://llvm.org/viewvc/llvm-project?rev=269910=rev
Log:
Update for llvm change.

Modified:
cfe/trunk/lib/Parse/ParseStmtAsm.cpp
cfe/trunk/tools/driver/cc1as_main.cpp

Modified: cfe/trunk/lib/Parse/ParseStmtAsm.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseStmtAsm.cpp?rev=269910=269909=269910=diff
==
--- cfe/trunk/lib/Parse/ParseStmtAsm.cpp (original)
+++ cfe/trunk/lib/Parse/ParseStmtAsm.cpp Wed May 18 06:58:56 2016
@@ -572,8 +572,8 @@ StmtResult Parser::ParseMicrosoftAsmStat
 
   llvm::SourceMgr TempSrcMgr;
   llvm::MCContext Ctx(MAI.get(), MRI.get(), MOFI.get(), );
-  MOFI->InitMCObjectFileInfo(TheTriple, llvm::Reloc::Default,
- llvm::CodeModel::Default, Ctx);
+  MOFI->InitMCObjectFileInfo(TheTriple, /*PIG*/ false, 
llvm::CodeModel::Default,
+ Ctx);
   std::unique_ptr Buffer =
   llvm::MemoryBuffer::getMemBuffer(AsmString, "");
 

Modified: cfe/trunk/tools/driver/cc1as_main.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1as_main.cpp?rev=269910=269909=269910=diff
==
--- cfe/trunk/tools/driver/cc1as_main.cpp (original)
+++ cfe/trunk/tools/driver/cc1as_main.cpp Wed May 18 06:58:56 2016
@@ -326,19 +326,18 @@ static bool ExecuteAssembler(AssemblerIn
 
   MCContext Ctx(MAI.get(), MRI.get(), MOFI.get(), );
 
-  llvm::Reloc::Model RM = llvm::Reloc::Default;
+  bool PIC = false;
   if (Opts.RelocationModel == "static") {
-RM = llvm::Reloc::Static;
+PIC = false;
   } else if (Opts.RelocationModel == "pic") {
-RM = llvm::Reloc::PIC_;
+PIC = true;
   } else {
 assert(Opts.RelocationModel == "dynamic-no-pic" &&
"Invalid PIC model!");
-RM = llvm::Reloc::DynamicNoPIC;
+PIC = false;
   }
 
-  MOFI->InitMCObjectFileInfo(Triple(Opts.Triple), RM,
- CodeModel::Default, Ctx);
+  MOFI->InitMCObjectFileInfo(Triple(Opts.Triple), PIC, CodeModel::Default, 
Ctx);
   if (Opts.SaveTemporaryLabels)
 Ctx.setAllowTemporaryLabels(false);
   if (Opts.GenDwarfForAssembly)


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


r268914 - Proper detection and handling of RHEL and variants.

2016-05-09 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon May  9 08:13:50 2016
New Revision: 268914

URL: http://llvm.org/viewvc/llvm-project?rev=268914=rev
Log:
Proper detection and handling of RHEL and variants.

- Don't consider "/etc/lsb-release" to be Ubuntu only.
- Detect SL, too.
- Only add "--no-add-needed" for RHEL7 (or Fedora), not for RHEL6
  (that's what the compilers shipped with RHEL do).
- removed RHEL4 which is now four years past EOL and certainly incapable
  of building or running any recent version of llvm/clang.

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

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=268914=268913=268914=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Mon May  9 08:13:50 2016
@@ -3421,7 +3421,6 @@ enum Distro {
   DebianJessie,
   DebianStretch,
   Exherbo,
-  RHEL4,
   RHEL5,
   RHEL6,
   RHEL7,
@@ -3448,7 +3447,7 @@ enum Distro {
 };
 
 static bool IsRedhat(enum Distro Distro) {
-  return Distro == Fedora || (Distro >= RHEL4 && Distro <= RHEL7);
+  return Distro == Fedora || (Distro >= RHEL5 && Distro <= RHEL7);
 }
 
 static bool IsOpenSUSE(enum Distro Distro) { return Distro == OpenSUSE; }
@@ -3490,7 +3489,8 @@ static Distro DetectDistro(const Driver
   .Case("wily", UbuntuWily)
   .Case("xenial", UbuntuXenial)
   .Default(UnknownDistro);
-return Version;
+if (Version != UnknownDistro)
+  return Version;
   }
 
   File = llvm::MemoryBuffer::getFile("/etc/redhat-release");
@@ -3499,15 +3499,14 @@ static Distro DetectDistro(const Driver
 if (Data.startswith("Fedora release"))
   return Fedora;
 if (Data.startswith("Red Hat Enterprise Linux") ||
-Data.startswith("CentOS")) {
+Data.startswith("CentOS") ||
+Data.startswith("Scientific Linux")) {
   if (Data.find("release 7") != StringRef::npos)
 return RHEL7;
   else if (Data.find("release 6") != StringRef::npos)
 return RHEL6;
   else if (Data.find("release 5") != StringRef::npos)
 return RHEL5;
-  else if (Data.find("release 4") != StringRef::npos)
-return RHEL4;
 }
 return UnknownDistro;
   }
@@ -3732,11 +3731,11 @@ Linux::Linux(const Driver , const llvm
   ExtraOpts.push_back("--hash-style=both");
   }
 
-  if (IsRedhat(Distro))
+  if (IsRedhat(Distro) && Distro != RHEL5 && Distro != RHEL6)
 ExtraOpts.push_back("--no-add-needed");
 
   if ((IsDebian(Distro) && Distro >= DebianSqueeze) || IsOpenSUSE(Distro) ||
-  (IsRedhat(Distro) && Distro != RHEL4 && Distro != RHEL5) ||
+  (IsRedhat(Distro) && Distro != RHEL5) ||
   (IsUbuntu(Distro) && Distro >= UbuntuKarmic))
 ExtraOpts.push_back("--build-id");
 


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


r268912 - RHEL: Look in more places to find g++ headers and runtime.

2016-05-09 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon May  9 08:03:10 2016
New Revision: 268912

URL: http://llvm.org/viewvc/llvm-project?rev=268912=rev
Log:
RHEL: Look in more places to find g++ headers and runtime.

Some distros with ten years of support ship an old gcc but later offer
more recent versions for installation in parallel. These versions are
typically not only needed for the compilation of llvm/clang, but also to
properly use the clang binary that comes out.

Clang already searches /usr at runtime for the most recent installation
of gcc. This patch appends paths for add-on installations of gcc in
RHEL.

Patch by Michael Lampe.

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

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=268912=268911=268912=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Mon May  9 08:03:10 2016
@@ -1410,9 +1410,17 @@ void Generic_GCC::GCCInstallationDetecto
 // Then look for gcc installed alongside clang.
 Prefixes.push_back(D.InstalledDir + "/..");
 
-// And finally in /usr.
-if (D.SysRoot.empty())
+// Then look for distribution supplied gcc installations.
+if (D.SysRoot.empty()) {
+  // Look for RHEL devtoolsets.
+  Prefixes.push_back("/opt/rh/devtoolset-4/root/usr");
+  Prefixes.push_back("/opt/rh/devtoolset-3/root/usr");
+  Prefixes.push_back("/opt/rh/devtoolset-2/root/usr");
+  Prefixes.push_back("/opt/rh/devtoolset-1.1/root/usr");
+  Prefixes.push_back("/opt/rh/devtoolset-1.0/root/usr");
+  // And finally in /usr.
   Prefixes.push_back("/usr");
+}
   }
 
   // Loop over the various components which exist and select the best GCC


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


r259108 - Update for llvm change.

2016-01-28 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Thu Jan 28 16:56:41 2016
New Revision: 259108

URL: http://llvm.org/viewvc/llvm-project?rev=259108=rev
Log:
Update for llvm change.

Modified:
cfe/trunk/test/CodeGen/pr18235.c

Modified: cfe/trunk/test/CodeGen/pr18235.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/pr18235.c?rev=259108=259107=259108=diff
==
--- cfe/trunk/test/CodeGen/pr18235.c (original)
+++ cfe/trunk/test/CodeGen/pr18235.c Thu Jan 28 16:56:41 2016
@@ -1,3 +1,3 @@
 // RUN: not %clang_cc1 -triple le32-unknown-nacl %s -S -o - 2>&1 | FileCheck %s
 
-// CHECK: error: unable to create target: 'No available targets are compatible 
with this triple, see -version for the available targets.'
+// CHECK: error: unable to create target: 'No available targets are compatible 
with this triple.


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


r258698 - Pass --wrap=pthread_create to linker for -fsplit-stack.

2016-01-25 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon Jan 25 12:29:16 2016
New Revision: 258698

URL: http://llvm.org/viewvc/llvm-project?rev=258698=rev
Log:
Pass --wrap=pthread_create to linker for -fsplit-stack.

From

https://gcc.gnu.org/ml/gcc-patches/2010-09/msg01807.html

-fsplit-stack should pass --wrap=pthread_create to linker for -fsplit-stack
It is needed to initialize the stack guard.  This fixes PR 20148.

Patch by H.J Lu!

Added:
cfe/trunk/test/Driver/split-stack-ld.c
Modified:
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=258698=258697=258698=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Mon Jan 25 12:29:16 2016
@@ -9001,6 +9001,9 @@ void gnutools::Linker::ConstructJob(Comp
   if (WantPthread && !isAndroid)
 CmdArgs.push_back("-lpthread");
 
+  if (Args.hasArg(options::OPT_fsplit_stack))
+CmdArgs.push_back("--wrap=pthread_create");
+
   CmdArgs.push_back("-lc");
 
   if (Args.hasArg(options::OPT_static))

Added: cfe/trunk/test/Driver/split-stack-ld.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/split-stack-ld.c?rev=258698=auto
==
--- cfe/trunk/test/Driver/split-stack-ld.c (added)
+++ cfe/trunk/test/Driver/split-stack-ld.c Mon Jan 25 12:29:16 2016
@@ -0,0 +1,17 @@
+// Test split stack ld flags.
+//
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -target i386-unknown-linux -fsplit-stack \
+// RUN: -resource-dir=%S/Inputs/resource_dir \
+// RUN: --sysroot=%S/Inputs/basic_linux_tree \
+// RUN:   | FileCheck --check-prefix=CHECK-LINUX-I386 %s
+//
+// CHECK-LINUX-I386: "--wrap=pthread_create"
+//
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -target x86_64-unknown-linux -fsplit-stack \
+// RUN: -resource-dir=%S/Inputs/resource_dir \
+// RUN: --sysroot=%S/Inputs/basic_linux_tree \
+// RUN:   | FileCheck --check-prefix=CHECK-LINUX-X86-64 %s
+//
+// CHECK-LINUX-X86-64: "--wrap=pthread_create"


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


r255843 - Update for llvm api change.

2015-12-16 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Dec 16 17:16:37 2015
New Revision: 255843

URL: http://llvm.org/viewvc/llvm-project?rev=255843=rev
Log:
Update for llvm api change.

Modified:
cfe/trunk/lib/CodeGen/CodeGenAction.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=255843=255842=255843=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Wed Dec 16 17:16:37 2015
@@ -184,7 +184,7 @@ namespace clang {
   for (auto  : LinkModules) {
 unsigned LinkFlags = I.first;
 CurLinkModule = I.second.get();
-if (Linker::linkModules(*M, *CurLinkModule, LinkFlags))
+if (Linker::linkModules(*M, std::move(I.second), LinkFlags))
   return;
   }
 
@@ -806,7 +806,7 @@ void CodeGenAction::ExecuteAction() {
   assert(Index);
   // Currently this requires creating a new Module object.
   std::unique_ptr RenamedModule =
-  renameModuleForThinLTO(TheModule, Index.get());
+  renameModuleForThinLTO(std::move(TheModule), Index.get());
   if (!RenamedModule)
 return;
 


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


r255572 - Update for llvm api change.

2015-12-14 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon Dec 14 17:17:07 2015
New Revision: 255572

URL: http://llvm.org/viewvc/llvm-project?rev=255572=rev
Log:
Update for llvm api change.

Modified:
cfe/trunk/lib/CodeGen/CodeGenAction.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=255572=255571=255572=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Mon Dec 14 17:17:07 2015
@@ -41,24 +41,6 @@ using namespace clang;
 using namespace llvm;
 
 namespace clang {
-/// Diagnostic handler used by invocations of Linker::LinkModules
-static void linkerDiagnosticHandler(const DiagnosticInfo ,
-const llvm::Module *LinkModule,
-DiagnosticsEngine ) {
-  if (DI.getSeverity() != DS_Error)
-return;
-
-  std::string MsgStorage;
-  {
-raw_string_ostream Stream(MsgStorage);
-DiagnosticPrinterRawOStream DP(Stream);
-DI.print(DP);
-  }
-
-  Diags.Report(diag::err_fe_cannot_link_module)
-  << LinkModule->getModuleIdentifier() << MsgStorage;
-}
-
   class BackendConsumer : public ASTConsumer {
 virtual void anchor();
 DiagnosticsEngine 
@@ -77,6 +59,10 @@ static void linkerDiagnosticHandler(cons
 SmallVector, 4>
 LinkModules;
 
+// This is here so that the diagnostic printer knows the module a 
diagnostic
+// refers to.
+llvm::Module *CurLinkModule = nullptr;
+
   public:
 BackendConsumer(
 BackendAction Action, DiagnosticsEngine ,
@@ -181,18 +167,6 @@ static void linkerDiagnosticHandler(cons
   assert(TheModule.get() == M &&
  "Unexpected module change during IR generation");
 
-  // Link LinkModule into this module if present, preserving its validity.
-  for (auto  : LinkModules) {
-unsigned LinkFlags = I.first;
-llvm::Module *LinkModule = I.second.get();
-if (Linker::linkModules(*M, *LinkModule,
-[=](const DiagnosticInfo ) {
-  linkerDiagnosticHandler(DI, LinkModule, 
Diags);
-},
-LinkFlags))
-  return;
-  }
-
   // Install an inline asm handler so that diagnostics get printed through
   // our diagnostics hooks.
   LLVMContext  = TheModule->getContext();
@@ -206,6 +180,14 @@ static void linkerDiagnosticHandler(cons
   void *OldDiagnosticContext = Ctx.getDiagnosticContext();
   Ctx.setDiagnosticHandler(DiagnosticHandler, this);
 
+  // Link LinkModule into this module if present, preserving its validity.
+  for (auto  : LinkModules) {
+unsigned LinkFlags = I.first;
+CurLinkModule = I.second.get();
+if (Linker::linkModules(*M, *CurLinkModule, LinkFlags))
+  return;
+  }
+
   EmitBackendOutput(Diags, CodeGenOpts, TargetOpts, LangOpts,
 C.getTargetInfo().getDataLayoutString(),
 TheModule.get(), Action, AsmOutStream);
@@ -579,6 +561,13 @@ void BackendConsumer::DiagnosticHandlerI
   return;
 ComputeDiagID(Severity, backend_frame_larger_than, DiagID);
 break;
+  case DK_Linker:
+assert(CurLinkModule);
+// FIXME: stop eating the warnings and notes.
+if (Severity != DS_Error)
+  return;
+DiagID = diag::err_fe_cannot_link_module;
+break;
   case llvm::DK_OptimizationRemark:
 // Optimization remarks are always handled completely by this
 // handler. There is no generic way of emitting them.
@@ -624,6 +613,12 @@ void BackendConsumer::DiagnosticHandlerI
 DI.print(DP);
   }
 
+  if (DiagID == diag::err_fe_cannot_link_module) {
+Diags.Report(diag::err_fe_cannot_link_module)
+<< CurLinkModule->getModuleIdentifier() << MsgStorage;
+return;
+  }
+
   // Report the backend message using the usual diagnostic mechanism.
   FullSourceLoc Loc;
   Diags.Report(Loc, DiagID).AddString(MsgStorage);
@@ -787,8 +782,7 @@ void CodeGenAction::ExecuteAction() {
 }
 
 auto DiagHandler = [&](const DiagnosticInfo ) {
-  linkerDiagnosticHandler(DI, TheModule.get(),
-  getCompilerInstance().getDiagnostics());
+  TheModule->getContext().diagnose(DI);
 };
 
 // If we are performing ThinLTO importing compilation (indicated by
@@ -812,7 +806,7 @@ void CodeGenAction::ExecuteAction() {
   assert(Index);
   // Currently this requires creating a new Module object.
   std::unique_ptr RenamedModule =
-  renameModuleForThinLTO(TheModule, Index.get(), DiagHandler);
+  renameModuleForThinLTO(TheModule, Index.get());
   if (!RenamedModule)
 return;
 


___
cfe-commits mailing list
cfe-commits@lists.llvm.org

r254450 - Update for llvm api change.

2015-12-01 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Tue Dec  1 13:51:03 2015
New Revision: 254450

URL: http://llvm.org/viewvc/llvm-project?rev=254450=rev
Log:
Update for llvm api change.

Modified:
cfe/trunk/lib/CodeGen/CodeGenAction.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=254450=254449=254450=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Tue Dec  1 13:51:03 2015
@@ -165,7 +165,7 @@ namespace clang {
   for (auto  : LinkModules) {
 unsigned LinkFlags = I.first;
 llvm::Module *LinkModule = I.second.get();
-if (Linker::LinkModules(M, LinkModule,
+if (Linker::linkModules(*M, *LinkModule,
 [=](const DiagnosticInfo ) {
   linkerDiagnosticHandler(DI, LinkModule);
 },


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


r253440 - Update for llvm change.

2015-11-17 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Nov 18 00:54:13 2015
New Revision: 253440

URL: http://llvm.org/viewvc/llvm-project?rev=253440=rev
Log:
Update for llvm change.

Modified:
cfe/trunk/include/clang/Lex/HeaderSearchOptions.h
cfe/trunk/lib/CodeGen/CGObjCMac.cpp

Modified: cfe/trunk/include/clang/Lex/HeaderSearchOptions.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/HeaderSearchOptions.h?rev=253440=253439=253440=diff
==
--- cfe/trunk/include/clang/Lex/HeaderSearchOptions.h (original)
+++ cfe/trunk/include/clang/Lex/HeaderSearchOptions.h Wed Nov 18 00:54:13 2015
@@ -141,7 +141,7 @@ public:
 
   /// \brief The set of macro names that should be ignored for the purposes
   /// of computing the module hash.
-  llvm::SetVector ModulesIgnoreMacros;
+  llvm::SmallSetVector ModulesIgnoreMacros;
 
   /// \brief The set of user-provided virtual filesystem overlay files.
   std::vector VFSOverlayFiles;

Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=253440=253439=253440=diff
==
--- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Wed Nov 18 00:54:13 2015
@@ -833,7 +833,7 @@ protected:
   llvm::DenseMap MethodVarNames;
 
   /// DefinedCategoryNames - list of category names in form Class_Category.
-  llvm::SetVector DefinedCategoryNames;
+  llvm::SmallSetVector DefinedCategoryNames;
 
   /// MethodVarTypes - uniqued method type signatures. We have to use
   /// a StringMap here because have no other unique reference.


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


r253191 - Update for the gnu flavor being renamed to old-gnu.

2015-11-16 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon Nov 16 03:12:12 2015
New Revision: 253191

URL: http://llvm.org/viewvc/llvm-project?rev=253191=rev
Log:
Update for the gnu flavor being renamed to old-gnu.

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/amdgpu-toolchain.c
cfe/trunk/test/Driver/mingw-useld.c
cfe/trunk/test/Driver/mips-mti-linux.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=253191=253190=253191=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Mon Nov 16 03:12:12 2015
@@ -6224,7 +6224,7 @@ void amdgpu::Linker::ConstructJob(Compil
   std::string Linker = getToolChain().GetProgramPath(getShortName());
   ArgStringList CmdArgs;
   CmdArgs.push_back("-flavor");
-  CmdArgs.push_back("gnu");
+  CmdArgs.push_back("old-gnu");
   CmdArgs.push_back("-target");
   CmdArgs.push_back(Args.MakeArgString(getToolChain().getTripleString()));
   AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
@@ -8477,7 +8477,7 @@ void gnutools::Linker::ConstructJob(Comp
 
   if (llvm::sys::path::filename(ToolChain.Linker) == "lld") {
 CmdArgs.push_back("-flavor");
-CmdArgs.push_back("gnu");
+CmdArgs.push_back("old-gnu");
 CmdArgs.push_back("-target");
 CmdArgs.push_back(Args.MakeArgString(getToolChain().getTripleString()));
   }
@@ -9467,7 +9467,7 @@ void MinGW::Linker::ConstructJob(Compila
   StringRef LinkerName = Args.getLastArgValue(options::OPT_fuse_ld_EQ, "ld");
   if (LinkerName.equals_lower("lld")) {
 CmdArgs.push_back("-flavor");
-CmdArgs.push_back("gnu");
+CmdArgs.push_back("old-gnu");
   } else if (!LinkerName.equals_lower("ld")) {
 D.Diag(diag::err_drv_unsupported_linker) << LinkerName;
   }

Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/amdgpu-toolchain.c?rev=253191=253190=253191=diff
==
--- cfe/trunk/test/Driver/amdgpu-toolchain.c (original)
+++ cfe/trunk/test/Driver/amdgpu-toolchain.c Mon Nov 16 03:12:12 2015
@@ -1,3 +1,3 @@
 // RUN: %clang -### -target amdgcn--amdhsa -x assembler -mcpu=kaveri %s 2>&1 | 
FileCheck -check-prefix=AS_LINK %s
 // AS_LINK: clang{{.*}} "-cc1as"
-// AS_LINK: lld{{.*}} "-flavor" "gnu" "-target" "amdgcn--amdhsa"
+// AS_LINK: lld{{.*}} "-flavor" "old-gnu" "-target" "amdgcn--amdhsa"

Modified: cfe/trunk/test/Driver/mingw-useld.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mingw-useld.c?rev=253191=253190=253191=diff
==
--- cfe/trunk/test/Driver/mingw-useld.c (original)
+++ cfe/trunk/test/Driver/mingw-useld.c Mon Nov 16 03:12:12 2015
@@ -1,16 +1,16 @@
 // RUN: %clang -### -target i686-pc-windows-gnu 
--sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s 2>&1 | FileCheck 
-check-prefix=CHECK_LD_32 %s
 // CHECK_LD_32: {{ld|ld.exe}}"
 // CHECK_LD_32: "i386pe"
-// CHECK_LD_32_NOT: "-flavor" "gnu"
+// CHECK_LD_32_NOT: "-flavor" "old-gnu"
 
 // RUN: %clang -### -target i686-pc-windows-gnu 
--sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s -fuse-ld=lld 2>&1 | FileCheck 
-check-prefix=CHECK_LLD_32 %s
-// CHECK_LLD_32: lld" "-flavor" "gnu"
+// CHECK_LLD_32: lld" "-flavor" "old-gnu"
 // CHECK_LLD_32: "i386pe"
 
 // RUN: %clang -### -target x86_64-pc-windows-gnu 
--sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s -fuse-ld=lld 2>&1 | FileCheck 
-check-prefix=CHECK_LLD_64 %s
-// CHECK_LLD_64: lld" "-flavor" "gnu"
+// CHECK_LLD_64: lld" "-flavor" "old-gnu"
 // CHECK_LLD_64: "i386pep"
 
 // RUN: %clang -### -target arm-pc-windows-gnu 
--sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s -fuse-ld=lld 2>&1 | FileCheck 
-check-prefix=CHECK_LLD_ARM %s
-// CHECK_LLD_ARM: lld" "-flavor" "gnu"
+// CHECK_LLD_ARM: lld" "-flavor" "old-gnu"
 // CHECK_LLD_ARM: "thumb2pe"

Modified: cfe/trunk/test/Driver/mips-mti-linux.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mips-mti-linux.c?rev=253191=253190=253191=diff
==
--- cfe/trunk/test/Driver/mips-mti-linux.c (original)
+++ cfe/trunk/test/Driver/mips-mti-linux.c Mon Nov 16 03:12:12 2015
@@ -14,7 +14,7 @@
 // CHECK-BE-HF-32R2: "{{[^"]*}}clang{{[^"]*}}" {{.*}} "-triple" 
"mips-mti-linux"
 // CHECK-BE-HF-32R2-SAME: "-fuse-init-array" "-target-cpu" "mips32r2"
 // CHECK-BE-HF-32R2-SAME: "-isysroot" "{{.*}}mips_mti_linux/sysroot"
-// CHECK-BE-HF-32R2: "{{[^"]*}}lld{{[^"]*}}" "-flavor" "gnu" "-target" 
"mips-mti-linux"
+// CHECK-BE-HF-32R2: "{{[^"]*}}lld{{[^"]*}}" "-flavor" "old-gnu" "-target" 
"mips-mti-linux"
 // CHECK-BE-HF-32R2-SAME: "--sysroot=[[SYSROOT:[^"]+]]" {{.*}} 
"-dynamic-linker" "/lib/ld-musl-mips.so.1"
 // CHECK-BE-HF-32R2-SAME: 
"[[SYSROOT]]/mips-r2-hard-musl/usr/lib{{/|}}crt1.o"
 // CHECK-BE-HF-32R2-SAME: 

r251214 - Simplify boolean conditional return statements in lib/Basic.

2015-10-24 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Sat Oct 24 18:15:31 2015
New Revision: 251214

URL: http://llvm.org/viewvc/llvm-project?rev=251214=rev
Log:
Simplify boolean conditional return statements in lib/Basic.

Patch by Richard.

Modified:
cfe/trunk/lib/Basic/Targets.cpp

Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=251214=251213=251214=diff
==
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Sat Oct 24 18:15:31 2015
@@ -2704,14 +2704,14 @@ bool X86TargetInfo::initFeatureMap(
 
   // Enable popcnt if sse4.2 is enabled and popcnt is not explicitly disabled.
   auto I = Features.find("sse4.2");
-  if (I != Features.end() && I->getValue() == true &&
+  if (I != Features.end() && I->getValue() &&
   std::find(FeaturesVec.begin(), FeaturesVec.end(), "-popcnt") ==
   FeaturesVec.end())
 Features["popcnt"] = true;
 
   // Enable prfchw if 3DNow! is enabled and prfchw is not explicitly disabled.
   I = Features.find("3dnow");
-  if (I != Features.end() && I->getValue() == true &&
+  if (I != Features.end() && I->getValue() &&
   std::find(FeaturesVec.begin(), FeaturesVec.end(), "-prfchw") ==
   FeaturesVec.end())
 Features["prfchw"] = true;
@@ -2719,7 +2719,7 @@ bool X86TargetInfo::initFeatureMap(
   // Additionally, if SSE is enabled and mmx is not explicitly disabled,
   // then enable MMX.
   I = Features.find("sse");
-  if (I != Features.end() && I->getValue() == true &&
+  if (I != Features.end() && I->getValue() &&
   std::find(FeaturesVec.begin(), FeaturesVec.end(), "-mmx") ==
   FeaturesVec.end())
 Features["mmx"] = true;


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


r249346 - Fix the MSVC build.

2015-10-05 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon Oct  5 15:20:50 2015
New Revision: 249346

URL: http://llvm.org/viewvc/llvm-project?rev=249346=rev
Log:
Fix the MSVC build.

No idea what asymmetry MSVC is findind.

Modified:
cfe/trunk/unittests/Basic/VirtualFileSystemTest.cpp

Modified: cfe/trunk/unittests/Basic/VirtualFileSystemTest.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Basic/VirtualFileSystemTest.cpp?rev=249346=249345=249346=diff
==
--- cfe/trunk/unittests/Basic/VirtualFileSystemTest.cpp (original)
+++ cfe/trunk/unittests/Basic/VirtualFileSystemTest.cpp Mon Oct  5 15:20:50 2015
@@ -528,9 +528,9 @@ protected:
 
 TEST_F(InMemoryFileSystemTest, IsEmpty) {
   auto Stat = FS.status("/a");
-  ASSERT_EQ(errc::no_such_file_or_directory, Stat.getError()) << FS.toString();
+  ASSERT_EQ(Stat.getError(),errc::no_such_file_or_directory) << FS.toString();
   Stat = FS.status("/");
-  ASSERT_EQ(errc::no_such_file_or_directory, Stat.getError()) << FS.toString();
+  ASSERT_EQ(Stat.getError(), errc::no_such_file_or_directory) << FS.toString();
 }
 
 TEST_F(InMemoryFileSystemTest, WindowsPath) {
@@ -560,9 +560,9 @@ TEST_F(InMemoryFileSystemTest, OpenFileF
   File = FS.openFileForRead("/a"); // Open again.
   ASSERT_EQ("a", (*(*File)->getBuffer("ignored"))->getBuffer());
   File = FS.openFileForRead("/");
-  ASSERT_EQ(errc::invalid_argument, File.getError()) << FS.toString();
+  ASSERT_EQ(File.getError(), errc::invalid_argument) << FS.toString();
   File = FS.openFileForRead("/b");
-  ASSERT_EQ(errc::no_such_file_or_directory, File.getError()) << FS.toString();
+  ASSERT_EQ(File.getError(), errc::no_such_file_or_directory) << FS.toString();
 }
 
 TEST_F(InMemoryFileSystemTest, DirectoryIteration) {


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


r249302 - Use llvm::errc instead of std::errc.

2015-10-05 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon Oct  5 06:49:35 2015
New Revision: 249302

URL: http://llvm.org/viewvc/llvm-project?rev=249302=rev
Log:
Use llvm::errc instead of std::errc.

Modified:
cfe/trunk/lib/Frontend/CompilerInstance.cpp

Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInstance.cpp?rev=249302=249301=249302=diff
==
--- cfe/trunk/lib/Frontend/CompilerInstance.cpp (original)
+++ cfe/trunk/lib/Frontend/CompilerInstance.cpp Mon Oct  5 06:49:35 2015
@@ -641,7 +641,7 @@ std::unique_ptr
   if (llvm::sys::fs::exists(Status)) {
 // Fail early if we can't write to the final destination.
 if (!llvm::sys::fs::can_write(OutputPath)) {
-  Error = std::make_error_code(std::errc::operation_not_permitted);
+  Error = make_error_code(llvm::errc::operation_not_permitted);
   return nullptr;
 }
 


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


r248029 - Fix test to pass when the directory name has lld in it.

2015-09-18 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Fri Sep 18 15:22:36 2015
New Revision: 248029

URL: http://llvm.org/viewvc/llvm-project?rev=248029=rev
Log:
Fix test to pass when the directory name has lld in it.

CHECK-LABEL assumes that there is only one occurrence of the match.

The output looks like:

clang version 3.8.0 (trunk 247999)

/path/to/build/dir/bin/clang-3.8 

If the path contains lld, the second CHECK-LABEL matches it and we fail since
there is no -cc1as between clang and lld.

Modified:
cfe/trunk/test/Driver/amdgpu-toolchain.c

Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/amdgpu-toolchain.c?rev=248029=248028=248029=diff
==
--- cfe/trunk/test/Driver/amdgpu-toolchain.c (original)
+++ cfe/trunk/test/Driver/amdgpu-toolchain.c Fri Sep 18 15:22:36 2015
@@ -1,6 +1,5 @@
 // RUN: %clang -### -target amdgcn--amdhsa -x assembler -mcpu=kaveri %s 2>&1 | 
FileCheck -check-prefix=AS_LINK %s
-// AS_LINK-LABEL: clang
-// AS_LINK: "-cc1as"
-// AS_LINK-LABEL: lld
-// AS_LINK: "-flavor" "gnu" "-target" "amdgcn--amdhsa"
-// REQUIRES: clang-driver
+// AS_LINK: /clang
+// AS_LINK-SAME: "-cc1as"
+// AS_LINK: /lld
+// AS_LINK-SAME: "-flavor" "gnu" "-target" "amdgcn--amdhsa"


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


r248051 - Relax the test to get it passing with windows paths.

2015-09-18 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Fri Sep 18 17:01:10 2015
New Revision: 248051

URL: http://llvm.org/viewvc/llvm-project?rev=248051=rev
Log:
Relax the test to get it passing with windows paths.

Modified:
cfe/trunk/test/Driver/amdgpu-toolchain.c

Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/amdgpu-toolchain.c?rev=248051=248050=248051=diff
==
--- cfe/trunk/test/Driver/amdgpu-toolchain.c (original)
+++ cfe/trunk/test/Driver/amdgpu-toolchain.c Fri Sep 18 17:01:10 2015
@@ -1,3 +1,3 @@
 // RUN: %clang -### -target amdgcn--amdhsa -x assembler -mcpu=kaveri %s 2>&1 | 
FileCheck -check-prefix=AS_LINK %s
-// AS_LINK: bin/clang{{.*}} "-cc1as"
+// AS_LINK: clang{{.*}} "-cc1as"
 // AS_LINK: lld{{.*}} "-flavor" "gnu" "-target" "amdgcn--amdhsa"


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


r248035 - Handle lld not being found in PATH.

2015-09-18 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Fri Sep 18 15:55:58 2015
New Revision: 248035

URL: http://llvm.org/viewvc/llvm-project?rev=248035=rev
Log:
Handle lld not being found in PATH.

Modified:
cfe/trunk/test/Driver/amdgpu-toolchain.c

Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/amdgpu-toolchain.c?rev=248035=248034=248035=diff
==
--- cfe/trunk/test/Driver/amdgpu-toolchain.c (original)
+++ cfe/trunk/test/Driver/amdgpu-toolchain.c Fri Sep 18 15:55:58 2015
@@ -1,3 +1,3 @@
 // RUN: %clang -### -target amdgcn--amdhsa -x assembler -mcpu=kaveri %s 2>&1 | 
FileCheck -check-prefix=AS_LINK %s
 // AS_LINK: bin/clang{{.*}} "-cc1as"
-// AS_LINK: bin/lld{{.*}} "-flavor" "gnu" "-target" "amdgcn--amdhsa"
+// AS_LINK: lld{{.*}} "-flavor" "gnu" "-target" "amdgcn--amdhsa"


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


r247634 - [Solaris] Default to -fno-cxa-finalize.

2015-09-14 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon Sep 14 18:21:31 2015
New Revision: 247634

URL: http://llvm.org/viewvc/llvm-project?rev=247634=rev
Log:
[Solaris] Default to -fno-cxa-finalize.

There is no __cxa_finalize symbol available on recent Solaris OS
versions, so we need this flag to make non trivial C++ programs run.

Also stop looking for cxa_finalize.o, since it won't be there.

Patch by Xan López!

Added:
cfe/trunk/test/Driver/solaris-opts.c
Modified:
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=247634=247633=247634=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Mon Sep 14 18:21:31 2015
@@ -4572,8 +4572,9 @@ void Clang::ConstructJob(Compilation ,
   if (!Args.hasFlag(options::OPT_fuse_cxa_atexit,
 options::OPT_fno_use_cxa_atexit,
 !IsWindowsCygnus && !IsWindowsGNU &&
-getToolChain().getArch() != llvm::Triple::hexagon &&
-getToolChain().getArch() != llvm::Triple::xcore) ||
+getToolChain().getTriple().getOS() != 
llvm::Triple::Solaris &&
+getToolChain().getArch() != llvm::Triple::hexagon &&
+getToolChain().getArch() != llvm::Triple::xcore) ||
   KernelOrKext)
 CmdArgs.push_back("-fno-use-cxa-atexit");
 
@@ -6942,10 +6943,6 @@ void solaris::Linker::ConstructJob(Compi
 Args.MakeArgString(getToolChain().GetFilePath("values-Xa.o")));
 CmdArgs.push_back(
 Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o")));
-
-if (getToolChain().getDriver().CCCIsCXX())
-  CmdArgs.push_back(
-  Args.MakeArgString(getToolChain().GetFilePath("cxa_finalize.o")));
   }
 
   const ToolChain::path_list  = getToolChain().getFilePaths();

Added: cfe/trunk/test/Driver/solaris-opts.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/solaris-opts.c?rev=247634=auto
==
--- cfe/trunk/test/Driver/solaris-opts.c (added)
+++ cfe/trunk/test/Driver/solaris-opts.c Mon Sep 14 18:21:31 2015
@@ -0,0 +1,4 @@
+// RUN: %clang %s --target=sparc-sun-solaris2.11 -### -o %t.o 2>&1 | FileCheck 
%s
+
+// CHECK: "-fno-use-cxa-atexit"
+


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


r247603 - [Solaris] Add -lc also when linking shared libraries

2015-09-14 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon Sep 14 14:30:53 2015
New Revision: 247603

URL: http://llvm.org/viewvc/llvm-project?rev=247603=rev
Log:
[Solaris] Add -lc also when linking shared libraries

This is actually needed, otherwise libc won't be added at all. For
instance when building libclang.so all the libc symbols won't be
found, with ld warning about libc being an "implicit dependency".

Patch by Xan López!

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/solaris-ld.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=247603=247602=247603=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Mon Sep 14 14:30:53 2015
@@ -6962,9 +6962,9 @@ void solaris::Linker::ConstructJob(Compi
 if (getToolChain().getDriver().CCCIsCXX())
   getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
 CmdArgs.push_back("-lgcc_s");
+CmdArgs.push_back("-lc");
 if (!Args.hasArg(options::OPT_shared)) {
   CmdArgs.push_back("-lgcc");
-  CmdArgs.push_back("-lc");
   CmdArgs.push_back("-lm");
 }
   }

Modified: cfe/trunk/test/Driver/solaris-ld.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/solaris-ld.c?rev=247603=247602=247603=diff
==
--- cfe/trunk/test/Driver/solaris-ld.c (original)
+++ cfe/trunk/test/Driver/solaris-ld.c Mon Sep 14 14:30:53 2015
@@ -14,3 +14,20 @@
 // CHECK: 
"{{.*}}/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2{{/|}}crtbegin.o"
 // CHECK: 
"{{.*}}/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2{{/|}}crtend.o"
 // CHECK: "{{.*}}/usr/lib/crtn.o"
+// CHECK "-lc"
+// CHECK "-lgcc_s"
+// CHECK "-lgcc"
+// CHECK "-lm"
+
+// Check the right -l flags are present with -shared
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o -shared 2>&1 \
+// RUN: --target=sparc-sun-solaris2.11 \
+// RUN: --gcc-toolchain="" \
+// RUN: --sysroot=%S/Inputs/sparc-sun-solaris2.11 \
+// RUN:   | FileCheck --check-prefix=CHECK-SHARED %s
+
+// CHECK-SHARED: ld{{.*}}"
+// CHECK-SHARED "-lc"
+// CHECK-SHARED "-lgcc_s"
+// CHECK-SHARED-NOT "-lgcc"
+// CHECK-SHARED-NOT: "-lm"


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


r247144 - [Solaris] Use the GCC Installation detector to add the C++ include paths.

2015-09-09 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Sep  9 08:36:00 2015
New Revision: 247144

URL: http://llvm.org/viewvc/llvm-project?rev=247144=rev
Log:
[Solaris] Use the GCC Installation detector to add the C++ include paths.

Patch by Xan López!

Added:
cfe/trunk/test/Driver/solaris-header-search.cpp
Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/lib/Driver/ToolChains.h
cfe/trunk/lib/Frontend/InitHeaderSearch.cpp

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=247144=247143=247144=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Wed Sep  9 08:36:00 2015
@@ -2962,6 +2962,31 @@ Tool *Solaris::buildAssembler() const {
 
 Tool *Solaris::buildLinker() const { return new tools::solaris::Linker(*this); 
}
 
+void Solaris::AddClangCXXStdlibIncludeArgs(const ArgList ,
+   ArgStringList ) const {
+  if (DriverArgs.hasArg(options::OPT_nostdlibinc) ||
+  DriverArgs.hasArg(options::OPT_nostdincxx))
+return;
+
+  // Include the support directory for things like xlocale and fudged system
+  // headers.
+  addSystemInclude(DriverArgs, CC1Args, "/usr/include/c++/v1/support/solaris");
+
+  if (GCCInstallation.isValid()) {
+GCCVersion Version = GCCInstallation.getVersion();
+addSystemInclude(DriverArgs, CC1Args,
+ getDriver().SysRoot + "/usr/gcc/" +
+ Version.MajorStr + "." +
+ Version.MinorStr +
+ "/include/c++/" + Version.Text);
+addSystemInclude(DriverArgs, CC1Args,
+ getDriver().SysRoot + "/usr/gcc/" + Version.MajorStr +
+ "." + Version.MinorStr + "/include/c++/" +
+ Version.Text + "/" +
+ GCCInstallation.getTriple().str());
+  }
+}
+
 /// Distribution (very bare-bones at the moment).
 
 enum Distro {

Modified: cfe/trunk/lib/Driver/ToolChains.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=247144=247143=247144=diff
==
--- cfe/trunk/lib/Driver/ToolChains.h (original)
+++ cfe/trunk/lib/Driver/ToolChains.h Wed Sep  9 08:36:00 2015
@@ -527,6 +527,10 @@ public:
 
   bool IsIntegratedAssemblerDefault() const override { return true; }
 
+  void AddClangCXXStdlibIncludeArgs(
+  const llvm::opt::ArgList ,
+  llvm::opt::ArgStringList ) const override;
+
 protected:
   Tool *buildAssembler() const override;
   Tool *buildLinker() const override;

Modified: cfe/trunk/lib/Frontend/InitHeaderSearch.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitHeaderSearch.cpp?rev=247144=247143=247144=diff
==
--- cfe/trunk/lib/Frontend/InitHeaderSearch.cpp (original)
+++ cfe/trunk/lib/Frontend/InitHeaderSearch.cpp Wed Sep  9 08:36:00 2015
@@ -404,10 +404,6 @@ AddDefaultCPlusPlusIncludePaths(const ll
 AddGnuCPlusPlusIncludePaths("/usr/gnu/include/c++/4.4.3",
 "", "", "", triple);
 break;
-  case llvm::Triple::Solaris:
-AddGnuCPlusPlusIncludePaths("/usr/gcc/4.5/include/c++/4.5.2/",
-"i386-pc-solaris2.11", "", "", triple);
-break;
   default:
 break;
   }
@@ -453,11 +449,6 @@ void InitHeaderSearch::AddDefaultInclude
   AddUnmappedPath(P, CXXSystem, false);
 }
   }
-  // On Solaris, include the support directory for things like xlocale and
-  // fudged system headers.
-  if (triple.getOS() == llvm::Triple::Solaris) 
-AddPath("/usr/include/c++/v1/support/solaris", CXXSystem, false);
-  
   AddPath("/usr/include/c++/v1", CXXSystem, false);
 } else {
   AddDefaultCPlusPlusIncludePaths(triple, HSOpts);

Added: cfe/trunk/test/Driver/solaris-header-search.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/solaris-header-search.cpp?rev=247144=auto
==
--- cfe/trunk/test/Driver/solaris-header-search.cpp (added)
+++ cfe/trunk/test/Driver/solaris-header-search.cpp Wed Sep  9 08:36:00 2015
@@ -0,0 +1,11 @@
+// Test that the C++ headers are found.
+//
+// RUN: %clang -no-canonical-prefixes %s -### 2>&1 \
+// RUN: --target=sparc-sun-solaris2.11 \
+// RUN: --gcc-toolchain="" \
+// RUN: --sysroot=%S/Inputs/sparc-sun-solaris2.11 \
+// RUN:   | FileCheck %s
+// CHECK: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
+// CHECK: "-internal-isystem" "{{.*}}/usr/include/c++/v1/support/solaris"
+// CHECK: "-internal-isystem" "{{.*}}/usr/gcc/4.8/include/c++/4.8.2"
+// CHECK: "-internal-isystem" 
"{{.*}}/usr/gcc/4.8/include/c++/4.8.2/sparc-sun-solaris2.11"


___

r246473 - Stop hardcoding GCC paths in crt/ld.so lookup.

2015-08-31 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Mon Aug 31 14:17:51 2015
New Revision: 246473

URL: http://llvm.org/viewvc/llvm-project?rev=246473=rev
Log:
Stop hardcoding GCC paths in crt/ld.so lookup.

This patch refactors the code to use the GCC installation detector
(modified so that it works in Solaris), and uses
ToolChain::GetFilePath everywhere once it works.

Patch by Xan López !

Added:
cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/
cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/
cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/
cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/
cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/
cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/gcc/

cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/

cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/

cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/crt1.o

cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/crtbegin.o

cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/crtend.o
cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/lib/
cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/lib/crti.o
cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/lib/crtn.o
cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/lib/ld.so.1
cfe/trunk/test/Driver/solaris-ld.c
Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/lib/Driver/ToolChains.h
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=246473=246472=246473=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Mon Aug 31 14:17:51 2015
@@ -1340,9 +1340,21 @@ bool Generic_GCC::GCCInstallationDetecto
   "s390x-linux-gnu", "s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu",
   "s390x-suse-linux", "s390x-redhat-linux"};
 
+  // Solaris.
+  static const char *const SolarisSPARCLibDirs[] = {"/gcc"};
+  static const char *const SolarisSPARCTriples[] = {"sparc-sun-solaris2.11",
+"i386-pc-solaris2.11"};
+
   using std::begin;
   using std::end;
 
+  if (TargetTriple.getOS() == llvm::Triple::Solaris) {
+LibDirs.append(begin(SolarisSPARCLibDirs), end(SolarisSPARCLibDirs));
+TripleAliases.append(begin(SolarisSPARCTriples), end(SolarisSPARCTriples));
+
+return;
+  }
+
   switch (TargetTriple.getArch()) {
   case llvm::Triple::aarch64:
 LibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
@@ -1907,6 +1919,54 @@ static bool findBiarchMultilibs(const ll
   return true;
 }
 
+void Generic_GCC::GCCInstallationDetector::scanLibDirForGCCTripleSolaris(
+const llvm::Triple , const llvm::opt::ArgList ,
+const std::string , StringRef CandidateTriple,
+bool NeedsBiarchSuffix) {
+  // Solaris is a special case. The GCC installation is under
+  // /usr/gcc/./lib/gcc//../, so we
+  // need to iterate twice.
+  std::error_code EC;
+  for (llvm::sys::fs::directory_iterator LI(LibDir, EC), LE; !EC && LI != LE;
+   LI = LI.increment(EC)) {
+StringRef VersionText = llvm::sys::path::filename(LI->path());
+GCCVersion CandidateVersion = GCCVersion::Parse(VersionText);
+
+if (CandidateVersion.Major != -1) // Filter obviously bad entries.
+  if (!CandidateGCCInstallPaths.insert(LI->path()).second)
+continue; // Saw this path before; no need to look at it again.
+if (CandidateVersion.isOlderThan(4, 1, 1))
+  continue;
+if (CandidateVersion <= Version)
+  continue;
+
+GCCInstallPath =
+LibDir + "/" + VersionText.str() + "/lib/gcc/" + CandidateTriple.str();
+if (!llvm::sys::fs::exists(GCCInstallPath))
+  continue;
+
+// If we make it here there has to be at least one GCC version, let's just
+// use the latest one.
+std::error_code EEC;
+for (llvm::sys::fs::directory_iterator LLI(GCCInstallPath, EEC), LLE;
+ !EEC && LLI != LLE; LLI = LLI.increment(EEC)) {
+
+  StringRef SubVersionText = llvm::sys::path::filename(LLI->path());
+  GCCVersion CandidateSubVersion = GCCVersion::Parse(SubVersionText);
+
+  if (CandidateSubVersion > Version)
+Version = CandidateSubVersion;
+}
+
+GCCTriple.setTriple(CandidateTriple);
+
+GCCInstallPath += "/" + Version.Text;
+GCCParentLibPath = GCCInstallPath + "/../../../../";
+
+IsValid = true;
+  }
+}
+
 void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
 const llvm::Triple , const ArgList ,
 const std::string , StringRef 

r244855 - Update for llvm api change.

2015-08-12 Thread Rafael Espindola via cfe-commits
Author: rafael
Date: Wed Aug 12 20:07:06 2015
New Revision: 244855

URL: http://llvm.org/viewvc/llvm-project?rev=244855view=rev
Log:
Update for llvm api change.

Modified:
cfe/trunk/tools/driver/driver.cpp

Modified: cfe/trunk/tools/driver/driver.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/driver.cpp?rev=244855r1=244854r2=244855view=diff
==
--- cfe/trunk/tools/driver/driver.cpp (original)
+++ cfe/trunk/tools/driver/driver.cpp Wed Aug 12 20:07:06 2015
@@ -406,7 +406,7 @@ int main(int argc_, const char **argv_)
   const DriverSuffix *DS = parseDriverSuffix(ProgName);
 
   llvm::BumpPtrAllocator A;
-  llvm::BumpPtrStringSaver Saver(A);
+  llvm::StringSaver Saver(A);
 
   // Parse response files using the GNU syntax, unless we're in CL mode. There
   // are two ways to put clang in CL compatibility mode: argv[0] is either


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