; RUN: opt -passes=mem2reg,instcombine %s -o - -S | FileCheck %s ; RUN: opt -passes=mem2reg,instcombine %s -o - -S --try-experimental-debuginfo-iterators | FileCheck %s ; ; Test that a dbg.declare describing am alloca with volatile ; load/stores is not lowered into a dbg.value, since the alloca won't ; be elided anyway. ; ; Generated from: ; ; unsigned long long g(); ; void h(unsigned long long); ; void f() { ; volatile unsigned long long v = g(); ; if (v == 0) ; g(); ; h(v); ; } ; CHECK: alloca i64 ; CHECK-NOT: call void @llvm.dbg.value ; CHECK: call void @llvm.dbg.declare ; CHECK-NOT: call void @llvm.dbg.value source_filename = "volatile.c" ; Function Attrs: nounwind optsize ssp uwtable define void @f() local_unnamed_addr #0 !dbg !8 { %1 = alloca i64, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr %1), !dbg !15 call void @llvm.dbg.declare(metadata ptr %1, metadata !12, metadata !DIExpression()), !dbg !15 %2 = call i64 (...) @g() #4, !dbg !15 store volatile i64 %2, ptr %1, align 8, !dbg !15 %3 = load volatile i64, ptr %1, align 8, !dbg !15 %4 = icmp eq i64 %3, 0, !dbg !15 br i1 %4, label %5, label %7, !dbg !15 ;