@@ -255,105 +255,79 @@ def FunctionOpInterface : OpInterface<"FunctionOpInterface", [
255
255
BlockArgListType getArguments() { return getFunctionBody().getArguments(); }
256
256
257
257
/// Insert a single argument of type `argType` with attributes `argAttrs` and
258
- /// location `argLoc` at `argIndex`. Returns failure if the function cannot be
259
- /// updated to have the new signature.
260
- ::llvm::LogicalResult insertArgument(
261
- unsigned argIndex, ::mlir::Type argType, ::mlir::DictionaryAttr argAttrs,
262
- ::mlir::Location argLoc) {
263
- return insertArguments({argIndex}, {argType}, {argAttrs}, {argLoc});
258
+ /// location `argLoc` at `argIndex`.
259
+ void insertArgument(unsigned argIndex, ::mlir::Type argType, ::mlir::DictionaryAttr argAttrs,
260
+ ::mlir::Location argLoc) {
261
+ insertArguments({argIndex}, {argType}, {argAttrs}, {argLoc});
264
262
}
265
263
266
264
/// Inserts arguments with the listed types, attributes, and locations at the
267
265
/// listed indices. `argIndices` must be sorted. Arguments are inserted in the
268
266
/// order they are listed, such that arguments with identical index will
269
- /// appear in the same order that they were listed here. Returns failure if
270
- /// the function cannot be updated to have the new signature.
271
- ::llvm::LogicalResult insertArguments(
272
- ::llvm::ArrayRef<unsigned> argIndices, ::mlir::TypeRange argTypes,
273
- ::llvm::ArrayRef<::mlir::DictionaryAttr> argAttrs,
274
- ::llvm::ArrayRef<::mlir::Location> argLocs) {
267
+ /// appear in the same order that they were listed here.
268
+ void insertArguments(::llvm::ArrayRef<unsigned> argIndices, ::mlir::TypeRange argTypes,
269
+ ::llvm::ArrayRef<::mlir::DictionaryAttr> argAttrs,
270
+ ::llvm::ArrayRef<::mlir::Location> argLocs) {
275
271
unsigned originalNumArgs = $_op.getNumArguments();
276
272
::mlir::Type newType = $_op.getTypeWithArgsAndResults(
277
273
argIndices, argTypes, /*resultIndices=*/{}, /*resultTypes=*/{});
278
- if (!newType)
279
- return ::llvm::failure();
280
274
::mlir::function_interface_impl::insertFunctionArguments(
281
275
$_op, argIndices, argTypes, argAttrs, argLocs,
282
276
originalNumArgs, newType);
283
- return ::llvm::success();
284
277
}
285
278
286
- /// Insert a single result of type `resultType` at `resultIndex`.Returns
287
- /// failure if the function cannot be updated to have the new signature.
288
- ::llvm::LogicalResult insertResult(
289
- unsigned resultIndex, ::mlir::Type resultType,
290
- ::mlir::DictionaryAttr resultAttrs) {
291
- return insertResults({resultIndex}, {resultType}, {resultAttrs});
279
+ /// Insert a single result of type `resultType` at `resultIndex`.
280
+ void insertResult(unsigned resultIndex, ::mlir::Type resultType,
281
+ ::mlir::DictionaryAttr resultAttrs) {
282
+ insertResults({resultIndex}, {resultType}, {resultAttrs});
292
283
}
293
284
294
285
/// Inserts results with the listed types at the listed indices.
295
286
/// `resultIndices` must be sorted. Results are inserted in the order they are
296
287
/// listed, such that results with identical index will appear in the same
297
- /// order that they were listed here. Returns failure if the function
298
- /// cannot be updated to have the new signature.
299
- ::llvm::LogicalResult insertResults(
300
- ::llvm::ArrayRef<unsigned> resultIndices,
301
- ::mlir::TypeRange resultTypes,
302
- ::llvm::ArrayRef<::mlir::DictionaryAttr> resultAttrs) {
288
+ /// order that they were listed here.
289
+ void insertResults(::llvm::ArrayRef<unsigned> resultIndices, ::mlir::TypeRange resultTypes,
290
+ ::llvm::ArrayRef<::mlir::DictionaryAttr> resultAttrs) {
303
291
unsigned originalNumResults = $_op.getNumResults();
304
292
::mlir::Type newType = $_op.getTypeWithArgsAndResults(
305
293
/*argIndices=*/{}, /*argTypes=*/{}, resultIndices, resultTypes);
306
- if (!newType)
307
- return ::llvm::failure();
308
294
::mlir::function_interface_impl::insertFunctionResults(
309
295
$_op, resultIndices, resultTypes, resultAttrs,
310
296
originalNumResults, newType);
311
- return ::llvm::success();
312
297
}
313
298
314
- /// Erase a single argument at `argIndex`. Returns failure if the function
315
- /// cannot be updated to have the new signature.
316
- ::llvm::LogicalResult eraseArgument(unsigned argIndex) {
299
+ /// Erase a single argument at `argIndex`.
300
+ void eraseArgument(unsigned argIndex) {
317
301
::llvm::BitVector argsToErase($_op.getNumArguments());
318
302
argsToErase.set(argIndex);
319
- return eraseArguments(argsToErase);
303
+ eraseArguments(argsToErase);
320
304
}
321
305
322
- /// Erases the arguments listed in `argIndices`. Returns failure if the
323
- /// function cannot be updated to have the new signature.
324
- ::llvm::LogicalResult eraseArguments(const ::llvm::BitVector &argIndices) {
306
+ /// Erases the arguments listed in `argIndices`.
307
+ void eraseArguments(const ::llvm::BitVector &argIndices) {
325
308
::mlir::Type newType = $_op.getTypeWithoutArgs(argIndices);
326
- if (!newType)
327
- return ::llvm::failure();
328
309
::mlir::function_interface_impl::eraseFunctionArguments(
329
310
$_op, argIndices, newType);
330
- return ::llvm::success();
331
311
}
332
312
333
- /// Erase a single result at `resultIndex`. Returns failure if the function
334
- /// cannot be updated to have the new signature.
335
- LogicalResult eraseResult(unsigned resultIndex) {
313
+ /// Erase a single result at `resultIndex`.
314
+ void eraseResult(unsigned resultIndex) {
336
315
::llvm::BitVector resultsToErase($_op.getNumResults());
337
316
resultsToErase.set(resultIndex);
338
- return eraseResults(resultsToErase);
317
+ eraseResults(resultsToErase);
339
318
}
340
319
341
- /// Erases the results listed in `resultIndices`. Returns failure if the
342
- /// function cannot be updated to have the new signature.
343
- ::llvm::LogicalResult eraseResults(const ::llvm::BitVector &resultIndices) {
320
+ /// Erases the results listed in `resultIndices`.
321
+ void eraseResults(const ::llvm::BitVector &resultIndices) {
344
322
::mlir::Type newType = $_op.getTypeWithoutResults(resultIndices);
345
- if (!newType)
346
- return ::llvm::failure();
347
323
::mlir::function_interface_impl::eraseFunctionResults(
348
324
$_op, resultIndices, newType);
349
- return ::llvm::success();
350
325
}
351
326
352
327
/// Return the type of this function with the specified arguments and
353
328
/// results inserted. This is used to update the function's signature in
354
329
/// the `insertArguments` and `insertResults` methods. The arrays must be
355
- /// sorted by increasing index. Return nullptr if the updated type would
356
- /// not be valid.
330
+ /// sorted by increasing index.
357
331
::mlir::Type getTypeWithArgsAndResults(
358
332
::llvm::ArrayRef<unsigned> argIndices, ::mlir::TypeRange argTypes,
359
333
::llvm::ArrayRef<unsigned> resultIndices, ::mlir::TypeRange resultTypes) {
@@ -367,8 +341,7 @@ def FunctionOpInterface : OpInterface<"FunctionOpInterface", [
367
341
368
342
/// Return the type of this function without the specified arguments and
369
343
/// results. This is used to update the function's signature in the
370
- /// `eraseArguments` and `eraseResults` methods. Return nullptr if the
371
- /// updated type would not be valid.
344
+ /// `eraseArguments` and `eraseResults` methods.
372
345
::mlir::Type getTypeWithoutArgsAndResults(
373
346
const ::llvm::BitVector &argIndices, const ::llvm::BitVector &resultIndices) {
374
347
::llvm::SmallVector<::mlir::Type> argStorage, resultStorage;
0 commit comments