Date: Fri, 9 Oct 2015 21:00:04 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r289081 - head/contrib/llvm/patches Message-ID: <201510092100.t99L04WJ003768@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Fri Oct 9 21:00:04 2015 New Revision: 289081 URL: https://svnweb.freebsd.org/changeset/base/289081 Log: Add llvm patch corresponding to r289072. Added: head/contrib/llvm/patches/patch-07-undo-llvm-r240144-iostream-sigbus.diff Added: head/contrib/llvm/patches/patch-07-undo-llvm-r240144-iostream-sigbus.diff ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/llvm/patches/patch-07-undo-llvm-r240144-iostream-sigbus.diff Fri Oct 9 21:00:04 2015 (r289081) @@ -0,0 +1,50 @@ +Temporarily revert upstream llvm trunk r240144 (by Michael Zolotukhin): + + [SLP] Vectorize for all-constant entries. + +This should fix libc++'s iostream initialization SIGBUSing whenever the +global cout symbol is not aligned to 16 bytes. + +Introduced here: http://svnweb.freebsd.org/changeset/base/289072 + +Index: lib/Transforms/Vectorize/SLPVectorizer.cpp +=================================================================== +--- lib/Transforms/Vectorize/SLPVectorizer.cpp ++++ lib/Transforms/Vectorize/SLPVectorizer.cpp +@@ -1642,10 +1642,8 @@ bool BoUpSLP::isFullyVectorizableTinyTree() { + if (VectorizableTree.size() != 2) + return false; + +- // Handle splat and all-constants stores. +- if (!VectorizableTree[0].NeedToGather && +- (allConstant(VectorizableTree[1].Scalars) || +- isSplat(VectorizableTree[1].Scalars))) ++ // Handle splat stores. ++ if (!VectorizableTree[0].NeedToGather && isSplat(VectorizableTree[1].Scalars)) + return true; + + // Gathering cost would be too much for tiny trees. +Index: test/Transforms/SLPVectorizer/X86/tiny-tree.ll +=================================================================== +--- test/Transforms/SLPVectorizer/X86/tiny-tree.ll ++++ test/Transforms/SLPVectorizer/X86/tiny-tree.ll +@@ -153,19 +153,3 @@ define void @store_splat(float*, float) { + store float %1, float* %6, align 4 + ret void + } +- +- +-; CHECK-LABEL: store_const +-; CHECK: store <4 x i32> +-define void @store_const(i32* %a) { +-entry: +- %ptr0 = getelementptr inbounds i32, i32* %a, i64 0 +- store i32 10, i32* %ptr0, align 4 +- %ptr1 = getelementptr inbounds i32, i32* %a, i64 1 +- store i32 30, i32* %ptr1, align 4 +- %ptr2 = getelementptr inbounds i32, i32* %a, i64 2 +- store i32 20, i32* %ptr2, align 4 +- %ptr3 = getelementptr inbounds i32, i32* %a, i64 3 +- store i32 40, i32* %ptr3, align 4 +- ret void +-}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201510092100.t99L04WJ003768>