[llvm] fedcdd2 - Revert "[NFC][DebugInfo] Autogenerate check lines in assignment-tracking/sroa/*"

Roman Lebedev via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 15 12:46:46 PST 2022


On Thu, Dec 15, 2022 at 11:43 PM Robinson, Paul <paul.robinson at sony.com> wrote:
>
> > Author: Roman Lebedev
> > Date: 2022-12-15T23:23:35+03:00
> > New Revision: fedcdd21a22b8eec53ba73cde8bf9ef3b587dd84
> >
> > URL: https://urldefense.com/v3/__https://github.com/llvm/llvm-
> > project/commit/fedcdd21a22b8eec53ba73cde8bf9ef3b587dd84__;!!JmoZiZGBv3RvKR
> > Sx!77EijI9M5xKZtA3-
> > 6qtaECK9qX_QIkUxa7DKl1ewKN2T_5BL6FBdFKbJkf_CzhI1a0ttGS5MkmaA0lKi0imSy9LUhg
> > tG$
> > DIFF: https://urldefense.com/v3/__https://github.com/llvm/llvm-
> > project/commit/fedcdd21a22b8eec53ba73cde8bf9ef3b587dd84.diff__;!!JmoZiZGBv
> > 3RvKRSx!77EijI9M5xKZtA3-
> > 6qtaECK9qX_QIkUxa7DKl1ewKN2T_5BL6FBdFKbJkf_CzhI1a0ttGS5MkmaA0lKi0imSy52GdR
> > Da$
> >
> > LOG: Revert "[NFC][DebugInfo] Autogenerate check lines in assignment-
> > tracking/sroa/*"
> >
> > As per post-commit feedback, DebugInfo owners are not receptive of the
> > idea of having a single source of truth instead of relying on everyone
> > to know how to update these tests manually.
>
> This commit message is inappropriate and certainly bends the
> Code of Conduct. Please don't do that again.
Hm, i think i'm missing some wording lessons here.
It was not meant to be hostile, i just explained the status of things?
How was this supposed to be worded?

> --paulr
>
> >
> > This reverts commit 4ff8d1e315bdd26daae8a6928aa46e347fe0d6eb.
> > This reverts commit a33b40d61c64b95d736f1a0dd537e9087c330304.
> >
> > Added:
> >
> >
> > Modified:
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/after-inlining.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/alloca-single-
> > slice.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/complex.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/frag-2.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/frag.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/id.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/memcpy.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/memmove-to-from-
> > same-alloca.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/rewrite.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/store.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/unspecified-var-
> > size.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/user-memcpy.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/vec-1.ll
> >     llvm/test/DebugInfo/Generic/assignment-tracking/sroa/vec-2.ll
> >
> > Removed:
> >
> >
> >
> > ##########################################################################
> > ######
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/after-
> > inlining.ll b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/after-
> > inlining.ll
> > index 45ffac9338a7d..96fed34d8a68c 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/after-
> > inlining.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/after-
> > inlining.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt %s -S -passes=sroa -o - -experimental-assignment-tracking |
> > FileCheck %s
> >
> >  ;; Check that SROA preserves the InlinedAt status of new dbg.assign
> > intriniscs
> > @@ -29,7 +28,12 @@
> >  ;;
> >  ;; $ clang test.c -Xclang -fexperimental-assignment-tracking  -O2 -g
> >
> > +; CHECK: call void @llvm.dbg.assign(metadata i1 undef, metadata !{{.+}},
> > metadata !DIExpression(), metadata !{{.+}}, metadata ptr undef, metadata
> > !DIExpression()), !dbg ![[DBG:[0-9]+]]
> >
> > +; CHECK-DAG: ![[DBG]] = !DILocation(line: 0, scope: ![[INL_SC:[0-9]+]],
> > inlinedAt: ![[IA:[0-9]+]])
> > +; CHECK-DAG: ![[IA]] = distinct !DILocation(line: 21, column: 12, scope:
> > ![[SC:[0-9]+]])
> > +; CHECK-DAG: ![[SC]] = distinct !DISubprogram(name: "l",
> > +; CHECK-DAG: ![[INL_SC]] = distinct !DISubprogram(name: "k"
> >
> >  %struct.c = type { i32, [0 x i32] }
> >
> > @@ -40,18 +44,7 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  declare void @llvm.lifetime.start.p0i8(i64 immarg, ptr nocapture) #2
> >  declare void @llvm.lifetime.end.p0i8(i64 immarg, ptr nocapture) #2
> >
> > -;.
> > -; CHECK: @[[F:[a-zA-Z0-9_$"\\.-]+]] = dso_local local_unnamed_addr global
> > i32 0, align 4, !dbg [[DBG0:![0-9]+]]
> > -; CHECK: @[[E:[a-zA-Z0-9_$"\\.-]+]] = dso_local local_unnamed_addr global
> > i32 0, align 4, !dbg [[DBG9:![0-9]+]]
> > -;.
> >  define dso_local void @l() local_unnamed_addr #4 !dbg !73 {
> > -; CHECK-LABEL: @l(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META18:![0-9]+]], metadata !DIExpression(), metadata [[META29:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG30:![0-9]+]]
> > -; CHECK-NEXT:    store i32 1, ptr @f, align 4, !dbg [[DBG32:![0-9]+]]
> > -; CHECK-NEXT:    store i32 poison, ptr @e, align 4, !dbg [[DBG42:![0-
> > 9]+]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG43:![0-9]+]]
> > -;
> >  entry:
> >    %j.i = alloca %struct.c, align 4, !DIAssignID !74
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !64, metadata
> > !DIExpression(), metadata !74, metadata ptr %j.i, metadata
> > !DIExpression()) #5, !dbg !75
> > @@ -149,52 +142,3 @@ entry:
> >  !81 = !DILocation(line: 14, column: 5, scope: !40, inlinedAt: !79)
> >  !82 = !DILocation(line: 20, column: 1, scope: !60, inlinedAt: !76)
> >  !83 = !DILocation(line: 21, column: 17, scope: !73)
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync
> > nounwind willreturn memory(argmem: readwrite) }
> > -;.
> > -; CHECK: [[DBG0]] = !DIGlobalVariableExpression(var: !1, expr:
> > !DIExpression())
> > -; CHECK: [[META1:![0-9]+]] = distinct !DIGlobalVariable(name: "f", scope:
> > !2, file: !3, line: 5, type: !8, isLocal: false, isDefinition: true)
> > -; CHECK: [[META2:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C99, file: !3, producer: "clang version 12.0.0", isOptimized:
> > true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !5,
> > splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META3:![0-9]+]] = !DIFile(filename: "test.c", directory: "/")
> > -; CHECK: [[META4:![0-9]+]] = !{}
> > -; CHECK: [[META5:![0-9]+]] = !{!6, !9, !0}
> > -; CHECK: [[META6:![0-9]+]] = !DIGlobalVariableExpression(var: !7, expr:
> > !DIExpression())
> > -; CHECK: [[META7:![0-9]+]] = distinct !DIGlobalVariable(name: "d", scope:
> > !2, file: !3, line: 5, type: !8, isLocal: false, isDefinition: true)
> > -; CHECK: [[META8:![0-9]+]] = !DIBasicType(name: "int", size: 32,
> > encoding: DW_ATE_signed)
> > -; CHECK: [[DBG9]] = !DIGlobalVariableExpression(var: !10, expr:
> > !DIExpression())
> > -; CHECK: [[META10:![0-9]+]] = distinct !DIGlobalVariable(name: "e",
> > scope: !2, file: !3, line: 5, type: !8, isLocal: false, isDefinition:
> > true)
> > -; CHECK: [[META11:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META12:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META13:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META14:![0-9]+]] = !{!"clang version 12.0.0)"}
> > -; CHECK: [[META15:![0-9]+]] = distinct !DISubprogram(name: "l", scope:
> > !3, file: !3, line: 21, type: !16, scopeLine: 21, flags:
> > DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized,
> > unit: !2, retainedNodes: !4)
> > -; CHECK: [[META16:![0-9]+]] = !DISubroutineType(types: !17)
> > -; CHECK: [[META17:![0-9]+]] = !{null}
> > -; CHECK: [[META18]] = !DILocalVariable(name: "j", scope: !19, file: !3,
> > line: 17, type: !21)
> > -; CHECK: [[META19:![0-9]+]] = distinct !DISubprogram(name: "k", scope:
> > !3, file: !3, line: 16, type: !16, scopeLine: 16, flags:
> > DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized,
> > unit: !2, retainedNodes: !20)
> > -; CHECK: [[META20:![0-9]+]] = !{!18}
> > -; CHECK: [[META21:![0-9]+]] = !DIDerivedType(tag: DW_TAG_typedef, name:
> > "c", file: !3, line: 4, baseType: !22)
> > -; CHECK: [[META22:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_structure_type, file: !3, line: 1, size: 32, elements: !23)
> > -; CHECK: [[META23:![0-9]+]] = !{!24, !25}
> > -; CHECK: [[META24:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "a", scope: !22, file: !3, line: 2, baseType: !8, size: 32)
> > -; CHECK: [[META25:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "b", scope: !22, file: !3, line: 3, baseType: !26, offset: 32)
> > -; CHECK: [[META26:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type,
> > baseType: !8, elements: !27)
> > -; CHECK: [[META27:![0-9]+]] = !{!28}
> > -; CHECK: [[META28:![0-9]+]] = !DISubrange(count: -1)
> > -; CHECK: [[META29]] = distinct !DIAssignID()
> > -; CHECK: [[DBG30]] = !DILocation(line: 0, scope: !19, inlinedAt: !31)
> > -; CHECK: [[META31:![0-9]+]] = distinct !DILocation(line: 21, column: 12,
> > scope: !15)
> > -; CHECK: [[DBG32]] = !DILocation(line: 0, scope: !33, inlinedAt: !41)
> > -; CHECK: [[META33:![0-9]+]] = distinct !DISubprogram(name: "i", scope:
> > !3, file: !3, line: 10, type: !34, scopeLine: 10, flags: DIFlagPrototyped
> > | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition |
> > DISPFlagOptimized, unit: !2, retainedNodes: !37)
> > -; CHECK: [[META34:![0-9]+]] = !DISubroutineType(types: !35)
> > -; CHECK: [[META35:![0-9]+]] = !{null, !36}
> > -; CHECK: [[META36:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !21, size: 64)
> > -; CHECK: [[META37:![0-9]+]] = !{!38, !39}
> > -; CHECK: [[META38:![0-9]+]] = !DILocalVariable(name: "h", arg: 1, scope:
> > !33, file: !3, line: 10, type: !36)
> > -; CHECK: [[META39:![0-9]+]] = !DILocalVariable(name: "j", scope: !33,
> > file: !3, line: 11, type: !40)
> > -; CHECK: [[META40:![0-9]+]] = !DIBasicType(name: "long int", size: 64,
> > encoding: DW_ATE_signed)
> > -; CHECK: [[META41:![0-9]+]] = distinct !DILocation(line: 19, column: 3,
> > scope: !19, inlinedAt: !31)
> > -; CHECK: [[DBG42]] = !DILocation(line: 14, column: 5, scope: !33,
> > inlinedAt: !41)
> > -; CHECK: [[DBG43]] = !DILocation(line: 21, column: 17, scope: !15)
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/alloca-
> > single-slice.ll b/llvm/test/DebugInfo/Generic/assignment-
> > tracking/sroa/alloca-single-slice.ll
> > index 032653920e5ee..c550489ab4f3e 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/alloca-single-
> > slice.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/alloca-single-
> > slice.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt -passes=sroa,verify -S %s -o - -experimental-assignment-
> > tracking \
> >  ; RUN: | FileCheck %s --implicit-check-not="call void @llvm.dbg"
> >
> > @@ -16,6 +15,9 @@
> >  ;; $ clang test.c -Xclang -disable-llvm-passes -O2 -g -c -S -emit-llvm -o
> > - \
> >  ;;   | opt -passes=declare-to-assign -S -o -
> >
> > +; CHECK: entry:
> > +; CHECK-NEXT: %a.sroa.0 = alloca i64, align 8, !DIAssignID ![[ID_1:[0-
> > 9]+]]
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i1 undef, metadata
> > ![[VAR:[0-9]+]], metadata !DIExpression(), metadata ![[ID_1]], metadata
> > ptr %a.sroa.0, metadata !DIExpression()), !dbg
> >
> >  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-
> > f80:128-n8:16:32:64-S128"
> >
> > @@ -23,21 +25,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-
> > p272:64:64-i64:64-f80:128-n8:16
> >
> >  @c = dso_local global i32 0, align 4, !dbg !0
> >
> > -;.
> > -; CHECK: @[[C:[a-zA-Z0-9_$"\\.-]+]] = dso_local global i32 0, align 4,
> > !dbg [[DBG0:![0-9]+]]
> > -;.
> >  define dso_local void @d() !dbg !11 {
> > -; CHECK-LABEL: @d(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    [[A_SROA_0:%.*]] = alloca i64, align 8, !DIAssignID
> > [[DIASSIGNID23:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META15:![0-9]+]], metadata !DIExpression(), metadata [[DIASSIGNID23]],
> > metadata ptr [[A_SROA_0]], metadata !DIExpression()), !dbg [[DBG24:![0-
> > 9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 8, ptr
> > [[A_SROA_0]]), !dbg [[DBG25:![0-9]+]]
> > -; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @c, align 4, !dbg
> > [[DBG26:![0-9]+]]
> > -; CHECK-NEXT:    [[CONV:%.*]] = sext i32 [[TMP0]] to i64, !dbg [[DBG26]]
> > -; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 8
> > [[A_SROA_0]], ptr align 1 null, i64 [[CONV]], i1 false), !dbg [[DBG27:![0-
> > 9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 8, ptr
> > [[A_SROA_0]]), !dbg [[DBG28:![0-9]+]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG28]]
> > -;
> >  entry:
> >    %a = alloca %struct.a, align 1, !DIAssignID !23
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !15, metadata
> > !DIExpression(), metadata !23, metadata ptr %a, metadata !DIExpression()),
> > !dbg !24
> > @@ -92,38 +80,3 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  !27 = !DILocation(line: 7, column: 3, scope: !11)
> >  !28 = !DILocation(line: 7, column: 18, scope: !11)
> >  !33 = !DILocation(line: 8, column: 1, scope: !11)
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync
> > nounwind willreturn memory(argmem: readwrite) }
> > -; CHECK: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nounwind
> > willreturn memory(argmem: readwrite) }
> > -;.
> > -; CHECK: [[DBG0]] = !DIGlobalVariableExpression(var: !1, expr:
> > !DIExpression())
> > -; CHECK: [[META1:![0-9]+]] = distinct !DIGlobalVariable(name: "c", scope:
> > !2, file: !3, line: 4, type: !6, isLocal: false, isDefinition: true)
> > -; CHECK: [[META2:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C99, file: !3, producer: "clang version 12.0.0", isOptimized:
> > true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !5,
> > splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META3:![0-9]+]] = !DIFile(filename: "test.c", directory: "/")
> > -; CHECK: [[META4:![0-9]+]] = !{}
> > -; CHECK: [[META5:![0-9]+]] = !{!0}
> > -; CHECK: [[META6:![0-9]+]] = !DIBasicType(name: "int", size: 32,
> > encoding: DW_ATE_signed)
> > -; CHECK: [[META7:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META8:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META9:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META10:![0-9]+]] = !{!"clang version 12.0.0"}
> > -; CHECK: [[META11:![0-9]+]] = distinct !DISubprogram(name: "d", scope:
> > !3, file: !3, line: 5, type: !12, scopeLine: 5, flags:
> > DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized,
> > unit: !2, retainedNodes: !14)
> > -; CHECK: [[META12:![0-9]+]] = !DISubroutineType(types: !13)
> > -; CHECK: [[META13:![0-9]+]] = !{null}
> > -; CHECK: [[META14:![0-9]+]] = !{!15}
> > -; CHECK: [[META15]] = !DILocalVariable(name: "a", scope: !11, file: !3,
> > line: 6, type: !16)
> > -; CHECK: [[META16:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_structure_type, name: "a", file: !3, line: 1, size: 64, elements:
> > !17)
> > -; CHECK: [[META17:![0-9]+]] = !{!18}
> > -; CHECK: [[META18:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "b", scope: !16, file: !3, line: 2, baseType: !19, size: 64)
> > -; CHECK: [[META19:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type,
> > baseType: !20, size: 64, elements: !21)
> > -; CHECK: [[META20:![0-9]+]] = !DIBasicType(name: "char", size: 8,
> > encoding: DW_ATE_signed_char)
> > -; CHECK: [[META21:![0-9]+]] = !{!22}
> > -; CHECK: [[META22:![0-9]+]] = !DISubrange(count: 8)
> > -; CHECK: [[DIASSIGNID23]] = distinct !DIAssignID()
> > -; CHECK: [[DBG24]] = !DILocation(line: 0, scope: !11)
> > -; CHECK: [[DBG25]] = !DILocation(line: 6, column: 3, scope: !11)
> > -; CHECK: [[DBG26]] = !DILocation(line: 7, column: 18, scope: !11)
> > -; CHECK: [[DBG27]] = !DILocation(line: 7, column: 3, scope: !11)
> > -; CHECK: [[DBG28]] = !DILocation(line: 8, column: 1, scope: !11)
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-
> > tracking/sroa/complex.ll b/llvm/test/DebugInfo/Generic/assignment-
> > tracking/sroa/complex.ll
> > index 511387a00558d..106aa4f5e6a77 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/complex.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/complex.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt -passes=sroa -S -o - %s -experimental-assignment-tracking |
> > FileCheck %s
> >  ;
> >  ;; Based on llvm/test/DebugInfo/ARM/sroa-complex.ll
> > @@ -15,20 +14,15 @@
> >  ;; untouched.
> >
> >  ;; dbg.assigns for the split (then promoted) stores.
> > +; CHECK: %c.coerce.fca.0.extract = extractvalue [2 x i64] %c.coerce, 0
> > +; CHECK: %c.coerce.fca.1.extract = extractvalue [2 x i64] %c.coerce, 1
> > +; CHECK: call void @llvm.dbg.assign(metadata i64
> > %c.coerce.fca.0.extract,{{.+}}, metadata
> > !DIExpression(DW_OP_LLVM_fragment, 0, 64),{{.+}}, metadata ptr undef,
> > metadata !DIExpression())
> > +; CHECK: call void @llvm.dbg.assign(metadata i64
> > %c.coerce.fca.1.extract,{{.+}}, metadata
> > !DIExpression(DW_OP_LLVM_fragment, 64, 64),{{.+}}, metadata ptr undef,
> > {{.+}})
> >
> >  target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
> >  target triple = "armv7-apple-unknown"
> >
> >  define dso_local arm_aapcscc void @f([2 x i64] %c.coerce) #0 !dbg !8 {
> > -; CHECK-LABEL: @f(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    [[C_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [2 x i64]
> > [[C_COERCE:%.*]], 0
> > -; CHECK-NEXT:    [[C_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [2 x i64]
> > [[C_COERCE]], 1
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i64
> > [[C_COERCE_FCA_0_EXTRACT]], metadata [[META13:![0-9]+]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 0, 64), metadata [[META14:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG15:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i64
> > [[C_COERCE_FCA_1_EXTRACT]], metadata [[META13]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 64, 64), metadata [[META16:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG15]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata [2 x i64]
> > [[C_COERCE]], metadata [[META13]], metadata !DIExpression(), metadata
> > [[META17:![0-9]+]], metadata ptr undef, metadata !DIExpression()), !dbg
> > [[DBG15]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG18:![0-9]+]]
> > -;
> >  entry:
> >    %c = alloca { double, double }, align 8, !DIAssignID !14
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !13, metadata
> > !DIExpression(), metadata !14, metadata ptr %c, metadata !DIExpression()),
> > !dbg !15
> > @@ -73,26 +67,3 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  !18 = distinct !DIAssignID()
> >  !19 = distinct !DIAssignID()
> >  !20 = !DILocation(line: 2, column: 36, scope: !8)
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -;.
> > -; CHECK: [[META0:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C99, file: !1, producer: "clang version 12.0.0", isOptimized:
> > true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2,
> > splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META1:![0-9]+]] = !DIFile(filename: "test.c", directory: "/")
> > -; CHECK: [[META2:![0-9]+]] = !{}
> > -; CHECK: [[META3:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META4:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META5:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META6:![0-9]+]] = !{i32 1, !"min_enum_size", i32 4}
> > -; CHECK: [[META7:![0-9]+]] = !{!"clang version 12.0.0"}
> > -; CHECK: [[META8:![0-9]+]] = distinct !DISubprogram(name: "f", scope: !1,
> > file: !1, line: 2, type: !9, scopeLine: 2, flags: DIFlagPrototyped |
> > DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized,
> > unit: !0, retainedNodes: !12)
> > -; CHECK: [[META9:![0-9]+]] = !DISubroutineType(types: !10)
> > -; CHECK: [[META10:![0-9]+]] = !{null, !11}
> > -; CHECK: [[META11:![0-9]+]] = !DIBasicType(name: "complex", size: 128,
> > encoding: DW_ATE_complex_float)
> > -; CHECK: [[META12:![0-9]+]] = !{!13}
> > -; CHECK: [[META13]] = !DILocalVariable(name: "c", arg: 1, scope: !8,
> > file: !1, line: 2, type: !11)
> > -; CHECK: [[META14]] = distinct !DIAssignID()
> > -; CHECK: [[DBG15]] = !DILocation(line: 0, scope: !8)
> > -; CHECK: [[META16]] = distinct !DIAssignID()
> > -; CHECK: [[META17]] = distinct !DIAssignID()
> > -; CHECK: [[DBG18]] = !DILocation(line: 2, column: 36, scope: !8)
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/frag-
> > 2.ll b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/frag-2.ll
> > index ada9eec25534f..aa9321e1de7cb 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/frag-2.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/frag-2.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt -passes=sroa -S %s -o - -experimental-assignment-tracking |
> > FileCheck %s
> >
> >  ;; $ cat test.cpp
> > @@ -35,8 +34,15 @@
> >  ;; fragment info; that the address-expression remains untouched.
> >
> >  ;; Check nearby instructions to make sure we're looking in the right
> > place.
> > +; CHECK: define dso_local void @_Z1jv()
> > +; CHECK: call void @_ZN1h1iEv(ptr nonnull sret(%class.B) align 4 %m,
> >
> > +; CHECK: store <2 x float> %agg.tmp.sroa.0.0.copyload.i, ptr %4, align
> > 4,{{.+}}!DIAssignID ![[id1:[0-9]+]]
> > +; CHECK: store <2 x float> %agg.tmp.sroa.2.0.copyload.i, ptr
> > %n.sroa.4.4..sroa_idx, align 4,{{.+}}!DIAssignID ![[id2:[0-9]+]]
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata <2 x float>
> > %agg.tmp.sroa.0.0.copyload.i, metadata ![[var:[0-9]+]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 0, 64), metadata ![[id1]], metadata ptr
> > %4, metadata !DIExpression()), !dbg
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata <2 x float>
> > %agg.tmp.sroa.2.0.copyload.i, metadata ![[var]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 64, 64), metadata ![[id2]], metadata
> > ptr %n.sroa.4.4..sroa_idx, metadata !DIExpression()), !dbg
> >
> > +; CHECK: ret
> >
> >  %class.B = type { i32, %class.a }
> >  %class.a = type { [4 x float] }
> > @@ -48,22 +54,6 @@ $_ZN1B1fEv = comdat any
> >
> >  ; Function Attrs: nofree norecurse nounwind uwtable
> >  define dso_local void @_ZNK1BmlERKS_(ptr noalias nocapture sret(%class.B)
> > align 4 %agg.result, ptr nocapture readonly %this, ptr nocapture nonnull
> > readnone align 4 dereferenceable(20) %0) local_unnamed_addr #0 align 2
> > !dbg !7 {
> > -; CHECK-LABEL: @_ZNK1BmlERKS_(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    [[AGG_TMP_SROA_0_0__SROA_IDX:%.*]] = getelementptr
> > inbounds [[CLASS_B:%.*]], ptr [[THIS:%.*]], i64 0, i32 1, !dbg
> > [[DBG42:![0-9]+]]
> > -; CHECK-NEXT:    [[AGG_TMP_SROA_0_0__SROA_CAST:%.*]] = bitcast ptr
> > [[AGG_TMP_SROA_0_0__SROA_IDX]] to ptr, !dbg [[DBG42]]
> > -; CHECK-NEXT:    [[AGG_TMP_SROA_0_0_COPYLOAD:%.*]] = load <2 x float>,
> > ptr [[AGG_TMP_SROA_0_0__SROA_CAST]], align 4, !dbg [[DBG42]]
> > -; CHECK-NEXT:    [[AGG_TMP_SROA_2_0__SROA_IDX2:%.*]] = getelementptr
> > inbounds [[CLASS_B]], ptr [[THIS]], i64 0, i32 1, i32 0, i64 2, !dbg
> > [[DBG42]]
> > -; CHECK-NEXT:    [[AGG_TMP_SROA_2_0__SROA_CAST:%.*]] = bitcast ptr
> > [[AGG_TMP_SROA_2_0__SROA_IDX2]] to ptr, !dbg [[DBG42]]
> > -; CHECK-NEXT:    [[AGG_TMP_SROA_2_0_COPYLOAD:%.*]] = load <2 x float>,
> > ptr [[AGG_TMP_SROA_2_0__SROA_CAST]], align 4, !dbg [[DBG42]]
> > -; CHECK-NEXT:    [[D_SROA_0_0__SROA_IDX_I:%.*]] = getelementptr inbounds
> > [[CLASS_B]], ptr [[AGG_RESULT:%.*]], i64 0, i32 1, !dbg [[DBG43:![0-9]+]]
> > -; CHECK-NEXT:    [[D_SROA_0_0__SROA_CAST_I:%.*]] = bitcast ptr
> > [[D_SROA_0_0__SROA_IDX_I]] to ptr, !dbg [[DBG43]]
> > -; CHECK-NEXT:    store <2 x float> [[AGG_TMP_SROA_0_0_COPYLOAD]], ptr
> > [[D_SROA_0_0__SROA_CAST_I]], align 4, !dbg [[DBG43]]
> > -; CHECK-NEXT:    [[D_SROA_2_0__SROA_IDX2_I:%.*]] = getelementptr inbounds
> > [[CLASS_B]], ptr [[AGG_RESULT]], i64 0, i32 1, i32 0, i64 2, !dbg
> > [[DBG43]]
> > -; CHECK-NEXT:    [[D_SROA_2_0__SROA_CAST_I:%.*]] = bitcast ptr
> > [[D_SROA_2_0__SROA_IDX2_I]] to ptr, !dbg [[DBG43]]
> > -; CHECK-NEXT:    store <2 x float> [[AGG_TMP_SROA_2_0_COPYLOAD]], ptr
> > [[D_SROA_2_0__SROA_CAST_I]], align 4, !dbg [[DBG43]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG50:![0-9]+]]
> > -;
> >  entry:
> >    %agg.tmp.sroa.0.0..sroa_idx = getelementptr inbounds %class.B, ptr
> > %this, i64 0, i32 1, !dbg !42
> >    %agg.tmp.sroa.0.0..sroa_cast = bitcast ptr %agg.tmp.sroa.0.0..sroa_idx
> > to ptr, !dbg !42
> > @@ -85,16 +75,6 @@ declare void @llvm.memcpy.p0i8.p0i8.i64(ptr noalias
> > nocapture writeonly, ptr noa
> >
> >  ; Function Attrs: nounwind uwtable
> >  define linkonce_odr dso_local void @_ZN1BC2E1a(ptr %this, <2 x float>
> > %d.coerce0, <2 x float> %d.coerce1) unnamed_addr #2 comdat align 2 !dbg
> > !48 {
> > -; CHECK-LABEL: @_ZN1BC2E1a(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    [[D_SROA_0_0__SROA_IDX:%.*]] = getelementptr inbounds
> > [[CLASS_B:%.*]], ptr [[THIS:%.*]], i64 0, i32 1, !dbg [[DBG51:![0-9]+]]
> > -; CHECK-NEXT:    [[D_SROA_0_0__SROA_CAST:%.*]] = bitcast ptr
> > [[D_SROA_0_0__SROA_IDX]] to ptr, !dbg [[DBG51]]
> > -; CHECK-NEXT:    store <2 x float> [[D_COERCE0:%.*]], ptr
> > [[D_SROA_0_0__SROA_CAST]], align 4, !dbg [[DBG51]]
> > -; CHECK-NEXT:    [[D_SROA_2_0__SROA_IDX2:%.*]] = getelementptr inbounds
> > [[CLASS_B]], ptr [[THIS]], i64 0, i32 1, i32 0, i64 2, !dbg [[DBG51]]
> > -; CHECK-NEXT:    [[D_SROA_2_0__SROA_CAST:%.*]] = bitcast ptr
> > [[D_SROA_2_0__SROA_IDX2]] to ptr, !dbg [[DBG51]]
> > -; CHECK-NEXT:    store <2 x float> [[D_COERCE1:%.*]], ptr
> > [[D_SROA_2_0__SROA_CAST]], align 4, !dbg [[DBG51]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG52:![0-9]+]]
> > -;
> >  entry:
> >    %d.sroa.0.0..sroa_idx = getelementptr inbounds %class.B, ptr %this, i64
> > 0, i32 1, !dbg !55
> >    %d.sroa.0.0..sroa_cast = bitcast ptr %d.sroa.0.0..sroa_idx to ptr, !dbg
> > !55
> > @@ -110,52 +90,6 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >
> >  ; Function Attrs: uwtable
> >  define dso_local void @_Z1jv() local_unnamed_addr #4 !dbg !57 {
> > -; CHECK-LABEL: @_Z1jv(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    [[CONVEXBODY:%.*]] = alloca [[CLASS_H:%.*]], align 1,
> > !DIAssignID [[DIASSIGNID69:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META57:![0-9]+]], metadata !DIExpression(), metadata [[DIASSIGNID69]],
> > metadata ptr [[CONVEXBODY]], metadata !DIExpression()), !dbg [[DBG70:![0-
> > 9]+]]
> > -; CHECK-NEXT:    [[K:%.*]] = alloca [[CLASS_H]], align 1, !DIAssignID
> > [[DIASSIGNID71:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META64:![0-9]+]], metadata !DIExpression(), metadata [[DIASSIGNID71]],
> > metadata ptr [[K]], metadata !DIExpression()), !dbg [[DBG70]]
> > -; CHECK-NEXT:    [[L:%.*]] = alloca [[CLASS_B:%.*]], align 4, !DIAssignID
> > [[DIASSIGNID72:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META65:![0-9]+]], metadata !DIExpression(), metadata [[DIASSIGNID72]],
> > metadata ptr [[L]], metadata !DIExpression()), !dbg [[DBG70]]
> > -; CHECK-NEXT:    [[M:%.*]] = alloca [[CLASS_B]], align 4, !DIAssignID
> > [[DIASSIGNID73:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META66:![0-9]+]], metadata !DIExpression(), metadata [[DIASSIGNID73]],
> > metadata ptr [[M]], metadata !DIExpression()), !dbg [[DBG70]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META67:![0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 32),
> > metadata [[META74:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG70]]
> > -; CHECK-NEXT:    [[O:%.*]] = alloca [[CLASS_A:%.*]], align 4, !DIAssignID
> > [[DIASSIGNID75:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META68:![0-9]+]], metadata !DIExpression(), metadata [[DIASSIGNID75]],
> > metadata ptr [[O]], metadata !DIExpression()), !dbg [[DBG70]]
> > -; CHECK-NEXT:    [[TMP0:%.*]] = getelementptr inbounds [[CLASS_H]], ptr
> > [[CONVEXBODY]], i64 0, i32 0, !dbg [[DBG76:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 1, ptr nonnull
> > [[TMP0]]), !dbg [[DBG76]]
> > -; CHECK-NEXT:    [[TMP1:%.*]] = getelementptr inbounds [[CLASS_H]], ptr
> > [[K]], i64 0, i32 0, !dbg [[DBG76]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 1, ptr nonnull
> > [[TMP1]]), !dbg [[DBG76]]
> > -; CHECK-NEXT:    [[TMP2:%.*]] = bitcast ptr [[L]] to ptr, !dbg
> > [[DBG77:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 20, ptr nonnull
> > [[TMP2]]), !dbg [[DBG77]]
> > -; CHECK-NEXT:    call void @_ZN1h1iEv(ptr nonnull sret([[CLASS_B]]) align
> > 4 [[L]], ptr nonnull [[K]]), !dbg [[DBG78:![0-9]+]]
> > -; CHECK-NEXT:    [[TMP3:%.*]] = bitcast ptr [[M]] to ptr, !dbg [[DBG77]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 20, ptr nonnull
> > [[TMP3]]), !dbg [[DBG77]]
> > -; CHECK-NEXT:    call void @_ZN1h1iEv(ptr nonnull sret([[CLASS_B]]) align
> > 4 [[M]], ptr nonnull [[CONVEXBODY]]), !dbg [[DBG79:![0-9]+]]
> > -; CHECK-NEXT:    [[AGG_TMP_SROA_0_0__SROA_IDX_I:%.*]] = getelementptr
> > inbounds [[CLASS_B]], ptr [[L]], i64 0, i32 1, !dbg [[DBG80:![0-9]+]]
> > -; CHECK-NEXT:    [[AGG_TMP_SROA_0_0__SROA_CAST_I:%.*]] = bitcast ptr
> > [[AGG_TMP_SROA_0_0__SROA_IDX_I]] to ptr, !dbg [[DBG80]]
> > -; CHECK-NEXT:    [[AGG_TMP_SROA_0_0_COPYLOAD_I:%.*]] = load <2 x float>,
> > ptr [[AGG_TMP_SROA_0_0__SROA_CAST_I]], align 4, !dbg [[DBG80]]
> > -; CHECK-NEXT:    [[AGG_TMP_SROA_2_0__SROA_IDX2_I:%.*]] = getelementptr
> > inbounds [[CLASS_B]], ptr [[L]], i64 0, i32 1, i32 0, i64 2, !dbg
> > [[DBG80]]
> > -; CHECK-NEXT:    [[AGG_TMP_SROA_2_0__SROA_CAST_I:%.*]] = bitcast ptr
> > [[AGG_TMP_SROA_2_0__SROA_IDX2_I]] to ptr, !dbg [[DBG80]]
> > -; CHECK-NEXT:    [[AGG_TMP_SROA_2_0_COPYLOAD_I:%.*]] = load <2 x float>,
> > ptr [[AGG_TMP_SROA_2_0__SROA_CAST_I]], align 4, !dbg [[DBG80]]
> > -; CHECK-NEXT:    call void @llvm.dbg.value(metadata <2 x float>
> > [[AGG_TMP_SROA_0_0_COPYLOAD_I]], metadata [[META67]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 32, 64)), !dbg [[DBG70]]
> > -; CHECK-NEXT:    call void @llvm.dbg.value(metadata <2 x float>
> > [[AGG_TMP_SROA_2_0_COPYLOAD_I]], metadata [[META67]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 96, 64)), !dbg [[DBG70]]
> > -; CHECK-NEXT:    [[TMP4:%.*]] = bitcast ptr [[O]] to ptr, !dbg
> > [[DBG82:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 16, ptr nonnull
> > [[TMP4]]), !dbg [[DBG82]]
> > -; CHECK-NEXT:    store <2 x float> [[AGG_TMP_SROA_0_0_COPYLOAD_I]], ptr
> > [[TMP4]], align 4, !dbg [[DBG83:![0-9]+]], !DIAssignID [[DIASSIGNID84:![0-
> > 9]+]]
> > -; CHECK-NEXT:    [[N_SROA_4_4__SROA_IDX:%.*]] = getelementptr inbounds
> > i8, ptr [[TMP4]], i64 8, !dbg [[DBG83]]
> > -; CHECK-NEXT:    store <2 x float> [[AGG_TMP_SROA_2_0_COPYLOAD_I]], ptr
> > [[N_SROA_4_4__SROA_IDX]], align 4, !dbg [[DBG83]], !DIAssignID
> > [[DIASSIGNID85:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[AGG_TMP_SROA_0_0_COPYLOAD_I]], metadata [[META68]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 0, 64), metadata [[DIASSIGNID84]],
> > metadata ptr [[TMP4]], metadata !DIExpression()), !dbg [[DBG70]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[AGG_TMP_SROA_2_0_COPYLOAD_I]], metadata [[META68]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 64, 64), metadata [[DIASSIGNID85]],
> > metadata ptr [[N_SROA_4_4__SROA_IDX]], metadata !DIExpression()), !dbg
> > [[DBG70]]
> > -; CHECK-NEXT:    call void @_ZN1a1cEv(ptr nonnull [[O]]), !dbg
> > [[DBG86:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 16, ptr nonnull
> > [[TMP4]]), !dbg [[DBG87:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 20, ptr nonnull
> > [[TMP3]]), !dbg [[DBG87]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 20, ptr nonnull
> > [[TMP2]]), !dbg [[DBG87]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 1, ptr nonnull
> > [[TMP1]]), !dbg [[DBG87]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 1, ptr nonnull
> > [[TMP0]]), !dbg [[DBG87]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG87]]
> > -;
> >  entry:
> >    %convexbody = alloca %class.h, align 1, !DIAssignID !73
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !61, metadata
> > !DIExpression(), metadata !73, metadata ptr %convexbody, metadata
> > !DIExpression()), !dbg !74
> > @@ -214,11 +148,6 @@ declare dso_local void @_ZN1h1iEv(ptr sret(%class.B)
> > align 4, ptr) local_unnamed
> >
> >  ; Function Attrs: nounwind uwtable
> >  define linkonce_odr dso_local nonnull align 4 dereferenceable(16) ptr
> > @_ZN1B1fEv(ptr %this) local_unnamed_addr #6 comdat align 2 !dbg !93 {
> > -; CHECK-LABEL: @_ZN1B1fEv(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    [[E:%.*]] = getelementptr inbounds [[CLASS_B:%.*]], ptr
> > [[THIS:%.*]], i64 0, i32 1, !dbg [[DBG91:![0-9]+]]
> > -; CHECK-NEXT:    ret ptr [[E]], !dbg [[DBG92:![0-9]+]]
> > -;
> >  entry:
> >    %e = getelementptr inbounds %class.B, ptr %this, i64 0, i32 1, !dbg
> > !101
> >    ret ptr %e, !dbg !102
> > @@ -329,102 +258,3 @@ declare void @llvm.lifetime.end.p0i8(i64 immarg, ptr
> > nocapture) #1
> >  !100 = !DILocation(line: 24, column: 1, scope: !57)
> >  !101 = !DILocation(line: 9, column: 19, scope: !93)
> >  !102 = !DILocation(line: 9, column: 12, scope: !93)
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nounwind
> > willreturn memory(argmem: readwrite) }
> > -; CHECK: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nosync
> > nounwind willreturn memory(argmem: readwrite) }
> > -;.
> > -; CHECK: [[META0:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C_plus_plus, file: !1, producer: "clang version 12.0.0",
> > isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2,
> > splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META1:![0-9]+]] = !DIFile(filename: "reduce.cpp", directory:
> > "/")
> > -; CHECK: [[META2:![0-9]+]] = !{}
> > -; CHECK: [[META3:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META4:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META5:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META6:![0-9]+]] = !{!"clang version 12.0.0"}
> > -; CHECK: [[META7:![0-9]+]] = distinct !DISubprogram(name: "operator*",
> > linkageName: "_ZNK1BmlERKS_", scope: !8, file: !1, line: 14, type: !33,
> > scopeLine: 14, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !0, declaration: !32,
> > retainedNodes: !38)
> > -; CHECK: [[META8:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_class_type, name: "B", file: !1, line: 6, size: 160, flags:
> > DIFlagTypePassByValue | DIFlagNonTrivial, elements: !9, identifier:
> > "_ZTS1B")
> > -; CHECK: [[META9:![0-9]+]] = !{!10, !12, !24, !28, !32}
> > -; CHECK: [[META10:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "g", scope: !8, file: !1, line: 11, baseType: !11, size: 32, flags:
> > DIFlagPublic)
> > -; CHECK: [[META11:![0-9]+]] = !DIBasicType(name: "int", size: 32,
> > encoding: DW_ATE_signed)
> > -; CHECK: [[META12:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "e", scope: !8, file: !1, line: 12, baseType: !13, size: 128, offset: 32,
> > flags: DIFlagPublic)
> > -; CHECK: [[META13:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_class_type, name: "a", file: !1, line: 1, size: 128, flags:
> > DIFlagTypePassByValue, elements: !14, identifier: "_ZTS1a")
> > -; CHECK: [[META14:![0-9]+]] = !{!15, !20}
> > -; CHECK: [[META15:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "b", scope: !13, file: !1, line: 3, baseType: !16, size: 128, flags:
> > DIFlagPublic)
> > -; CHECK: [[META16:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type,
> > baseType: !17, size: 128, elements: !18)
> > -; CHECK: [[META17:![0-9]+]] = !DIBasicType(name: "float", size: 32,
> > encoding: DW_ATE_float)
> > -; CHECK: [[META18:![0-9]+]] = !{!19}
> > -; CHECK: [[META19:![0-9]+]] = !DISubrange(count: 4)
> > -; CHECK: [[META20:![0-9]+]] = !DISubprogram(name: "c", linkageName:
> > "_ZN1a1cEv", scope: !13, file: !1, line: 4, type: !21, scopeLine: 4,
> > flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
> > -; CHECK: [[META21:![0-9]+]] = !DISubroutineType(types: !22)
> > -; CHECK: [[META22:![0-9]+]] = !{null, !23}
> > -; CHECK: [[META23:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !13, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META24:![0-9]+]] = !DISubprogram(name: "B", scope: !8, file:
> > !1, line: 8, type: !25, scopeLine: 8, flags: DIFlagPublic |
> > DIFlagPrototyped, spFlags: DISPFlagOptimized)
> > -; CHECK: [[META25:![0-9]+]] = !DISubroutineType(types: !26)
> > -; CHECK: [[META26:![0-9]+]] = !{null, !27, !13}
> > -; CHECK: [[META27:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !8, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META28:![0-9]+]] = !DISubprogram(name: "f", linkageName:
> > "_ZN1B1fEv", scope: !8, file: !1, line: 9, type: !29, scopeLine: 9, flags:
> > DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
> > -; CHECK: [[META29:![0-9]+]] = !DISubroutineType(types: !30)
> > -; CHECK: [[META30:![0-9]+]] = !{!31, !27}
> > -; CHECK: [[META31:![0-9]+]] = !DIDerivedType(tag: DW_TAG_reference_type,
> > baseType: !13, size: 64)
> > -; CHECK: [[META32:![0-9]+]] = !DISubprogram(name: "operator*",
> > linkageName: "_ZNK1BmlERKS_", scope: !8, file: !1, line: 10, type: !33,
> > scopeLine: 10, flags: DIFlagPublic | DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META33:![0-9]+]] = !DISubroutineType(types: !34)
> > -; CHECK: [[META34:![0-9]+]] = !{!8, !35, !37}
> > -; CHECK: [[META35:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !36, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META36:![0-9]+]] = !DIDerivedType(tag: DW_TAG_const_type,
> > baseType: !8)
> > -; CHECK: [[META37:![0-9]+]] = !DIDerivedType(tag: DW_TAG_reference_type,
> > baseType: !36, size: 64)
> > -; CHECK: [[META38:![0-9]+]] = !{!39, !41}
> > -; CHECK: [[META39:![0-9]+]] = !DILocalVariable(name: "this", arg: 1,
> > scope: !7, type: !40, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META40:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !36, size: 64)
> > -; CHECK: [[META41:![0-9]+]] = !DILocalVariable(arg: 2, scope: !7, file:
> > !1, line: 14, type: !37)
> > -; CHECK: [[DBG42]] = !DILocation(line: 14, column: 41, scope: !7)
> > -; CHECK: [[DBG43]] = !DILocation(line: 8, column: 12, scope: !44,
> > inlinedAt: !49)
> > -; CHECK: [[META44:![0-9]+]] = distinct !DISubprogram(name: "B",
> > linkageName: "_ZN1BC2E1a", scope: !8, file: !1, line: 8, type: !25,
> > scopeLine: 8, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !0, declaration: !24,
> > retainedNodes: !45)
> > -; CHECK: [[META45:![0-9]+]] = !{!46, !48}
> > -; CHECK: [[META46:![0-9]+]] = !DILocalVariable(name: "this", arg: 1,
> > scope: !44, type: !47, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META47:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !8, size: 64)
> > -; CHECK: [[META48:![0-9]+]] = !DILocalVariable(name: "d", arg: 2, scope:
> > !44, file: !1, line: 8, type: !13)
> > -; CHECK: [[META49:![0-9]+]] = distinct !DILocation(line: 14, column: 41,
> > scope: !7)
> > -; CHECK: [[DBG50]] = !DILocation(line: 14, column: 34, scope: !7)
> > -; CHECK: [[DBG51]] = !DILocation(line: 8, column: 12, scope: !44)
> > -; CHECK: [[DBG52]] = !DILocation(line: 8, column: 18, scope: !44)
> > -; CHECK: [[META53:![0-9]+]] = distinct !DISubprogram(name: "j",
> > linkageName: "_Z1jv", scope: !1, file: !1, line: 19, type: !54, scopeLine:
> > 19, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !56)
> > -; CHECK: [[META54:![0-9]+]] = !DISubroutineType(types: !55)
> > -; CHECK: [[META55:![0-9]+]] = !{null}
> > -; CHECK: [[META56:![0-9]+]] = !{!57, !64, !65, !66, !67, !68}
> > -; CHECK: [[META57]] = !DILocalVariable(name: "convexbody", scope: !53,
> > file: !1, line: 20, type: !58)
> > -; CHECK: [[META58:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_class_type, name: "h", file: !1, line: 15, size: 8, flags:
> > DIFlagTypePassByValue, elements: !59, identifier: "_ZTS1h")
> > -; CHECK: [[META59:![0-9]+]] = !{!60}
> > -; CHECK: [[META60:![0-9]+]] = !DISubprogram(name: "i", linkageName:
> > "_ZN1h1iEv", scope: !58, file: !1, line: 17, type: !61, scopeLine: 17,
> > flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
> > -; CHECK: [[META61:![0-9]+]] = !DISubroutineType(types: !62)
> > -; CHECK: [[META62:![0-9]+]] = !{!8, !63}
> > -; CHECK: [[META63:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !58, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META64]] = !DILocalVariable(name: "k", scope: !53, file: !1,
> > line: 20, type: !58)
> > -; CHECK: [[META65]] = !DILocalVariable(name: "l", scope: !53, file: !1,
> > line: 21, type: !8)
> > -; CHECK: [[META66]] = !DILocalVariable(name: "m", scope: !53, file: !1,
> > line: 21, type: !8)
> > -; CHECK: [[META67]] = !DILocalVariable(name: "n", scope: !53, file: !1,
> > line: 21, type: !8)
> > -; CHECK: [[META68]] = !DILocalVariable(name: "o", scope: !53, file: !1,
> > line: 22, type: !13)
> > -; CHECK: [[DIASSIGNID69]] = distinct !DIAssignID()
> > -; CHECK: [[DBG70]] = !DILocation(line: 0, scope: !53)
> > -; CHECK: [[DIASSIGNID71]] = distinct !DIAssignID()
> > -; CHECK: [[DIASSIGNID72]] = distinct !DIAssignID()
> > -; CHECK: [[DIASSIGNID73]] = distinct !DIAssignID()
> > -; CHECK: [[META74]] = distinct !DIAssignID()
> > -; CHECK: [[DIASSIGNID75]] = distinct !DIAssignID()
> > -; CHECK: [[DBG76]] = !DILocation(line: 20, column: 3, scope: !53)
> > -; CHECK: [[DBG77]] = !DILocation(line: 21, column: 3, scope: !53)
> > -; CHECK: [[DBG78]] = !DILocation(line: 21, column: 11, scope: !53)
> > -; CHECK: [[DBG79]] = !DILocation(line: 21, column: 31, scope: !53)
> > -; CHECK: [[DBG80]] = !DILocation(line: 14, column: 41, scope: !7,
> > inlinedAt: !81)
> > -; CHECK: [[META81:![0-9]+]] = distinct !DILocation(line: 21, column: 42,
> > scope: !53)
> > -; CHECK: [[DBG82]] = !DILocation(line: 22, column: 3, scope: !53)
> > -; CHECK: [[DBG83]] = !DILocation(line: 22, column: 9, scope: !53)
> > -; CHECK: [[DIASSIGNID84]] = distinct !DIAssignID()
> > -; CHECK: [[DIASSIGNID85]] = distinct !DIAssignID()
> > -; CHECK: [[DBG86]] = !DILocation(line: 23, column: 5, scope: !53)
> > -; CHECK: [[DBG87]] = !DILocation(line: 24, column: 1, scope: !53)
> > -; CHECK: [[META88:![0-9]+]] = distinct !DISubprogram(name: "f",
> > linkageName: "_ZN1B1fEv", scope: !8, file: !1, line: 9, type: !29,
> > scopeLine: 9, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !0, declaration: !28,
> > retainedNodes: !89)
> > -; CHECK: [[META89:![0-9]+]] = !{!90}
> > -; CHECK: [[META90:![0-9]+]] = !DILocalVariable(name: "this", arg: 1,
> > scope: !88, type: !47, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[DBG91]] = !DILocation(line: 9, column: 19, scope: !88)
> > -; CHECK: [[DBG92]] = !DILocation(line: 9, column: 12, scope: !88)
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/frag.ll
> > b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/frag.ll
> > index bbb113c6a909f..18010c6a283e6 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/frag.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/frag.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt %s -S -passes=sroa -o - -experimental-assignment-tracking |
> > FileCheck %s
> >
> >  ;; $ cat test.cpp
> > @@ -19,21 +18,16 @@
> >  ;; fragment(320, 64). Ensure that only the value-expression gets fragment
> > info;
> >  ;; that the address-expression remains untouched.
> >
> > +; CHECK: %call = call
> > +; CHECK-NEXT: %0 = extractvalue { <2 x float>, <2 x float> } %call, 0
> > +; CHECK-NEXT: %1 = extractvalue { <2 x float>, <2 x float> } %call, 1
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata <2 x float> %0,
> > metadata ![[var:[0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 256,
> > 64),{{.+}},{{.+}}undef, metadata !DIExpression()), !dbg
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata <2 x float> %1,
> > metadata ![[var]], metadata !DIExpression(DW_OP_LLVM_fragment, 320,
> > 64),{{.+}},{{.+}}undef, metadata !DIExpression()), !dbg
> >
> >  %class.c = type { [4 x float] }
> >
> >  ; Function Attrs: uwtable
> >  define dso_local void @_Z1dv() #0 !dbg !7 {
> > -; CHECK-LABEL: @_Z1dv(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META11:![0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 256),
> > metadata [[META22:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG23:![0-9]+]]
> > -; CHECK-NEXT:    [[CALL:%.*]] = call { <2 x float>, <2 x float> }
> > @_Z3fn1v(), !dbg [[DBG24:![0-9]+]]
> > -; CHECK-NEXT:    [[TMP0:%.*]] = extractvalue { <2 x float>, <2 x float> }
> > [[CALL]], 0, !dbg [[DBG24]]
> > -; CHECK-NEXT:    [[TMP1:%.*]] = extractvalue { <2 x float>, <2 x float> }
> > [[CALL]], 1, !dbg [[DBG24]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[TMP0]], metadata [[META11]], metadata !DIExpression(DW_OP_LLVM_fragment,
> > 256, 64), metadata [[META25:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG23]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[TMP1]], metadata [[META11]], metadata !DIExpression(DW_OP_LLVM_fragment,
> > 320, 64), metadata [[META26:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG23]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG27:![0-9]+]]
> > -;
> >  entry:
> >    %a = alloca [3 x %class.c], align 16, !DIAssignID !22
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !11, metadata
> > !DIExpression(), metadata !22, metadata ptr %a, metadata !DIExpression()),
> > !dbg !23
> > @@ -117,40 +111,3 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  !34 = !DISubprogram(name: "fn1", linkageName: "_Z3fn1v", scope: !1, file:
> > !1, line: 4, type: !35, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized, retainedNodes: !2)
> >  !35 = !DISubroutineType(types: !36)
> >  !36 = !{!13}
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync
> > nounwind willreturn memory(argmem: readwrite) }
> > -; CHECK: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nounwind
> > willreturn memory(argmem: readwrite) }
> > -;.
> > -; CHECK: [[META0:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C_plus_plus, file: !1, producer: "clang version 12.0.0",
> > isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2,
> > splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META1:![0-9]+]] = !DIFile(filename: "reduce.cpp", directory:
> > "/")
> > -; CHECK: [[META2:![0-9]+]] = !{}
> > -; CHECK: [[META3:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META4:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META5:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META6:![0-9]+]] = !{!"clang version 12.0.0"}
> > -; CHECK: [[META7:![0-9]+]] = distinct !DISubprogram(name: "d",
> > linkageName: "_Z1dv", scope: !1, file: !1, line: 5, type: !8, scopeLine:
> > 5, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !10)
> > -; CHECK: [[META8:![0-9]+]] = !DISubroutineType(types: !9)
> > -; CHECK: [[META9:![0-9]+]] = !{null}
> > -; CHECK: [[META10:![0-9]+]] = !{!11}
> > -; CHECK: [[META11]] = !DILocalVariable(name: "a", scope: !7, file: !1,
> > line: 6, type: !12)
> > -; CHECK: [[META12:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type,
> > baseType: !13, size: 384, elements: !20)
> > -; CHECK: [[META13:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_class_type, name: "c", file: !1, line: 1, size: 128, flags:
> > DIFlagTypePassByValue, elements: !14, identifier: "_ZTS1c")
> > -; CHECK: [[META14:![0-9]+]] = !{!15}
> > -; CHECK: [[META15:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "b", scope: !13, file: !1, line: 2, baseType: !16, size: 128)
> > -; CHECK: [[META16:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type,
> > baseType: !17, size: 128, elements: !18)
> > -; CHECK: [[META17:![0-9]+]] = !DIBasicType(name: "float", size: 32,
> > encoding: DW_ATE_float)
> > -; CHECK: [[META18:![0-9]+]] = !{!19}
> > -; CHECK: [[META19:![0-9]+]] = !DISubrange(count: 4)
> > -; CHECK: [[META20:![0-9]+]] = !{!21}
> > -; CHECK: [[META21:![0-9]+]] = !DISubrange(count: 3)
> > -; CHECK: [[META22]] = distinct !DIAssignID()
> > -; CHECK: [[DBG23]] = !DILocation(line: 0, scope: !7)
> > -; CHECK: [[DBG24]] = !DILocation(line: 7, column: 10, scope: !7)
> > -; CHECK: [[META25]] = distinct !DIAssignID()
> > -; CHECK: [[META26]] = distinct !DIAssignID()
> > -; CHECK: [[DBG27]] = !DILocation(line: 8, column: 1, scope: !7)
> > -; CHECK: [[META28:![0-9]+]] = !DISubprogram(name: "fn1", linkageName:
> > "_Z3fn1v", scope: !1, file: !1, line: 4, type: !29, flags:
> > DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !2)
> > -; CHECK: [[META29:![0-9]+]] = !DISubroutineType(types: !30)
> > -; CHECK: [[META30:![0-9]+]] = !{!13}
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/id.ll
> > b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/id.ll
> > index 7052e1f86e5b2..0fab6f0727583 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/id.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/id.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt -passes=sroa -S %s -o - -experimental-assignment-tracking |
> > FileCheck %s
> >
> >  ;; Check that multiple dbg.assign intrinsics linked to a store that is
> > getting
> > @@ -25,9 +24,17 @@
> >  ;; }
> >  ;;
> >  ;; Generated by grabbing IR before sroa in:
> > -;; $ clang++ -O2 -g -c test.cpp -Xclang -fexperimental-assignment-
> > tracking
> > +;; $ clang++ -O2 -g -c test.cpp -Xclang -fexperimental-assignment-
> > tracking
> >
> > +; CHECK: if.then:
> > +; CHECK-NEXT: %1 = load float
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata float %storemerge,
> > metadata ![[var:[0-9]+]], metadata !DIExpression(), metadata ![[id:[0-
> > 9]+]], metadata ptr undef, metadata !DIExpression()), !dbg ![[dbg:[0-9]+]]
> >
> > +; CHECK: if.else:
> > +; CHECK-NEXT: %2 = load float
> > +; CHECK-NEXT: %3 = load float
> > +; CHECK-NEXT: %div = fdiv float
> > +; CHECK: call void @llvm.dbg.assign(metadata float %storemerge, metadata
> > ![[var]], metadata !DIExpression(), metadata ![[id]], metadata ptr undef,
> > metadata !DIExpression()), !dbg ![[dbg]]
> >
> >  %class.a = type { i8 }
> >
> > @@ -38,38 +45,7 @@ $_ZN1aC2EiRf = comdat any
> >  @c = dso_local local_unnamed_addr global i32 0, align 4, !dbg !9
> >
> >  ; Function Attrs: nounwind readonly uwtable
> > -;.
> > -; CHECK: @[[B:[a-zA-Z0-9_$"\\.-]+]] = dso_local local_unnamed_addr global
> > float 0.000000e+00, align 4, !dbg [[DBG0:![0-9]+]]
> > -; CHECK: @[[D:[a-zA-Z0-9_$"\\.-]+]] = dso_local local_unnamed_addr global
> > float 0.000000e+00, align 4, !dbg [[DBG6:![0-9]+]]
> > -; CHECK: @[[C:[a-zA-Z0-9_$"\\.-]+]] = dso_local local_unnamed_addr global
> > i32 0, align 4, !dbg [[DBG9:![0-9]+]]
> > -;.
> >  define dso_local void @_Z1fv() local_unnamed_addr #0 !dbg !16 {
> > -; CHECK-LABEL: @_Z1fv(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @c, align 4, !dbg
> > [[DBG21:![0-9]+]]
> > -; CHECK-NEXT:    [[TOBOOL_NOT:%.*]] = icmp eq i32 [[TMP0]], 0, !dbg
> > [[DBG21]]
> > -; CHECK-NEXT:    br i1 [[TOBOOL_NOT]], label [[IF_ELSE:%.*]], label
> > [[IF_THEN:%.*]], !dbg [[DBG23:![0-9]+]]
> > -; CHECK:       if.then:
> > -; CHECK-NEXT:    [[TMP1:%.*]] = load float, ptr @b, align 4, !dbg
> > [[DBG24:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata float
> > [[STOREMERGE:%.*]], metadata [[META20:![0-9]+]], metadata !DIExpression(),
> > metadata [[META25:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG26:![0-9]+]]
> > -; CHECK-NEXT:    br label [[IF_END:%.*]], !dbg [[DBG27:![0-9]+]]
> > -; CHECK:       if.else:
> > -; CHECK-NEXT:    [[TMP2:%.*]] = load float, ptr @b, align 4, !dbg
> > [[DBG28:![0-9]+]]
> > -; CHECK-NEXT:    [[TMP3:%.*]] = load float, ptr @d, align 4, !dbg
> > [[DBG29:![0-9]+]]
> > -; CHECK-NEXT:    [[DIV:%.*]] = fdiv float [[TMP2]], [[TMP3]], !dbg
> > [[DBG30:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata float
> > [[STOREMERGE]], metadata [[META20]], metadata !DIExpression(), metadata
> > [[META25]], metadata ptr undef, metadata !DIExpression()), !dbg [[DBG26]]
> > -; CHECK-NEXT:    br label [[IF_END]]
> > -; CHECK:       if.end:
> > -; CHECK-NEXT:    [[STOREMERGE]] = phi float [ [[DIV]], [[IF_ELSE]] ], [
> > [[TMP1]], [[IF_THEN]] ], !dbg [[DBG31:![0-9]+]]
> > -; CHECK-NEXT:    [[TMP4:%.*]] = load i32, ptr @c, align 4, !dbg
> > [[DBG32:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META33:![0-9]+]], metadata !DIExpression(), metadata [[META46:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG47:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META43:![0-9]+]], metadata !DIExpression(), metadata [[META49:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG47]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META44:![0-9]+]], metadata !DIExpression(), metadata [[META50:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG47]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata ptr undef, metadata
> > [[META33]], metadata !DIExpression(), metadata [[META51:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG47]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i32 [[TMP4]],
> > metadata [[META43]], metadata !DIExpression(), metadata [[META52:![0-
> > 9]+]], metadata ptr undef, metadata !DIExpression()), !dbg [[DBG47]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata ptr undef, metadata
> > [[META44]], metadata !DIExpression(), metadata [[META53:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG47]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG54:![0-9]+]]
> > -;
> >  entry:
> >    %e = alloca float, align 4, !DIAssignID !21
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !20, metadata
> > !DIExpression(), metadata !21, metadata ptr %e, metadata !DIExpression()),
> > !dbg !22
> > @@ -111,16 +87,6 @@ declare void @llvm.lifetime.start.p0i8(i64 immarg, ptr
> > nocapture) #1
> >
> >  ; Function Attrs: nounwind uwtable
> >  define linkonce_odr dso_local void @_ZN1aC2EiRf(ptr %this, i32 %0, ptr
> > nonnull align 4 dereferenceable(4) %1) unnamed_addr #2 comdat align 2 !dbg
> > !42 {
> > -; CHECK-LABEL: @_ZN1aC2EiRf(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META33]], metadata !DIExpression(), metadata [[META55:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG56:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META43]], metadata !DIExpression(), metadata [[META57:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG56]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META44]], metadata !DIExpression(), metadata [[META58:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG56]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata ptr [[THIS:%.*]],
> > metadata [[META33]], metadata !DIExpression(), metadata [[META59:![0-
> > 9]+]], metadata ptr undef, metadata !DIExpression()), !dbg [[DBG56]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i32 [[TMP0:%.*]],
> > metadata [[META43]], metadata !DIExpression(), metadata [[META60:![0-
> > 9]+]], metadata ptr undef, metadata !DIExpression()), !dbg [[DBG56]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata ptr [[TMP1:%.*]],
> > metadata [[META44]], metadata !DIExpression(), metadata [[META61:![0-
> > 9]+]], metadata ptr undef, metadata !DIExpression()), !dbg [[DBG56]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG62:![0-9]+]]
> > -;
> >  entry:
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !41, metadata
> > !DIExpression(), metadata !63, metadata ptr undef, metadata
> > !DIExpression()), !dbg !64
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !51, metadata
> > !DIExpression(), metadata !65, metadata ptr undef, metadata
> > !DIExpression()), !dbg !64
> > @@ -206,71 +172,3 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  !68 = distinct !DIAssignID()
> >  !69 = distinct !DIAssignID()
> >  !70 = !DILocation(line: 3, column: 20, scope: !42)
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync
> > nounwind willreturn memory(argmem: readwrite) }
> > -;.
> > -; CHECK: [[DBG0]] = !DIGlobalVariableExpression(var: !1, expr:
> > !DIExpression())
> > -; CHECK: [[META1:![0-9]+]] = distinct !DIGlobalVariable(name: "b", scope:
> > !2, file: !3, line: 5, type: !8, isLocal: false, isDefinition: true)
> > -; CHECK: [[META2:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C_plus_plus, file: !3, producer: "clang version 12.0.0",
> > isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4,
> > globals: !5, splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META3:![0-9]+]] = !DIFile(filename: "reduce.cpp", directory:
> > "")
> > -; CHECK: [[META4:![0-9]+]] = !{}
> > -; CHECK: [[META5:![0-9]+]] = !{!0, !6, !9}
> > -; CHECK: [[DBG6]] = !DIGlobalVariableExpression(var: !7, expr:
> > !DIExpression())
> > -; CHECK: [[META7:![0-9]+]] = distinct !DIGlobalVariable(name: "d", scope:
> > !2, file: !3, line: 5, type: !8, isLocal: false, isDefinition: true)
> > -; CHECK: [[META8:![0-9]+]] = !DIBasicType(name: "float", size: 32,
> > encoding: DW_ATE_float)
> > -; CHECK: [[DBG9]] = !DIGlobalVariableExpression(var: !10, expr:
> > !DIExpression())
> > -; CHECK: [[META10:![0-9]+]] = distinct !DIGlobalVariable(name: "c",
> > scope: !2, file: !3, line: 6, type: !11, isLocal: false, isDefinition:
> > true)
> > -; CHECK: [[META11:![0-9]+]] = !DIBasicType(name: "int", size: 32,
> > encoding: DW_ATE_signed)
> > -; CHECK: [[META12:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META13:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META14:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META15:![0-9]+]] = !{!"clang version 12.0.0"}
> > -; CHECK: [[META16:![0-9]+]] = distinct !DISubprogram(name: "f",
> > linkageName: "_Z1fv", scope: !3, file: !3, line: 7, type: !17, scopeLine:
> > 7, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !19)
> > -; CHECK: [[META17:![0-9]+]] = !DISubroutineType(types: !18)
> > -; CHECK: [[META18:![0-9]+]] = !{null}
> > -; CHECK: [[META19:![0-9]+]] = !{!20}
> > -; CHECK: [[META20]] = !DILocalVariable(name: "e", scope: !16, file: !3,
> > line: 8, type: !8)
> > -; CHECK: [[DBG21]] = !DILocation(line: 9, column: 7, scope: !22)
> > -; CHECK: [[META22:![0-9]+]] = distinct !DILexicalBlock(scope: !16, file:
> > !3, line: 9, column: 7)
> > -; CHECK: [[DBG23]] = !DILocation(line: 9, column: 7, scope: !16)
> > -; CHECK: [[DBG24]] = !DILocation(line: 10, column: 9, scope: !22)
> > -; CHECK: [[META25]] = distinct !DIAssignID()
> > -; CHECK: [[DBG26]] = !DILocation(line: 0, scope: !16)
> > -; CHECK: [[DBG27]] = !DILocation(line: 10, column: 5, scope: !22)
> > -; CHECK: [[DBG28]] = !DILocation(line: 12, column: 9, scope: !22)
> > -; CHECK: [[DBG29]] = !DILocation(line: 12, column: 13, scope: !22)
> > -; CHECK: [[DBG30]] = !DILocation(line: 12, column: 11, scope: !22)
> > -; CHECK: [[DBG31]] = !DILocation(line: 0, scope: !22)
> > -; CHECK: [[DBG32]] = !DILocation(line: 13, column: 5, scope: !16)
> > -; CHECK: [[META33]] = !DILocalVariable(name: "this", arg: 1, scope: !34,
> > type: !45, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META34:![0-9]+]] = distinct !DISubprogram(name: "a",
> > linkageName: "_ZN1aC2EiRf", scope: !35, file: !3, line: 3, type: !38,
> > scopeLine: 3, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !2, declaration: !37,
> > retainedNodes: !42)
> > -; CHECK: [[META35:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_class_type, name: "a", file: !3, line: 1, size: 8, flags:
> > DIFlagTypePassByValue | DIFlagNonTrivial, elements: !36, identifier:
> > "_ZTS1a")
> > -; CHECK: [[META36:![0-9]+]] = !{!37}
> > -; CHECK: [[META37:![0-9]+]] = !DISubprogram(name: "a", scope: !35, file:
> > !3, line: 3, type: !38, scopeLine: 3, flags: DIFlagPublic |
> > DIFlagPrototyped, spFlags: DISPFlagOptimized)
> > -; CHECK: [[META38:![0-9]+]] = !DISubroutineType(types: !39)
> > -; CHECK: [[META39:![0-9]+]] = !{null, !40, !11, !41}
> > -; CHECK: [[META40:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !35, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META41:![0-9]+]] = !DIDerivedType(tag: DW_TAG_reference_type,
> > baseType: !8, size: 64)
> > -; CHECK: [[META42:![0-9]+]] = !{!33, !43, !44}
> > -; CHECK: [[META43]] = !DILocalVariable(arg: 2, scope: !34, file: !3,
> > line: 3, type: !11)
> > -; CHECK: [[META44]] = !DILocalVariable(arg: 3, scope: !34, file: !3,
> > line: 3, type: !41)
> > -; CHECK: [[META45:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !35, size: 64)
> > -; CHECK: [[META46]] = distinct !DIAssignID()
> > -; CHECK: [[DBG47]] = !DILocation(line: 0, scope: !34, inlinedAt: !48)
> > -; CHECK: [[META48:![0-9]+]] = distinct !DILocation(line: 13, column: 3,
> > scope: !16)
> > -; CHECK: [[META49]] = distinct !DIAssignID()
> > -; CHECK: [[META50]] = distinct !DIAssignID()
> > -; CHECK: [[META51]] = distinct !DIAssignID()
> > -; CHECK: [[META52]] = distinct !DIAssignID()
> > -; CHECK: [[META53]] = distinct !DIAssignID()
> > -; CHECK: [[DBG54]] = !DILocation(line: 14, column: 1, scope: !16)
> > -; CHECK: [[META55]] = distinct !DIAssignID()
> > -; CHECK: [[DBG56]] = !DILocation(line: 0, scope: !34)
> > -; CHECK: [[META57]] = distinct !DIAssignID()
> > -; CHECK: [[META58]] = distinct !DIAssignID()
> > -; CHECK: [[META59]] = distinct !DIAssignID()
> > -; CHECK: [[META60]] = distinct !DIAssignID()
> > -; CHECK: [[META61]] = distinct !DIAssignID()
> > -; CHECK: [[DBG62]] = !DILocation(line: 3, column: 20, scope: !34)
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-
> > tracking/sroa/memcpy.ll b/llvm/test/DebugInfo/Generic/assignment-
> > tracking/sroa/memcpy.ll
> > index ae5a1bfd659a9..f310456cc60a8 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/memcpy.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/memcpy.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt -passes=sroa,verify -S %s -o - -experimental-assignment-
> > tracking \
> >  ; RUN: | FileCheck %s --implicit-check-not="call void @llvm.dbg"
> >
> > @@ -25,12 +24,23 @@
> >  ;;     -Xclang -disable-llvm-passes -O2 -g -c -S -emit-llvm -o -
> >
> >  ;; Split alloca.
> > +; CHECK: entry:
> > +; CHECK-NEXT: %To.sroa.0 = alloca { i32, i32, i32 }, align 8, !DIAssignID
> > ![[ID_1:[0-9]+]]
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata {{.+}} undef, metadata
> > ![[TO:[0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 96),
> > metadata ![[ID_1]], metadata ptr %To.sroa.0, metadata !DIExpression()),
> > !dbg
> >
> > +; CHECK-NEXT: %To.sroa.4 = alloca { i32, i32, i32 }, align 8, !DIAssignID
> > ![[ID_3:[0-9]+]]
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata {{.+}} undef, metadata
> > ![[TO]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 96), metadata
> > ![[ID_3]], metadata ptr %To.sroa.4, metadata !DIExpression()), !dbg
> >
> >  ;; Split memcpy.
> > +; CHECK: call void @llvm.memcpy{{.*}}(ptr align 8 %To.sroa.0, ptr align 4
> > @From, i64 12, i1 false),{{.*}}!DIAssignID ![[ID_4:[0-9]+]]
> >  ;; This slice has been split and is promoted.
> > +; CHECK: %To.sroa.3.0.copyload = load i32, ptr getelementptr inbounds
> > (i8, ptr @From, i64 12)
> > +; CHECK: call void @llvm.memcpy{{.*}}(ptr align 8 %To.sroa.4, ptr align 4
> > getelementptr inbounds (i8, ptr @From, i64 16), i64 12, i1
> > false){{.*}}!DIAssignID ![[ID_6:[0-9]+]]
> >
> >  ;; Intrinsics for the splits above.
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata {{.+}} undef, metadata
> > ![[TO]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 96), metadata
> > ![[ID_4]], metadata ptr %To.sroa.0, metadata !DIExpression()), !dbg
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i32
> > %To.sroa.3.0.copyload, metadata ![[TO]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 96, 32), metadata !{{.+}}, metadata ptr
> > undef, metadata !DIExpression()), !dbg
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata {{.+}} undef, metadata
> > ![[TO]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 96), metadata
> > ![[ID_6]], metadata ptr %To.sroa.4, metadata !DIExpression()), !dbg
> >
> >  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-
> > f80:128-n8:16:32:64-S128"
> >
> > @@ -39,28 +49,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-
> > p272:64:64-i64:64-f80:128-n8:16
> >  @From = dso_local global %struct.LargeStruct zeroinitializer, align 4,
> > !dbg !0
> >
> >  ; Function Attrs: nounwind uwtable mustprogress
> > -;.
> > -; CHECK: @[[FROM:[a-zA-Z0-9_$"\\.-]+]] = dso_local global
> > [[STRUCT_LARGESTRUCT:%.*]] zeroinitializer, align 4, !dbg [[DBG0:![0-9]+]]
> > -;.
> >  define dso_local i32 @_Z7examplev() #0 !dbg !20 {
> > -; CHECK-LABEL: @_Z7examplev(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    [[TO_SROA_0:%.*]] = alloca { i32, i32, i32 }, align 8,
> > !DIAssignID [[DIASSIGNID25:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META24:![0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 96),
> > metadata [[DIASSIGNID25]], metadata ptr [[TO_SROA_0]], metadata
> > !DIExpression()), !dbg [[DBG26:![0-9]+]]
> > -; CHECK-NEXT:    [[TO_SROA_4:%.*]] = alloca { i32, i32, i32 }, align 8,
> > !DIAssignID [[DIASSIGNID27:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META24]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 96), metadata
> > [[DIASSIGNID27]], metadata ptr [[TO_SROA_4]], metadata !DIExpression()),
> > !dbg [[DBG26]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 12, ptr
> > [[TO_SROA_0]]), !dbg [[DBG28:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 12, ptr
> > [[TO_SROA_4]]), !dbg [[DBG28]]
> > -; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 8
> > [[TO_SROA_0]], ptr align 4 @From, i64 12, i1 false), !dbg [[DBG29:![0-
> > 9]+]], !DIAssignID [[DIASSIGNID30:![0-9]+]]
> > -; CHECK-NEXT:    [[TO_SROA_3_0_COPYLOAD:%.*]] = load i32, ptr
> > getelementptr inbounds (i8, ptr @From, i64 12), align 4, !dbg [[DBG29]]
> > -; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 8
> > [[TO_SROA_4]], ptr align 4 getelementptr inbounds (i8, ptr @From, i64 16),
> > i64 12, i1 false), !dbg [[DBG29]], !DIAssignID [[DIASSIGNID31:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META24]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 96), metadata
> > [[DIASSIGNID30]], metadata ptr [[TO_SROA_0]], metadata !DIExpression()),
> > !dbg [[DBG29]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i32
> > [[TO_SROA_3_0_COPYLOAD]], metadata [[META24]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 96, 32), metadata [[META32:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG29]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META24]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 96), metadata
> > [[DIASSIGNID31]], metadata ptr [[TO_SROA_4]], metadata !DIExpression()),
> > !dbg [[DBG29]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 12, ptr
> > [[TO_SROA_0]]), !dbg [[DBG33:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 12, ptr
> > [[TO_SROA_4]]), !dbg [[DBG33]]
> > -; CHECK-NEXT:    ret i32 [[TO_SROA_3_0_COPYLOAD]], !dbg [[DBG34:![0-9]+]]
> > -;
> >  entry:
> >    %To = alloca %struct.LargeStruct, align 4, !DIAssignID !25
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !24, metadata
> > !DIExpression(), metadata !25, metadata ptr %To, metadata
> > !DIExpression()), !dbg !26
> > @@ -126,44 +115,3 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  !35 = !DILocation(line: 9, column: 13, scope: !20)
> >  !38 = !DILocation(line: 10, column: 1, scope: !20)
> >  !39 = !DILocation(line: 9, column: 3, scope: !20)
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync
> > nounwind willreturn memory(argmem: readwrite) }
> > -; CHECK: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nounwind
> > willreturn memory(argmem: readwrite) }
> > -;.
> > -; CHECK: [[DBG0]] = !DIGlobalVariableExpression(var: !1, expr:
> > !DIExpression())
> > -; CHECK: [[META1:![0-9]+]] = distinct !DIGlobalVariable(name: "From",
> > scope: !2, file: !3, line: 6, type: !6, isLocal: false, isDefinition:
> > true)
> > -; CHECK: [[META2:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C_plus_plus_14, file: !3, producer: "clang version 12.0.0",
> > isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4,
> > globals: !5, splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META3:![0-9]+]] = !DIFile(filename: "sroa-test.cpp",
> > directory: "/")
> > -; CHECK: [[META4:![0-9]+]] = !{}
> > -; CHECK: [[META5:![0-9]+]] = !{!0}
> > -; CHECK: [[META6:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_structure_type, name: "LargeStruct", file: !3, line: 1, size: 224,
> > flags: DIFlagTypePassByValue, elements: !7, identifier:
> > "_ZTS11LargeStruct")
> > -; CHECK: [[META7:![0-9]+]] = !{!8, !10, !11, !12, !13, !14, !15}
> > -; CHECK: [[META8:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "A", scope: !6, file: !3, line: 2, baseType: !9, size: 32)
> > -; CHECK: [[META9:![0-9]+]] = !DIBasicType(name: "int", size: 32,
> > encoding: DW_ATE_signed)
> > -; CHECK: [[META10:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "B", scope: !6, file: !3, line: 2, baseType: !9, size: 32, offset: 32)
> > -; CHECK: [[META11:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "C", scope: !6, file: !3, line: 2, baseType: !9, size: 32, offset: 64)
> > -; CHECK: [[META12:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "Var", scope: !6, file: !3, line: 3, baseType: !9, size: 32, offset: 96)
> > -; CHECK: [[META13:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "D", scope: !6, file: !3, line: 4, baseType: !9, size: 32, offset: 128)
> > -; CHECK: [[META14:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "E", scope: !6, file: !3, line: 4, baseType: !9, size: 32, offset: 160)
> > -; CHECK: [[META15:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "F", scope: !6, file: !3, line: 4, baseType: !9, size: 32, offset: 192)
> > -; CHECK: [[META16:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META17:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META18:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META19:![0-9]+]] = !{!"clang version 12.0.0"}
> > -; CHECK: [[META20:![0-9]+]] = distinct !DISubprogram(name: "example",
> > linkageName: "_Z7examplev", scope: !3, file: !3, line: 7, type: !21,
> > scopeLine: 7, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !23)
> > -; CHECK: [[META21:![0-9]+]] = !DISubroutineType(types: !22)
> > -; CHECK: [[META22:![0-9]+]] = !{!9}
> > -; CHECK: [[META23:![0-9]+]] = !{!24}
> > -; CHECK: [[META24]] = !DILocalVariable(name: "To", scope: !20, file: !3,
> > line: 8, type: !6)
> > -; CHECK: [[DIASSIGNID25]] = distinct !DIAssignID()
> > -; CHECK: [[DBG26]] = !DILocation(line: 0, scope: !20)
> > -; CHECK: [[DIASSIGNID27]] = distinct !DIAssignID()
> > -; CHECK: [[DBG28]] = !DILocation(line: 8, column: 3, scope: !20)
> > -; CHECK: [[DBG29]] = !DILocation(line: 8, column: 20, scope: !20)
> > -; CHECK: [[DIASSIGNID30]] = distinct !DIAssignID()
> > -; CHECK: [[DIASSIGNID31]] = distinct !DIAssignID()
> > -; CHECK: [[META32]] = distinct !DIAssignID()
> > -; CHECK: [[DBG33]] = !DILocation(line: 10, column: 1, scope: !20)
> > -; CHECK: [[DBG34]] = !DILocation(line: 9, column: 3, scope: !20)
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-
> > tracking/sroa/memmove-to-from-same-alloca.ll
> > b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/memmove-to-from-
> > same-alloca.ll
> > index 5bbf184888dd3..766e338aab5d7 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/memmove-to-
> > from-same-alloca.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/memmove-to-
> > from-same-alloca.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt %s -passes=sroa -o - -S -experimental-assignment-tracking \
> >  ; RUN: | FileCheck %s
> >
> > @@ -7,7 +6,7 @@
> >  ;; __attribute__((nodebug)) int Cond;
> >  ;; __attribute__((nodebug)) Blob *C;
> >  ;; __attribute__((nodebug)) void call(int);
> > -;;
> > +;;
> >  ;; void f() {
> >  ;;   int A[16];
> >  ;;   __attribute__ ((nodebug)) int B[16];
> > @@ -15,7 +14,7 @@
> >  ;;   __builtin_memmove(&A[0], &Glob, sizeof(Blob));
> >  ;;   call(0);
> >  ;;   // B[8:14) <- Glob
> > -;;   __builtin_memmove(&B[8], &Glob, sizeof(Blob));
> > +;;   __builtin_memmove(&B[8], &Glob, sizeof(Blob));
> >  ;;   call(A[0]);
> >  ;;   // A[8:14) <- A[0:6)
> >  ;;   __builtin_memmove(&A[8], &A[0], sizeof(Blob));
> > @@ -25,9 +24,9 @@
> >  ;;     __builtin_memmove(C, &A[8], sizeof(Blob));
> >  ;;   else
> >  ;;     // C <- B[8:14)
> > -;;     __builtin_memmove(C, &B[8], sizeof(Blob));
> > +;;     __builtin_memmove(C, &B[8], sizeof(Blob));
> >  ;; }
> > -;;
> > +;;
> >  ;; using:
> >  ;;   clang test.cpp -emit-llvm -S -g -O2 -Xclang -disable-llvm-passes -o
> > - \
> >  ;;   | opt -passes=declare-to-assign -o test.ll - -S
> > @@ -39,9 +38,14 @@
> >  ;; memcpy. Check that the dbg.assign address and fragment are correct and
> >  ;; ensure the DIAssignID still links it to the memmove(/memcpy).
> >
> > +; CHECK: %A.sroa.0.sroa.5 = alloca [5 x i32]
> > +; CHECK: llvm.memcpy{{.*}}(ptr align 4 %A.sroa.0.sroa.5, ptr align 4
> > getelementptr inbounds (i8, ptr @Glob, i64 4), i64 20, i1
> > false){{.*}}!DIAssignID ![[ID:[0-9]+]]
> >  ;; Here's the dbg.assign for element 0 - it's not important for the test.
> > +; CHECK-NEXT: llvm.dbg.assign({{.*}}!DIExpression(DW_OP_LLVM_fragment, 0,
> > 32){{.*}})
> >  ;; This is the dbg.assign we care about:
> > +; CHECK-NEXT: llvm.dbg.assign(metadata i1 undef, metadata ![[VAR:[0-
> > 9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 32, 160), metadata
> > ![[ID]], metadata ptr %A.sroa.0.sroa.5, metadata !DIExpression())
> >
> > +; CHECK: ![[VAR]] = !DILocalVariable(name: "A"
> >
> >  source_filename = "test.cpp"
> >  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-
> > f80:128-n8:16:32:64-S128"
> > @@ -54,56 +58,7 @@ target triple = "x86_64-unknown-linux-gnu"
> >  @C = dso_local global ptr null, align 8
> >
> >  ; Function Attrs: mustprogress uwtable
> > -;.
> > -; CHECK: @[[GLOB:[a-zA-Z0-9_$"\\.-]+]] = dso_local global
> > [[STRUCT_BLOB:%.*]] zeroinitializer, align 4
> > -; CHECK: @[[COND:[a-zA-Z0-9_$"\\.-]+]] = dso_local global i32 0, align 4
> > -; CHECK: @[[C:[a-zA-Z0-9_$"\\.-]+]] = dso_local global ptr null, align 8
> > -;.
> >  define dso_local void @_Z1fv() #0 !dbg !9 {
> > -; CHECK-LABEL: @_Z1fv(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    [[A_SROA_0_SROA_5:%.*]] = alloca [5 x i32], align 4,
> > !DIAssignID [[DIASSIGNID18:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META13:![0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 32, 160),
> > metadata [[DIASSIGNID18]], metadata ptr [[A_SROA_0_SROA_5]], metadata
> > !DIExpression()), !dbg [[DBG19:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META13]], metadata !DIExpression(DW_OP_LLVM_fragment, 192, 64), metadata
> > [[META20:![0-9]+]], metadata ptr undef, metadata !DIExpression()), !dbg
> > [[DBG19]]
> > -; CHECK-NEXT:    [[A_SROA_51_SROA_5:%.*]] = alloca [5 x i32], align 4,
> > !DIAssignID [[DIASSIGNID21:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META13]], metadata !DIExpression(DW_OP_LLVM_fragment, 288, 160),
> > metadata [[DIASSIGNID21]], metadata ptr [[A_SROA_51_SROA_5]], metadata
> > !DIExpression()), !dbg [[DBG19]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META13]], metadata !DIExpression(DW_OP_LLVM_fragment, 448, 64), metadata
> > [[META22:![0-9]+]], metadata ptr undef, metadata !DIExpression()), !dbg
> > [[DBG19]]
> > -; CHECK-NEXT:    [[B:%.*]] = alloca [16 x i32], align 16
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 20, ptr
> > [[A_SROA_0_SROA_5]]), !dbg [[DBG23:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 20, ptr
> > [[A_SROA_51_SROA_5]]), !dbg [[DBG23]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 64, ptr [[B]]),
> > !dbg [[DBG24:![0-9]+]]
> > -; CHECK-NEXT:    [[A_SROA_0_SROA_0_0_COPYLOAD:%.*]] = load i32, ptr
> > @Glob, align 4, !dbg [[DBG25:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 4
> > [[A_SROA_0_SROA_5]], ptr align 4 getelementptr inbounds (i8, ptr @Glob,
> > i64 4), i64 20, i1 false), !dbg [[DBG25]], !DIAssignID [[DIASSIGNID26:![0-
> > 9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i32
> > [[A_SROA_0_SROA_0_0_COPYLOAD]], metadata [[META13]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 0, 32), metadata [[META27:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG19]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META13]], metadata !DIExpression(DW_OP_LLVM_fragment, 32, 160), metadata
> > [[DIASSIGNID26]], metadata ptr [[A_SROA_0_SROA_5]], metadata
> > !DIExpression()), !dbg [[DBG19]]
> > -; CHECK-NEXT:    call void @_Z4calli(i32 noundef 0), !dbg [[DBG28:![0-
> > 9]+]]
> > -; CHECK-NEXT:    [[ARRAYIDX1:%.*]] = getelementptr inbounds [16 x i32],
> > ptr [[B]], i64 0, i64 8, !dbg [[DBG29:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr align 16
> > [[ARRAYIDX1]], ptr align 4 @Glob, i64 24, i1 false), !dbg [[DBG30:![0-
> > 9]+]]
> > -; CHECK-NEXT:    call void @_Z4calli(i32 noundef
> > [[A_SROA_0_SROA_0_0_COPYLOAD]]), !dbg [[DBG31:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 4
> > [[A_SROA_51_SROA_5]], ptr align 4 [[A_SROA_0_SROA_5]], i64 20, i1 false),
> > !dbg [[DBG32:![0-9]+]], !DIAssignID [[DIASSIGNID33:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i32
> > [[A_SROA_0_SROA_0_0_COPYLOAD]], metadata [[META13]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 256, 32), metadata [[META34:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG19]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META13]], metadata !DIExpression(DW_OP_LLVM_fragment, 288, 160),
> > metadata [[DIASSIGNID33]], metadata ptr [[A_SROA_51_SROA_5]], metadata
> > !DIExpression()), !dbg [[DBG19]]
> > -; CHECK-NEXT:    call void @_Z4calli(i32 noundef
> > [[A_SROA_0_SROA_0_0_COPYLOAD]]), !dbg [[DBG35:![0-9]+]]
> > -; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @Cond, align 4, !dbg
> > [[DBG36:![0-9]+]]
> > -; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i32 [[TMP0]], 0, !dbg [[DBG36]]
> > -; CHECK-NEXT:    br i1 [[TOBOOL]], label [[IF_THEN:%.*]], label
> > [[IF_ELSE:%.*]], !dbg [[DBG38:![0-9]+]]
> > -; CHECK:       if.then:
> > -; CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr @C, align 8, !dbg
> > [[DBG39:![0-9]+]]
> > -; CHECK-NEXT:    store i32 [[A_SROA_0_SROA_0_0_COPYLOAD]], ptr [[TMP1]],
> > align 4, !dbg [[DBG40:![0-9]+]]
> > -; CHECK-NEXT:    [[A_SROA_51_SROA_5_0__SROA_IDX:%.*]] = getelementptr
> > inbounds i8, ptr [[TMP1]], i64 4, !dbg [[DBG40]]
> > -; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 4
> > [[A_SROA_51_SROA_5_0__SROA_IDX]], ptr align 4 [[A_SROA_51_SROA_5]], i64
> > 20, i1 false), !dbg [[DBG40]]
> > -; CHECK-NEXT:    br label [[IF_END:%.*]], !dbg [[DBG40]]
> > -; CHECK:       if.else:
> > -; CHECK-NEXT:    [[TMP2:%.*]] = load ptr, ptr @C, align 8, !dbg
> > [[DBG41:![0-9]+]]
> > -; CHECK-NEXT:    [[ARRAYIDX7:%.*]] = getelementptr inbounds [16 x i32],
> > ptr [[B]], i64 0, i64 8, !dbg [[DBG42:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr align 4 [[TMP2]],
> > ptr align 16 [[ARRAYIDX7]], i64 24, i1 false), !dbg [[DBG43:![0-9]+]]
> > -; CHECK-NEXT:    br label [[IF_END]]
> > -; CHECK:       if.end:
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 64, ptr [[B]]), !dbg
> > [[DBG44:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 20, ptr
> > [[A_SROA_0_SROA_5]]), !dbg [[DBG44]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 20, ptr
> > [[A_SROA_51_SROA_5]]), !dbg [[DBG44]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG44]]
> > -;
> >  entry:
> >    %A = alloca [16 x i32], align 16, !DIAssignID !18
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !13, metadata
> > !DIExpression(), metadata !18, metadata ptr %A, metadata !DIExpression()),
> > !dbg !19
> > @@ -206,54 +161,3 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  !49 = !DILocation(line: 23, column: 27, scope: !41)
> >  !50 = !DILocation(line: 23, column: 5, scope: !41)
> >  !51 = !DILocation(line: 24, column: 1, scope: !9)
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind willreturn memory(argmem: readwrite) }
> > -; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -; CHECK: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nounwind
> > willreturn memory(argmem: readwrite) }
> > -;.
> > -; CHECK: [[META0:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C_plus_plus_14, file: !1, producer: "clang version 16.0.0",
> > isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug,
> > splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META1:![0-9]+]] = !DIFile(filename: "test.cpp", directory:
> > "/")
> > -; CHECK: [[META2:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 5}
> > -; CHECK: [[META3:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META4:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META5:![0-9]+]] = !{i32 8, !"PIC Level", i32 2}
> > -; CHECK: [[META6:![0-9]+]] = !{i32 7, !"PIE Level", i32 2}
> > -; CHECK: [[META7:![0-9]+]] = !{i32 7, !"uwtable", i32 2}
> > -; CHECK: [[META8:![0-9]+]] = !{!"clang version 16.0.0"}
> > -; CHECK: [[META9:![0-9]+]] = distinct !DISubprogram(name: "f",
> > linkageName: "_Z1fv", scope: !1, file: !1, line: 6, type: !10, scopeLine:
> > 6, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !12)
> > -; CHECK: [[META10:![0-9]+]] = !DISubroutineType(types: !11)
> > -; CHECK: [[META11:![0-9]+]] = !{null}
> > -; CHECK: [[META12:![0-9]+]] = !{!13}
> > -; CHECK: [[META13]] = !DILocalVariable(name: "A", scope: !9, file: !1,
> > line: 7, type: !14)
> > -; CHECK: [[META14:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type,
> > baseType: !15, size: 512, elements: !16)
> > -; CHECK: [[META15:![0-9]+]] = !DIBasicType(name: "int", size: 32,
> > encoding: DW_ATE_signed)
> > -; CHECK: [[META16:![0-9]+]] = !{!17}
> > -; CHECK: [[META17:![0-9]+]] = !DISubrange(count: 16)
> > -; CHECK: [[DIASSIGNID18]] = distinct !DIAssignID()
> > -; CHECK: [[DBG19]] = !DILocation(line: 0, scope: !9)
> > -; CHECK: [[META20]] = distinct !DIAssignID()
> > -; CHECK: [[DIASSIGNID21]] = distinct !DIAssignID()
> > -; CHECK: [[META22]] = distinct !DIAssignID()
> > -; CHECK: [[DBG23]] = !DILocation(line: 7, column: 3, scope: !9)
> > -; CHECK: [[DBG24]] = !DILocation(line: 8, column: 3, scope: !9)
> > -; CHECK: [[DBG25]] = !DILocation(line: 10, column: 3, scope: !9)
> > -; CHECK: [[DIASSIGNID26]] = distinct !DIAssignID()
> > -; CHECK: [[META27]] = distinct !DIAssignID()
> > -; CHECK: [[DBG28]] = !DILocation(line: 11, column: 3, scope: !9)
> > -; CHECK: [[DBG29]] = !DILocation(line: 13, column: 22, scope: !9)
> > -; CHECK: [[DBG30]] = !DILocation(line: 13, column: 3, scope: !9)
> > -; CHECK: [[DBG31]] = !DILocation(line: 14, column: 3, scope: !9)
> > -; CHECK: [[DBG32]] = !DILocation(line: 16, column: 3, scope: !9)
> > -; CHECK: [[DIASSIGNID33]] = distinct !DIAssignID()
> > -; CHECK: [[META34]] = distinct !DIAssignID()
> > -; CHECK: [[DBG35]] = !DILocation(line: 17, column: 3, scope: !9)
> > -; CHECK: [[DBG36]] = !DILocation(line: 18, column: 7, scope: !37)
> > -; CHECK: [[META37:![0-9]+]] = distinct !DILexicalBlock(scope: !9, file:
> > !1, line: 18, column: 7)
> > -; CHECK: [[DBG38]] = !DILocation(line: 18, column: 7, scope: !9)
> > -; CHECK: [[DBG39]] = !DILocation(line: 20, column: 23, scope: !37)
> > -; CHECK: [[DBG40]] = !DILocation(line: 20, column: 5, scope: !37)
> > -; CHECK: [[DBG41]] = !DILocation(line: 23, column: 23, scope: !37)
> > -; CHECK: [[DBG42]] = !DILocation(line: 23, column: 27, scope: !37)
> > -; CHECK: [[DBG43]] = !DILocation(line: 23, column: 5, scope: !37)
> > -; CHECK: [[DBG44]] = !DILocation(line: 24, column: 1, scope: !9)
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-
> > tracking/sroa/rewrite.ll b/llvm/test/DebugInfo/Generic/assignment-
> > tracking/sroa/rewrite.ll
> > index b9e4432058f32..001693a4aecdf 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/rewrite.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/rewrite.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt -passes=sroa,verify -S %s -experimental-assignment-tracking -o
> > - \
> >  ; RUN: | FileCheck %s --implicit-check-not="call void @llvm.dbg"
> >
> > @@ -23,15 +22,27 @@
> >  ;; }
> >  ;; $ clang test.cpp -Xclang -disable-llvm-passes -O2 -g -c -S -emit-llvm
> > -o -
> >
> > +; CHECK: entry:
> > +; CHECK-NEXT:   %S.sroa.0 = alloca { i32, i32, i32 }, align 8,
> > !DIAssignID ![[ID_1:[0-9]+]]
> > +; CHECK-NEXT:   call void @llvm.dbg.assign(metadata i1 undef, metadata
> > ![[VAR:[0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 96),
> > metadata ![[ID_1]], metadata ptr %S.sroa.0, metadata !DIExpression()),
> > !dbg
> >
> >  ;; The middle slice has been promoted, so the alloca has gone away.
> >
> > +; CHECK-NEXT:   %S.sroa.5 = alloca { i32, i32, i32 }, align 8,
> > !DIAssignID ![[ID_3:[0-9]+]]
> > +; CHECK-NEXT:   call void @llvm.dbg.assign(metadata i1 undef, metadata
> > ![[VAR]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 96), metadata
> > ![[ID_3]], metadata ptr %S.sroa.5, metadata !DIExpression()), !dbg
> >
> >  ;; The memset has been sliced up (middle slice removed).
> > +; CHECK: call void @llvm.memset{{.*}}(ptr align 8 %S.sroa.0, i8 0, i64
> > 12, i1 false), !dbg !{{.+}}, !DIAssignID ![[ID_5:[0-9]+]]
> > +; CHECK: call void @llvm.memset{{.*}}(ptr align 8 %S.sroa.5, i8 0, i64
> > 12, i1 false), !dbg !{{.+}}, !DIAssignID ![[ID_6:[0-9]+]]
> >
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i8 0, metadata
> > ![[VAR]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 96), metadata
> > ![[ID_5]], metadata ptr %S.sroa.0, metadata !DIExpression()), !dbg
> >  ;; Check the middle slice (no memset) gets a correct dbg.assign.
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i32 0, metadata
> > ![[VAR]], metadata !DIExpression(DW_OP_LLVM_fragment, 96, 32), metadata
> > !{{.+}}, metadata ptr undef, metadata !DIExpression()), !dbg
> > +; CHECK-NEXT:   call void @llvm.dbg.assign(metadata i8 0, metadata
> > ![[VAR]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 96), metadata
> > ![[ID_6]], metadata ptr %S.sroa.5, metadata !DIExpression()), !dbg
> >
> >  ;; mem2reg promotes the load/store to the middle slice created by SROA:
> > +; CHECK-NEXT: %0 = load i32, ptr @Glob, align 4, !dbg !{{.+}}
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i32 %0, metadata
> > ![[VAR]], metadata !DIExpression(DW_OP_LLVM_fragment, 96, 32), metadata
> > ![[ID_4:[0-9]+]], metadata ptr undef, metadata !DIExpression()), !dbg
> >
> >  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-
> > f80:128-n8:16:32:64-S128"
> >
> > @@ -41,30 +52,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-
> > p272:64:64-i64:64-f80:128-n8:16
> >  @Cond = dso_local global i8 0, align 1, !dbg !6
> >
> >  ; Function Attrs: nounwind uwtable mustprogress
> > -;.
> > -; CHECK: @[[GLOB:[a-zA-Z0-9_$"\\.-]+]] = dso_local global i32 0, align 4,
> > !dbg [[DBG0:![0-9]+]]
> > -; CHECK: @[[COND:[a-zA-Z0-9_$"\\.-]+]] = dso_local global i8 0, align 1,
> > !dbg [[DBG6:![0-9]+]]
> > -;.
> >  define dso_local i32 @_Z7examplev() #0 !dbg !14 {
> > -; CHECK-LABEL: @_Z7examplev(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    [[S_SROA_0:%.*]] = alloca { i32, i32, i32 }, align 8,
> > !DIAssignID [[DIASSIGNID28:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META18:![0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 96),
> > metadata [[DIASSIGNID28]], metadata ptr [[S_SROA_0]], metadata
> > !DIExpression()), !dbg [[DBG29:![0-9]+]]
> > -; CHECK-NEXT:    [[S_SROA_5:%.*]] = alloca { i32, i32, i32 }, align 8,
> > !DIAssignID [[DIASSIGNID30:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META18]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 96), metadata
> > [[DIASSIGNID30]], metadata ptr [[S_SROA_5]], metadata !DIExpression()),
> > !dbg [[DBG29]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 12, ptr
> > [[S_SROA_0]]), !dbg [[DBG31:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 12, ptr
> > [[S_SROA_5]]), !dbg [[DBG31]]
> > -; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 8 [[S_SROA_0]],
> > i8 0, i64 12, i1 false), !dbg [[DBG32:![0-9]+]], !DIAssignID
> > [[DIASSIGNID33:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 8 [[S_SROA_5]],
> > i8 0, i64 12, i1 false), !dbg [[DBG32]], !DIAssignID [[DIASSIGNID34:![0-
> > 9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i8 0, metadata
> > [[META18]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 96), metadata
> > [[DIASSIGNID33]], metadata ptr [[S_SROA_0]], metadata !DIExpression()),
> > !dbg [[DBG32]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i32 0, metadata
> > [[META18]], metadata !DIExpression(DW_OP_LLVM_fragment, 96, 32), metadata
> > [[META35:![0-9]+]], metadata ptr undef, metadata !DIExpression()), !dbg
> > [[DBG32]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i8 0, metadata
> > [[META18]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 96), metadata
> > [[DIASSIGNID34]], metadata ptr [[S_SROA_5]], metadata !DIExpression()),
> > !dbg [[DBG32]]
> > -; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @Glob, align 4, !dbg
> > [[DBG36:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i32 [[TMP0]],
> > metadata [[META18]], metadata !DIExpression(DW_OP_LLVM_fragment, 96, 32),
> > metadata [[META37:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG38:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 12, ptr
> > [[S_SROA_0]]), !dbg [[DBG39:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 12, ptr
> > [[S_SROA_5]]), !dbg [[DBG39]]
> > -; CHECK-NEXT:    ret i32 [[TMP0]], !dbg [[DBG40:![0-9]+]]
> > -;
> >  entry:
> >    %S = alloca %struct.LargeStruct, align 4, !DIAssignID !28
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !18, metadata
> > !DIExpression(), metadata !28, metadata ptr %S, metadata !DIExpression()),
> > !dbg !29
> > @@ -140,50 +128,3 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  !43 = !DILocation(line: 12, column: 12, scope: !14)
> >  !44 = !DILocation(line: 13, column: 1, scope: !14)
> >  !45 = !DILocation(line: 12, column: 3, scope: !14)
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync
> > nounwind willreturn memory(argmem: readwrite) }
> > -; CHECK: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nounwind
> > willreturn memory(argmem: write) }
> > -;.
> > -; CHECK: [[DBG0]] = !DIGlobalVariableExpression(var: !1, expr:
> > !DIExpression())
> > -; CHECK: [[META1:![0-9]+]] = distinct !DIGlobalVariable(name: "Glob",
> > scope: !2, file: !3, line: 7, type: !9, isLocal: false, isDefinition:
> > true)
> > -; CHECK: [[META2:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C_plus_plus_14, file: !3, producer: "clang version 12.0.0",
> > isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4,
> > globals: !5, splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META3:![0-9]+]] = !DIFile(filename: "test.cpp", directory:
> > "/")
> > -; CHECK: [[META4:![0-9]+]] = !{}
> > -; CHECK: [[META5:![0-9]+]] = !{!0, !6}
> > -; CHECK: [[DBG6]] = !DIGlobalVariableExpression(var: !7, expr:
> > !DIExpression())
> > -; CHECK: [[META7:![0-9]+]] = distinct !DIGlobalVariable(name: "Cond",
> > scope: !2, file: !3, line: 8, type: !8, isLocal: false, isDefinition:
> > true)
> > -; CHECK: [[META8:![0-9]+]] = !DIBasicType(name: "bool", size: 8,
> > encoding: DW_ATE_boolean)
> > -; CHECK: [[META9:![0-9]+]] = !DIBasicType(name: "int", size: 32,
> > encoding: DW_ATE_signed)
> > -; CHECK: [[META10:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META11:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META12:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META13:![0-9]+]] = !{!"clang version 12.0.0"}
> > -; CHECK: [[META14:![0-9]+]] = distinct !DISubprogram(name: "example",
> > linkageName: "_Z7examplev", scope: !3, file: !3, line: 9, type: !15,
> > scopeLine: 9, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !17)
> > -; CHECK: [[META15:![0-9]+]] = !DISubroutineType(types: !16)
> > -; CHECK: [[META16:![0-9]+]] = !{!9}
> > -; CHECK: [[META17:![0-9]+]] = !{!18}
> > -; CHECK: [[META18]] = !DILocalVariable(name: "S", scope: !14, file: !3,
> > line: 10, type: !19)
> > -; CHECK: [[META19:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_structure_type, name: "LargeStruct", file: !3, line: 2, size: 224,
> > flags: DIFlagTypePassByValue, elements: !20, identifier:
> > "_ZTS11LargeStruct")
> > -; CHECK: [[META20:![0-9]+]] = !{!21, !22, !23, !24, !25, !26, !27}
> > -; CHECK: [[META21:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "A", scope: !19, file: !3, line: 3, baseType: !9, size: 32)
> > -; CHECK: [[META22:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "B", scope: !19, file: !3, line: 3, baseType: !9, size: 32, offset: 32)
> > -; CHECK: [[META23:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "C", scope: !19, file: !3, line: 3, baseType: !9, size: 32, offset: 64)
> > -; CHECK: [[META24:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "Var", scope: !19, file: !3, line: 4, baseType: !9, size: 32, offset: 96)
> > -; CHECK: [[META25:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "D", scope: !19, file: !3, line: 5, baseType: !9, size: 32, offset: 128)
> > -; CHECK: [[META26:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "E", scope: !19, file: !3, line: 5, baseType: !9, size: 32, offset: 160)
> > -; CHECK: [[META27:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "F", scope: !19, file: !3, line: 5, baseType: !9, size: 32, offset: 192)
> > -; CHECK: [[DIASSIGNID28]] = distinct !DIAssignID()
> > -; CHECK: [[DBG29]] = !DILocation(line: 0, scope: !14)
> > -; CHECK: [[DIASSIGNID30]] = distinct !DIAssignID()
> > -; CHECK: [[DBG31]] = !DILocation(line: 10, column: 3, scope: !14)
> > -; CHECK: [[DBG32]] = !DILocation(line: 10, column: 15, scope: !14)
> > -; CHECK: [[DIASSIGNID33]] = distinct !DIAssignID()
> > -; CHECK: [[DIASSIGNID34]] = distinct !DIAssignID()
> > -; CHECK: [[META35]] = distinct !DIAssignID()
> > -; CHECK: [[DBG36]] = !DILocation(line: 11, column: 11, scope: !14)
> > -; CHECK: [[META37]] = distinct !DIAssignID()
> > -; CHECK: [[DBG38]] = !DILocation(line: 11, column: 9, scope: !14)
> > -; CHECK: [[DBG39]] = !DILocation(line: 13, column: 1, scope: !14)
> > -; CHECK: [[DBG40]] = !DILocation(line: 12, column: 3, scope: !14)
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-
> > tracking/sroa/store.ll b/llvm/test/DebugInfo/Generic/assignment-
> > tracking/sroa/store.ll
> > index c4433cd2d29b7..c29cf488ce8b9 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/store.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/store.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt -passes=sroa,verify -S %s -o - -experimental-assignment-
> > tracking \
> >  ; RUN: | FileCheck %s --implicit-check-not="call void @llvm.dbg"
> >
> > @@ -26,16 +25,28 @@
> >  ;; $ clang test.cpp -Xclang -disable-llvm-passes -O2 -g -c -S -emit-llvm
> > -o - \
> >  ;;   | opt -passes=declare-to-assign -S -o -
> >
> > +; CHECK: entry:
> > +; CHECK-NEXT:   %S.sroa.0 = alloca { i32, i32, i32 }, align 8,
> > !DIAssignID ![[ID_1:[0-9]+]]
> > +; CHECK-NEXT:   call void @llvm.dbg.assign(metadata i1 undef, metadata
> > ![[VAR:[0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 96),
> > metadata ![[ID_1]], metadata ptr %S.sroa.0, metadata !DIExpression()),
> > !dbg
> >
> > +; CHECK-NEXT:   %S.sroa.6 = alloca { i32, i32, i32 }, align 8,
> > !DIAssignID ![[ID_3:[0-9]+]]
> > +; CHECK-NEXT:   call void @llvm.dbg.assign(metadata i1 undef, metadata
> > ![[VAR]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 96), metadata
> > ![[ID_3]], metadata ptr %S.sroa.6, metadata !DIExpression()), !dbg
> >
> >  ;; The memset has been split into [0, 96)[96, 128)[128, 224) bit slices.
> > The
> >  ;; memset for the middle slice has been removed.
> > +; CHECK: call void @llvm.memset{{.*}}(ptr align 8 %S.sroa.0, i8 0, i64
> > 12, i1 false), !dbg !{{.+}}, !DIAssignID ![[ID_4:[0-9]+]]
> > +; CHECK-NEXT: call void @llvm.memset{{.*}}(ptr align 8 %S.sroa.6, i8 0,
> > i64 12, i1 false), !dbg !{{.+}}, !DIAssignID ![[ID_5:[0-9]+]]
> >
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i8 0, metadata
> > ![[VAR]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 96), metadata
> > ![[ID_4]], metadata ptr %S.sroa.0, metadata !DIExpression()), !dbg
> >  ;; This is the one we care about most in this test: check that a memset-
> > >store
> >  ;; gets a correct dbg.assign.
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i32 0, metadata
> > ![[VAR]], metadata !DIExpression(DW_OP_LLVM_fragment, 96, 32), metadata
> > !{{.+}}, metadata ptr undef, metadata !DIExpression()), !dbg
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i8 0, metadata
> > ![[VAR]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 96), metadata
> > ![[ID_5]], metadata ptr %S.sroa.6, metadata !DIExpression()), !dbg
> >
> >  ;; The load from global+store becomes a load.
> >  ;; FIXME: In reality it is actually stored again later on.
> > +; CHECK-NEXT: %0 = load i32, ptr @Glob, align 4, !dbg !{{.+}}
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i32 %0, metadata
> > ![[VAR]], metadata !DIExpression(DW_OP_LLVM_fragment, 96, 32), metadata
> > !{{.+}}, metadata ptr undef, metadata !DIExpression()), !dbg !
> >
> >
> >  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-
> > f80:128-n8:16:32:64-S128"
> > @@ -46,38 +57,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-
> > p272:64:64-i64:64-f80:128-n8:16
> >  @Cond = dso_local global i8 0, align 1, !dbg !6
> >
> >  ; Function Attrs: uwtable mustprogress
> > -;.
> > -; CHECK: @[[GLOB:[a-zA-Z0-9_$"\\.-]+]] = dso_local global i32 0, align 4,
> > !dbg [[DBG0:![0-9]+]]
> > -; CHECK: @[[COND:[a-zA-Z0-9_$"\\.-]+]] = dso_local global i8 0, align 1,
> > !dbg [[DBG6:![0-9]+]]
> > -;.
> >  define dso_local i32 @_Z7examplev() #0 !dbg !14 {
> > -; CHECK-LABEL: @_Z7examplev(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    [[S_SROA_0:%.*]] = alloca { i32, i32, i32 }, align 8,
> > !DIAssignID [[DIASSIGNID28:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META18:![0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 96),
> > metadata [[DIASSIGNID28]], metadata ptr [[S_SROA_0]], metadata
> > !DIExpression()), !dbg [[DBG29:![0-9]+]]
> > -; CHECK-NEXT:    [[S_SROA_6:%.*]] = alloca { i32, i32, i32 }, align 8,
> > !DIAssignID [[DIASSIGNID30:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META18]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 96), metadata
> > [[DIASSIGNID30]], metadata ptr [[S_SROA_6]], metadata !DIExpression()),
> > !dbg [[DBG29]]
> > -; CHECK-NEXT:    [[AGG_TMP:%.*]] = alloca [[STRUCT_LARGESTRUCT:%.*]],
> > align 8
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 12, ptr
> > [[S_SROA_0]]), !dbg [[DBG31:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 12, ptr
> > [[S_SROA_6]]), !dbg [[DBG31]]
> > -; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 8 [[S_SROA_0]],
> > i8 0, i64 12, i1 false), !dbg [[DBG32:![0-9]+]], !DIAssignID
> > [[DIASSIGNID33:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 8 [[S_SROA_6]],
> > i8 0, i64 12, i1 false), !dbg [[DBG32]], !DIAssignID [[DIASSIGNID34:![0-
> > 9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i8 0, metadata
> > [[META18]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 96), metadata
> > [[DIASSIGNID33]], metadata ptr [[S_SROA_0]], metadata !DIExpression()),
> > !dbg [[DBG32]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i32 0, metadata
> > [[META18]], metadata !DIExpression(DW_OP_LLVM_fragment, 96, 32), metadata
> > [[META35:![0-9]+]], metadata ptr undef, metadata !DIExpression()), !dbg
> > [[DBG32]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i8 0, metadata
> > [[META18]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 96), metadata
> > [[DIASSIGNID34]], metadata ptr [[S_SROA_6]], metadata !DIExpression()),
> > !dbg [[DBG32]]
> > -; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @Glob, align 4, !dbg
> > [[DBG36:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i32 [[TMP0]],
> > metadata [[META18]], metadata !DIExpression(DW_OP_LLVM_fragment, 96, 32),
> > metadata [[META37:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG38:![0-9]+]]
> > -; CHECK-NEXT:    [[TMP1:%.*]] = bitcast ptr [[AGG_TMP]] to ptr, !dbg
> > [[DBG39:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[TMP1]],
> > ptr align 8 [[S_SROA_0]], i64 12, i1 false), !dbg [[DBG39]]
> > -; CHECK-NEXT:    [[S_SROA_4_0__SROA_IDX:%.*]] = getelementptr inbounds
> > i8, ptr [[TMP1]], i64 12, !dbg [[DBG39]]
> > -; CHECK-NEXT:    store i32 [[TMP0]], ptr [[S_SROA_4_0__SROA_IDX]], align
> > 4, !dbg [[DBG39]]
> > -; CHECK-NEXT:    [[S_SROA_6_0__SROA_IDX:%.*]] = getelementptr inbounds
> > i8, ptr [[TMP1]], i64 16, !dbg [[DBG39]]
> > -; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 4
> > [[S_SROA_6_0__SROA_IDX]], ptr align 8 [[S_SROA_6]], i64 12, i1 false),
> > !dbg [[DBG39]]
> > -; CHECK-NEXT:    [[CALL:%.*]] = call i32 @_Z3use11LargeStruct(ptr
> > byval([[STRUCT_LARGESTRUCT]]) align 8 [[AGG_TMP]]), !dbg [[DBG40:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 12, ptr
> > [[S_SROA_0]]), !dbg [[DBG41:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 12, ptr
> > [[S_SROA_6]]), !dbg [[DBG41]]
> > -; CHECK-NEXT:    ret i32 [[TMP0]], !dbg [[DBG42:![0-9]+]]
> > -;
> >  entry:
> >    %S = alloca %struct.LargeStruct, align 4, !DIAssignID !28
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !18, metadata
> > !DIExpression(), metadata !28, metadata ptr %S, metadata !DIExpression()),
> > !dbg !29
> > @@ -168,56 +148,3 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  !49 = !DISubprogram(name: "use", linkageName: "_Z3use11LargeStruct",
> > scope: !3, file: !3, line: 9, type: !50, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized, retainedNodes: !4)
> >  !50 = !DISubroutineType(types: !51)
> >  !51 = !{!9, !19}
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync
> > nounwind willreturn memory(argmem: readwrite) }
> > -; CHECK: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nounwind
> > willreturn memory(argmem: write) }
> > -; CHECK: attributes #[[ATTR3:[0-9]+]] = { nocallback nofree nounwind
> > willreturn memory(argmem: readwrite) }
> > -;.
> > -; CHECK: [[DBG0]] = !DIGlobalVariableExpression(var: !1, expr:
> > !DIExpression())
> > -; CHECK: [[META1:![0-9]+]] = distinct !DIGlobalVariable(name: "Glob",
> > scope: !2, file: !3, line: 7, type: !9, isLocal: false, isDefinition:
> > true)
> > -; CHECK: [[META2:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C_plus_plus_14, file: !3, producer: "clang version 12.0.0",
> > isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4,
> > globals: !5, splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META3:![0-9]+]] = !DIFile(filename: "test.cpp", directory:
> > "/")
> > -; CHECK: [[META4:![0-9]+]] = !{}
> > -; CHECK: [[META5:![0-9]+]] = !{!0, !6}
> > -; CHECK: [[DBG6]] = !DIGlobalVariableExpression(var: !7, expr:
> > !DIExpression())
> > -; CHECK: [[META7:![0-9]+]] = distinct !DIGlobalVariable(name: "Cond",
> > scope: !2, file: !3, line: 8, type: !8, isLocal: false, isDefinition:
> > true)
> > -; CHECK: [[META8:![0-9]+]] = !DIBasicType(name: "bool", size: 8,
> > encoding: DW_ATE_boolean)
> > -; CHECK: [[META9:![0-9]+]] = !DIBasicType(name: "int", size: 32,
> > encoding: DW_ATE_signed)
> > -; CHECK: [[META10:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META11:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META12:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META13:![0-9]+]] = !{!"clang version 12.0.0"}
> > -; CHECK: [[META14:![0-9]+]] = distinct !DISubprogram(name: "example",
> > linkageName: "_Z7examplev", scope: !3, file: !3, line: 10, type: !15,
> > scopeLine: 10, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !17)
> > -; CHECK: [[META15:![0-9]+]] = !DISubroutineType(types: !16)
> > -; CHECK: [[META16:![0-9]+]] = !{!9}
> > -; CHECK: [[META17:![0-9]+]] = !{!18}
> > -; CHECK: [[META18]] = !DILocalVariable(name: "S", scope: !14, file: !3,
> > line: 11, type: !19)
> > -; CHECK: [[META19:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_structure_type, name: "LargeStruct", file: !3, line: 2, size: 224,
> > flags: DIFlagTypePassByValue, elements: !20, identifier:
> > "_ZTS11LargeStruct")
> > -; CHECK: [[META20:![0-9]+]] = !{!21, !22, !23, !24, !25, !26, !27}
> > -; CHECK: [[META21:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "A", scope: !19, file: !3, line: 3, baseType: !9, size: 32)
> > -; CHECK: [[META22:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "B", scope: !19, file: !3, line: 3, baseType: !9, size: 32, offset: 32)
> > -; CHECK: [[META23:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "C", scope: !19, file: !3, line: 3, baseType: !9, size: 32, offset: 64)
> > -; CHECK: [[META24:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "Var", scope: !19, file: !3, line: 4, baseType: !9, size: 32, offset: 96)
> > -; CHECK: [[META25:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "D", scope: !19, file: !3, line: 5, baseType: !9, size: 32, offset: 128)
> > -; CHECK: [[META26:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "E", scope: !19, file: !3, line: 5, baseType: !9, size: 32, offset: 160)
> > -; CHECK: [[META27:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "F", scope: !19, file: !3, line: 5, baseType: !9, size: 32, offset: 192)
> > -; CHECK: [[DIASSIGNID28]] = distinct !DIAssignID()
> > -; CHECK: [[DBG29]] = !DILocation(line: 0, scope: !14)
> > -; CHECK: [[DIASSIGNID30]] = distinct !DIAssignID()
> > -; CHECK: [[DBG31]] = !DILocation(line: 11, column: 3, scope: !14)
> > -; CHECK: [[DBG32]] = !DILocation(line: 11, column: 15, scope: !14)
> > -; CHECK: [[DIASSIGNID33]] = distinct !DIAssignID()
> > -; CHECK: [[DIASSIGNID34]] = distinct !DIAssignID()
> > -; CHECK: [[META35]] = distinct !DIAssignID()
> > -; CHECK: [[DBG36]] = !DILocation(line: 12, column: 11, scope: !14)
> > -; CHECK: [[META37]] = distinct !DIAssignID()
> > -; CHECK: [[DBG38]] = !DILocation(line: 12, column: 9, scope: !14)
> > -; CHECK: [[DBG39]] = !DILocation(line: 13, column: 7, scope: !14)
> > -; CHECK: [[DBG40]] = !DILocation(line: 13, column: 3, scope: !14)
> > -; CHECK: [[DBG41]] = !DILocation(line: 15, column: 1, scope: !14)
> > -; CHECK: [[DBG42]] = !DILocation(line: 14, column: 3, scope: !14)
> > -; CHECK: [[META43:![0-9]+]] = !DISubprogram(name: "use", linkageName:
> > "_Z3use11LargeStruct", scope: !3, file: !3, line: 9, type: !44, flags:
> > DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !4)
> > -; CHECK: [[META44:![0-9]+]] = !DISubroutineType(types: !45)
> > -; CHECK: [[META45:![0-9]+]] = !{!9, !19}
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-
> > tracking/sroa/unspecified-var-size.ll
> > b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/unspecified-var-
> > size.ll
> > index 165584b1b914d..6234e6c6b1d05 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/unspecified-
> > var-size.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/unspecified-
> > var-size.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt -S %s -passes=sroa -o - -experimental-assignment-tracking |
> > FileCheck %s
> >
> >  ;; $ cat test.cpp
> > @@ -8,14 +7,10 @@
> >  ;; Check that migrateDebugInfo doesn't crash when encountering an alloca
> > for a
> >  ;; variable with a type of unspecified size (e.g.
> > DW_TAG_unspecified_type).
> >
> > +; CHECK: @llvm.dbg.assign(metadata ptr %0,{{.+}}, metadata
> > !DIExpression(),{{.+}}, metadata ptr undef, {{.+}})
> >  ;; There should be no new fragment and the value component should remain
> > as %0.
> >
> >  define dso_local void @_Z3funDn(ptr %0) #0 !dbg !14 {
> > -; CHECK-LABEL: @_Z3funDn(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata ptr [[TMP0:%.*]],
> > metadata [[META21:![0-9]+]], metadata !DIExpression(), metadata
> > [[META22:![0-9]+]], metadata ptr undef, metadata !DIExpression()), !dbg
> > [[DBG23:![0-9]+]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG24:![0-9]+]]
> > -;
> >  entry:
> >    %.addr = alloca i8*, align 8, !DIAssignID !22
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !21, metadata
> > !DIExpression(), metadata !22, metadata ptr %.addr, metadata
> > !DIExpression()), !dbg !23
> > @@ -57,32 +52,3 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  !23 = !DILocation(line: 0, scope: !14)
> >  !28 = distinct !DIAssignID()
> >  !29 = !DILocation(line: 20, column: 27, scope: !14)
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -;.
> > -; CHECK: [[META0:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C_plus_plus_14, file: !1, producer: "clang version 12.0.0",
> > isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2,
> > imports: !3, splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META1:![0-9]+]] = !DIFile(filename: "test.cpp", directory:
> > "/")
> > -; CHECK: [[META2:![0-9]+]] = !{}
> > -; CHECK: [[META3:![0-9]+]] = !{!4}
> > -; CHECK: [[META4:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !6, file: !9, line: 56)
> > -; CHECK: [[META5:![0-9]+]] = !DINamespace(name: "std", scope: null)
> > -; CHECK: [[META6:![0-9]+]] = !DIDerivedType(tag: DW_TAG_typedef, name:
> > "max_align_t", file: !7, line: 24, baseType: !8)
> > -; CHECK: [[META7:![0-9]+]] = !DIFile(filename:
> > "clang/12.0.0/include/__stddef_max_align_t.h", directory: "/")
> > -; CHECK: [[META8:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_structure_type, file: !7, line: 19, size: 256, flags:
> > DIFlagFwdDecl, identifier: "_ZTS11max_align_t")
> > -; CHECK: [[META9:![0-9]+]] = !DIFile(filename:
> > "include/c++/7.5.0/cstddef", directory: "")
> > -; CHECK: [[META10:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META11:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META12:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META13:![0-9]+]] = !{!"clang version 12.0.0"}
> > -; CHECK: [[META14:![0-9]+]] = distinct !DISubprogram(name: "fun",
> > linkageName: "_Z3funDn", scope: !1, file: !1, line: 20, type: !15,
> > scopeLine: 20, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !20)
> > -; CHECK: [[META15:![0-9]+]] = !DISubroutineType(types: !16)
> > -; CHECK: [[META16:![0-9]+]] = !{null, !17}
> > -; CHECK: [[META17:![0-9]+]] = !DIDerivedType(tag: DW_TAG_typedef, name:
> > "nullptr_t", scope: !5, file: !18, line: 235, baseType: !19)
> > -; CHECK: [[META18:![0-9]+]] = !DIFile(filename: "include/x86_64-linux-
> > gnu/c++/7.5.0/bits/c++config.h", directory: "")
> > -; CHECK: [[META19:![0-9]+]] = !DIBasicType(tag: DW_TAG_unspecified_type,
> > name: "decltype(nullptr)")
> > -; CHECK: [[META20:![0-9]+]] = !{!21}
> > -; CHECK: [[META21]] = !DILocalVariable(arg: 1, scope: !14, file: !1,
> > line: 20, type: !17)
> > -; CHECK: [[META22]] = distinct !DIAssignID()
> > -; CHECK: [[DBG23]] = !DILocation(line: 0, scope: !14)
> > -; CHECK: [[DBG24]] = !DILocation(line: 20, column: 27, scope: !14)
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/user-
> > memcpy.ll b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/user-
> > memcpy.ll
> > index 40aca21ec1c0f..d8b6d76456d80 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/user-memcpy.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/user-memcpy.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt -passes=sroa -S %s -o - -experimental-assignment-tracking \
> >  ; RUN: | FileCheck %s --implicit-check-not="call void @llvm.dbg"
> >
> > @@ -20,24 +19,39 @@
> >  ;; $ clang++ -c -O2 -g test.cpp -o - -Xclang -disable-llvm-passes -S -
> > emit-llvm \
> >  ;;   | opt -passes=declare-to-assign -S -o -
> >
> > +; CHECK: entry:
> >  ;; Allocas have been promoted - the linked dbg.assigns have been removed.
> >
> >  ;; | V3i point = {0, 0, 0};
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i64 0, metadata
> > ![[point:[0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64),
> > metadata !{{.+}}, metadata ptr undef, metadata !DIExpression()), !dbg
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i64 0, metadata
> > ![[point]], metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64), metadata
> > !{{.+}}, metadata ptr undef, metadata !DIExpression()), !dbg
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i64 0, metadata
> > ![[point]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 64), metadata
> > !{{.+}}, metadata ptr undef, metadata !DIExpression()), !dbg
> >
> >  ;; point.z = 5000;
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i64 5000, metadata
> > ![[point]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 64), metadata
> > !{{.+}}, metadata ptr undef, metadata !DIExpression()), !dbg
> >
> >  ;; | V3i other = {10, 9, 8};
> >  ;;   other is global const:
> >  ;;     local.other.x = global.other.x
> >  ;;     local.other.y = global.other.y
> >  ;;     local.other.z = global.other.z
> > +; CHECK-NEXT: %other.sroa.0.0.copyload = load i64, ptr
> > @__const._Z3funv.other
> > +; CHECK-NEXT: %other.sroa.4.0.copyload = load i64, ptr getelementptr
> > inbounds (i8, ptr @__const._Z3funv.other, i64 8)
> > +; CHECK-NEXT: %other.sroa.5.0.copyload = load i64, ptr getelementptr
> > inbounds (i8, ptr @__const._Z3funv.other, i64 16)
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i64
> > %other.sroa.0.0.copyload, metadata ![[other:[0-9]+]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 0, 64), metadata !{{.+}}, metadata ptr
> > undef, metadata !DIExpression()), !dbg
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i64
> > %other.sroa.4.0.copyload, metadata ![[other]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 64, 64), metadata !{{.+}}, metadata ptr
> > undef, metadata !DIExpression()), !dbg
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i64
> > %other.sroa.5.0.copyload, metadata ![[other]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 128, 64), metadata !{{.+}}, metadata
> > ptr undef, metadata !DIExpression()), !dbg
> >
> >  ;; | std::memcpy(&point.y, &other.x, sizeof(long) * 2);
> >  ;;   other is now 3 scalars:
> >  ;;     point.y = other.x
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i64
> > %other.sroa.0.0.copyload, metadata ![[point]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 64, 64), metadata !{{.+}}, metadata ptr
> > undef, metadata !DIExpression()), !dbg
> >  ;;
> >  ;;     point.z = other.y
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata i64
> > %other.sroa.4.0.copyload, metadata ![[point]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 128, 64), metadata !{{.+}}, metadata
> > ptr undef, metadata !DIExpression()), !dbg
> >
> > +; CHECK: ![[point]] = !DILocalVariable(name: "point",
> > +; CHECK: ![[other]] = !DILocalVariable(name: "other",
> >
> >  source_filename = "test.cpp"
> >  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-
> > f80:128-n8:16:32:64-S128"
> > @@ -48,26 +62,7 @@ target triple = "x86_64-unknown-linux-gnu"
> >  @__const._Z3funv.other = private unnamed_addr constant %struct.V3i { i64
> > 10, i64 9, i64 8 }, align 8
> >
> >  ; Function Attrs: nounwind uwtable mustprogress
> > -;.
> > -; CHECK: @[[__CONST__Z3FUNV_OTHER:[a-zA-Z0-9_$"\\.-]+]] = private
> > unnamed_addr constant [[STRUCT_V3I:%.*]] { i64 10, i64 9, i64 8 }, align 8
> > -;.
> >  define dso_local void @_Z3funv() !dbg !100 {
> > -; CHECK-LABEL: @_Z3funv(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i64 0, metadata
> > [[META104:![0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64),
> > metadata [[META112:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG113:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i64 0, metadata
> > [[META104]], metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64), metadata
> > [[META114:![0-9]+]], metadata ptr undef, metadata !DIExpression()), !dbg
> > [[DBG113]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i64 0, metadata
> > [[META104]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 64),
> > metadata [[META115:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG113]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i64 5000, metadata
> > [[META104]], metadata !DIExpression(DW_OP_LLVM_fragment, 128, 64),
> > metadata [[META116:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG117:![0-9]+]]
> > -; CHECK-NEXT:    [[OTHER_SROA_0_0_COPYLOAD:%.*]] = load i64, ptr
> > @__const._Z3funv.other, align 8, !dbg [[DBG118:![0-9]+]]
> > -; CHECK-NEXT:    [[OTHER_SROA_4_0_COPYLOAD:%.*]] = load i64, ptr
> > getelementptr inbounds (i8, ptr @__const._Z3funv.other, i64 8), align 8,
> > !dbg [[DBG118]]
> > -; CHECK-NEXT:    [[OTHER_SROA_5_0_COPYLOAD:%.*]] = load i64, ptr
> > getelementptr inbounds (i8, ptr @__const._Z3funv.other, i64 16), align 8,
> > !dbg [[DBG118]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i64
> > [[OTHER_SROA_0_0_COPYLOAD]], metadata [[META111:![0-9]+]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 0, 64), metadata [[META119:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG118]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i64
> > [[OTHER_SROA_4_0_COPYLOAD]], metadata [[META111]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 64, 64), metadata [[META120:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG118]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i64
> > [[OTHER_SROA_5_0_COPYLOAD]], metadata [[META111]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 128, 64), metadata [[META121:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG118]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i64
> > [[OTHER_SROA_0_0_COPYLOAD]], metadata [[META104]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 64, 64), metadata [[META122:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG123:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i64
> > [[OTHER_SROA_4_0_COPYLOAD]], metadata [[META104]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 128, 64), metadata [[META124:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG123]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG125:![0-9]+]]
> > -;
> >  entry:
> >    %point = alloca %struct.V3i, align 8, !DIAssignID !112
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !104, metadata
> > !DIExpression(), metadata !112, metadata ptr %point, metadata
> > !DIExpression()), !dbg !113
> > @@ -238,136 +233,3 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  !131 = !DILocation(line: 8, column: 32, scope: !100)
> >  !132 = distinct !DIAssignID()
> >  !133 = !DILocation(line: 9, column: 1, scope: !100)
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync
> > nounwind willreturn memory(argmem: readwrite) }
> > -; CHECK: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nounwind
> > willreturn memory(argmem: write) }
> > -; CHECK: attributes #[[ATTR3:[0-9]+]] = { nocallback nofree nounwind
> > willreturn memory(argmem: readwrite) }
> > -;.
> > -; CHECK: [[META0:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C_plus_plus_14, file: !1, producer: "clang version 12.0.0",
> > isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2,
> > imports: !3, splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META1:![0-9]+]] = !DIFile(filename: "test.cpp", directory:
> > "/")
> > -; CHECK: [[META2:![0-9]+]] = !{}
> > -; CHECK: [[META3:![0-9]+]] = !{!4, !18, !22, !28, !32, !36, !46, !50,
> > !52, !54, !58, !62, !66, !70, !74, !76, !78, !80, !84, !88, !92, !94}
> > -; CHECK: [[META4:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !6, file: !17, line: 75)
> > -; CHECK: [[META5:![0-9]+]] = !DINamespace(name: "std", scope: null)
> > -; CHECK: [[META6:![0-9]+]] = !DISubprogram(name: "memchr", scope: !7,
> > file: !7, line: 90, type: !8, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META7:![0-9]+]] = !DIFile(filename: "/usr/include/string.h",
> > directory: "")
> > -; CHECK: [[META8:![0-9]+]] = !DISubroutineType(types: !9)
> > -; CHECK: [[META9:![0-9]+]] = !{!10, !11, !13, !14}
> > -; CHECK: [[META10:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: null, size: 64)
> > -; CHECK: [[META11:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !12, size: 64)
> > -; CHECK: [[META12:![0-9]+]] = !DIDerivedType(tag: DW_TAG_const_type,
> > baseType: null)
> > -; CHECK: [[META13:![0-9]+]] = !DIBasicType(name: "int", size: 32,
> > encoding: DW_ATE_signed)
> > -; CHECK: [[META14:![0-9]+]] = !DIDerivedType(tag: DW_TAG_typedef, name:
> > "size_t", file: !15, line: 46, baseType: !16)
> > -; CHECK: [[META15:![0-9]+]] = !DIFile(filename:
> > "lib/clang/12.0.0/include/stddef.h", directory: "/")
> > -; CHECK: [[META16:![0-9]+]] = !DIBasicType(name: "long unsigned int",
> > size: 64, encoding: DW_ATE_unsigned)
> > -; CHECK: [[META17:![0-9]+]] = !DIFile(filename: "/usr/lib/gcc/x86_64-
> > linux-gnu/7.5.0/../../../../include/c++/7.5.0/cstring", directory: "")
> > -; CHECK: [[META18:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !19, file: !17, line: 76)
> > -; CHECK: [[META19:![0-9]+]] = !DISubprogram(name: "memcmp", scope: !7,
> > file: !7, line: 63, type: !20, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META20:![0-9]+]] = !DISubroutineType(types: !21)
> > -; CHECK: [[META21:![0-9]+]] = !{!13, !11, !11, !14}
> > -; CHECK: [[META22:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !23, file: !17, line: 77)
> > -; CHECK: [[META23:![0-9]+]] = !DISubprogram(name: "memcpy", scope: !7,
> > file: !7, line: 42, type: !24, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META24:![0-9]+]] = !DISubroutineType(types: !25)
> > -; CHECK: [[META25:![0-9]+]] = !{!10, !26, !27, !14}
> > -; CHECK: [[META26:![0-9]+]] = !DIDerivedType(tag: DW_TAG_restrict_type,
> > baseType: !10)
> > -; CHECK: [[META27:![0-9]+]] = !DIDerivedType(tag: DW_TAG_restrict_type,
> > baseType: !11)
> > -; CHECK: [[META28:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !29, file: !17, line: 78)
> > -; CHECK: [[META29:![0-9]+]] = !DISubprogram(name: "memmove", scope: !7,
> > file: !7, line: 46, type: !30, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META30:![0-9]+]] = !DISubroutineType(types: !31)
> > -; CHECK: [[META31:![0-9]+]] = !{!10, !10, !11, !14}
> > -; CHECK: [[META32:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !33, file: !17, line: 79)
> > -; CHECK: [[META33:![0-9]+]] = !DISubprogram(name: "memset", scope: !7,
> > file: !7, line: 60, type: !34, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META34:![0-9]+]] = !DISubroutineType(types: !35)
> > -; CHECK: [[META35:![0-9]+]] = !{!10, !10, !13, !14}
> > -; CHECK: [[META36:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !37, file: !17, line: 80)
> > -; CHECK: [[META37:![0-9]+]] = !DISubprogram(name: "strcat", scope: !7,
> > file: !7, line: 129, type: !38, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META38:![0-9]+]] = !DISubroutineType(types: !39)
> > -; CHECK: [[META39:![0-9]+]] = !{!40, !42, !43}
> > -; CHECK: [[META40:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !41, size: 64)
> > -; CHECK: [[META41:![0-9]+]] = !DIBasicType(name: "char", size: 8,
> > encoding: DW_ATE_signed_char)
> > -; CHECK: [[META42:![0-9]+]] = !DIDerivedType(tag: DW_TAG_restrict_type,
> > baseType: !40)
> > -; CHECK: [[META43:![0-9]+]] = !DIDerivedType(tag: DW_TAG_restrict_type,
> > baseType: !44)
> > -; CHECK: [[META44:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !45, size: 64)
> > -; CHECK: [[META45:![0-9]+]] = !DIDerivedType(tag: DW_TAG_const_type,
> > baseType: !41)
> > -; CHECK: [[META46:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !47, file: !17, line: 81)
> > -; CHECK: [[META47:![0-9]+]] = !DISubprogram(name: "strcmp", scope: !7,
> > file: !7, line: 136, type: !48, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META48:![0-9]+]] = !DISubroutineType(types: !49)
> > -; CHECK: [[META49:![0-9]+]] = !{!13, !44, !44}
> > -; CHECK: [[META50:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !51, file: !17, line: 82)
> > -; CHECK: [[META51:![0-9]+]] = !DISubprogram(name: "strcoll", scope: !7,
> > file: !7, line: 143, type: !48, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META52:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !53, file: !17, line: 83)
> > -; CHECK: [[META53:![0-9]+]] = !DISubprogram(name: "strcpy", scope: !7,
> > file: !7, line: 121, type: !38, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META54:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !55, file: !17, line: 84)
> > -; CHECK: [[META55:![0-9]+]] = !DISubprogram(name: "strcspn", scope: !7,
> > file: !7, line: 272, type: !56, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META56:![0-9]+]] = !DISubroutineType(types: !57)
> > -; CHECK: [[META57:![0-9]+]] = !{!14, !44, !44}
> > -; CHECK: [[META58:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !59, file: !17, line: 85)
> > -; CHECK: [[META59:![0-9]+]] = !DISubprogram(name: "strerror", scope: !7,
> > file: !7, line: 396, type: !60, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META60:![0-9]+]] = !DISubroutineType(types: !61)
> > -; CHECK: [[META61:![0-9]+]] = !{!40, !13}
> > -; CHECK: [[META62:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !63, file: !17, line: 86)
> > -; CHECK: [[META63:![0-9]+]] = !DISubprogram(name: "strlen", scope: !7,
> > file: !7, line: 384, type: !64, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META64:![0-9]+]] = !DISubroutineType(types: !65)
> > -; CHECK: [[META65:![0-9]+]] = !{!14, !44}
> > -; CHECK: [[META66:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !67, file: !17, line: 87)
> > -; CHECK: [[META67:![0-9]+]] = !DISubprogram(name: "strncat", scope: !7,
> > file: !7, line: 132, type: !68, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META68:![0-9]+]] = !DISubroutineType(types: !69)
> > -; CHECK: [[META69:![0-9]+]] = !{!40, !42, !43, !14}
> > -; CHECK: [[META70:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !71, file: !17, line: 88)
> > -; CHECK: [[META71:![0-9]+]] = !DISubprogram(name: "strncmp", scope: !7,
> > file: !7, line: 139, type: !72, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META72:![0-9]+]] = !DISubroutineType(types: !73)
> > -; CHECK: [[META73:![0-9]+]] = !{!13, !44, !44, !14}
> > -; CHECK: [[META74:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !75, file: !17, line: 89)
> > -; CHECK: [[META75:![0-9]+]] = !DISubprogram(name: "strncpy", scope: !7,
> > file: !7, line: 124, type: !68, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META76:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !77, file: !17, line: 90)
> > -; CHECK: [[META77:![0-9]+]] = !DISubprogram(name: "strspn", scope: !7,
> > file: !7, line: 276, type: !56, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META78:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !79, file: !17, line: 91)
> > -; CHECK: [[META79:![0-9]+]] = !DISubprogram(name: "strtok", scope: !7,
> > file: !7, line: 335, type: !38, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META80:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !81, file: !17, line: 92)
> > -; CHECK: [[META81:![0-9]+]] = !DISubprogram(name: "strxfrm", scope: !7,
> > file: !7, line: 146, type: !82, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META82:![0-9]+]] = !DISubroutineType(types: !83)
> > -; CHECK: [[META83:![0-9]+]] = !{!14, !42, !43, !14}
> > -; CHECK: [[META84:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !85, file: !17, line: 93)
> > -; CHECK: [[META85:![0-9]+]] = !DISubprogram(name: "strchr", scope: !7,
> > file: !7, line: 225, type: !86, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META86:![0-9]+]] = !DISubroutineType(types: !87)
> > -; CHECK: [[META87:![0-9]+]] = !{!40, !44, !13}
> > -; CHECK: [[META88:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !89, file: !17, line: 94)
> > -; CHECK: [[META89:![0-9]+]] = !DISubprogram(name: "strpbrk", scope: !7,
> > file: !7, line: 302, type: !90, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META90:![0-9]+]] = !DISubroutineType(types: !91)
> > -; CHECK: [[META91:![0-9]+]] = !{!40, !44, !44}
> > -; CHECK: [[META92:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !93, file: !17, line: 95)
> > -; CHECK: [[META93:![0-9]+]] = !DISubprogram(name: "strrchr", scope: !7,
> > file: !7, line: 252, type: !86, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META94:![0-9]+]] = !DIImportedEntity(tag:
> > DW_TAG_imported_declaration, scope: !5, entity: !95, file: !17, line: 96)
> > -; CHECK: [[META95:![0-9]+]] = !DISubprogram(name: "strstr", scope: !7,
> > file: !7, line: 329, type: !90, flags: DIFlagPrototyped, spFlags:
> > DISPFlagOptimized)
> > -; CHECK: [[META96:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META97:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META98:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META99:![0-9]+]] = !{!"clang version 12.0.0"}
> > -; CHECK: [[META100:![0-9]+]] = distinct !DISubprogram(name: "fun",
> > linkageName: "_Z3funv", scope: !1, file: !1, line: 4, type: !101,
> > scopeLine: 4, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !103)
> > -; CHECK: [[META101:![0-9]+]] = !DISubroutineType(types: !102)
> > -; CHECK: [[META102:![0-9]+]] = !{null}
> > -; CHECK: [[META103:![0-9]+]] = !{!104, !111}
> > -; CHECK: [[META104]] = !DILocalVariable(name: "point", scope: !100, file:
> > !1, line: 5, type: !105)
> > -; CHECK: [[META105:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_structure_type, name: "V3i", file: !1, line: 3, size: 192, flags:
> > DIFlagTypePassByValue, elements: !106, identifier: "_ZTS3V3i")
> > -; CHECK: [[META106:![0-9]+]] = !{!107, !109, !110}
> > -; CHECK: [[META107:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "x", scope: !105, file: !1, line: 3, baseType: !108, size: 64)
> > -; CHECK: [[META108:![0-9]+]] = !DIBasicType(name: "long int", size: 64,
> > encoding: DW_ATE_signed)
> > -; CHECK: [[META109:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "y", scope: !105, file: !1, line: 3, baseType: !108, size: 64, offset: 64)
> > -; CHECK: [[META110:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "z", scope: !105, file: !1, line: 3, baseType: !108, size: 64, offset:
> > 128)
> > -; CHECK: [[META111]] = !DILocalVariable(name: "other", scope: !100, file:
> > !1, line: 7, type: !105)
> > -; CHECK: [[META112]] = distinct !DIAssignID()
> > -; CHECK: [[DBG113]] = !DILocation(line: 5, column: 7, scope: !100)
> > -; CHECK: [[META114]] = distinct !DIAssignID()
> > -; CHECK: [[META115]] = distinct !DIAssignID()
> > -; CHECK: [[META116]] = distinct !DIAssignID()
> > -; CHECK: [[DBG117]] = !DILocation(line: 6, column: 11, scope: !100)
> > -; CHECK: [[DBG118]] = !DILocation(line: 7, column: 7, scope: !100)
> > -; CHECK: [[META119]] = distinct !DIAssignID()
> > -; CHECK: [[META120]] = distinct !DIAssignID()
> > -; CHECK: [[META121]] = distinct !DIAssignID()
> > -; CHECK: [[META122]] = distinct !DIAssignID()
> > -; CHECK: [[DBG123]] = !DILocation(line: 8, column: 3, scope: !100)
> > -; CHECK: [[META124]] = distinct !DIAssignID()
> > -; CHECK: [[DBG125]] = !DILocation(line: 9, column: 1, scope: !100)
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/vec-
> > 1.ll b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/vec-1.ll
> > index 11ed683f3e0f5..3d83e18afdf6e 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/vec-1.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/vec-1.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt %s -S -passes=sroa -o - -experimental-assignment-tracking |
> > FileCheck %s
> >
> >  ;; Ensure that only the value-expression gets fragment info; that the
> > @@ -17,22 +16,17 @@
> >  ;; Generated by grabbing IR before sroa in:
> >  ;; $ clang++ -O2 -g -c test.cpp -Xclang  -fexperimental-assignment-
> > tracking
> >
> > +; CHECK: %call = call
> > +; CHECK-NEXT: %0 = extractvalue { <2 x float>, <2 x float> } %call, 0
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata <2 x float> %0,
> > metadata ![[var:[0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0,
> > 64), metadata ![[id1:[0-9]+]],{{.+}} undef, metadata !DIExpression()),
> > !dbg
> > +; CHECK-NEXT: %1 = extractvalue { <2 x float>, <2 x float> } %call, 1
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata <2 x float> %1,
> > metadata ![[var]], metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64),
> > metadata ![[id2:[0-9]+]], {{.+}} undef, metadata !DIExpression()), !dbg
> >
> >  %class.c = type { i8 }
> >  %class.a = type { [4 x float] }
> >
> >  ; Function Attrs: uwtable
> >  define dso_local void @_ZNK1c1dEv(ptr %this) #0 align 2 !dbg !7 {
> > -; CHECK-LABEL: @_ZNK1c1dEv(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata ptr [[THIS:%.*]],
> > metadata [[META26:![0-9]+]], metadata !DIExpression(), metadata
> > [[META29:![0-9]+]], metadata ptr undef, metadata !DIExpression()), !dbg
> > [[DBG30:![0-9]+]]
> > -; CHECK-NEXT:    [[CALL:%.*]] = call { <2 x float>, <2 x float> }
> > @_ZNK1c5m_fn1Ev(ptr [[THIS]]), !dbg [[DBG31:![0-9]+]]
> > -; CHECK-NEXT:    [[TMP0:%.*]] = extractvalue { <2 x float>, <2 x float> }
> > [[CALL]], 0, !dbg [[DBG31]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[TMP0]], metadata [[META28:![0-9]+]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 0, 64), metadata [[META32:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG30]]
> > -; CHECK-NEXT:    [[TMP1:%.*]] = extractvalue { <2 x float>, <2 x float> }
> > [[CALL]], 1, !dbg [[DBG31]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[TMP1]], metadata [[META28]], metadata !DIExpression(DW_OP_LLVM_fragment,
> > 64, 64), metadata [[META33:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG30]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG34:![0-9]+]]
> > -;
> >  entry:
> >    %this.addr = alloca ptr, align 8, !DIAssignID !29
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !26, metadata
> > !DIExpression(), metadata !29, metadata ptr %this.addr, metadata
> > !DIExpression()), !dbg !30
> > @@ -108,43 +102,3 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  !39 = distinct !DIAssignID()
> >  !40 = distinct !DIAssignID()
> >  !41 = !DILocation(line: 8, column: 36, scope: !7)
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync
> > nounwind willreturn memory(argmem: readwrite) }
> > -;.
> > -; CHECK: [[META0:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C_plus_plus, file: !1, producer: "clang version 12.0.0",
> > isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2,
> > splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META1:![0-9]+]] = !DIFile(filename: "test.cpp", directory:
> > "/")
> > -; CHECK: [[META2:![0-9]+]] = !{}
> > -; CHECK: [[META3:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META4:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META5:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META6:![0-9]+]] = !{!"clang version 12.0.0"}
> > -; CHECK: [[META7:![0-9]+]] = distinct !DISubprogram(name: "d",
> > linkageName: "_ZNK1c1dEv", scope: !8, file: !1, line: 8, type: !23,
> > scopeLine: 8, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !0, declaration: !22,
> > retainedNodes: !25)
> > -; CHECK: [[META8:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_class_type, name: "c", file: !1, line: 4, size: 8, flags:
> > DIFlagTypePassByValue, elements: !9, identifier: "_ZTS1c")
> > -; CHECK: [[META9:![0-9]+]] = !{!10, !22}
> > -; CHECK: [[META10:![0-9]+]] = !DISubprogram(name: "m_fn1", linkageName:
> > "_ZNK1c5m_fn1Ev", scope: !8, file: !1, line: 5, type: !11, scopeLine: 5,
> > flags: DIFlagPrototyped, spFlags: DISPFlagOptimized)
> > -; CHECK: [[META11:![0-9]+]] = !DISubroutineType(types: !12)
> > -; CHECK: [[META12:![0-9]+]] = !{!13, !20}
> > -; CHECK: [[META13:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_class_type, name: "a", file: !1, line: 1, size: 128, flags:
> > DIFlagTypePassByValue, elements: !14, identifier: "_ZTS1a")
> > -; CHECK: [[META14:![0-9]+]] = !{!15}
> > -; CHECK: [[META15:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "b", scope: !13, file: !1, line: 2, baseType: !16, size: 128)
> > -; CHECK: [[META16:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type,
> > baseType: !17, size: 128, elements: !18)
> > -; CHECK: [[META17:![0-9]+]] = !DIBasicType(name: "float", size: 32,
> > encoding: DW_ATE_float)
> > -; CHECK: [[META18:![0-9]+]] = !{!19}
> > -; CHECK: [[META19:![0-9]+]] = !DISubrange(count: 4)
> > -; CHECK: [[META20:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !21, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META21:![0-9]+]] = !DIDerivedType(tag: DW_TAG_const_type,
> > baseType: !8)
> > -; CHECK: [[META22:![0-9]+]] = !DISubprogram(name: "d", linkageName:
> > "_ZNK1c1dEv", scope: !8, file: !1, line: 6, type: !23, scopeLine: 6,
> > flags: DIFlagPrototyped, spFlags: DISPFlagOptimized)
> > -; CHECK: [[META23:![0-9]+]] = !DISubroutineType(types: !24)
> > -; CHECK: [[META24:![0-9]+]] = !{null, !20}
> > -; CHECK: [[META25:![0-9]+]] = !{!26, !28}
> > -; CHECK: [[META26]] = !DILocalVariable(name: "this", arg: 1, scope: !7,
> > type: !27, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META27:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !21, size: 64)
> > -; CHECK: [[META28]] = !DILocalVariable(name: "e", scope: !7, file: !1,
> > line: 8, type: !13)
> > -; CHECK: [[META29]] = distinct !DIAssignID()
> > -; CHECK: [[DBG30]] = !DILocation(line: 0, scope: !7)
> > -; CHECK: [[DBG31]] = !DILocation(line: 8, column: 27, scope: !7)
> > -; CHECK: [[META32]] = distinct !DIAssignID()
> > -; CHECK: [[META33]] = distinct !DIAssignID()
> > -; CHECK: [[DBG34]] = !DILocation(line: 8, column: 36, scope: !7)
> > -;.
> >
> > diff  --git a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/vec-
> > 2.ll b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/vec-2.ll
> > index 6c98f4c902226..e04a5a9b58e0c 100644
> > --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/vec-2.ll
> > +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/vec-2.ll
> > @@ -1,4 +1,3 @@
> > -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
> > UTC_ARGS: --check-globals
> >  ; RUN: opt %s -S -passes=sroa -o - -experimental-assignment-tracking |
> > FileCheck %s
> >
> >  ;; $ cat test.cpp
> > @@ -27,7 +26,12 @@
> >  ;; dbg.assign/DIExpression. Ensure that only the value-expression gets
> > fragment
> >  ;; info; that the address-expression remains untouched.
> >
> > +; CHECK: %i.sroa.4.12.vec.insert = insertelement <2 x float>
> > %i.sroa.4.0.vec.insert, float %2, i32 1, !dbg
> >  ;; There's a few dbg intrinsics we're not interested in testing wedged in
> > here.
> > +; CHECK-NEXT: dbg.value
> > +; CHECK-NEXT: dbg.assign
> > +; CHECK-NEXT: dbg.assign
> > +; CHECK-NEXT: call void @llvm.dbg.assign(metadata float %2,{{.+}},
> > metadata !DIExpression(DW_OP_LLVM_fragment, 96, 32),{{.+}}, metadata ptr
> > undef, metadata !DIExpression()), !dbg
> >
> >  %class.d = type { %class.a }
> >  %class.a = type { [4 x float] }
> > @@ -39,39 +43,7 @@ $_ZN1dC2Ev = comdat any
> >  @c = dso_local local_unnamed_addr global float 0.000000e+00, align 4,
> > !dbg !0
> >
> >  ; Function Attrs: uwtable
> > -;.
> > -; CHECK: @[[C:[a-zA-Z0-9_$"\\.-]+]] = dso_local local_unnamed_addr global
> > float 0.000000e+00, align 4, !dbg [[DBG0:![0-9]+]]
> > -;.
> >  define dso_local void @_Z1gv() local_unnamed_addr #0 !dbg !11 {
> > -; CHECK-LABEL: @_Z1gv(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META15:![0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64),
> > metadata [[META32:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG33:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META15]], metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64), metadata
> > [[META34:![0-9]+]], metadata ptr undef, metadata !DIExpression()), !dbg
> > [[DBG33]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META30:![0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64),
> > metadata [[META35:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG33]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META30]], metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64), metadata
> > [[META36:![0-9]+]], metadata ptr undef, metadata !DIExpression()), !dbg
> > [[DBG33]]
> > -; CHECK-NEXT:    [[CALL:%.*]] = call { <2 x float>, <2 x float> }
> > @_Z1fv(), !dbg [[DBG37:![0-9]+]]
> > -; CHECK-NEXT:    [[TMP0:%.*]] = extractvalue { <2 x float>, <2 x float> }
> > [[CALL]], 0, !dbg [[DBG37]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[TMP0]], metadata [[META15]], metadata !DIExpression(DW_OP_LLVM_fragment,
> > 0, 64), metadata [[META38:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG33]]
> > -; CHECK-NEXT:    [[TMP1:%.*]] = extractvalue { <2 x float>, <2 x float> }
> > [[CALL]], 1, !dbg [[DBG37]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[TMP1]], metadata [[META15]], metadata !DIExpression(DW_OP_LLVM_fragment,
> > 64, 64), metadata [[META39:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG33]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[TMP0]], metadata [[META30]], metadata !DIExpression(DW_OP_LLVM_fragment,
> > 0, 64), metadata [[META40:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG33]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[TMP1]], metadata [[META30]], metadata !DIExpression(DW_OP_LLVM_fragment,
> > 64, 64), metadata [[META41:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG33]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[TMP0]], metadata [[META31:![0-9]+]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 0, 64), metadata [[META42:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG33]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[TMP1]], metadata [[META31]], metadata !DIExpression(DW_OP_LLVM_fragment,
> > 64, 64), metadata [[META43:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG33]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META44:![0-9]+]], metadata !DIExpression(), metadata [[META48:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG49:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata ptr undef, metadata
> > [[META44]], metadata !DIExpression(), metadata [[META51:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG49]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META52:![0-9]+]], metadata !DIExpression(), metadata [[META55:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG56:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata ptr undef, metadata
> > [[META52]], metadata !DIExpression(), metadata [[META58:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG56]]
> > -; CHECK-NEXT:    [[TMP2:%.*]] = load float, ptr @c, align 4, !dbg
> > [[DBG59:![0-9]+]]
> > -; CHECK-NEXT:    [[I_SROA_4_0_VEC_INSERT:%.*]] = insertelement <2 x
> > float> [[TMP1]], float undef, i32 0, !dbg [[DBG61:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.value(metadata <2 x float>
> > [[I_SROA_4_0_VEC_INSERT]], metadata [[META31]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg [[DBG33]]
> > -; CHECK-NEXT:    [[I_SROA_4_12_VEC_INSERT:%.*]] = insertelement <2 x
> > float> [[I_SROA_4_0_VEC_INSERT]], float [[TMP2]], i32 1, !dbg [[DBG61]]
> > -; CHECK-NEXT:    call void @llvm.dbg.value(metadata <2 x float>
> > [[I_SROA_4_12_VEC_INSERT]], metadata [[META31]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg [[DBG33]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float> undef,
> > metadata [[META31]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64),
> > metadata [[META62:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG33]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata <2 x float>
> > [[I_SROA_4_0_VEC_INSERT]], metadata [[META31]], metadata
> > !DIExpression(DW_OP_LLVM_fragment, 64, 32), metadata [[META63:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG33]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata float [[TMP2]],
> > metadata [[META31]], metadata !DIExpression(DW_OP_LLVM_fragment, 96, 32),
> > metadata [[META64:![0-9]+]], metadata ptr undef, metadata
> > !DIExpression()), !dbg [[DBG33]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG65:![0-9]+]]
> > -;
> >  entry:
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !15, metadata
> > !DIExpression(DW_OP_LLVM_fragment, 0, 64), metadata !32, metadata ptr
> > undef, metadata !DIExpression()), !dbg !33
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !15, metadata
> > !DIExpression(DW_OP_LLVM_fragment, 64, 64), metadata !34, metadata ptr
> > undef, metadata !DIExpression()), !dbg !33
> > @@ -122,12 +94,6 @@ declare void @llvm.memcpy.p0i8.p0i8.i64(ptr noalias
> > nocapture writeonly, ptr noa
> >
> >  ; Function Attrs: nounwind uwtable
> >  define linkonce_odr dso_local void @_ZN1d1eEv(ptr %this)
> > local_unnamed_addr #3 comdat align 2 !dbg !48 {
> > -; CHECK-LABEL: @_ZN1d1eEv(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META44]], metadata !DIExpression(), metadata [[META69:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG70:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata ptr [[THIS:%.*]],
> > metadata [[META44]], metadata !DIExpression(), metadata [[META71:![0-
> > 9]+]], metadata ptr undef, metadata !DIExpression()), !dbg [[DBG70]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG72:![0-9]+]]
> > -;
> >  entry:
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !47, metadata
> > !DIExpression(), metadata !78, metadata ptr undef, metadata
> > !DIExpression()), !dbg !79
> >    call void @llvm.dbg.assign(metadata ptr %this, metadata !47, metadata
> > !DIExpression(), metadata !80, metadata ptr undef, metadata
> > !DIExpression()), !dbg !79
> > @@ -136,15 +102,6 @@ entry:
> >
> >  ; Function Attrs: nounwind uwtable
> >  define linkonce_odr dso_local void @_ZN1dC2Ev(ptr %this) unnamed_addr #3
> > comdat align 2 !dbg !57 {
> > -; CHECK-LABEL: @_ZN1dC2Ev(
> > -; CHECK-NEXT:  entry:
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata i1 undef, metadata
> > [[META52]], metadata !DIExpression(), metadata [[META73:![0-9]+]],
> > metadata ptr undef, metadata !DIExpression()), !dbg [[DBG74:![0-9]+]]
> > -; CHECK-NEXT:    call void @llvm.dbg.assign(metadata ptr [[THIS:%.*]],
> > metadata [[META52]], metadata !DIExpression(), metadata [[META75:![0-
> > 9]+]], metadata ptr undef, metadata !DIExpression()), !dbg [[DBG74]]
> > -; CHECK-NEXT:    [[TMP0:%.*]] = load float, ptr @c, align 4, !dbg
> > [[DBG76:![0-9]+]]
> > -; CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds
> > [[CLASS_D:%.*]], ptr [[THIS]], i64 0, i32 0, i32 0, i64 3, !dbg
> > [[DBG77:![0-9]+]]
> > -; CHECK-NEXT:    store float [[TMP0]], ptr [[ARRAYIDX]], align 4, !dbg
> > [[DBG78:![0-9]+]]
> > -; CHECK-NEXT:    ret void, !dbg [[DBG79:![0-9]+]]
> > -;
> >  entry:
> >    call void @llvm.dbg.assign(metadata i1 undef, metadata !56, metadata
> > !DIExpression(), metadata !82, metadata ptr undef, metadata
> > !DIExpression()), !dbg !83
> >    call void @llvm.dbg.assign(metadata ptr %this, metadata !56, metadata
> > !DIExpression(), metadata !84, metadata ptr undef, metadata
> > !DIExpression()), !dbg !83
> > @@ -247,89 +204,3 @@ declare void @llvm.dbg.assign(metadata, metadata,
> > metadata, metadata, metadata,
> >  !87 = !DILocation(line: 8, column: 14, scope: !64)
> >  !88 = !DILocation(line: 8, column: 19, scope: !57)
> >
> > -;.
> > -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync
> > nounwind speculatable willreturn memory(none) }
> > -; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync
> > nounwind willreturn memory(argmem: readwrite) }
> > -; CHECK: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nounwind
> > willreturn memory(argmem: readwrite) }
> > -;.
> > -; CHECK: [[DBG0]] = !DIGlobalVariableExpression(var: !1, expr:
> > !DIExpression())
> > -; CHECK: [[META1:![0-9]+]] = distinct !DIGlobalVariable(name: "c", scope:
> > !2, file: !3, line: 5, type: !6, isLocal: false, isDefinition: true)
> > -; CHECK: [[META2:![0-9]+]] = distinct !DICompileUnit(language:
> > DW_LANG_C_plus_plus, file: !3, producer: "clang version 12.0.0",
> > isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4,
> > globals: !5, splitDebugInlining: false, nameTableKind: None)
> > -; CHECK: [[META3:![0-9]+]] = !DIFile(filename: "test.cpp", directory:
> > "/")
> > -; CHECK: [[META4:![0-9]+]] = !{}
> > -; CHECK: [[META5:![0-9]+]] = !{!0}
> > -; CHECK: [[META6:![0-9]+]] = !DIBasicType(name: "float", size: 32,
> > encoding: DW_ATE_float)
> > -; CHECK: [[META7:![0-9]+]] = !{i32 7, !"Dwarf Version", i32 4}
> > -; CHECK: [[META8:![0-9]+]] = !{i32 2, !"Debug Info Version", i32 3}
> > -; CHECK: [[META9:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
> > -; CHECK: [[META10:![0-9]+]] = !{!"clang version 12.0.0"}
> > -; CHECK: [[META11:![0-9]+]] = distinct !DISubprogram(name: "g",
> > linkageName: "_Z1gv", scope: !3, file: !3, line: 12, type: !12, scopeLine:
> > 12, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !14)
> > -; CHECK: [[META12:![0-9]+]] = !DISubroutineType(types: !13)
> > -; CHECK: [[META13:![0-9]+]] = !{null}
> > -; CHECK: [[META14:![0-9]+]] = !{!15, !30, !31}
> > -; CHECK: [[META15]] = !DILocalVariable(name: "j", scope: !11, file: !3,
> > line: 13, type: !16)
> > -; CHECK: [[META16:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_class_type, name: "d", file: !3, line: 6, size: 128, flags:
> > DIFlagTypePassByValue | DIFlagNonTrivial, elements: !17, identifier:
> > "_ZTS1d")
> > -; CHECK: [[META17:![0-9]+]] = !{!18, !25, !29}
> > -; CHECK: [[META18:![0-9]+]] = !DIDerivedType(tag: DW_TAG_inheritance,
> > scope: !16, baseType: !19, extraData: i32 0)
> > -; CHECK: [[META19:![0-9]+]] = distinct !DICompositeType(tag:
> > DW_TAG_class_type, name: "a", file: !3, line: 1, size: 128, flags:
> > DIFlagTypePassByValue, elements: !20, identifier: "_ZTS1a")
> > -; CHECK: [[META20:![0-9]+]] = !{!21}
> > -; CHECK: [[META21:![0-9]+]] = !DIDerivedType(tag: DW_TAG_member, name:
> > "b", scope: !19, file: !3, line: 3, baseType: !22, size: 128, flags:
> > DIFlagProtected)
> > -; CHECK: [[META22:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type,
> > baseType: !6, size: 128, elements: !23)
> > -; CHECK: [[META23:![0-9]+]] = !{!24}
> > -; CHECK: [[META24:![0-9]+]] = !DISubrange(count: 4)
> > -; CHECK: [[META25:![0-9]+]] = !DISubprogram(name: "d", scope: !16, file:
> > !3, line: 8, type: !26, scopeLine: 8, flags: DIFlagPublic |
> > DIFlagPrototyped, spFlags: DISPFlagOptimized)
> > -; CHECK: [[META26:![0-9]+]] = !DISubroutineType(types: !27)
> > -; CHECK: [[META27:![0-9]+]] = !{null, !28}
> > -; CHECK: [[META28:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !16, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META29:![0-9]+]] = !DISubprogram(name: "e", linkageName:
> > "_ZN1d1eEv", scope: !16, file: !3, line: 9, type: !26, scopeLine: 9,
> > flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
> > -; CHECK: [[META30]] = !DILocalVariable(name: "h", scope: !11, file: !3,
> > line: 13, type: !16)
> > -; CHECK: [[META31]] = !DILocalVariable(name: "i", scope: !11, file: !3,
> > line: 13, type: !16)
> > -; CHECK: [[META32]] = distinct !DIAssignID()
> > -; CHECK: [[DBG33]] = !DILocation(line: 0, scope: !11)
> > -; CHECK: [[META34]] = distinct !DIAssignID()
> > -; CHECK: [[META35]] = distinct !DIAssignID()
> > -; CHECK: [[META36]] = distinct !DIAssignID()
> > -; CHECK: [[DBG37]] = !DILocation(line: 13, column: 9, scope: !11)
> > -; CHECK: [[META38]] = distinct !DIAssignID()
> > -; CHECK: [[META39]] = distinct !DIAssignID()
> > -; CHECK: [[META40]] = distinct !DIAssignID()
> > -; CHECK: [[META41]] = distinct !DIAssignID()
> > -; CHECK: [[META42]] = distinct !DIAssignID()
> > -; CHECK: [[META43]] = distinct !DIAssignID()
> > -; CHECK: [[META44]] = !DILocalVariable(name: "this", arg: 1, scope: !45,
> > type: !47, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META45:![0-9]+]] = distinct !DISubprogram(name: "e",
> > linkageName: "_ZN1d1eEv", scope: !16, file: !3, line: 9, type: !26,
> > scopeLine: 9, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !2, declaration: !29,
> > retainedNodes: !46)
> > -; CHECK: [[META46:![0-9]+]] = !{!44}
> > -; CHECK: [[META47:![0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type,
> > baseType: !16, size: 64)
> > -; CHECK: [[META48]] = distinct !DIAssignID()
> > -; CHECK: [[DBG49]] = !DILocation(line: 0, scope: !45, inlinedAt: !50)
> > -; CHECK: [[META50:![0-9]+]] = distinct !DILocation(line: 14, column: 5,
> > scope: !11)
> > -; CHECK: [[META51]] = distinct !DIAssignID()
> > -; CHECK: [[META52]] = !DILocalVariable(name: "this", arg: 1, scope: !53,
> > type: !47, flags: DIFlagArtificial | DIFlagObjectPointer)
> > -; CHECK: [[META53:![0-9]+]] = distinct !DISubprogram(name: "d",
> > linkageName: "_ZN1dC2Ev", scope: !16, file: !3, line: 8, type: !26,
> > scopeLine: 8, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags:
> > DISPFlagDefinition | DISPFlagOptimized, unit: !2, declaration: !25,
> > retainedNodes: !54)
> > -; CHECK: [[META54:![0-9]+]] = !{!52}
> > -; CHECK: [[META55]] = distinct !DIAssignID()
> > -; CHECK: [[DBG56]] = !DILocation(line: 0, scope: !53, inlinedAt: !57)
> > -; CHECK: [[META57:![0-9]+]] = distinct !DILocation(line: 15, column: 7,
> > scope: !11)
> > -; CHECK: [[META58]] = distinct !DIAssignID()
> > -; CHECK: [[DBG59]] = !DILocation(line: 8, column: 16, scope: !60,
> > inlinedAt: !57)
> > -; CHECK: [[META60:![0-9]+]] = distinct !DILexicalBlock(scope: !53, file:
> > !3, line: 8, column: 7)
> > -; CHECK: [[DBG61]] = !DILocation(line: 15, column: 5, scope: !11)
> > -; CHECK: [[META62]] = distinct !DIAssignID()
> > -; CHECK: [[META63]] = distinct !DIAssignID()
> > -; CHECK: [[META64]] = distinct !DIAssignID()
> > -; CHECK: [[DBG65]] = !DILocation(line: 16, column: 1, scope: !11)
> > -; CHECK: [[META66:![0-9]+]] = !DISubprogram(name: "f", linkageName:
> > "_Z1fv", scope: !3, file: !3, line: 11, type: !67, flags:
> > DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !4)
> > -; CHECK: [[META67:![0-9]+]] = !DISubroutineType(types: !68)
> > -; CHECK: [[META68:![0-9]+]] = !{!16}
> > -; CHECK: [[META69]] = distinct !DIAssignID()
> > -; CHECK: [[DBG70]] = !DILocation(line: 0, scope: !45)
> > -; CHECK: [[META71]] = distinct !DIAssignID()
> > -; CHECK: [[DBG72]] = !DILocation(line: 9, column: 13, scope: !45)
> > -; CHECK: [[META73]] = distinct !DIAssignID()
> > -; CHECK: [[DBG74]] = !DILocation(line: 0, scope: !53)
> > -; CHECK: [[META75]] = distinct !DIAssignID()
> > -; CHECK: [[DBG76]] = !DILocation(line: 8, column: 16, scope: !60)
> > -; CHECK: [[DBG77]] = !DILocation(line: 8, column: 9, scope: !60)
> > -; CHECK: [[DBG78]] = !DILocation(line: 8, column: 14, scope: !60)
> > -; CHECK: [[DBG79]] = !DILocation(line: 8, column: 19, scope: !53)
> > -;.
> >
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > https://urldefense.com/v3/__https://lists.llvm.org/cgi-
> > bin/mailman/listinfo/llvm-commits__;!!JmoZiZGBv3RvKRSx!77EijI9M5xKZtA3-
> > 6qtaECK9qX_QIkUxa7DKl1ewKN2T_5BL6FBdFKbJkf_CzhI1a0ttGS5MkmaA0lKi0imSy1BDop
> > sF$


More information about the llvm-commits mailing list