hello.hs (original) (raw)

target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"

target triple = "x86_64-unknown-linux"

declare ccc i8* @memcpy$def(i8*, i8*, i64)

declare ccc i8* @memmove$def(i8*, i8*, i64)

declare ccc i8* @memset$def(i8*, i64, i64)

declare ccc i64 @newSpark$def(i8*, i8*)

!0 = !{!"root"}

!1 = !{!"top", !0}

!2 = !{!"stack", !1}

!3 = !{!"heap", !1}

!4 = !{!"rx", !3}

!5 = !{!"base", !1}

%Main_main3_bytes_struct = type <{[12 x i8]}>

@Main_main3_bytes$def = internal constant %Main_main3_bytes_struct<{[12 x i8] [i8 72, i8 101, i8 108, i8 108, i8 111, i8 32, i8 87, i8 111, i8 114, i8 108, i8 100, i8 0]}>, align 1

@Main_main3_bytes = alias i8, bitcast (%Main_main3_bytes_struct* @Main_main3_bytes$def to i8*)

%Main_main2_closure_struct = type <{i64, i64, i64, i64}>

@Main_main2_closure$def = internal global %Main_main2_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @Main_main2_info$def to i64), i64 0, i64 0, i64 0}>

@Main_main2_closure = alias i8, bitcast (%Main_main2_closure_struct* @Main_main2_closure$def to i8*)

@Main_main2_info = alias i8, bitcast (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @Main_main2_info$def to i8*)

define ghccc void @Main_main2_info$def(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg) align 8 "function-instrument"="xray-always" nounwind prefix <{i64, i32, i32}><{i64 0, i32 21, i32 add (i32 trunc (i64 sub (i64 ptrtoint (i8* @base_GHCziShow_showLitString_closure to i64),i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @Main_main2_info$def to i64)) to i32),i32 0)}> !dbg !7

{

c38m:

%R3_Var = alloca i64, i32 1

store i64 undef, i64* %R3_Var

%R4_Var = alloca i64, i32 1

store i64 undef, i64* %R4_Var

%R5_Var = alloca i64, i32 1

store i64 undef, i64* %R5_Var

%R6_Var = alloca i64, i32 1

store i64 undef, i64* %R6_Var

%F1_Var = alloca float, i32 1

store float undef, float* %F1_Var

%D1_Var = alloca double, i32 1

store double undef, double* %D1_Var

%F2_Var = alloca float, i32 1

store float undef, float* %F2_Var

%D2_Var = alloca double, i32 1

store double undef, double* %D2_Var

%F3_Var = alloca float, i32 1

store float undef, float* %F3_Var

%D3_Var = alloca double, i32 1

store double undef, double* %D3_Var

%F4_Var = alloca float, i32 1

store float undef, float* %F4_Var

%D4_Var = alloca double, i32 1

store double undef, double* %D4_Var

%F5_Var = alloca float, i32 1

store float undef, float* %F5_Var

%D5_Var = alloca double, i32 1

store double undef, double* %D5_Var

%F6_Var = alloca float, i32 1

store float undef, float* %F6_Var

%D6_Var = alloca double, i32 1

store double undef, double* %D6_Var

%lc38h = alloca i64, i32 1

%R2_Var = alloca i64, i32 1

store i64 undef, i64* %R2_Var

%Sp_Var = alloca i64*, i32 1

store i64* %Sp_Arg, i64** %Sp_Var

%R1_Var = alloca i64, i32 1

store i64 %R1_Arg, i64* %R1_Var

%ln38s = load i64*, i64** %Sp_Var

%ln38t = getelementptr inbounds i64, i64* %ln38s, i32 -3

%ln38u = ptrtoint i64* %ln38t to i64

%ln38v = icmp ult i64 %ln38u, %SpLim_Arg

%ln38x = call ccc i1 (i1, i1) @llvm.expect.i1( i1 %ln38v, i1 0 )

br i1 %ln38x, label %c38n, label %c38o

c38o:

%ln38y = ptrtoint i64* %Base_Arg to i64

%ln38z = inttoptr i64 %ln38y to i8*

%ln38A = load i64, i64* %R1_Var

%ln38B = inttoptr i64 %ln38A to i8*

%ln38C = bitcast i8* @newCAF to i8* (i8*, i8*)*

store i64 undef, i64* %R3_Var

store i64 undef, i64* %R4_Var

store i64 undef, i64* %R5_Var

store i64 undef, i64* %R6_Var

store float undef, float* %F1_Var

store double undef, double* %D1_Var

store float undef, float* %F2_Var

store double undef, double* %D2_Var

store float undef, float* %F3_Var

store double undef, double* %D3_Var

store float undef, float* %F4_Var

store double undef, double* %D4_Var

store float undef, float* %F5_Var

store double undef, double* %D5_Var

store float undef, float* %F6_Var

store double undef, double* %D6_Var

%ln38D = call ccc i8* (i8*, i8*) %ln38C( i8* %ln38z, i8* %ln38B ) nounwind

%ln38E = ptrtoint i8* %ln38D to i64

store i64 %ln38E, i64* %lc38h

%ln38F = load i64, i64* %lc38h

%ln38G = icmp eq i64 %ln38F, 0

br i1 %ln38G, label %c38j, label %c38i

c38i:

%ln38I = ptrtoint i8* @stg_bh_upd_frame_info to i64

%ln38H = load i64*, i64** %Sp_Var

%ln38J = getelementptr inbounds i64, i64* %ln38H, i32 -2

store i64 %ln38I, i64* %ln38J, !tbaa !2

%ln38L = load i64, i64* %lc38h

%ln38K = load i64*, i64** %Sp_Var

%ln38M = getelementptr inbounds i64, i64* %ln38K, i32 -1

store i64 %ln38L, i64* %ln38M, !tbaa !2

%ln38O = ptrtoint void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @c38k_info$def to i64

%ln38N = load i64*, i64** %Sp_Var

%ln38P = getelementptr inbounds i64, i64* %ln38N, i32 -3

store i64 %ln38O, i64* %ln38P, !tbaa !2

%ln38Q = ptrtoint %Main_main3_bytes_struct* @Main_main3_bytes$def to i64

store i64 %ln38Q, i64* %R2_Var

%ln38R = load i64*, i64** %Sp_Var

%ln38S = getelementptr inbounds i64, i64* %ln38R, i32 -3

%ln38T = ptrtoint i64* %ln38S to i64

%ln38U = inttoptr i64 %ln38T to i64*

store i64* %ln38U, i64** %Sp_Var

%ln38V = bitcast i8* @ghczmprim_GHCziCString_unpackCStringzh_info to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)*

