Add the 'resume' instruction for the new EH rewrite. · clang-omp/llvm@dccc03b (original) (raw)

`@@ -100,79 +100,79 @@ HANDLE_TERM_INST ( 3, Switch , SwitchInst)

`

100

100

`HANDLE_TERM_INST ( 4, IndirectBr , IndirectBrInst)

`

101

101

`HANDLE_TERM_INST ( 5, Invoke , InvokeInst)

`

102

102

`HANDLE_TERM_INST ( 6, Unwind , UnwindInst)

`

103

``

`-

HANDLE_TERM_INST ( 7, Unreachable, UnreachableInst)

`

104

``

`-

LAST_TERM_INST ( 7)

`

``

103

`+

HANDLE_TERM_INST ( 7, Resume , ResumeInst)

`

``

104

`+

HANDLE_TERM_INST ( 8, Unreachable, UnreachableInst)

`

``

105

`+

LAST_TERM_INST ( 8)

`

105

106

``

106

107

`// Standard binary operators...

`

107

``

`-

FIRST_BINARY_INST( 8)

`

108

``

`-

HANDLE_BINARY_INST( 8, Add , BinaryOperator)

`

109

``

`-

HANDLE_BINARY_INST( 9, FAdd , BinaryOperator)

`

110

``

`-

HANDLE_BINARY_INST(10, Sub , BinaryOperator)

`

111

``

`-

HANDLE_BINARY_INST(11, FSub , BinaryOperator)

`

112

``

`-

HANDLE_BINARY_INST(12, Mul , BinaryOperator)

`

113

``

`-

HANDLE_BINARY_INST(13, FMul , BinaryOperator)

`

114

``

`-

HANDLE_BINARY_INST(14, UDiv , BinaryOperator)

`

115

``

`-

HANDLE_BINARY_INST(15, SDiv , BinaryOperator)

`

116

``

`-

HANDLE_BINARY_INST(16, FDiv , BinaryOperator)

`

117

``

`-

HANDLE_BINARY_INST(17, URem , BinaryOperator)

`

118

``

`-

HANDLE_BINARY_INST(18, SRem , BinaryOperator)

`

119

``

`-

HANDLE_BINARY_INST(19, FRem , BinaryOperator)

`

``

108

`+

FIRST_BINARY_INST( 9)

`

``

109

`+

HANDLE_BINARY_INST( 9, Add , BinaryOperator)

`

``

110

`+

HANDLE_BINARY_INST(10, FAdd , BinaryOperator)

`

``

111

`+

HANDLE_BINARY_INST(11, Sub , BinaryOperator)

`

``

112

`+

HANDLE_BINARY_INST(12, FSub , BinaryOperator)

`

``

113

`+

HANDLE_BINARY_INST(13, Mul , BinaryOperator)

`

``

114

`+

HANDLE_BINARY_INST(14, FMul , BinaryOperator)

`

``

115

`+

HANDLE_BINARY_INST(15, UDiv , BinaryOperator)

`

``

116

`+

HANDLE_BINARY_INST(16, SDiv , BinaryOperator)

`

``

117

`+

HANDLE_BINARY_INST(17, FDiv , BinaryOperator)

`

``

118

`+

HANDLE_BINARY_INST(18, URem , BinaryOperator)

`

``

119

`+

HANDLE_BINARY_INST(19, SRem , BinaryOperator)

`

``

120

`+

HANDLE_BINARY_INST(20, FRem , BinaryOperator)

`

120

121

``

121

122

`// Logical operators (integer operands)

`

122

``

`-

HANDLE_BINARY_INST(20, Shl , BinaryOperator) // Shift left (logical)

`

123

``

`-

HANDLE_BINARY_INST(21, LShr , BinaryOperator) // Shift right (logical)

`

124

``

`-

HANDLE_BINARY_INST(22, AShr , BinaryOperator) // Shift right (arithmetic)

`

125

``

`-

HANDLE_BINARY_INST(23, And , BinaryOperator)

`

126

``

`-

HANDLE_BINARY_INST(24, Or , BinaryOperator)

`

127

``

`-

HANDLE_BINARY_INST(25, Xor , BinaryOperator)

`

128

``

`-

LAST_BINARY_INST(25)

`

``

123

`+

HANDLE_BINARY_INST(21, Shl , BinaryOperator) // Shift left (logical)

`

``

124

`+

HANDLE_BINARY_INST(22, LShr , BinaryOperator) // Shift right (logical)

`

``

125

`+

HANDLE_BINARY_INST(23, AShr , BinaryOperator) // Shift right (arithmetic)

`

