[llvm-commits] Patch for handling multiple values in ExpandIntegerOperand

Duncan Sands baldrick at free.fr
Fri Oct 31 04:55:53 PDT 2008


Hi,

> The code routine in question here is DAG::getNode(), which returns an
> SDValue.  When it sees that the Operand of the TRUNCATE:i8
> (adde:i8,flag) has same value, it simply returns the first value of
> Operand. I don't think that we can/want to change the return type of
> getNode().

excellent point.

> Probably you are referring to change the return types of functions like:
> 
>   SDValue DAGTypeLegalizer::ExpandIntOp_TRUNCATE(SDNode *N)
> 
> to SDNode *.
> 
...
>   // Return Merge_Values if the number of values of N and Res do not
> match.  ???
> 
> is my understanding correct?

Yes, but as you point out that is not reliable.  This also means that
the ReplaceNodeResults (target lowering) routines are potentially broken.
I think that means that target lowering needs access to ReplaceValueWith,
and that ReplaceNodeWith should probably be removed.

Ciao,

Dncan.



More information about the llvm-commits mailing list