[llvm-branch-commits] [llvm-branch] r293780 - Merging r293230:

2017-02-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Wed Feb  1 10:54:47 2017
New Revision: 293780

URL: http://llvm.org/viewvc/llvm-project?rev=293780&view=rev
Log:
Merging r293230:

r293230 | yuyichao | 2017-01-26 15:50:18 -0800 (Thu, 26 Jan 2017) | 11 lines

CMake is funky on detecting Intel 17 as GCC compatible.

Summary: This adds a fallback in case that the Intel compiler is failed to be 
detected correctly.

Reviewers: chapuni

Reviewed By: chapuni

Subscribers: llvm-commits, mgorny

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


Modified:
llvm/branches/release_40/   (props changed)
llvm/branches/release_40/cmake/modules/DetermineGCCCompatible.cmake

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  1 10:54:47 2017
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293259,293291,293293,293417,293522,293629
+/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293417,293522,293629

Modified: llvm/branches/release_40/cmake/modules/DetermineGCCCompatible.cmake
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/cmake/modules/DetermineGCCCompatible.cmake?rev=293780&r1=293779&r2=293780&view=diff
==
--- llvm/branches/release_40/cmake/modules/DetermineGCCCompatible.cmake 
(original)
+++ llvm/branches/release_40/cmake/modules/DetermineGCCCompatible.cmake Wed Feb 
 1 10:54:47 2017
