[llvm-commits] [llvm] r73243 - in /llvm/trunk: lib/Transforms/Scalar/InstructionCombining.cpp test/Transforms/InstCombine/fsub-fsub.ll
Dale Johannesen
dalej at apple.com
Fri Jun 12 13:35:32 PDT 2009
On Jun 12, 2009, at 12:23 PMPDT, Dan Gohman wrote:
> Author: djg
> Date: Fri Jun 12 14:23:25 2009
> New Revision: 73243
>
> URL: http://llvm.org/viewvc/llvm-project?rev=73243&view=rev
> Log:
> Don't do (x - (y - z)) --> (x + (z - y)) on floating-point types,
> because
> it may round differently. This fixes PR4374.
Shouldn't we do this if UnsafeFPMath is on?
>
> Added:
> llvm/trunk/test/Transforms/InstCombine/fsub-fsub.ll
> Modified:
> llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
>
> Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp?rev=73243&r1=73242&r2=73243&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
> (original)
> +++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Fri
> Jun 12 14:23:25 2009
> @@ -2608,21 +2608,6 @@
> else if (Op1I->getOperand(1) == Op0) // X-(Y+X) == -Y
> return BinaryOperator::CreateFNeg(Op1I->getOperand(0),
> I.getName());
> }
> -
> - if (Op1I->hasOneUse()) {
> - // Replace (x - (y - z)) with (x + (z - y)) if the (y - z)
> subexpression
> - // is not used by anyone else...
> - //
> - if (Op1I->getOpcode() == Instruction::FSub) {
> - // Swap the two operands of the subexpr...
> - Value *IIOp0 = Op1I->getOperand(0), *IIOp1 = Op1I-
> >getOperand(1);
> - Op1I->setOperand(0, IIOp1);
> - Op1I->setOperand(1, IIOp0);
> -
> - // Create the new top level fadd instruction...
> - return BinaryOperator::CreateFAdd(Op0, Op1);
> - }
> - }
> }
>
> return 0;
>
> Added: llvm/trunk/test/Transforms/InstCombine/fsub-fsub.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/fsub-fsub.ll?rev=73243&view=auto
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/test/Transforms/InstCombine/fsub-fsub.ll (added)
> +++ llvm/trunk/test/Transforms/InstCombine/fsub-fsub.ll Fri Jun 12
> 14:23:25 2009
> @@ -0,0 +1,8 @@
> +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep fsub |
> count 2
> +; PR4374
> +
> +define float @func(float %a, float %b) nounwind {
> + %tmp3 = fsub float %a, %b
> + %tmp4 = fsub float -0.000000e+00, %tmp3
> + ret float %tmp4
> +}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list