Skip to content

Instantly share code, notes, and snippets.

@andrewrk
Created December 26, 2016 22:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andrewrk/041af662b3ff515cd0be64ab85c112d7 to your computer and use it in GitHub Desktop.
Save andrewrk/041af662b3ff515cd0be64ab85c112d7 to your computer and use it in GitHub Desktop.
problem with LiveDebugValues in llvm
; 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)
[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