@sml_check_flag=external local_unnamed_addr global i32
@_SMLZN15BasicFormatters13format__stringE=external local_unnamed_addr global i8*
@_SMLZN8Filename6dotdotE=external local_unnamed_addr global i8*
@a=private unnamed_addr constant<{[4x i8],i32,[2x i8]}><{[4x i8]zeroinitializer,i32 -2147483646,[2x i8]c".\00"}>,align 8
@b=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN11RequirePath10prependDotE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN11RequirePath10prependDotE_89 to void(...)*),i32 -2147483647}>,align 8
@c=private unnamed_addr constant<{[4x i8],i32,[17x i8]}><{[4x i8]zeroinitializer,i32 -2147483631,[17x i8]c"RequirePath.Path\00"}>,align 8
@d=private unnamed_addr constant<{[4x i8],i32,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[17x i8]}>,<{[4x i8],i32,[17x i8]}>*@c,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL58=private constant<{[4x i8],i32,i8*}><{[4x i8]zeroinitializer,i32 -1879048184,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i32,[4x i8],i32}>*@d,i32 0,i32 0,i32 0),i32 8)}>,align 8
@e=private unnamed_addr constant<{[4x i8],i32,[64x i8]}><{[4x i8]zeroinitializer,i32 -2147483584,[64x i8]c"src/compiler/compilerIRs/absyn/main/RequirePath.sml:70.21(2557)\00"}>,align 8
@f=private unnamed_addr constant<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL58,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[64x i8]}>,<{[4x i8],i32,[64x i8]}>*@e,i32 0,i32 0,i32 0),i32 8),i32 1,[4x i8]zeroinitializer,i32 3}>,align 8
@g=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLLN11RequirePath10toFilenameE_65 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN11RequirePath10toFilenameE_91 to void(...)*),i32 -2147483647}>,align 8
@h=private unnamed_addr constant<{[4x i8],i32,[64x i8]}><{[4x i8]zeroinitializer,i32 -2147483584,[64x i8]c"src/compiler/compilerIRs/absyn/main/RequirePath.sml:87.23(3091)\00"}>,align 8
@i=private unnamed_addr constant<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL58,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[64x i8]}>,<{[4x i8],i32,[64x i8]}>*@h,i32 0,i32 0,i32 0),i32 8),i32 2,[4x i8]zeroinitializer,i32 3}>,align 8
@j=private unnamed_addr constant<{[4x i8],i32,[64x i8]}><{[4x i8]zeroinitializer,i32 -2147483584,[64x i8]c"src/compiler/compilerIRs/absyn/main/RequirePath.sml:84.30(2991)\00"}>,align 8
@k=private unnamed_addr constant<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL58,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[64x i8]}>,<{[4x i8],i32,[64x i8]}>*@j,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 3}>,align 8
@l=private unnamed_addr constant<{[4x i8],i32,[64x i8]}><{[4x i8]zeroinitializer,i32 -2147483584,[64x i8]c"src/compiler/compilerIRs/absyn/main/RequirePath.sml:83.27(2946)\00"}>,align 8
@m=private unnamed_addr constant<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL58,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[64x i8]}>,<{[4x i8],i32,[64x i8]}>*@l,i32 0,i32 0,i32 0),i32 8),i32 2,[4x i8]zeroinitializer,i32 3}>,align 8
@n=private unnamed_addr constant<{[4x i8],i32,[64x i8]}><{[4x i8]zeroinitializer,i32 -2147483584,[64x i8]c"src/compiler/compilerIRs/absyn/main/RequirePath.sml:82.21(2904)\00"}>,align 8
@o=private unnamed_addr constant<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL58,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[64x i8]}>,<{[4x i8],i32,[64x i8]}>*@n,i32 0,i32 0,i32 0),i32 8),i32 2,[4x i8]zeroinitializer,i32 3}>,align 8
@p=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN11RequirePath10toFilenameE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN11RequirePath10toFilenameE_92 to void(...)*),i32 -2147483647}>,align 8
@q=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLLN11RequirePath10fromStringE_77 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN11RequirePath10fromStringE_93 to void(...)*),i32 -2147483647}>,align 8
@r=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN11RequirePath10fromStringE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN11RequirePath10fromStringE_94 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN11RequirePath10fromStringE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@r,i64 0,i32 2)to i8*)
@s=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN11RequirePath8toStringE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN11RequirePath8toStringE_95 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN11RequirePath8toStringE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@s,i64 0,i32 2)to i8*)
@t=private unnamed_addr constant<{[4x i8],i32,[2x i8]}><{[4x i8]zeroinitializer,i32 -2147483646,[2x i8]c"/\00"}>,align 8
@u=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN11RequirePath11format__pathE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN11RequirePath11format__pathE_96 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN11RequirePath11format__pathE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@u,i64 0,i32 2)to i8*)
@v=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN11RequirePath13beginsWithDotE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN11RequirePath13beginsWithDotE_97 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN11RequirePath13beginsWithDotE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@v,i64 0,i32 2)to i8*)
@_SMLZN11RequirePath10prependDotE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@b,i64 0,i32 2)to i8*)
@_SMLZN11RequirePath4PathE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL58,i64 0,i32 2)to i8*)
@_SMLZN11RequirePath10toFilenameE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@p,i64 0,i32 2)to i8*)
@_SML_ftab97ec6533be83b3ae_RequirePath=external global i8
@w=private unnamed_addr global i8 0
declare void@llvm.gcroot(i8**,i8*)#0
declare i8*@sml_alloc(i32 inreg)local_unnamed_addr#0
declare void@sml_check(i32 inreg)local_unnamed_addr
declare void@sml_gcroot(i8*,void()*,i8*,i8*)local_unnamed_addr#0
declare void@sml_raise(i8*inreg)local_unnamed_addr#1
declare i8*@_SMLFN15BasicFormatters11format__listE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15BasicFormatters13format__stringE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List5foldlE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6String10concatWithE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6String6fieldsE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN8Filename10concatPathE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN8Filename10fromStringE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main03d87556ec7f64b2_List()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main1ef93e13728790b1_String()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main6ad4d8e473c26a9c_BasicFormatters()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maine29d9c3af819282f_Filename()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_load03d87556ec7f64b2_List(i8*)local_unnamed_addr
declare void@_SML_load1ef93e13728790b1_String(i8*)local_unnamed_addr
declare void@_SML_load6ad4d8e473c26a9c_BasicFormatters(i8*)local_unnamed_addr
declare void@_SML_loade29d9c3af819282f_Filename(i8*)local_unnamed_addr
define private void@_SML_tabb97ec6533be83b3ae_RequirePath()#3{
unreachable
}
define void@_SML_load97ec6533be83b3ae_RequirePath(i8*%a)local_unnamed_addr#0{
%b=load i8,i8*@w,align 1
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 1,i8*@w,align 1
tail call void@_SML_load03d87556ec7f64b2_List(i8*%a)#0
tail call void@_SML_load1ef93e13728790b1_String(i8*%a)#0
tail call void@_SML_load6ad4d8e473c26a9c_BasicFormatters(i8*%a)#0
tail call void@_SML_loade29d9c3af819282f_Filename(i8*%a)#0
tail call void@sml_gcroot(i8*%a,void()*@_SML_tabb97ec6533be83b3ae_RequirePath,i8*@_SML_ftab97ec6533be83b3ae_RequirePath,i8*null)#0
ret void
}
define void@_SML_main97ec6533be83b3ae_RequirePath()local_unnamed_addr#2 gc"smlsharp"{
%a=load i8,i8*@w,align 1
%b=and i8%a,2
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 3,i8*@w,align 1
tail call void@_SML_main03d87556ec7f64b2_List()#2
tail call void@_SML_main1ef93e13728790b1_String()#2
tail call void@_SML_main6ad4d8e473c26a9c_BasicFormatters()#2
tail call void@_SML_maine29d9c3af819282f_Filename()#2
br label%d
}
define fastcc i8*@_SMLFN11RequirePath10prependDotE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=icmp eq i8*%a,null
br i1%c,label%d,label%e
d:
ret i8*%a
e:
%f=bitcast i8*%a to i8**
%g=load i8*,i8**%f,align 8
%h=getelementptr inbounds i8,i8*%g,i64 -4
%i=bitcast i8*%h to i32*
%j=load i32,i32*%i,align 4
%k=trunc i32%j to i28
switch i28%k,label%v[
i28 1,label%d
i28 2,label%s
i28 3,label%l
]
l:
%m=load i8,i8*%g,align 1
%n=icmp eq i8%m,46
br i1%n,label%o,label%v
o:
%p=getelementptr inbounds i8,i8*%g,i64 1
%q=load i8,i8*%p,align 1
%r=icmp eq i8%q,46
br i1%r,label%d,label%v
s:
%t=load i8,i8*%g,align 1
%u=icmp eq i8%t,46
br i1%u,label%d,label%v
v:
%w=call i8*@sml_alloc(i32 inreg 20)#0
%x=getelementptr inbounds i8,i8*%w,i64 -4
%y=bitcast i8*%x to i32*
store i32 1342177296,i32*%y,align 4
%z=bitcast i8*%w to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@a,i64 0,i32 2,i64 0),i8**%z,align 8
%A=load i8*,i8**%b,align 8
%B=getelementptr inbounds i8,i8*%w,i64 8
%C=bitcast i8*%B to i8**
store i8*%A,i8**%C,align 8
%D=getelementptr inbounds i8,i8*%w,i64 16
%E=bitcast i8*%D to i32*
store i32 3,i32*%E,align 4
ret i8*%w
}
define internal fastcc i8*@_SMLLN11RequirePath9normalizeE_59(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
f:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
br label%d
d:
%e=phi i8*[%af,%ac],[%a,%f]
store i8*%e,i8**%b,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%k,label%i
i:
call void@sml_check(i32 inreg%g)
%j=load i8*,i8**%b,align 8
br label%k
k:
%l=phi i8*[%j,%i],[%e,%d]
store i8*%l,i8**%c,align 8
%m=icmp eq i8*%l,null
br i1%m,label%n,label%u
n:
store i8*null,i8**%c,align 8
%o=call i8*@sml_alloc(i32 inreg 60)#0
%p=getelementptr inbounds i8,i8*%o,i64 -4
%q=bitcast i8*%p to i32*
store i32 1342177336,i32*%q,align 4
%r=getelementptr inbounds i8,i8*%o,i64 56
%s=bitcast i8*%r to i32*
store i32 1,i32*%s,align 4
%t=bitcast i8*%o to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}>*@f,i64 0,i32 2)to i8*),i8**%t,align 8
call void@sml_raise(i8*inreg%o)#1
unreachable
u:
%v=bitcast i8*%l to i8**
%w=load i8*,i8**%v,align 8
%x=getelementptr inbounds i8,i8*%w,i64 -4
%y=bitcast i8*%x to i32*
%z=load i32,i32*%y,align 4
%A=trunc i32%z to i28
switch i28%A,label%ag[
i28 1,label%ac
i28 2,label%Z
i28 3,label%B
]
B:
%C=bitcast i8*%l to i8**
%D=load i8,i8*%w,align 1
%E=icmp eq i8%D,46
br i1%E,label%F,label%ai
F:
%G=getelementptr inbounds i8,i8*%w,i64 1
%H=load i8,i8*%G,align 1
%I=icmp eq i8%H,46
br i1%I,label%J,label%ai
J:
store i8*null,i8**%c,align 8
%K=getelementptr inbounds i8,i8*%l,i64 8
%L=bitcast i8*%K to i8**
%M=load i8*,i8**%L,align 8
%N=call fastcc i8*@_SMLLN11RequirePath9normalizeE_59(i8*inreg%M)
store i8*%N,i8**%b,align 8
%O=load i8*,i8**@_SMLZN8Filename6dotdotE,align 8
store i8*%O,i8**%c,align 8
%P=call i8*@sml_alloc(i32 inreg 20)#0
%Q=getelementptr inbounds i8,i8*%P,i64 -4
%R=bitcast i8*%Q to i32*
store i32 1342177296,i32*%R,align 4
%S=load i8*,i8**%c,align 8
%T=bitcast i8*%P to i8**
store i8*%S,i8**%T,align 8
%U=load i8*,i8**%b,align 8
%V=getelementptr inbounds i8,i8*%P,i64 8
%W=bitcast i8*%V to i8**
store i8*%U,i8**%W,align 8
%X=getelementptr inbounds i8,i8*%P,i64 16
%Y=bitcast i8*%X to i32*
store i32 3,i32*%Y,align 4
ret i8*%P
Z:
%aa=load i8,i8*%w,align 1
%ab=icmp eq i8%aa,46
br i1%ab,label%ac,label%ag
ac:
store i8*null,i8**%c,align 8
%ad=getelementptr inbounds i8,i8*%l,i64 8
%ae=bitcast i8*%ad to i8**
%af=load i8*,i8**%ae,align 8
br label%d
ag:
%ah=bitcast i8*%l to i8**
br label%ai
ai:
%aj=phi i8**[%ah,%ag],[%C,%F],[%C,%B]
%ak=getelementptr inbounds i8,i8*%l,i64 8
%al=bitcast i8*%ak to i8**
%am=load i8*,i8**%al,align 8
%an=icmp eq i8*%am,null
br i1%an,label%ao,label%aK
ao:
store i8*null,i8**%c,align 8
%ap=load i8*,i8**%aj,align 8
%aq=call fastcc i8*@_SMLFN8Filename10fromStringE(i8*inreg%ap)
store i8*%aq,i8**%b,align 8
%ar=call i8*@sml_alloc(i32 inreg 20)#0
%as=getelementptr inbounds i8,i8*%ar,i64 -4
%at=bitcast i8*%as to i32*
store i32 1342177296,i32*%at,align 4
%au=load i8*,i8**%b,align 8
%av=bitcast i8*%ar to i8**
store i8*%au,i8**%av,align 8
%aw=getelementptr inbounds i8,i8*%ar,i64 8
%ax=bitcast i8*%aw to i8**
store i8*null,i8**%ax,align 8
%ay=getelementptr inbounds i8,i8*%ar,i64 16
%az=bitcast i8*%ay to i32*
store i32 3,i32*%az,align 4
store i8*null,i8**%c,align 8
%aA=call i8*@sml_alloc(i32 inreg 20)#0
%aB=getelementptr inbounds i8,i8*%aA,i64 -4
%aC=bitcast i8*%aB to i32*
store i32 1342177296,i32*%aC,align 4
%aD=load i8*,i8**%b,align 8
%aE=bitcast i8*%aA to i8**
store i8*%aD,i8**%aE,align 8
%aF=load i8*,i8**%c,align 8
%aG=getelementptr inbounds i8,i8*%aA,i64 8
%aH=bitcast i8*%aG to i8**
store i8*%aF,i8**%aH,align 8
%aI=getelementptr inbounds i8,i8*%aA,i64 16
%aJ=bitcast i8*%aI to i32*
store i32 3,i32*%aJ,align 4
ret i8*%aA
aK:
%aL=call fastcc i8*@_SMLFN8Filename10fromStringE(i8*inreg%w)
store i8*%aL,i8**%b,align 8
%aM=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aN=getelementptr inbounds i8,i8*%aM,i64 8
%aO=bitcast i8*%aN to i8**
%aP=load i8*,i8**%aO,align 8
%aQ=call fastcc i8*@_SMLLN11RequirePath9normalizeE_59(i8*inreg%aP)
store i8*%aQ,i8**%c,align 8
%aR=call i8*@sml_alloc(i32 inreg 20)#0
%aS=getelementptr inbounds i8,i8*%aR,i64 -4
%aT=bitcast i8*%aS to i32*
store i32 1342177296,i32*%aT,align 4
%aU=load i8*,i8**%b,align 8
%aV=bitcast i8*%aR to i8**
store i8*%aU,i8**%aV,align 8
%aW=load i8*,i8**%c,align 8
%aX=getelementptr inbounds i8,i8*%aR,i64 8
%aY=bitcast i8*%aX to i8**
store i8*%aW,i8**%aY,align 8
%aZ=getelementptr inbounds i8,i8*%aR,i64 16
%a0=bitcast i8*%aZ to i32*
store i32 3,i32*%a0,align 4
ret i8*%aR
}
define internal fastcc i8*@_SMLLN11RequirePath10toFilenameE_65(i8*inreg%a)#2 gc"smlsharp"{
j:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%h,label%f
f:
call void@sml_check(i32 inreg%d)
%g=load i8*,i8**%b,align 8
br label%h
h:
%i=phi i8*[%g,%f],[%a,%j]
%k=bitcast i8*%i to i8**
%l=load i8*,i8**%k,align 8
store i8*%l,i8**%b,align 8
%m=getelementptr inbounds i8,i8*%i,i64 8
%n=bitcast i8*%m to i8**
%o=load i8*,i8**%n,align 8
store i8*%o,i8**%c,align 8
%p=call i8*@sml_alloc(i32 inreg 20)#0
%q=getelementptr inbounds i8,i8*%p,i64 -4
%r=bitcast i8*%q to i32*
store i32 1342177296,i32*%r,align 4
%s=load i8*,i8**%c,align 8
%t=bitcast i8*%p to i8**
store i8*%s,i8**%t,align 8
%u=load i8*,i8**%b,align 8
%v=getelementptr inbounds i8,i8*%p,i64 8
%w=bitcast i8*%v to i8**
store i8*%u,i8**%w,align 8
%x=getelementptr inbounds i8,i8*%p,i64 16
%y=bitcast i8*%x to i32*
store i32 3,i32*%y,align 4
%z=tail call fastcc i8*@_SMLFN8Filename10concatPathE(i8*inreg%p)
ret i8*%z
}
define fastcc i8*@_SMLFN11RequirePath10toFilenameE(i8*inreg%a)#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
store i8*null,i8**%b,align 8
%j=icmp eq i8*%h,null
br i1%j,label%k,label%r
k:
%l=call i8*@sml_alloc(i32 inreg 60)#0
%m=getelementptr inbounds i8,i8*%l,i64 -4
%n=bitcast i8*%m to i32*
store i32 1342177336,i32*%n,align 4
%o=getelementptr inbounds i8,i8*%l,i64 56
%p=bitcast i8*%o to i32*
store i32 1,i32*%p,align 4
%q=bitcast i8*%l to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}>*@o,i64 0,i32 2)to i8*),i8**%q,align 8
call void@sml_raise(i8*inreg%l)#1
unreachable
r:
%s=bitcast i8*%h to i32**
%t=load i32*,i32**%s,align 8
%u=getelementptr inbounds i32,i32*%t,i64 -1
%v=load i32,i32*%u,align 4
%w=and i32%v,268435455
%x=icmp eq i32%w,1
br i1%x,label%y,label%L
y:
%z=getelementptr inbounds i8,i8*%h,i64 8
%A=bitcast i8*%z to i8**
%B=load i8*,i8**%A,align 8
%C=icmp eq i8*%B,null
%D=call i8*@sml_alloc(i32 inreg 60)#0
%E=getelementptr inbounds i8,i8*%D,i64 -4
%F=bitcast i8*%E to i32*
store i32 1342177336,i32*%F,align 4
%G=getelementptr inbounds i8,i8*%D,i64 56
%H=bitcast i8*%G to i32*
store i32 1,i32*%H,align 4
%I=bitcast i8*%D to i8**
br i1%C,label%J,label%K
J:
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}>*@m,i64 0,i32 2)to i8*),i8**%I,align 8
call void@sml_raise(i8*inreg%D)#1
unreachable
K:
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}>*@k,i64 0,i32 2)to i8*),i8**%I,align 8
call void@sml_raise(i8*inreg%D)#1
unreachable
L:
%M=call fastcc i8*@_SMLLN11RequirePath9normalizeE_59(i8*inreg%h)
store i8*%M,i8**%b,align 8
%N=icmp eq i8*%M,null
br i1%N,label%O,label%V
O:
store i8*null,i8**%b,align 8
%P=call i8*@sml_alloc(i32 inreg 60)#0
%Q=getelementptr inbounds i8,i8*%P,i64 -4
%R=bitcast i8*%Q to i32*
store i32 1342177336,i32*%R,align 4
%S=getelementptr inbounds i8,i8*%P,i64 56
%T=bitcast i8*%S to i32*
store i32 1,i32*%T,align 4
%U=bitcast i8*%P to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i8*,i32,[4x i8],i32}>*@i,i64 0,i32 2)to i8*),i8**%U,align 8
call void@sml_raise(i8*inreg%P)#1
unreachable
V:
%W=call fastcc i8*@_SMLFN4List5foldlE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%X=getelementptr inbounds i8,i8*%W,i64 16
%Y=bitcast i8*%X to i8*(i8*,i8*)**
%Z=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Y,align 8
%aa=bitcast i8*%W to i8**
%ab=load i8*,i8**%aa,align 8
%ac=call fastcc i8*%Z(i8*inreg%ab,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@g,i64 0,i32 2)to i8*))
%ad=getelementptr inbounds i8,i8*%ac,i64 16
%ae=bitcast i8*%ad to i8*(i8*,i8*)**
%af=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ae,align 8
%ag=bitcast i8*%ac to i8**
%ah=load i8*,i8**%ag,align 8
%ai=bitcast i8**%b to i8***
%aj=load i8**,i8***%ai,align 8
%ak=load i8*,i8**%aj,align 8
%al=call fastcc i8*%af(i8*inreg%ah,i8*inreg%ak)
%am=getelementptr inbounds i8,i8*%al,i64 16
%an=bitcast i8*%am to i8*(i8*,i8*)**
%ao=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%an,align 8
%ap=bitcast i8*%al to i8**
%aq=load i8*,i8**%ap,align 8
%ar=load i8*,i8**%b,align 8
%as=getelementptr inbounds i8,i8*%ar,i64 8
%at=bitcast i8*%as to i8**
%au=load i8*,i8**%at,align 8
%av=tail call fastcc i8*%ao(i8*inreg%aq,i8*inreg%au)
ret i8*%av
}
define internal fastcc i32@_SMLLN11RequirePath10fromStringE_77(i8 inreg%a)#4 gc"smlsharp"{
%b=icmp eq i8%a,47
%c=zext i1%b to i32
ret i32%c
}
define fastcc i8*@_SMLFN11RequirePath10fromStringE(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%f,label%e
e:
call void@sml_check(i32 inreg%c)
br label%f
f:
%g=call fastcc i8*@_SMLFN6String6fieldsE(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@q,i64 0,i32 2)to i8*))
%h=getelementptr inbounds i8,i8*%g,i64 16
%i=bitcast i8*%h to i8*(i8*,i8*)**
%j=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%i,align 8
%k=bitcast i8*%g to i8**
%l=load i8*,i8**%k,align 8
%m=load i8*,i8**%b,align 8
%n=tail call fastcc i8*%j(i8*inreg%l,i8*inreg%m)
ret i8*%n
}
define fastcc i8*@_SMLFN11RequirePath8toStringE(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%f,label%e
e:
call void@sml_check(i32 inreg%c)
br label%f
f:
%g=call fastcc i8*@_SMLFN6String10concatWithE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@t,i64 0,i32 2,i64 0))
%h=getelementptr inbounds i8,i8*%g,i64 16
%i=bitcast i8*%h to i8*(i8*,i8*)**
%j=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%i,align 8
%k=bitcast i8*%g to i8**
%l=load i8*,i8**%k,align 8
%m=load i8*,i8**%b,align 8
%n=tail call fastcc i8*%j(i8*inreg%l,i8*inreg%m)
ret i8*%n
}
define fastcc i8*@_SMLFN11RequirePath11format__pathE(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
store i8*%a,i8**%b,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%i,label%h
h:
call void@sml_check(i32 inreg%f)
br label%i
i:
%j=call fastcc i8*@_SMLFN15BasicFormatters11format__listE(i32 inreg 1,i32 inreg 8)
%k=getelementptr inbounds i8,i8*%j,i64 16
%l=bitcast i8*%k to i8*(i8*,i8*)**
%m=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%l,align 8
%n=bitcast i8*%j to i8**
%o=load i8*,i8**%n,align 8
store i8*%o,i8**%e,align 8
%p=call fastcc i8*@_SMLFN15BasicFormatters13format__stringE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@t,i64 0,i32 2,i64 0))
store i8*%p,i8**%c,align 8
%q=load i8*,i8**@_SMLZN15BasicFormatters13format__stringE,align 8
store i8*%q,i8**%d,align 8
%r=call i8*@sml_alloc(i32 inreg 20)#0
%s=getelementptr inbounds i8,i8*%r,i64 -4
%t=bitcast i8*%s to i32*
store i32 1342177296,i32*%t,align 4
%u=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%v=bitcast i8*%r to i8**
store i8*%u,i8**%v,align 8
%w=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%x=getelementptr inbounds i8,i8*%r,i64 8
%y=bitcast i8*%x to i8**
store i8*%w,i8**%y,align 8
%z=getelementptr inbounds i8,i8*%r,i64 16
%A=bitcast i8*%z to i32*
store i32 3,i32*%A,align 4
%B=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%C=call fastcc i8*%m(i8*inreg%B,i8*inreg%r)
%D=getelementptr inbounds i8,i8*%C,i64 16
%E=bitcast i8*%D to i8*(i8*,i8*)**
%F=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%E,align 8
%G=bitcast i8*%C to i8**
%H=load i8*,i8**%G,align 8
%I=load i8*,i8**%b,align 8
%J=tail call fastcc i8*%F(i8*inreg%H,i8*inreg%I)
ret i8*%J
}
define fastcc i32@_SMLFN11RequirePath13beginsWithDotE(i8*inreg%a)#4 gc"smlsharp"{
%b=icmp eq i8*%a,null
br i1%b,label%v,label%c
c:
%d=bitcast i8*%a to i8**
%e=load i8*,i8**%d,align 8
%f=getelementptr inbounds i8,i8*%e,i64 -4
%g=bitcast i8*%f to i32*
%h=load i32,i32*%g,align 4
%i=trunc i32%h to i28
switch i28%i,label%v[
i28 2,label%s
i28 3,label%j
]
j:
%k=load i8,i8*%e,align 1
%l=icmp eq i8%k,46
br i1%l,label%m,label%v
m:
%n=getelementptr inbounds i8,i8*%e,i64 1
%o=load i8,i8*%n,align 1
%p=icmp eq i8%o,46
br i1%p,label%q,label%v
q:
%r=phi i32[1,%s],[1,%m],[0,%v]
ret i32%r
s:
%t=load i8,i8*%e,align 1
%u=icmp eq i8%t,46
br i1%u,label%q,label%v
v:
br label%q
}
define internal fastcc i8*@_SMLLN11RequirePath10prependDotE_89(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN11RequirePath10prependDotE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN11RequirePath10toFilenameE_91(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLLN11RequirePath10toFilenameE_65(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN11RequirePath10toFilenameE_92(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN11RequirePath10toFilenameE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN11RequirePath10fromStringE_93(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=icmp eq i8%c,47
%e=zext i1%d to i32
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN11RequirePath10fromStringE_94(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN11RequirePath10fromStringE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN11RequirePath8toStringE_95(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN11RequirePath8toStringE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN11RequirePath11format__pathE_96(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN11RequirePath11format__pathE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN11RequirePath13beginsWithDotE_97(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i32@_SMLFN11RequirePath13beginsWithDotE(i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=bitcast i8*%d to i32*
%f=getelementptr inbounds i8,i8*%d,i64 -4
%g=bitcast i8*%f to i32*
store i32 4,i32*%g,align 4
store i32%c,i32*%e,align 4
ret i8*%d
}
attributes#0={nounwind}
attributes#1={noreturn}
attributes#2={uwtable}
attributes#3={noreturn nounwind}
attributes#4={nounwind uwtable}
