[LICM] Fix a crash when sinking instructions w/token operands
authorPhilip Reames <listmail@philipreames.com>
Wed, 17 Mar 2021 17:57:33 +0000 (10:57 -0700)
committerPhilip Reames <listmail@philipreames.com>
Wed, 17 Mar 2021 18:18:46 +0000 (11:18 -0700)
commit7c7f4676cd421b1d64145eebfed11e5a3d8935d7
tree2fa1aacf6484448741aefce76549645180ec68af
parent9998b00c2ecd480c54d3fe806c4011439e41b065
[LICM] Fix a crash when sinking instructions w/token operands

It is not legal to form a phi node with token type. The generic LCSSA construction code handles this correctly - by not forming LCSSA for such cases - but the adhoc fixup implementation in LICM did not.

This was noticed in the context of PR49607, but can be demonstrated on ToT with the tweaked test case. This is not specific to gc.relocate btw, it also applies to usage of the preallocated family of intrinsics as well.

Differential Revision: https://reviews.llvm.org/D98728
llvm/lib/Transforms/Scalar/LICM.cpp
llvm/test/Transforms/LICM/gc-relocate.ll