[PATCH] D30400: For Thumb1, lower ADDC/ADDE/SUBC/SUBE via the glueless ARMISD nodes, same as already done for ARM and Thumb2.

A. Skrobov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 3 07:14:32 PST 2017


tyomitch updated this revision to Diff 90476.
tyomitch added a comment.

`Select(RHS.getNode())` must be deferred until RHS has users; otherwise, if `Select()` converts RHS into a duplicate of an existing node, then the DAG automatically updates all uses of RHS to use the existing node instead, and deletes the RHS's own node.
If we call `Select(RHS.getNode())` when RHS doesn't yet have any users, then nothing gets updated, RHS's node gets deleted, and we end up adding uses to a deleted node. Boom!

Updating D30400: For Thumb1, lower ADDC/ADDE/SUBC/SUBE via the glueless ARMISD nodes,
=====================================================================================

same as already done for ARM and Thumb2.


https://reviews.llvm.org/D30400

Files:
  lib/Target/ARM/ARMISelDAGToDAG.cpp
  lib/Target/ARM/ARMISelLowering.cpp
  lib/Target/ARM/ARMInstrThumb.td
  test/CodeGen/Thumb/long.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D30400.90476.patch
Type: text/x-patch
Size: 13109 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170303/6e4d9c69/attachment.bin>


More information about the llvm-commits mailing list