[llvm-bugs] [Bug 36300] [x86] Invalid operand expansion for MLOAD

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Sep 11 22:08:54 PDT 2018


https://bugs.llvm.org/show_bug.cgi?id=36300

Craig Topper <craig.topper at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |craig.topper at gmail.com
         Resolution|---                         |FIXED

--- Comment #1 from Craig Topper <craig.topper at gmail.com> ---
I suspect this was largely fixed in r338080. It looks like the main problem was
that we split the masked load node into 2 nodes to split the v16i32 types.
These nodes are identical and should have been CSEd, but weren't due to the bug
fixed in r338080. We legalize one of them and update the operands. Then we
legalize the other one and try to update its operands, but now we do detect
that they can be CSEed and UpdateNodeOperands doesn't make the update. This
leaves us in a situation that PromoteIntegerOperand wasn't prepared for, a
non-null SDValue was returned from PromoteIntOp_MLOAD but it wasn't the
original node and it has 2 results.

With the CSE fixed the 2 identical nodes don't get created from the original
split.

The test case itself was also made invalid in r338085 when the chain handling
for masked loads was improved. Now neither the data result or chain result is
used so the node is considered dead and can be deleted. This can be fixed by
returning the loaded value.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180912/72a07124/attachment.html>


More information about the llvm-bugs mailing list