mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-30 17:25:21 +00:00
reuse negates where possible instead of always creating them from scratch.
This allows us to optimize test12 into: define i32 @test12(i32 %X) { %factor = mul i32 %X, -3 ; <i32> [#uses=1] %Z = add i32 %factor, 6 ; <i32> [#uses=1] ret i32 %Z } instead of: define i32 @test12(i32 %X) { %Y = sub i32 6, %X ; <i32> [#uses=1] %C = sub i32 %Y, %X ; <i32> [#uses=1] %Z = sub i32 %C, %X ; <i32> [#uses=1] ret i32 %Z } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92373 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -165,4 +165,17 @@ define i32 @test11(i32 %W) {
|
||||
; CHECK-NEXT: ret i32
|
||||
}
|
||||
|
||||
define i32 @test12(i32 %X) {
|
||||
%A = sub i32 1, %X
|
||||
%B = sub i32 2, %X
|
||||
%C = sub i32 3, %X
|
||||
|
||||
%Y = add i32 %A ,%B
|
||||
%Z = add i32 %Y, %C
|
||||
ret i32 %Z
|
||||
; CHECK: @test12
|
||||
; CHECK-NEXT: mul i32 %X, -3
|
||||
; CHECK-NEXT: add i32{{.*}}, 6
|
||||
; CHECK-NEXT: ret i32
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user