Skip to content

Instantly share code, notes, and snippets.

@cramertj
Created July 31, 2018 16:07
Show Gist options
  • Save cramertj/67fa44410cdb9dad34540ed53b19030e to your computer and use it in GitHub Desktop.
Save cramertj/67fa44410cdb9dad34540ed53b19030e to your computer and use it in GitHub Desktop.
; ModuleID = '15uuiki9s1a8yvyu-58e698513a262007b3207a313c3d2e7f.rs'
source_filename = "15uuiki9s1a8yvyu-58e698513a262007b3207a313c3d2e7f.rs"
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-unknown-linux-gnu"
%Parser = type { [0 x i64], i64, [0 x i64], [16 x i64], [0 x i64], i64, [0 x i64], i64, [0 x i64], [16 x { i64, i64 }], [0 x i64], i64, [0 x i64], i64, [0 x i32], { i32, i8 }, [0 x i8], i8, [0 x i8], [2 x i8], [0 x i8], i8, [0 x i8], [1024 x i8], [0 x i8], i8, [3 x i8] }
@__rustc_debug_gdb_scripts_section__ = linkonce_odr unnamed_addr constant [34 x i8] c"\01gdb_load_rust_pretty_printers.py\00", section ".debug_gdb_scripts", align 1
; vte::Parser::new
; Function Attrs: uwtable
define void @_ZN3vte6Parser3new17h2e7632e6a11cd732E(%Parser* noalias nocapture sret dereferenceable(1464)) unnamed_addr #0 !dbg !38 {
start:
%_6 = alloca { i64, i64 }, align 8
%_5 = alloca [16 x { i64, i64 }], align 8
%_4 = alloca [1024 x i8], align 1
%_3 = alloca [16 x i64], align 8
%_2 = alloca [2 x i8], align 1
%_1 = alloca i8, align 1
store i8 12, i8* %_1, align 1, !dbg !79
%1 = getelementptr inbounds [2 x i8], [2 x i8]* %_2, i64 0, i64 0, !dbg !80
call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 2, i1 false), !dbg !80
%2 = getelementptr inbounds [16 x i64], [16 x i64]* %_3, i64 0, i64 0, !dbg !81
%3 = bitcast i64* %2 to i8*, !dbg !81
call void @llvm.memset.p0i8.i64(i8* align 8 %3, i8 0, i64 128, i1 false), !dbg !81
%4 = getelementptr inbounds [1024 x i8], [1024 x i8]* %_4, i64 0, i64 0, !dbg !82
call void @llvm.memset.p0i8.i64(i8* align 1 %4, i8 0, i64 1024, i1 false), !dbg !82
%5 = bitcast { i64, i64 }* %_6 to i64*, !dbg !83
store i64 0, i64* %5, align 8, !dbg !83
%6 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %_6, i32 0, i32 1, !dbg !83
store i64 0, i64* %6, align 8, !dbg !83
%7 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %_6, i32 0, i32 0, !dbg !84
%8 = load i64, i64* %7, align 8, !dbg !84
%9 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %_6, i32 0, i32 1, !dbg !84
%10 = load i64, i64* %9, align 8, !dbg !84
%11 = getelementptr inbounds [16 x { i64, i64 }], [16 x { i64, i64 }]* %_5, i64 0, i64 0, !dbg !84
%12 = getelementptr inbounds [16 x { i64, i64 }], [16 x { i64, i64 }]* %_5, i64 0, i64 16, !dbg !84
br label %repeat_loop_header, !dbg !84
bb1: ; preds = %repeat_loop_next
%13 = getelementptr inbounds %Parser, %Parser* %0, i32 0, i32 17, !dbg !85
%14 = load i8, i8* %_1, align 1, !dbg !85, !range !86
store i8 %14, i8* %13, align 1, !dbg !85
%15 = getelementptr inbounds %Parser, %Parser* %0, i32 0, i32 19, !dbg !85
%16 = bitcast [2 x i8]* %_2 to i8*, !dbg !85
%17 = bitcast [2 x i8]* %15 to i8*, !dbg !85
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %17, i8* align 1 %16, i64 2, i1 false), !dbg !85
%18 = bitcast %Parser* %0 to i64*, !dbg !85
store i64 0, i64* %18, align 8, !dbg !85
%19 = getelementptr inbounds %Parser, %Parser* %0, i32 0, i32 3, !dbg !85
%20 = bitcast [16 x i64]* %_3 to i8*, !dbg !85
%21 = bitcast [16 x i64]* %19 to i8*, !dbg !85
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %20, i64 128, i1 false), !dbg !85
%22 = getelementptr inbounds %Parser, %Parser* %0, i32 0, i32 5, !dbg !85
store i64 0, i64* %22, align 8, !dbg !85
%23 = getelementptr inbounds %Parser, %Parser* %0, i32 0, i32 21, !dbg !85
store i8 0, i8* %23, align 1, !dbg !85
%24 = getelementptr inbounds %Parser, %Parser* %0, i32 0, i32 7, !dbg !85
store i64 0, i64* %24, align 8, !dbg !85
%25 = getelementptr inbounds %Parser, %Parser* %0, i32 0, i32 23, !dbg !85
%26 = bitcast [1024 x i8]* %_4 to i8*, !dbg !85
%27 = bitcast [1024 x i8]* %25 to i8*, !dbg !85
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %27, i8* align 1 %26, i64 1024, i1 false), !dbg !85
%28 = getelementptr inbounds %Parser, %Parser* %0, i32 0, i32 9, !dbg !85
%29 = bitcast [16 x { i64, i64 }]* %_5 to i8*, !dbg !85
%30 = bitcast [16 x { i64, i64 }]* %28 to i8*, !dbg !85
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %30, i8* align 8 %29, i64 256, i1 false), !dbg !85
%31 = getelementptr inbounds %Parser, %Parser* %0, i32 0, i32 11, !dbg !85
store i64 0, i64* %31, align 8, !dbg !85
%32 = getelementptr inbounds %Parser, %Parser* %0, i32 0, i32 13, !dbg !85
store i64 0, i64* %32, align 8, !dbg !85
%33 = getelementptr inbounds %Parser, %Parser* %0, i32 0, i32 25, !dbg !85
store i8 0, i8* %33, align 1, !dbg !85
%34 = getelementptr inbounds %Parser, %Parser* %0, i32 0, i32 15, !dbg !85
%35 = getelementptr inbounds { i32, i8 }, { i32, i8 }* %34, i32 0, i32 0, !dbg !85
store i32 %43, i32* %35, align 4, !dbg !85
%36 = getelementptr inbounds { i32, i8 }, { i32, i8 }* %34, i32 0, i32 1, !dbg !85
store i8 %44, i8* %36, align 4, !dbg !85
ret void, !dbg !87
repeat_loop_header: ; preds = %repeat_loop_body, %start
%37 = phi { i64, i64 }* [ %11, %start ], [ %41, %repeat_loop_body ]
%38 = icmp ne { i64, i64 }* %37, %12
br i1 %38, label %repeat_loop_body, label %repeat_loop_next
repeat_loop_body: ; preds = %repeat_loop_header
%39 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %37, i32 0, i32 0
store i64 %8, i64* %39, align 8
%40 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %37, i32 0, i32 1
store i64 %10, i64* %40, align 8
%41 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %37, i64 1
br label %repeat_loop_header
repeat_loop_next: ; preds = %repeat_loop_header
; call utf8parse::Parser::new
%42 = call { i32, i8 } @_ZN9utf8parse6Parser3new17hf932e0a5afe8d4e8E(), !dbg !88
%43 = extractvalue { i32, i8 } %42, 0, !dbg !88
%44 = extractvalue { i32, i8 } %42, 1, !dbg !88
br label %bb1, !dbg !88
}
; utf8parse::Parser::new
declare { i32, i8 } @_ZN9utf8parse6Parser3new17hf932e0a5afe8d4e8E() unnamed_addr
; Function Attrs: argmemonly nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1) #1
; Function Attrs: argmemonly nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) #1
attributes #0 = { uwtable }
attributes #1 = { argmemonly nounwind }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!37}
!0 = distinct !DICompileUnit(language: DW_LANG_Rust, file: !1, producer: "clang LLVM (rustc version 1.29.0-nightly (866a71325 2018-07-29))", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
!1 = !DIFile(filename: "src/lib.rs", directory: "/usr/local/google/home/cramertj/src/vte")
!2 = !{!3, !25}
!3 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "State", scope: !5, file: !4, baseType: !7, size: 8, align: 8, elements: !8)
!4 = !DIFile(filename: "<unknown>", directory: "")
!5 = !DINamespace(name: "definitions", scope: !6)
!6 = !DINamespace(name: "vte", scope: null)
!7 = !DIBasicType(name: "u8", size: 8, encoding: DW_ATE_unsigned)
!8 = !{!9, !10, !11, !12, !13, !14, !15, !16, !17, !18, !19, !20, !21, !22, !23, !24}
!9 = !DIEnumerator(name: "Anywhere", value: 0)
!10 = !DIEnumerator(name: "CsiEntry", value: 1)
!11 = !DIEnumerator(name: "CsiIgnore", value: 2)
!12 = !DIEnumerator(name: "CsiIntermediate", value: 3)
!13 = !DIEnumerator(name: "CsiParam", value: 4)
!14 = !DIEnumerator(name: "DcsEntry", value: 5)
!15 = !DIEnumerator(name: "DcsIgnore", value: 6)
!16 = !DIEnumerator(name: "DcsIntermediate", value: 7)
!17 = !DIEnumerator(name: "DcsParam", value: 8)
!18 = !DIEnumerator(name: "DcsPassthrough", value: 9)
!19 = !DIEnumerator(name: "Escape", value: 10)
!20 = !DIEnumerator(name: "EscapeIntermediate", value: 11)
!21 = !DIEnumerator(name: "Ground", value: 12)
!22 = !DIEnumerator(name: "OscString", value: 13)
!23 = !DIEnumerator(name: "SosPmApcString", value: 14)
!24 = !DIEnumerator(name: "Utf8", value: 15)
!25 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "State", scope: !26, file: !4, baseType: !7, size: 8, align: 8, elements: !28)
!26 = !DINamespace(name: "types", scope: !27)
!27 = !DINamespace(name: "utf8parse", scope: null)
!28 = !{!29, !30, !31, !32, !33, !34, !35, !36}
!29 = !DIEnumerator(name: "Ground", value: 0)
!30 = !DIEnumerator(name: "Tail3", value: 1)
!31 = !DIEnumerator(name: "Tail2", value: 2)
!32 = !DIEnumerator(name: "Tail1", value: 3)
!33 = !DIEnumerator(name: "U3_2_e0", value: 4)
!34 = !DIEnumerator(name: "U3_2_ed", value: 5)
!35 = !DIEnumerator(name: "Utf8_4_3_f0", value: 6)
!36 = !DIEnumerator(name: "Utf8_4_3_f4", value: 7)
!37 = !{i32 2, !"Debug Info Version", i32 3}
!38 = distinct !DISubprogram(name: "new", linkageName: "_ZN3vte6Parser3new17h2e7632e6a11cd732E", scope: !39, file: !1, line: 104, type: !76, isLocal: false, isDefinition: true, scopeLine: 104, flags: DIFlagPrototyped, isOptimized: false, unit: !0, templateParams: !78, retainedNodes: !78)
!39 = !DICompositeType(tag: DW_TAG_structure_type, name: "Parser", scope: !6, file: !4, size: 11712, align: 64, elements: !40, identifier: "643047f8941fcd93de84b66fdc36b41")
!40 = !{!41, !42, !46, !48, !53, !54, !56, !57, !61, !67, !68, !69, !70}
!41 = !DIDerivedType(tag: DW_TAG_member, name: "state", scope: !39, file: !4, baseType: !3, size: 8, align: 8, offset: 3456)
!42 = !DIDerivedType(tag: DW_TAG_member, name: "intermediates", scope: !39, file: !4, baseType: !43, size: 16, align: 8, offset: 3464)
!43 = !DICompositeType(tag: DW_TAG_array_type, baseType: !7, size: 16, align: 8, elements: !44)
!44 = !{!45}
!45 = !DISubrange(count: 2)
!46 = !DIDerivedType(tag: DW_TAG_member, name: "intermediate_idx", scope: !39, file: !4, baseType: !47, size: 64, align: 64)
!47 = !DIBasicType(name: "usize", size: 64, encoding: DW_ATE_unsigned)
!48 = !DIDerivedType(tag: DW_TAG_member, name: "params", scope: !39, file: !4, baseType: !49, size: 1024, align: 64, offset: 64)
!49 = !DICompositeType(tag: DW_TAG_array_type, baseType: !50, size: 1024, align: 64, elements: !51)
!50 = !DIBasicType(name: "i64", size: 64, encoding: DW_ATE_signed)
!51 = !{!52}
!52 = !DISubrange(count: 16)
!53 = !DIDerivedType(tag: DW_TAG_member, name: "param", scope: !39, file: !4, baseType: !50, size: 64, align: 64, offset: 1088)
!54 = !DIDerivedType(tag: DW_TAG_member, name: "collecting_param", scope: !39, file: !4, baseType: !55, size: 8, align: 8, offset: 3480)
!55 = !DIBasicType(name: "bool", size: 8, encoding: DW_ATE_boolean)
!56 = !DIDerivedType(tag: DW_TAG_member, name: "num_params", scope: !39, file: !4, baseType: !47, size: 64, align: 64, offset: 1152)
!57 = !DIDerivedType(tag: DW_TAG_member, name: "osc_raw", scope: !39, file: !4, baseType: !58, size: 8192, align: 8, offset: 3488)
!58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !7, size: 8192, align: 8, elements: !59)
!59 = !{!60}
!60 = !DISubrange(count: 1024)
!61 = !DIDerivedType(tag: DW_TAG_member, name: "osc_params", scope: !39, file: !4, baseType: !62, size: 2048, align: 64, offset: 1216)
!62 = !DICompositeType(tag: DW_TAG_array_type, baseType: !63, size: 2048, align: 64, elements: !51)
!63 = !DICompositeType(tag: DW_TAG_structure_type, name: "(usize, usize)", file: !4, size: 128, align: 64, elements: !64, identifier: "8b2e86271f2e1a2388b742d0d050a305")
!64 = !{!65, !66}
!65 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !63, file: !4, baseType: !47, size: 64, align: 64)
!66 = !DIDerivedType(tag: DW_TAG_member, name: "__1", scope: !63, file: !4, baseType: !47, size: 64, align: 64, offset: 64)
!67 = !DIDerivedType(tag: DW_TAG_member, name: "osc_idx", scope: !39, file: !4, baseType: !47, size: 64, align: 64, offset: 3264)
!68 = !DIDerivedType(tag: DW_TAG_member, name: "osc_num_params", scope: !39, file: !4, baseType: !47, size: 64, align: 64, offset: 3328)
!69 = !DIDerivedType(tag: DW_TAG_member, name: "ignoring", scope: !39, file: !4, baseType: !55, size: 8, align: 8, offset: 11680)
!70 = !DIDerivedType(tag: DW_TAG_member, name: "utf8_parser", scope: !39, file: !4, baseType: !71, size: 64, align: 32, offset: 3392)
!71 = !DICompositeType(tag: DW_TAG_structure_type, name: "Parser", scope: !27, file: !4, size: 64, align: 32, elements: !72, identifier: "4bbfc562685f7a8e317b4a33445e72b")
!72 = !{!73, !75}
!73 = !DIDerivedType(tag: DW_TAG_member, name: "point", scope: !71, file: !4, baseType: !74, size: 32, align: 32)
!74 = !DIBasicType(name: "u32", size: 32, encoding: DW_ATE_unsigned)
!75 = !DIDerivedType(tag: DW_TAG_member, name: "state", scope: !71, file: !4, baseType: !25, size: 8, align: 8, offset: 32)
!76 = !DISubroutineType(types: !77)
!77 = !{!39}
!78 = !{}
!79 = !DILocation(line: 106, column: 19, scope: !38)
!80 = !DILocation(line: 107, column: 27, scope: !38)
!81 = !DILocation(line: 109, column: 20, scope: !38)
!82 = !DILocation(line: 113, column: 21, scope: !38)
!83 = !DILocation(line: 114, column: 25, scope: !38)
!84 = !DILocation(line: 114, column: 24, scope: !38)
!85 = !DILocation(line: 105, column: 8, scope: !38)
!86 = !{i8 0, i8 16}
!87 = !DILocation(line: 120, column: 5, scope: !38)
!88 = !DILocation(line: 118, column: 25, scope: !38)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment