Commit Graph

21 Commits

Author SHA1 Message Date
Sanjoy Das
399b4d037d Rename WeakVH to WeakTrackingVH; NFC
This relands r301424.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301812 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-01 17:07:49 +00:00
Matt Arsenault
754511fb00 InferAddressSpaces: Search constant expressions for addrspacecasts
These are pretty common when using local memory, and the 64-bit generic
addressing is much more expensive to compute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301711 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 22:52:41 +00:00
Matt Arsenault
e91b6db85f InferAddressSpaces: Avoid looking up deleted values
While looking at pure addressing expressions, it's possible
for the value to appear later in Postorder.

I haven't been able to come up with a testcase where this
exhibits an actual issue, but if you insert a dump before
the value map lookup, a few testcases crash.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301705 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 22:18:19 +00:00
Matt Arsenault
afc9030f67 InferAddressSpaces: Infer from just addrspacecasts
Eliminates some more cases where some subset of the addressing
computation remains flat. Some cases with addrspacecasts
in nested constant expressions are still left behind however.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301704 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 22:18:08 +00:00
Matt Arsenault
d9abaa1e08 InferAddressSpaces: Use reference arguments instead of pointers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301276 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-24 23:42:41 +00:00
Matt Arsenault
e6991d24a1 InferAddressSpaces: Remove redundant assert
This is just asserting all the operations are handled in the
switch, which the unreachable already handles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301270 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-24 23:02:57 +00:00
Matt Arsenault
cfadbaaf1a InferAddressSpaces: Infer for just GEPs
Fixes leaving intermediate flat addressing computations
where a GEP instruction's source is a constant expression.

Still leaves behind a trivial addrspacecast + gep pair that
instcombine is able to handle, which ideally could be folded
here directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301044 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-21 21:35:04 +00:00
Matt Arsenault
3c1dcddf86 AMDGPU: Add all atomicrmw fields to atomic.inc/dec
Add scope, order, isVolatile

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299122 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-30 22:21:40 +00:00
Matt Arsenault
e67c4a1dbe Bug 31948: Fix assertion when bitcasting constantexpr pointers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295387 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 00:32:19 +00:00
Matt Arsenault
b324cd9254 InferAddressSpaces: Handle more cases with constant select operands
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293859 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-02 03:37:22 +00:00
Matt Arsenault
2eab96a48c InferAddressSpaces: clang-format some things
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293843 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-02 00:28:25 +00:00
Matt Arsenault
40fe3a93e9 InferAddressSpaces: Handle select
This fails to handle some cases where one of the inputs is
a constant to be fixed in a later commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293723 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-01 00:08:53 +00:00
Matt Arsenault
adb43778a7 InferAddressSpaces: Remove dead declaration
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293720 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-31 23:57:20 +00:00
Matt Arsenault
08e88e4167 InferAddressSpaces: Avoid double map lookup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293719 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-31 23:48:44 +00:00
Matt Arsenault
34a0d5fe90 InferAddressSpaces: Fix broken casting of constants
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293718 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-31 23:48:40 +00:00
Matt Arsenault
6a569f5700 InferAddressSpaces: Rename constant
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293594 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-31 02:17:41 +00:00
Matt Arsenault
1394a16b28 InferAddressSpaces: Handle icmp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293593 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-31 02:17:32 +00:00
Matt Arsenault
35b092a75f InferAddressSpaces: Support memory intrinsics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293587 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-31 01:56:57 +00:00
Matt Arsenault
6be67912a8 InferAddressSpaces: Support atomics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293584 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-31 01:40:38 +00:00
Matt Arsenault
de6cb7e695 InferAddressSpaces: Don't replace volatile users
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293582 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-31 01:30:16 +00:00
Matt Arsenault
9be098398c NVPTX: Move InferAddressSpaces to generic code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293579 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-31 01:10:58 +00:00