The discussion on forum:
https://llvm.discourse.group/t/bug-in-partial-dialect-conversion/4115
The applyPartialConversion didn't handle the operations, that were
marked as illegal inside dynamic legality callback.
Instead of reporting error, if such operation was not converted to legal set,
the method just added it to unconvertedSet in the same way as unknown operations.
This patch fixes that and handle dynamically illegal operations as well.
The patch includes 2 fixes for existing passes:
- tensor-bufferize - explicitly mark std.return as legal.
- convert-parallel-loops-to-gpu - ugly fix with marking visited operations to avoid recursive legality checks.
There's a second criterion, right?