Created
December 26, 2016 22:47
-
-
Save andrewrk/041af662b3ff515cd0be64ab85c112d7 to your computer and use it in GitHub Desktop.
problem with LiveDebugValues in llvm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = '../example/hello_world/hello.zig' | |
source_filename = "../example/hello_world/hello.zig" | |
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
%OutStream = type { i32, [4096 x i8], i64 } | |
%"[]u8" = type { i8*, i64 } | |
%"[][]u8" = type { %"[]u8"*, i64 } | |
@0 = internal unnamed_addr constant i1 true | |
@1 = internal unnamed_addr global i64 undef | |
@2 = internal unnamed_addr global i8** undef | |
@3 = internal unnamed_addr constant i1 false | |
@4 = internal unnamed_addr global %OutStream { i32 1, [4096 x i8] undef, i64 0 } | |
@5 = internal unnamed_addr constant i8* getelementptr inbounds ([14 x i8], [14 x i8]* @6, i64 0, i64 0) | |
@6 = internal unnamed_addr constant [14 x i8] c"Hello, world!\0A" | |
@7 = internal unnamed_addr constant %"[]u8" { i8* getelementptr inbounds ([14 x i8], [14 x i8]* @6, i64 0, i64 0), i64 14 } | |
; Function Attrs: nounwind | |
declare void @llvm.debugtrap() #0 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #1 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i32, i1) #1 | |
; Function Attrs: naked noreturn | |
define void @_start() #2 !dbg !25 { | |
Entry: | |
%0 = call i64 asm "mov (%rsp), $0", "=r"(), !dbg !29 | |
store i64 %0, i64* @1, !dbg !32 | |
%1 = call i8** asm "lea 0x8(%rsp), $0", "=r"(), !dbg !33 | |
store i8** %1, i8*** @2, !dbg !34 | |
call fastcc void @_callMainAndExit(), !dbg !35 | |
unreachable, !dbg !35 | |
} | |
define internal i32 @_main(i32, i8** nonnull readonly) #3 !dbg !36 { | |
Entry: | |
%2 = alloca i16 | |
%c_argc = alloca i32, align 4 | |
%c_argv = alloca i8**, align 8 | |
store i32 %0, i32* %c_argc | |
call void @llvm.dbg.declare(metadata i32* %c_argc, metadata !44, metadata !47), !dbg !48 | |
store i8** %1, i8*** %c_argv | |
call void @llvm.dbg.declare(metadata i8*** %c_argv, metadata !45, metadata !47), !dbg !49 | |
%3 = load i32, i32* %c_argc, !dbg !50 | |
%4 = sext i32 %3 to i64, !dbg !53 | |
store i64 %4, i64* @1, !dbg !54 | |
%5 = load i8**, i8*** %c_argv, !dbg !55 | |
store i8** %5, i8*** @2, !dbg !56 | |
%6 = call fastcc i16 @_callMain(), !dbg !57 | |
store i16 %6, i16* %2, !dbg !57 | |
%7 = load i16, i16* %2, !dbg !58 | |
%8 = icmp ne i16 %7, 0, !dbg !58 | |
br i1 %8, label %UnwrapErrError, label %UnwrapErrOk, !dbg !58 | |
UnwrapErrError: ; preds = %Entry | |
ret i32 1, !dbg !59 | |
UnwrapErrOk: ; preds = %Entry | |
%9 = load i16, i16* %2, !dbg !58 | |
br label %UnwrapErrEnd, !dbg !58 | |
UnwrapErrEnd: ; preds = %UnwrapErrOk | |
ret i32 0, !dbg !60 | |
} | |
; Function Attrs: noreturn nounwind | |
define internal fastcc void @_callMainAndExit() #4 !dbg !61 { | |
Entry: | |
%0 = alloca i16 | |
%1 = call fastcc i16 @_callMain(), !dbg !62 | |
store i16 %1, i16* %0, !dbg !62 | |
%2 = load i16, i16* %0, !dbg !64 | |
%3 = icmp ne i16 %2, 0, !dbg !64 | |
br i1 %3, label %UnwrapErrError, label %UnwrapErrOk, !dbg !64 | |
UnwrapErrError: ; preds = %Entry | |
call fastcc void @_exit(i32 1), !dbg !65 | |
unreachable, !dbg !65 | |
UnwrapErrOk: ; preds = %Entry | |
%4 = load i16, i16* %0, !dbg !64 | |
br label %UnwrapErrEnd, !dbg !64 | |
UnwrapErrEnd: ; preds = %UnwrapErrOk | |
call fastcc void @_exit(i32 0), !dbg !66 | |
unreachable, !dbg !66 | |
} | |
; Function Attrs: nounwind | |
define internal fastcc i16 @_callMain() #5 !dbg !67 { | |
Entry: | |
%0 = alloca %"[][]u8" | |
%1 = alloca %"[]u8" | |
%args = alloca %"[][]u8", align 8 | |
%_ = alloca %"[]u8", align 8 | |
%i = alloca i64, align 8 | |
%ptr = alloca i8*, align 8 | |
%2 = load i64, i64* @1, !dbg !91 | |
%3 = alloca %"[]u8", i64 %2, !dbg !92 | |
%4 = getelementptr inbounds %"[][]u8", %"[][]u8"* %0, i32 0, i32 0, !dbg !92 | |
store %"[]u8"* %3, %"[]u8"** %4, !dbg !92 | |
%5 = getelementptr inbounds %"[][]u8", %"[][]u8"* %0, i32 0, i32 1, !dbg !92 | |
store i64 %2, i64* %5, !dbg !92 | |
%6 = bitcast %"[][]u8"* %0 to i8*, !dbg !93 | |
%7 = bitcast %"[][]u8"* %args to i8*, !dbg !93 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 16, i32 8, i1 false), !dbg !93 | |
call void @llvm.dbg.declare(metadata %"[][]u8"* %args, metadata !72, metadata !47), !dbg !93 | |
%8 = bitcast %"[]u8"* %_ to i8*, !dbg !94 | |
call void @llvm.memset.p0i8.i64(i8* %8, i8 -86, i64 16, i32 8, i1 false), !dbg !94 | |
call void @llvm.dbg.declare(metadata %"[]u8"* %_, metadata !83, metadata !47), !dbg !95 | |
store i64 0, i64* %i, !dbg !96 | |
call void @llvm.dbg.declare(metadata i64* %i, metadata !86, metadata !47), !dbg !97 | |
%9 = getelementptr inbounds %"[][]u8", %"[][]u8"* %args, i32 0, i32 1, !dbg !98 | |
%10 = load i64, i64* %9, !dbg !98 | |
br label %ForCond, !dbg !98 | |
ForCond: ; preds = %BoundsCheckOk2, %Entry | |
%11 = load i64, i64* %i, !dbg !98 | |
%12 = icmp ult i64 %11, %10, !dbg !98 | |
br i1 %12, label %ForBody, label %ForEnd, !dbg !98 | |
ForBody: ; preds = %ForCond | |
%13 = getelementptr inbounds %"[][]u8", %"[][]u8"* %args, i32 0, i32 0, !dbg !98 | |
%14 = load %"[]u8"*, %"[]u8"** %13, !dbg !98 | |
%15 = getelementptr inbounds %"[]u8", %"[]u8"* %14, i64 %11, !dbg !98 | |
%16 = bitcast %"[]u8"* %15 to i8*, !dbg !98 | |
%17 = bitcast %"[]u8"* %_ to i8*, !dbg !98 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %17, i8* %16, i64 16, i32 8, i1 false), !dbg !98 | |
%18 = load i64, i64* %i, !dbg !99 | |
%19 = load i8**, i8*** @2, !dbg !100 | |
%20 = getelementptr inbounds i8*, i8** %19, i64 %18, !dbg !100 | |
%21 = load i8*, i8** %20, !dbg !100 | |
store i8* %21, i8** %ptr, !dbg !101 | |
call void @llvm.dbg.declare(metadata i8** %ptr, metadata !88, metadata !47), !dbg !101 | |
%22 = load i64, i64* %i, !dbg !102 | |
%23 = getelementptr inbounds %"[][]u8", %"[][]u8"* %args, i32 0, i32 1, !dbg !104 | |
%24 = load i64, i64* %23, !dbg !104 | |
%25 = icmp ult i64 %22, %24, !dbg !104 | |
br i1 %25, label %BoundsCheckOk, label %BoundsCheckFail, !dbg !104 | |
ForEnd: ; preds = %ForCond | |
%26 = call fastcc i16 @_main.1(%"[][]u8"* %args), !dbg !105 | |
ret i16 %26, !dbg !106 | |
BoundsCheckFail: ; preds = %ForBody | |
call void @llvm.debugtrap(), !dbg !104 | |
unreachable, !dbg !104 | |
BoundsCheckOk: ; preds = %ForBody | |
%27 = getelementptr inbounds %"[][]u8", %"[][]u8"* %args, i32 0, i32 0, !dbg !104 | |
%28 = load %"[]u8"*, %"[]u8"** %27, !dbg !104 | |
%29 = getelementptr inbounds %"[]u8", %"[]u8"* %28, i64 %22, !dbg !104 | |
%30 = load i8*, i8** %ptr, !dbg !107 | |
%31 = load i8*, i8** %ptr, !dbg !108 | |
%32 = call fastcc i64 @_len(i8* %31), !dbg !109 | |
%33 = icmp ule i64 0, %32, !dbg !110 | |
br i1 %33, label %BoundsCheckOk2, label %BoundsCheckFail1, !dbg !110 | |
BoundsCheckFail1: ; preds = %BoundsCheckOk | |
call void @llvm.debugtrap(), !dbg !110 | |
unreachable, !dbg !110 | |
BoundsCheckOk2: ; preds = %BoundsCheckOk | |
%34 = getelementptr inbounds %"[]u8", %"[]u8"* %1, i32 0, i32 0, !dbg !110 | |
%35 = getelementptr inbounds i8, i8* %30, i64 0, !dbg !110 | |
store i8* %35, i8** %34, !dbg !110 | |
%36 = getelementptr inbounds %"[]u8", %"[]u8"* %1, i32 0, i32 1, !dbg !110 | |
%37 = sub nsw i64 %32, 0, !dbg !110 | |
store i64 %37, i64* %36, !dbg !110 | |
%38 = bitcast %"[]u8"* %1 to i8*, !dbg !111 | |
%39 = bitcast %"[]u8"* %29 to i8*, !dbg !111 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %39, i8* %38, i64 16, i32 8, i1 false), !dbg !111 | |
%40 = add nuw i64 %11, 1, !dbg !98 | |
store i64 %40, i64* %i, !dbg !98 | |
br label %ForCond, !dbg !98 | |
} | |
; Function Attrs: noreturn nounwind | |
define internal fastcc void @_exit(i32) #4 !dbg !112 { | |
Entry: | |
%status = alloca i32, align 4 | |
store i32 %0, i32* %status | |
call void @llvm.dbg.declare(metadata i32* %status, metadata !117, metadata !47), !dbg !118 | |
%1 = load i32, i32* %status, !dbg !119 | |
%2 = sext i32 %1 to i64, !dbg !122 | |
%3 = call fastcc i64 @_syscall1(i64 60, i64 %2), !dbg !123 | |
call void @llvm.debugtrap(), !dbg !124 | |
unreachable, !dbg !124 | |
} | |
; Function Attrs: nounwind | |
define internal fastcc i64 @_len(i8* nonnull readonly) #5 !dbg !125 { | |
Entry: | |
%ptr = alloca i8*, align 8 | |
%count = alloca i64, align 8 | |
store i8* %0, i8** %ptr | |
call void @llvm.dbg.declare(metadata i8** %ptr, metadata !131, metadata !47), !dbg !135 | |
store i64 0, i64* %count, !dbg !136 | |
call void @llvm.dbg.declare(metadata i64* %count, metadata !132, metadata !47), !dbg !136 | |
br label %WhileCond, !dbg !137 | |
WhileCond: ; preds = %OverflowOk, %Entry | |
%1 = load i64, i64* %count, !dbg !139 | |
%2 = load i8*, i8** %ptr, !dbg !140 | |
%3 = getelementptr inbounds i8, i8* %2, i64 %1, !dbg !140 | |
%4 = load i8, i8* %3, !dbg !140 | |
%5 = icmp ne i8 %4, 0, !dbg !141 | |
br i1 %5, label %WhileBody, label %WhileEnd, !dbg !141 | |
WhileBody: ; preds = %WhileCond | |
%6 = load i64, i64* %count, !dbg !142 | |
%7 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %6, i64 1), !dbg !143 | |
%8 = extractvalue { i64, i1 } %7, 0, !dbg !143 | |
%9 = extractvalue { i64, i1 } %7, 1, !dbg !143 | |
br i1 %9, label %OverflowFail, label %OverflowOk, !dbg !143 | |
WhileEnd: ; preds = %WhileCond | |
%10 = load i64, i64* %count, !dbg !144 | |
ret i64 %10, !dbg !145 | |
OverflowFail: ; preds = %WhileBody | |
call void @llvm.debugtrap(), !dbg !143 | |
unreachable, !dbg !143 | |
OverflowOk: ; preds = %WhileBody | |
store i64 %8, i64* %count, !dbg !143 | |
br label %WhileCond, !dbg !137 | |
} | |
; Function Attrs: nounwind | |
define internal fastcc i16 @_main.1(%"[][]u8"* nonnull readonly) #5 !dbg !146 { | |
Entry: | |
%1 = alloca { i16, i64 } | |
%2 = alloca { i16, i64 } | |
call void @llvm.dbg.declare(metadata %"[][]u8"* %0, metadata !152, metadata !47), !dbg !153 | |
call fastcc void @_OutStream_printf({ i16, i64 }* %1, %OutStream* @4, %"[]u8"* @7), !dbg !154 | |
ret i16 0, !dbg !157 | |
} | |
; Function Attrs: alwaysinline nounwind | |
define internal fastcc i64 @_syscall1(i64, i64) #6 !dbg !158 { | |
Entry: | |
%number = alloca i64, align 8 | |
%arg1 = alloca i64, align 8 | |
store i64 %0, i64* %number | |
call void @llvm.dbg.declare(metadata i64* %number, metadata !162, metadata !47), !dbg !165 | |
store i64 %1, i64* %arg1 | |
call void @llvm.dbg.declare(metadata i64* %arg1, metadata !163, metadata !47), !dbg !166 | |
%2 = load i64, i64* %number, !dbg !167 | |
%3 = load i64, i64* %arg1, !dbg !170 | |
%4 = call i64 asm sideeffect "syscall", "={rax},{rax},{rdi},~{rcx},~{r11}"(i64 %2, i64 %3), !dbg !171 | |
ret i64 %4, !dbg !172 | |
} | |
; Function Attrs: nounwind | |
define internal fastcc void @_OutStream_printf({ i16, i64 }* nonnull sret, %OutStream* nonnull readonly, %"[]u8"* nonnull readonly) #5 !dbg !173 { | |
Entry: | |
%3 = alloca { i16, i64 } | |
%4 = alloca { i16, i64 } | |
%5 = alloca { i16, i64 } | |
%6 = alloca i16 | |
%7 = alloca { i16, i64 } | |
%8 = alloca { i16, i64 } | |
%self = alloca %OutStream*, align 8 | |
%byte_count = alloca i64, align 8 | |
store %OutStream* %1, %OutStream** %self | |
call void @llvm.dbg.declare(metadata %OutStream** %self, metadata !192, metadata !47), !dbg !198 | |
call void @llvm.dbg.declare(metadata %"[]u8"* %2, metadata !193, metadata !47), !dbg !199 | |
%9 = load %OutStream*, %OutStream** %self, !dbg !200 | |
call fastcc void @_OutStream_write({ i16, i64 }* %3, %OutStream* %9, %"[]u8"* %2), !dbg !201 | |
%10 = getelementptr inbounds { i16, i64 }, { i16, i64 }* %3, i32 0, i32 0, !dbg !202 | |
%11 = load i16, i16* %10, !dbg !202 | |
%12 = icmp ne i16 %11, 0, !dbg !202 | |
br i1 %12, label %ErrRetReturn, label %ErrRetContinue, !dbg !202 | |
ErrRetReturn: ; preds = %Entry | |
%13 = getelementptr inbounds { i16, i64 }, { i16, i64 }* %3, i32 0, i32 0, !dbg !202 | |
%14 = load i16, i16* %13, !dbg !202 | |
%15 = getelementptr inbounds { i16, i64 }, { i16, i64 }* %5, i32 0, i32 0, !dbg !202 | |
store i16 %14, i16* %15, !dbg !202 | |
%16 = bitcast { i16, i64 }* %5 to i8*, !dbg !202 | |
%17 = bitcast { i16, i64 }* %0 to i8*, !dbg !202 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %17, i8* %16, i64 16, i32 8, i1 false), !dbg !202 | |
ret void, !dbg !202 | |
ErrRetContinue: ; preds = %Entry | |
%18 = getelementptr inbounds { i16, i64 }, { i16, i64 }* %3, i32 0, i32 1, !dbg !202 | |
%19 = load i64, i64* %18, !dbg !202 | |
store i64 %19, i64* %byte_count, !dbg !203 | |
call void @llvm.dbg.declare(metadata i64* %byte_count, metadata !195, metadata !47), !dbg !203 | |
%20 = load %OutStream*, %OutStream** %self, !dbg !204 | |
%21 = call fastcc i16 @_OutStream_flush(%OutStream* %20), !dbg !206 | |
store i16 %21, i16* %6, !dbg !206 | |
%22 = load i16, i16* %6, !dbg !207 | |
%23 = icmp ne i16 %22, 0, !dbg !207 | |
br i1 %23, label %ErrRetReturn1, label %ErrRetContinue2, !dbg !207 | |
ErrRetReturn1: ; preds = %ErrRetContinue | |
%24 = load i16, i16* %6, !dbg !207 | |
%25 = getelementptr inbounds { i16, i64 }, { i16, i64 }* %7, i32 0, i32 0, !dbg !207 | |
store i16 %24, i16* %25, !dbg !207 | |
%26 = bitcast { i16, i64 }* %7 to i8*, !dbg !207 | |
%27 = bitcast { i16, i64 }* %0 to i8*, !dbg !207 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %27, i8* %26, i64 16, i32 8, i1 false), !dbg !207 | |
ret void, !dbg !207 | |
ErrRetContinue2: ; preds = %ErrRetContinue | |
%28 = load i64, i64* %byte_count, !dbg !208 | |
%29 = getelementptr inbounds { i16, i64 }, { i16, i64 }* %8, i32 0, i32 0, !dbg !208 | |
store i16 0, i16* %29, !dbg !208 | |
%30 = getelementptr inbounds { i16, i64 }, { i16, i64 }* %8, i32 0, i32 1, !dbg !208 | |
store i64 %28, i64* %30, !dbg !208 | |
%31 = bitcast { i16, i64 }* %8 to i8*, !dbg !209 | |
%32 = bitcast { i16, i64 }* %0 to i8*, !dbg !209 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %32, i8* %31, i64 16, i32 8, i1 false), !dbg !209 | |
ret void, !dbg !209 | |
} | |
; Function Attrs: nounwind | |
define internal fastcc void @_OutStream_write({ i16, i64 }* nonnull sret, %OutStream* nonnull readonly, %"[]u8"* nonnull readonly) #5 !dbg !210 { | |
Entry: | |
%3 = alloca { i16, i64 } | |
%4 = alloca i16 | |
%5 = alloca { i16, i64 } | |
%self = alloca %OutStream*, align 8 | |
%src_bytes_left = alloca i64, align 8 | |
%src_index = alloca i64, align 8 | |
%dest_space_left = alloca i64, align 8 | |
%copy_amt = alloca i64, align 8 | |
store %OutStream* %1, %OutStream** %self | |
call void @llvm.dbg.declare(metadata %OutStream** %self, metadata !212, metadata !47), !dbg !225 | |
call void @llvm.dbg.declare(metadata %"[]u8"* %2, metadata !213, metadata !47), !dbg !226 | |
%6 = getelementptr inbounds %"[]u8", %"[]u8"* %2, i32 0, i32 1, !dbg !227 | |
%7 = load i64, i64* %6, !dbg !227 | |
store i64 %7, i64* %src_bytes_left, !dbg !228 | |
call void @llvm.dbg.declare(metadata i64* %src_bytes_left, metadata !215, metadata !47), !dbg !228 | |
store i64 0, i64* %src_index, !dbg !229 | |
call void @llvm.dbg.declare(metadata i64* %src_index, metadata !218, metadata !47), !dbg !229 | |
%8 = load %OutStream*, %OutStream** %self, !dbg !230 | |
%9 = load %OutStream*, %OutStream** %self, !dbg !231 | |
%10 = getelementptr inbounds %OutStream, %OutStream* %9, i32 0, i32 2, !dbg !231 | |
%11 = load i64, i64* %10, !dbg !231 | |
%12 = call { i64, i1 } @llvm.usub.with.overflow.i64(i64 4096, i64 %11), !dbg !232 | |
%13 = extractvalue { i64, i1 } %12, 0, !dbg !232 | |
%14 = extractvalue { i64, i1 } %12, 1, !dbg !232 | |
br i1 %14, label %OverflowFail, label %OverflowOk, !dbg !232 | |
WhileCond: ; preds = %OverflowOk6, %OverflowOk | |
%15 = load i64, i64* %src_bytes_left, !dbg !233 | |
%16 = icmp ugt i64 %15, 0, !dbg !234 | |
br i1 %16, label %WhileBody, label %WhileEnd, !dbg !234 | |
WhileBody: ; preds = %WhileCond | |
%17 = load i64, i64* %dest_space_left, !dbg !235 | |
%18 = load i64, i64* %src_bytes_left, !dbg !236 | |
%19 = call fastcc i64 @_min(i64 %17, i64 %18), !dbg !237 | |
store i64 %19, i64* %copy_amt, !dbg !238 | |
call void @llvm.dbg.declare(metadata i64* %copy_amt, metadata !222, metadata !47), !dbg !238 | |
%20 = load %OutStream*, %OutStream** %self, !dbg !239 | |
%21 = getelementptr inbounds %OutStream, %OutStream* %20, i32 0, i32 1, !dbg !239 | |
%22 = load %OutStream*, %OutStream** %self, !dbg !241 | |
%23 = getelementptr inbounds %OutStream, %OutStream* %22, i32 0, i32 2, !dbg !241 | |
%24 = load i64, i64* %23, !dbg !241 | |
%25 = icmp ult i64 %24, 4096, !dbg !242 | |
br i1 %25, label %BoundsCheckOk, label %BoundsCheckFail, !dbg !242 | |
WhileEnd: ; preds = %WhileCond | |
%26 = getelementptr inbounds %"[]u8", %"[]u8"* %2, i32 0, i32 1, !dbg !243 | |
%27 = load i64, i64* %26, !dbg !243 | |
%28 = getelementptr inbounds { i16, i64 }, { i16, i64 }* %3, i32 0, i32 0, !dbg !243 | |
store i16 0, i16* %28, !dbg !243 | |
%29 = getelementptr inbounds { i16, i64 }, { i16, i64 }* %3, i32 0, i32 1, !dbg !243 | |
store i64 %27, i64* %29, !dbg !243 | |
%30 = bitcast { i16, i64 }* %3 to i8*, !dbg !244 | |
%31 = bitcast { i16, i64 }* %0 to i8*, !dbg !244 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %31, i8* %30, i64 16, i32 8, i1 false), !dbg !244 | |
ret void, !dbg !244 | |
Then: ; preds = %OverflowOk4 | |
%32 = load %OutStream*, %OutStream** %self, !dbg !245 | |
%33 = call fastcc i16 @_OutStream_flush(%OutStream* %32), !dbg !247 | |
store i16 %33, i16* %4, !dbg !247 | |
%34 = load i16, i16* %4, !dbg !248 | |
%35 = icmp ne i16 %34, 0, !dbg !248 | |
br i1 %35, label %ErrRetReturn, label %ErrRetContinue, !dbg !248 | |
Else: ; preds = %OverflowOk4 | |
br label %EndIf, !dbg !249 | |
ErrRetReturn: ; preds = %Then | |
%36 = load i16, i16* %4, !dbg !248 | |
%37 = getelementptr inbounds { i16, i64 }, { i16, i64 }* %5, i32 0, i32 0, !dbg !248 | |
store i16 %36, i16* %37, !dbg !248 | |
%38 = bitcast { i16, i64 }* %5 to i8*, !dbg !248 | |
%39 = bitcast { i16, i64 }* %0 to i8*, !dbg !248 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %39, i8* %38, i64 16, i32 8, i1 false), !dbg !248 | |
ret void, !dbg !248 | |
ErrRetContinue: ; preds = %Then | |
br label %EndIf, !dbg !249 | |
EndIf: ; preds = %ErrRetContinue, %Else | |
%40 = load i64, i64* %src_bytes_left, !dbg !250 | |
%41 = load i64, i64* %copy_amt, !dbg !251 | |
%42 = call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %40, i64 %41), !dbg !252 | |
%43 = extractvalue { i64, i1 } %42, 0, !dbg !252 | |
%44 = extractvalue { i64, i1 } %42, 1, !dbg !252 | |
br i1 %44, label %OverflowFail5, label %OverflowOk6, !dbg !252 | |
OverflowFail: ; preds = %Entry | |
call void @llvm.debugtrap(), !dbg !232 | |
unreachable, !dbg !232 | |
OverflowOk: ; preds = %Entry | |
store i64 %13, i64* %dest_space_left, !dbg !253 | |
call void @llvm.dbg.declare(metadata i64* %dest_space_left, metadata !220, metadata !47), !dbg !253 | |
br label %WhileCond, !dbg !254 | |
BoundsCheckFail: ; preds = %WhileBody | |
call void @llvm.debugtrap(), !dbg !242 | |
unreachable, !dbg !242 | |
BoundsCheckOk: ; preds = %WhileBody | |
%45 = getelementptr inbounds [4096 x i8], [4096 x i8]* %21, i64 0, i64 %24, !dbg !242 | |
%46 = load i64, i64* %src_index, !dbg !255 | |
%47 = getelementptr inbounds %"[]u8", %"[]u8"* %2, i32 0, i32 1, !dbg !256 | |
%48 = load i64, i64* %47, !dbg !256 | |
%49 = icmp ult i64 %46, %48, !dbg !256 | |
br i1 %49, label %BoundsCheckOk2, label %BoundsCheckFail1, !dbg !256 | |
BoundsCheckFail1: ; preds = %BoundsCheckOk | |
call void @llvm.debugtrap(), !dbg !256 | |
unreachable, !dbg !256 | |
BoundsCheckOk2: ; preds = %BoundsCheckOk | |
%50 = getelementptr inbounds %"[]u8", %"[]u8"* %2, i32 0, i32 0, !dbg !256 | |
%51 = load i8*, i8** %50, !dbg !256 | |
%52 = getelementptr inbounds i8, i8* %51, i64 %46, !dbg !256 | |
%53 = load i64, i64* %copy_amt, !dbg !257 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %45, i8* %52, i64 %53, i32 1, i1 false), !dbg !258 | |
%54 = load %OutStream*, %OutStream** %self, !dbg !259 | |
%55 = getelementptr inbounds %OutStream, %OutStream* %54, i32 0, i32 2, !dbg !259 | |
%56 = load i64, i64* %55, !dbg !259 | |
%57 = load i64, i64* %copy_amt, !dbg !260 | |
%58 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %56, i64 %57), !dbg !261 | |
%59 = extractvalue { i64, i1 } %58, 0, !dbg !261 | |
%60 = extractvalue { i64, i1 } %58, 1, !dbg !261 | |
br i1 %60, label %OverflowFail3, label %OverflowOk4, !dbg !261 | |
OverflowFail3: ; preds = %BoundsCheckOk2 | |
call void @llvm.debugtrap(), !dbg !261 | |
unreachable, !dbg !261 | |
OverflowOk4: ; preds = %BoundsCheckOk2 | |
store i64 %59, i64* %55, !dbg !261 | |
%61 = load %OutStream*, %OutStream** %self, !dbg !262 | |
%62 = getelementptr inbounds %OutStream, %OutStream* %61, i32 0, i32 2, !dbg !262 | |
%63 = load i64, i64* %62, !dbg !262 | |
%64 = load %OutStream*, %OutStream** %self, !dbg !263 | |
%65 = icmp eq i64 %63, 4096, !dbg !264 | |
br i1 %65, label %Then, label %Else, !dbg !264 | |
OverflowFail5: ; preds = %EndIf | |
call void @llvm.debugtrap(), !dbg !252 | |
unreachable, !dbg !252 | |
OverflowOk6: ; preds = %EndIf | |
store i64 %43, i64* %src_bytes_left, !dbg !252 | |
br label %WhileCond, !dbg !254 | |
} | |
; Function Attrs: nounwind | |
define internal fastcc i16 @_OutStream_flush(%OutStream* nonnull readonly) #5 !dbg !265 { | |
Entry: | |
%self = alloca %OutStream*, align 8 | |
%write_ret = alloca i64, align 8 | |
%write_err = alloca i64, align 8 | |
store %OutStream* %0, %OutStream** %self | |
call void @llvm.dbg.declare(metadata %OutStream** %self, metadata !269, metadata !47), !dbg !276 | |
br label %WhileCond, !dbg !277 | |
WhileCond: ; preds = %SwitchProng, %Entry | |
%1 = load %OutStream*, %OutStream** %self, !dbg !278 | |
%2 = getelementptr inbounds %OutStream, %OutStream* %1, i32 0, i32 0, !dbg !278 | |
%3 = load i32, i32* %2, !dbg !278 | |
%4 = load %OutStream*, %OutStream** %self, !dbg !279 | |
%5 = getelementptr inbounds %OutStream, %OutStream* %4, i32 0, i32 1, !dbg !279 | |
%6 = getelementptr inbounds [4096 x i8], [4096 x i8]* %5, i64 0, i64 0, !dbg !280 | |
%7 = load %OutStream*, %OutStream** %self, !dbg !281 | |
%8 = getelementptr inbounds %OutStream, %OutStream* %7, i32 0, i32 2, !dbg !281 | |
%9 = load i64, i64* %8, !dbg !281 | |
%10 = call fastcc i64 @_write(i32 %3, i8* %6, i64 %9), !dbg !282 | |
store i64 %10, i64* %write_ret, !dbg !283 | |
call void @llvm.dbg.declare(metadata i64* %write_ret, metadata !270, metadata !47), !dbg !283 | |
%11 = load i64, i64* %write_ret, !dbg !284 | |
%12 = call fastcc i64 @_getErrno(i64 %11), !dbg !285 | |
store i64 %12, i64* %write_err, !dbg !286 | |
call void @llvm.dbg.declare(metadata i64* %write_err, metadata !274, metadata !47), !dbg !286 | |
%13 = load i64, i64* %write_err, !dbg !287 | |
%14 = icmp ugt i64 %13, 0, !dbg !289 | |
br i1 %14, label %Then, label %Else, !dbg !289 | |
Then: ; preds = %WhileCond | |
%15 = load i64, i64* %write_err, !dbg !290 | |
switch i64 %15, label %SwitchElse [ | |
i64 4, label %SwitchProng | |
i64 22, label %SwitchProng1 | |
i64 122, label %SwitchProng2 | |
i64 27, label %SwitchProng3 | |
i64 5, label %SwitchProng4 | |
i64 28, label %SwitchProng5 | |
i64 1, label %SwitchProng6 | |
i64 32, label %SwitchProng7 | |
], !dbg !290 | |
Else: ; preds = %WhileCond | |
br label %EndIf, !dbg !292 | |
SwitchProng: ; preds = %Then | |
br label %WhileCond, !dbg !293 | |
SwitchProng1: ; preds = %Then | |
call void @llvm.debugtrap(), !dbg !294 | |
unreachable, !dbg !294 | |
SwitchProng2: ; preds = %Then | |
br label %SwitchEnd, !dbg !290 | |
SwitchProng3: ; preds = %Then | |
br label %SwitchEnd, !dbg !290 | |
SwitchProng4: ; preds = %Then | |
br label %SwitchEnd, !dbg !290 | |
SwitchProng5: ; preds = %Then | |
br label %SwitchEnd, !dbg !290 | |
SwitchProng6: ; preds = %Then | |
br label %SwitchEnd, !dbg !290 | |
SwitchProng7: ; preds = %Then | |
br label %SwitchEnd, !dbg !290 | |
SwitchElse: ; preds = %Then | |
br label %SwitchEnd, !dbg !290 | |
SwitchEnd: ; preds = %SwitchElse, %SwitchProng7, %SwitchProng6, %SwitchProng5, %SwitchProng4, %SwitchProng3, %SwitchProng2 | |
%16 = phi i16 [ 3, %SwitchProng2 ], [ 4, %SwitchProng3 ], [ 5, %SwitchProng4 ], [ 6, %SwitchProng5 ], [ 7, %SwitchProng6 ], [ 8, %SwitchProng7 ], [ 2, %SwitchElse ], !dbg !290 | |
ret i16 %16, !dbg !295 | |
EndIf: ; preds = %Else | |
%17 = load %OutStream*, %OutStream** %self, !dbg !296 | |
%18 = getelementptr inbounds %OutStream, %OutStream* %17, i32 0, i32 2, !dbg !296 | |
store i64 0, i64* %18, !dbg !297 | |
ret i16 0, !dbg !298 | |
} | |
; Function Attrs: nounwind | |
define internal fastcc i64 @_min(i64, i64) #5 !dbg !299 { | |
Entry: | |
%x = alloca i64, align 8 | |
%y = alloca i64, align 8 | |
store i64 %0, i64* %x | |
call void @llvm.dbg.declare(metadata i64* %x, metadata !302, metadata !47), !dbg !307 | |
store i64 %1, i64* %y | |
call void @llvm.dbg.declare(metadata i64* %y, metadata !305, metadata !47), !dbg !308 | |
%2 = load i64, i64* %x, !dbg !309 | |
%3 = load i64, i64* %y, !dbg !312 | |
%4 = icmp ult i64 %2, %3, !dbg !313 | |
br i1 %4, label %Then, label %Else, !dbg !313 | |
Then: ; preds = %Entry | |
%5 = load i64, i64* %x, !dbg !314 | |
br label %EndIf, !dbg !315 | |
Else: ; preds = %Entry | |
%6 = load i64, i64* %y, !dbg !316 | |
br label %EndIf, !dbg !315 | |
EndIf: ; preds = %Else, %Then | |
%7 = phi i64 [ %5, %Then ], [ %6, %Else ], !dbg !315 | |
ret i64 %7, !dbg !317 | |
} | |
; Function Attrs: nounwind | |
define internal fastcc i64 @_write(i32, i8* nonnull readonly, i64) #5 !dbg !318 { | |
Entry: | |
%fd = alloca i32, align 4 | |
%buf = alloca i8*, align 8 | |
%count = alloca i64, align 8 | |
store i32 %0, i32* %fd | |
call void @llvm.dbg.declare(metadata i32* %fd, metadata !322, metadata !47), !dbg !327 | |
store i8* %1, i8** %buf | |
call void @llvm.dbg.declare(metadata i8** %buf, metadata !323, metadata !47), !dbg !328 | |
store i64 %2, i64* %count | |
call void @llvm.dbg.declare(metadata i64* %count, metadata !325, metadata !47), !dbg !329 | |
%3 = load i32, i32* %fd, !dbg !330 | |
%4 = sext i32 %3 to i64, !dbg !333 | |
%5 = load i8*, i8** %buf, !dbg !334 | |
%6 = ptrtoint i8* %5 to i64, !dbg !335 | |
%7 = load i64, i64* %count, !dbg !336 | |
%8 = call fastcc i64 @_syscall3(i64 1, i64 %4, i64 %6, i64 %7), !dbg !337 | |
ret i64 %8, !dbg !338 | |
} | |
; Function Attrs: nounwind | |
define internal fastcc i64 @_getErrno(i64) #5 !dbg !339 { | |
Entry: | |
%r = alloca i64, align 8 | |
%signed_r = alloca i64, align 8 | |
store i64 %0, i64* %r | |
call void @llvm.dbg.declare(metadata i64* %r, metadata !343, metadata !47), !dbg !348 | |
%1 = load i64, i64* %r, !dbg !349 | |
store i64 %1, i64* %signed_r, !dbg !350 | |
call void @llvm.dbg.declare(metadata i64* %signed_r, metadata !344, metadata !47), !dbg !350 | |
%2 = load i64, i64* %signed_r, !dbg !351 | |
%3 = icmp sgt i64 %2, -4096, !dbg !353 | |
br i1 %3, label %BoolAndTrue, label %BoolAndFalse, !dbg !354 | |
BoolAndTrue: ; preds = %Entry | |
%4 = load i64, i64* %signed_r, !dbg !355 | |
%5 = icmp slt i64 %4, 0, !dbg !356 | |
br label %BoolAndFalse, !dbg !354 | |
BoolAndFalse: ; preds = %BoolAndTrue, %Entry | |
%6 = phi i1 [ %3, %Entry ], [ %5, %BoolAndTrue ], !dbg !354 | |
br i1 %6, label %Then, label %Else, !dbg !354 | |
Then: ; preds = %BoolAndFalse | |
%7 = load i64, i64* %signed_r, !dbg !357 | |
%8 = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 0, i64 %7), !dbg !358 | |
%9 = extractvalue { i64, i1 } %8, 0, !dbg !358 | |
%10 = extractvalue { i64, i1 } %8, 1, !dbg !358 | |
br i1 %10, label %OverflowFail, label %OverflowOk, !dbg !358 | |
Else: ; preds = %BoolAndFalse | |
br label %EndIf, !dbg !359 | |
EndIf: ; preds = %Else, %SignCastOk | |
%11 = phi i64 [ %9, %SignCastOk ], [ 0, %Else ], !dbg !359 | |
ret i64 %11, !dbg !360 | |
OverflowFail: ; preds = %Then | |
call void @llvm.debugtrap(), !dbg !358 | |
unreachable, !dbg !358 | |
OverflowOk: ; preds = %Then | |
%12 = icmp sge i64 %9, 0, !dbg !361 | |
br i1 %12, label %SignCastOk, label %SignCastFail, !dbg !361 | |
SignCastOk: ; preds = %OverflowOk | |
br label %EndIf, !dbg !359 | |
SignCastFail: ; preds = %OverflowOk | |
call void @llvm.debugtrap(), !dbg !361 | |
unreachable, !dbg !361 | |
} | |
; Function Attrs: alwaysinline nounwind | |
define internal fastcc i64 @_syscall3(i64, i64, i64, i64) #6 !dbg !362 { | |
Entry: | |
%number = alloca i64, align 8 | |
%arg1 = alloca i64, align 8 | |
%arg2 = alloca i64, align 8 | |
%arg3 = alloca i64, align 8 | |
store i64 %0, i64* %number | |
call void @llvm.dbg.declare(metadata i64* %number, metadata !366, metadata !47), !dbg !373 | |
store i64 %1, i64* %arg1 | |
call void @llvm.dbg.declare(metadata i64* %arg1, metadata !367, metadata !47), !dbg !374 | |
store i64 %2, i64* %arg2 | |
call void @llvm.dbg.declare(metadata i64* %arg2, metadata !369, metadata !47), !dbg !375 | |
store i64 %3, i64* %arg3 | |
call void @llvm.dbg.declare(metadata i64* %arg3, metadata !371, metadata !47), !dbg !376 | |
%4 = load i64, i64* %number, !dbg !377 | |
%5 = load i64, i64* %arg1, !dbg !380 | |
%6 = load i64, i64* %arg2, !dbg !381 | |
%7 = load i64, i64* %arg3, !dbg !382 | |
%8 = call i64 asm sideeffect "syscall", "={rax},{rax},{rdi},{rsi},{rdx},~{rcx},~{r11}"(i64 %4, i64 %5, i64 %6, i64 %7), !dbg !383 | |
ret i64 %8, !dbg !384 | |
} | |
; Function Attrs: nounwind readnone | |
declare void @llvm.dbg.declare(metadata, metadata, metadata) #7 | |
; Function Attrs: nounwind readnone | |
declare { i64, i1 } @llvm.uadd.with.overflow.i64(i64, i64) #7 | |
; Function Attrs: nounwind readnone | |
declare { i64, i1 } @llvm.usub.with.overflow.i64(i64, i64) #7 | |
; Function Attrs: nounwind readnone | |
declare { i64, i1 } @llvm.ssub.with.overflow.i64(i64, i64) #7 | |
attributes #0 = { nounwind } | |
attributes #1 = { argmemonly nounwind } | |
attributes #2 = { naked noreturn "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" } | |
attributes #3 = { "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" } | |
attributes #4 = { noreturn nounwind "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" } | |
attributes #5 = { nounwind "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" } | |
attributes #6 = { alwaysinline nounwind } | |
attributes #7 = { nounwind readnone } | |
!llvm.module.flags = !{!0} | |
!llvm.dbg.cu = !{!1} | |
!0 = !{i32 2, !"Debug Info Version", i32 3} | |
!1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, producer: "zig 0.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !4) | |
!2 = !DIFile(filename: "../example/hello_world/hello.zig", directory: "../example/hello_world") | |
!3 = !{} | |
!4 = !{!5, !8, !9, !12, !14, !15, !17, !18, !19, !20, !21, !22, !23, !24} | |
!5 = distinct !DIGlobalVariable(name: "want_start_symbol", linkageName: "want_start_symbol", scope: !6, file: !6, line: 7, type: !7, isLocal: true, isDefinition: true, variable: i1 true) | |
!6 = !DIFile(filename: "bootstrap.zig", directory: "/home/andy/dev/zig/build/lib/zig/std") | |
!7 = !DIBasicType(name: "bool", size: 8, align: 8, encoding: DW_ATE_boolean) | |
!8 = distinct !DIGlobalVariable(name: "want_main_symbol", linkageName: "want_main_symbol", scope: !6, file: !6, line: 11, type: !7, isLocal: true, isDefinition: true, variable: i1 false) | |
!9 = distinct !DIGlobalVariable(name: "SYS_exit", linkageName: "SYS_exit", scope: !10, file: !10, line: 65, type: !11, isLocal: true, isDefinition: true, variable: i64 60) | |
!10 = !DIFile(filename: "linux_x86_64.zig", directory: "/home/andy/dev/zig/build/lib/zig/std") | |
!11 = !DIBasicType(name: "usize", size: 64, align: 64, encoding: DW_ATE_unsigned) | |
!12 = distinct !DIGlobalVariable(name: "stdout_fileno", linkageName: "stdout_fileno", scope: !13, file: !13, line: 16, type: !11, isLocal: true, isDefinition: true, variable: i64 1) | |
!13 = !DIFile(filename: "io.zig", directory: "/home/andy/dev/zig/build/lib/zig/std") | |
!14 = distinct !DIGlobalVariable(name: "buffer_size", linkageName: "buffer_size", scope: !13, file: !13, line: 63, type: !11, isLocal: true, isDefinition: true, variable: i64 4096) | |
!15 = distinct !DIGlobalVariable(name: "EINTR", linkageName: "EINTR", scope: !16, file: !16, line: 4, type: !11, isLocal: true, isDefinition: true, variable: i64 4) | |
!16 = !DIFile(filename: "errno.zig", directory: "/home/andy/dev/zig/build/lib/zig/std") | |
!17 = distinct !DIGlobalVariable(name: "EINVAL", linkageName: "EINVAL", scope: !16, file: !16, line: 22, type: !11, isLocal: true, isDefinition: true, variable: i64 22) | |
!18 = distinct !DIGlobalVariable(name: "EDQUOT", linkageName: "EDQUOT", scope: !16, file: !16, line: 122, type: !11, isLocal: true, isDefinition: true, variable: i64 122) | |
!19 = distinct !DIGlobalVariable(name: "EFBIG", linkageName: "EFBIG", scope: !16, file: !16, line: 27, type: !11, isLocal: true, isDefinition: true, variable: i64 27) | |
!20 = distinct !DIGlobalVariable(name: "EIO", linkageName: "EIO", scope: !16, file: !16, line: 5, type: !11, isLocal: true, isDefinition: true, variable: i64 5) | |
!21 = distinct !DIGlobalVariable(name: "ENOSPC", linkageName: "ENOSPC", scope: !16, file: !16, line: 28, type: !11, isLocal: true, isDefinition: true, variable: i64 28) | |
!22 = distinct !DIGlobalVariable(name: "EPERM", linkageName: "EPERM", scope: !16, file: !16, line: 1, type: !11, isLocal: true, isDefinition: true, variable: i64 1) | |
!23 = distinct !DIGlobalVariable(name: "EPIPE", linkageName: "EPIPE", scope: !16, file: !16, line: 32, type: !11, isLocal: true, isDefinition: true, variable: i64 32) | |
!24 = distinct !DIGlobalVariable(name: "SYS_write", linkageName: "SYS_write", scope: !10, file: !10, line: 6, type: !11, isLocal: true, isDefinition: true, variable: i64 1) | |
!25 = distinct !DISubprogram(name: "_start", scope: !6, file: !6, line: 16, type: !26, isLocal: false, isDefinition: true, scopeLine: 16, isOptimized: false, unit: !1, variables: !3) | |
!26 = !DISubroutineType(types: !27) | |
!27 = !{!28} | |
!28 = !DIBasicType(name: "void", encoding: DW_ATE_unsigned) | |
!29 = !DILocation(line: 21, column: 20, scope: !30) | |
!30 = distinct !DILexicalBlock(scope: !31, file: !6, line: 20, column: 24) | |
!31 = distinct !DILexicalBlock(scope: !25, file: !6, line: 16, column: 43) | |
!32 = !DILocation(line: 21, column: 18, scope: !30) | |
!33 = !DILocation(line: 22, column: 20, scope: !30) | |
!34 = !DILocation(line: 22, column: 18, scope: !30) | |
!35 = !DILocation(line: 30, column: 20, scope: !31) | |
!36 = distinct !DISubprogram(name: "main", scope: !6, file: !6, line: 47, type: !37, isLocal: true, isDefinition: true, scopeLine: 47, isOptimized: false, unit: !1, variables: !43) | |
!37 = !DISubroutineType(types: !38) | |
!38 = !{!39, !39, !40} | |
!39 = !DIBasicType(name: "i32", size: 32, align: 32, encoding: DW_ATE_signed) | |
!40 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&const &u8", baseType: !41, size: 64, align: 64) | |
!41 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&u8", baseType: !42, size: 64, align: 64) | |
!42 = !DIBasicType(name: "u8", size: 8, align: 8, encoding: DW_ATE_unsigned_char) | |
!43 = !{!44, !45} | |
!44 = !DILocalVariable(name: "c_argc", arg: 1, scope: !36, file: !6, line: 47, type: !39) | |
!45 = !DILocalVariable(name: "c_argv", arg: 2, scope: !46, file: !6, line: 47, type: !40) | |
!46 = distinct !DILexicalBlock(scope: !36, file: !6, line: 47, column: 16) | |
!47 = !DIExpression() | |
!48 = !DILocation(line: 47, column: 16, scope: !36) | |
!49 = !DILocation(line: 47, column: 29, scope: !46) | |
!50 = !DILocation(line: 50, column: 18, scope: !51) | |
!51 = distinct !DILexicalBlock(scope: !52, file: !6, line: 47, column: 50) | |
!52 = distinct !DILexicalBlock(scope: !46, file: !6, line: 47, column: 29) | |
!53 = !DILocation(line: 50, column: 17, scope: !51) | |
!54 = !DILocation(line: 50, column: 10, scope: !51) | |
!55 = !DILocation(line: 51, column: 12, scope: !51) | |
!56 = !DILocation(line: 51, column: 10, scope: !51) | |
!57 = !DILocation(line: 52, column: 13, scope: !51) | |
!58 = !DILocation(line: 52, column: 16, scope: !51) | |
!59 = !DILocation(line: 52, column: 19, scope: !51) | |
!60 = !DILocation(line: 53, column: 5, scope: !51) | |
!61 = distinct !DISubprogram(name: "callMainAndExit", scope: !6, file: !6, line: 42, type: !26, isLocal: true, isDefinition: true, scopeLine: 42, isOptimized: false, unit: !1, variables: !3) | |
!62 = !DILocation(line: 43, column: 13, scope: !63) | |
!63 = distinct !DILexicalBlock(scope: !61, file: !6, line: 42, column: 37) | |
!64 = !DILocation(line: 43, column: 16, scope: !63) | |
!65 = !DILocation(line: 43, column: 29, scope: !63) | |
!66 = !DILocation(line: 44, column: 15, scope: !63) | |
!67 = distinct !DISubprogram(name: "callMain", scope: !6, file: !6, line: 33, type: !68, isLocal: true, isDefinition: true, scopeLine: 33, isOptimized: false, unit: !1, variables: !71) | |
!68 = !DISubroutineType(types: !69) | |
!69 = !{!70} | |
!70 = !DIBasicType(name: "u16", size: 16, align: 16, encoding: DW_ATE_unsigned) | |
!71 = !{!72, !83, !86, !88} | |
!72 = !DILocalVariable(name: "args", scope: !73, file: !6, line: 34, type: !74) | |
!73 = distinct !DILexicalBlock(scope: !67, file: !6, line: 33, column: 24) | |
!74 = !DICompositeType(tag: DW_TAG_structure_type, name: "[][]u8", size: 128, align: 128, elements: !75) | |
!75 = !{!76, !82} | |
!76 = !DIDerivedType(tag: DW_TAG_member, name: "ptr", scope: !74, baseType: !77, size: 64, align: 64) | |
!77 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&[]u8", baseType: !78, size: 64, align: 64) | |
!78 = !DICompositeType(tag: DW_TAG_structure_type, name: "[]u8", size: 128, align: 128, elements: !79) | |
!79 = !{!80, !81} | |
!80 = !DIDerivedType(tag: DW_TAG_member, name: "ptr", scope: !78, baseType: !41, size: 64, align: 64) | |
!81 = !DIDerivedType(tag: DW_TAG_member, name: "len", scope: !78, baseType: !11, size: 64, align: 64, offset: 64) | |
!82 = !DIDerivedType(tag: DW_TAG_member, name: "len", scope: !74, baseType: !11, size: 64, align: 64, offset: 64) | |
!83 = !DILocalVariable(name: "_", scope: !84, file: !6, line: 35, type: !78) | |
!84 = distinct !DILexicalBlock(scope: !85, file: !6, line: 35, column: 5) | |
!85 = distinct !DILexicalBlock(scope: !73, file: !6, line: 34, column: 5) | |
!86 = !DILocalVariable(name: "i", scope: !87, file: !6, line: 35, type: !11) | |
!87 = distinct !DILexicalBlock(scope: !84, file: !6, line: 35, column: 17) | |
!88 = !DILocalVariable(name: "ptr", scope: !89, file: !6, line: 36, type: !41) | |
!89 = distinct !DILexicalBlock(scope: !90, file: !6, line: 35, column: 23) | |
!90 = distinct !DILexicalBlock(scope: !87, file: !6, line: 35, column: 20) | |
!91 = !DILocation(line: 34, column: 32, scope: !73) | |
!92 = !DILocation(line: 34, column: 18, scope: !73) | |
!93 = !DILocation(line: 34, column: 5, scope: !73) | |
!94 = !DILocation(line: 35, column: 17, scope: !87) | |
!95 = !DILocation(line: 35, column: 17, scope: !84) | |
!96 = !DILocation(line: 35, column: 20, scope: !90) | |
!97 = !DILocation(line: 35, column: 20, scope: !87) | |
!98 = !DILocation(line: 35, column: 5, scope: !90) | |
!99 = !DILocation(line: 36, column: 26, scope: !89) | |
!100 = !DILocation(line: 36, column: 25, scope: !89) | |
!101 = !DILocation(line: 36, column: 9, scope: !89) | |
!102 = !DILocation(line: 37, column: 14, scope: !103) | |
!103 = distinct !DILexicalBlock(scope: !89, file: !6, line: 36, column: 9) | |
!104 = !DILocation(line: 37, column: 13, scope: !103) | |
!105 = !DILocation(line: 39, column: 21, scope: !85) | |
!106 = !DILocation(line: 39, column: 5, scope: !85) | |
!107 = !DILocation(line: 37, column: 19, scope: !103) | |
!108 = !DILocation(line: 37, column: 37, scope: !103) | |
!109 = !DILocation(line: 37, column: 36, scope: !103) | |
!110 = !DILocation(line: 37, column: 22, scope: !103) | |
!111 = !DILocation(line: 37, column: 17, scope: !103) | |
!112 = distinct !DISubprogram(name: "exit", scope: !113, file: !113, line: 300, type: !114, isLocal: true, isDefinition: true, scopeLine: 300, isOptimized: false, unit: !1, variables: !116) | |
!113 = !DIFile(filename: "linux.zig", directory: "/home/andy/dev/zig/build/lib/zig/std") | |
!114 = !DISubroutineType(types: !115) | |
!115 = !{!28, !39} | |
!116 = !{!117} | |
!117 = !DILocalVariable(name: "status", arg: 1, scope: !112, file: !113, line: 300, type: !39) | |
!118 = !DILocation(line: 300, column: 13, scope: !112) | |
!119 = !DILocation(line: 301, column: 40, scope: !120) | |
!120 = distinct !DILexicalBlock(scope: !121, file: !113, line: 300, column: 41) | |
!121 = distinct !DILexicalBlock(scope: !112, file: !113, line: 300, column: 13) | |
!122 = !DILocation(line: 301, column: 39, scope: !120) | |
!123 = !DILocation(line: 301, column: 18, scope: !120) | |
!124 = !DILocation(line: 302, column: 5, scope: !120) | |
!125 = distinct !DISubprogram(name: "len", scope: !126, file: !126, line: 9, type: !127, isLocal: true, isDefinition: true, scopeLine: 9, isOptimized: false, unit: !1, variables: !130) | |
!126 = !DIFile(filename: "cstr.zig", directory: "/home/andy/dev/zig/build/lib/zig/std") | |
!127 = !DISubroutineType(types: !128) | |
!128 = !{!11, !129} | |
!129 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&const u8", baseType: !42, size: 64, align: 64) | |
!130 = !{!131, !132} | |
!131 = !DILocalVariable(name: "ptr", arg: 1, scope: !125, file: !126, line: 9, type: !129) | |
!132 = !DILocalVariable(name: "count", scope: !133, file: !126, line: 10, type: !11) | |
!133 = distinct !DILexicalBlock(scope: !134, file: !126, line: 9, column: 37) | |
!134 = distinct !DILexicalBlock(scope: !125, file: !126, line: 9, column: 12) | |
!135 = !DILocation(line: 9, column: 12, scope: !125) | |
!136 = !DILocation(line: 10, column: 5, scope: !133) | |
!137 = !DILocation(line: 11, column: 5, scope: !138) | |
!138 = distinct !DILexicalBlock(scope: !133, file: !126, line: 10, column: 5) | |
!139 = !DILocation(line: 11, column: 16, scope: !138) | |
!140 = !DILocation(line: 11, column: 15, scope: !138) | |
!141 = !DILocation(line: 11, column: 23, scope: !138) | |
!142 = !DILocation(line: 11, column: 29, scope: !138) | |
!143 = !DILocation(line: 11, column: 35, scope: !138) | |
!144 = !DILocation(line: 12, column: 12, scope: !138) | |
!145 = !DILocation(line: 12, column: 5, scope: !138) | |
!146 = distinct !DISubprogram(name: "main", scope: !147, file: !147, line: 3, type: !148, isLocal: true, isDefinition: true, scopeLine: 3, isOptimized: false, unit: !1, variables: !151) | |
!147 = !DIFile(filename: "hello.zig", directory: "../example/hello_world") | |
!148 = !DISubroutineType(types: !149) | |
!149 = !{!70, !150} | |
!150 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&const [][]u8", baseType: !74, size: 64, align: 64) | |
!151 = !{!152} | |
!152 = !DILocalVariable(name: "args", arg: 1, scope: !146, file: !147, line: 3, type: !150) | |
!153 = !DILocation(line: 3, column: 13, scope: !146) | |
!154 = !DILocation(line: 4, column: 23, scope: !155) | |
!155 = distinct !DILexicalBlock(scope: !156, file: !147, line: 3, column: 36) | |
!156 = distinct !DILexicalBlock(scope: !146, file: !147, line: 3, column: 13) | |
!157 = !DILocation(line: 4, column: 42, scope: !156) | |
!158 = distinct !DISubprogram(name: "syscall1", scope: !10, file: !10, line: 380, type: !159, isLocal: true, isDefinition: true, scopeLine: 380, isOptimized: false, unit: !1, variables: !161) | |
!159 = !DISubroutineType(types: !160) | |
!160 = !{!11, !11, !11} | |
!161 = !{!162, !163} | |
!162 = !DILocalVariable(name: "number", arg: 1, scope: !158, file: !10, line: 380, type: !11) | |
!163 = !DILocalVariable(name: "arg1", arg: 2, scope: !164, file: !10, line: 380, type: !11) | |
!164 = distinct !DILexicalBlock(scope: !158, file: !10, line: 380, column: 24) | |
!165 = !DILocation(line: 380, column: 24, scope: !158) | |
!166 = !DILocation(line: 380, column: 39, scope: !164) | |
!167 = !DILocation(line: 383, column: 29, scope: !168) | |
!168 = distinct !DILexicalBlock(scope: !169, file: !10, line: 380, column: 61) | |
!169 = distinct !DILexicalBlock(scope: !164, file: !10, line: 380, column: 39) | |
!170 = !DILocation(line: 384, column: 29, scope: !168) | |
!171 = !DILocation(line: 381, column: 5, scope: !168) | |
!172 = !DILocation(line: 381, column: 5, scope: !169) | |
!173 = distinct !DISubprogram(name: "OutStream_printf", scope: !174, file: !13, line: 102, type: !182, isLocal: true, isDefinition: true, scopeLine: 102, isOptimized: false, unit: !1, variables: !191) | |
!174 = !DICompositeType(tag: DW_TAG_structure_type, name: "OutStream", scope: !13, file: !13, line: 72, size: 32896, align: 32896, elements: !175) | |
!175 = !{!176, !177, !181} | |
!176 = !DIDerivedType(tag: DW_TAG_member, name: "fd", scope: !174, file: !13, line: 73, baseType: !39, size: 32, align: 32) | |
!177 = !DIDerivedType(tag: DW_TAG_member, name: "buffer", scope: !174, file: !13, line: 74, baseType: !178, size: 32768, align: 32768, offset: 32) | |
!178 = !DICompositeType(tag: DW_TAG_array_type, baseType: !42, size: 32768, align: 32768, elements: !179) | |
!179 = !{!180} | |
!180 = !DISubrange(count: 4096) | |
!181 = !DIDerivedType(tag: DW_TAG_member, name: "index", scope: !174, file: !13, line: 75, baseType: !11, size: 64, align: 64, offset: 32832) | |
!182 = !DISubroutineType(types: !183) | |
!183 = !{!184, !188, !189, !190} | |
!184 = !DICompositeType(tag: DW_TAG_structure_type, name: "%usize", size: 128, align: 128, elements: !185) | |
!185 = !{!186, !187} | |
!186 = !DIDerivedType(tag: DW_TAG_member, name: "tag", scope: !184, baseType: !11, size: 16, align: 16) | |
!187 = !DIDerivedType(tag: DW_TAG_member, name: "value", scope: !184, baseType: !11, size: 64, align: 64, offset: 64) | |
!188 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&%usize", baseType: !184, size: 64, align: 64) | |
!189 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&const OutStream", baseType: !174, size: 64, align: 64) | |
!190 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&const []const u8", baseType: !78, size: 64, align: 64) | |
!191 = !{!192, !193, !195} | |
!192 = !DILocalVariable(name: "self", arg: 2, scope: !173, file: !13, line: 102, type: !189) | |
!193 = !DILocalVariable(name: "str", arg: 3, scope: !194, file: !13, line: 102, type: !190) | |
!194 = distinct !DILexicalBlock(scope: !173, file: !13, line: 102, column: 19) | |
!195 = !DILocalVariable(name: "byte_count", scope: !196, file: !13, line: 103, type: !11) | |
!196 = distinct !DILexicalBlock(scope: !197, file: !13, line: 102, column: 64) | |
!197 = distinct !DILexicalBlock(scope: !194, file: !13, line: 102, column: 37) | |
!198 = !DILocation(line: 102, column: 19, scope: !173) | |
!199 = !DILocation(line: 102, column: 37, scope: !194) | |
!200 = !DILocation(line: 103, column: 40, scope: !196) | |
!201 = !DILocation(line: 103, column: 46, scope: !196) | |
!202 = !DILocation(line: 103, column: 28, scope: !196) | |
!203 = !DILocation(line: 103, column: 9, scope: !196) | |
!204 = !DILocation(line: 104, column: 21, scope: !205) | |
!205 = distinct !DILexicalBlock(scope: !196, file: !13, line: 103, column: 9) | |
!206 = !DILocation(line: 104, column: 27, scope: !205) | |
!207 = !DILocation(line: 104, column: 9, scope: !205) | |
!208 = !DILocation(line: 105, column: 16, scope: !205) | |
!209 = !DILocation(line: 105, column: 9, scope: !205) | |
!210 = distinct !DISubprogram(name: "OutStream_write", scope: !174, file: !13, line: 83, type: !182, isLocal: true, isDefinition: true, scopeLine: 83, isOptimized: false, unit: !1, variables: !211) | |
!211 = !{!212, !213, !215, !218, !220, !222} | |
!212 = !DILocalVariable(name: "self", arg: 2, scope: !210, file: !13, line: 83, type: !189) | |
!213 = !DILocalVariable(name: "bytes", arg: 3, scope: !214, file: !13, line: 83, type: !190) | |
!214 = distinct !DILexicalBlock(scope: !210, file: !13, line: 83, column: 18) | |
!215 = !DILocalVariable(name: "src_bytes_left", scope: !216, file: !13, line: 84, type: !11) | |
!216 = distinct !DILexicalBlock(scope: !217, file: !13, line: 83, column: 65) | |
!217 = distinct !DILexicalBlock(scope: !214, file: !13, line: 83, column: 36) | |
!218 = !DILocalVariable(name: "src_index", scope: !219, file: !13, line: 85, type: !11) | |
!219 = distinct !DILexicalBlock(scope: !216, file: !13, line: 84, column: 9) | |
!220 = !DILocalVariable(name: "dest_space_left", scope: !221, file: !13, line: 86, type: !11) | |
!221 = distinct !DILexicalBlock(scope: !219, file: !13, line: 85, column: 9) | |
!222 = !DILocalVariable(name: "copy_amt", scope: !223, file: !13, line: 89, type: !11) | |
!223 = distinct !DILexicalBlock(scope: !224, file: !13, line: 88, column: 36) | |
!224 = distinct !DILexicalBlock(scope: !221, file: !13, line: 86, column: 9) | |
!225 = !DILocation(line: 83, column: 18, scope: !210) | |
!226 = !DILocation(line: 83, column: 36, scope: !214) | |
!227 = !DILocation(line: 84, column: 35, scope: !216) | |
!228 = !DILocation(line: 84, column: 9, scope: !216) | |
!229 = !DILocation(line: 85, column: 9, scope: !219) | |
!230 = !DILocation(line: 86, column: 37, scope: !221) | |
!231 = !DILocation(line: 86, column: 55, scope: !221) | |
!232 = !DILocation(line: 86, column: 49, scope: !221) | |
!233 = !DILocation(line: 88, column: 16, scope: !224) | |
!234 = !DILocation(line: 88, column: 31, scope: !224) | |
!235 = !DILocation(line: 89, column: 39, scope: !223) | |
!236 = !DILocation(line: 89, column: 56, scope: !223) | |
!237 = !DILocation(line: 89, column: 38, scope: !223) | |
!238 = !DILocation(line: 89, column: 13, scope: !223) | |
!239 = !DILocation(line: 90, column: 26, scope: !240) | |
!240 = distinct !DILexicalBlock(scope: !223, file: !13, line: 89, column: 13) | |
!241 = !DILocation(line: 90, column: 38, scope: !240) | |
!242 = !DILocation(line: 90, column: 33, scope: !240) | |
!243 = !DILocation(line: 97, column: 21, scope: !224) | |
!244 = !DILocation(line: 97, column: 9, scope: !224) | |
!245 = !DILocation(line: 93, column: 29, scope: !246) | |
!246 = distinct !DILexicalBlock(scope: !240, file: !13, line: 92, column: 48) | |
!247 = !DILocation(line: 93, column: 35, scope: !246) | |
!248 = !DILocation(line: 93, column: 17, scope: !246) | |
!249 = !DILocation(line: 92, column: 13, scope: !240) | |
!250 = !DILocation(line: 95, column: 13, scope: !240) | |
!251 = !DILocation(line: 95, column: 31, scope: !240) | |
!252 = !DILocation(line: 95, column: 28, scope: !240) | |
!253 = !DILocation(line: 86, column: 9, scope: !221) | |
!254 = !DILocation(line: 88, column: 9, scope: !224) | |
!255 = !DILocation(line: 90, column: 54, scope: !240) | |
!256 = !DILocation(line: 90, column: 53, scope: !240) | |
!257 = !DILocation(line: 90, column: 66, scope: !240) | |
!258 = !DILocation(line: 90, column: 13, scope: !240) | |
!259 = !DILocation(line: 91, column: 17, scope: !240) | |
!260 = !DILocation(line: 91, column: 27, scope: !240) | |
!261 = !DILocation(line: 91, column: 24, scope: !240) | |
!262 = !DILocation(line: 92, column: 21, scope: !240) | |
!263 = !DILocation(line: 92, column: 35, scope: !240) | |
!264 = !DILocation(line: 92, column: 28, scope: !240) | |
!265 = distinct !DISubprogram(name: "OutStream_flush", scope: !174, file: !13, line: 118, type: !266, isLocal: true, isDefinition: true, scopeLine: 118, isOptimized: false, unit: !1, variables: !268) | |
!266 = !DISubroutineType(types: !267) | |
!267 = !{!70, !189} | |
!268 = !{!269, !270, !274} | |
!269 = !DILocalVariable(name: "self", arg: 1, scope: !265, file: !13, line: 118, type: !189) | |
!270 = !DILocalVariable(name: "write_ret", scope: !271, file: !13, line: 120, type: !11) | |
!271 = distinct !DILexicalBlock(scope: !272, file: !13, line: 119, column: 22) | |
!272 = distinct !DILexicalBlock(scope: !273, file: !13, line: 118, column: 45) | |
!273 = distinct !DILexicalBlock(scope: !265, file: !13, line: 118, column: 18) | |
!274 = !DILocalVariable(name: "write_err", scope: !275, file: !13, line: 121, type: !11) | |
!275 = distinct !DILexicalBlock(scope: !271, file: !13, line: 120, column: 13) | |
!276 = !DILocation(line: 118, column: 18, scope: !265) | |
!277 = !DILocation(line: 119, column: 9, scope: !272) | |
!278 = !DILocation(line: 120, column: 48, scope: !271) | |
!279 = !DILocation(line: 120, column: 58, scope: !271) | |
!280 = !DILocation(line: 120, column: 65, scope: !271) | |
!281 = !DILocation(line: 120, column: 74, scope: !271) | |
!282 = !DILocation(line: 120, column: 43, scope: !271) | |
!283 = !DILocation(line: 120, column: 13, scope: !271) | |
!284 = !DILocation(line: 121, column: 47, scope: !275) | |
!285 = !DILocation(line: 121, column: 46, scope: !275) | |
!286 = !DILocation(line: 121, column: 13, scope: !275) | |
!287 = !DILocation(line: 122, column: 17, scope: !288) | |
!288 = distinct !DILexicalBlock(scope: !275, file: !13, line: 121, column: 13) | |
!289 = !DILocation(line: 122, column: 27, scope: !288) | |
!290 = !DILocation(line: 123, column: 24, scope: !291) | |
!291 = distinct !DILexicalBlock(scope: !288, file: !13, line: 122, column: 32) | |
!292 = !DILocation(line: 122, column: 13, scope: !288) | |
!293 = !DILocation(line: 124, column: 37, scope: !291) | |
!294 = !DILocation(line: 125, column: 37, scope: !291) | |
!295 = !DILocation(line: 123, column: 17, scope: !291) | |
!296 = !DILocation(line: 135, column: 17, scope: !288) | |
!297 = !DILocation(line: 135, column: 24, scope: !288) | |
!298 = !DILocation(line: 136, column: 13, scope: !288) | |
!299 = distinct !DISubprogram(name: "min", scope: !300, file: !300, line: 7, type: !159, isLocal: true, isDefinition: true, scopeLine: 7, isOptimized: false, unit: !1, variables: !301) | |
!300 = !DIFile(filename: "math.zig", directory: "/home/andy/dev/zig/build/lib/zig/std") | |
!301 = !{!302, !305} | |
!302 = !DILocalVariable(name: "x", arg: 1, scope: !303, file: !300, line: 7, type: !11) | |
!303 = distinct !DILexicalBlock(scope: !304, file: !300, line: 7, column: 20) | |
!304 = distinct !DILexicalBlock(scope: !299, file: !300, line: 7, column: 12) | |
!305 = !DILocalVariable(name: "y", arg: 2, scope: !306, file: !300, line: 7, type: !11) | |
!306 = distinct !DILexicalBlock(scope: !303, file: !300, line: 7, column: 12) | |
!307 = !DILocation(line: 7, column: 12, scope: !303) | |
!308 = !DILocation(line: 7, column: 20, scope: !306) | |
!309 = !DILocation(line: 8, column: 9, scope: !310) | |
!310 = distinct !DILexicalBlock(scope: !311, file: !300, line: 7, column: 46) | |
!311 = distinct !DILexicalBlock(scope: !306, file: !300, line: 7, column: 20) | |
!312 = !DILocation(line: 8, column: 13, scope: !310) | |
!313 = !DILocation(line: 8, column: 11, scope: !310) | |
!314 = !DILocation(line: 8, column: 16, scope: !310) | |
!315 = !DILocation(line: 8, column: 5, scope: !310) | |
!316 = !DILocation(line: 8, column: 23, scope: !310) | |
!317 = !DILocation(line: 8, column: 5, scope: !311) | |
!318 = distinct !DISubprogram(name: "write", scope: !113, file: !113, line: 251, type: !319, isLocal: true, isDefinition: true, scopeLine: 251, isOptimized: false, unit: !1, variables: !321) | |
!319 = !DISubroutineType(types: !320) | |
!320 = !{!11, !39, !129, !11} | |
!321 = !{!322, !323, !325} | |
!322 = !DILocalVariable(name: "fd", arg: 1, scope: !318, file: !113, line: 251, type: !39) | |
!323 = !DILocalVariable(name: "buf", arg: 2, scope: !324, file: !113, line: 251, type: !129) | |
!324 = distinct !DILexicalBlock(scope: !318, file: !113, line: 251, column: 14) | |
!325 = !DILocalVariable(name: "count", arg: 3, scope: !326, file: !113, line: 251, type: !11) | |
!326 = distinct !DILexicalBlock(scope: !324, file: !113, line: 251, column: 23) | |
!327 = !DILocation(line: 251, column: 14, scope: !318) | |
!328 = !DILocation(line: 251, column: 23, scope: !324) | |
!329 = !DILocation(line: 251, column: 39, scope: !326) | |
!330 = !DILocation(line: 252, column: 41, scope: !331) | |
!331 = distinct !DILexicalBlock(scope: !332, file: !113, line: 251, column: 62) | |
!332 = distinct !DILexicalBlock(scope: !326, file: !113, line: 251, column: 39) | |
!333 = !DILocation(line: 252, column: 40, scope: !331) | |
!334 = !DILocation(line: 252, column: 52, scope: !331) | |
!335 = !DILocation(line: 252, column: 51, scope: !331) | |
!336 = !DILocation(line: 252, column: 58, scope: !331) | |
!337 = !DILocation(line: 252, column: 18, scope: !331) | |
!338 = !DILocation(line: 252, column: 18, scope: !332) | |
!339 = distinct !DISubprogram(name: "getErrno", scope: !113, file: !113, line: 228, type: !340, isLocal: true, isDefinition: true, scopeLine: 228, isOptimized: false, unit: !1, variables: !342) | |
!340 = !DISubroutineType(types: !341) | |
!341 = !{!11, !11} | |
!342 = !{!343, !344} | |
!343 = !DILocalVariable(name: "r", arg: 1, scope: !339, file: !113, line: 228, type: !11) | |
!344 = !DILocalVariable(name: "signed_r", scope: !345, file: !113, line: 229, type: !347) | |
!345 = distinct !DILexicalBlock(scope: !346, file: !113, line: 228, column: 36) | |
!346 = distinct !DILexicalBlock(scope: !339, file: !113, line: 228, column: 17) | |
!347 = !DIBasicType(name: "isize", size: 64, align: 64, encoding: DW_ATE_signed) | |
!348 = !DILocation(line: 228, column: 17, scope: !339) | |
!349 = !DILocation(line: 229, column: 22, scope: !345) | |
!350 = !DILocation(line: 229, column: 5, scope: !345) | |
!351 = !DILocation(line: 230, column: 9, scope: !352) | |
!352 = distinct !DILexicalBlock(scope: !345, file: !113, line: 229, column: 5) | |
!353 = !DILocation(line: 230, column: 18, scope: !352) | |
!354 = !DILocation(line: 230, column: 26, scope: !352) | |
!355 = !DILocation(line: 230, column: 29, scope: !352) | |
!356 = !DILocation(line: 230, column: 38, scope: !352) | |
!357 = !DILocation(line: 230, column: 50, scope: !352) | |
!358 = !DILocation(line: 230, column: 49, scope: !352) | |
!359 = !DILocation(line: 230, column: 5, scope: !352) | |
!360 = !DILocation(line: 230, column: 5, scope: !346) | |
!361 = !DILocation(line: 230, column: 48, scope: !352) | |
!362 = distinct !DISubprogram(name: "syscall3", scope: !10, file: !10, line: 397, type: !363, isLocal: true, isDefinition: true, scopeLine: 397, isOptimized: false, unit: !1, variables: !365) | |
!363 = !DISubroutineType(types: !364) | |
!364 = !{!11, !11, !11, !11, !11} | |
!365 = !{!366, !367, !369, !371} | |
!366 = !DILocalVariable(name: "number", arg: 1, scope: !362, file: !10, line: 397, type: !11) | |
!367 = !DILocalVariable(name: "arg1", arg: 2, scope: !368, file: !10, line: 397, type: !11) | |
!368 = distinct !DILexicalBlock(scope: !362, file: !10, line: 397, column: 24) | |
!369 = !DILocalVariable(name: "arg2", arg: 3, scope: !370, file: !10, line: 397, type: !11) | |
!370 = distinct !DILexicalBlock(scope: !368, file: !10, line: 397, column: 39) | |
!371 = !DILocalVariable(name: "arg3", arg: 4, scope: !372, file: !10, line: 397, type: !11) | |
!372 = distinct !DILexicalBlock(scope: !370, file: !10, line: 397, column: 52) | |
!373 = !DILocation(line: 397, column: 24, scope: !362) | |
!374 = !DILocation(line: 397, column: 39, scope: !368) | |
!375 = !DILocation(line: 397, column: 52, scope: !370) | |
!376 = !DILocation(line: 397, column: 65, scope: !372) | |
!377 = !DILocation(line: 400, column: 29, scope: !378) | |
!378 = distinct !DILexicalBlock(scope: !379, file: !10, line: 397, column: 87) | |
!379 = distinct !DILexicalBlock(scope: !372, file: !10, line: 397, column: 65) | |
!380 = !DILocation(line: 401, column: 29, scope: !378) | |
!381 = !DILocation(line: 402, column: 29, scope: !378) | |
!382 = !DILocation(line: 403, column: 29, scope: !378) | |
!383 = !DILocation(line: 398, column: 5, scope: !378) | |
!384 = !DILocation(line: 398, column: 5, scope: !379) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[nix-shell:~/tmp]$ valgrind llc -filetype=obj bug.ll | |
==27195== Memcheck, a memory error detector | |
==27195== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. | |
==27195== Using Valgrind-3.12.0 and LibVEX; rerun with -h for copyright info | |
==27195== Command: llc -filetype=obj bug.ll | |
==27195== | |
==27195== Conditional jump or move depends on uninitialised value(s) | |
==27195== at 0x56A0917: (anonymous namespace)::LiveDebugValues::transferDebugValue(llvm::MachineInstr const&, (anonymous namespace)::LiveDebugValues::OpenRangesSet&, llvm::UniqueVector<(anonymous namespace)::LiveDebugValues::VarLoc>&) [clone .isra.207] (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x56A3EE5: (anonymous namespace)::LiveDebugValues::ExtendRanges(llvm::MachineFunction&) [clone .constprop.259] (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x57214A0: llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x55CDF01: llvm::FPPassManager::runOnFunction(llvm::Function&) (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x55CE29A: llvm::FPPassManager::runOnModule(llvm::Module&) (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x55CDB4E: llvm::legacy::PassManagerImpl::run(llvm::Module&) (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x41C0B7: compileModule(char**, llvm::LLVMContext&) [clone .constprop.385] (in /nix/store/jis8r9v01xz357h3b39sqym8rls3h6nj-llvm-3.9.0/bin/llc) | |
==27195== by 0x412D3F: main (in /nix/store/jis8r9v01xz357h3b39sqym8rls3h6nj-llvm-3.9.0/bin/llc) | |
==27195== | |
==27195== Conditional jump or move depends on uninitialised value(s) | |
==27195== at 0x56A0A0E: (anonymous namespace)::LiveDebugValues::transferDebugValue(llvm::MachineInstr const&, (anonymous namespace)::LiveDebugValues::OpenRangesSet&, llvm::UniqueVector<(anonymous namespace)::LiveDebugValues::VarLoc>&) [clone .isra.207] (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x56A3EE5: (anonymous namespace)::LiveDebugValues::ExtendRanges(llvm::MachineFunction&) [clone .constprop.259] (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x57214A0: llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x55CDF01: llvm::FPPassManager::runOnFunction(llvm::Function&) (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x55CE29A: llvm::FPPassManager::runOnModule(llvm::Module&) (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x55CDB4E: llvm::legacy::PassManagerImpl::run(llvm::Module&) (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x41C0B7: compileModule(char**, llvm::LLVMContext&) [clone .constprop.385] (in /nix/store/jis8r9v01xz357h3b39sqym8rls3h6nj-llvm-3.9.0/bin/llc) | |
==27195== by 0x412D3F: main (in /nix/store/jis8r9v01xz357h3b39sqym8rls3h6nj-llvm-3.9.0/bin/llc) | |
==27195== | |
==27195== Conditional jump or move depends on uninitialised value(s) | |
==27195== at 0x56A1115: (anonymous namespace)::LiveDebugValues::transferDebugValue(llvm::MachineInstr const&, (anonymous namespace)::LiveDebugValues::OpenRangesSet&, llvm::UniqueVector<(anonymous namespace)::LiveDebugValues::VarLoc>&) [clone .isra.207] (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x56A3EE5: (anonymous namespace)::LiveDebugValues::ExtendRanges(llvm::MachineFunction&) [clone .constprop.259] (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x57214A0: llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x55CDF01: llvm::FPPassManager::runOnFunction(llvm::Function&) (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x55CE29A: llvm::FPPassManager::runOnModule(llvm::Module&) (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x55CDB4E: llvm::legacy::PassManagerImpl::run(llvm::Module&) (in /nix/store/06dpmfn74zrmman8nq8p96dg50lwbxhg-llvm-3.9.0-lib/lib/libLLVM-3.9.so) | |
==27195== by 0x41C0B7: compileModule(char**, llvm::LLVMContext&) [clone .constprop.385] (in /nix/store/jis8r9v01xz357h3b39sqym8rls3h6nj-llvm-3.9.0/bin/llc) | |
==27195== by 0x412D3F: main (in /nix/store/jis8r9v01xz357h3b39sqym8rls3h6nj-llvm-3.9.0/bin/llc) | |
==27195== | |
==27195== | |
==27195== HEAP SUMMARY: | |
==27195== in use at exit: 83,032 bytes in 6 blocks | |
==27195== total heap usage: 21,055 allocs, 21,049 frees, 6,451,605 bytes allocated | |
==27195== | |
==27195== LEAK SUMMARY: | |
==27195== definitely lost: 10,240 bytes in 1 blocks | |
==27195== indirectly lost: 0 bytes in 0 blocks | |
==27195== possibly lost: 0 bytes in 0 blocks | |
==27195== still reachable: 72,792 bytes in 5 blocks | |
==27195== suppressed: 0 bytes in 0 blocks | |
==27195== Rerun with --leak-check=full to see details of leaked memory | |
==27195== | |
==27195== For counts of detected and suppressed errors, rerun with: -v | |
==27195== Use --track-origins=yes to see where uninitialised values come from | |
==27195== ERROR SUMMARY: 42 errors from 3 contexts (suppressed: 0 from 0) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment