Open YangWiz opened 6 days ago
Do you mind if you could share the input MLIR file? AndOp should have been splitted into variadic ops.
@uenoku Thank you for your reply! I found that the AndOp has been split correctly, except when there is only one input, which makes the operation essentially meaningless. I have many comb.and operations in my code, and the crash report suggested that I should pre-lower the variadic operations. This leads me to believe that the comb.and variadic function doesn't work properly without accounting for the single-input condition in my code.
The code caused crash:
%fsm_output = comb.and %0 : i1
Ok, interesting! PrepareForEmission shouldn't crash even when there is a single operand so we'll get a fix.
Summary: When running circt-opt, I encountered an assertion failure in ExportVerilog.cpp related to handling of a comb::AndOp operation. The tool crashes with the following error:
The documentation didn’t mention that I should pre-lower the variadics before using the comb, so I think it's a bug. Additionally, the crash report suggests submitting a bug report: "PLEASE submit a bug report to https://github.com/llvm/circt and include the crash backtrace."
The command I used is:
CIRCT version: commit 33c35fff11c79a3d3c0f78120c0296a700db2cfa OS version: Ubuntu 22.04
The crash backtrace is: