diff options
author | Sanjay Patel <spatel@rotateright.com> | 2022-05-16 12:29:47 -0400 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2022-05-16 12:55:52 -0400 |
commit | 3794cc0e996481e10307b67c8436aa44e0d65d22 (patch) | |
tree | c0dce126df8143ce75d58e298f9e032828d41e4a /llvm/tools/llvm-objdump/llvm-objdump.cpp | |
parent | 836305b24ca7a0dea0f80873bfa79d417d4d798d (diff) | |
download | llvm-3794cc0e996481e10307b67c8436aa44e0d65d22.zip llvm-3794cc0e996481e10307b67c8436aa44e0d65d22.tar.gz llvm-3794cc0e996481e10307b67c8436aa44e0d65d22.tar.bz2 |
[InstCombine] invert canonicalization for cast of signbit test
The existing transform was wrong in 3 ways:
1. It created an extra instruction when the source and dest types don't match.
2. It did not account for an extra use of the icmp, so could create 2 extra insts.
3. It favored bit hacks over icmp (icmp generally has better analysis).
This fixes #54692 (modeled by the PhaseOrdering tests).
This is a minimal step to fix the bug, but we should likely invert
the sibling transform for the "is negative" pattern too.
The backend should be able to invert this back to a shift if that
leads to better codegen.
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
0 files changed, 0 insertions, 0 deletions