[llvm-branch-commits] [llvm-branch] r292802 - Merging r291858 and r291859:

2017-01-23 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Jan 23 11:07:52 2017
New Revision: 292802

URL: http://llvm.org/viewvc/llvm-project?rev=292802&view=rev
Log:
Merging r291858 and r291859:

r291858 | eugenis | 2017-01-12 15:03:03 -0800 (Thu, 12 Jan 2017) | 1 line

[asan] Refactor instrumentation of globals.



r291859 | eugenis | 2017-01-12 15:26:20 -0800 (Thu, 12 Jan 2017) | 6 lines

[asan] Don't overalign global metadata.

Other than on COFF with incremental linking, global metadata should
not need any extra alignment.

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


Modified:
llvm/branches/release_40/   (props changed)
llvm/branches/release_40/lib/Transforms/Instrumentation/AddressSanitizer.cpp

llvm/branches/release_40/test/Instrumentation/AddressSanitizer/global_metadata_darwin.ll

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 23 11:07:52 2017
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,291863,291875,291966,291968,291979,292133,292242,292254-292255,292280,292641,292667,292711
+/llvm/trunk:155241,291858-291859,291863,291875,291966,291968,291979,292133,292242,292254-292255,292280,292641,292667,292711

Modified: 
llvm/branches/release_40/lib/Transforms/Instrumentation/AddressSanitizer.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Transforms/Instrumentation/AddressSanitizer.cpp?rev=292802&r1=292801&r2=292802&view=diff
==
--- 
llvm/branches/release_40/lib/Transforms/Instrumentation/AddressSanitizer.cpp 
(original)
+++ 
llvm/branches/release_40/lib/Transforms/Instrumentation/AddressSanitizer.cpp 
Mon Jan 23 11:07:52 2017
@@ -600,6 +600,22 @@ private:
   void initializeCallbacks(Module &M);
 
   bool InstrumentGlobals(IRBuilder<> &IRB, Module &M);
+  void InstrumentGlobalsCOFF(IRBuilder<> &IRB, Module &M,
+ ArrayRef ExtendedGlobals,
+ ArrayRef MetadataInitializers);
+  void InstrumentGlobalsMachO(IRBuilder<> &IRB, Module &M,
+  ArrayRef ExtendedGlobals,
+  ArrayRef MetadataInitializers);
+  void
+  InstrumentGlobalsWithMetadataArray(IRBuilder<> &IRB, Module &M,
+ ArrayRef 
ExtendedGlobals,
+ ArrayRef 
MetadataInitializers);
+
+  GlobalVariable *CreateMetadataGlobal(Module &M, Constant *Initializer,
+   StringRef OriginalName);
+  void SetComdatForGlobalMetadata(GlobalVariable *G, GlobalVariable *Metadata);
+  IRBuilder<> CreateAsanModuleDtor(Module &M);
+
   bool ShouldInstrumentGlobal(GlobalVariable *G);
   bool ShouldUseMachOGlobalsSection() const;
   StringRef getGlobalMetadataSection() const;
@@ -1553,17 +1569,173 @@ void AddressSanitizerModule::initializeC
 
   // Declare the functions that find globals in a shared object and then invoke
   // the (un)register function on them.
-  AsanRegisterImageGlobals = checkSanitizerInterfaceFunction(
-  M.getOrInsertFunction(kAsanRegisterImageGlobalsName,
-  IRB.getVoidTy(), IntptrTy, nullptr));
+  AsanRegisterImageGlobals =
+  checkSanitizerInterfaceFunction(M.getOrInsertFunction(
+  kAsanRegisterImageGlobalsName, IRB.getVoidTy(), IntptrTy, nullptr));
   AsanRegisterImageGlobals->setLinkage(Function::ExternalLinkage);
 
-  AsanUnregisterImageGlobals = checkSanitizerInterfaceFunction(
-  M.getOrInsertFunction(kAsanUnregisterImageGlobalsName,
-  IRB.getVoidTy(), IntptrTy, nullptr));
+  AsanUnregisterImageGlobals =
+  checkSanitizerInterfaceFunction(M.getOrInsertFunction(
+  kAsanUnregisterImageGlobalsName, IRB.getVoidTy(), IntptrTy, 
nullptr));
   AsanUnregisterImageGlobals->setLinkage(Function::ExternalLinkage);
 }
 