@@ -7,5 +7,7 @@ if(NOT DEFINED LLVM_COMPILER_IS_GCC_COMP
 set(LLVM_COMPILER_IS_GCC_COMPATIBLE OFF)
   elseif( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
 set(LLVM_COMPILER_IS_GCC_COMPATIBLE ON)
+  elseif( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Intel" )
+set(LLVM_COMPILER_IS_GCC_COMPATIBLE ON)
   endif()
 endif()


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


[llvm-branch-commits] [llvm-branch] r293781 - Merging r293658:

2017-02-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Wed Feb  1 10:56:48 2017
New Revision: 293781

URL: http://llvm.org/viewvc/llvm-project?rev=293781&view=rev
Log:
Merging r293658:

r293658 | arnolds | 2017-01-31 09:53:49 -0800 (Tue, 31 Jan 2017) | 1 line

Don't combine stores to a swifterror pointer operand to a different type


Modified:
llvm/branches/release_40/   (props changed)

llvm/branches/release_40/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
llvm/branches/release_40/test/Transforms/InstCombine/load.ll

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  1 10:56:48 2017
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293417,293522,293629
+/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293417,293522,293629,293658

Modified: 
llvm/branches/release_40/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp?rev=293781&r1=293780&r2=293781&view=diff
==
--- 
llvm/branches/release_40/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
 (original)
+++ 
llvm/branches/release_40/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
 Wed Feb  1 10:56:48 2017
@@ -502,7 +502,8 @@ static Instruction *combineLoadToOperati
   !DL.isNonIntegralPointerType(Ty)) {
 if (all_of(LI.users(), [&LI](User *U) {
   auto *SI = dyn_cast(U);
-  return SI && SI->getPointerOperand() != &LI;
+  return SI && SI->getPointerOperand() != &LI &&
+ !SI->getPointerOperand()->isSwiftError();
 })) {
   LoadInst *NewLoad = combineLoadToNewType(
   IC, LI,

Modified: llvm/branches/release_40/test/Transforms/InstCombine/load.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/test/Transforms/InstCombine/load.ll?rev=293781&r1=293780&r2=293781&view=diff
==
--- llvm/branches/release_40/test/Transforms/InstCombine/load.ll (original)
+++ llvm/branches/release_40/test/Transforms/InstCombine/load.ll Wed Feb  1 
10:56:48 2017
@@ -219,3 +219,22 @@ entry:
   store %swift.error* %err.res, %swift.error** %err, align 8
   ret void
 }
+
+; Make sure we preseve the type of the store to a swifterror pointer.
+; CHECK-LABEL: @test19(
+; CHECK: [[A:%.*]] = alloca
+; CHECK: call
+; CHECK: [[BC:%.*]] = bitcast i8** [[A]] to
+; CHECK: [[ERRVAL:%.*]] =  load {{.*}}[[BC]]
+; CHECK: store {{.*}}[[ERRVAL]]
+; CHECK: ret
+declare void @initi8(i8**)
+define void @test19(%swift.error** swifterror %err) {
+entry:
+  %tmp = alloca i8*, align 8
+  call void @initi8(i8** %tmp)
+  %swifterror = bitcast i8** %tmp to %swift.error**
+  %err.res = load %swift.error*, %swift.error** %swifterror, align 8
+  store %swift.error* %err.res, %swift.error** %err, align 8
+  ret void
+}


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


[llvm-branch-commits] [cfe-branch] r293782 - Merging r293678:

2017-02-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Wed Feb  1 10:59:51 2017
New Revision: 293782

URL: http://llvm.org/viewvc/llvm-project?rev=293782&view=rev
Log:
Merging r293678:

r293678 | ahatanak | 2017-01-31 11:53:32 -0800 (Tue, 31 Jan 2017) | 9 lines

[Sema] Transform a templated name before looking it up in
FindInstantiatedDecl or passing it to RebuildMemberExpr.

This fixes PR30361.

rdar://problem/17341274

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



Modified:
cfe/branches/release_40/   (props changed)
cfe/branches/release_40/lib/Sema/SemaTemplateInstantiateDecl.cpp
cfe/branches/release_40/lib/Sema/TreeTransform.h
cfe/branches/release_40/test/SemaCXX/destructor.cpp

Propchange: cfe/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  1 10:59:51 2017
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291964,292032,292052,292183,292194,292247,292265,292497,292555,292558-292559,292561,292590,292800,292847,292874,292991,293134,293596
+/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291964,292032,292052,292183,292194,292247,292265,292497,292555,292558-292559,292561,292590,292800,292847,292874,292991,293134,293596,293678
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_40/lib/Sema/SemaTemplateInstantiateDecl.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/lib/Sema/SemaTemplateInstantiateDecl.cpp?rev=293782&r1=293781&r2=293782&view=diff
==
--- cfe/branches/release_40/lib/Sema/SemaTemplateInstantiateDecl.cpp (original)
+++ cfe/branches/release_40/lib/Sema/SemaTemplateInstantiateDecl.cpp Wed Feb  1 
10:59:51 2017
@@ -4996,8 +4996,12 @@ NamedDecl *Sema::FindInstantiatedDecl(So
 NamedDecl *Result = nullptr;
 // FIXME: If the name is a dependent name, this lookup won't necessarily
 // find it. Does that ever matter?
-if (D->getDeclName()) {
-  DeclContext::lookup_result Found = ParentDC->lookup(D->getDeclName());
+if (auto Name = D->getDeclName()) {
+  DeclarationNameInfo NameInfo(Name, D->getLocation());
+  Name = SubstDeclarationNameInfo(NameInfo, TemplateArgs).getName();
+  if (!Name)
+return nullptr;
+  DeclContext::lookup_result Found = ParentDC->lookup(Name);
   Result = findInstantiationOf(Context, D, Found.begin(), Found.end());
 } else {
   // Since we don't have a name for the entity we're looking for,

Modified: cfe/branches/release_40/lib/Sema/TreeTransform.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/lib/Sema/TreeTransform.h?rev=293782&r1=293781&r2=293782&view=diff
==
--- cfe/branches/release_40/lib/Sema/TreeTransform.h (original)
+++ cfe/branches/release_40/lib/Sema/TreeTransform.h Wed Feb  1 10:59:51 2017
@@ -8818,12 +8818,18 @@ TreeTransform::TransformMemberE
   // base (and therefore couldn't do the check) and a
   // nested-name-qualifier (and therefore could do the lookup).
   NamedDecl *FirstQualifierInScope = nullptr;
+  DeclarationNameInfo MemberNameInfo = E->getMemberNameInfo();
+  if (MemberNameInfo.getName()) {
+MemberNameInfo = getDerived().TransformDeclarationNameInfo(MemberNameInfo);
+if (!MemberNameInfo.getName())
+  return ExprError();
+  }
 
   return getDerived().RebuildMemberExpr(Base.get(), FakeOperatorLoc,
 E->isArrow(),
 QualifierLoc,
 TemplateKWLoc,
-E->getMemberNameInfo(),
+MemberNameInfo,
 Member,
 FoundDecl,
 (E->hasExplicitTemplateArgs()

Modified: cfe/branches/release_40/test/SemaCXX/destructor.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/test/SemaCXX/destructor.cpp?rev=293782&r1=293781&r2=293782&view=diff
==
--- cfe/branches/release_40/test/SemaCXX/destructor.cpp (original)
+++ cfe/branches/release_40/test/SemaCXX/destructor.cpp Wed Feb  1 10:59:51 2017
@@ -431,3 +431,23 @@ class Invalid {
 
 // The constructor definition should not have errors
 Invalid::~Invalid() {}
+
+namespace PR30361 {
+template 
+struct C1 {
+  ~C1() {}
+  operator C1* () { return nullptr; }
+  void foo1();
+};
+
+template
+void C1::foo1() {
+  C1::operator C1*();
+  C1::~C1();
+}
+
+void foo1() {
+  C1 x;
+  x.foo1();
+

[llvm-branch-commits] [cfe-branch] r293783 - Merging r291963:

2017-02-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Wed Feb  1 11:10:26 2017
New Revision: 293783

URL: http://llvm.org/viewvc/llvm-project?rev=293783&view=rev
Log:
Merging r291963:

r291963 | ericwf | 2017-01-13 14:11:40 -0800 (Fri, 13 Jan 2017) | 9 lines

[clang] Emit `diagnose_if` warnings from system headers

Summary: In order for libc++ to meaningfully use `diagnose_if` warnings they 
need to be emitted from system headers by default. This patch changes the 
`diagnose_if` warning diagnostic to be shown in system headers.

Reviewers: george.burgess.iv, rsmith, aaron.ballman

Subscribers: cfe-commits

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


Added:
cfe/branches/release_40/test/Sema/Inputs/diagnose-if-warn-system-header.h
  - copied unchanged from r291963, 
cfe/trunk/test/Sema/Inputs/diagnose-if-warn-system-header.h
Modified:
cfe/branches/release_40/   (props changed)
cfe/branches/release_40/include/clang/Basic/DiagnosticSemaKinds.td
cfe/branches/release_40/test/Sema/diagnose_if.c

Propchange: cfe/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  1 11:10:26 2017
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291964,292032,292052,292183,292194,292247,292265,292497,292555,292558-292559,292561,292590,292800,292847,292874,292991,293134,293596,293678
+/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291963-291964,292032,292052,292183,292194,292247,292265,292497,292555,292558-292559,292561,292590,292800,292847,292874,292991,293134,293596,293678
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_40/include/clang/Basic/DiagnosticSemaKinds.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/include/clang/Basic/DiagnosticSemaKinds.td?rev=293783&r1=293782&r2=293783&view=diff
==
--- cfe/branches/release_40/include/clang/Basic/DiagnosticSemaKinds.td 
(original)
+++ cfe/branches/release_40/include/clang/Basic/DiagnosticSemaKinds.td Wed Feb  
1 11:10:26 2017
@@ -3373,7 +3373,8 @@ def note_ovl_candidate_has_pass_object_s
 "candidate address cannot be taken because parameter %0 has "
 "pass_object_size attribute">;
 def err_diagnose_if_succeeded : Error<"%0">;
-def warn_diagnose_if_succeeded : Warning<"%0">, InGroup;
+def warn_diagnose_if_succeeded : Warning<"%0">, InGroup,
+ShowInSystemHeader;
 def note_ovl_candidate_disabled_by_function_cond_attr : Note<
 "candidate disabled: %0">;
 def note_ovl_candidate_disabled_by_extension : Note<

Modified: cfe/branches/release_40/test/Sema/diagnose_if.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/test/Sema/diagnose_if.c?rev=293783&r1=293782&r2=293783&view=diff
==
--- cfe/branches/release_40/test/Sema/diagnose_if.c (original)
+++ cfe/branches/release_40/test/Sema/diagnose_if.c Wed Feb  1 11:10:26 2017
@@ -150,3 +150,6 @@ void alwaysWarnWithArg(int a) _diagnose_
 void runAlwaysWarnWithArg(int a) {
   alwaysWarnWithArg(a); // expected-warning{{alwaysWarn}}
 }
+
+// Test that diagnose_if warnings generated in system headers are not ignored.
+#include "Inputs/diagnose-if-warn-system-header.h"


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


[llvm-branch-commits] [cfe-branch] r293784 - Merging r293360:

2017-02-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Wed Feb  1 11:13:26 2017
New Revision: 293784

URL: http://llvm.org/viewvc/llvm-project?rev=293784&view=rev
Log:
Merging r293360:

r293360 | gbiv | 2017-01-27 18:19:40 -0800 (Fri, 27 Jan 2017) | 11 lines

Change how we handle diagnose_if attributes.

This patch changes how we handle argument-dependent `diagnose_if`
attributes. In particular, we now check them in the same place that we
check for things like passing NULL to Nonnull args, etc. This is
basically better in every way than how we were handling them before. :)

This fixes PR31638, PR31639, and PR31640.

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


Merging r293369:

r293369 | gbiv | 2017-01-27 20:16:32 -0800 (Fri, 27 Jan 2017) | 7 lines

Attempt to unbreak buildbots.

r293360 broke some ARM bots, because size_t on those targets is
apparently `unsigned int`, not `unsigned long`. `sizeof(whatever)`
should to give us a `size_t`, so we can just use the type of that
instead.



Modified:
cfe/branches/release_40/   (props changed)
cfe/branches/release_40/include/clang/Sema/Overload.h
cfe/branches/release_40/include/clang/Sema/Sema.h
cfe/branches/release_40/lib/Sema/SemaChecking.cpp
cfe/branches/release_40/lib/Sema/SemaExpr.cpp
cfe/branches/release_40/lib/Sema/SemaExprCXX.cpp
cfe/branches/release_40/lib/Sema/SemaLookup.cpp
cfe/branches/release_40/lib/Sema/SemaOverload.cpp
cfe/branches/release_40/test/Sema/diagnose_if.c
cfe/branches/release_40/test/SemaCXX/diagnose_if.cpp

Propchange: cfe/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  1 11:13:26 2017
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291963-291964,292032,292052,292183,292194,292247,292265,292497,292555,292558-292559,292561,292590,292800,292847,292874,292991,293134,293596,293678
+/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291963-291964,292032,292052,292183,292194,292247,292265,292497,292555,292558-292559,292561,292590,292800,292847,292874,292991,293134,293360,293369,293596,293678
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_40/include/clang/Sema/Overload.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/include/clang/Sema/Overload.h?rev=293784&r1=293783&r2=293784&view=diff
==
--- cfe/branches/release_40/include/clang/Sema/Overload.h (original)
+++ cfe/branches/release_40/include/clang/Sema/Overload.h Wed Feb  1 11:13:26 
2017
@@ -675,26 +675,6 @@ namespace clang {
 /// to be used while performing partial ordering of function templates.
 unsigned ExplicitCallArguments;
 
-/// The number of diagnose_if attributes that this overload triggered.
-/// If any of the triggered attributes are errors, this won't count
-/// diagnose_if warnings.
-unsigned NumTriggeredDiagnoseIfs = 0;
-
-/// Basically a TinyPtrVector that doesn't own the 
vector:
-/// If NumTriggeredDiagnoseIfs is 0 or 1, this is a DiagnoseIfAttr *,
-/// otherwise it's a pointer to an array of `NumTriggeredDiagnoseIfs`
-/// DiagnoseIfAttr *s.
-llvm::PointerUnion DiagnoseIfInfo;
-
-/// Gets an ArrayRef for the data at DiagnoseIfInfo. Note that this may 
give
-/// you a pointer into DiagnoseIfInfo.
-ArrayRef getDiagnoseIfInfo() const {
-  auto *Ptr = NumTriggeredDiagnoseIfs <= 1
-  ? DiagnoseIfInfo.getAddrOfPtr1()
-  : DiagnoseIfInfo.get();
-  return {Ptr, NumTriggeredDiagnoseIfs};
-}
-
 union {
   DeductionFailureInfo DeductionFailure;
   
@@ -759,9 +739,8 @@ namespace clang {
 SmallVector Candidates;
 llvm::SmallPtrSet Functions;
 
-// Allocator for ConversionSequenceLists and DiagnoseIfAttr* arrays.
-// We store the first few of each of these inline to avoid allocation for
-// small sets.
+// Allocator for ConversionSequenceLists. We store the first few of these
+// inline to avoid allocation for small sets.
 llvm::BumpPtrAllocator SlabAllocator;
 
 SourceLocation Loc;
@@ -776,6 +755,8 @@ namespace clang {
 /// from the slab allocator.
 /// FIXME: It would probably be nice to have a SmallBumpPtrAllocator
 /// instead.
+/// FIXME: Now that this only allocates ImplicitConversionSequences, do we
+/// want to un-generalize this?
 template 
 T *slabAllocate(unsigned N) {
   // It's simpler if this doesn't need to consider alignment.
@@ -80

[llvm-branch-commits] [llvm-branch] r293796 - Merging r293727:

2017-02-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Wed Feb  1 12:42:29 2017
New Revision: 293796

URL: http://llvm.org/viewvc/llvm-project?rev=293796&view=rev
Log:
Merging r293727:

r293727 | davide | 2017-01-31 17:01:22 -0800 (Tue, 31 Jan 2017) | 3 lines

[IPSCCP] Teach how to not propagate return values of naked functions.

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


Added:
llvm/branches/release_40/test/Transforms/IPConstantProp/naked-return.ll
  - copied unchanged from r293727, 
llvm/trunk/test/Transforms/IPConstantProp/naked-return.ll
Modified:
llvm/branches/release_40/   (props changed)
llvm/branches/release_40/lib/Transforms/Scalar/SCCP.cpp

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  1 12:42:29 2017
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293417,293522,293629,293658
+/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293417,293522,293629,293658,293727

Modified: llvm/branches/release_40/lib/Transforms/Scalar/SCCP.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Transforms/Scalar/SCCP.cpp?rev=293796&r1=293795&r2=293796&view=diff
==
--- llvm/branches/release_40/lib/Transforms/Scalar/SCCP.cpp (original)
+++ llvm/branches/release_40/lib/Transforms/Scalar/SCCP.cpp Wed Feb  1 12:42:29 
2017
@@ -1705,7 +1705,10 @@ static bool runIPSCCP(Module &M, const D
 
 // If this is an exact definition of this function, then we can propagate
 // information about its result into callsites of it.
-if (F.hasExactDefinition())
+// Don't touch naked functions. They may contain asm returning a
+// value we don't see, so we may end up interprocedurally propagating
+// the return value incorrectly.
+if (F.hasExactDefinition() && !F.hasFnAttribute(Attribute::Naked))
   Solver.AddTrackedFunction(&F);
 
 // If this function only has direct calls that we can see, we can track its


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


[llvm-branch-commits] [cfe-branch] r293797 - Merging r293787:

2017-02-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Wed Feb  1 12:45:31 2017
New Revision: 293797

URL: http://llvm.org/viewvc/llvm-project?rev=293797&view=rev
Log:
Merging r293787:

r293787 | arphaman | 2017-02-01 09:37:28 -0800 (Wed, 01 Feb 2017) | 5 lines

[CodeGen][ObjC] Avoid asserting on block pointer types in
isPointerZeroInitializable

rdar://30111891



Added:
cfe/branches/release_40/test/CodeGenObjC/block-ptr-type-crash.m
  - copied unchanged from r293787, 
cfe/trunk/test/CodeGenObjC/block-ptr-type-crash.m
Modified:
cfe/branches/release_40/   (props changed)
cfe/branches/release_40/lib/CodeGen/CodeGenTypes.cpp

Propchange: cfe/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  1 12:45:31 2017
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291963-291964,292032,292052,292183,292194,292247,292265,292497,292555,292558-292559,292561,292590,292800,292847,292874,292991,293134,293360,293369,293596,293678
+/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291963-291964,292032,292052,292183,292194,292247,292265,292497,292555,292558-292559,292561,292590,292800,292847,292874,292991,293134,293360,293369,293596,293678,293787
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_40/lib/CodeGen/CodeGenTypes.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/lib/CodeGen/CodeGenTypes.cpp?rev=293797&r1=293796&r2=293797&view=diff
==
--- cfe/branches/release_40/lib/CodeGen/CodeGenTypes.cpp (original)
+++ cfe/branches/release_40/lib/CodeGen/CodeGenTypes.cpp Wed Feb  1 12:45:31 
2017
@@ -737,7 +737,7 @@ CodeGenTypes::getCGRecordLayout(const Re
 }
 
 bool CodeGenTypes::isPointerZeroInitializable(QualType T) {
-  assert (T->isAnyPointerType() && "Invalid type");
+  assert((T->isAnyPointerType() || T->isBlockPointerType()) && "Invalid type");
   return isZeroInitializable(T);
 }
 


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


[llvm-branch-commits] [llvm-branch] r293804 - Merging r293309:

2017-02-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Wed Feb  1 13:40:39 2017
New Revision: 293804

URL: http://llvm.org/viewvc/llvm-project?rev=293804&view=rev
Log:
Merging r293309:

r293309 | mssimpso | 2017-01-27 09:33:16 -0800 (Fri, 27 Jan 2017) | 20 lines

[ARM/AArch64] Relocate and update InterleavedAccessPass tests (NFC)

The interleaved access pass is an IR-to-IR transformation that runs before code
generation. It matches interleaved memory operations to target-specific
intrinsics (that are later lowered to load and store multiple instructions on
ARM/AArch64). We place tests for similar passes (e.g., GlobalMergePass) under
test/Transforms. This patch moves the InterleavedAccessPass tests out of
test/CodeGen and into target-specific directories under
test/Transforms/InterleavedAccess.

Although the pass is an IR pass, many of the existing tests were llc tests
rather opt tests. For example, the tests would check for ldN/stN instructions
generated by llc rather than the intrinsic calls the pass actually inserts.
Thus, this patch updates all tests to be opt tests that check for the inserted
intrinsics. We already have separate CodeGen tests that ensure we lower the
interleaved access intrinsics to their corresponding ldN/stN instructions. In
addition to migrating the tests to opt, this patch also performs some minor
clean-up (to ensure consistent naming, etc.).

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


Added:
llvm/branches/release_40/test/Transforms/InterleavedAccess/AArch64/
  - copied from r293309, 
llvm/trunk/test/Transforms/InterleavedAccess/AArch64/
llvm/branches/release_40/test/Transforms/InterleavedAccess/ARM/
  - copied from r293309, llvm/trunk/test/Transforms/InterleavedAccess/ARM/
Removed:

llvm/branches/release_40/test/CodeGen/AArch64/aarch64-interleaved-accesses-extract-user.ll

llvm/branches/release_40/test/CodeGen/AArch64/aarch64-interleaved-accesses.ll

llvm/branches/release_40/test/CodeGen/ARM/arm-interleaved-accesses-extract-user.ll
llvm/branches/release_40/test/CodeGen/ARM/arm-interleaved-accesses.ll
Modified:
llvm/branches/release_40/   (props changed)

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  1 13:40:39 2017
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293417,293522,293629,293658,293727
+/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293309,293417,293522,293629,293658,293727

Removed: 
llvm/branches/release_40/test/CodeGen/AArch64/aarch64-interleaved-accesses-extract-user.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/test/CodeGen/AArch64/aarch64-interleaved-accesses-extract-user.ll?rev=293803&view=auto
==
--- 
llvm/branches/release_40/test/CodeGen/AArch64/aarch64-interleaved-accesses-extract-user.ll
 (original)
+++ 
llvm/branches/release_40/test/CodeGen/AArch64/aarch64-interleaved-accesses-extract-user.ll
 (removed)
@@ -1,86 +0,0 @@
-; RUN: opt < %s -mtriple=aarch64 -interleaved-access -S | FileCheck %s
-
-; CHECK-LABEL: @extract_user_basic(
-; CHECK: %ldN = call { <4 x i32>, <4 x i32> } 
@llvm.aarch64.neon.ld2.v4i32.p0v4i32
-; CHECK: %[[R:.+]] = extractvalue { <4 x i32>, <4 x i32> } %ldN, 0
-; CHECK: extractelement <4 x i32> %[[R]], i64 1
-define void @extract_user_basic(<8 x i32>* %A, i1 %C) {
-entry:
-  %L = load <8 x i32>, <8 x i32>* %A, align 8
-  %S = shufflevector <8 x i32> %L, <8 x i32> undef, <4 x i32> 
-  br i1 %C, label %if.then, label %if.merge
-
-if.then:
-  %E = extractelement <8 x i32> %L, i32 2
-  br label %if.merge
-
-if.merge:
-  ret void
-}
-
-; CHECK-LABEL: @extract_user_multi(
-; CHECK: %ldN = call { <4 x i32>, <4 x i32> } 
@llvm.aarch64.neon.ld2.v4i32.p0v4i32
-; CHECK: %[[R:.+]] = extractvalue { <4 x i32>, <4 x i32> } %ldN, 0
-; CHECK: extractelement <4 x i32> %[[R]], i64 0
-; CHECK: extractelement <4 x i32> %[[R]], i64 1
-define void @extract_user_multi(<8 x i32>* %A, i1 %C) {
-entry:
-  %L = load <8 x i32>, <8 x i32>* %A, align 8
-  %S = shufflevector <8 x i32> %L, <8 x i32> undef, <4 x i32> 
-  br i1 %C, label %if.then, label %if.merge
-
-if.then:
-  %E1 = extractelement <8 x i32> %L, i32 0
-  br label %if.merge
-
-if.merge:
-  %E2 = extractelement 

[llvm-branch-commits] [llvm-branch] r293805 - Merging r293673:

2017-02-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Wed Feb  1 13:41:46 2017
New Revision: 293805

URL: http://llvm.org/viewvc/llvm-project?rev=293805&view=rev
Log:
Merging r293673:

r293673 | matze | 2017-01-31 10:37:53 -0800 (Tue, 31 Jan 2017) | 6 lines

InterleaveAccessPass: Avoid constructing invalid shuffle masks

Fix a bug where we would construct shufflevector instructions addressing
invalid elements.

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


Modified:
llvm/branches/release_40/   (props changed)
llvm/branches/release_40/lib/CodeGen/InterleavedAccessPass.cpp

llvm/branches/release_40/test/Transforms/InterleavedAccess/AArch64/interleaved-accesses.ll

llvm/branches/release_40/test/Transforms/InterleavedAccess/ARM/interleaved-accesses.ll

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  1 13:41:46 2017
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293309,293417,293522,293629,293658,293727
+/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293309,293417,293522,293629,293658,293673,293727

Modified: llvm/branches/release_40/lib/CodeGen/InterleavedAccessPass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/CodeGen/InterleavedAccessPass.cpp?rev=293805&r1=293804&r2=293805&view=diff
==
--- llvm/branches/release_40/lib/CodeGen/InterleavedAccessPass.cpp (original)
+++ llvm/branches/release_40/lib/CodeGen/InterleavedAccessPass.cpp Wed Feb  1 
13:41:46 2017
@@ -174,7 +174,7 @@ static bool isDeInterleaveMask(ArrayRef<
 /// I.e. <0, LaneLen, ... , LaneLen*(Factor - 1), 1, LaneLen + 1, ...>
 /// E.g. For a Factor of 2 (LaneLen=4): <0, 4, 1, 5, 2, 6, 3, 7>
 static bool isReInterleaveMask(ArrayRef Mask, unsigned &Factor,
-   unsigned MaxFactor) {
+   unsigned MaxFactor, unsigned OpNumElts) {
   unsigned NumElts = Mask.size();
   if (NumElts < 4)
 return false;
@@ -246,6 +246,9 @@ static bool isReInterleaveMask(ArrayRef<
 
   if (StartMask < 0)
 break;
+  // We must stay within the vectors; This case can happen with undefs.
+  if (StartMask + LaneLen > OpNumElts*2)
+break;
 }
 
 // Found an interleaved mask of current factor.
@@ -406,7 +409,8 @@ bool InterleavedAccess::lowerInterleaved
 
   // Check if the shufflevector is RE-interleave shuffle.
   unsigned Factor;
-  if (!isReInterleaveMask(SVI->getShuffleMask(), Factor, MaxFactor))
+  unsigned OpNumElts = SVI->getOperand(0)->getType()->getVectorNumElements();
+  if (!isReInterleaveMask(SVI->getShuffleMask(), Factor, MaxFactor, OpNumElts))
 return false;
 
   DEBUG(dbgs() << "IA: Found an interleaved store: " << *SI << "\n");

Modified: 
llvm/branches/release_40/test/Transforms/InterleavedAccess/AArch64/interleaved-accesses.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/test/Transforms/InterleavedAccess/AArch64/interleaved-accesses.ll?rev=293805&r1=293804&r2=293805&view=diff
==
--- 
llvm/branches/release_40/test/Transforms/InterleavedAccess/AArch64/interleaved-accesses.ll
 (original)
+++ 
llvm/branches/release_40/test/Transforms/InterleavedAccess/AArch64/interleaved-accesses.ll
 Wed Feb  1 13:41:46 2017
@@ -547,3 +547,21 @@ define void @store_general_mask_factor3_
   store <12 x i32> %interleaved.vec, <12 x i32>* %ptr, align 4
   ret void
 }
+
+@g = external global <4 x float>
+
+; The following does not give a valid interleaved store
+; NEON-LABEL: define void @no_interleave
+; NEON-NOT: call void @llvm.aarch64.neon.st2
+; NEON: shufflevector
+; NEON: store
+; NEON: ret void
+; NO_NEON-LABEL: define void @no_interleave
+; NO_NEON: shufflevector
+; NO_NEON: store
+; NO_NEON: ret void
+define void @no_interleave(<4 x float> %a0) {
+  %v0 = shufflevector <4 x float> %a0, <4 x float> %a0, <4 x i32> 
+  store <4 x float> %v0, <4 x float>* @g, align 16
+  ret void
+}

Modified: 
llvm/branches/release_40/test/Transforms/InterleavedAccess/ARM/interleaved-accesses.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/test/Transforms/InterleavedAccess/ARM/interleaved-accesses.ll?rev=29

[llvm-branch-commits] [llvm-branch] r293807 - Merging r293730:

2017-02-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Wed Feb  1 13:45:51 2017
New Revision: 293807

URL: http://llvm.org/viewvc/llvm-project?rev=293807&view=rev
Log:
Merging r293730:

r293730 | matze | 2017-01-31 17:31:36 -0800 (Tue, 31 Jan 2017) | 3 lines

MCMacho: Allow __thread_ptr section after dwarf sections

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


Added:
llvm/branches/release_40/test/MC/MachO/ARM/no-tls-assert.ll
  - copied unchanged from r293730, 
llvm/trunk/test/MC/MachO/ARM/no-tls-assert.ll
Modified:
llvm/branches/release_40/   (props changed)
llvm/branches/release_40/lib/MC/MCMachOStreamer.cpp

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  1 13:45:51 2017
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293309,293417,293522,293629,293658,293673,293727
+/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293309,293417,293522,293629,293658,293673,293727,293730

Modified: llvm/branches/release_40/lib/MC/MCMachOStreamer.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/MC/MCMachOStreamer.cpp?rev=293807&r1=293806&r2=293807&view=diff
==
--- llvm/branches/release_40/lib/MC/MCMachOStreamer.cpp (original)
+++ llvm/branches/release_40/lib/MC/MCMachOStreamer.cpp Wed Feb  1 13:45:51 2017
@@ -142,7 +142,8 @@ static bool canGoAfterDWARF(const MCSect
   if (SegName == "__TEXT" && SecName == "__eh_frame")
 return true;
 
-  if (SegName == "__DATA" && SecName == "__nl_symbol_ptr")
+  if (SegName == "__DATA" && (SecName == "__nl_symbol_ptr" ||
+  SecName == "__thread_ptr"))
 return true;
 
   return false;


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


[llvm-branch-commits] [llvm-branch] r293819 - Merging r293542:

2017-02-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Wed Feb  1 16:00:37 2017
New Revision: 293819

URL: http://llvm.org/viewvc/llvm-project?rev=293819&view=rev
Log:
Merging r293542:

r293542 | arsenm | 2017-01-30 11:50:17 -0800 (Mon, 30 Jan 2017) | 7 lines

LSR: Don't drop address space when type doesn't match

For targets with different addressing modes in each address space,
if this is dropped querying isLegalAddressingMode later with this
will give a nonsense result, breaking the isLegalUse assertions.

This is a candidate for the 4.0 release branch.


Added:

llvm/branches/release_40/test/Transforms/LoopStrengthReduce/AMDGPU/preserve-addrspace-assert.ll
  - copied unchanged from r293542, 
llvm/trunk/test/Transforms/LoopStrengthReduce/AMDGPU/preserve-addrspace-assert.ll
Modified:
llvm/branches/release_40/   (props changed)
llvm/branches/release_40/lib/Transforms/Scalar/LoopStrengthReduce.cpp

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  1 16:00:37 2017
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293309,293417,293522,293629,293658,293673,293727,293730
+/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293309,293417,293522,293542,293629,293658,293673,293727,293730

Modified: llvm/branches/release_40/lib/Transforms/Scalar/LoopStrengthReduce.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Transforms/Scalar/LoopStrengthReduce.cpp?rev=293819&r1=293818&r2=293819&view=diff
==
--- llvm/branches/release_40/lib/Transforms/Scalar/LoopStrengthReduce.cpp 
(original)
+++ llvm/branches/release_40/lib/Transforms/Scalar/LoopStrengthReduce.cpp Wed 
Feb  1 16:00:37 2017
@@ -158,8 +158,9 @@ struct MemAccessTy {
 
   bool operator!=(MemAccessTy Other) const { return !(*this == Other); }
 
-  static MemAccessTy getUnknown(LLVMContext &Ctx) {
-return MemAccessTy(Type::getVoidTy(Ctx), UnknownAddressSpace);
+  static MemAccessTy getUnknown(LLVMContext &Ctx,
+unsigned AS = UnknownAddressSpace) {
+return MemAccessTy(Type::getVoidTy(Ctx), AS);
   }
 };
 
@@ -2279,8 +2280,10 @@ bool LSRInstance::reconcileNewOffset(LSR
   // TODO: Be less conservative when the type is similar and can use the same
   // addressing modes.
   if (Kind == LSRUse::Address) {
-if (AccessTy != LU.AccessTy)
-  NewAccessTy = MemAccessTy::getUnknown(AccessTy.MemTy->getContext());
+if (AccessTy.MemTy != LU.AccessTy.MemTy) {
+  NewAccessTy = MemAccessTy::getUnknown(AccessTy.MemTy->getContext(),
+AccessTy.AddrSpace);
+}
   }
 
   // Conservatively assume HasBaseReg is true for now.


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