HomePhabricator

[WebAssembly] Remove TEEs when dests are unstackified

Authored by aheejin on Jun 15 2020, 9:31 AM.

Description

[WebAssembly] Remove TEEs when dests are unstackified

When created in RegStackify pass, TEE has two destinations, where
op0 is stackified and op1 is not. But it is possible that
op0 becomes unstackified in fixUnwindMismatches function in
CFGStackify pass when a nested try-catch-end is introduced, violating
the invariant of TEEs destinations.

In this case we convert the TEE into two COPYs, which will
eventually be resolved in ExplicitLocals.

Reviewed By: dschuff

Differential Revision: https://reviews.llvm.org/D81851