%ln38W = load i64*, i64** %Sp_Var

%ln38X = load i64, i64* %R1_Var

%ln38Y = load i64, i64* %R2_Var

tail call ghccc void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64) %ln38V( i64* %Base_Arg, i64* %ln38W, i64* %Hp_Arg, i64 %ln38X, i64 %ln38Y, i64 undef, i64 undef, i64 undef, i64 undef, i64 %SpLim_Arg ) nounwind

ret void

c38j:

%ln390 = load i64, i64* %R1_Var

%ln391 = inttoptr i64 %ln390 to i64*

%ln392 = load i64, i64* %ln391, !tbaa !4

%ln393 = inttoptr i64 %ln392 to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)*

%ln394 = load i64*, i64** %Sp_Var

%ln395 = load i64, i64* %R1_Var

tail call ghccc void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64) %ln393( i64* %Base_Arg, i64* %ln394, i64* %Hp_Arg, i64 %ln395, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %SpLim_Arg ) nounwind

ret void

c38n:

%ln396 = load i64, i64* %R1_Var

store i64 %ln396, i64* %R1_Var

%ln397 = getelementptr inbounds i64, i64* %Base_Arg, i32 -2

%ln398 = bitcast i64* %ln397 to i64*

%ln399 = load i64, i64* %ln398, !tbaa !5

%ln39a = inttoptr i64 %ln399 to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)*

%ln39b = load i64*, i64** %Sp_Var

%ln39c = load i64, i64* %R1_Var

tail call ghccc void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64) %ln39a( i64* %Base_Arg, i64* %ln39b, i64* %Hp_Arg, i64 %ln39c, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %SpLim_Arg ) nounwind

ret void

}

declare ccc i1 @llvm.expect.i1(i1, i1)

@c38k_info = internal alias i8, bitcast (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @c38k_info$def to i8*)

define internal ghccc void @c38k_info$def(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg) align 8 "function-instrument"="xray-always" nounwind prefix <{i64, i32, i32}><{i64 0, i32 30, i32 add (i32 trunc (i64 sub (i64 ptrtoint (i8* @base_GHCziShow_showLitString_closure to i64),i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @c38k_info$def to i64)) to i32),i32 0)}> !dbg !10

