diff options
Diffstat (limited to 'runtime/onert/core/src/ir/Operation.cc')
-rw-r--r-- | runtime/onert/core/src/ir/Operation.cc | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/runtime/onert/core/src/ir/Operation.cc b/runtime/onert/core/src/ir/Operation.cc index 04be8c0d9..64792525d 100644 --- a/runtime/onert/core/src/ir/Operation.cc +++ b/runtime/onert/core/src/ir/Operation.cc @@ -24,22 +24,33 @@ namespace ir { Operation::Operation(OperandConstraint input_constr, const OperandIndexSequence &inputs, - const OperandIndexSequence &outputs) - : _input_constr{input_constr}, _inputs{inputs}, _outputs{outputs} + const OperandIndexSequence &outputs, OperandConstraint output_constr) + : _input_constr{input_constr}, _output_constr{output_constr} { + setInputs(inputs); + setOutputs(outputs); } -Operation::Operation(OperandConstraint input_constr) : _input_constr{input_constr} {} +Operation::Operation(OperandConstraint input_constr, OperandConstraint output_constr) + : _input_constr{input_constr}, _output_constr{output_constr} +{ +} Operation::~Operation() = default; void Operation::setInputs(const OperandIndexSequence &indexes) { - assert(_input_constr.check(indexes.size())); + if (!_input_constr.check(indexes.size())) + throw std::runtime_error{"Invalid number of input tensors for this operation."}; _inputs = indexes; } -void Operation::setOutputs(const OperandIndexSequence &indexes) { _outputs = indexes; } +void Operation::setOutputs(const OperandIndexSequence &indexes) +{ + if (!_output_constr.check(indexes.size())) + throw std::runtime_error{"Invalid number of output tensors for this operation."}; + _outputs = indexes; +} void Operation::replaceInputs(const OperandIndex &from, const OperandIndex &to) { |