mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-11 05:24:16 +00:00
[RegAlloc] Avoid compile time regression with multiple copy hints.
As a fix for https://bugs.llvm.org/show_bug.cgi?id=40986 ("excessive compile time building opencollada"), this patch makes sure that no phys reg is hinted more than once from getRegAllocationHints(). This handles the case were many virtual registers are assigned to the same physreg. The previous compile time fix (r343686) in weightCalcHelper() only made sure that physical/virtual registers are passed no more than once to addRegAllocationHint(). Review: Dimitry Andric, Quentin Colombet https://reviews.llvm.org/D59201 llvm-svn: 355854
This commit is contained in:
parent
b996a21cd8
commit
132f812a12
@ -13,6 +13,7 @@
|
||||
#include "llvm/CodeGen/TargetRegisterInfo.h"
|
||||
#include "llvm/ADT/ArrayRef.h"
|
||||
#include "llvm/ADT/BitVector.h"
|
||||
#include "llvm/ADT/SmallSet.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/CodeGen/MachineFrameInfo.h"
|
||||
@ -397,6 +398,7 @@ TargetRegisterInfo::getRegAllocationHints(unsigned VirtReg,
|
||||
const std::pair<unsigned, SmallVector<unsigned, 4>> &Hints_MRI =
|
||||
MRI.getRegAllocationHints(VirtReg);
|
||||
|
||||
SmallSet<unsigned, 32> HintedRegs;
|
||||
// First hint may be a target hint.
|
||||
bool Skip = (Hints_MRI.first != 0);
|
||||
for (auto Reg : Hints_MRI.second) {
|
||||
@ -410,6 +412,10 @@ TargetRegisterInfo::getRegAllocationHints(unsigned VirtReg,
|
||||
if (VRM && isVirtualRegister(Phys))
|
||||
Phys = VRM->getPhys(Phys);
|
||||
|
||||
// Don't add the same reg twice (Hints_MRI may contain multiple virtual
|
||||
// registers allocated to the same physreg).
|
||||
if (!HintedRegs.insert(Phys).second)
|
||||
continue;
|
||||
// Check that Phys is a valid hint in VirtReg's register class.
|
||||
if (!isPhysicalRegister(Phys))
|
||||
continue;
|
||||
|
805
test/CodeGen/X86/regalloc-copy-hints.mir
Normal file
805
test/CodeGen/X86/regalloc-copy-hints.mir
Normal file
@ -0,0 +1,805 @@
|
||||
# RUN: llc -mtriple=i386-unknown-unknown -mcpu=i486 %s -o - -run-pass greedy \
|
||||
# RUN: -debug-only=regalloc 2>&1 | FileCheck %s
|
||||
# REQUIRES: asserts
|
||||
|
||||
--- |
|
||||
%0 = type { %1 }
|
||||
%1 = type { %2, %23, %23*, %27*, %28*, %29, %33*, %34, %42, i8, i32, i32, i32 }
|
||||
%2 = type { %3, %6, %14, %14, i8, i8*, i8*, %16 }
|
||||
%3 = type { i32 (...)**, %4*, %5* }
|
||||
%4 = type { i32 (...)**, %3* }
|
||||
%5 = type { i32 (...)** }
|
||||
%6 = type { %7 }
|
||||
%7 = type { %8, i32, %12 }
|
||||
%8 = type { %9**, %9**, %9**, %10 }
|
||||
%9 = type { i32, i32, i32, i8* }
|
||||
%10 = type { %11 }
|
||||
%11 = type { %9** }
|
||||
%12 = type { %13 }
|
||||
%13 = type { i32 }
|
||||
%14 = type { i32, %15* }
|
||||
%15 = type { i32, i32, i8* }
|
||||
%16 = type { %17 }
|
||||
%17 = type { %18*, %20, %22 }
|
||||
%18 = type { %19* }
|
||||
%19 = type <{ %18, %19*, %18*, i8, [3 x i8] }>
|
||||
%20 = type { %21 }
|
||||
%21 = type { %18 }
|
||||
%22 = type { %13 }
|
||||
%23 = type { %24 }
|
||||
%24 = type { %18*, %25, %26 }
|
||||
%25 = type { %21 }
|
||||
%26 = type { %13 }
|
||||
%27 = type { i32 (...)** }
|
||||
%28 = type { i32 (...)** }
|
||||
%29 = type { %30 }
|
||||
%30 = type { %18*, %31, %32 }
|
||||
%31 = type { %21 }
|
||||
%32 = type { %13 }
|
||||
%33 = type { i32 (...)** }
|
||||
%34 = type { %35 }
|
||||
%35 = type { %36 }
|
||||
%36 = type { %37, i32, %41 }
|
||||
%37 = type { %38**, %38**, %38**, %39 }
|
||||
%38 = type { %42, i32 }
|
||||
%39 = type { %40 }
|
||||
%40 = type { %38** }
|
||||
%41 = type { %13 }
|
||||
%42 = type { %43 }
|
||||
%43 = type { %18*, %44, %45 }
|
||||
%44 = type { %21 }
|
||||
%45 = type { %13 }
|
||||
%46 = type { %47, %48 }
|
||||
%47 = type <{ %18, %19*, %18*, i8 }>
|
||||
%48 = type { %49 }
|
||||
%49 = type { i32, %50 }
|
||||
%50 = type { { i32, i32 }, { i32, i32 }, { i32, i32 }, { i32, i32 }, { i32, i32 }, { i32, i32 } }
|
||||
|
||||
define void @fun(%0* %arg) local_unnamed_addr #0 align 2 personality i32 (...)* @__gxx_personality_v0 {
|
||||
bb:
|
||||
%tmp = getelementptr inbounds %0, %0* %arg, i32 0, i32 0, i32 1
|
||||
%tmp1 = getelementptr inbounds %0, %0* %arg, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0
|
||||
br i1 undef, label %bb5, label %bb6
|
||||
|
||||
bb5: ; preds = %bb
|
||||
unreachable
|
||||
|
||||
bb6: ; preds = %bb
|
||||
%tmp8 = getelementptr inbounds %0, %0* %arg, i32 0, i32 0, i32 8, i32 0, i32 1, i32 0, i32 0
|
||||
br i1 undef, label %bb10, label %bb9
|
||||
|
||||
bb9: ; preds = %bb6
|
||||
unreachable
|
||||
|
||||
bb10: ; preds = %bb6
|
||||
store %18* %tmp8, %18** undef
|
||||
br i1 undef, label %bb14, label %bb13
|
||||
|
||||
bb13: ; preds = %bb10
|
||||
unreachable
|
||||
|
||||
bb14: ; preds = %bb10
|
||||
br i1 undef, label %bb17, label %bb18
|
||||
|
||||
bb17: ; preds = %bb14
|
||||
unreachable
|
||||
|
||||
bb18: ; preds = %bb14
|
||||
br i1 undef, label %bb20, label %bb19
|
||||
|
||||
bb19: ; preds = %bb18
|
||||
unreachable
|
||||
|
||||
bb20: ; preds = %bb18
|
||||
br i1 undef, label %bb25, label %bb24
|
||||
|
||||
bb24: ; preds = %bb20
|
||||
unreachable
|
||||
|
||||
bb25: ; preds = %bb20
|
||||
br i1 undef, label %bb29, label %bb30
|
||||
|
||||
bb29: ; preds = %bb25
|
||||
unreachable
|
||||
|
||||
bb30: ; preds = %bb25
|
||||
br i1 undef, label %bb38, label %bb31
|
||||
|
||||
bb31: ; preds = %bb30
|
||||
%tmp32 = getelementptr inbounds %0, %0* %arg, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0, i32 0
|
||||
br i1 undef, label %bb34, label %bb35
|
||||
|
||||
bb34: ; preds = %bb31
|
||||
unreachable
|
||||
|
||||
bb35: ; preds = %bb31
|
||||
br i1 undef, label %bb40, label %bb36
|
||||
|
||||
bb36: ; preds = %bb35
|
||||
unreachable
|
||||
|
||||
bb38: ; preds = %bb30
|
||||
%tmp391 = bitcast %18* %tmp1 to %19**
|
||||
br label %bb40
|
||||
|
||||
bb40: ; preds = %bb35, %bb38
|
||||
%tmp41 = phi %18* [ %tmp1, %bb38 ], [ null, %bb35 ]
|
||||
%tmp42 = phi %19** [ %tmp391, %bb38 ], [ %tmp32, %bb35 ]
|
||||
br i1 undef, label %bb43, label %bb48
|
||||
|
||||
bb43: ; preds = %bb40
|
||||
%tmp44 = tail call i8* @_Znwj()
|
||||
store %18* %tmp41, %18** undef
|
||||
%tmp46 = bitcast %19** %tmp42 to i8**
|
||||
store i8* %tmp44, i8** %tmp46
|
||||
%0 = bitcast i8* %tmp44 to %46*
|
||||
tail call void @_ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_()
|
||||
br label %bb48
|
||||
|
||||
bb48: ; preds = %bb43, %bb40
|
||||
%tmp49 = phi %46* [ %0, %bb43 ], [ undef, %bb40 ]
|
||||
%tmp50 = getelementptr inbounds %46, %46* %tmp49, i32 0, i32 1, i32 0, i32 1, i32 4, i32 0
|
||||
store i32 ptrtoint (i1 (%0*)* @_ZN15COLLADASaxFWL1429ColladaParserAutoGen14Private15_preEnd__authorEv to i32), i32* %tmp50
|
||||
br i1 undef, label %bb52, label %bb53
|
||||
|
||||
bb52: ; preds = %bb48
|
||||
unreachable
|
||||
|
||||
bb53: ; preds = %bb48
|
||||
br i1 undef, label %bb55, label %bb54
|
||||
|
||||
bb54: ; preds = %bb53
|
||||
unreachable
|
||||
|
||||
bb55: ; preds = %bb53
|
||||
br i1 undef, label %bb59, label %bb58
|
||||
|
||||
bb58: ; preds = %bb55
|
||||
unreachable
|
||||
|
||||
bb59: ; preds = %bb55
|
||||
br i1 undef, label %bb62, label %bb61
|
||||
|
||||
bb61: ; preds = %bb59
|
||||
unreachable
|
||||
|
||||
bb62: ; preds = %bb59
|
||||
br i1 undef, label %bb64, label %bb65
|
||||
|
||||
bb64: ; preds = %bb62
|
||||
unreachable
|
||||
|
||||
bb65: ; preds = %bb62
|
||||
%tmp66 = icmp eq %46* null, null
|
||||
br i1 %tmp66, label %bb72, label %bb67
|
||||
|
||||
bb67: ; preds = %bb65
|
||||
%tmp68 = getelementptr inbounds %0, %0* %arg, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0, i32 0
|
||||
br i1 undef, label %bb70, label %bb74
|
||||
|
||||
bb70: ; preds = %bb67
|
||||
unreachable
|
||||
|
||||
bb72: ; preds = %bb65
|
||||
%tmp732 = bitcast %18* %tmp1 to %19**
|
||||
br label %bb74
|
||||
|
||||
bb74: ; preds = %bb67, %bb72
|
||||
%tmp75 = phi %18* [ %tmp1, %bb72 ], [ null, %bb67 ]
|
||||
%tmp76 = phi %19** [ %tmp732, %bb72 ], [ %tmp68, %bb67 ]
|
||||
%tmp77 = tail call i8* @_Znwj()
|
||||
store %18* %tmp75, %18** undef
|
||||
%tmp79 = bitcast %19** %tmp76 to i8**
|
||||
store i8* %tmp77, i8** %tmp79
|
||||
%1 = bitcast i8* %tmp77 to %46*
|
||||
tail call void @_ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_()
|
||||
%tmp81 = getelementptr inbounds %46, %46* %1, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0
|
||||
store i32 ptrtoint (i1 (%0*)* @_ZN15COLLADASaxFWL1429ColladaParserAutoGen14Private14_end__commentsEv to i32), i32* %tmp81
|
||||
store %18* %tmp8, %18** undef
|
||||
%2 = bitcast %0* %arg to i8*
|
||||
%sunkaddr = getelementptr i8, i8* %2, i32 140
|
||||
%3 = bitcast i8* %sunkaddr to %18**
|
||||
%tmp85 = load %18*, %18** %3
|
||||
%tmp864 = bitcast %18* %tmp85 to %19**
|
||||
%tmp87 = load %19*, %19** %tmp864
|
||||
%tmp88 = icmp eq %19* %tmp87, null
|
||||
br i1 %tmp88, label %bb90, label %bb89
|
||||
|
||||
bb89: ; preds = %bb74
|
||||
unreachable
|
||||
|
||||
bb90: ; preds = %bb74
|
||||
br i1 undef, label %bb94, label %bb92
|
||||
|
||||
bb92: ; preds = %bb90
|
||||
br i1 undef, label %bb96, label %bb97
|
||||
|
||||
bb94: ; preds = %bb90
|
||||
unreachable
|
||||
|
||||
bb96: ; preds = %bb92
|
||||
unreachable
|
||||
|
||||
bb97: ; preds = %bb92
|
||||
br i1 undef, label %bb101, label %bb102
|
||||
|
||||
bb101: ; preds = %bb97
|
||||
unreachable
|
||||
|
||||
bb102: ; preds = %bb97
|
||||
br i1 undef, label %bb104, label %bb103
|
||||
|
||||
bb103: ; preds = %bb102
|
||||
unreachable
|
||||
|
||||
bb104: ; preds = %bb102
|
||||
br i1 undef, label %bb109, label %bb108
|
||||
|
||||
bb108: ; preds = %bb104
|
||||
unreachable
|
||||
|
||||
bb109: ; preds = %bb104
|
||||
br i1 undef, label %bb111, label %bb112
|
||||
|
||||
bb111: ; preds = %bb109
|
||||
unreachable
|
||||
|
||||
bb112: ; preds = %bb109
|
||||
br i1 undef, label %bb118, label %bb117
|
||||
|
||||
bb117: ; preds = %bb112
|
||||
unreachable
|
||||
|
||||
bb118: ; preds = %bb112
|
||||
br i1 undef, label %bb120, label %bb121
|
||||
|
||||
bb120: ; preds = %bb118
|
||||
unreachable
|
||||
|
||||
bb121: ; preds = %bb118
|
||||
br i1 undef, label %bb124, label %bb125
|
||||
|
||||
bb124: ; preds = %bb121
|
||||
unreachable
|
||||
|
||||
bb125: ; preds = %bb121
|
||||
%4 = bitcast %18* %tmp1 to %46**
|
||||
%tmp126 = load %46*, %46** %4
|
||||
%tmp127 = icmp eq %46* %tmp126, null
|
||||
br i1 %tmp127, label %bb135, label %bb128
|
||||
|
||||
bb128: ; preds = %bb125
|
||||
br label %bb129
|
||||
|
||||
bb129: ; preds = %bb131, %bb128
|
||||
%tmp130 = icmp ugt i32 undef, 95406324
|
||||
br i1 %tmp130, label %bb131, label %bb133
|
||||
|
||||
bb131: ; preds = %bb129
|
||||
br label %bb129
|
||||
|
||||
bb133: ; preds = %bb129
|
||||
unreachable
|
||||
|
||||
bb135: ; preds = %bb125
|
||||
br i1 undef, label %bb137, label %bb138
|
||||
|
||||
bb137: ; preds = %bb135
|
||||
unreachable
|
||||
|
||||
bb138: ; preds = %bb135
|
||||
unreachable
|
||||
}
|
||||
|
||||
declare zeroext i1 @_ZN15COLLADASaxFWL1429ColladaParserAutoGen14Private15_preEnd__authorEv(%0*) #0
|
||||
|
||||
declare zeroext i1 @_ZN15COLLADASaxFWL1429ColladaParserAutoGen14Private14_end__commentsEv(%0*) #0 align 2
|
||||
|
||||
declare i32 @__gxx_personality_v0(...) #0
|
||||
|
||||
declare noalias nonnull i8* @_Znwj() local_unnamed_addr #0
|
||||
|
||||
declare void @_ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_() local_unnamed_addr #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @llvm.stackprotector(i8*, i8**) #1
|
||||
|
||||
attributes #0 = { "target-cpu"="i486" }
|
||||
attributes #1 = { nounwind }
|
||||
|
||||
...
|
||||
---
|
||||
# A physreg should always only be hinted once per getRegAllocationHints() query.
|
||||
# CHECK: hints: $ebx $edi
|
||||
# CHECK-NOT: hints: $ebx $edi $ebx $edi
|
||||
name: fun
|
||||
alignment: 4
|
||||
tracksRegLiveness: true
|
||||
registers:
|
||||
- { id: 0, class: gr32 }
|
||||
- { id: 1, class: gr32 }
|
||||
- { id: 2, class: gr32 }
|
||||
- { id: 3, class: gr32 }
|
||||
- { id: 4, class: gr32 }
|
||||
- { id: 5, class: gr32 }
|
||||
- { id: 6, class: gr32 }
|
||||
- { id: 7, class: gr32 }
|
||||
- { id: 8, class: gr32 }
|
||||
- { id: 9, class: gr32 }
|
||||
- { id: 10, class: gr32 }
|
||||
- { id: 11, class: gr32 }
|
||||
- { id: 12, class: gr32 }
|
||||
- { id: 13, class: gr32_abcd }
|
||||
- { id: 14, class: gr8 }
|
||||
- { id: 15, class: gr32_abcd }
|
||||
- { id: 16, class: gr8 }
|
||||
- { id: 17, class: gr32 }
|
||||
- { id: 18, class: gr32_abcd }
|
||||
- { id: 19, class: gr8 }
|
||||
- { id: 20, class: gr32_abcd }
|
||||
- { id: 21, class: gr8 }
|
||||
- { id: 22, class: gr32_abcd }
|
||||
- { id: 23, class: gr8 }
|
||||
- { id: 24, class: gr32_abcd }
|
||||
- { id: 25, class: gr8 }
|
||||
- { id: 26, class: gr32_abcd }
|
||||
- { id: 27, class: gr8 }
|
||||
- { id: 28, class: gr32_abcd }
|
||||
- { id: 29, class: gr8 }
|
||||
- { id: 30, class: gr32_abcd }
|
||||
- { id: 31, class: gr8 }
|
||||
- { id: 32, class: gr32_abcd }
|
||||
- { id: 33, class: gr8 }
|
||||
- { id: 34, class: gr32 }
|
||||
- { id: 35, class: gr32_abcd }
|
||||
- { id: 36, class: gr8 }
|
||||
- { id: 37, class: gr32 }
|
||||
- { id: 38, class: gr32 }
|
||||
- { id: 39, class: gr32_abcd }
|
||||
- { id: 40, class: gr8 }
|
||||
- { id: 41, class: gr32_abcd }
|
||||
- { id: 42, class: gr8 }
|
||||
- { id: 43, class: gr32_abcd }
|
||||
- { id: 44, class: gr8 }
|
||||
- { id: 45, class: gr32_abcd }
|
||||
- { id: 46, class: gr8 }
|
||||
- { id: 47, class: gr32_abcd }
|
||||
- { id: 48, class: gr8 }
|
||||
- { id: 49, class: gr8 }
|
||||
- { id: 50, class: gr32_abcd }
|
||||
- { id: 51, class: gr8 }
|
||||
- { id: 52, class: gr32 }
|
||||
- { id: 53, class: gr32 }
|
||||
- { id: 54, class: gr32 }
|
||||
- { id: 55, class: gr32 }
|
||||
- { id: 56, class: gr32_abcd }
|
||||
- { id: 57, class: gr8 }
|
||||
- { id: 58, class: gr32_abcd }
|
||||
- { id: 59, class: gr8 }
|
||||
- { id: 60, class: gr32_abcd }
|
||||
- { id: 61, class: gr8 }
|
||||
- { id: 62, class: gr32_abcd }
|
||||
- { id: 63, class: gr8 }
|
||||
- { id: 64, class: gr32_abcd }
|
||||
- { id: 65, class: gr8 }
|
||||
- { id: 66, class: gr32_abcd }
|
||||
- { id: 67, class: gr8 }
|
||||
- { id: 68, class: gr32_abcd }
|
||||
- { id: 69, class: gr8 }
|
||||
- { id: 70, class: gr32_abcd }
|
||||
- { id: 71, class: gr8 }
|
||||
- { id: 72, class: gr32_abcd }
|
||||
- { id: 73, class: gr8 }
|
||||
- { id: 74, class: gr32 }
|
||||
- { id: 75, class: gr32 }
|
||||
- { id: 76, class: gr32_abcd }
|
||||
- { id: 77, class: gr8 }
|
||||
- { id: 78, class: gr32_abcd }
|
||||
- { id: 79, class: gr32 }
|
||||
- { id: 80, class: gr32 }
|
||||
- { id: 81, class: gr32_abcd }
|
||||
- { id: 82, class: gr32 }
|
||||
frameInfo:
|
||||
maxAlignment: 4
|
||||
hasCalls: true
|
||||
fixedStack:
|
||||
- { id: 0, size: 4, alignment: 4, stack-id: 0, isImmutable: true }
|
||||
body: |
|
||||
bb.0.bb:
|
||||
successors: %bb.1(0x00000001), %bb.2(0x7fffffff)
|
||||
|
||||
%13:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %13.sub_8bit, %13.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.2, implicit killed $eflags
|
||||
JMP_1 %bb.1
|
||||
|
||||
bb.1.bb5:
|
||||
successors:
|
||||
|
||||
|
||||
bb.2.bb6:
|
||||
successors: %bb.4(0x7fffffff), %bb.3(0x00000001)
|
||||
|
||||
%15:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %15.sub_8bit, %15.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.4, implicit killed $eflags
|
||||
JMP_1 %bb.3
|
||||
|
||||
bb.3.bb9:
|
||||
successors:
|
||||
|
||||
|
||||
bb.4.bb10:
|
||||
successors: %bb.6(0x7fffffff), %bb.5(0x00000001)
|
||||
|
||||
%12:gr32 = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (load 4 from %fixed-stack.0)
|
||||
%1:gr32 = LEA32r %12, 1, $noreg, 144, $noreg
|
||||
MOV32mr undef %17:gr32, 1, $noreg, 0, $noreg, %1 :: (store 4 into `%18** undef`)
|
||||
%18:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %18.sub_8bit, %18.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.6, implicit killed $eflags
|
||||
JMP_1 %bb.5
|
||||
|
||||
bb.5.bb13:
|
||||
successors:
|
||||
|
||||
|
||||
bb.6.bb14:
|
||||
successors: %bb.7(0x00000001), %bb.8(0x7fffffff)
|
||||
|
||||
%20:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %20.sub_8bit, %20.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.8, implicit killed $eflags
|
||||
JMP_1 %bb.7
|
||||
|
||||
bb.7.bb17:
|
||||
successors:
|
||||
|
||||
|
||||
bb.8.bb18:
|
||||
successors: %bb.10(0x7fffffff), %bb.9(0x00000001)
|
||||
|
||||
%22:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %22.sub_8bit, %22.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.10, implicit killed $eflags
|
||||
JMP_1 %bb.9
|
||||
|
||||
bb.9.bb19:
|
||||
successors:
|
||||
|
||||
|
||||
bb.10.bb20:
|
||||
successors: %bb.12(0x7fffffff), %bb.11(0x00000001)
|
||||
|
||||
%24:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %24.sub_8bit, %24.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.12, implicit killed $eflags
|
||||
JMP_1 %bb.11
|
||||
|
||||
bb.11.bb24:
|
||||
successors:
|
||||
|
||||
|
||||
bb.12.bb25:
|
||||
successors: %bb.13(0x00000001), %bb.14(0x7fffffff)
|
||||
|
||||
%26:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %26.sub_8bit, %26.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.14, implicit killed $eflags
|
||||
JMP_1 %bb.13
|
||||
|
||||
bb.13.bb29:
|
||||
successors:
|
||||
|
||||
|
||||
bb.14.bb30:
|
||||
%0:gr32 = LEA32r %12, 1, $noreg, 80, $noreg
|
||||
%28:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %28.sub_8bit, %28.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.20, implicit killed $eflags
|
||||
JMP_1 %bb.15
|
||||
|
||||
bb.15.bb31:
|
||||
successors: %bb.16(0x00000001), %bb.17(0x7fffffff)
|
||||
|
||||
%78:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %78.sub_8bit, %78.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.17, implicit killed $eflags
|
||||
JMP_1 %bb.16
|
||||
|
||||
bb.16.bb34:
|
||||
successors:
|
||||
|
||||
|
||||
bb.17.bb35:
|
||||
successors: %bb.18(0x7fffffff), %bb.19(0x00000001)
|
||||
|
||||
TEST8rr %78.sub_8bit, %78.sub_8bit, implicit-def $eflags
|
||||
JE_1 %bb.19, implicit killed $eflags
|
||||
|
||||
bb.18:
|
||||
%79:gr32 = LEA32r %12, 1, $noreg, 80, $noreg
|
||||
JMP_1 %bb.21
|
||||
|
||||
bb.19.bb36:
|
||||
successors:
|
||||
|
||||
|
||||
bb.20.bb38:
|
||||
%78:gr32_abcd = COPY %0
|
||||
%79:gr32 = COPY %0
|
||||
|
||||
bb.21.bb40:
|
||||
successors: %bb.22, %bb.23
|
||||
|
||||
%35:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %35.sub_8bit, %35.sub_8bit, implicit-def $eflags
|
||||
%80:gr32 = IMPLICIT_DEF
|
||||
JNE_1 %bb.23, implicit killed $eflags
|
||||
JMP_1 %bb.22
|
||||
|
||||
bb.22.bb43:
|
||||
ADJCALLSTACKDOWN32 0, 0, 0, implicit-def dead $esp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $esp, implicit $ssp
|
||||
CALLpcrel32 @_Znwj, csr_32, implicit $esp, implicit $ssp, implicit-def $esp, implicit-def $ssp, implicit-def $eax
|
||||
ADJCALLSTACKUP32 0, 0, implicit-def dead $esp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $esp, implicit $ssp
|
||||
%80:gr32 = COPY killed $eax
|
||||
MOV32mr undef %38:gr32, 1, $noreg, 0, $noreg, %78 :: (store 4 into `%18** undef`)
|
||||
MOV32mr %79, 1, $noreg, 0, $noreg, %80 :: (store 4 into %ir.tmp46)
|
||||
ADJCALLSTACKDOWN32 0, 0, 0, implicit-def dead $esp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $esp, implicit $ssp
|
||||
CALLpcrel32 @_ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_, csr_32, implicit $esp, implicit $ssp, implicit-def $esp, implicit-def $ssp
|
||||
ADJCALLSTACKUP32 0, 0, implicit-def dead $esp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $esp, implicit $ssp
|
||||
|
||||
bb.23.bb48:
|
||||
successors: %bb.24(0x00000001), %bb.25(0x7fffffff)
|
||||
|
||||
MOV32mi %80, 1, $noreg, 52, $noreg, @_ZN15COLLADASaxFWL1429ColladaParserAutoGen14Private15_preEnd__authorEv :: (store 4 into %ir.tmp50)
|
||||
%39:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %39.sub_8bit, %39.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.25, implicit killed $eflags
|
||||
JMP_1 %bb.24
|
||||
|
||||
bb.24.bb52:
|
||||
successors:
|
||||
|
||||
|
||||
bb.25.bb53:
|
||||
successors: %bb.27(0x7fffffff), %bb.26(0x00000001)
|
||||
|
||||
%41:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %41.sub_8bit, %41.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.27, implicit killed $eflags
|
||||
JMP_1 %bb.26
|
||||
|
||||
bb.26.bb54:
|
||||
successors:
|
||||
|
||||
|
||||
bb.27.bb55:
|
||||
successors: %bb.29(0x7fffffff), %bb.28(0x00000001)
|
||||
|
||||
%43:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %43.sub_8bit, %43.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.29, implicit killed $eflags
|
||||
JMP_1 %bb.28
|
||||
|
||||
bb.28.bb58:
|
||||
successors:
|
||||
|
||||
|
||||
bb.29.bb59:
|
||||
successors: %bb.31(0x7fffffff), %bb.30(0x00000001)
|
||||
|
||||
%45:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %45.sub_8bit, %45.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.31, implicit killed $eflags
|
||||
JMP_1 %bb.30
|
||||
|
||||
bb.30.bb61:
|
||||
successors:
|
||||
|
||||
|
||||
bb.31.bb62:
|
||||
successors: %bb.32(0x00000001), %bb.33(0x7fffffff)
|
||||
|
||||
%47:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %47.sub_8bit, %47.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.33, implicit killed $eflags
|
||||
JMP_1 %bb.32
|
||||
|
||||
bb.32.bb64:
|
||||
successors:
|
||||
|
||||
|
||||
bb.33.bb65:
|
||||
successors: %bb.37(0x30000000), %bb.34(0x50000000)
|
||||
|
||||
%49:gr8 = MOV8ri 1
|
||||
TEST8rr %49, %49, implicit-def $eflags
|
||||
JNE_1 %bb.37, implicit killed $eflags
|
||||
JMP_1 %bb.34
|
||||
|
||||
bb.34.bb67:
|
||||
successors: %bb.36(0x00000001), %bb.35(0x7fffffff)
|
||||
|
||||
%81:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %81.sub_8bit, %81.sub_8bit, implicit-def $eflags
|
||||
JE_1 %bb.36, implicit killed $eflags
|
||||
|
||||
bb.35:
|
||||
%82:gr32 = LEA32r %12, 1, $noreg, 80, $noreg
|
||||
JMP_1 %bb.38
|
||||
|
||||
bb.36.bb70:
|
||||
successors:
|
||||
|
||||
|
||||
bb.37.bb72:
|
||||
%81:gr32_abcd = COPY %0
|
||||
%82:gr32 = COPY %0
|
||||
|
||||
bb.38.bb74:
|
||||
successors: %bb.40(0x7fffffff), %bb.39(0x00000001)
|
||||
|
||||
ADJCALLSTACKDOWN32 0, 0, 0, implicit-def dead $esp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $esp, implicit $ssp
|
||||
CALLpcrel32 @_Znwj, csr_32, implicit $esp, implicit $ssp, implicit-def $esp, implicit-def $ssp, implicit-def $eax
|
||||
ADJCALLSTACKUP32 0, 0, implicit-def dead $esp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $esp, implicit $ssp
|
||||
%52:gr32 = COPY killed $eax
|
||||
MOV32mr undef %53:gr32, 1, $noreg, 0, $noreg, %81 :: (store 4 into `%18** undef`)
|
||||
MOV32mr %82, 1, $noreg, 0, $noreg, %52 :: (store 4 into %ir.tmp79)
|
||||
ADJCALLSTACKDOWN32 0, 0, 0, implicit-def dead $esp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $esp, implicit $ssp
|
||||
CALLpcrel32 @_ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_, csr_32, implicit $esp, implicit $ssp, implicit-def $esp, implicit-def $ssp
|
||||
ADJCALLSTACKUP32 0, 0, implicit-def dead $esp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $esp, implicit $ssp
|
||||
MOV32mi %52, 1, $noreg, 36, $noreg, @_ZN15COLLADASaxFWL1429ColladaParserAutoGen14Private14_end__commentsEv :: (store 4 into %ir.tmp81)
|
||||
MOV32mr undef %54:gr32, 1, $noreg, 0, $noreg, %1 :: (store 4 into `%18** undef`)
|
||||
%55:gr32 = MOV32rm %12, 1, $noreg, 140, $noreg :: (load 4 from %ir.3)
|
||||
CMP32mi8 %55, 1, $noreg, 0, $noreg, 0, implicit-def $eflags :: (load 4 from %ir.tmp864)
|
||||
JE_1 %bb.40, implicit killed $eflags
|
||||
JMP_1 %bb.39
|
||||
|
||||
bb.39.bb89:
|
||||
successors:
|
||||
|
||||
|
||||
bb.40.bb90:
|
||||
successors: %bb.42(0x00000001), %bb.41(0x7fffffff)
|
||||
|
||||
%56:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %56.sub_8bit, %56.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.42, implicit killed $eflags
|
||||
JMP_1 %bb.41
|
||||
|
||||
bb.41.bb92:
|
||||
successors: %bb.43(0x00000001), %bb.44(0x7fffffff)
|
||||
|
||||
%58:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %58.sub_8bit, %58.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.43, implicit killed $eflags
|
||||
JMP_1 %bb.44
|
||||
|
||||
bb.42.bb94:
|
||||
successors:
|
||||
|
||||
|
||||
bb.43.bb96:
|
||||
successors:
|
||||
|
||||
|
||||
bb.44.bb97:
|
||||
successors: %bb.45(0x00000001), %bb.46(0x7fffffff)
|
||||
|
||||
%60:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %60.sub_8bit, %60.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.46, implicit killed $eflags
|
||||
JMP_1 %bb.45
|
||||
|
||||
bb.45.bb101:
|
||||
successors:
|
||||
|
||||
|
||||
bb.46.bb102:
|
||||
successors: %bb.48(0x7fffffff), %bb.47(0x00000001)
|
||||
|
||||
%62:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %62.sub_8bit, %62.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.48, implicit killed $eflags
|
||||
JMP_1 %bb.47
|
||||
|
||||
bb.47.bb103:
|
||||
successors:
|
||||
|
||||
|
||||
bb.48.bb104:
|
||||
successors: %bb.50(0x7fffffff), %bb.49(0x00000001)
|
||||
|
||||
%64:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %64.sub_8bit, %64.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.50, implicit killed $eflags
|
||||
JMP_1 %bb.49
|
||||
|
||||
bb.49.bb108:
|
||||
successors:
|
||||
|
||||
|
||||
bb.50.bb109:
|
||||
successors: %bb.51(0x00000001), %bb.52(0x7fffffff)
|
||||
|
||||
%66:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %66.sub_8bit, %66.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.52, implicit killed $eflags
|
||||
JMP_1 %bb.51
|
||||
|
||||
bb.51.bb111:
|
||||
successors:
|
||||
|
||||
|
||||
bb.52.bb112:
|
||||
successors: %bb.54(0x7fffffff), %bb.53(0x00000001)
|
||||
|
||||
%68:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %68.sub_8bit, %68.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.54, implicit killed $eflags
|
||||
JMP_1 %bb.53
|
||||
|
||||
bb.53.bb117:
|
||||
successors:
|
||||
|
||||
|
||||
bb.54.bb118:
|
||||
successors: %bb.55(0x00000001), %bb.56(0x7fffffff)
|
||||
|
||||
%70:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %70.sub_8bit, %70.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.56, implicit killed $eflags
|
||||
JMP_1 %bb.55
|
||||
|
||||
bb.55.bb120:
|
||||
successors:
|
||||
|
||||
|
||||
bb.56.bb121:
|
||||
successors: %bb.57(0x00000001), %bb.58(0x7fffffff)
|
||||
|
||||
%72:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %72.sub_8bit, %72.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.58, implicit killed $eflags
|
||||
JMP_1 %bb.57
|
||||
|
||||
bb.57.bb124:
|
||||
successors:
|
||||
|
||||
|
||||
bb.58.bb125:
|
||||
successors: %bb.62(0x00000001), %bb.59(0x7fffffff)
|
||||
|
||||
CMP32mi8 %0, 1, $noreg, 0, $noreg, 0, implicit-def $eflags :: (load 4 from %ir.4)
|
||||
JE_1 %bb.62, implicit killed $eflags
|
||||
JMP_1 %bb.59
|
||||
|
||||
bb.59.bb128:
|
||||
|
||||
bb.60.bb129:
|
||||
successors: %bb.60(0x7fffffff), %bb.61(0x00000001)
|
||||
|
||||
CMP32ri undef %75:gr32, 95406325, implicit-def $eflags
|
||||
JB_1 %bb.61, implicit killed $eflags
|
||||
JMP_1 %bb.60
|
||||
|
||||
bb.61.bb133:
|
||||
successors:
|
||||
|
||||
|
||||
bb.62.bb135:
|
||||
successors: %bb.63, %bb.64
|
||||
|
||||
%76:gr32_abcd = MOV32r0 implicit-def dead $eflags
|
||||
TEST8rr %76.sub_8bit, %76.sub_8bit, implicit-def $eflags
|
||||
JNE_1 %bb.64, implicit killed $eflags
|
||||
JMP_1 %bb.63
|
||||
|
||||
bb.63.bb137:
|
||||
successors:
|
||||
|
||||
|
||||
bb.64.bb138:
|
||||
|
||||
...
|
Loading…
Reference in New Issue
Block a user