[PATCH] D74211: [mlir] use unpacked memref descriptors at function boundaries

Diego Caballero via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 14 14:39:26 PST 2020


dcaballe added a subscriber: ayzhuang.
dcaballe added a comment.

@ayzhuang found another case that is breaking our project using the default calling convention. The `noalias` attribute is now added to all the flattened arguments, including those that are not pointers. LLVM complaints about it:

  <stdin>:4:3: error: llvm.noalias attribute attached to LLVM non-pointer argument
    llvm.func @check_noalias(%arg0: !llvm<"float*"> {llvm.noalias = true}, %arg1: !llvm<"float*"> {llvm.noalias = true}, %arg2: !llvm.i64 {llvm.noalias = true}, %arg3: !llvm.i64 {llvm.noalias
  = true}, %arg4: !llvm.i64 {llvm.noalias = true}, %arg5: !llvm<"float*"> {llvm.noalias = true}, %arg6: !llvm<"float*"> {llvm.noalias = true}, %arg7: !llvm.i64 {llvm.noalias = true}, %arg8: !l
  lvm.i64 {llvm.noalias = true}, %arg9: !llvm.i64 {llvm.noalias = true}) {
    ^

This is extending the test case to cover this new scenario:

  diff --git a/mlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir b/mlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir
  index 105a80dec7a..da3ae1341f0 100644
  --- a/mlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir
  +++ b/mlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir
  @@ -2,6 +2,9 @@
   // RUN: mlir-opt -convert-std-to-llvm='use-alloca=1' %s | FileCheck %s --check-prefix=ALLOCA
   // RUN: mlir-opt -convert-std-to-llvm='use-bare-ptr-memref-call-conv=1' -split-input-file %s | FileCheck %s --check-prefix=BAREPTR
  
  +// CHECK-LABEL: func @check_noalias
  +// CHECK-SAME: %{{.*}}: !llvm<"float*"> {llvm.noalias = true}, %{{.*}}: !llvm<"float*"> {llvm.noalias = true}, %{{.*}}: !llvm.i64, %{{.*}}: !llvm.i64, %{{.*}}: !llvm.i64,
  +// CHECK-SAME: %{{.*}}: !llvm<"float*"> {llvm.noalias = true}, %{{.*}}: !llvm<"float*"> {llvm.noalias = true}, %{{.*}}: !llvm.i64, %{{.*}}: !llvm.i64, %{{.*}}: !llvm.i64)
   // BAREPTR-LABEL: func @check_noalias
   // BAREPTR-SAME: %{{.*}}: !llvm<"float*"> {llvm.noalias = true}, %{{.*}}: !llvm<"float*"> {llvm.noalias = true}
   func @check_noalias(%static : memref<2xf32> {llvm.noalias = true}, %other : memref<2xf32> {llvm.noalias = true}) {


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74211/new/

https://reviews.llvm.org/D74211





More information about the llvm-commits mailing list