{

c38k:

%R3_Var = alloca i64, i32 1

store i64 undef, i64* %R3_Var

%R2_Var = alloca i64, i32 1

store i64 undef, i64* %R2_Var

%Sp_Var = alloca i64*, i32 1

store i64* %Sp_Arg, i64** %Sp_Var

%ln39d = ptrtoint i8* @base_GHCziShow_zdfShowZMZN1_closure to i64

store i64 %ln39d, i64* %R3_Var

store i64 %R1_Arg, i64* %R2_Var

%ln39e = load i64*, i64** %Sp_Var

%ln39f = getelementptr inbounds i64, i64* %ln39e, i32 1

%ln39g = ptrtoint i64* %ln39f to i64

%ln39h = inttoptr i64 %ln39g to i64*

store i64* %ln39h, i64** %Sp_Var

%ln39i = bitcast i8* @base_GHCziShow_showLitString_info to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)*

%ln39j = load i64*, i64** %Sp_Var

%ln39k = load i64, i64* %R2_Var

%ln39l = load i64, i64* %R3_Var

tail call ghccc void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64) %ln39i( i64* %Base_Arg, i64* %ln39j, i64* %Hp_Arg, i64 %R1_Arg, i64 %ln39k, i64 %ln39l, i64 undef, i64 undef, i64 undef, i64 %SpLim_Arg ) nounwind

ret void

}

%Main_main1_closure_struct = type <{i64, i64, i64, i64}>

@Main_main1_closure$def = internal global %Main_main1_closure_struct<{i64 ptrtoint (i8* @ghczmprim_GHCziTypes_ZC_con_info to i64), i64 ptrtoint (i8* @base_GHCziShow_zdfShowZLz2cUZR3_closure to i64), i64 ptrtoint (%Main_main2_closure_struct* @Main_main2_closure$def to i64), i64 0}>

@Main_main1_closure = alias i8, bitcast (%Main_main1_closure_struct* @Main_main1_closure$def to i8*)

%Main_main_closure_struct = type <{i64, i64, i64, i64, i64}>

@Main_main_closure$def = internal global %Main_main_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @Main_main_info$def to i64), i64 ptrtoint (i8* @base_GHCziIOziHandleziText_hPutStrzq_closure to i64), i64 ptrtoint (i8* @base_GHCziIOziHandleziFD_stdout_closure to i64), i64 ptrtoint (%Main_main1_closure_struct* @Main_main1_closure$def to i64), i64 0}>

@Main_main_closure = alias i8, bitcast (%Main_main_closure_struct* @Main_main_closure$def to i8*)

@Main_main_info = alias i8, bitcast (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @Main_main_info$def to i8*)

define ghccc void @Main_main_info$def(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg) align 8 "function-instrument"="xray-always" nounwind prefix <{i64, i64, i32, i32}><{i64 4294967299, i64 3, i32 14, i32 0}> !dbg !13

{

c39q:

%R4_Var = alloca i64, i32 1

store i64 undef, i64* %R4_Var

%R3_Var = alloca i64, i32 1

store i64 undef, i64* %R3_Var

%R2_Var = alloca i64, i32 1

store i64 undef, i64* %R2_Var

%ln39t = ptrtoint i8* @ghczmprim_GHCziTypes_True_closure to i64

%ln39u = add i64 %ln39t, 2

store i64 %ln39u, i64* %R4_Var

%ln39v = ptrtoint %Main_main1_closure_struct* @Main_main1_closure$def to i64

%ln39w = add i64 %ln39v, 2

store i64 %ln39w, i64* %R3_Var

%ln39x = ptrtoint i8* @base_GHCziIOziHandleziFD_stdout_closure to i64

store i64 %ln39x, i64* %R2_Var

%ln39y = bitcast i8* @base_GHCziIOziHandleziText_hPutStrzq_info to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)*

%ln39z = load i64, i64* %R2_Var

%ln39A = load i64, i64* %R3_Var

%ln39B = load i64, i64* %R4_Var

tail call ghccc void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64) %ln39y( i64* %Base_Arg, i64* %Sp_Arg, i64* %Hp_Arg, i64 %R1_Arg, i64 %ln39z, i64 %ln39A, i64 %ln39B, i64 undef, i64 undef, i64 %SpLim_Arg ) nounwind

ret void

}

%Main_main4_closure_struct = type <{i64, i64, i64, i64}>

@Main_main4_closure$def = internal global %Main_main4_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @Main_main4_info$def to i64), i64 ptrtoint (%Main_main_closure_struct* @Main_main_closure$def to i64), i64 ptrtoint (i8* @base_GHCziTopHandler_runMainIO1_closure to i64), i64 0}>