+// Put the metadata and the instrumented global in the same group. This ensures
+// that the metadata is discarded if the instrumented global is discarded.
+void AddressSanitizerModule::SetComdatForGlobalMetadata(
+GlobalVariable *G, GlobalVariable *Metadata) {
+  Module &M = *G->getParent();
+  Comdat *C = G->getComdat();
+  if (!C) {
+if (!G->hasName()) {
+  // If G is unnamed, it must be internal. Give it an artificial name
+  // so we can put it in a comdat.
+  assert(G->hasLocalLinkage());
+  G->setName(Twine(kAsanGenPrefix) + "_anon_global");
+}
+C = M.getOrInsertComdat(G->getName());
+// Make this IMAGE_COMDAT_SELECT_NODUPLICATES on COFF.
+if (TargetTriple.isOSBi

[llvm-branch-commits] [cfe-branch] r292807 - Merging r292555, r292558 and r292559:

2017-01-23 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Jan 23 11:55:50 2017
New Revision: 292807

URL: http://llvm.org/viewvc/llvm-project?rev=292807&view=rev
Log:
Merging r292555, r292558 and r292559:

r292555 | rsmith | 2017-01-19 16:45:35 -0800 (Thu, 19 Jan 2017) | 6 lines

P0426: Make the library implementation of constexpr char_traits a little easier
by providing a memchr builtin that returns char* instead of void*.

Also add a __has_feature flag to indicate the presence of constexpr forms of
the relevant  functions.




r292558 | rsmith | 2017-01-19 16:57:59 -0800 (Thu, 19 Jan 2017) | 2 lines

Add documentation for constexpr string builtin support.




r292559 | rsmith | 2017-01-19 17:08:15 -0800 (Thu, 19 Jan 2017) | 2 lines

Fix documentation typo.



Modified:
cfe/branches/release_40/   (props changed)
cfe/branches/release_40/docs/LanguageExtensions.rst
cfe/branches/release_40/include/clang/Basic/Builtins.def
cfe/branches/release_40/lib/AST/ExprConstant.cpp
cfe/branches/release_40/lib/CodeGen/CGBuiltin.cpp
cfe/branches/release_40/lib/Lex/PPMacroExpansion.cpp
cfe/branches/release_40/test/CodeGenCXX/builtins.cpp
cfe/branches/release_40/test/Lexer/has_feature_cxx0x.cpp
cfe/branches/release_40/test/SemaCXX/constexpr-string.cpp

Propchange: cfe/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 23 11:55:50 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,292247,292265
+/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291964,292032,292052,292183,292247,292265,292555,292558-292559
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_40/docs/LanguageExtensions.rst
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/docs/LanguageExtensions.rst?rev=292807&r1=292806&r2=292807&view=diff
==
--- cfe/branches/release_40/docs/LanguageExtensions.rst (original)
+++ cfe/branches/release_40/docs/LanguageExtensions.rst Mon Jan 23 11:55:50 2017
@@ -1776,6 +1776,46 @@ numeric primitives such as frexp. See `L
 `_ for
 more information on the semantics.
 
+String builtins
+---
+
+Clang provides constant expression evaluation support for builtins forms of
+the following functions from the C standard library  header:
+
+* ``memchr``
+* ``memcmp``
+* ``strchr``
+* ``strcmp``
+* ``strlen``
+* ``strncmp``
+* ``wcschr``
+* ``wcscmp``
+* ``wcslen``
+* ``wcsncmp``
+* ``wmemchr``
+* ``wmemcmp``
+
+In each case, the builtin form has the name of the C library function prefixed
+by ``__builtin_``. Example:
+
+.. code-block:: c
+
+  void *p = __builtin_memchr("foobar", 'b', 5);
+
+In addition to the above, one further builtin is provided:
+
+.. code-block:: c
+
+  char *__builtin_char_memchr(const char *haystack, int needle, size_t size);
+
+``__builtin_char_memchr(a, b, c)`` is identical to
+``(char*)__builtin_memchr(a, b, c)`` except that its use is permitted within
+constant expressions in C++11 onwards (where a cast from ``void*`` to ``char*``
+is disallowed in general).
+
+Support for constant expression evaluation for the above builtins be detected
+with ``__has_feature(cxx_constexpr_string_builtins)``.
+
 .. _langext-__c11_atomic:
 
 __c11_atomic builtins

Modified: cfe/branches/release_40/include/clang/Basic/Builtins.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/include/clang/Basic/Builtins.def?rev=292807&r1=292806&r2=292807&view=diff
==
--- cfe/branches/release_40/include/clang/Basic/Builtins.def (original)
+++ cfe/branches/release_40/include/clang/Basic/Builtins.def Mon Jan 23 
11:55:50 2017
@@ -1339,6 +1339,7 @@ BUILTIN(__builtin_smulll_overflow, "bSLL
 BUILTIN(__builtin_addressof, "v*v&", "nct")
 BUILTIN(__builtin_operator_new, "v*z", "c")
 BUILTIN(__builtin_operator_delete, "vv*", "n")
+BUILTIN(__builtin_char_memchr, "c*cC*iz", "n")
 
 // Safestack builtins
 BUILTIN(__builtin___get_unsafe_stack_start, "v*", "Fn")

Modified: cfe/branches/release_40/lib/AST/ExprConstant.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/lib/AST/ExprConstant.cpp?rev=292807&r1=292806&r2=292807&view=diff
===

[llvm-branch-commits] [cfe-branch] r292808 - Merging r292497:

2017-01-23 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Jan 23 11:59:45 2017
New Revision: 292808

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

r292497 | arphaman | 2017-01-19 09:17:57 -0800 (Thu, 19 Jan 2017) | 6 lines

[Sema] Fix PR28181 by avoiding calling BuildOverloadedBinOp in C mode

rdar://28532840

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



Added:
cfe/branches/release_40/test/Sema/PR28181.c
  - copied unchanged from r292497, cfe/trunk/test/Sema/PR28181.c
Modified:
cfe/branches/release_40/   (props changed)
cfe/branches/release_40/lib/Sema/SemaExpr.cpp

Propchange: cfe/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 23 11:59:45 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,292247,292265,292555,292558-292559
+/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291964,292032,292052,292183,292247,292265,292497,292555,292558-292559
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_40/lib/Sema/SemaExpr.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/lib/Sema/SemaExpr.cpp?rev=292808&r1=292807&r2=292808&view=diff
==
--- cfe/branches/release_40/lib/Sema/SemaExpr.cpp (original)
+++ cfe/branches/release_40/lib/Sema/SemaExpr.cpp Mon Jan 23 11:59:45 2017
@@ -11496,7 +11496,7 @@ ExprResult Sema::BuildBinOp(Scope *S, So
   return checkPseudoObjectAssignment(S, OpLoc, Opc, LHSExpr, RHSExpr);
 
 // Don't resolve overloads if the other type is overloadable.
-if (pty->getKind() == BuiltinType::Overload) {
+if (getLangOpts().CPlusPlus && pty->getKind() == BuiltinType::Overload) {
   // We can't actually test that if we still have a placeholder,
   // though.  Fortunately, none of the exceptions we see in that
   // code below are valid when the LHS is an overload set.  Note
@@ -11521,17 +11521,16 @@ ExprResult Sema::BuildBinOp(Scope *S, So
 // An overload in the RHS can potentially be resolved by the type
 // being assigned to.
 if (Opc == BO_Assign && pty->getKind() == BuiltinType::Overload) {
-  if (LHSExpr->isTypeDependent() || RHSExpr->isTypeDependent())
-return BuildOverloadedBinOp(*this, S, OpLoc, Opc, LHSExpr, RHSExpr);
-
-  if (LHSExpr->getType()->isOverloadableType())
+  if (getLangOpts().CPlusPlus &&
+  (LHSExpr->isTypeDependent() || RHSExpr->isTypeDependent() ||
+   LHSExpr->getType()->isOverloadableType()))
 return BuildOverloadedBinOp(*this, S, OpLoc, Opc, LHSExpr, RHSExpr);
 
   return CreateBuiltinBinOp(OpLoc, Opc, LHSExpr, RHSExpr);
 }
 
 // Don't resolve overloads if the other type is overloadable.
-if (pty->getKind() == BuiltinType::Overload &&
+if (getLangOpts().CPlusPlus && pty->getKind() == BuiltinType::Overload &&
 LHSExpr->getType()->isOverloadableType())
   return BuildOverloadedBinOp(*this, S, OpLoc, Opc, LHSExpr, RHSExpr);
 


___
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] r292810 - Merging r292583:

2017-01-23 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Jan 23 12:08:20 2017
New Revision: 292810

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

r292583 | dannyb | 2017-01-19 22:38:41 -0800 (Thu, 19 Jan 2017) | 4 lines

NewGVN: Fix PR 31682, an overactive assert.
Part of the assert has been left active for further debugging.
The other part has been turned into a stat for tracking for the
moment.


Added:
llvm/branches/release_40/test/Transforms/NewGVN/pr31682.ll
  - copied unchanged from r292583, 
llvm/trunk/test/Transforms/NewGVN/pr31682.ll
Modified:
llvm/branches/release_40/   (props changed)
llvm/branches/release_40/lib/Transforms/Scalar/NewGVN.cpp

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 23 12:08:20 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,291966,291968,291979,292133,292242,292254-292255,292280,292641,292667,292711
+/llvm/trunk:155241,291858-291859,291863,291875,291966,291968,291979,292133,292242,292254-292255,292280,292583,292641,292667,292711

Modified: llvm/branches/release_40/lib/Transforms/Scalar/NewGVN.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Transforms/Scalar/NewGVN.cpp?rev=292810&r1=292809&r2=292810&view=diff
==
--- llvm/branches/release_40/lib/Transforms/Scalar/NewGVN.cpp (original)
+++ llvm/branches/release_40/lib/Transforms/Scalar/NewGVN.cpp Mon Jan 23 
12:08:20 2017
@@ -85,6 +85,8 @@ STATISTIC(NumGVNLeaderChanges, "Number o
 STATISTIC(NumGVNSortedLeaderChanges, "Number of sorted leader changes");
 STATISTIC(NumGVNAvoidedSortedLeaderChanges,
   "Number of avoided sorted leader changes");
+STATISTIC(NumGVNNotMostDominatingLeader,
+  "Number of times a member dominated it's new classes' leader");
 
 
//===--===//
 //GVN Pass
@@ -1073,17 +1075,20 @@ void NewGVN::moveValueToNewCongruenceCla
   if (I == OldClass->NextLeader.first)
 OldClass->NextLeader = {nullptr, ~0U};
 
-  // The new instruction and new class leader may either be siblings in the
-  // dominator tree, or the new class leader should dominate the new member
-  // instruction.  We simply check that the member instruction does not 
properly
-  // dominate the new class leader.
-  assert(
-  !isa(NewClass->RepLeader) || !NewClass->RepLeader ||
-  I == NewClass->RepLeader ||
-  !DT->properlyDominates(
+  // It's possible, though unlikely, for us to discover equivalences such
+  // that the current leader does not dominate the old one.
+  // This statistic tracks how often this happens.
+  // We assert on phi nodes when this happens, currently, for debugging, 
because
+  // we want to make sure we name phi node cycles properly.
+  if (isa(NewClass->RepLeader) && NewClass->RepLeader &&
+  I != NewClass->RepLeader &&
+  DT->properlyDominates(
   I->getParent(),
-  cast(NewClass->RepLeader)->getParent()) &&
-  "New class for instruction should not be dominated by instruction");
+  cast(NewClass->RepLeader)->getParent())) {
+++NumGVNNotMostDominatingLeader;
+assert(!isa(I) &&
+   "New class for instruction should not be dominated by instruction");
+  }
 
   if (NewClass->RepLeader != I) {
 auto DFSNum = InstrDFS.lookup(I);


___
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] r292831 - Merging r292323:

2017-01-23 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Jan 23 15:30:13 2017
New Revision: 292831

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

r292323 | pzheng | 2017-01-17 17:03:29 -0800 (Tue, 17 Jan 2017) | 9 lines

[test-release.sh] Add Polly to the list of projects

Reviewers: zinob, hans, grosser

Reviewed By: hans, grosser

Subscribers: llvm-commits

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


Modified:
llvm/branches/release_40/   (props changed)
llvm/branches/release_40/utils/release/test-release.sh

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 23 15:30:13 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,291966,291968,291979,292133,292242,292254-292255,292280,292583,292625,292641,292667,292711
+/llvm/trunk:155241,291858-291859,291863,291875,291966,291968,291979,292133,292242,292254-292255,292280,292323,292583,292625,292641,292667,292711

Modified: llvm/branches/release_40/utils/release/test-release.sh
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/utils/release/test-release.sh?rev=292831&r1=292830&r2=292831&view=diff
==
--- llvm/branches/release_40/utils/release/test-release.sh (original)
+++ llvm/branches/release_40/utils/release/test-release.sh Mon Jan 23 15:30:13 
2017
@@ -37,6 +37,7 @@ do_libunwind="yes"
 do_test_suite="yes"
 do_openmp="yes"
 do_lldb="no"
+do_polly="no"
 BuildDir="`pwd`"
 ExtraConfigureFlags=""
 ExportBranch=""
@@ -65,6 +66,8 @@ function usage() {
 echo " -no-openmp   Disable check-out & build libomp"
 echo " -lldbEnable check-out & build lldb"
 echo " -no-lldb Disable check-out & build lldb (default)"
+echo " -polly   Enable check-out & build Polly"
+echo " -no-pollyDisable check-out & build Polly (default)"
 }
 
 while [ $# -gt 0 ]; do
@@ -146,6 +149,12 @@ while [ $# -gt 0 ]; do
 -no-lldb )
 do_lldb="no"
 ;;
+-polly )
+do_polly="yes"
+;;
+-no-polly )
+do_polly="no"
+;;
 -help | --help | -h | --h | -\? )
 usage
 exit 0
@@ -219,6 +228,9 @@ fi
 if [ $do_lldb = "yes" ]; then
   projects="$projects lldb"
 fi
+if [ $do_polly = "yes" ]; then
+  projects="$projects polly"
+fi
 
 # Go to the build directory (may be different from CWD)
 BuildDir=$BuildDir/$RC
@@ -285,7 +297,7 @@ function export_sources() {
 cfe)
 projsrc=llvm.src/tools/clang
 ;;
-lldb)
+lldb|polly)
 projsrc=llvm.src/tools/$proj
 ;;
 clang-tools-extra)


___
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] r292832 - Merging r292758:

2017-01-23 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Jan 23 15:33:34 2017
New Revision: 292832

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

r292758 | spatel | 2017-01-22 09:06:12 -0800 (Sun, 22 Jan 2017) | 4 lines

[x86] avoid crashing with illegal vector type (PR31672)

https://llvm.org/bugs/show_bug.cgi?id=31672



Modified:
llvm/branches/release_40/   (props changed)
llvm/branches/release_40/lib/Target/X86/X86ISelLowering.cpp
llvm/branches/release_40/test/CodeGen/X86/sse1.ll

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 23 15:33:34 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,291966,291968,291979,292133,292242,292254-292255,292280,292323,292583,292625,292641,292667,292711
+/llvm/trunk:155241,291858-291859,291863,291875,291966,291968,291979,292133,292242,292254-292255,292280,292323,292583,292625,292641,292667,292711,292758

Modified: llvm/branches/release_40/lib/Target/X86/X86ISelLowering.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Target/X86/X86ISelLowering.cpp?rev=292832&r1=292831&r2=292832&view=diff
==
--- llvm/branches/release_40/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/branches/release_40/lib/Target/X86/X86ISelLowering.cpp Mon Jan 23 
15:33:34 2017
@@ -28788,10 +28788,12 @@ static SDValue combineExtractVectorElt(S
   return SDValue();
 }
 
-/// If a vector select has an operand that is -1 or 0, simplify the select to a
-/// bitwise logic operation.
-static SDValue combineVSelectWithAllOnesOrZeros(SDNode *N, SelectionDAG &DAG,
-const X86Subtarget &Subtarget) 
{
+/// If a vector select has an operand that is -1 or 0, try to simplify the
+/// select to a bitwise logic operation.
+static SDValue
+combineVSelectWithAllOnesOrZeros(SDNode *N, SelectionDAG &DAG,
+ TargetLowering::DAGCombinerInfo &DCI,
+ const X86Subtarget &Subtarget) {
   SDValue Cond = N->getOperand(0);
   SDValue LHS = N->getOperand(1);
   SDValue RHS = N->getOperand(2);
@@ -28853,18 +28855,28 @@ static SDValue combineVSelectWithAllOnes
 }
   }
 
-  if (!TValIsAllOnes && !FValIsAllZeros)
+  // vselect Cond, 111..., 000... -> Cond
+  if (TValIsAllOnes && FValIsAllZeros)
+return DAG.getBitcast(VT, Cond);
+
+  if (!DCI.isBeforeLegalize() && !TLI.isTypeLegal(CondVT))
 return SDValue();
 
-  SDValue Ret;
-  if (TValIsAllOnes && FValIsAllZeros)
-Ret = Cond;
-  else if (TValIsAllOnes)
-Ret = DAG.getNode(ISD::OR, DL, CondVT, Cond, DAG.getBitcast(CondVT, RHS));
-  else if (FValIsAllZeros)
-Ret = DAG.getNode(ISD::AND, DL, CondVT, Cond, DAG.getBitcast(CondVT, LHS));
+  // vselect Cond, 111..., X -> or Cond, X
+  if (TValIsAllOnes) {
+SDValue CastRHS = DAG.getBitcast(CondVT, RHS);
+SDValue Or = DAG.getNode(ISD::OR, DL, CondVT, Cond, CastRHS);
+return DAG.getBitcast(VT, Or);
+  }
 
-  return DAG.getBitcast(VT, Ret);
+  // vselect Cond, X, 000... -> and Cond, X
+  if (FValIsAllZeros) {
+SDValue CastLHS = DAG.getBitcast(CondVT, LHS);
+SDValue And = DAG.getNode(ISD::AND, DL, CondVT, Cond, CastLHS);
+return DAG.getBitcast(VT, And);
+  }
+
+  return SDValue();
 }
 
 static SDValue combineSelectOfTwoConstants(SDNode *N, SelectionDAG &DAG) {
@@ -29353,7 +29365,7 @@ static SDValue combineSelect(SDNode *N,
 }
   }
 
-  if (SDValue V = combineVSelectWithAllOnesOrZeros(N, DAG, Subtarget))
+  if (SDValue V = combineVSelectWithAllOnesOrZeros(N, DAG, DCI, Subtarget))
 return V;
 
   // If this is a *dynamic* select (non-constant condition) and we can match

Modified: llvm/branches/release_40/test/CodeGen/X86/sse1.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/test/CodeGen/X86/sse1.ll?rev=292832&r1=292831&r2=292832&view=diff
==
--- llvm/branches/release_40/test/CodeGen/X86/sse1.ll (original)
+++ llvm/branches/release_40/test/CodeGen/X86/sse1.ll Mon Jan 23 15:33:34 2017
@@ -215,3 +215,136 @@ define <4 x i32> @PR30512(<4 x i32> %x,
   ret <4 x i32> %zext
 }
 
+; Fragile test warning - we need to induce the generation of a vselect 
+; post-legalization to cause the crash seen in:
+; https://llvm.org/bugs/show_bug.cgi?id=31672
+; Is there a way to do that without an unsafe/fast sqrt intrinsic call?
+; Also, although the goal for adding this test is to prove that we
+; don't crash, I have no idea what this code is doing, so I'm keeping
+; the full codegen checks in case there's motivatio

[llvm-branch-commits] [llvm-branch] r292820 - Cherry pick r292625

2017-01-23 Thread Matthias Braun via llvm-branch-commits
Author: matze
Date: Mon Jan 23 13:26:12 2017
New Revision: 292820

URL: http://llvm.org/viewvc/llvm-project?rev=292820&view=rev
Log:
Cherry pick r292625

Added:
llvm/branches/release_40/test/CodeGen/AArch64/ldst-opt.mir
  - copied unchanged from r292625, 
llvm/trunk/test/CodeGen/AArch64/ldst-opt.mir
Removed:
llvm/branches/release_40/test/CodeGen/AArch64/ldst-opt-dbg-limit.mir
Modified:
llvm/branches/release_40/   (props changed)
llvm/branches/release_40/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 23 13:26:12 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,291966,291968,291979,292133,292242,292254-292255,292280,292583,292641,292667,292711
+/llvm/trunk:155241,291858-291859,291863,291875,291966,291968,291979,292133,292242,292254-292255,292280,292583,292625,292641,292667,292711

Modified: 
llvm/branches/release_40/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp?rev=292820&r1=292819&r2=292820&view=diff
==
--- llvm/branches/release_40/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp 
(original)
+++ llvm/branches/release_40/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp 
Mon Jan 23 13:26:12 2017
@@ -687,9 +687,30 @@ AArch64LoadStoreOpt::mergePairedInsns(Ma
   MachineInstrBuilder MIB;
   DebugLoc DL = I->getDebugLoc();
   MachineBasicBlock *MBB = I->getParent();
+  MachineOperand RegOp0 = getLdStRegOp(*RtMI);
+  MachineOperand RegOp1 = getLdStRegOp(*Rt2MI);
+  // Kill flags may become invalid when moving stores for pairing.
+  if (RegOp0.isUse()) {
+if (!MergeForward) {
+  // Clear kill flags on store if moving upwards. Example:
+  //   STRWui %w0, ...
+  //   USE %w1
+  //   STRWui kill %w1  ; need to clear kill flag when moving STRWui 
upwards
+  RegOp0.setIsKill(false);
+  RegOp1.setIsKill(false);
+} else {
+  // Clear kill flags of the first stores register. Example:
+  //   STRWui %w1, ...
+  //   USE kill %w1   ; need to clear kill flag when moving STRWui 
downwards
+  //   STRW %w0
+  unsigned Reg = getLdStRegOp(*I).getReg();
+  for (MachineInstr &MI : make_range(std::next(I), Paired))
+MI.clearRegisterKills(Reg, TRI);
+}
+  }
   MIB = BuildMI(*MBB, InsertionPoint, DL, TII->get(getMatchingPairOpcode(Opc)))
-.addOperand(getLdStRegOp(*RtMI))
-.addOperand(getLdStRegOp(*Rt2MI))
+.addOperand(RegOp0)
+.addOperand(RegOp1)
 .addOperand(BaseRegOp)
 .addImm(OffsetImm)
 .setMemRefs(I->mergeMemRefsWith(*Paired));

Removed: llvm/branches/release_40/test/CodeGen/AArch64/ldst-opt-dbg-limit.mir
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/test/CodeGen/AArch64/ldst-opt-dbg-limit.mir?rev=292819&view=auto
==
--- llvm/branches/release_40/test/CodeGen/AArch64/ldst-opt-dbg-limit.mir 
(original)
+++ llvm/branches/release_40/test/CodeGen/AArch64/ldst-opt-dbg-limit.mir 
(removed)
@@ -1,133 +0,0 @@
-# RUN: llc -run-pass=aarch64-ldst-opt %s -o - 2>&1 | FileCheck %s
 |
-  target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
-  target triple = "aarch64--linux-gnu"
-
-  ; Function Attrs: nounwind
-  define i16 @promote-load-from-store(i32* %dst, i32 %x) #0 {
-store i32 %x, i32* %dst
-%dst16 = bitcast i32* %dst to i16*
-%dst1 = getelementptr inbounds i16, i16* %dst16, i32 1
-%x16 = load i16, i16* %dst1
-ret i16 %x16
-  }
-  
-  ; Function Attrs: nounwind
-  define void @store-pair(i32* %dst, i32 %x, i32 %y) #0 {
-%dst01 = bitcast i32* %dst to i32*
-%dst1 = getelementptr inbounds i32, i32* %dst, i32 1
-store i32 %x, i32* %dst01
-store i32 %x, i32* %dst1
-ret void
-  }
-  
-  attributes #0 = { nounwind }
-
-...

-name:promote-load-from-store
-alignment:   2
-exposesReturnsTwice: false
-tracksRegLiveness: true
-liveins: 
-  - { reg: '%x0' }
-  - { reg: '%w1' }
-frameInfo:   
-  isFrameAddressTaken: false
-  isReturnAddressTaken: false
-  hasStackMap: false
-  hasPatchPoint:   false
-  stackSize:   0
-  offsetAdjustment: 0
-  maxAlignment:0
-  adjustsStack:false
-  hasCalls:false
-  maxCallFrameSize: 0
-  hasOpaqueSPAdjustment: false
-  hasVAStart:  false
-  hasMustTailInVarArgFunc: false
-body: |
-  bb.0 (%ir-block.0):
-liveins: %w1, %x0, %lr
-  
-STRWui killed %w1, %x0, 0 :: (store 4 into %ir.dst)
-CFI_INSTRUCTION 0
-CFI_INSTRUCTION 0
-CFI_IN

[llvm-branch-commits] [clang-tools-extra-branch] r292834 - Merging r291892:

2017-01-23 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Jan 23 16:06:11 2017
New Revision: 292834

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

r291892 | d0k | 2017-01-13 02:14:07 -0800 (Fri, 13 Jan 2017) | 7 lines

Fix the build of the include-fixer plugin for some shared cmake builds and MSVC.

- The include fixer plugin does not directly depend on pthread, but can
pick up pthread references transitively through inlining. Just add
pthreads to the linked libs unconditionally.
- MSVC emits bogus warnings when including  and building without
exceptions. Blacklist the warnings explicitly.


Modified:
clang-tools-extra/branches/release_40/   (props changed)
clang-tools-extra/branches/release_40/include-fixer/SymbolIndexManager.h
clang-tools-extra/branches/release_40/include-fixer/plugin/CMakeLists.txt

Propchange: clang-tools-extra/branches/release_40/
--
svn:mergeinfo = /clang-tools-extra/trunk:291892

Modified: 
clang-tools-extra/branches/release_40/include-fixer/SymbolIndexManager.h
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/branches/release_40/include-fixer/SymbolIndexManager.h?rev=292834&r1=292833&r2=292834&view=diff
==
--- clang-tools-extra/branches/release_40/include-fixer/SymbolIndexManager.h 
(original)
+++ clang-tools-extra/branches/release_40/include-fixer/SymbolIndexManager.h 
Mon Jan 23 16:06:11 2017
@@ -13,8 +13,19 @@
 #include "SymbolIndex.h"
 #include "find-all-symbols/SymbolInfo.h"
 #include "llvm/ADT/StringRef.h"
+
+#ifdef _MSC_VER
+// Disable warnings from ppltasks.h transitively included by .
+#pragma warning(push)
+#pragma warning(disable:4530)
+#endif
+
 #include 
 
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
 namespace clang {
 namespace include_fixer {
 

Modified: 
clang-tools-extra/branches/release_40/include-fixer/plugin/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/branches/release_40/include-fixer/plugin/CMakeLists.txt?rev=292834&r1=292833&r2=292834&view=diff
==
--- clang-tools-extra/branches/release_40/include-fixer/plugin/CMakeLists.txt 
(original)
+++ clang-tools-extra/branches/release_40/include-fixer/plugin/CMakeLists.txt 
Mon Jan 23 16:06:11 2017
@@ -9,4 +9,5 @@ add_clang_library(clangIncludeFixerPlugi
   clangParse
   clangSema
   clangTooling
+  ${PTHREAD_LIB}
   )


___
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] r292858 - Merging r292800:

2017-01-23 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Jan 23 18:08:26 2017
New Revision: 292858

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

r292800 | dergachev | 2017-01-23 08:57:11 -0800 (Mon, 23 Jan 2017) | 13 lines

[analyzer] Fix memory space of static locals seen from nested blocks.

When a block within a function accesses a function's static local variable,
this local is captured by reference rather than copied to the heap.

Therefore this variable's memory space is known: StaticGlobalSpaceRegion.
Used to be UnknownSpaceRegion, same as for stack locals.

Fixes a false positive in MacOSXAPIChecker.

rdar://problem/30105546
Differential revision: https://reviews.llvm.org/D28946



Modified:
cfe/branches/release_40/   (props changed)
cfe/branches/release_40/lib/StaticAnalyzer/Core/MemRegion.cpp
cfe/branches/release_40/test/Analysis/dispatch-once.m

Propchange: cfe/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 23 18:08: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,292247,292265,292497,292555,292558-292559
+/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291964,292032,292052,292183,292247,292265,292497,292555,292558-292559,292800
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_40/lib/StaticAnalyzer/Core/MemRegion.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/lib/StaticAnalyzer/Core/MemRegion.cpp?rev=292858&r1=292857&r2=292858&view=diff
==
--- cfe/branches/release_40/lib/StaticAnalyzer/Core/MemRegion.cpp (original)
+++ cfe/branches/release_40/lib/StaticAnalyzer/Core/MemRegion.cpp Mon Jan 23 
18:08:26 2017
@@ -776,6 +776,22 @@ getStackOrCaptureRegionForDeclContext(co
   return (const StackFrameContext *)nullptr;
 }
 
+static CanQualType getBlockPointerType(const BlockDecl *BD, ASTContext &C) {
+  // FIXME: The fallback type here is totally bogus -- though it should
+  // never be queried, it will prevent uniquing with the real
+  // BlockCodeRegion. Ideally we'd fix the AST so that we always had a
+  // signature.
+  QualType T;
+  if (const TypeSourceInfo *TSI = BD->getSignatureAsWritten())
+T = TSI->getType();
+  if (T.isNull())
+T = C.VoidTy;
+  if (!T->getAs())
+T = C.getFunctionNoProtoType(T);
+  T = C.getBlockPointerType(T);
+  return C.getCanonicalType(T);
+}
+
 const VarRegion* MemRegionManager::getVarRegion(const VarDecl *D,
 const LocationContext *LC) {
   const MemRegion *sReg = nullptr;
@@ -803,7 +819,7 @@ const VarRegion* MemRegionManager::getVa
 sReg = getGlobalsRegion();
 }
 
-  // Finally handle static locals.
+  // Finally handle locals.
   } else {
 // FIXME: Once we implement scope handling, we will need to properly lookup
 // 'D' to the proper LocationContext.
@@ -816,9 +832,22 @@ const VarRegion* MemRegionManager::getVa
 
 const StackFrameContext *STC = V.get();
 
-if (!STC)
-  sReg = getUnknownRegion();
-else {
+if (!STC) {
+  if (D->isStaticLocal()) {
+const CodeTextRegion *fReg = nullptr;
+if (const auto *ND = dyn_cast(DC))
+  fReg = getFunctionCodeRegion(ND);
+else if (const auto *BD = dyn_cast(DC))
+  fReg = getBlockCodeRegion(BD, getBlockPointerType(BD, getContext()),
+LC->getAnalysisDeclContext());
+assert(fReg && "Unable to determine code region for a static local!");
+sReg = getGlobalsRegion(MemRegion::StaticGlobalSpaceRegionKind, fReg);
+  } else {
+// We're looking at a block-captured local variable, which may be 
either
+// still local, or already moved to the heap. So we're not sure.
+sReg = getUnknownRegion();
+  }
+} else {
   if (D->hasLocalStorage()) {
 sReg = isa(D) || isa(D)
? static_cast(getStackArgumentsRegion(STC))
@@ -831,22 +860,9 @@ const VarRegion* MemRegionManager::getVa
   sReg = getGlobalsRegion(MemRegion::StaticGlobalSpaceRegionKind,
   
getFunctionCodeRegion(cast(STCD)));
 else if (const BlockDecl *BD = dyn_cast(STCD)) {
-  // FIXME: The fallback type here is totally bogus -- though it should
-  // never be queried, it will prevent uniquing with the real
-  // BlockCodeRegion. Ideally we'd fix the AST so that we always had a
-  // signature.
-  QualType T;
-  if (const TypeSourceInfo *TSI = BD->getSignatureAsWritten())
-T = TSI->g

[llvm-branch-commits] [cfe-branch] r292859 - Merging r292847:

2017-01-23 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Jan 23 18:14:31 2017
New Revision: 292859

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

r292847 | rsmith | 2017-01-23 15:14:23 -0800 (Mon, 23 Jan 2017) | 2 lines

PR31692: Don't mark a declaration as invalid if we haven't necessarily emitted 
a (user-visible) error.



Added:
cfe/branches/release_40/test/SemaCXX/cxx11-default-member-initializers.cpp
  - copied unchanged from r292847, 
cfe/trunk/test/SemaCXX/cxx11-default-member-initializers.cpp
Modified:
cfe/branches/release_40/   (props changed)
cfe/branches/release_40/lib/Sema/SemaDeclCXX.cpp

Propchange: cfe/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 23 18:14:31 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,292247,292265,292497,292555,292558-292559,292800
+/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291964,292032,292052,292183,292247,292265,292497,292555,292558-292559,292800,292847
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_40/lib/Sema/SemaDeclCXX.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/lib/Sema/SemaDeclCXX.cpp?rev=292859&r1=292858&r2=292859&view=diff
==
--- cfe/branches/release_40/lib/Sema/SemaDeclCXX.cpp (original)
+++ cfe/branches/release_40/lib/Sema/SemaDeclCXX.cpp Mon Jan 23 18:14:31 2017
@@ -12383,9 +12383,9 @@ ExprResult Sema::BuildCXXDefaultInitExpr
   Diag(Loc, diag::err_in_class_initializer_not_yet_parsed)
   << OutermostClass << Field;
   Diag(Field->getLocEnd(), diag::note_in_class_initializer_not_yet_parsed);
-
-  // Don't diagnose this again.
-  Field->setInvalidDecl();
+  // Recover by marking the field invalid, unless we're in a SFINAE context.
+  if (!isSFINAEContext())
+Field->setInvalidDecl();
   return ExprError();
 }
 


___
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] r292861 - Merging r292467:

2017-01-23 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Mon Jan 23 18:26:12 2017
New Revision: 292861

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

r292467 | compnerd | 2017-01-18 18:58:46 -0800 (Wed, 18 Jan 2017) | 7 lines

llvm-cxxfilt: filter out invalid manglings

c++filt does not attempt to demangle symbols which do not match its
expected format.  This means that the symbol must start with _Z or ___Z
(block invocation function extension).  Any other symbols are returned
as is.  Note that this is different from the behaviour of __cxa_demangle
which will demangle fragments.


Added:
llvm/branches/release_40/test/tools/llvm-cxxfilt/invalid.test
  - copied unchanged from r292467, 
llvm/trunk/test/tools/llvm-cxxfilt/invalid.test
Modified:
llvm/branches/release_40/   (props changed)
llvm/branches/release_40/tools/llvm-cxxfilt/llvm-cxxfilt.cpp

Propchange: llvm/branches/release_40/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 23 18:26:12 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,291966,291968,291979,292133,292242,292254-292255,292280,292323,292583,292625,292641,292667,292711,292758
+/llvm/trunk:155241,291858-291859,291863,291875,291966,291968,291979,292133,292242,292254-292255,292280,292323,292467,292583,292625,292641,292667,292711,292758

Modified: llvm/branches/release_40/tools/llvm-cxxfilt/llvm-cxxfilt.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/tools/llvm-cxxfilt/llvm-cxxfilt.cpp?rev=292861&r1=292860&r2=292861&view=diff
==
--- llvm/branches/release_40/tools/llvm-cxxfilt/llvm-cxxfilt.cpp (original)
+++ llvm/branches/release_40/tools/llvm-cxxfilt/llvm-cxxfilt.cpp Mon Jan 23 
18:26:12 2017
@@ -14,9 +14,12 @@
 
 using namespace llvm;
 
-static void demangle(llvm::raw_ostream &OS, const char *Mangled) {
+static void demangle(llvm::raw_ostream &OS, const std::string &Mangled) {
   int Status;
-  char *Demangled = itaniumDemangle(Mangled, nullptr, nullptr, &Status);
+  char *Demangled = nullptr;
+  if ((Mangled.size() >= 2 && Mangled.compare(0, 2, "_Z")) ||
+  (Mangled.size() >= 4 && Mangled.compare(0, 4, "___Z")))
+Demangled = itaniumDemangle(Mangled.c_str(), nullptr, nullptr, &Status);
   OS << (Demangled ? Demangled : Mangled) << '\n';
   free(Demangled);
 }
@@ -24,7 +27,7 @@ static void demangle(llvm::raw_ostream &
 int main(int argc, char **argv) {
   if (argc == 1)
 for (std::string Mangled; std::getline(std::cin, Mangled);)
-  demangle(llvm::outs(), Mangled.c_str());
+  demangle(llvm::outs(), Mangled);
   else
 for (int I = 1; I < argc; ++I)
   demangle(llvm::outs(), argv[I]);


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