HomePhabricator

[PowerPC] eliminate partially redundant compare instruction

Description

[PowerPC] eliminate partially redundant compare instruction

This is a follow-on of D37211.
D37211 eliminates a compare instruction if two conditional branches can be made based on the one compare instruction, e.g.
if (a == 0) { ... }
else if (a < 0) { ... }

This patch extends this optimization to support partially redundant cases, which often happen in while loops.
For example, one compare instruction is moved from the loop body into the preheader by this optimization in the following example.
do {

if (a == 0) dummy1();
a = func(a);

} while (a > 0);

Differential Revision: https://reviews.llvm.org/D38236

Details

Committed
inouehrsSep 28 2017, 1:38 AM
Differential Revision
D38236: [PowerPC] eliminate partially redundant compare instruction
Parents
rL314389: [RISCV] Add common fixups and relocations
Branches
Unknown
Tags
Unknown