HomePhabricator

[MLIR][OpenMP] Removed the ambiguity in flush op assembly syntax

Authored by kiranktp on Sep 28 2020, 9:11 PM.

Description

[MLIR][OpenMP] Removed the ambiguity in flush op assembly syntax

Summary:

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.

Reviewed By: Valentin Clement, Mehdi AMINI

Differential Revision: https://reviews.llvm.org/D88376

Details