@Main_main4_closure = alias i8, bitcast (%Main_main4_closure_struct* @Main_main4_closure$def to i8*)

@Main_main4_info = alias i8, bitcast (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @Main_main4_info$def to i8*)

define ghccc void @Main_main4_info$def(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg) align 8 "function-instrument"="xray-always" nounwind prefix <{i64, i64, i32, i32}><{i64 4294967299, i64 2, i32 14, i32 0}>

{

c39G:

%R2_Var = alloca i64, i32 1

store i64 undef, i64* %R2_Var

%ln39J = ptrtoint %Main_main_closure_struct* @Main_main_closure$def to i64

%ln39K = add i64 %ln39J, 1

store i64 %ln39K, i64* %R2_Var

%ln39L = bitcast i8* @base_GHCziTopHandler_runMainIO1_info to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)*

%ln39M = load i64, i64* %R2_Var

tail call ghccc void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64) %ln39L( i64* %Base_Arg, i64* %Sp_Arg, i64* %Hp_Arg, i64 %R1_Arg, i64 %ln39M, i64 undef, i64 undef, i64 undef, i64 undef, i64 %SpLim_Arg ) nounwind

ret void

}

%ZCMain_main_closure_struct = type <{i64, i64}>

@ZCMain_main_closure$def = internal global %ZCMain_main_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @ZCMain_main_info$def to i64), i64 0}>

@ZCMain_main_closure = alias i8, bitcast (%ZCMain_main_closure_struct* @ZCMain_main_closure$def to i8*)

@ZCMain_main_info = alias i8, bitcast (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @ZCMain_main_info$def to i8*)

define ghccc void @ZCMain_main_info$def(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg) align 8 "function-instrument"="xray-always" nounwind prefix <{i64, i64, i32, i32}><{i64 4294967299, i64 0, i32 14, i32 add (i32 trunc (i64 sub (i64 ptrtoint (%Main_main4_closure_struct* @Main_main4_closure$def to i64),i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @ZCMain_main_info$def to i64)) to i32),i32 0)}>

{

c39R:

%ln39U = bitcast void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)* @Main_main4_info$def to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64)*

tail call ghccc void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64) %ln39U( i64* %Base_Arg, i64* %Sp_Arg, i64* %Hp_Arg, i64 %R1_Arg, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %SpLim_Arg ) nounwind

ret void

}

%Main_zdtrModule4_bytes_struct = type <{[5 x i8]}>

@Main_zdtrModule4_bytes$def = internal constant %Main_zdtrModule4_bytes_struct<{[5 x i8] [i8 109, i8 97, i8 105, i8 110, i8 0]}>, align 1

@Main_zdtrModule4_bytes = alias i8, bitcast (%Main_zdtrModule4_bytes_struct* @Main_zdtrModule4_bytes$def to i8*)

%Main_zdtrModule3_closure_struct = type <{i64, i64}>

@Main_zdtrModule3_closure$def = internal global %Main_zdtrModule3_closure_struct<{i64 ptrtoint (i8* @ghczmprim_GHCziTypes_TrNameS_con_info to i64), i64 ptrtoint (%Main_zdtrModule4_bytes_struct* @Main_zdtrModule4_bytes$def to i64)}>

@Main_zdtrModule3_closure = alias i8, bitcast (%Main_zdtrModule3_closure_struct* @Main_zdtrModule3_closure$def to i8*)

%Main_zdtrModule2_bytes_struct = type <{[5 x i8]}>

@Main_zdtrModule2_bytes$def = internal constant %Main_zdtrModule2_bytes_struct<{[5 x i8] [i8 77, i8 97, i8 105, i8 110, i8 0]}>, align 1

@Main_zdtrModule2_bytes = alias i8, bitcast (%Main_zdtrModule2_bytes_struct* @Main_zdtrModule2_bytes$def to i8*)

%Main_zdtrModule1_closure_struct = type <{i64, i64}>

@Main_zdtrModule1_closure$def = internal global %Main_zdtrModule1_closure_struct<{i64 ptrtoint (i8* @ghczmprim_GHCziTypes_TrNameS_con_info to i64), i64 ptrtoint (%Main_zdtrModule2_bytes_struct* @Main_zdtrModule2_bytes$def to i64)}>

@Main_zdtrModule1_closure = alias i8, bitcast (%Main_zdtrModule1_closure_struct* @Main_zdtrModule1_closure$def to i8*)

