* Fix GVN skipping the instruction after a deleted instruction. * Teach GVN to resolve aliases as it proceeds. * Clean up an obsolete reference to extended_values.
22 lines
417 B
Plaintext
22 lines
417 B
Plaintext
test simple-gvn
|
|
|
|
function simple_redundancy(i32, i32) -> i32 {
|
|
ebb0(v0: i32, v1: i32):
|
|
v2 = iadd v0, v1
|
|
v3 = iadd v0, v1
|
|
v4 = imul v2, v3
|
|
; check: v4 = imul $v2, $v2
|
|
return v4
|
|
}
|
|
|
|
function cascading_redundancy(i32, i32) -> i32 {
|
|
ebb0(v0: i32, v1: i32):
|
|
v2 = iadd v0, v1
|
|
v3 = iadd v0, v1
|
|
v4 = imul v2, v3
|
|
v5 = imul v2, v2
|
|
v6 = iadd v4, v5
|
|
; check: v6 = iadd $v4, $v4
|
|
return v6
|
|
}
|