aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/Format/FormatTestJava.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2015-01-05 04:17:53 +0000
committerChandler Carruth <chandlerc@gmail.com>2015-01-05 04:17:53 +0000
commit73b0164fe5e64164345ff817dd193f03e9d3fdd6 (patch)
tree3047d63940cd91c9b1ae467650b832ec3cc172c7 /clang/unittests/Format/FormatTestJava.cpp
parent5dd8278f3f272d87fe137cf74118e3a3bdcc7614 (diff)
downloadllvm-73b0164fe5e64164345ff817dd193f03e9d3fdd6.zip
llvm-73b0164fe5e64164345ff817dd193f03e9d3fdd6.tar.gz
llvm-73b0164fe5e64164345ff817dd193f03e9d3fdd6.tar.bz2
[SROA] Apply a somewhat heavy and unpleasant hammer to fix PR22093, an
assert out of the new pre-splitting in SROA. This fix makes the code do what was originally intended -- when we have a store of a load both dealing in the same alloca, we force them to both be pre-split with identical offsets. This is really quite hard to do because we can keep discovering problems as we go along. We have to track every load over the current alloca which for any resaon becomes invalid for pre-splitting, and go back to remove all stores of those loads. I've included a couple of test cases derived from PR22093 that cover the different ways this can happen. While that PR only really triggered the first of these two, its the same fundamental issue. The other challenge here is documented in a FIXME now. We end up being quite a bit more aggressive for pre-splitting when loads and stores don't refer to the same alloca. This aggressiveness comes at the cost of introducing potentially redundant loads. It isn't clear that this is the right balance. It might be considerably better to require that we only do pre-splitting when we can presplit every load and store involved in the entire operation. That would give more consistent if conservative results. Unfortunately, it requires a non-trivial change to the actual pre-splitting operation in order to correctly handle cases where we end up pre-splitting stores out-of-order. And it isn't 100% clear that this is the right direction, although I'm starting to suspect that it is. llvm-svn: 225149
Diffstat (limited to 'clang/unittests/Format/FormatTestJava.cpp')
0 files changed, 0 insertions, 0 deletions