Index: lib/CodeGen/CGBuiltin.cpp =================================================================== --- lib/CodeGen/CGBuiltin.cpp +++ lib/CodeGen/CGBuiltin.cpp @@ -899,14 +899,6 @@ case Builtin::BI__builtin_fabsl: { return RValue::get(emitUnaryBuiltin(*this, E, Intrinsic::fabs)); } - case Builtin::BI__builtin_fmod: - case Builtin::BI__builtin_fmodf: - case Builtin::BI__builtin_fmodl: { - Value *Arg1 = EmitScalarExpr(E->getArg(0)); - Value *Arg2 = EmitScalarExpr(E->getArg(1)); - Value *Result = Builder.CreateFRem(Arg1, Arg2, "fmod"); - return RValue::get(Result); - } case Builtin::BI__builtin_copysign: case Builtin::BI__builtin_copysignf: case Builtin::BI__builtin_copysignl: { Index: test/CodeGen/builtins.c =================================================================== --- test/CodeGen/builtins.c +++ test/CodeGen/builtins.c @@ -253,13 +253,16 @@ volatile long double resld; resf = __builtin_fmodf(F,F); - // CHECK: frem float + // CHECK: call float @fmodf(float % + // CHECK-NOT: readnone resd = __builtin_fmod(D,D); - // CHECK: frem double + // CHECK: call double @fmod(double % + // CHECK-NOT: readnone resld = __builtin_fmodl(LD,LD); - // CHECK: frem x86_fp80 + // CHECK: call x86_fp80 @fmodl(x86_fp80 % + // CHECK-NOT: readnone resf = __builtin_fabsf(F); resd = __builtin_fabs(D);