[llvm-branch-commits] [llvm-branch] r293780 - Merging r293230:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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