module fe;

fn void main()
{
    float z = float.inf + 100;
    double z2 = double.inf;
    float g = float.nan;
    double g2 = double.nan;
    double x = (double)(z);
}

/* #expect: fe.ll

  %z = alloca float, align 4
  %z2 = alloca double, align 8
  %g = alloca float, align 4
  %g2 = alloca double, align 8
  %x = alloca double, align 8
  store float 0x7FF0000000000000, ptr %z, align 4
  store double 0x7FF0000000000000, ptr %z2, align 8
  store float 0x7FF8000000000000, ptr %g, align 4
  store double 0x7FF8000000000000, ptr %g2, align 8
  %0 = load float, ptr %z, align 4
  %fpfpext = fpext float %0 to double
  store double %fpfpext, ptr %x, align 8
  ret void