2010-08-16 04:42:56 +08:00
; RUN: llc -march=x86 -O0 < %s | FileCheck %s
2010-01-26 08:09:58 +08:00
; Currently, dbg.declare generates a DEBUG_VALUE comment. Eventually it will
; generate DWARF and this test will need to be modified or removed.
2010-04-29 04:27:48 +08:00
%struct.Pt = type { double , double }
%struct.Rect = type { %struct.Pt , %struct.Pt }
define double @foo ( %struct.Rect * byval %my_r0 ) nounwind ssp {
2010-01-26 08:09:58 +08:00
entry:
2010-04-29 04:27:48 +08:00
;CHECK: DEBUG_VALUE
%retval = alloca double ; <double*> [#uses=2]
%0 = alloca double ; <double*> [#uses=2]
2010-01-26 08:09:58 +08:00
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
2010-04-29 04:27:48 +08:00
call void @llvm.dbg.declare ( metadata ! { %struct.Rect * %my_r0 } , metadata !0 ) , !dbg !15
%1 = getelementptr inbounds %struct.Rect * %my_r0 , i32 0 , i32 0 , !dbg !16 ; <%struct.Pt*> [#uses=1]
%2 = getelementptr inbounds %struct.Pt * %1 , i32 0 , i32 0 , !dbg !16 ; <double*> [#uses=1]
%3 = load double * %2 , align 8 , !dbg !16 ; <double> [#uses=1]
store double %3 , double * %0 , align 8 , !dbg !16
%4 = load double * %0 , align 8 , !dbg !16 ; <double> [#uses=1]
store double %4 , double * %retval , align 8 , !dbg !16
br label %return , !dbg !16
2010-01-26 08:09:58 +08:00
return: ; preds = %entry
2010-04-29 04:27:48 +08:00
%retval1 = load double * %retval , !dbg !16 ; <double> [#uses=1]
ret double %retval1 , !dbg !16
2010-01-26 08:09:58 +08:00
}
declare void @llvm.dbg.declare ( metadata , metadata ) nounwind readnone
2013-03-08 08:23:31 +08:00
!llvm.dbg.cu = ! { !3 }
!0 = metadata ! { i32 786689 , metadata !1 , metadata !"my_r0" , metadata !2 , i32 11 , metadata !7 , i32 0 , null } ; [ DW_TAG_arg_variable ]
2013-03-12 06:37:40 +08:00
!1 = metadata ! { i32 786478 , i32 0 , metadata !2 , metadata !"foo" , metadata !"foo" , metadata !"foo" , metadata !2 , i32 11 , metadata !4 , i1 false , i1 true , i32 0 , i32 0 , null , i32 0 , i1 false , double ( %struct.Rect * ) * @foo , null , null , null , i32 11 } ; [ DW_TAG_subprogram ]
2013-03-18 05:13:55 +08:00
!2 = metadata ! { i32 786473 , metadata !19 } ; [ DW_TAG_file_type ]
2013-03-13 08:01:35 +08:00
!3 = metadata ! { i32 786449 , i32 0 , i32 1 , metadata !2 , metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build)" , i1 false , metadata !"" , i32 0 , null , null , metadata !18 , null , metadata !"" } ; [ DW_TAG_compile_unit ]
2013-03-20 07:25:22 +08:00
!4 = metadata ! { i32 786453 , metadata !2 , metadata !2 , metadata !"" , i32 0 , i64 0 , i64 0 , i64 0 , i32 0 , null , metadata !5 , i32 0 , null } ; [ DW_TAG_subroutine_type ]
2010-04-29 04:27:48 +08:00
!5 = metadata ! { metadata !6 , metadata !7 }
2013-03-20 07:25:22 +08:00
!6 = metadata ! { i32 786468 , metadata !2 , metadata !2 , metadata !"double" , i32 0 , i64 64 , i64 64 , i64 0 , i32 0 , i32 4 } ; [ DW_TAG_base_type ]
!7 = metadata ! { i32 786451 , metadata !2 , metadata !2 , metadata !"Rect" , i32 6 , i64 256 , i64 64 , i64 0 , i32 0 , null , metadata !8 , i32 0 , null } ; [ DW_TAG_structure_type ]
2010-04-29 04:27:48 +08:00
!8 = metadata ! { metadata !9 , metadata !14 }
2013-03-20 07:25:22 +08:00
!9 = metadata ! { i32 786445 , metadata !2 , metadata !7 , metadata !"P1" , i32 7 , i64 128 , i64 64 , i64 0 , i32 0 , metadata !10 } ; [ DW_TAG_member ]
!10 = metadata ! { i32 786451 , metadata !2 , metadata !2 , metadata !"Pt" , i32 1 , i64 128 , i64 64 , i64 0 , i32 0 , null , metadata !11 , i32 0 , null } ; [ DW_TAG_structure_type ]
2010-04-29 04:27:48 +08:00
!11 = metadata ! { metadata !12 , metadata !13 }
2013-03-20 07:25:22 +08:00
!12 = metadata ! { i32 786445 , metadata !2 , metadata !10 , metadata !"x" , i32 2 , i64 64 , i64 64 , i64 0 , i32 0 , metadata !6 } ; [ DW_TAG_member ]
!13 = metadata ! { i32 786445 , metadata !2 , metadata !10 , metadata !"y" , i32 3 , i64 64 , i64 64 , i64 64 , i32 0 , metadata !6 } ; [ DW_TAG_member ]
!14 = metadata ! { i32 786445 , metadata !2 , metadata !7 , metadata !"P2" , i32 8 , i64 128 , i64 64 , i64 128 , i32 0 , metadata !10 } ; [ DW_TAG_member ]
2010-04-29 04:27:48 +08:00
!15 = metadata ! { i32 11 , i32 0 , metadata !1 , null }
!16 = metadata ! { i32 12 , i32 0 , metadata !17 , null }
2013-03-08 08:23:31 +08:00
!17 = metadata ! { i32 786443 , metadata !1 , i32 11 , i32 0 } ; [ DW_TAG_lexical_block ]
2013-03-18 05:13:55 +08:00
!18 = metadata ! { metadata !1 }
!19 = metadata ! { metadata !"b2.c" , metadata !"/tmp/" }