``

126

`+

HANDLE_BINARY_INST(24, And , BinaryOperator)

`

``

127

`+

HANDLE_BINARY_INST(25, Or , BinaryOperator)

`

``

128

`+

HANDLE_BINARY_INST(26, Xor , BinaryOperator)

`

``

129

`+

LAST_BINARY_INST(26)

`

129

130

``

130

131

`// Memory operators...

`

131

``

`-

FIRST_MEMORY_INST(26)

`

132

``

`-

HANDLE_MEMORY_INST(26, Alloca, AllocaInst) // Stack management

`

133

``

`-

HANDLE_MEMORY_INST(27, Load , LoadInst ) // Memory manipulation instrs

`

134

``

`-

HANDLE_MEMORY_INST(28, Store , StoreInst )

`

135

``

`-

HANDLE_MEMORY_INST(29, GetElementPtr, GetElementPtrInst)

`

136

``

`-

HANDLE_MEMORY_INST(30, Fence , FenceInst )

`

137

``

`-

HANDLE_MEMORY_INST(31, AtomicCmpXchg , AtomicCmpXchgInst )

`

138

``

`-

HANDLE_MEMORY_INST(32, AtomicRMW , AtomicRMWInst )

`

139

``

`-

LAST_MEMORY_INST(32)

`

``

132

`+

FIRST_MEMORY_INST(27)

`

``

133

`+

HANDLE_MEMORY_INST(27, Alloca, AllocaInst) // Stack management

`

``

134

`+

HANDLE_MEMORY_INST(28, Load , LoadInst ) // Memory manipulation instrs

`

``

135

`+

HANDLE_MEMORY_INST(29, Store , StoreInst )

`

``

136

`+

HANDLE_MEMORY_INST(30, GetElementPtr, GetElementPtrInst)

`

``

137

`+

HANDLE_MEMORY_INST(31, Fence , FenceInst )

`

``

138

`+

HANDLE_MEMORY_INST(32, AtomicCmpXchg , AtomicCmpXchgInst )

`

``

139

`+

HANDLE_MEMORY_INST(33, AtomicRMW , AtomicRMWInst )

`

``

140

`+

LAST_MEMORY_INST(33)

`

140

141

``

141

142

`// Cast operators ...

`

142

143

`// NOTE: The order matters here because CastInst::isEliminableCastPair

`

143

144

`// NOTE: (see Instructions.cpp) encodes a table based on this ordering.

`

144

``

`-

FIRST_CAST_INST(33)

`

145

``

`-

HANDLE_CAST_INST(33, Trunc , TruncInst ) // Truncate integers

`

146

``

`-

HANDLE_CAST_INST(34, ZExt , ZExtInst ) // Zero extend integers

`

147

``

`-

HANDLE_CAST_INST(35, SExt , SExtInst ) // Sign extend integers

`

148

``

`-

HANDLE_CAST_INST(36, FPToUI , FPToUIInst ) // floating point -> UInt

`

149

``

`-

HANDLE_CAST_INST(37, FPToSI , FPToSIInst ) // floating point -> SInt

`

150

``

`-

HANDLE_CAST_INST(38, UIToFP , UIToFPInst ) // UInt -> floating point

`

151

``

`-

HANDLE_CAST_INST(39, SIToFP , SIToFPInst ) // SInt -> floating point

`

152

``

`-

HANDLE_CAST_INST(40, FPTrunc , FPTruncInst ) // Truncate floating point

`

153

``

`-

HANDLE_CAST_INST(41, FPExt , FPExtInst ) // Extend floating point

`

154

``

`-

HANDLE_CAST_INST(42, PtrToInt, PtrToIntInst) // Pointer -> Integer

`

155

``

`-

HANDLE_CAST_INST(43, IntToPtr, IntToPtrInst) // Integer -> Pointer

`

156

``

`-

HANDLE_CAST_INST(44, BitCast , BitCastInst ) // Type cast

`

157

``

`-

LAST_CAST_INST(44)

`

``

145

`+

FIRST_CAST_INST(34)

`

``

146

`+

HANDLE_CAST_INST(34, Trunc , TruncInst ) // Truncate integers

`

``

147

`+

HANDLE_CAST_INST(35, ZExt , ZExtInst ) // Zero extend integers

`

``

148

`+

HANDLE_CAST_INST(36, SExt , SExtInst ) // Sign extend integers

`

``

149

`+

HANDLE_CAST_INST(37, FPToUI , FPToUIInst ) // floating point -> UInt

`

