[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

Chris Lattner clattner at apple.com
Tue May 1 09:30:18 PDT 2007


> Forgot about chain result; also UNDEF cannot have multiple values.

Nice! Thanks Evan,

-Chris

> ---
> Diffs of the changes:  (+12 -12)
>
>  DAGCombiner.cpp |   24 ++++++++++++------------
>  1 files changed, 12 insertions(+), 12 deletions(-)
>
>
> Index: llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
> diff -u llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1.297 llvm/ 
> lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1.298
> --- llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1.297	Mon Apr 30  
> 19:38:21 2007
> +++ llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp	Tue May  1  
> 03:53:39 2007
> @@ -3331,19 +3331,19 @@
>    // the updated indexed value in case of indexed loads), change  
> uses of the
>    // chain value into uses of the chain input (i.e. delete the  
> dead load).
>    if (!LD->isVolatile()) {
> -    bool HasUses = false;
> -    SmallVector<MVT::ValueType, 2> VTs;
> -    for (unsigned i = 0, e = N->getNumValues(); i != e; ++i) {
> -      if (!N->hasNUsesOfValue(0, i)) {
> -        HasUses = true;
> -        break;
> +    if (N->getValueType(1) == MVT::Other) {
> +      // Unindexed loads.
> +      if (N->hasNUsesOfValue(0, 0))
> +        return CombineTo(N, DAG.getNode(ISD::UNDEF, N->getValueType 
> (0)), Chain);
> +    } else {
> +      // Indexed loads.
> +      assert(N->getValueType(2) == MVT::Other && "Malformed  
> indexed loads?");
> +      if (N->hasNUsesOfValue(0, 0) && N->hasNUsesOfValue(0, 1)) {
> +        SDOperand Undef0 = DAG.getNode(ISD::UNDEF, N->getValueType 
> (0));
> +        SDOperand Undef1 = DAG.getNode(ISD::UNDEF, N->getValueType 
> (1));
> +        SDOperand To[] = { Undef0, Undef1, Chain };
> +        return CombineTo(N, To, 3);
>        }
> -      VTs.push_back(N->getValueType(i));
> -    }
> -    if (!HasUses) {
> -      SmallVector<SDOperand, 1> Ops;
> -      return CombineTo(N, DAG.getNode(ISD::UNDEF, &VTs[0], VTs.size 
> (), 0, 0),
> -                       Chain);
>      }
>    }
>
>
>
>
> _______________________________________________
> 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