mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
1bdb320dae
When there are cycles in the value graph we have to be careful interpreting "Value*" identity as "value" equivalence. We interpret the value of a phi node as the value of its operands. When we check for value equivalence now we make sure that the "Value*" dominates all cycles (phis). %0 = phi [%noaliasval, %addr2] %l = load %ptr %addr1 = gep @a, 0, %l %addr2 = gep @a, 0, (%l + 1) store %ptr ... Before this patch we would return NoAlias for (%0, %addr1) which is wrong because the value of the load is from different iterations of the loop. Tested on x86_64 -mavx at O3 and O3 -flto with no performance or compile time regressions. PR18068 radar://15653794 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198290 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
allocas.ll | ||
apelim.ll | ||
arc-annotations.ll | ||
basic.ll | ||
cfg-hazards.ll | ||
contract-marker.ll | ||
contract-storestrong-ivar.ll | ||
contract-storestrong.ll | ||
contract-testcases.ll | ||
contract.ll | ||
empty-block.ll | ||
ensure-that-exception-unwind-path-is-visited.ll | ||
escape.ll | ||
expand.ll | ||
gvn.ll | ||
intrinsic-use-isolated.ll | ||
intrinsic-use.ll | ||
invoke.ll | ||
move-and-form-retain-autorelease.ll | ||
move-and-merge-autorelease.ll | ||
nested.ll | ||
path-overflow.ll | ||
pointer-types.ll | ||
post-inlining.ll | ||
pr12270.ll | ||
retain-block-side-effects.ll | ||
retain-not-declared.ll | ||
rle-s2l.ll | ||
rv.ll | ||
split-backedge.ll | ||
tail-call-invariant-enforcement.ll | ||
weak-contract.ll | ||
weak-copies.ll | ||
weak-dce.ll | ||
weak.ll |