[LLVMdev] Type Legalizer - Load handling problem
eli.friedman at gmail.com
Tue Aug 19 08:40:37 PDT 2008
On Tue, Aug 19, 2008 at 8:07 AM, sanjiv gupta
<sanjiv.gupta at microchip.com> wrote:
> On Mon, 2008-08-18 at 08:50 -0700, Eli Friedman wrote:
>> On Mon, Aug 18, 2008 at 6:31 AM, <Sachin.Punyani at microchip.com> wrote:
>> > assert(Res.getValueType() == N->getValueType(0) && N->getNumValues() == 1 &&
>> > "Invalid operand expansion");
>> > LOAD node has two values but the assertion checks N->getNumValues() == 1
>> > which is not letting us change load operation.
> Besides the assert, the call to
> ReplaceValueWith(SDValue(N, 0), Res);
> also looks incorrect, because the back-end lowered load will return two
> values as well.
Oh, I see what you mean! Sorry, I missed the issue originally.
Definitely looks like a bug. I think the correct solution is that if
custom legalization returns a node, ReplaceNodeWith should be used
rather than the existing codepath.
More information about the llvm-dev