diff options
author | Pawel Wodnicki <pawel@32bitmicro.com> | 2012-11-21 18:28:32 +0000 |
---|---|---|
committer | Pawel Wodnicki <pawel@32bitmicro.com> | 2012-11-21 18:28:32 +0000 |
commit | 36915224aa459ce855d7ce56b36307d468ab44a8 (patch) | |
tree | 24ebddd34bf329681372719af87d50eee7912236 /configure | |
parent | 00dace859e62c85379021f727c9aeade734f5154 (diff) | |
download | llvm-36915224aa459ce855d7ce56b36307d468ab44a8.tar.gz llvm-36915224aa459ce855d7ce56b36307d468ab44a8.tar.bz2 llvm-36915224aa459ce855d7ce56b36307d468ab44a8.tar.xz |
Merging r168361, r168346 and r168227 into 3.2 branch release
Merging r168361:
Fix PR14132 and handle OOB loads speculated throuh PHI nodes.
The issue is that we may end up with newly OOB loads when speculating
a load into the predecessors of a PHI node, and this confuses the new
integer splitting logic in some cases, triggering an assertion failure.
In fact, the branch in question must be dead code as it loads from
a too-narrow alloca. Add code to handle this gracefully and leave the
requisite FIXMEs for both optimizing more aggressively and doing more to
aid sanitizing invalid code which triggers these patterns.
Merging r168346:
------------------------------------------------------------------------
Rework the rewriting of loads and stores for vector and integer allocas
to properly handle the combinations of these with split integer loads
and stores. This essentially replaces Evan's r168227 by refactoring the
code in a different way, and trynig to mirror that refactoring in both
the load and store sides of the rewriting.
Generally speaking there was some really problematic duplicated code
here that led to poorly founded assumptions and then subtle bugs. Now
much of the code actually flows through and follows a more consistent
style and logical path. There is still a tiny bit of duplication on the
store side of things, but it is much less bad.
This also changes the logic to never re-use a load or store instruction
as that was simply too error prone in practice.
I've added a few tests (one a reduction of the one in Evan's original
patch, which happened to be the same as the report in PR14349). I'm
going to look at adding a few more tests for things I found and fixed in
passing (such as the volatile tests in the vectorizable predicate).
This patch has survived bootstrap, and modulo one bugfix survived
Duncan's test suite, but let me know if anything else explodes.
Merging r168227:
Teach SROA rewriteVectorizedStoreInst to handle cases when the loaded value is narrower than the stored value. rdar://12713675
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168443 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'configure')
0 files changed, 0 insertions, 0 deletions