aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp6
-rw-r--r--mlir/test/Dialect/LLVMIR/inlining-debuginfo.mlir21
2 files changed, 24 insertions, 3 deletions
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp
index 79dd3e3..aab8d03 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp
@@ -643,9 +643,9 @@ static Value handleByValArgument(OpBuilder &builder, Operation *callable,
return argument;
}
uint64_t targetAlignment = std::max(requestedAlignment, minimumAlignment);
- return handleByValArgumentInit(builder, func.getLoc(), argument, elementType,
- dataLayout.getTypeSize(elementType),
- targetAlignment);
+ return handleByValArgumentInit(
+ builder, argument.getLoc(), argument, elementType,
+ dataLayout.getTypeSize(elementType), targetAlignment);
}
namespace {
diff --git a/mlir/test/Dialect/LLVMIR/inlining-debuginfo.mlir b/mlir/test/Dialect/LLVMIR/inlining-debuginfo.mlir
new file mode 100644
index 0000000..97a9f9f
--- /dev/null
+++ b/mlir/test/Dialect/LLVMIR/inlining-debuginfo.mlir
@@ -0,0 +1,21 @@
+// RUN: mlir-opt %s -inline -mlir-print-debuginfo | FileCheck %s
+
+llvm.func @foo() -> !llvm.ptr
+
+llvm.func @with_byval_arg(%ptr : !llvm.ptr { llvm.byval = f64 }) {
+ llvm.return
+}
+
+// CHECK-LABEL: llvm.func @test_byval
+llvm.func @test_byval() {
+ // CHECK: %[[COPY:.+]] = llvm.alloca %{{.+}} x f64
+ // CHECK-SAME: loc(#[[LOC:.+]])
+ // CHECK: %[[ORIG:.+]] = llvm.call @foo() : () -> !llvm.ptr loc(#[[LOC]])
+ %0 = llvm.call @foo() : () -> !llvm.ptr loc("inlining-debuginfo.mlir":14:2)
+ // CHECK: "llvm.intr.memcpy"(%[[COPY]], %[[ORIG]]
+ // CHECK-SAME: loc(#[[LOC]])
+ llvm.call @with_byval_arg(%0) : (!llvm.ptr) -> ()
+ llvm.return
+}
+
+// CHECK: #[[LOC]] = loc("inlining-debuginfo.mlir":14:2)