[llvm-branch-commits] [llvm] [KeyInstr] Inline atom info (PR #133481)

Stephen Tozer via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue Apr 8 08:55:52 PDT 2025


================
@@ -0,0 +1,53 @@
+; RUN: opt %s -passes=inline -S -o - | FileCheck %s
+
+;; Inline `f` into `g`. The inlined assignment store and add should retain
+;; their atom info.
+
+; CHECK: _Z1gi
+; CHECK-NOT: _Z1fi
+; CHECK: %add.i = add nsw i32 %mul.i, 1, !dbg [[G1R2:!.*]]
+; CHECK-NEXT: store i32 %add.i, ptr %x.i, align 4, !dbg [[G1R1:!.*]]
+
+; CHECK: [[G1R2]] = !DILocation({{.*}}, atomGroup: 1, atomRank: 2)
+; CHECK: [[G1R1]] = !DILocation({{.*}}, atomGroup: 1, atomRank: 1)
+
+define hidden void @_Z1fi(i32 noundef %a) !dbg !11 {
+entry:
+  %a.addr = alloca i32, align 4
+  %x = alloca i32, align 4
+  store i32 %a, ptr %a.addr, align 4
+  %0 = load i32, ptr %a.addr, align 4, !dbg !18
+  %mul = mul nsw i32 %0, 2, !dbg !18
+  %add = add nsw i32 %mul, 1, !dbg !19
+  store i32 %add, ptr %x, align 4, !dbg !20
+  ret void, !dbg !22
+}
+
+define hidden void @_Z1gi(i32 noundef %b) !dbg !23 {
+entry:
+  %b.addr = alloca i32, align 4
+  store i32 %b, ptr %b.addr, align 4
+  %0 = load i32, ptr %b.addr, align 4, !dbg !24
+  call void @_Z1fi(i32 noundef %0), !dbg !24
+  ret void, !dbg !25
----------------
SLTozer wrote:

Nit, could remove DILocations from the instructions that aren't relevant to the test.

https://github.com/llvm/llvm-project/pull/133481


More information about the llvm-branch-commits mailing list