``

150

`+

HANDLE_CAST_INST(38, FPToSI , FPToSIInst ) // floating point -> SInt

`

``

151

`+

HANDLE_CAST_INST(39, UIToFP , UIToFPInst ) // UInt -> floating point

`

``

152

`+

HANDLE_CAST_INST(40, SIToFP , SIToFPInst ) // SInt -> floating point

`

``

153

`+

HANDLE_CAST_INST(41, FPTrunc , FPTruncInst ) // Truncate floating point

`

``

154

`+

HANDLE_CAST_INST(42, FPExt , FPExtInst ) // Extend floating point

`

``

155

`+

HANDLE_CAST_INST(43, PtrToInt, PtrToIntInst) // Pointer -> Integer

`

``

156

`+

HANDLE_CAST_INST(44, IntToPtr, IntToPtrInst) // Integer -> Pointer

`

``

157

`+

HANDLE_CAST_INST(45, BitCast , BitCastInst ) // Type cast

`

``

158

`+

LAST_CAST_INST(45)

`

158

159

``

159

160

`// Other operators...

`

160

``

`-

FIRST_OTHER_INST(45)

`

161

``

`-

HANDLE_OTHER_INST(45, ICmp , ICmpInst ) // Integer comparison instruction

`

162

``

`-

HANDLE_OTHER_INST(46, FCmp , FCmpInst ) // Floating point comparison instr.

`

163

``

`-

HANDLE_OTHER_INST(47, PHI , PHINode ) // PHI node instruction

`

164

``

`-

HANDLE_OTHER_INST(48, Call , CallInst ) // Call a function

`

165

``

`-

HANDLE_OTHER_INST(49, Select , SelectInst ) // select instruction

`

166

``

`-

HANDLE_OTHER_INST(50, UserOp1, Instruction) // May be used internally in a pass

`

167

``

`-

HANDLE_OTHER_INST(51, UserOp2, Instruction) // Internal to passes only

`

168

``

`-

HANDLE_OTHER_INST(52, VAArg , VAArgInst ) // vaarg instruction

`

169

``

`-

HANDLE_OTHER_INST(53, ExtractElement, ExtractElementInst)// extract from vector

`

170

``

`-

HANDLE_OTHER_INST(54, InsertElement, InsertElementInst) // insert into vector

`

171

``

`-

HANDLE_OTHER_INST(55, ShuffleVector, ShuffleVectorInst) // shuffle two vectors.

`

172

``

`-

HANDLE_OTHER_INST(56, ExtractValue, ExtractValueInst)// extract from aggregate

`

173

``

`-

HANDLE_OTHER_INST(57, InsertValue, InsertValueInst) // insert into aggregate

`

174

``

-

175

``

`-

LAST_OTHER_INST(57)

`

``

161

`+

FIRST_OTHER_INST(46)

`

``

162

`+

HANDLE_OTHER_INST(46, ICmp , ICmpInst ) // Integer comparison instruction

`

``

163

`+

HANDLE_OTHER_INST(47, FCmp , FCmpInst ) // Floating point comparison instr.

`

``

164

`+

HANDLE_OTHER_INST(48, PHI , PHINode ) // PHI node instruction

`

``

165

`+

HANDLE_OTHER_INST(49, Call , CallInst ) // Call a function

`

``

166

`+

HANDLE_OTHER_INST(50, Select , SelectInst ) // select instruction

`

``

167

`+

HANDLE_OTHER_INST(51, UserOp1, Instruction) // May be used internally in a pass

`

``

168

`+

HANDLE_OTHER_INST(52, UserOp2, Instruction) // Internal to passes only

`

``

169

`+

HANDLE_OTHER_INST(53, VAArg , VAArgInst ) // vaarg instruction

`

``

170

`+

HANDLE_OTHER_INST(54, ExtractElement, ExtractElementInst)// extract from vector

`

``

171

`+

HANDLE_OTHER_INST(55, InsertElement, InsertElementInst) // insert into vector

`

``

172

`+

HANDLE_OTHER_INST(56, ShuffleVector, ShuffleVectorInst) // shuffle two vectors.

`

``

173

`+

HANDLE_OTHER_INST(57, ExtractValue, ExtractValueInst)// extract from aggregate

`

``

174

`+

HANDLE_OTHER_INST(58, InsertValue, InsertValueInst) // insert into aggregate

`

``

175

`+

LAST_OTHER_INST(58)

`

176

176

``

177

177

`#undef FIRST_TERM_INST

`

178

178

`#undef HANDLE_TERM_INST

`