51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
out << "SELECT(" << ins.m_memberIndex;
return out << ')';
}
ostream& operator<<( ostream& out, const Load& ins )
{
out << "LOAD(";
return out << ins.m_type << ')';
}
ostream& operator<<( ostream& out, const Store& ins )
{
return out << "STORE";
}
ostream& operator<<( ostream& out, const PHOverrideSet& ins )
{
return out << "PHOVERRIDESET(" << ins.m_name << ')';
}
ostream& operator<<( ostream& out, const PHOverrideClear& ins )
{
return out << "PHOVERRIDECLEAR(" << ins.m_name << ')';
}
ostream& operator<<( ostream& out, const Phi& ins )
{
out << "PHI(" << ins.m_destIndex << ", " << ins.m_type;
for( const auto& [bb,val] : ins.m_incomings )
out << ", " << bb.lock()->index() << ':' << val;
return out << " )";
}
bool Select::operator<( const Select& rhs ) const
{
return m_memberIndex < rhs.m_memberIndex;
}
bool Load::operator<( const Load& rhs ) const
{
return m_type < rhs.m_type;
}
bool Store::operator<( const Store& rhs ) const
{
return m_type < rhs.m_type;
}
bool PHOverrideSet::operator<( const PHOverrideSet& rhs ) const
{
return m_name < rhs.m_name;
}
bool PHOverrideClear::operator<( const PHOverrideClear& rhs ) const
{
return m_name < rhs.m_name;
}
}
|
|
|
|
|
|
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
out << "SELECT(" << ins.m_memberIndex;
return out << ')';
}
ostream& operator<<( ostream& out, const Load& ins )
{
out << "LOAD(";
return out << ins.m_type.get() << ')';
}
ostream& operator<<( ostream& out, const Store& ins )
{
return out << "STORE";
}
ostream& operator<<( ostream& out, const PHOverrideSet& ins )
{
return out << "PHOVERRIDESET(" << ins.m_name << ')';
}
ostream& operator<<( ostream& out, const PHOverrideClear& ins )
{
return out << "PHOVERRIDECLEAR(" << ins.m_name << ')';
}
ostream& operator<<( ostream& out, const Phi& ins )
{
out << "PHI(" << ins.m_destIndex << ", " << ins.m_type.get();
for( const auto& [bb,val] : ins.m_incomings )
out << ", " << bb.lock()->index() << ':' << val;
return out << " )";
}
bool Select::operator<( const Select& rhs ) const
{
return m_memberIndex < rhs.m_memberIndex;
}
bool Load::operator<( const Load& rhs ) const
{
return m_type < rhs.m_type.get();
}
bool Store::operator<( const Store& rhs ) const
{
return m_type < rhs.m_type.get();
}
bool PHOverrideSet::operator<( const PHOverrideSet& rhs ) const
{
return m_name < rhs.m_name;
}
bool PHOverrideClear::operator<( const PHOverrideClear& rhs ) const
{
return m_name < rhs.m_name;
}
}
|