[PATCH] D55966: Ensure coro split pass only spills variables dominated by CoroBegin

Tanoy Sinha via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 20 15:42:31 PST 2018


tks2103 created this revision.
tks2103 added reviewers: modocache, GorNishanov.
Herald added a subscriber: llvm-commits.

Ensure coro split pass only spills variables dominated by CoroBegin

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

The old coro split code didn't run safety checks against certain
spillable variables; it would try to spill things that were not
dominated by CoroBegin.

This problem gets worse after the mem2reg
pass is run, as the code which checks that Arguments are safe to
spill is even more lax than the code which checks that
Instructions are safe to spill.

There's a test which checks two things:

First, that a store/load optimized away by mem2reg doesn't fail.

Second, if there is an allocator which takes a potentially
spillable argument, we have to check all of the other arguments
to that allocator to ensure there are no unspillable instructions
as well.


Repository:
  rL LLVM

https://reviews.llvm.org/D55966

Files:
  lib/Transforms/Coroutines/CoroFrame.cpp
  test/Transforms/Coroutines/coro-split-mem2reg.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55966.179181.patch
Type: text/x-patch
Size: 4288 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181220/a78acbfd/attachment.bin>


More information about the llvm-commits mailing list