Diff
checker
文本
文本
圖像
文檔
Excel
文件夾
Legal
Enterprise
桌面版
定價
登入
下載 Diffchecker 桌面版
比較文本
尋找兩個文字檔案之間的差異
工具
歷史
即時編輯器
摺疊未變更行
關閉換行
檢視
拆分
統一
比對精度
智能
單詞
字符
語法突出顯示
選擇語法
忽略
文字轉換
前往第一個差異
編輯輸入
Diffchecker Desktop
執行Diffchecker最安全的方式。取得Diffchecker桌面應用程式:您的差異永遠不會離開您的電腦!
取得桌面版
pr41750
建立於
3 年前
差異永不過期
清除
匯出
分享
解釋
11 刪除
行
總計
刪除
字符
總計
刪除
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
157 行
全部複製
23 新增
行
總計
新增
字符
總計
新增
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
171 行
全部複製
複製
已複製
複製
已複製
xgupta@archlinux ~/compiler/llvm-project/build/bin (main?) $ cat
~/Downloads/reproducer.mir
xgupta@archlinux ~/compiler/llvm-project/build/bin (main?) $ cat
after-pass
--- |
--- |
複製
已複製
複製
已複製
; ModuleID = '/home/xgupta/Downloads/reproducer.mir'
source_filename = "/home/xgupta/Downloads/reproducer.mir"
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-none-linux-gnu"
define dso_local void @tc_main(i32 %segment_index, i32 %num_segments, i16* nocapture %scores, i8* nocapture readonly %arr_segments_ptr) local_unnamed_addr {
define dso_local void @tc_main(i32 %segment_index, i32 %num_segments, i16* nocapture %scores, i8* nocapture readonly %arr_segments_ptr) local_unnamed_addr {
entry:
entry:
br label %while.body
br label %while.body
while.body: ; preds = %if.end8, %entry
while.body: ; preds = %if.end8, %entry
%0 = bitcast i8* %arr_segments_ptr to i16*
%0 = bitcast i8* %arr_segments_ptr to i16*
%1 = load i16, i16* %0, align 2
%1 = load i16, i16* %0, align 2
%conv = sext i16 %1 to i32
%conv = sext i16 %1 to i32
%cmp = icmp sgt i16 %1, 0
%cmp = icmp sgt i16 %1, 0
br i1 %cmp, label %if.then, label %if.else
br i1 %cmp, label %if.then, label %if.else
if.then: ; preds = %while.body
if.then: ; preds = %while.body
%div = sdiv i32 65535, %conv
%div = sdiv i32 65535, %conv
%mul = shl nsw i32 %div, 3
%mul = shl nsw i32 %div, 3
br label %if.end8
br label %if.end8
if.else: ; preds = %while.body
if.else: ; preds = %while.body
%2 = trunc i32 %conv to i16
%2 = trunc i32 %conv to i16
%cmp2 = icmp slt i16 %2, 0
%cmp2 = icmp slt i16 %2, 0
br i1 %cmp2, label %if.then4, label %if.end8
br i1 %cmp2, label %if.then4, label %if.end8
if.then4: ; preds = %if.else
if.then4: ; preds = %if.else
%div6 = sdiv i32 65535, %conv
%div6 = sdiv i32 65535, %conv
%mul7 = shl nsw i32 %div6, 3
%mul7 = shl nsw i32 %div6, 3
br label %if.end8
br label %if.end8
if.end8: ; preds = %if.then4, %if.else, %if.then
if.end8: ; preds = %if.then4, %if.else, %if.then
%ye.0 = phi i32 [ 8, %if.then ], [ %mul7, %if.then4 ], [ 8, %if.else ]
%ye.0 = phi i32 [ 8, %if.then ], [ %mul7, %if.then4 ], [ 8, %if.else ]
%ys.0 = phi i32 [ %mul, %if.then ], [ 8, %if.then4 ], [ 8, %if.else ]
%ys.0 = phi i32 [ %mul, %if.then ], [ 8, %if.then4 ], [ 8, %if.else ]
%add = add nsw i32 %ys.0, %ye.0
%add = add nsw i32 %ys.0, %ye.0
%conv9 = trunc i32 %add to i16
%conv9 = trunc i32 %add to i16
store i16 %conv9, i16* %scores, align 2
store i16 %conv9, i16* %scores, align 2
br label %while.body
br label %while.body
}
}
...
...
---
---
name: tc_main
name: tc_main
alignment: 2
alignment: 2
exposesReturnsTwice: false
exposesReturnsTwice: false
legalized: false
legalized: false
regBankSelected: false
regBankSelected: false
selected: false
selected: false
failedISel: false
failedISel: false
tracksRegLiveness: true
tracksRegLiveness: true
hasWinCFI: false
hasWinCFI: false
複製
已複製
複製
已複製
registers:
callsEHReturn: false
callsUnwindInit: false
hasEHCatchret: false
hasEHScopes: false
hasEHFunclets: false
failsVerification: false
tracksDebugUserValues: false
registers:
- { id: 0, class: gpr32, preferred-register: '' }
- { id: 0, class: gpr32, preferred-register: '' }
- { id: 1, class: gpr32all, preferred-register: '' }
- { id: 1, class: gpr32all, preferred-register: '' }
- { id: 2, class: gpr32all, preferred-register: '' }
- { id: 2, class: gpr32all, preferred-register: '' }
- { id: 3, class: gpr32, preferred-register: '' }
- { id: 3, class: gpr32, preferred-register: '' }
- { id: 4, class: gpr32, preferred-register: '' }
- { id: 4, class: gpr32, preferred-register: '' }
- { id: 5, class: gpr32, preferred-register: '' }
- { id: 5, class: gpr32, preferred-register: '' }
- { id: 6, class: gpr32, preferred-register: '' }
- { id: 6, class: gpr32, preferred-register: '' }
- { id: 7, class: gpr64common, preferred-register: '' }
- { id: 7, class: gpr64common, preferred-register: '' }
- { id: 8, class: gpr64common, preferred-register: '' }
- { id: 8, class: gpr64common, preferred-register: '' }
- { id: 9, class: gpr32common, preferred-register: '' }
- { id: 9, class: gpr32common, preferred-register: '' }
- { id: 10, class: gpr32, preferred-register: '' }
- { id: 10, class: gpr32, preferred-register: '' }
- { id: 11, class: gpr32all, preferred-register: '' }
- { id: 11, class: gpr32all, preferred-register: '' }
- { id: 12, class: gpr32, preferred-register: '' }
- { id: 12, class: gpr32, preferred-register: '' }
- { id: 13, class: gpr32all, preferred-register: '' }
- { id: 13, class: gpr32all, preferred-register: '' }
- { id: 14, class: gpr32, preferred-register: '' }
- { id: 14, class: gpr32, preferred-register: '' }
- { id: 15, class: gpr32, preferred-register: '' }
- { id: 15, class: gpr32, preferred-register: '' }
- { id: 16, class: gpr32, preferred-register: '' }
- { id: 16, class: gpr32, preferred-register: '' }
- { id: 17, class: gpr32, preferred-register: '' }
- { id: 17, class: gpr32, preferred-register: '' }
- { id: 18, class: gpr32all, preferred-register: '' }
- { id: 18, class: gpr32all, preferred-register: '' }
- { id: 19, class: gpr32, preferred-register: '' }
- { id: 19, class: gpr32, preferred-register: '' }
- { id: 20, class: gpr32, preferred-register: '' }
- { id: 20, class: gpr32, preferred-register: '' }
- { id: 21, class: gpr32, preferred-register: '' }
- { id: 21, class: gpr32, preferred-register: '' }
- { id: 22, class: gpr32, preferred-register: '' }
- { id: 22, class: gpr32, preferred-register: '' }
- { id: 23, class: gpr32, preferred-register: '' }
- { id: 23, class: gpr32, preferred-register: '' }
複製
已複製
複製
已複製
liveins:
liveins:
- { reg: '$x2', virtual-reg: '%7' }
- { reg: '$x2', virtual-reg: '%7' }
- { reg: '$x3', virtual-reg: '%8' }
- { reg: '$x3', virtual-reg: '%8' }
複製
已複製
複製
已複製
frameInfo:
frameInfo:
isFrameAddressTaken: false
isFrameAddressTaken: false
isReturnAddressTaken: false
isReturnAddressTaken: false
hasStackMap: false
hasStackMap: false
hasPatchPoint: false
hasPatchPoint: false
stackSize: 0
stackSize: 0
offsetAdjustment: 0
offsetAdjustment: 0
複製
已複製
複製
已複製
maxAlignment:
0
maxAlignment:
1
adjustsStack: false
adjustsStack: false
hasCalls: false
hasCalls: false
stackProtector: ''
stackProtector: ''
複製
已複製
複製
已複製
functionContext: ''
maxCallFrameSize: 0
maxCallFrameSize: 0
cvBytesOfCalleeSavedRegisters: 0
cvBytesOfCalleeSavedRegisters: 0
hasOpaqueSPAdjustment: false
hasOpaqueSPAdjustment: false
hasVAStart: false
hasVAStart: false
hasMustTailInVarArgFunc: false
hasMustTailInVarArgFunc: false
複製
已複製
複製
已複製
hasTailCall: false
localFrameSize: 0
localFrameSize: 0
savePoint: ''
savePoint: ''
restorePoint: ''
restorePoint: ''
fixedStack: []
fixedStack: []
stack: []
stack: []
複製
已複製
複製
已複製
callSites: []
debugValueSubstitutions: []
constants: []
constants: []
machineFunctionInfo: {}
machineFunctionInfo: {}
body: |
body: |
bb.0.entry:
bb.0.entry:
successors: %bb.1(0x80000000)
successors: %bb.1(0x80000000)
liveins: $x2, $x3
liveins: $x2, $x3
%8:gpr64common = COPY $x3
%8:gpr64common = COPY $x3
%7:gpr64common = COPY $x2
%7:gpr64common = COPY $x2
%19:gpr32 = MOVi32imm 65535
%19:gpr32 = MOVi32imm 65535
bb.1.while.body:
bb.1.while.body:
successors: %bb.2(0x50000000), %bb.3(0x30000000)
successors: %bb.2(0x50000000), %bb.3(0x30000000)
複製
已複製
複製
已複製
%9:gpr32common = LDRSHWui %8, 0 :: (load
2
from %ir.0)
%9:gpr32common = LDRSHWui %8, 0 :: (load
(s16)
from %ir.0)
%0:gpr32 = COPY %9
%0:gpr32 = COPY %9
%10:gpr32 = SUBSWri %9, 1, 0, implicit-def $nzcv
%10:gpr32 = SUBSWri %9, 1, 0, implicit-def $nzcv
Bcc 11, %bb.3, implicit $nzcv
Bcc 11, %bb.3, implicit $nzcv
B %bb.2
B %bb.2
bb.2.if.then:
bb.2.if.then:
successors: %bb.5(0x80000000)
successors: %bb.5(0x80000000)
複製
已複製
複製
已複製
%20:gpr32 = SDIVWr %19, %
0
%20:gpr32 = SDIVWr %19, %
9
%21:gpr32 = nsw UBFMWri killed %20, 29, 28
%21:gpr32 = nsw UBFMWri killed %20, 29, 28
%22:gpr32 = MOVi32imm 8
%22:gpr32 = MOVi32imm 8
%18:gpr32all = COPY %22
%18:gpr32all = COPY %22
%1:gpr32all = COPY %21
%1:gpr32all = COPY %21
B %bb.5
B %bb.5
bb.3.if.else:
bb.3.if.else:
successors: %bb.4(0x30000000), %bb.5(0x50000000)
successors: %bb.4(0x30000000), %bb.5(0x50000000)
%12:gpr32 = MOVi32imm 8
%12:gpr32 = MOVi32imm 8
%11:gpr32all = COPY %12
%11:gpr32all = COPY %12
TBZW %0, 31, %bb.5
TBZW %0, 31, %bb.5
B %bb.4
B %bb.4
bb.4.if.then4:
bb.4.if.then4:
successors: %bb.5(0x80000000)
successors: %bb.5(0x80000000)
複製
已複製
複製
已複製
%15:gpr32 = SDIVWr %19, %
0
%15:gpr32 = SDIVWr %19, %
9
%16:gpr32 = nsw UBFMWri killed %15, 29, 28
%16:gpr32 = nsw UBFMWri killed %15, 29, 28
%17:gpr32 = MOVi32imm 8
%17:gpr32 = MOVi32imm 8
%13:gpr32all = COPY %17
%13:gpr32all = COPY %17
%2:gpr32all = COPY %16
%2:gpr32all = COPY %16
bb.5.if.end8:
bb.5.if.end8:
successors: %bb.1(0x80000000)
successors: %bb.1(0x80000000)
%3:gpr32 = PHI %11, %bb.3, %2, %bb.4, %18, %bb.2
%3:gpr32 = PHI %11, %bb.3, %2, %bb.4, %18, %bb.2
%4:gpr32 = PHI %11, %bb.3, %13, %bb.4, %1, %bb.2
%4:gpr32 = PHI %11, %bb.3, %13, %bb.4, %1, %bb.2
%23:gpr32 = nsw ADDWrr %4, %3
%23:gpr32 = nsw ADDWrr %4, %3
複製
已複製
複製
已複製
STRHHui killed %23, %7, 0 :: (store
2
into %ir.scores)
STRHHui killed %23, %7, 0 :: (store
(s16)
into %ir.scores)
B %bb.1
B %bb.1
...
...
已保存差異
原始文本
開啟檔案
xgupta@archlinux ~/compiler/llvm-project/build/bin (main?) $ cat ~/Downloads/reproducer.mir --- | define dso_local void @tc_main(i32 %segment_index, i32 %num_segments, i16* nocapture %scores, i8* nocapture readonly %arr_segments_ptr) local_unnamed_addr { entry: br label %while.body while.body: ; preds = %if.end8, %entry %0 = bitcast i8* %arr_segments_ptr to i16* %1 = load i16, i16* %0, align 2 %conv = sext i16 %1 to i32 %cmp = icmp sgt i16 %1, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %while.body %div = sdiv i32 65535, %conv %mul = shl nsw i32 %div, 3 br label %if.end8 if.else: ; preds = %while.body %2 = trunc i32 %conv to i16 %cmp2 = icmp slt i16 %2, 0 br i1 %cmp2, label %if.then4, label %if.end8 if.then4: ; preds = %if.else %div6 = sdiv i32 65535, %conv %mul7 = shl nsw i32 %div6, 3 br label %if.end8 if.end8: ; preds = %if.then4, %if.else, %if.then %ye.0 = phi i32 [ 8, %if.then ], [ %mul7, %if.then4 ], [ 8, %if.else ] %ys.0 = phi i32 [ %mul, %if.then ], [ 8, %if.then4 ], [ 8, %if.else ] %add = add nsw i32 %ys.0, %ye.0 %conv9 = trunc i32 %add to i16 store i16 %conv9, i16* %scores, align 2 br label %while.body } ... --- name: tc_main alignment: 2 exposesReturnsTwice: false legalized: false regBankSelected: false selected: false failedISel: false tracksRegLiveness: true hasWinCFI: false registers: - { id: 0, class: gpr32, preferred-register: '' } - { id: 1, class: gpr32all, preferred-register: '' } - { id: 2, class: gpr32all, preferred-register: '' } - { id: 3, class: gpr32, preferred-register: '' } - { id: 4, class: gpr32, preferred-register: '' } - { id: 5, class: gpr32, preferred-register: '' } - { id: 6, class: gpr32, preferred-register: '' } - { id: 7, class: gpr64common, preferred-register: '' } - { id: 8, class: gpr64common, preferred-register: '' } - { id: 9, class: gpr32common, preferred-register: '' } - { id: 10, class: gpr32, preferred-register: '' } - { id: 11, class: gpr32all, preferred-register: '' } - { id: 12, class: gpr32, preferred-register: '' } - { id: 13, class: gpr32all, preferred-register: '' } - { id: 14, class: gpr32, preferred-register: '' } - { id: 15, class: gpr32, preferred-register: '' } - { id: 16, class: gpr32, preferred-register: '' } - { id: 17, class: gpr32, preferred-register: '' } - { id: 18, class: gpr32all, preferred-register: '' } - { id: 19, class: gpr32, preferred-register: '' } - { id: 20, class: gpr32, preferred-register: '' } - { id: 21, class: gpr32, preferred-register: '' } - { id: 22, class: gpr32, preferred-register: '' } - { id: 23, class: gpr32, preferred-register: '' } liveins: - { reg: '$x2', virtual-reg: '%7' } - { reg: '$x3', virtual-reg: '%8' } frameInfo: isFrameAddressTaken: false isReturnAddressTaken: false hasStackMap: false hasPatchPoint: false stackSize: 0 offsetAdjustment: 0 maxAlignment: 0 adjustsStack: false hasCalls: false stackProtector: '' maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 savePoint: '' restorePoint: '' fixedStack: [] stack: [] constants: [] machineFunctionInfo: {} body: | bb.0.entry: successors: %bb.1(0x80000000) liveins: $x2, $x3 %8:gpr64common = COPY $x3 %7:gpr64common = COPY $x2 %19:gpr32 = MOVi32imm 65535 bb.1.while.body: successors: %bb.2(0x50000000), %bb.3(0x30000000) %9:gpr32common = LDRSHWui %8, 0 :: (load 2 from %ir.0) %0:gpr32 = COPY %9 %10:gpr32 = SUBSWri %9, 1, 0, implicit-def $nzcv Bcc 11, %bb.3, implicit $nzcv B %bb.2 bb.2.if.then: successors: %bb.5(0x80000000) %20:gpr32 = SDIVWr %19, %0 %21:gpr32 = nsw UBFMWri killed %20, 29, 28 %22:gpr32 = MOVi32imm 8 %18:gpr32all = COPY %22 %1:gpr32all = COPY %21 B %bb.5 bb.3.if.else: successors: %bb.4(0x30000000), %bb.5(0x50000000) %12:gpr32 = MOVi32imm 8 %11:gpr32all = COPY %12 TBZW %0, 31, %bb.5 B %bb.4 bb.4.if.then4: successors: %bb.5(0x80000000) %15:gpr32 = SDIVWr %19, %0 %16:gpr32 = nsw UBFMWri killed %15, 29, 28 %17:gpr32 = MOVi32imm 8 %13:gpr32all = COPY %17 %2:gpr32all = COPY %16 bb.5.if.end8: successors: %bb.1(0x80000000) %3:gpr32 = PHI %11, %bb.3, %2, %bb.4, %18, %bb.2 %4:gpr32 = PHI %11, %bb.3, %13, %bb.4, %1, %bb.2 %23:gpr32 = nsw ADDWrr %4, %3 STRHHui killed %23, %7, 0 :: (store 2 into %ir.scores) B %bb.1 ...
更改後文本
開啟檔案
xgupta@archlinux ~/compiler/llvm-project/build/bin (main?) $ cat after-pass --- | ; ModuleID = '/home/xgupta/Downloads/reproducer.mir' source_filename = "/home/xgupta/Downloads/reproducer.mir" target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" target triple = "aarch64-none-linux-gnu" define dso_local void @tc_main(i32 %segment_index, i32 %num_segments, i16* nocapture %scores, i8* nocapture readonly %arr_segments_ptr) local_unnamed_addr { entry: br label %while.body while.body: ; preds = %if.end8, %entry %0 = bitcast i8* %arr_segments_ptr to i16* %1 = load i16, i16* %0, align 2 %conv = sext i16 %1 to i32 %cmp = icmp sgt i16 %1, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %while.body %div = sdiv i32 65535, %conv %mul = shl nsw i32 %div, 3 br label %if.end8 if.else: ; preds = %while.body %2 = trunc i32 %conv to i16 %cmp2 = icmp slt i16 %2, 0 br i1 %cmp2, label %if.then4, label %if.end8 if.then4: ; preds = %if.else %div6 = sdiv i32 65535, %conv %mul7 = shl nsw i32 %div6, 3 br label %if.end8 if.end8: ; preds = %if.then4, %if.else, %if.then %ye.0 = phi i32 [ 8, %if.then ], [ %mul7, %if.then4 ], [ 8, %if.else ] %ys.0 = phi i32 [ %mul, %if.then ], [ 8, %if.then4 ], [ 8, %if.else ] %add = add nsw i32 %ys.0, %ye.0 %conv9 = trunc i32 %add to i16 store i16 %conv9, i16* %scores, align 2 br label %while.body } ... --- name: tc_main alignment: 2 exposesReturnsTwice: false legalized: false regBankSelected: false selected: false failedISel: false tracksRegLiveness: true hasWinCFI: false callsEHReturn: false callsUnwindInit: false hasEHCatchret: false hasEHScopes: false hasEHFunclets: false failsVerification: false tracksDebugUserValues: false registers: - { id: 0, class: gpr32, preferred-register: '' } - { id: 1, class: gpr32all, preferred-register: '' } - { id: 2, class: gpr32all, preferred-register: '' } - { id: 3, class: gpr32, preferred-register: '' } - { id: 4, class: gpr32, preferred-register: '' } - { id: 5, class: gpr32, preferred-register: '' } - { id: 6, class: gpr32, preferred-register: '' } - { id: 7, class: gpr64common, preferred-register: '' } - { id: 8, class: gpr64common, preferred-register: '' } - { id: 9, class: gpr32common, preferred-register: '' } - { id: 10, class: gpr32, preferred-register: '' } - { id: 11, class: gpr32all, preferred-register: '' } - { id: 12, class: gpr32, preferred-register: '' } - { id: 13, class: gpr32all, preferred-register: '' } - { id: 14, class: gpr32, preferred-register: '' } - { id: 15, class: gpr32, preferred-register: '' } - { id: 16, class: gpr32, preferred-register: '' } - { id: 17, class: gpr32, preferred-register: '' } - { id: 18, class: gpr32all, preferred-register: '' } - { id: 19, class: gpr32, preferred-register: '' } - { id: 20, class: gpr32, preferred-register: '' } - { id: 21, class: gpr32, preferred-register: '' } - { id: 22, class: gpr32, preferred-register: '' } - { id: 23, class: gpr32, preferred-register: '' } liveins: - { reg: '$x2', virtual-reg: '%7' } - { reg: '$x3', virtual-reg: '%8' } frameInfo: isFrameAddressTaken: false isReturnAddressTaken: false hasStackMap: false hasPatchPoint: false stackSize: 0 offsetAdjustment: 0 maxAlignment: 1 adjustsStack: false hasCalls: false stackProtector: '' functionContext: '' maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 savePoint: '' restorePoint: '' fixedStack: [] stack: [] callSites: [] debugValueSubstitutions: [] constants: [] machineFunctionInfo: {} body: | bb.0.entry: successors: %bb.1(0x80000000) liveins: $x2, $x3 %8:gpr64common = COPY $x3 %7:gpr64common = COPY $x2 %19:gpr32 = MOVi32imm 65535 bb.1.while.body: successors: %bb.2(0x50000000), %bb.3(0x30000000) %9:gpr32common = LDRSHWui %8, 0 :: (load (s16) from %ir.0) %0:gpr32 = COPY %9 %10:gpr32 = SUBSWri %9, 1, 0, implicit-def $nzcv Bcc 11, %bb.3, implicit $nzcv B %bb.2 bb.2.if.then: successors: %bb.5(0x80000000) %20:gpr32 = SDIVWr %19, %9 %21:gpr32 = nsw UBFMWri killed %20, 29, 28 %22:gpr32 = MOVi32imm 8 %18:gpr32all = COPY %22 %1:gpr32all = COPY %21 B %bb.5 bb.3.if.else: successors: %bb.4(0x30000000), %bb.5(0x50000000) %12:gpr32 = MOVi32imm 8 %11:gpr32all = COPY %12 TBZW %0, 31, %bb.5 B %bb.4 bb.4.if.then4: successors: %bb.5(0x80000000) %15:gpr32 = SDIVWr %19, %9 %16:gpr32 = nsw UBFMWri killed %15, 29, 28 %17:gpr32 = MOVi32imm 8 %13:gpr32all = COPY %17 %2:gpr32all = COPY %16 bb.5.if.end8: successors: %bb.1(0x80000000) %3:gpr32 = PHI %11, %bb.3, %2, %bb.4, %18, %bb.2 %4:gpr32 = PHI %11, %bb.3, %13, %bb.4, %1, %bb.2 %23:gpr32 = nsw ADDWrr %4, %3 STRHHui killed %23, %7, 0 :: (store (s16) into %ir.scores) B %bb.1 ...
尋找差異