the bitrig patrick_pr branch has been created by patrick. it is 0 commits behind master, and 3 commits ahead.
commit a963caa0aeab820ae70a6ee825dade87a06dd4ab diff: https://github.com/bitrig/bitrig/commit/a963caa author: David Hill <[email protected]> date: Thu Jan 1 11:52:21 2015 -0500 Pull in LLVM r203311 and r211435. r211435 Legalizer: Add support for splitting insert_subvectors. We handle this by spilling the whole thing to the stack and doing the insertion as a store. PR19492. This happens in real code because the vectorizer creates v2i128 when AVX is enabled. r203311 ISel: Make VSELECT selection terminate in cases where the condition type has to be split and the result type widened. When the condition of a vselect has to be split it makes no sense widening the vselect and thereby widening the condition. We end up in an endless loop of widening (vselect result type) and splitting (condition mask type) doing this. Instead, split both the condition and the vselect and widen the result. M contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h M contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp commit df237cb39e6010ef0b04778a6f439dd31dc71790 diff: https://github.com/bitrig/bitrig/commit/df237cb author: David Hill <[email protected]> date: Thu Jan 1 11:19:44 2015 -0500 Pull in LLVM fix for PR20893. Totally forget deallocated SDNodes in SDDbgInfo. What would happen before that commit is that the SDDbgValues associated with a deallocated SDNode would be marked Invalidated, but SDDbgInfo would keep a map entry keyed by the SDNode pointer pointing to this list of invalidated SDDbgNodes. As the memory gets reused, the list might get wrongly associated with another new SDNode. As the SDDbgValues are cloned when they are transfered, this can lead to an exponential number of SDDbgValues being produced during DAGCombine like in http://llvm.org/bugs/show_bug.cgi?id=20893 Note that the previous behavior wasn't really buggy as the invalidation made sure that the SDDbgValues won't be used. This commit can be considered a memory optimization and as such is really hard to validate in a unit-test. M contrib/llvm/include/llvm/CodeGen/SelectionDAG.h M contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp commit b46e6abb45672cf1247240af135592dba2925a1f diff: https://github.com/bitrig/bitrig/commit/b46e6ab author: David Hill <[email protected]> date: Thu Jan 1 11:13:49 2015 -0500 Pull in LLVM fix for PR21302. The issue is that currently vectorizer sometimes vectorizes loops that are not bottom-tested, i.e. in which each iteration starts from checking the termination condition. That causes an extra-iteration to be executed in vectorized version in some cases. http://llvm.org/bugs/show_bug.cgi?id=21302 M contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
