; RUN: llc -filetype=asm -fast-isel=false -O0 < %s | FileCheck %s
;
; Generated by:
; clang -emit-llvm -S -g test.cpp

; typedef double         fp_t;
; typedef unsigned long  int_t;
;
; int_t glb_start      = 17;
; int_t glb_end        = 42;
;
; int main()
; {
;   int_t start = glb_start;
;   int_t end   = glb_end;
;
;   fp_t dbl_start = (fp_t) start;
;   fp_t dbl_end   = (fp_t) end;
;
;   return 0;
; }

; SelectionDAG performs CSE on constant pool loads. Make sure line numbers
; from such nodes are not propagated. Doing so results in oscillating line numbers.

; CHECK: .loc 1 12
; CHECK: .loc 1 13
; CHECK-NOT: .loc 1 12

; ModuleID = 't.cpp'
source_filename = "test/DebugInfo/X86/isel-cse-line.ll"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@glb_start = global i64 17, align 8, !dbg !0
@glb_end = global i64 42, align 8, !dbg !9

define i32 @main() !dbg !16 {
  %1 = alloca i32, align 4
  %2 = alloca i64, align 8
  %3 = alloca i64, align 8
  %4 = alloca double, align 8
  %5 = alloca double, align 8
  store i32 0, i32* %1, align 4
  call void @llvm.dbg.declare(metadata i64* %2, metadata !20, metadata !21), !dbg !22
  %6 = load i64, i64* @glb_start, align 8, !dbg !23
  store i64 %6, i64* %2, align 8, !dbg !22
  call void @llvm.dbg.declare(metadata i64* %3, metadata !24, metadata !21), !dbg !25
  %7 = load i64, i64* @glb_end, align 8, !dbg !26
  store i64 %7, i64* %3, align 8, !dbg !25
  call void @llvm.dbg.declare(metadata double* %4, metadata !27, metadata !21), !dbg !28
  %8 = load i64, i64* %2, align 8, !dbg !29
  %9 = uitofp i64 %8 to double, !dbg !29
  store double %9, double* %4, align 8, !dbg !28
  call void @llvm.dbg.declare(metadata double* %5, metadata !30, metadata !21), !dbg !31
  %10 = load i64, i64* %3, align 8, !dbg !32
  %11 = uitofp i64 %10 to double, !dbg !32
  store double %11, double* %5, align 8, !dbg !31
  ret i32 0, !dbg !33
}

; Function Attrs: nounwind readnone
declare void @llvm.dbg.declare(metadata, metadata, metadata) #0

attributes #0 = { nounwind readnone }

!llvm.dbg.cu = !{!2}
!llvm.module.flags = !{!13, !14}
!llvm.ident = !{!15}

!0 = distinct !DIGlobalVariableExpression(var: !1)
!1 = !DIGlobalVariable(name: "glb_start", scope: !2, file: !3, line: 4, type: !11, isLocal: false, isDefinition: true)
!2 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !3, producer: "clang version 3.9.0 (trunk 268246)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !5, globals: !8)
!3 = !DIFile(filename: "/home/wpieb/test/D12094.cpp", directory: "/home/wpieb/build/llvm/trunk/llvm-RelWithDebInfo")
!4 = !{}
!5 = !{!6}
!6 = !DIDerivedType(tag: DW_TAG_typedef, name: "fp_t", file: !3, line: 1, baseType: !7)
!7 = !DIBasicType(name: "double", size: 64, align: 64, encoding: DW_ATE_float)
!8 = !{!0, !9}
!9 = distinct !DIGlobalVariableExpression(var: !10)
!10 = !DIGlobalVariable(name: "glb_end", scope: !2, file: !3, line: 5, type: !11, isLocal: false, isDefinition: true)
!11 = !DIDerivedType(tag: DW_TAG_typedef, name: "int_t", file: !3, line: 2, baseType: !12)
!12 = !DIBasicType(name: "long unsigned int", size: 64, align: 64, encoding: DW_ATE_unsigned)
!13 = !{i32 2, !"Dwarf Version", i32 4}
!14 = !{i32 2, !"Debug Info Version", i32 3}
!15 = !{!"clang version 3.9.0 (trunk 268246)"}
!16 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 7, type: !17, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, unit: !2, variables: !4)
!17 = !DISubroutineType(types: !18)
!18 = !{!19}
!19 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
!20 = !DILocalVariable(name: "start", scope: !16, file: !3, line: 9, type: !11)
!21 = !DIExpression()
!22 = !DILocation(line: 9, column: 9, scope: !16)
!23 = !DILocation(line: 9, column: 17, scope: !16)
!24 = !DILocalVariable(name: "end", scope: !16, file: !3, line: 10, type: !11)
!25 = !DILocation(line: 10, column: 9, scope: !16)
!26 = !DILocation(line: 10, column: 17, scope: !16)
!27 = !DILocalVariable(name: "dbl_start", scope: !16, file: !3, line: 12, type: !6)
!28 = !DILocation(line: 12, column: 8, scope: !16)
!29 = !DILocation(line: 12, column: 27, scope: !16)
!30 = !DILocalVariable(name: "dbl_end", scope: !16, file: !3, line: 13, type: !6)
!31 = !DILocation(line: 13, column: 8, scope: !16)
!32 = !DILocation(line: 13, column: 27, scope: !16)
!33 = !DILocation(line: 15, column: 3, scope: !16)

