[llvm-branch-commits] [llvm-branch] r277382 - Merging r277114:

2016-08-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Aug  1 15:30:12 2016
New Revision: 277382

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

r277114 | majnemer | 2016-07-28 22:39:21 -0700 (Thu, 28 Jul 2016) | 6 lines

[EarlyCSE] Correctly handle simplified, but live, instructions

Some instructions may have their uses replaced with a symbolic constant.
However, the instruction may still have side effects which percludes it
from being removed from the function.  EarlyCSE treated such an
instruction as if it were removed, resulting in PR28763.


Modified:
llvm/branches/release_39/   (props changed)
llvm/branches/release_39/lib/Transforms/Scalar/EarlyCSE.cpp
llvm/branches/release_39/test/Transforms/EarlyCSE/basic.ll

Propchange: llvm/branches/release_39/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Aug  1 15:30:12 2016
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,275868-275870,275879,275898,275928,275935,275946,275978,275981,276015,276077,276109,276119,276181,276209,276236-276237,276358,276364,276368,276389,276435,276438,276479,276510,276740,276956,276980,277135
+/llvm/trunk:155241,275868-275870,275879,275898,275928,275935,275946,275978,275981,276015,276077,276109,276119,276181,276209,276236-276237,276358,276364,276368,276389,276435,276438,276479,276510,276740,276956,276980,277114,277135