%Main_zdtrModule_closure_struct = type <{i64, i64, i64, i64}>

@Main_zdtrModule_closure$def = internal global %Main_zdtrModule_closure_struct<{i64 ptrtoint (i8* @ghczmprim_GHCziTypes_Module_con_info to i64), i64 add (i64 ptrtoint (%Main_zdtrModule3_closure_struct* @Main_zdtrModule3_closure$def to i64),i64 1), i64 add (i64 ptrtoint (%Main_zdtrModule1_closure_struct* @Main_zdtrModule1_closure$def to i64),i64 1), i64 3}>

@Main_zdtrModule_closure = alias i8, bitcast (%Main_zdtrModule_closure_struct* @Main_zdtrModule_closure$def to i8*)

@newCAF = external global i8

@stg_bh_upd_frame_info = external global i8

@ghczmprim_GHCziCString_unpackCStringzh_info = external global i8

@base_GHCziShow_showLitString_closure = external global i8

@base_GHCziShow_zdfShowZMZN1_closure = external global i8

@base_GHCziShow_showLitString_info = external global i8

@ghczmprim_GHCziTypes_ZC_con_info = external global i8

@base_GHCziShow_zdfShowZLz2cUZR3_closure = external global i8

@base_GHCziIOziHandleziText_hPutStrzq_closure = external global i8

@base_GHCziIOziHandleziFD_stdout_closure = external global i8

@ghczmprim_GHCziTypes_True_closure = external global i8

@base_GHCziIOziHandleziText_hPutStrzq_info = external global i8

@base_GHCziTopHandler_runMainIO1_closure = external global i8

@base_GHCziTopHandler_runMainIO1_info = external global i8

@ghczmprim_GHCziTypes_TrNameS_con_info = external global i8

@ghczmprim_GHCziTypes_Module_con_info = external global i8

@llvm.used = appending constant [11 x i8*] [i8* bitcast (%Main_zdtrModule_closure_struct* @Main_zdtrModule_closure$def to i8*), i8* bitcast (%Main_zdtrModule1_closure_struct* @Main_zdtrModule1_closure$def to i8*), i8* bitcast (%Main_zdtrModule2_bytes_struct* @Main_zdtrModule2_bytes$def to i8*), i8* bitcast (%Main_zdtrModule3_closure_struct* @Main_zdtrModule3_closure$def to i8*), i8* bitcast (%Main_zdtrModule4_bytes_struct* @Main_zdtrModule4_bytes$def to i8*), i8* bitcast (%ZCMain_main_closure_struct* @ZCMain_main_closure$def to i8*), i8* bitcast (%Main_main4_closure_struct* @Main_main4_closure$def to i8*), i8* bitcast (%Main_main_closure_struct* @Main_main_closure$def to i8*), i8* bitcast (%Main_main1_closure_struct* @Main_main1_closure$def to i8*), i8* bitcast (%Main_main2_closure_struct* @Main_main2_closure$def to i8*), i8* bitcast (%Main_main3_bytes_struct* @Main_main3_bytes$def to i8*)], section "llvm.metadata"

!13 = distinct !DISubprogram(name: "main", linkageName: "Main_main_info$def", scope: !14, file: !14, line: 4, type: !15, isDefinition: true, unit: !6)

!15 = !DISubroutineType(types: !{null})

!14 = !DIFile(filename: "hello.hs", directory: "TODO")

!10 = distinct !DISubprogram(name: "main", linkageName: "c38k_info$def", scope: !11, file: !11, line: 4, type: !12, isDefinition: true, unit: !6)

!12 = !DISubroutineType(types: !{null})

!11 = !DIFile(filename: "hello.hs", directory: "TODO")

!7 = distinct !DISubprogram(name: "main", linkageName: "Main_main2_info$def", scope: !8, file: !8, line: 4, type: !9, isDefinition: true, unit: !6)

!9 = !DISubroutineType(types: !{null})

!8 = !DIFile(filename: "hello.hs", directory: "TODO")

!16 = !DIFile(filename: "hello.hs", directory: "")

!6 = distinct !DICompileUnit(language: DW_LANG_Haskell, file: !16, producer: "ghc", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug)

!llvm.dbg.cu = !{!6}

!llvm.ident = !{!19}

!19 = !{!"Glasgow Haskell Compiler"}

!llvm.module.flags = !{!17,!18}

!17 = !{i32 2, !"Dwarf Version", i32 4}

!18 = !{i32 2, !"Debug Info Version", i32 3}