2016-05-03 06:50:51 +08:00
; 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'
2016-12-22 08:45:21 +08:00
source_filename = "test/DebugInfo/X86/isel-cse-line.ll"
2016-05-03 06:50:51 +08:00
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
2016-12-22 08:45:21 +08:00
@glb_start = global i64 17 , align 8 , !dbg !0
@glb_end = global i64 42 , align 8 , !dbg !9
2016-05-03 06:50:51 +08:00
2016-12-22 08:45:21 +08:00
define i32 @main ( ) !dbg !16 {
2016-05-03 06:50:51 +08:00
%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
2016-12-22 08:45:21 +08:00
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
2016-05-03 06:50:51 +08:00
}
; Function Attrs: nounwind readnone
2016-12-22 08:45:21 +08:00
declare void @llvm.dbg.declare ( metadata , metadata , metadata ) #0
2016-05-03 06:50:51 +08:00
2016-12-22 08:45:21 +08:00
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: D W _ L A N G _ C _ p l u s _ p l u s , file: !3 , producer: "clang version 3.9.0 (trunk 268246)" , isOptimized: false , runtimeVersion: 0 , emissionKind: F u l l D e b u g , 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: D W _ T A G _ t y p e d e f , name: "fp_t" , file: !3 , line: 1 , baseType: !7 )
!7 = !DIBasicType ( name: "double" , size: 64 , align: 64 , encoding: D W _ A T E _ 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: D W _ T A G _ t y p e d e f , name: "int_t" , file: !3 , line: 2 , baseType: !12 )
!12 = !DIBasicType ( name: "long unsigned int" , size: 64 , align: 64 , encoding: D W _ A T E _ u n s i g n e d )
!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: D I F l a g P r o t o t y p e d , isOptimized: false , unit: !2 , variables: !4 )
!17 = !DISubroutineType ( types: !18 )
!18 = ! { !19 }
!19 = !DIBasicType ( name: "int" , size: 32 , align: 32 , encoding: D W _ A T E _ s i g n e d )
!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 )
2016-05-03 06:50:51 +08:00