Skip to content

Instantly share code, notes, and snippets.

@mpickering
Created December 6, 2018 12:48
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 mpickering/05296933e37e87533a51d493b46aa48d to your computer and use it in GitHub Desktop.
Save mpickering/05296933e37e87533a51d493b46aa48d to your computer and use it in GitHub Desktop.
module Main where
main = print "Hello World"
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}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment