summaryrefslogtreecommitdiff
path: root/utils/TableGen/X86RecognizableInstr.h
diff options
context:
space:
mode:
authorArnold Schwaighofer <aschwaighofer@apple.com>2014-01-02 03:31:36 +0000
committerArnold Schwaighofer <aschwaighofer@apple.com>2014-01-02 03:31:36 +0000
commit1bdb320daea95b65bf5a5293132a8911ca1a7524 (patch)
treecddcf3638496f46dbc431c7b4afda26e49958ac8 /utils/TableGen/X86RecognizableInstr.h
parentf8735544dc5c75a0b0de7ff13e130ad93d9a1ac1 (diff)
downloadllvm-1bdb320daea95b65bf5a5293132a8911ca1a7524.tar.gz
llvm-1bdb320daea95b65bf5a5293132a8911ca1a7524.tar.bz2
llvm-1bdb320daea95b65bf5a5293132a8911ca1a7524.tar.xz
BasicAA: Fix value equality and phi cycles
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
Diffstat (limited to 'utils/TableGen/X86RecognizableInstr.h')
0 files changed, 0 insertions, 0 deletions