[llvm-commits] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp

Chris Lattner clattner at apple.com
Tue May 15 11:28:05 PDT 2007


>>   If the bug was with ISD::Constant's,
>> this is a serious bug and this is not the right fix.
>
> Huh? It has nothing to do with ISD::Constants. Remember
> PredicateOperand with ExecuteAlways value is not part of the target
> independent DAG.  So something like this:
>
> def BL : I<(ops i32imm:$func, pred:$p, variable_ops), ...>
>
> The input node should have 2 operands (plus one if it has the
> optional flag) plus the variable ops. The emit code has like this:
>
>    for (unsigned i = 2, e = N.getNumOperands()-(HasInFlag?1:0); i !=
> e; ++i) {
>      AddToISelQueue(N.getOperand(i));
>      Ops0.push_back(N.getOperand(i));
>    }
>
> If we don't discount NumEAInputs (i.e. 1 in this case, to account for
> the single ExecuteAlways value), i's starting value is 3 and that's  
> bad.

Ahhh, so you're trying to avoid stepping on operands that don't  
exist... you're not trying to avoid selecting some operands that do  
exist?  If so, that makes sense :)

-Chris



More information about the llvm-commits mailing list