; ModuleID = 'a.o'
target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-p:32:32:32-v128:32:128-n32-S128"
target triple = "asmjs-unknown-emscripten"

@.str = private unnamed_addr constant [11 x i8] c"float: %f\0A\00", align 1

define void @_Z10printFloatf(float %f) #0 {
entry:
  %conv = fpext float %f to double
  %call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([11 x i8]* @.str, i32 0, i32 0), double %conv)
  ret void
}

define i32 @main() #1 {
entry:
  tail call void @_Z10printFloatf(float 1.000000e+00)
  call void @emscripten_preinvoke()
  call void @_Z10printFloatf(float undef)
  %last = call i32 @emscripten_postinvoke()
  %lastf = sitofp i32 %last to float
  tail call void @_Z10printFloatf(float %lastf)
  ret i32 1
}

declare void @emscripten_preinvoke()
declare i32 @emscripten_postinvoke()
declare i32 @printf(i8* nocapture, ...) #1

attributes #0 = { noinline nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
