avoid implicit type conversion in ternary operation
failed case on llvm 3.6 uint convert_uint_sat_rte (float x); int main() { float x1; x1 = 9223373136366403584.000000f; uint r1 = convert_uint_sat_rte (x1); printf ("%x\n", r1); } uint convert_uint_sat_rte (float x) { return bigger(x) ? 0xffffffff: (small(x) ? 0 : rintf (x)); } clang 3.6 + O2 get blow IR define i32 @ convert_uint_sat_rte (float %x) #0 { entry: %call = call fastcc i32 @bigger(float %x) % tobool = icmp ne i32 %call, 0 br i1 % tobool , label %cond.end6, label % cond.false cond.false : ; preds = %entry %call1 = call fastcc ...