1232897feSAdrian Prantl; ModuleID = 'array.c'
2232897feSAdrian Prantl;
3232897feSAdrian Prantl; From (clang -g -c -O0):
4232897feSAdrian Prantl;
5232897feSAdrian Prantl; void f(int* p) {
6232897feSAdrian Prantl;   p[0] = 42;
7232897feSAdrian Prantl; }
8232897feSAdrian Prantl;
9232897feSAdrian Prantl; int main(int argc, char** argv) {
10232897feSAdrian Prantl;   int array[4] = { 0, 1, 2, 3 };
11232897feSAdrian Prantl;   f(array);
12232897feSAdrian Prantl;   return array[0];
13232897feSAdrian Prantl; }
14232897feSAdrian Prantl;
15232897feSAdrian Prantl; RUN: opt %s -O2 -S -o - | FileCheck %s
16232897feSAdrian Prantl; Test that we do not lower dbg.declares for arrays.
17232897feSAdrian Prantl;
18232897feSAdrian Prantl; CHECK: define i32 @main
19232897feSAdrian Prantl; CHECK: call void @llvm.dbg.value
20232897feSAdrian Prantl; CHECK: call void @llvm.dbg.value
21232897feSAdrian Prantl; CHECK: call void @llvm.dbg.declare
22232897feSAdrian Prantltarget datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
23232897feSAdrian Prantltarget triple = "x86_64-apple-macosx10.9.0"
24232897feSAdrian Prantl
25232897feSAdrian Prantl@main.array = private unnamed_addr constant [4 x i32] [i32 0, i32 1, i32 2, i32 3], align 16
26232897feSAdrian Prantl
27232897feSAdrian Prantl; Function Attrs: nounwind ssp uwtable
28232897feSAdrian Prantldefine void @f(i32* %p) #0 {
29232897feSAdrian Prantlentry:
30232897feSAdrian Prantl  %p.addr = alloca i32*, align 8
31232897feSAdrian Prantl  store i32* %p, i32** %p.addr, align 8
32*87b7eb9dSAdrian Prantl  call void @llvm.dbg.declare(metadata !{i32** %p.addr}, metadata !19, metadata !{i32 786690}), !dbg !20
33232897feSAdrian Prantl  %0 = load i32** %p.addr, align 8, !dbg !21
34232897feSAdrian Prantl  %arrayidx = getelementptr inbounds i32* %0, i64 0, !dbg !21
35232897feSAdrian Prantl  store i32 42, i32* %arrayidx, align 4, !dbg !21
36232897feSAdrian Prantl  ret void, !dbg !22
37232897feSAdrian Prantl}
38232897feSAdrian Prantl
39232897feSAdrian Prantl; Function Attrs: nounwind readnone
40*87b7eb9dSAdrian Prantldeclare void @llvm.dbg.declare(metadata, metadata, metadata) #1
41232897feSAdrian Prantl
42232897feSAdrian Prantl; Function Attrs: nounwind ssp uwtable
43232897feSAdrian Prantldefine i32 @main(i32 %argc, i8** %argv) #0 {
44232897feSAdrian Prantlentry:
45232897feSAdrian Prantl  %retval = alloca i32, align 4
46232897feSAdrian Prantl  %argc.addr = alloca i32, align 4
47232897feSAdrian Prantl  %argv.addr = alloca i8**, align 8
48232897feSAdrian Prantl  %array = alloca [4 x i32], align 16
49232897feSAdrian Prantl  store i32 0, i32* %retval
50232897feSAdrian Prantl  store i32 %argc, i32* %argc.addr, align 4
51*87b7eb9dSAdrian Prantl  call void @llvm.dbg.declare(metadata !{i32* %argc.addr}, metadata !23, metadata !{i32 786690}), !dbg !24
52232897feSAdrian Prantl  store i8** %argv, i8*** %argv.addr, align 8
53*87b7eb9dSAdrian Prantl  call void @llvm.dbg.declare(metadata !{i8*** %argv.addr}, metadata !25, metadata !{i32 786690}), !dbg !24
54*87b7eb9dSAdrian Prantl  call void @llvm.dbg.declare(metadata !{[4 x i32]* %array}, metadata !26, metadata !{i32 786690}), !dbg !30
55232897feSAdrian Prantl  %0 = bitcast [4 x i32]* %array to i8*, !dbg !30
56232897feSAdrian Prantl  call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* bitcast ([4 x i32]* @main.array to i8*), i64 16, i32 16, i1 false), !dbg !30
57232897feSAdrian Prantl  %arraydecay = getelementptr inbounds [4 x i32]* %array, i32 0, i32 0, !dbg !31
58232897feSAdrian Prantl  call void @f(i32* %arraydecay), !dbg !31
59232897feSAdrian Prantl  %arrayidx = getelementptr inbounds [4 x i32]* %array, i32 0, i64 0, !dbg !32
60232897feSAdrian Prantl  %1 = load i32* %arrayidx, align 4, !dbg !32
61232897feSAdrian Prantl  ret i32 %1, !dbg !32
62232897feSAdrian Prantl}
63232897feSAdrian Prantl
64232897feSAdrian Prantl; Function Attrs: nounwind
65232897feSAdrian Prantldeclare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #2
66232897feSAdrian Prantl
67232897feSAdrian Prantlattributes #0 = { nounwind ssp uwtable }
68232897feSAdrian Prantlattributes #1 = { nounwind readnone }
69232897feSAdrian Prantlattributes #2 = { nounwind }
70232897feSAdrian Prantl
71232897feSAdrian Prantl!llvm.dbg.cu = !{!0}
72232897feSAdrian Prantl!llvm.module.flags = !{!16, !17}
73232897feSAdrian Prantl!llvm.ident = !{!18}
74232897feSAdrian Prantl
75232897feSAdrian Prantl!0 = metadata !{i32 786449, metadata !1, i32 12, metadata !"clang version 3.5.0 ", i1 false, metadata !"", i32 0, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2, metadata !"", i32 1} ; [ DW_TAG_compile_unit ] [array.c] [DW_LANG_C99]
76232897feSAdrian Prantl!1 = metadata !{metadata !"array.c", metadata !""}
77232897feSAdrian Prantl!2 = metadata !{}
78232897feSAdrian Prantl!3 = metadata !{metadata !4, metadata !10}
79232897feSAdrian Prantl!4 = metadata !{i32 786478, metadata !1, metadata !5, metadata !"f", metadata !"f", metadata !"", i32 1, metadata !6, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, void (i32*)* @f, null, null, metadata !2, i32 1} ; [ DW_TAG_subprogram ] [line 1] [def] [f]
80232897feSAdrian Prantl!5 = metadata !{i32 786473, metadata !1}          ; [ DW_TAG_file_type ] [array.c]
81232897feSAdrian Prantl!6 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !7, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
82232897feSAdrian Prantl!7 = metadata !{null, metadata !8}
83232897feSAdrian Prantl!8 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 0, metadata !9} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from int]
84232897feSAdrian Prantl!9 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]
85232897feSAdrian Prantl!10 = metadata !{i32 786478, metadata !1, metadata !5, metadata !"main", metadata !"main", metadata !"", i32 5, metadata !11, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, i32 (i32, i8**)* @main, null, null, metadata !2, i32 5} ; [ DW_TAG_subprogram ] [line 5] [def] [main]
86232897feSAdrian Prantl!11 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !12, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
87232897feSAdrian Prantl!12 = metadata !{metadata !9, metadata !9, metadata !13}
88232897feSAdrian Prantl!13 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 0, metadata !14} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from ]
89232897feSAdrian Prantl!14 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 0, metadata !15} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from char]
90232897feSAdrian Prantl!15 = metadata !{i32 786468, null, null, metadata !"char", i32 0, i64 8, i64 8, i64 0, i32 0, i32 6} ; [ DW_TAG_base_type ] [char] [line 0, size 8, align 8, offset 0, enc DW_ATE_signed_char]
91232897feSAdrian Prantl!16 = metadata !{i32 2, metadata !"Dwarf Version", i32 2}
92232897feSAdrian Prantl!17 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
93232897feSAdrian Prantl!18 = metadata !{metadata !"clang version 3.5.0 "}
94232897feSAdrian Prantl!19 = metadata !{i32 786689, metadata !4, metadata !"p", metadata !5, i32 16777217, metadata !8, i32 0, i32 0} ; [ DW_TAG_arg_variable ] [p] [line 1]
95232897feSAdrian Prantl!20 = metadata !{i32 1, i32 0, metadata !4, null}
96232897feSAdrian Prantl!21 = metadata !{i32 2, i32 0, metadata !4, null}
97232897feSAdrian Prantl!22 = metadata !{i32 3, i32 0, metadata !4, null}
98232897feSAdrian Prantl!23 = metadata !{i32 786689, metadata !10, metadata !"argc", metadata !5, i32 16777221, metadata !9, i32 0, i32 0} ; [ DW_TAG_arg_variable ] [argc] [line 5]
99232897feSAdrian Prantl!24 = metadata !{i32 5, i32 0, metadata !10, null}
100232897feSAdrian Prantl!25 = metadata !{i32 786689, metadata !10, metadata !"argv", metadata !5, i32 33554437, metadata !13, i32 0, i32 0} ; [ DW_TAG_arg_variable ] [argv] [line 5]
101232897feSAdrian Prantl!26 = metadata !{i32 786688, metadata !10, metadata !"array", metadata !5, i32 6, metadata !27, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [array] [line 6]
102232897feSAdrian Prantl!27 = metadata !{i32 786433, null, null, metadata !"", i32 0, i64 128, i64 32, i32 0, i32 0, metadata !9, metadata !28, i32 0, null, null, null} ; [ DW_TAG_array_type ] [line 0, size 128, align 32, offset 0] [from int]
103232897feSAdrian Prantl!28 = metadata !{metadata !29}
104232897feSAdrian Prantl!29 = metadata !{i32 786465, i64 0, i64 4}        ; [ DW_TAG_subrange_type ] [0, 3]
105232897feSAdrian Prantl!30 = metadata !{i32 6, i32 0, metadata !10, null}
106232897feSAdrian Prantl!31 = metadata !{i32 7, i32 0, metadata !10, null}
107232897feSAdrian Prantl!32 = metadata !{i32 8, i32 0, metadata !10, null} ; [ DW_TAG_imported_declaration ]
108