Bugzilla Ticket No: Bug 46884 [https://bugs.llvm.org/show_bug.cgi?id=46884]
Flush op assembly syntax was ambiguous:
Consider the below test case:
flush operation is not having any arguments.
But the next statement token i.e "%2" is read as the argument for flush operation and then translator issues an error.
$ cat -n flush.mlir
1 llvm.func @_QQmain(%arg0: !llvm.i32) { 2 %0 = llvm.mlir.constant(1 : i64) : !llvm.i64 3 %1 = llvm.alloca %0 x !llvm.i32 {in_type = i32, name = "a"} : (!llvm.i64) -> !llvm.ptr<i32> 4 omp.flush 5 %2 = llvm.load %1 : !llvm.ptr<i32> 6 llvm.return 7 }
$ mlir-translate -mlir-to-llvmir flush.mlir
flush.mlir:5:6: error: expected ':'
%2 = llvm.load %1 : !llvm.ptr<i32> ^
Solution:
Introduced begin ( ( ) and end token ( ) ) to determince the begin and end of variadic arguments.
The patch includes code changes and testcase modifications.