Modified: llvm/branches/release_39/lib/Transforms/Scalar/EarlyCSE.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_39/lib/Transforms/Scalar/EarlyCSE.cpp?rev=277382&r1=277381&r2=277382&view=diff
==
--- llvm/branches/release_39/lib/Transforms/Scalar/EarlyCSE.cpp (original)
+++ llvm/branches/release_39/lib/Transforms/Scalar/EarlyCSE.cpp Mon Aug  1 
15:30:12 2016
@@ -582,6 +582,7 @@ bool EarlyCSE::processNode(DomTreeNode *
 // its simpler value.
 if (Value *V = SimplifyInstruction(Inst, DL, &TLI, &DT, &AC)) {
   DEBUG(dbgs() << "EarlyCSE Simplify: " << *Inst << "  to: " << *V << 
'\n');
+  bool Killed = false;
   if (!Inst->use_empty()) {
 Inst->replaceAllUsesWith(V);
 Changed = true;
@@ -589,11 +590,12 @@ bool EarlyCSE::processNode(DomTreeNode *
   if (isInstructionTriviallyDead(Inst, &TLI)) {
 Inst->eraseFromParent();
 Changed = true;
+Killed = true;
   }
-  if (Changed) {
+  if (Changed)
 ++NumSimplify;
+  if (Killed)
 continue;
-  }
 }
 
 // If this is a simple instruction that we can value number, process it.

Modified: llvm/branches/release_39/test/Transforms/EarlyCSE/basic.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_39/test/Transforms/EarlyCSE/basic.ll?rev=277382&r1=277381&r2=277382&view=diff
==
--- llvm/branches/release_39/test/Transforms/EarlyCSE/basic.ll (original)
+++ llvm/branches/release_39/test/Transforms/EarlyCSE/basic.ll Mon Aug  1 
15:30:12 2016
@@ -276,3 +276,17 @@ define void @dse_neg2(i32 *%P) {
   ret void
 }
 
+@c = external global i32, align 4
+declare i32 @reads_c(i32 returned)
+define void @pr28763() {
+entry:
+; CHECK-LABEL: @pr28763(
+; CHECK: store i32 0, i32* @c, align 4
+; CHECK: call i32 @reads_c(i32 0)
+; CHECK: store i32 2, i32* @c, align 4
+  %load = load i32, i32* @c, align 4
+  store i32 0, i32* @c, align 4
+  %call = call i32 @reads_c(i32 0)
+  store i32 2, i32* @c, align 4
+  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] r277384 - Merging r277221:

2016-08-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Aug  1 15:33:18 2016
New Revision: 277384

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

r277221 | echristo | 2016-07-29 15:11:11 -0700 (Fri, 29 Jul 2016) | 3 lines

Remove unused variable.

Fixes PR28761.


Modified:
cfe/branches/release_39/   (props changed)
cfe/branches/release_39/lib/Headers/avx512fintrin.h

Propchange: cfe/branches/release_39/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Aug  1 15:33:18 2016
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276979,276983,277138,277141
+/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276979,276983,277138,277141,277221
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_39/lib/Headers/avx512fintrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Headers/avx512fintrin.h?rev=277384&r1=277383&r2=277384&view=diff
==
--- cfe/branches/release_39/lib/Headers/avx512fintrin.h (original)
+++ cfe/branches/release_39/lib/Headers/avx512fintrin.h Mon Aug  1 15:33:18 2016
@@ -7484,7 +7484,6 @@ _mm512_mask_cvtsepi64_storeu_epi8 (void
 static __inline__ __m256i __DEFAULT_FN_ATTRS
 _mm512_cvtsepi64_epi32 (__m512i __A)
 {
-  __v8si __O;
   return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
(__v8si) _mm256_undefined_si256 (),
(__mmask8) -1);


___
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] [clang-tools-extra-branch] r277385 - Merging r277097:

2016-08-01 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Aug  1 15:35:50 2016
New Revision: 277385

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

r277097 | prazek | 2016-07-28 19:10:23 -0700 (Thu, 28 Jul 2016) | 5 lines

[clang-tidy] Fixes to modernize-use-emplace

Not everything is valid, but it should works for 99.8% cases

https://reviews.llvm.org/D22208


Modified:
clang-tools-extra/branches/release_39/   (props changed)

clang-tools-extra/branches/release_39/clang-tidy/modernize/UseEmplaceCheck.cpp
clang-tools-extra/branches/release_39/clang-tidy/modernize/UseEmplaceCheck.h
clang-tools-extra/branches/release_39/clang-tidy/utils/Matchers.h

clang-tools-extra/branches/release_39/docs/clang-tidy/checks/modernize-use-emplace.rst

clang-tools-extra/branches/release_39/test/clang-tidy/modernize-use-emplace.cpp

Propchange: clang-tools-extra/branches/release_39/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Aug  1 15:35:50 2016
@@ -1 +1 @@
-/clang-tools-extra/trunk:275943
+/clang-tools-extra/trunk:275943,277097

Modified: 
clang-tools-extra/branches/release_39/clang-tidy/modernize/UseEmplaceCheck.cpp
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/branches/release_39/clang-tidy/modernize/UseEmplaceCheck.cpp?rev=277385&r1=277384&r2=277385&view=diff
==
--- 
clang-tools-extra/branches/release_39/clang-tidy/modernize/UseEmplaceCheck.cpp 
(original)
+++ 
clang-tools-extra/branches/release_39/clang-tidy/modernize/UseEmplaceCheck.cpp 
Mon Aug  1 15:35:50 2016
@@ -8,14 +8,25 @@
 
//===--===//
 
 #include "UseEmplaceCheck.h"
-#include "../utils/Matchers.h"
-
+#include "../utils/OptionsUtils.h"
 using namespace clang::ast_matchers;
 
 namespace clang {
 namespace tidy {
 namespace modernize {
 
+static const auto DefaultContainersWithPushBack =
+"::std::vector; ::std::list; ::std::deque";
+static const auto DefaultSmartPointers =
+"::std::shared_ptr; ::std::unique_ptr; ::std::auto_ptr; ::std::weak_ptr";
+
+UseEmplaceCheck::UseEmplaceCheck(StringRef Name, ClangTidyContext *Context)
+: ClangTidyCheck(Name, Context),
+  ContainersWithPushBack(utils::options::parseStringList(Options.get(
+  "ContainersWithPushBack", DefaultContainersWithPushBack))),
+  SmartPointers(utils::options::parseStringList(
+  Options.get("SmartPointers", DefaultSmartPointers))) {}
+
 void UseEmplaceCheck::registerMatchers(MatchFinder *Finder) {
   if (!getLangOpts().CPlusPlus11)
 return;
@@ -31,40 +42,51 @@ void UseEmplaceCheck::registerMatchers(M
   // + match for make_pair calls.
   auto callPushBack = cxxMemberCallExpr(
   hasDeclaration(functionDecl(hasName("push_back"))),
-  on(hasType(cxxRecordDecl(hasAnyName("std::vector", "llvm::SmallVector",
-  "std::list", "std::deque");
+  on(hasType(cxxRecordDecl(hasAnyName(SmallVector(
+  ContainersWithPushBack.begin(), ContainersWithPushBack.end()));
 
   // We can't replace push_backs of smart pointer because
   // if emplacement fails (f.e. bad_alloc in vector) we will have leak of
   // passed pointer because smart pointer won't be constructed
   // (and destructed) as in push_back case.
-  auto isCtorOfSmartPtr = hasDeclaration(cxxConstructorDecl(
-  ofClass(hasAnyName("std::shared_ptr", "std::unique_ptr", "std::auto_ptr",
- "std::weak_ptr";
+  auto isCtorOfSmartPtr = hasDeclaration(cxxConstructorDecl(ofClass(hasAnyName(
+  SmallVector(SmartPointers.begin(), 
SmartPointers.end());
 
   // Bitfields binds only to consts and emplace_back take it by universal ref.
-  auto bitFieldAsArgument = hasAnyArgument(ignoringParenImpCasts(
-  memberExpr(hasDeclaration(fieldDecl(matchers::isBitfield());
+  auto bitFieldAsArgument = hasAnyArgument(
+  ignoringImplicit(memberExpr(hasDeclaration(fieldDecl(isBitField());
+
+  // Initializer list can't be passed to universal reference.
+  auto initializerListAsArgument = hasAnyArgument(
+  ignoringImplicit(cxxConstructExpr(isListInitialization(;
 
   // We could have leak of resource.
-  auto newExprAsArgument = hasAnyArgument(ignoringParenImpCasts(cxxNewExpr()));
+  auto newExprAsArgument = hasAnyArgument(ignoringImplicit(cxxNewExpr()));
+  // We would call another constructor.
   auto constructingDerived =
   hasParent(implicitCastExpr(hasCastKind(CastKind::CK_DerivedToBase)));
 
-  auto hasInitList = has(ignoringParenImpCasts(initListExpr()));
+  // emplace_back can't access private constructor.
+  auto isPrivateCtor = hasDeclaration(cxxConstructorDecl(isPrivate()));
+
+  auto hasInit

[llvm-branch-commits] [compiler-rt-branch] r277423 - Merging r277297:

2016-08-01 Thread Dimitry Andric via llvm-branch-commits
Author: dim
Date: Tue Aug  2 01:42:41 2016
New Revision: 277423

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


r277297 | dim | 2016-07-31 21:27:46 +0200 (Sun, 31 Jul 2016) | 21 lines

XFAIL one sanitizer symbolizer test for FreeBSD

Summary:
Due to a QoI issuse in FreeBSD's libcxxrt-based demangler, one sanitizer
symbolizer test consistently appears to fail:

Value of: DemangleSwiftAndCXX("foo")
  Actual: "float"
Expected: "foo"

This is because libcxxrt's __cxa_demangle() incorrectly demangles the "foo"
identifier to "float".  It should return an error instead.

For now, XFAIL this particular test for FreeBSD, until we can fix libcxxrt
properly (which might take some time to coordinate with upstream).

Reviewers: rnk, zaks.anna, emaste

Subscribers: emaste, llvm-commits, kubabrecka

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


Modified:
compiler-rt/branches/release_39/   (props changed)

compiler-rt/branches/release_39/lib/sanitizer_common/tests/sanitizer_symbolizer_test.cc

Propchange: compiler-rt/branches/release_39/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug  2 01:42:41 2016
@@ -1 +1 @@
-/compiler-rt/trunk:275946,275948
+/compiler-rt/trunk:275946,275948,277297

Modified: 
compiler-rt/branches/release_39/lib/sanitizer_common/tests/sanitizer_symbolizer_test.cc
URL: 
http://llvm.org/viewvc/llvm-project/compiler-rt/branches/release_39/lib/sanitizer_common/tests/sanitizer_symbolizer_test.cc?rev=277423&r1=277422&r2=277423&view=diff
==
--- 
compiler-rt/branches/release_39/lib/sanitizer_common/tests/sanitizer_symbolizer_test.cc
 (original)
+++ 
compiler-rt/branches/release_39/lib/sanitizer_common/tests/sanitizer_symbolizer_test.cc
 Tue Aug  2 01:42:41 2016
@@ -62,7 +62,9 @@ TEST(Symbolizer, DemangleSwiftAndCXX) {
   EXPECT_STREQ("_TtSd", DemangleSwiftAndCXX("_TtSd"));
   // Check that the rest demangles properly.
   EXPECT_STREQ("f1(char*, int)", DemangleSwiftAndCXX("_Z2f1Pci"));
+#if !SANITIZER_FREEBSD // QoI issue with libcxxrt on FreeBSD
   EXPECT_STREQ("foo", DemangleSwiftAndCXX("foo"));
+#endif
   EXPECT_STREQ("", DemangleSwiftAndCXX(""));
 }
 #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] [compiler-rt-branch] r277424 - Merging r277300:

2016-08-01 Thread Dimitry Andric via llvm-branch-commits
Author: dim
Date: Tue Aug  2 01:44:37 2016
New Revision: 277424

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


r277300 | dim | 2016-07-31 22:16:59 +0200 (Sun, 31 Jul 2016) | 5 lines

Fix ASan alloca_constant_size.cc test on FreeBSD.

On FreeBSD  does not exist: alloca(3) is defined in 
instead.



Modified:
compiler-rt/branches/release_39/   (props changed)
compiler-rt/branches/release_39/test/asan/TestCases/alloca_constant_size.cc

Propchange: compiler-rt/branches/release_39/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug  2 01:44:37 2016
@@ -1 +1 @@
-/compiler-rt/trunk:275946,275948,277297
+/compiler-rt/trunk:275946,275948,277297,277300

Modified: 
compiler-rt/branches/release_39/test/asan/TestCases/alloca_constant_size.cc
URL: 
http://llvm.org/viewvc/llvm-project/compiler-rt/branches/release_39/test/asan/TestCases/alloca_constant_size.cc?rev=277424&r1=277423&r2=277424&view=diff
==
--- compiler-rt/branches/release_39/test/asan/TestCases/alloca_constant_size.cc 
(original)
+++ compiler-rt/branches/release_39/test/asan/TestCases/alloca_constant_size.cc 
Tue Aug  2 01:44:37 2016
@@ -10,6 +10,8 @@
 // MSVC provides _alloca instead of alloca.
 #if defined(_MSC_VER) && !defined(alloca)
 # define alloca _alloca
+#elif defined(__FreeBSD__)
+#include 
 #else
 #include 
 #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] [cfe-branch] r277425 - Merging r277307:

2016-08-01 Thread Dimitry Andric via llvm-branch-commits
Author: dim
Date: Tue Aug  2 01:46:09 2016
New Revision: 277425

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


r277307 | dim | 2016-07-31 22:23:23 +0200 (Sun, 31 Jul 2016) | 23 lines

Add more gcc compatibility names to clang's cpuid.h

Summary:
Some cpuid bit defines are named slightly different from how gcc's
cpuid.h calls them.

Define a few more compatibility names to appease software built for gcc:

* `bit_PCLMUL`  alias of `bit_PCLMULQDQ`
* `bit_SSE4_1`  alias of `bit_SSE41`
* `bit_SSE4_2`  alias of `bit_SSE42`
* `bit_AES` alias of `bit_AESNI`
* `bit_CMPXCHG8B`   alias of `bit_CX8`

While here, add the misssing 29th bit, `bit_F16C` (which is how gcc
calls this bit).

Reviewers: joerg, rsmith

Subscribers: bruno, cfe-commits

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



Modified:
cfe/branches/release_39/   (props changed)
cfe/branches/release_39/lib/Headers/cpuid.h

Propchange: cfe/branches/release_39/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug  2 01:46:09 2016
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276979,276983,277138,277141,277221
+/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276979,276983,277138,277141,277221,277307
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_39/lib/Headers/cpuid.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Headers/cpuid.h?rev=277425&r1=277424&r2=277425&view=diff
==
--- cfe/branches/release_39/lib/Headers/cpuid.h (original)
+++ cfe/branches/release_39/lib/Headers/cpuid.h Tue Aug  2 01:46:09 2016
@@ -82,6 +82,7 @@
 /* Features in %ecx for level 1 */
 #define bit_SSE30x0001
 #define bit_PCLMULQDQ   0x0002
+#define bit_PCLMUL  bit_PCLMULQDQ   /* for gcc compat */
 #define bit_DTES64  0x0004
 #define bit_MONITOR 0x0008
 #define bit_DSCPL   0x0010
@@ -98,15 +99,19 @@
 #define bit_PCID0x0002
 #define bit_DCA 0x0004
 #define bit_SSE41   0x0008
+#define bit_SSE4_1  bit_SSE41   /* for gcc compat */
 #define bit_SSE42   0x0010
+#define bit_SSE4_2  bit_SSE42   /* for gcc compat */
 #define bit_x2APIC  0x0020
 #define bit_MOVBE   0x0040
 #define bit_POPCNT  0x0080
 #define bit_TSCDeadline 0x0100
 #define bit_AESNI   0x0200
+#define bit_AES bit_AESNI   /* for gcc compat */
 #define bit_XSAVE   0x0400
 #define bit_OSXSAVE 0x0800
 #define bit_AVX 0x1000
+#define bit_F16C0x2000
 #define bit_RDRND   0x4000
 
 /* Features in %edx for level 1 */
@@ -119,6 +124,7 @@
 #define bit_PAE 0x0040
 #define bit_MCE 0x0080
 #define bit_CX8 0x0100
+#define bit_CMPXCHG8B   bit_CX8 /* for gcc compat */
 #define bit_APIC0x0200
 #define bit_SEP 0x0800
 #define bit_MTRR0x1000
@@ -133,7 +139,7 @@
 #define bit_ACPI0x0040
 #define bit_MMX 0x0080
 #define bit_FXSR0x0100
-#define bit_FXSAVE  bit_FXSR/* for gcc compat */
+#define bit_FXSAVE  bit_FXSR/* for gcc compat */
 #define bit_SSE 0x0200
 #define bit_SSE20x0400
 #define bit_SS  0x0800


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