[clang] [lldb] [clang][Expr] Teach IgnoreUnlessSpelledInSource about implicit calls to std::get free function (PR #122265)

Michał Górny via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 23 06:19:14 PDT 2025


mgorny wrote:

Sure:

```llvm
; ModuleID = '/var/tmp/portage/llvm-core/clang-22.0.0.9999/work/clang/test/DebugInfo/CXX/structured-binding.cpp'
source_filename = "/var/tmp/portage/llvm-core/clang-22.0.0.9999/work/clang/test/DebugInfo/CXX/structured-binding.cpp"
target datalayout = "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i128:128-f64:32:64-f80:32-n8:16:32-S128"
target triple = "i686-pc-linux-gnu"

%struct.A = type { i32, i32 }
%struct.B = type { i32, i32 }
%"struct.std::triple" = type { i32, i32, i32 }
%struct.C = type { i32, i32 }
%struct.D = type { i32, i32 }

$_ZN1B3getILi0EEEiv = comdat any

$_ZN1B3getILi1EEEiv = comdat any

$_ZNH1C3getILi0EEEiOS_ = comdat any

$_ZNH1C3getILi1EEEiOS_ = comdat any

$_ZN1D3getILi0EEEii = comdat any

$_ZN1D3getILi1EEEii = comdat any

@__const._Z1fv.a = private unnamed_addr constant %struct.A { i32 10, i32 20 }, align 4
@__const._Z1fv. = private unnamed_addr constant %struct.B { i32 1, i32 2 }, align 4
@__const._Z1fv.array = private unnamed_addr constant [2 x i32] [i32 3, i32 4], align 4
@__const._Z1fv..1 = private unnamed_addr constant %"struct.std::triple" { i32 3, i32 4, i32 5 }, align 4
@__const._Z1fv..2 = private unnamed_addr constant %struct.C { i32 2, i32 3 }, align 4
@__const._Z1fv..3 = private unnamed_addr constant %struct.D { i32 2, i32 3 }, align 4

; Function Attrs: mustprogress noinline nounwind optnone
define dso_local noundef i32 @_ZSt3getILj0EEiSt6triple(i32 %p.0, i32 %p.1, i32 %p.2) #0 !dbg !46 {
entry:
  %p = alloca %"struct.std::triple", align 4
  %k = getelementptr inbounds nuw %"struct.std::triple", ptr %p, i32 0, i32 0
  store i32 %p.0, ptr %k, align 4
  %v = getelementptr inbounds nuw %"struct.std::triple", ptr %p, i32 0, i32 1
  store i32 %p.1, ptr %v, align 4
  %w = getelementptr inbounds nuw %"struct.std::triple", ptr %p, i32 0, i32 2
  store i32 %p.2, ptr %w, align 4
    #dbg_declare(ptr %p, !53, !DIExpression(), !54)
  %k1 = getelementptr inbounds nuw %"struct.std::triple", ptr %p, i32 0, i32 0, !dbg !55
  %0 = load i32, ptr %k1, align 4, !dbg !55
  ret i32 %0, !dbg !56
}

; Function Attrs: mustprogress noinline nounwind optnone
define dso_local noundef i32 @_ZSt3getILj1EEiSt6triple(i32 %p.0, i32 %p.1, i32 %p.2) #0 !dbg !57 {
entry:
  %p = alloca %"struct.std::triple", align 4
  %k = getelementptr inbounds nuw %"struct.std::triple", ptr %p, i32 0, i32 0
  store i32 %p.0, ptr %k, align 4
  %v = getelementptr inbounds nuw %"struct.std::triple", ptr %p, i32 0, i32 1
  store i32 %p.1, ptr %v, align 4
  %w = getelementptr inbounds nuw %"struct.std::triple", ptr %p, i32 0, i32 2
  store i32 %p.2, ptr %w, align 4
    #dbg_declare(ptr %p, !60, !DIExpression(), !61)
  %v1 = getelementptr inbounds nuw %"struct.std::triple", ptr %p, i32 0, i32 1, !dbg !62
  %0 = load i32, ptr %v1, align 4, !dbg !62
  ret i32 %0, !dbg !63
}

; Function Attrs: mustprogress noinline nounwind optnone
define dso_local noundef i32 @_ZSt3getILj2EEiSt6triple(i32 %p.0, i32 %p.1, i32 %p.2) #0 !dbg !64 {
entry:
  %p = alloca %"struct.std::triple", align 4
  %k = getelementptr inbounds nuw %"struct.std::triple", ptr %p, i32 0, i32 0
  store i32 %p.0, ptr %k, align 4
  %v = getelementptr inbounds nuw %"struct.std::triple", ptr %p, i32 0, i32 1
  store i32 %p.1, ptr %v, align 4
  %w = getelementptr inbounds nuw %"struct.std::triple", ptr %p, i32 0, i32 2
  store i32 %p.2, ptr %w, align 4
    #dbg_declare(ptr %p, !67, !DIExpression(), !68)
  %w1 = getelementptr inbounds nuw %"struct.std::triple", ptr %p, i32 0, i32 2, !dbg !69
  %0 = load i32, ptr %w1, align 4, !dbg !69
  ret i32 %0, !dbg !70
}

; Function Attrs: mustprogress noinline nounwind optnone
define dso_local noundef i32 @_Z1fv() #0 !dbg !71 {
entry:
  %a = alloca %struct.A, align 4
  %0 = alloca %struct.A, align 4
  %1 = alloca ptr, align 4
  %2 = alloca %struct.B, align 4
  %z1 = alloca ptr, align 4
  %ref.tmp = alloca i32, align 4
  %z2 = alloca ptr, align 4
  %ref.tmp1 = alloca i32, align 4
  %array = alloca [2 x i32], align 4
  %3 = alloca ptr, align 4
  %cmplx = alloca { i32, i32 }, align 4
  %4 = alloca ptr, align 4
  %vctr = alloca <2 x i32>, align 8
  %5 = alloca ptr, align 4
  %6 = alloca %"struct.std::triple", align 4
  %k = alloca ptr, align 4
  %ref.tmp3 = alloca i32, align 4
  %agg.tmp = alloca %"struct.std::triple", align 4
  %v6 = alloca ptr, align 4
  %ref.tmp7 = alloca i32, align 4
  %agg.tmp8 = alloca %"struct.std::triple", align 4
  %w13 = alloca ptr, align 4
  %ref.tmp14 = alloca i32, align 4
  %agg.tmp15 = alloca %"struct.std::triple", align 4
  %7 = alloca %struct.C, align 4
  %m = alloca ptr, align 4
  %ref.tmp20 = alloca i32, align 4
  %n = alloca ptr, align 4
  %ref.tmp22 = alloca i32, align 4
  %8 = alloca %struct.D, align 4
  %s = alloca ptr, align 4
  %ref.tmp24 = alloca i32, align 4
  %p = alloca ptr, align 4
  %ref.tmp26 = alloca i32, align 4
    #dbg_declare(ptr %a, !74, !DIExpression(), !79)
  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %a, ptr align 4 @__const._Z1fv.a, i32 8, i1 false), !dbg !79
    #dbg_declare(ptr %0, !80, !DIExpression(), !81)
    #dbg_declare(ptr %0, !82, !DIExpression(DW_OP_plus_uconst, 4), !83)
  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %0, ptr align 4 %a, i32 8, i1 false), !dbg !84
    #dbg_declare(ptr %1, !85, !DIExpression(DW_OP_deref), !86)
    #dbg_declare(ptr %1, !87, !DIExpression(DW_OP_deref, DW_OP_plus_uconst, 4), !88)
  store ptr %a, ptr %1, align 4, !dbg !89
  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %2, ptr align 4 @__const._Z1fv., i32 8, i1 false), !dbg !90
    #dbg_declare(ptr %z1, !91, !DIExpression(), !98)
  %call = call noundef i32 @_ZN1B3getILi0EEEiv(ptr noundef nonnull align 4 dereferenceable(8) %2), !dbg !90
  store i32 %call, ptr %ref.tmp, align 4, !dbg !98
  store ptr %ref.tmp, ptr %z1, align 4, !dbg !98
    #dbg_declare(ptr %z2, !99, !DIExpression(), !105)
  %call2 = call noundef i32 @_ZN1B3getILi1EEEiv(ptr noundef nonnull align 4 dereferenceable(8) %2), !dbg !90
  store i32 %call2, ptr %ref.tmp1, align 4, !dbg !105
  store ptr %ref.tmp1, ptr %z2, align 4, !dbg !105
    #dbg_declare(ptr %array, !106, !DIExpression(), !110)
  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %array, ptr align 4 @__const._Z1fv.array, i32 8, i1 false), !dbg !110
    #dbg_declare(ptr %3, !111, !DIExpression(DW_OP_deref), !112)
    #dbg_declare(ptr %3, !113, !DIExpression(DW_OP_deref, DW_OP_plus_uconst, 4), !114)
  store ptr %array, ptr %3, align 4, !dbg !115
    #dbg_declare(ptr %cmplx, !116, !DIExpression(), !118)
  %cmplx.realp = getelementptr inbounds nuw { i32, i32 }, ptr %cmplx, i32 0, i32 0, !dbg !118
  %cmplx.imagp = getelementptr inbounds nuw { i32, i32 }, ptr %cmplx, i32 0, i32 1, !dbg !118
  store i32 1, ptr %cmplx.realp, align 4, !dbg !118
  store i32 2, ptr %cmplx.imagp, align 4, !dbg !118
    #dbg_declare(ptr %4, !119, !DIExpression(DW_OP_deref), !120)
    #dbg_declare(ptr %4, !121, !DIExpression(DW_OP_deref), !122)
  store ptr %cmplx, ptr %4, align 4, !dbg !123
    #dbg_declare(ptr %vctr, !124, !DIExpression(), !126)
  store <2 x i32> <i32 1, i32 2>, ptr %vctr, align 8, !dbg !126
    #dbg_declare(ptr %5, !127, !DIExpression(DW_OP_deref), !128)
    #dbg_declare(ptr %5, !129, !DIExpression(DW_OP_deref, DW_OP_plus_uconst, 4), !130)
  store ptr %vctr, ptr %5, align 4, !dbg !131
  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %6, ptr align 4 @__const._Z1fv..1, i32 12, i1 false), !dbg !132
    #dbg_declare(ptr %k, !133, !DIExpression(), !139)
  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %agg.tmp, ptr align 4 %6, i32 12, i1 false), !dbg !139
  %k4 = getelementptr inbounds nuw %"struct.std::triple", ptr %agg.tmp, i32 0, i32 0, !dbg !139
  %9 = load i32, ptr %k4, align 4, !dbg !139
  %v = getelementptr inbounds nuw %"struct.std::triple", ptr %agg.tmp, i32 0, i32 1, !dbg !139
  %10 = load i32, ptr %v, align 4, !dbg !139
  %w = getelementptr inbounds nuw %"struct.std::triple", ptr %agg.tmp, i32 0, i32 2, !dbg !139
  %11 = load i32, ptr %w, align 4, !dbg !139
  %call5 = call noundef i32 @_ZSt3getILj0EEiSt6triple(i32 %9, i32 %10, i32 %11), !dbg !139
  store i32 %call5, ptr %ref.tmp3, align 4, !dbg !139
  store ptr %ref.tmp3, ptr %k, align 4, !dbg !139
    #dbg_declare(ptr %v6, !140, !DIExpression(), !145)
  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %agg.tmp8, ptr align 4 %6, i32 12, i1 false), !dbg !145
  %k9 = getelementptr inbounds nuw %"struct.std::triple", ptr %agg.tmp8, i32 0, i32 0, !dbg !145
  %12 = load i32, ptr %k9, align 4, !dbg !145
  %v10 = getelementptr inbounds nuw %"struct.std::triple", ptr %agg.tmp8, i32 0, i32 1, !dbg !145
  %13 = load i32, ptr %v10, align 4, !dbg !145
  %w11 = getelementptr inbounds nuw %"struct.std::triple", ptr %agg.tmp8, i32 0, i32 2, !dbg !145
  %14 = load i32, ptr %w11, align 4, !dbg !145
  %call12 = call noundef i32 @_ZSt3getILj1EEiSt6triple(i32 %12, i32 %13, i32 %14), !dbg !145
  store i32 %call12, ptr %ref.tmp7, align 4, !dbg !145
  store ptr %ref.tmp7, ptr %v6, align 4, !dbg !145
    #dbg_declare(ptr %w13, !146, !DIExpression(), !152)
  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %agg.tmp15, ptr align 4 %6, i32 12, i1 false), !dbg !152
  %k16 = getelementptr inbounds nuw %"struct.std::triple", ptr %agg.tmp15, i32 0, i32 0, !dbg !152
  %15 = load i32, ptr %k16, align 4, !dbg !152
  %v17 = getelementptr inbounds nuw %"struct.std::triple", ptr %agg.tmp15, i32 0, i32 1, !dbg !152
  %16 = load i32, ptr %v17, align 4, !dbg !152
  %w18 = getelementptr inbounds nuw %"struct.std::triple", ptr %agg.tmp15, i32 0, i32 2, !dbg !152
  %17 = load i32, ptr %w18, align 4, !dbg !152
  %call19 = call noundef i32 @_ZSt3getILj2EEiSt6triple(i32 %15, i32 %16, i32 %17), !dbg !152
  store i32 %call19, ptr %ref.tmp14, align 4, !dbg !152
  store ptr %ref.tmp14, ptr %w13, align 4, !dbg !152
  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %7, ptr align 4 @__const._Z1fv..2, i32 8, i1 false), !dbg !153
    #dbg_declare(ptr %m, !154, !DIExpression(), !160)
  %call21 = call noundef i32 @_ZNH1C3getILi0EEEiOS_(ptr noundef nonnull align 4 dereferenceable(8) %7), !dbg !160
  store i32 %call21, ptr %ref.tmp20, align 4, !dbg !160
  store ptr %ref.tmp20, ptr %m, align 4, !dbg !160
    #dbg_declare(ptr %n, !161, !DIExpression(), !166)
  %call23 = call noundef i32 @_ZNH1C3getILi1EEEiOS_(ptr noundef nonnull align 4 dereferenceable(8) %7), !dbg !166
  store i32 %call23, ptr %ref.tmp22, align 4, !dbg !166
  store ptr %ref.tmp22, ptr %n, align 4, !dbg !166
  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %8, ptr align 4 @__const._Z1fv..3, i32 8, i1 false), !dbg !167
    #dbg_declare(ptr %s, !168, !DIExpression(), !174)
  %call25 = call noundef i32 @_ZN1D3getILi0EEEii(ptr noundef nonnull align 4 dereferenceable(8) %8, i32 noundef 0), !dbg !167
  store i32 %call25, ptr %ref.tmp24, align 4, !dbg !174
  store ptr %ref.tmp24, ptr %s, align 4, !dbg !174
    #dbg_declare(ptr %p, !175, !DIExpression(), !180)
  %call27 = call noundef i32 @_ZN1D3getILi1EEEii(ptr noundef nonnull align 4 dereferenceable(8) %8, i32 noundef 0), !dbg !167
  store i32 %call27, ptr %ref.tmp26, align 4, !dbg !180
  store ptr %ref.tmp26, ptr %p, align 4, !dbg !180
  %x = getelementptr inbounds nuw %struct.A, ptr %0, i32 0, i32 0, !dbg !181
  %18 = load i32, ptr %x, align 4, !dbg !181
  %y = getelementptr inbounds nuw %struct.A, ptr %0, i32 0, i32 1, !dbg !182
  %19 = load i32, ptr %y, align 4, !dbg !182
  %add = add nsw i32 %18, %19, !dbg !183
  %20 = load ptr, ptr %1, align 4, !dbg !184, !nonnull !49, !align !185
  %x28 = getelementptr inbounds nuw %struct.A, ptr %20, i32 0, i32 0, !dbg !184
  %21 = load i32, ptr %x28, align 4, !dbg !184
  %add29 = add nsw i32 %add, %21, !dbg !186
  %22 = load ptr, ptr %1, align 4, !dbg !187, !nonnull !49, !align !185
  %y30 = getelementptr inbounds nuw %struct.A, ptr %22, i32 0, i32 1, !dbg !187
  %23 = load i32, ptr %y30, align 4, !dbg !187
  %add31 = add nsw i32 %add29, %23, !dbg !188
  %24 = load ptr, ptr %z1, align 4, !dbg !189, !nonnull !49, !align !185
  %25 = load i32, ptr %24, align 4, !dbg !189
  %add32 = add nsw i32 %add31, %25, !dbg !190
  %26 = load ptr, ptr %z2, align 4, !dbg !191, !nonnull !49, !align !185
  %27 = load i32, ptr %26, align 4, !dbg !191
  %add33 = add nsw i32 %add32, %27, !dbg !192
  %28 = load ptr, ptr %3, align 4, !dbg !193, !nonnull !49, !align !185
  %arrayidx = getelementptr inbounds [2 x i32], ptr %28, i32 0, i32 0, !dbg !193
  %29 = load i32, ptr %arrayidx, align 4, !dbg !193
  %add34 = add nsw i32 %add33, %29, !dbg !194
  %30 = load ptr, ptr %3, align 4, !dbg !195, !nonnull !49, !align !185
  %arrayidx35 = getelementptr inbounds [2 x i32], ptr %30, i32 0, i32 1, !dbg !195
  %31 = load i32, ptr %arrayidx35, align 4, !dbg !195
  %add36 = add nsw i32 %add34, %31, !dbg !196
  %32 = load ptr, ptr %4, align 4, !dbg !197, !nonnull !49, !align !185
  %.realp = getelementptr inbounds nuw { i32, i32 }, ptr %32, i32 0, i32 0, !dbg !197
  %33 = load i32, ptr %.realp, align 4, !dbg !197
  %add37 = add nsw i32 %add36, %33, !dbg !198
  %34 = load ptr, ptr %4, align 4, !dbg !199, !nonnull !49, !align !185
  %.imagp = getelementptr inbounds nuw { i32, i32 }, ptr %34, i32 0, i32 1, !dbg !199
  %35 = load i32, ptr %.imagp, align 4, !dbg !199
  %add38 = add nsw i32 %add37, %35, !dbg !200
  %36 = load ptr, ptr %5, align 4, !dbg !201, !nonnull !49, !align !202
  %37 = load <2 x i32>, ptr %36, align 8, !dbg !201
  %vecext = extractelement <2 x i32> %37, i32 0, !dbg !201
  %add39 = add nsw i32 %add38, %vecext, !dbg !203
  %38 = load ptr, ptr %5, align 4, !dbg !204, !nonnull !49, !align !202
  %39 = load <2 x i32>, ptr %38, align 8, !dbg !204
  %vecext40 = extractelement <2 x i32> %39, i32 1, !dbg !204
  %add41 = add nsw i32 %add39, %vecext40, !dbg !205
  ret i32 %add41, !dbg !206
}

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i32(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i32, i1 immarg) #1

; Function Attrs: mustprogress noinline nounwind optnone
define linkonce_odr noundef i32 @_ZN1B3getILi0EEEiv(ptr noundef nonnull align 4 dereferenceable(8) %this) #0 comdat align 2 !dbg !207 {
entry:
  %this.addr = alloca ptr, align 4
  store ptr %this, ptr %this.addr, align 4
    #dbg_declare(ptr %this.addr, !208, !DIExpression(), !210)
  %this1 = load ptr, ptr %this.addr, align 4
  %w = getelementptr inbounds nuw %struct.B, ptr %this1, i32 0, i32 0, !dbg !211
  %0 = load i32, ptr %w, align 4, !dbg !211
  ret i32 %0, !dbg !212
}

; Function Attrs: mustprogress noinline nounwind optnone
define linkonce_odr noundef i32 @_ZN1B3getILi1EEEiv(ptr noundef nonnull align 4 dereferenceable(8) %this) #0 comdat align 2 !dbg !213 {
entry:
  %this.addr = alloca ptr, align 4
  store ptr %this, ptr %this.addr, align 4
    #dbg_declare(ptr %this.addr, !214, !DIExpression(), !215)
  %this1 = load ptr, ptr %this.addr, align 4
  %z = getelementptr inbounds nuw %struct.B, ptr %this1, i32 0, i32 1, !dbg !216
  %0 = load i32, ptr %z, align 4, !dbg !216
  ret i32 %0, !dbg !217
}

; Function Attrs: mustprogress noinline nounwind optnone
define linkonce_odr noundef i32 @_ZNH1C3getILi0EEEiOS_(ptr noundef nonnull align 4 dereferenceable(8) %self) #0 comdat align 2 !dbg !218 {
entry:
  %self.addr = alloca ptr, align 4
  store ptr %self, ptr %self.addr, align 4
    #dbg_declare(ptr %self.addr, !219, !DIExpression(), !221)
  %0 = load ptr, ptr %self.addr, align 4, !dbg !222, !nonnull !49, !align !185
  %w = getelementptr inbounds nuw %struct.C, ptr %0, i32 0, i32 0, !dbg !223
  %1 = load i32, ptr %w, align 4, !dbg !223
  ret i32 %1, !dbg !224
}

; Function Attrs: mustprogress noinline nounwind optnone
define linkonce_odr noundef i32 @_ZNH1C3getILi1EEEiOS_(ptr noundef nonnull align 4 dereferenceable(8) %self) #0 comdat align 2 !dbg !225 {
entry:
  %self.addr = alloca ptr, align 4
  store ptr %self, ptr %self.addr, align 4
    #dbg_declare(ptr %self.addr, !226, !DIExpression(), !227)
  %0 = load ptr, ptr %self.addr, align 4, !dbg !228, !nonnull !49, !align !185
  %z = getelementptr inbounds nuw %struct.C, ptr %0, i32 0, i32 1, !dbg !229
  %1 = load i32, ptr %z, align 4, !dbg !229
  ret i32 %1, !dbg !230
}

; Function Attrs: mustprogress noinline nounwind optnone
define linkonce_odr noundef i32 @_ZN1D3getILi0EEEii(ptr noundef nonnull align 4 dereferenceable(8) %this, i32 noundef %unused) #0 comdat align 2 !dbg !231 {
entry:
  %this.addr = alloca ptr, align 4
  %unused.addr = alloca i32, align 4
  store ptr %this, ptr %this.addr, align 4
    #dbg_declare(ptr %this.addr, !232, !DIExpression(), !234)
  store i32 %unused, ptr %unused.addr, align 4
    #dbg_declare(ptr %unused.addr, !235, !DIExpression(), !236)
  %this1 = load ptr, ptr %this.addr, align 4
  %w = getelementptr inbounds nuw %struct.D, ptr %this1, i32 0, i32 0, !dbg !237
  %0 = load i32, ptr %w, align 4, !dbg !237
  ret i32 %0, !dbg !238
}

; Function Attrs: mustprogress noinline nounwind optnone
define linkonce_odr noundef i32 @_ZN1D3getILi1EEEii(ptr noundef nonnull align 4 dereferenceable(8) %this, i32 noundef %unused) #0 comdat align 2 !dbg !239 {
entry:
  %this.addr = alloca ptr, align 4
  %unused.addr = alloca i32, align 4
  store ptr %this, ptr %this.addr, align 4
    #dbg_declare(ptr %this.addr, !240, !DIExpression(), !241)
  store i32 %unused, ptr %unused.addr, align 4
    #dbg_declare(ptr %unused.addr, !242, !DIExpression(), !243)
  %this1 = load ptr, ptr %this.addr, align 4
  %z = getelementptr inbounds nuw %struct.D, ptr %this1, i32 0, i32 1, !dbg !244
  %0 = load i32, ptr %z, align 4, !dbg !244
  ret i32 %0, !dbg !245
}

attributes #0 = { mustprogress noinline nounwind optnone "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+cx8,+x87" }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }

!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!42, !43, !44}
!llvm.ident = !{!45}

!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang version 22.0.0git012680fa", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None)
!1 = !DIFile(filename: "/var/tmp/portage/llvm-core/clang-22.0.0.9999/work/clang/test/DebugInfo/CXX/<stdin>", directory: "")
!2 = !{!3, !18, !24, !33}
!3 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "B", file: !4, line: 44, size: 64, flags: DIFlagTypePassByValue, elements: !5, identifier: "_ZTS1B")
!4 = !DIFile(filename: "/var/tmp/portage/llvm-core/clang-22.0.0.9999/work/clang/test/DebugInfo/CXX/structured-binding.cpp", directory: "")
!5 = !{!6, !8, !9, !15}
!6 = !DIDerivedType(tag: DW_TAG_member, name: "w", scope: !3, file: !4, line: 45, baseType: !7, size: 32)
!7 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!8 = !DIDerivedType(tag: DW_TAG_member, name: "z", scope: !3, file: !4, line: 46, baseType: !7, size: 32, offset: 32)
!9 = !DISubprogram(name: "get<0>", linkageName: "_ZN1B3getILi0EEEiv", scope: !3, file: !4, line: 48, type: !10, scopeLine: 48, flags: DIFlagPrototyped, spFlags: 0, templateParams: !13)
!10 = !DISubroutineType(types: !11)
!11 = !{!7, !12}
!12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !3, size: 32, flags: DIFlagArtificial | DIFlagObjectPointer)
!13 = !{!14}
!14 = !DITemplateValueParameter(type: !7, value: i32 0)
!15 = !DISubprogram(name: "get<1>", linkageName: "_ZN1B3getILi1EEEiv", scope: !3, file: !4, line: 49, type: !10, scopeLine: 49, flags: DIFlagPrototyped, spFlags: 0, templateParams: !16)
!16 = !{!17}
!17 = !DITemplateValueParameter(type: !7, value: i32 1)
!18 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "triple", scope: !19, file: !4, line: 92, size: 96, flags: DIFlagTypePassByValue, elements: !20, identifier: "_ZTSSt6triple")
!19 = !DINamespace(name: "std", scope: null)
!20 = !{!21, !22, !23}
!21 = !DIDerivedType(tag: DW_TAG_member, name: "k", scope: !18, file: !4, line: 93, baseType: !7, size: 32)
!22 = !DIDerivedType(tag: DW_TAG_member, name: "v", scope: !18, file: !4, line: 94, baseType: !7, size: 32, offset: 32)
!23 = !DIDerivedType(tag: DW_TAG_member, name: "w", scope: !18, file: !4, line: 95, baseType: !7, size: 32, offset: 64)
!24 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "C", file: !4, line: 52, size: 64, flags: DIFlagTypePassByValue, elements: !25, identifier: "_ZTS1C")
!25 = !{!26, !27, !28, !32}
!26 = !DIDerivedType(tag: DW_TAG_member, name: "w", scope: !24, file: !4, line: 53, baseType: !7, size: 32)
!27 = !DIDerivedType(tag: DW_TAG_member, name: "z", scope: !24, file: !4, line: 54, baseType: !7, size: 32, offset: 32)
!28 = !DISubprogram(name: "get<0>", linkageName: "_ZNH1C3getILi0EEEiOS_", scope: !24, file: !4, line: 56, type: !29, scopeLine: 56, flags: DIFlagPrototyped, spFlags: 0, templateParams: !13)
!29 = !DISubroutineType(types: !30)
!30 = !{!7, !31}
!31 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !24, size: 32, flags: DIFlagObjectPointer)
!32 = !DISubprogram(name: "get<1>", linkageName: "_ZNH1C3getILi1EEEiOS_", scope: !24, file: !4, line: 57, type: !29, scopeLine: 57, flags: DIFlagPrototyped, spFlags: 0, templateParams: !16)
!33 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "D", file: !4, line: 60, size: 64, flags: DIFlagTypePassByValue, elements: !34, identifier: "_ZTS1D")
!34 = !{!35, !36, !37, !41}
!35 = !DIDerivedType(tag: DW_TAG_member, name: "w", scope: !33, file: !4, line: 61, baseType: !7, size: 32)
!36 = !DIDerivedType(tag: DW_TAG_member, name: "z", scope: !33, file: !4, line: 62, baseType: !7, size: 32, offset: 32)
!37 = !DISubprogram(name: "get<0>", linkageName: "_ZN1D3getILi0EEEii", scope: !33, file: !4, line: 64, type: !38, scopeLine: 64, flags: DIFlagPrototyped, spFlags: 0, templateParams: !13)
!38 = !DISubroutineType(types: !39)
!39 = !{!7, !40, !7}
!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !33, size: 32, flags: DIFlagArtificial | DIFlagObjectPointer)
!41 = !DISubprogram(name: "get<1>", linkageName: "_ZN1D3getILi1EEEii", scope: !33, file: !4, line: 65, type: !38, scopeLine: 65, flags: DIFlagPrototyped, spFlags: 0, templateParams: !16)
!42 = !{i32 1, !"NumRegisterParameters", i32 0}
!43 = !{i32 2, !"Debug Info Version", i32 3}
!44 = !{i32 1, !"wchar_size", i32 4}
!45 = !{!"clang version 22.0.0git012680fa"}
!46 = distinct !DISubprogram(name: "get<0U>", linkageName: "_ZSt3getILj0EEiSt6triple", scope: !19, file: !4, line: 104, type: !47, scopeLine: 104, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, templateParams: !50, retainedNodes: !49)
!47 = !DISubroutineType(types: !48)
!48 = !{!7, !18}
!49 = !{}
!50 = !{!51}
!51 = !DITemplateValueParameter(name: "I", type: !52, value: i32 0)
!52 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned)
!53 = !DILocalVariable(name: "p", arg: 1, scope: !46, file: !4, line: 104, type: !18)
!54 = !DILocation(line: 104, column: 31, scope: !46)
!55 = !DILocation(line: 104, column: 45, scope: !46)
!56 = !DILocation(line: 104, column: 36, scope: !46)
!57 = distinct !DISubprogram(name: "get<1U>", linkageName: "_ZSt3getILj1EEiSt6triple", scope: !19, file: !4, line: 105, type: !47, scopeLine: 105, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, templateParams: !58, retainedNodes: !49)
!58 = !{!59}
!59 = !DITemplateValueParameter(name: "I", type: !52, value: i32 1)
!60 = !DILocalVariable(name: "p", arg: 1, scope: !57, file: !4, line: 105, type: !18)
!61 = !DILocation(line: 105, column: 31, scope: !57)
!62 = !DILocation(line: 105, column: 45, scope: !57)
!63 = !DILocation(line: 105, column: 36, scope: !57)
!64 = distinct !DISubprogram(name: "get<2U>", linkageName: "_ZSt3getILj2EEiSt6triple", scope: !19, file: !4, line: 106, type: !47, scopeLine: 106, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, templateParams: !65, retainedNodes: !49)
!65 = !{!66}
!66 = !DITemplateValueParameter(name: "I", type: !52, value: i32 2)
!67 = !DILocalVariable(name: "p", arg: 1, scope: !64, file: !4, line: 106, type: !18)
!68 = !DILocation(line: 106, column: 31, scope: !64)
!69 = !DILocation(line: 106, column: 45, scope: !64)
!70 = !DILocation(line: 106, column: 36, scope: !64)
!71 = distinct !DISubprogram(name: "f", linkageName: "_Z1fv", scope: !4, file: !4, line: 109, type: !72, scopeLine: 109, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !49)
!72 = !DISubroutineType(types: !73)
!73 = !{!7}
!74 = !DILocalVariable(name: "a", scope: !71, file: !4, line: 110, type: !75)
!75 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "A", file: !4, line: 39, size: 64, flags: DIFlagTypePassByValue, elements: !76, identifier: "_ZTS1A")
!76 = !{!77, !78}
!77 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !75, file: !4, line: 40, baseType: !7, size: 32)
!78 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !75, file: !4, line: 41, baseType: !7, size: 32, offset: 32)
!79 = !DILocation(line: 110, column: 5, scope: !71)
!80 = !DILocalVariable(name: "x1", scope: !71, file: !4, line: 111, type: !7)
!81 = !DILocation(line: 111, column: 9, scope: !71)
!82 = !DILocalVariable(name: "y1", scope: !71, file: !4, line: 111, type: !7)
!83 = !DILocation(line: 111, column: 13, scope: !71)
!84 = !DILocation(line: 111, column: 19, scope: !71)
!85 = !DILocalVariable(name: "x2", scope: !71, file: !4, line: 112, type: !7)
!86 = !DILocation(line: 112, column: 10, scope: !71)
!87 = !DILocalVariable(name: "y2", scope: !71, file: !4, line: 112, type: !7)
!88 = !DILocation(line: 112, column: 14, scope: !71)
!89 = !DILocation(line: 112, column: 9, scope: !71)
!90 = !DILocation(line: 113, column: 8, scope: !71)
!91 = !DILocalVariable(name: "z1", scope: !71, file: !4, line: 113, type: !92)
!92 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !93, size: 32)
!93 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !94, file: !4, line: 88, baseType: !7)
!94 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "tuple_element<0U, B>", scope: !19, file: !4, line: 88, size: 8, flags: DIFlagTypePassByValue, elements: !49, templateParams: !95, identifier: "_ZTSSt13tuple_elementILj0E1BE")
!95 = !{!96, !97}
!96 = !DITemplateValueParameter(type: !52, value: i32 0)
!97 = !DITemplateTypeParameter(name: "T", type: !3)
!98 = !DILocation(line: 113, column: 9, scope: !71)
!99 = !DILocalVariable(name: "z2", scope: !71, file: !4, line: 113, type: !100)
!100 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !101, size: 32)
!101 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !102, file: !4, line: 88, baseType: !7)
!102 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "tuple_element<1U, B>", scope: !19, file: !4, line: 88, size: 8, flags: DIFlagTypePassByValue, elements: !49, templateParams: !103, identifier: "_ZTSSt13tuple_elementILj1E1BE")
!103 = !{!104, !97}
!104 = !DITemplateValueParameter(type: !52, value: i32 1)
!105 = !DILocation(line: 113, column: 13, scope: !71)
!106 = !DILocalVariable(name: "array", scope: !71, file: !4, line: 114, type: !107)
!107 = !DICompositeType(tag: DW_TAG_array_type, baseType: !7, size: 64, elements: !108)
!108 = !{!109}
!109 = !DISubrange(count: 2)
!110 = !DILocation(line: 114, column: 7, scope: !71)
!111 = !DILocalVariable(name: "a1", scope: !71, file: !4, line: 115, type: !7)
!112 = !DILocation(line: 115, column: 10, scope: !71)
!113 = !DILocalVariable(name: "a2", scope: !71, file: !4, line: 115, type: !7)
!114 = !DILocation(line: 115, column: 14, scope: !71)
!115 = !DILocation(line: 115, column: 9, scope: !71)
!116 = !DILocalVariable(name: "cmplx", scope: !71, file: !4, line: 116, type: !117)
!117 = !DIBasicType(name: "complex", size: 64, encoding: 128)
!118 = !DILocation(line: 116, column: 16, scope: !71)
!119 = !DILocalVariable(name: "c1", scope: !71, file: !4, line: 117, type: !7)
!120 = !DILocation(line: 117, column: 10, scope: !71)
!121 = !DILocalVariable(name: "c2", scope: !71, file: !4, line: 117, type: !7)
!122 = !DILocation(line: 117, column: 14, scope: !71)
!123 = !DILocation(line: 117, column: 9, scope: !71)
!124 = !DILocalVariable(name: "vctr", scope: !71, file: !4, line: 118, type: !125)
!125 = !DICompositeType(tag: DW_TAG_array_type, baseType: !7, size: 64, flags: DIFlagVector, elements: !108)
!126 = !DILocation(line: 118, column: 7, scope: !71)
!127 = !DILocalVariable(name: "v1", scope: !71, file: !4, line: 119, type: !7)
!128 = !DILocation(line: 119, column: 10, scope: !71)
!129 = !DILocalVariable(name: "v2", scope: !71, file: !4, line: 119, type: !7)
!130 = !DILocation(line: 119, column: 14, scope: !71)
!131 = !DILocation(line: 119, column: 9, scope: !71)
!132 = !DILocation(line: 120, column: 8, scope: !71)
!133 = !DILocalVariable(name: "k", scope: !71, file: !4, line: 120, type: !134)
!134 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !135, size: 32)
!135 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !136, file: !4, line: 88, baseType: !7)
!136 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "tuple_element<0U, std::triple>", scope: !19, file: !4, line: 88, size: 8, flags: DIFlagTypePassByValue, elements: !49, templateParams: !137, identifier: "_ZTSSt13tuple_elementILj0ESt6tripleE")
!137 = !{!96, !138}
!138 = !DITemplateTypeParameter(name: "T", type: !18)
!139 = !DILocation(line: 120, column: 9, scope: !71)
!140 = !DILocalVariable(name: "v", scope: !71, file: !4, line: 120, type: !141)
!141 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !142, size: 32)
!142 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !143, file: !4, line: 88, baseType: !7)
!143 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "tuple_element<1U, std::triple>", scope: !19, file: !4, line: 88, size: 8, flags: DIFlagTypePassByValue, elements: !49, templateParams: !144, identifier: "_ZTSSt13tuple_elementILj1ESt6tripleE")
!144 = !{!104, !138}
!145 = !DILocation(line: 120, column: 12, scope: !71)
!146 = !DILocalVariable(name: "w", scope: !71, file: !4, line: 120, type: !147)
!147 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !148, size: 32)
!148 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !149, file: !4, line: 88, baseType: !7)
!149 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "tuple_element<2U, std::triple>", scope: !19, file: !4, line: 88, size: 8, flags: DIFlagTypePassByValue, elements: !49, templateParams: !150, identifier: "_ZTSSt13tuple_elementILj2ESt6tripleE")
!150 = !{!151, !138}
!151 = !DITemplateValueParameter(type: !52, value: i32 2)
!152 = !DILocation(line: 120, column: 15, scope: !71)
!153 = !DILocation(line: 121, column: 8, scope: !71)
!154 = !DILocalVariable(name: "m", scope: !71, file: !4, line: 121, type: !155)
!155 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !156, size: 32)
!156 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !157, file: !4, line: 88, baseType: !7)
!157 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "tuple_element<0U, C>", scope: !19, file: !4, line: 88, size: 8, flags: DIFlagTypePassByValue, elements: !49, templateParams: !158, identifier: "_ZTSSt13tuple_elementILj0E1CE")
!158 = !{!96, !159}
!159 = !DITemplateTypeParameter(name: "T", type: !24)
!160 = !DILocation(line: 121, column: 9, scope: !71)
!161 = !DILocalVariable(name: "n", scope: !71, file: !4, line: 121, type: !162)
!162 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !163, size: 32)
!163 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !164, file: !4, line: 88, baseType: !7)
!164 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "tuple_element<1U, C>", scope: !19, file: !4, line: 88, size: 8, flags: DIFlagTypePassByValue, elements: !49, templateParams: !165, identifier: "_ZTSSt13tuple_elementILj1E1CE")
!165 = !{!104, !159}
!166 = !DILocation(line: 121, column: 12, scope: !71)
!167 = !DILocation(line: 122, column: 8, scope: !71)
!168 = !DILocalVariable(name: "s", scope: !71, file: !4, line: 122, type: !169)
!169 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !170, size: 32)
!170 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !171, file: !4, line: 88, baseType: !7)
!171 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "tuple_element<0U, D>", scope: !19, file: !4, line: 88, size: 8, flags: DIFlagTypePassByValue, elements: !49, templateParams: !172, identifier: "_ZTSSt13tuple_elementILj0E1DE")
!172 = !{!96, !173}
!173 = !DITemplateTypeParameter(name: "T", type: !33)
!174 = !DILocation(line: 122, column: 9, scope: !71)
!175 = !DILocalVariable(name: "p", scope: !71, file: !4, line: 122, type: !176)
!176 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !177, size: 32)
!177 = !DIDerivedType(tag: DW_TAG_typedef, name: "type", scope: !178, file: !4, line: 88, baseType: !7)
!178 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "tuple_element<1U, D>", scope: !19, file: !4, line: 88, size: 8, flags: DIFlagTypePassByValue, elements: !49, templateParams: !179, identifier: "_ZTSSt13tuple_elementILj1E1DE")
!179 = !{!104, !173}
!180 = !DILocation(line: 122, column: 12, scope: !71)
!181 = !DILocation(line: 124, column: 6, scope: !71)
!182 = !DILocation(line: 127, column: 6, scope: !71)
!183 = !DILocation(line: 125, column: 6, scope: !71)
!184 = !DILocation(line: 129, column: 6, scope: !71)
!185 = !{i64 4}
!186 = !DILocation(line: 128, column: 6, scope: !71)
!187 = !DILocation(line: 132, column: 6, scope: !71)
!188 = !DILocation(line: 130, column: 6, scope: !71)
!189 = !DILocation(line: 134, column: 6, scope: !71)
!190 = !DILocation(line: 133, column: 6, scope: !71)
!191 = !DILocation(line: 137, column: 6, scope: !71)
!192 = !DILocation(line: 135, column: 6, scope: !71)
!193 = !DILocation(line: 139, column: 6, scope: !71)
!194 = !DILocation(line: 138, column: 6, scope: !71)
!195 = !DILocation(line: 142, column: 6, scope: !71)
!196 = !DILocation(line: 140, column: 6, scope: !71)
!197 = !DILocation(line: 144, column: 6, scope: !71)
!198 = !DILocation(line: 143, column: 6, scope: !71)
!199 = !DILocation(line: 147, column: 6, scope: !71)
!200 = !DILocation(line: 145, column: 6, scope: !71)
!201 = !DILocation(line: 149, column: 6, scope: !71)
!202 = !{i64 8}
!203 = !DILocation(line: 148, column: 6, scope: !71)
!204 = !DILocation(line: 152, column: 6, scope: !71)
!205 = !DILocation(line: 150, column: 6, scope: !71)
!206 = !DILocation(line: 123, column: 3, scope: !71)
!207 = distinct !DISubprogram(name: "get<0>", linkageName: "_ZN1B3getILi0EEEiv", scope: !3, file: !4, line: 48, type: !10, scopeLine: 48, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, templateParams: !13, declaration: !9, retainedNodes: !49)
!208 = !DILocalVariable(name: "this", arg: 1, scope: !207, type: !209, flags: DIFlagArtificial | DIFlagObjectPointer)
!209 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !3, size: 32)
!210 = !DILocation(line: 0, scope: !207)
!211 = !DILocation(line: 48, column: 36, scope: !207)
!212 = !DILocation(line: 48, column: 29, scope: !207)
!213 = distinct !DISubprogram(name: "get<1>", linkageName: "_ZN1B3getILi1EEEiv", scope: !3, file: !4, line: 49, type: !10, scopeLine: 49, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, templateParams: !16, declaration: !15, retainedNodes: !49)
!214 = !DILocalVariable(name: "this", arg: 1, scope: !213, type: !209, flags: DIFlagArtificial | DIFlagObjectPointer)
!215 = !DILocation(line: 0, scope: !213)
!216 = !DILocation(line: 49, column: 36, scope: !213)
!217 = !DILocation(line: 49, column: 29, scope: !213)
!218 = distinct !DISubprogram(name: "get<0>", linkageName: "_ZNH1C3getILi0EEEiOS_", scope: !24, file: !4, line: 56, type: !29, scopeLine: 56, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, templateParams: !13, declaration: !28, retainedNodes: !49)
!219 = !DILocalVariable(name: "self", arg: 1, scope: !218, file: !4, line: 56, type: !220, flags: DIFlagObjectPointer)
!220 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !24, size: 32)
!221 = !DILocation(line: 56, column: 34, scope: !218)
!222 = !DILocation(line: 56, column: 49, scope: !218)
!223 = !DILocation(line: 56, column: 54, scope: !218)
!224 = !DILocation(line: 56, column: 42, scope: !218)
!225 = distinct !DISubprogram(name: "get<1>", linkageName: "_ZNH1C3getILi1EEEiOS_", scope: !24, file: !4, line: 57, type: !29, scopeLine: 57, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, templateParams: !16, declaration: !32, retainedNodes: !49)
!226 = !DILocalVariable(name: "self", arg: 1, scope: !225, file: !4, line: 57, type: !220, flags: DIFlagObjectPointer)
!227 = !DILocation(line: 57, column: 34, scope: !225)
!228 = !DILocation(line: 57, column: 49, scope: !225)
!229 = !DILocation(line: 57, column: 54, scope: !225)
!230 = !DILocation(line: 57, column: 42, scope: !225)
!231 = distinct !DISubprogram(name: "get<0>", linkageName: "_ZN1D3getILi0EEEii", scope: !33, file: !4, line: 64, type: !38, scopeLine: 64, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, templateParams: !13, declaration: !37, retainedNodes: !49)
!232 = !DILocalVariable(name: "this", arg: 1, scope: !231, type: !233, flags: DIFlagArtificial | DIFlagObjectPointer)
!233 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !33, size: 32)
!234 = !DILocation(line: 0, scope: !231)
!235 = !DILocalVariable(name: "unused", arg: 2, scope: !231, file: !4, line: 64, type: !7)
!236 = !DILocation(line: 64, column: 29, scope: !231)
!237 = !DILocation(line: 64, column: 46, scope: !231)
!238 = !DILocation(line: 64, column: 39, scope: !231)
!239 = distinct !DISubprogram(name: "get<1>", linkageName: "_ZN1D3getILi1EEEii", scope: !33, file: !4, line: 65, type: !38, scopeLine: 65, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, templateParams: !16, declaration: !41, retainedNodes: !49)
!240 = !DILocalVariable(name: "this", arg: 1, scope: !239, type: !233, flags: DIFlagArtificial | DIFlagObjectPointer)
!241 = !DILocation(line: 0, scope: !239)
!242 = !DILocalVariable(name: "unused", arg: 2, scope: !239, file: !4, line: 65, type: !7)
!243 = !DILocation(line: 65, column: 29, scope: !239)
!244 = !DILocation(line: 65, column: 46, scope: !239)
!245 = !DILocation(line: 65, column: 39, scope: !239)
```

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


More information about the cfe-commits mailing list