[PATCH] D40594: [InstCombine] miscompile of __builtin_fmod
Dmitry Venikov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Nov 29 01:57:04 PST 2017
Quolyk created this revision.
Motivation: https://bugs.llvm.org/show_bug.cgi?id=34870
I'm totally not sure this is correct
https://reviews.llvm.org/D40594
Files:
lib/CodeGen/CGBuiltin.cpp
test/CodeGen/builtins.c
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);
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: {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D40594.124704.patch
Type: text/x-patch
Size: 1373 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20171129/072a5f78/attachment-0001.bin>
More information about the cfe-commits
mailing list