>> 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 _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits