[llvm-commits] [llvm] r68576 - in /llvm/trunk: include/llvm/Target/ lib/CodeGen/ lib/CodeGen/SelectionDAG/ lib/Target/X86/ test/CodeGen/X86/

sanjiv gupta sanjiv.gupta at microchip.com
Tue Apr 7 23:50:37 PDT 2009


On Wed, 2009-04-08 at 00:15 +0000, Dan Gohman wrote:

> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp?rev=68576&r1=68575&r2=68576&view=diff
> 
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp Tue Apr  7 19:15:30 2009
> @@ -777,6 +777,48 @@
>    return false;
>  }
>  
> +/// ShrinkDemandedOp - Convert x+y to (VT)((SmallVT)x+(SmallVT)y) if the
> +/// casts are free.  This uses isZExtFree and ZERO_EXTEND for the widening
> +/// cast, but it could be generalized for targets with other types of
> +/// implicit widening casts.
> +bool
> +TargetLowering::TargetLoweringOpt::ShrinkDemandedOp(SDValue Op,
> +                                                    unsigned BitWidth,
> +                                                    const APInt &Demanded,
> +                                                    DebugLoc dl) {
> +  assert(Op.getNumOperands() == 2 &&
> +         "ShrinkDemandedOp only supports binary operators!");

> +  assert(Op.getNode()->getNumValues() == 1 &&
> +         "ShrinkDemandedOp only supports nodes with one result!");
> +
This assert breaks via visitADD, when the ADD operation also produces a
carry, so Op.getNode()->getNumValues() is 2 there.

-Sanjiv





More information about the llvm-commits mailing list