1 ; RUN: llc %s -mtriple=x86_64-unknown-linux-gnu -o /dev/null 2 3 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" 4 target triple = "x86_64-unknown-linux-gnu" 5 6 %class.function = type { i8 } 7 %class.BPLFunctionWriter = type { %struct.BPLModuleWriter* } 8 %struct.BPLModuleWriter = type { i8 } 9 %class.anon = type { i8 } 10 %class.anon.0 = type { i8 } 11 12 @"_ZN8functionIFvvEEC1IZN17BPLFunctionWriter9writeExprEvE3$_1_0EET_" = internal alias void (%class.function*), void (%class.function*)* @"_ZN8functionIFvvEEC2IZN17BPLFunctionWriter9writeExprEvE3$_1_0EET_" 13 @"_ZN8functionIFvvEEC1IZN17BPLFunctionWriter9writeExprEvE3$_0EET_" = internal alias void (%class.function*), void (%class.function*)* @"_ZN8functionIFvvEEC2IZN17BPLFunctionWriter9writeExprEvE3$_0EET_" 14 15 define void @_ZN17BPLFunctionWriter9writeExprEv(%class.BPLFunctionWriter* %this) nounwind uwtable align 2 !dbg !5 { 16 entry: 17 %this.addr = alloca %class.BPLFunctionWriter*, align 8 18 %agg.tmp = alloca %class.function, align 1 19 %agg.tmp2 = alloca %class.anon, align 1 20 %agg.tmp4 = alloca %class.function, align 1 21 %agg.tmp5 = alloca %class.anon.0, align 1 22 store %class.BPLFunctionWriter* %this, %class.BPLFunctionWriter** %this.addr, align 8 23 call void @llvm.dbg.declare(metadata %class.BPLFunctionWriter** %this.addr, metadata !133, metadata !DIExpression()), !dbg !135 24 %this1 = load %class.BPLFunctionWriter*, %class.BPLFunctionWriter** %this.addr 25 %MW = getelementptr inbounds %class.BPLFunctionWriter, %class.BPLFunctionWriter* %this1, i32 0, i32 0, !dbg !136 26 %0 = load %struct.BPLModuleWriter*, %struct.BPLModuleWriter** %MW, align 8, !dbg !136 27 call void @"_ZN8functionIFvvEEC1IZN17BPLFunctionWriter9writeExprEvE3$_0EET_"(%class.function* %agg.tmp), !dbg !136 28 call void @_ZN15BPLModuleWriter14writeIntrinsicE8functionIFvvEE(%struct.BPLModuleWriter* %0), !dbg !136 29 %MW3 = getelementptr inbounds %class.BPLFunctionWriter, %class.BPLFunctionWriter* %this1, i32 0, i32 0, !dbg !138 30 %1 = load %struct.BPLModuleWriter*, %struct.BPLModuleWriter** %MW3, align 8, !dbg !138 31 call void @"_ZN8functionIFvvEEC1IZN17BPLFunctionWriter9writeExprEvE3$_1_0EET_"(%class.function* %agg.tmp4), !dbg !138 32 call void @_ZN15BPLModuleWriter14writeIntrinsicE8functionIFvvEE(%struct.BPLModuleWriter* %1), !dbg !138 33 ret void, !dbg !139 34 } 35 36 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone 37 38 declare void @_ZN15BPLModuleWriter14writeIntrinsicE8functionIFvvEE(%struct.BPLModuleWriter*) 39 40 define internal void @"_ZN8functionIFvvEEC2IZN17BPLFunctionWriter9writeExprEvE3$_1_0EET_"(%class.function* %this) unnamed_addr nounwind uwtable align 2 { 41 entry: 42 %this.addr = alloca %class.function*, align 8 43 %__f = alloca %class.anon.0, align 1 44 store %class.function* %this, %class.function** %this.addr, align 8 45 call void @llvm.dbg.declare(metadata %class.function** %this.addr, metadata !140, metadata !DIExpression()), !dbg !142 46 call void @llvm.dbg.declare(metadata %class.anon.0* %__f, metadata !143, metadata !DIExpression()), !dbg !144 47 %this1 = load %class.function*, %class.function** %this.addr 48 call void @"_ZN13_Base_manager21_M_not_empty_functionIZN17BPLFunctionWriter9writeExprEvE3$_1_0EEvRKT_"(%class.anon.0* %__f), !dbg !145 49 ret void, !dbg !147 50 } 51 52 define internal void @"_ZN13_Base_manager21_M_not_empty_functionIZN17BPLFunctionWriter9writeExprEvE3$_1_0EEvRKT_"(%class.anon.0*) nounwind uwtable align 2 { 53 entry: 54 %.addr = alloca %class.anon.0*, align 8 55 store %class.anon.0* %0, %class.anon.0** %.addr, align 8 56 ret void, !dbg !148 57 } 58 59 define internal void @"_ZN8functionIFvvEEC2IZN17BPLFunctionWriter9writeExprEvE3$_0EET_"(%class.function* %this) unnamed_addr nounwind uwtable align 2 { 60 entry: 61 %this.addr = alloca %class.function*, align 8 62 %__f = alloca %class.anon, align 1 63 store %class.function* %this, %class.function** %this.addr, align 8 64 call void @llvm.dbg.declare(metadata %class.function** %this.addr, metadata !150, metadata !DIExpression()), !dbg !151 65 call void @llvm.dbg.declare(metadata %class.anon* %__f, metadata !152, metadata !DIExpression()), !dbg !153 66 %this1 = load %class.function*, %class.function** %this.addr 67 call void @"_ZN13_Base_manager21_M_not_empty_functionIZN17BPLFunctionWriter9writeExprEvE3$_0EEvRKT_"(%class.anon* %__f), !dbg !154 68 ret void, !dbg !156 69 } 70 71 define internal void @"_ZN13_Base_manager21_M_not_empty_functionIZN17BPLFunctionWriter9writeExprEvE3$_0EEvRKT_"(%class.anon*) nounwind uwtable align 2 { 72 entry: 73 %.addr = alloca %class.anon*, align 8 74 store %class.anon* %0, %class.anon** %.addr, align 8 75 ret void, !dbg !157 76 } 77 78 !llvm.dbg.cu = !{!0} 79 !llvm.module.flags = !{!162} 80 81 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.2 ", isOptimized: false, emissionKind: 0, file: !161, enums: !1, retainedTypes: !1, subprograms: !3, globals: !128) 82 !1 = !{} 83 !3 = !{!5, !106, !107, !126, !127} 84 !5 = distinct !DISubprogram(name: "writeExpr", linkageName: "_ZN17BPLFunctionWriter9writeExprEv", line: 19, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 19, file: !6, scope: null, type: !7, declaration: !103, variables: !1) 85 !6 = !DIFile(filename: "BPLFunctionWriter2.ii", directory: "/home/peter/crashdelta") 86 !7 = !DISubroutineType(types: !8) 87 !8 = !{null, !9} 88 !9 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, baseType: !10) 89 !10 = !DICompositeType(tag: DW_TAG_class_type, name: "BPLFunctionWriter", line: 15, size: 64, align: 64, file: !160, elements: !11) 90 !11 = !{!12, !103} 91 !12 = !DIDerivedType(tag: DW_TAG_member, name: "MW", line: 16, size: 64, align: 64, flags: DIFlagPrivate, file: !160, scope: !10, baseType: !13) 92 !13 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !14) 93 !14 = !DICompositeType(tag: DW_TAG_class_type, name: "BPLModuleWriter", line: 12, size: 8, align: 8, file: !160, elements: !15) 94 !15 = !{!16} 95 !16 = !DISubprogram(name: "writeIntrinsic", linkageName: "_ZN15BPLModuleWriter14writeIntrinsicE8functionIFvvEE", line: 13, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 13, file: !6, scope: !14, type: !17) 96 !17 = !DISubroutineType(types: !18) 97 !18 = !{null, !19, !20} 98 !19 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, baseType: !14) 99 !20 = !DICompositeType(tag: DW_TAG_class_type, name: "function<void ()>", line: 6, size: 8, align: 8, file: !160, elements: !21, templateParams: !97) 100 !21 = !{!22, !51, !58, !86, !92} 101 !22 = !DISubprogram(name: "function<BPLFunctionWriter::<lambda at BPLFunctionWriter2.ii:20:36> >", line: 8, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 8, file: !6, scope: !20, type: !23, templateParams: !47) 102 !23 = !DISubroutineType(types: !24) 103 !24 = !{null, !25, !26} 104 !25 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, baseType: !20) 105 !26 = !DICompositeType(tag: DW_TAG_class_type, line: 20, size: 8, align: 8, file: !160, scope: !5, elements: !27) 106 !27 = !{!28, !35, !41} 107 !28 = !DISubprogram(name: "operator()", line: 20, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 20, file: !6, scope: !26, type: !29) 108 !29 = !DISubroutineType(types: !30) 109 !30 = !{null, !31} 110 !31 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, baseType: !32) 111 !32 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !26) 112 !35 = !DISubprogram(name: "~", line: 20, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false, scopeLine: 20, file: !6, scope: !26, type: !36) 113 !36 = !DISubroutineType(types: !37) 114 !37 = !{null, !38} 115 !38 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, baseType: !26) 116 !41 = !DISubprogram(name: "", line: 20, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false, scopeLine: 20, file: !6, scope: !26, type: !42) 117 !42 = !DISubroutineType(types: !43) 118 !43 = !{null, !38, !44} 119 !44 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !26) 120 !47 = !{!48} 121 !48 = !DITemplateTypeParameter(name: "_Functor", type: !26) 122 !51 = !DISubprogram(name: "function<function<void ()> >", line: 8, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 8, file: !6, scope: !20, type: !52, templateParams: !54) 123 !52 = !DISubroutineType(types: !53) 124 !53 = !{null, !25, !20} 125 !54 = !{!55} 126 !55 = !DITemplateTypeParameter(name: "_Functor", type: !20) 127 !58 = !DISubprogram(name: "function<BPLFunctionWriter::<lambda at BPLFunctionWriter2.ii:23:36> >", line: 8, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 8, file: !6, scope: !20, type: !59, templateParams: !82) 128 !59 = !DISubroutineType(types: !60) 129 !60 = !{null, !25, !61} 130 !61 = !DICompositeType(tag: DW_TAG_class_type, line: 23, size: 8, align: 8, file: !160, scope: !5, elements: !62) 131 !62 = !{!63, !70, !76} 132 !63 = !DISubprogram(name: "operator()", line: 23, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 23, file: !6, scope: !61, type: !64) 133 !64 = !DISubroutineType(types: !65) 134 !65 = !{null, !66} 135 !66 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, baseType: !67) 136 !67 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !61) 137 !70 = !DISubprogram(name: "~", line: 23, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false, scopeLine: 23, file: !6, scope: !61, type: !71) 138 !71 = !DISubroutineType(types: !72) 139 !72 = !{null, !73} 140 !73 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, baseType: !61) 141 !76 = !DISubprogram(name: "", line: 23, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false, scopeLine: 23, file: !6, scope: !61, type: !77) 142 !77 = !DISubroutineType(types: !78) 143 !78 = !{null, !73, !79} 144 !79 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !61) 145 !82 = !{!83} 146 !83 = !DITemplateTypeParameter(name: "_Functor", type: !61) 147 !86 = !DISubprogram(name: "function", line: 6, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false, scopeLine: 6, file: !6, scope: !20, type: !87) 148 !87 = !DISubroutineType(types: !88) 149 !88 = !{null, !25, !89} 150 !89 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !20) 151 !92 = !DISubprogram(name: "~function", line: 6, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false, scopeLine: 6, file: !6, scope: !20, type: !93) 152 !93 = !DISubroutineType(types: !94) 153 !94 = !{null, !25} 154 !97 = !{!98} 155 !98 = !DITemplateTypeParameter(name: "T", type: !99) 156 !99 = !DISubroutineType(types: !100) 157 !100 = !{null} 158 !103 = !DISubprogram(name: "writeExpr", linkageName: "_ZN17BPLFunctionWriter9writeExprEv", line: 17, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrivate | DIFlagPrototyped, isOptimized: false, scopeLine: 17, file: !6, scope: !10, type: !7) 159 !106 = distinct !DISubprogram(name: "function<BPLFunctionWriter::<lambda at BPLFunctionWriter2.ii:23:36> >", linkageName: "_ZN8functionIFvvEEC2IZN17BPLFunctionWriter9writeExprEvE3$_1_0EET_", line: 8, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 8, file: !6, scope: null, type: !59, templateParams: !82, declaration: !58, variables: !1) 160 !107 = distinct !DISubprogram(name: "_M_not_empty_function<BPLFunctionWriter::<lambda at BPLFunctionWriter2.ii:23:36> >", linkageName: "_ZN13_Base_manager21_M_not_empty_functionIZN17BPLFunctionWriter9writeExprEvE3$_1_0EEvRKT_", line: 3, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !6, scope: null, type: !108, templateParams: !111, declaration: !113, variables: !1) 161 !108 = !DISubroutineType(types: !109) 162 !109 = !{null, !110} 163 !110 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !61) 164 !111 = !{!112} 165 !112 = !DITemplateTypeParameter(name: "_Tp", type: !61) 166 !113 = !DISubprogram(name: "_M_not_empty_function<BPLFunctionWriter::<lambda at BPLFunctionWriter2.ii:23:36> >", linkageName: "_ZN13_Base_manager21_M_not_empty_functionIZN17BPLFunctionWriter9writeExprEvE3$_1_0EEvRKT_", line: 3, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !6, scope: !114, type: !108, templateParams: !111) 167 !114 = !DICompositeType(tag: DW_TAG_class_type, name: "_Base_manager", line: 1, size: 8, align: 8, file: !160, elements: !115) 168 !115 = !{!116, !113} 169 !116 = !DISubprogram(name: "_M_not_empty_function<BPLFunctionWriter::<lambda at BPLFunctionWriter2.ii:20:36> >", linkageName: "_ZN13_Base_manager21_M_not_empty_functionIZN17BPLFunctionWriter9writeExprEvE3$_0EEvRKT_", line: 3, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !6, scope: !114, type: !117, templateParams: !120) 170 !117 = !DISubroutineType(types: !118) 171 !118 = !{null, !119} 172 !119 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !26) 173 !120 = !{!121} 174 !121 = !DITemplateTypeParameter(name: "_Tp", type: !26) 175 !126 = distinct !DISubprogram(name: "function<BPLFunctionWriter::<lambda at BPLFunctionWriter2.ii:20:36> >", linkageName: "_ZN8functionIFvvEEC2IZN17BPLFunctionWriter9writeExprEvE3$_0EET_", line: 8, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 8, file: !6, scope: null, type: !23, templateParams: !47, declaration: !22, variables: !1) 176 !127 = distinct !DISubprogram(name: "_M_not_empty_function<BPLFunctionWriter::<lambda at BPLFunctionWriter2.ii:20:36> >", linkageName: "_ZN13_Base_manager21_M_not_empty_functionIZN17BPLFunctionWriter9writeExprEvE3$_0EEvRKT_", line: 3, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !6, scope: null, type: !117, templateParams: !120, declaration: !116, variables: !1) 177 !128 = !{!130} 178 !130 = !DIGlobalVariable(name: "__stored_locally", linkageName: "__stored_locally", line: 2, isLocal: true, isDefinition: true, scope: !114, file: !6, type: !131, variable: i1 1) 179 !131 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !132) 180 !132 = !DIBasicType(tag: DW_TAG_base_type, name: "bool", size: 8, align: 8, encoding: DW_ATE_boolean) 181 !133 = !DILocalVariable(name: "this", line: 19, arg: 1, flags: DIFlagArtificial, scope: !5, file: !6, type: !134) 182 !134 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !10) 183 !135 = !DILocation(line: 19, column: 39, scope: !5) 184 !136 = !DILocation(line: 20, column: 17, scope: !137) 185 !137 = distinct !DILexicalBlock(line: 19, column: 51, file: !6, scope: !5) 186 !138 = !DILocation(line: 23, column: 17, scope: !137) 187 !139 = !DILocation(line: 26, column: 15, scope: !137) 188 !140 = !DILocalVariable(name: "this", line: 8, arg: 1, flags: DIFlagArtificial, scope: !106, file: !6, type: !141) 189 !141 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !20) 190 !142 = !DILocation(line: 8, column: 45, scope: !106) 191 !143 = !DILocalVariable(name: "__f", line: 8, arg: 2, scope: !106, file: !6, type: !61) 192 !144 = !DILocation(line: 8, column: 63, scope: !106) 193 !145 = !DILocation(line: 9, column: 9, scope: !146) 194 !146 = distinct !DILexicalBlock(line: 8, column: 81, file: !6, scope: !106) 195 !147 = !DILocation(line: 10, column: 13, scope: !146) 196 !148 = !DILocation(line: 4, column: 5, scope: !149) 197 !149 = distinct !DILexicalBlock(line: 3, column: 105, file: !6, scope: !107) 198 !150 = !DILocalVariable(name: "this", line: 8, arg: 1, flags: DIFlagArtificial, scope: !126, file: !6, type: !141) 199 !151 = !DILocation(line: 8, column: 45, scope: !126) 200 !152 = !DILocalVariable(name: "__f", line: 8, arg: 2, scope: !126, file: !6, type: !26) 201 !153 = !DILocation(line: 8, column: 63, scope: !126) 202 !154 = !DILocation(line: 9, column: 9, scope: !155) 203 !155 = distinct !DILexicalBlock(line: 8, column: 81, file: !6, scope: !126) 204 !156 = !DILocation(line: 10, column: 13, scope: !155) 205 !157 = !DILocation(line: 4, column: 5, scope: !158) 206 !158 = distinct !DILexicalBlock(line: 3, column: 105, file: !6, scope: !127) 207 !159 = !DIFile(filename: "BPLFunctionWriter.cpp", directory: "/home/peter/crashdelta") 208 !160 = !DIFile(filename: "BPLFunctionWriter2.ii", directory: "/home/peter/crashdelta") 209 !161 = !DIFile(filename: "BPLFunctionWriter.cpp", directory: "/home/peter/crashdelta") 210 !162 = !{i32 1, !"Debug Info Version", i32 3} 211