Summary: This fixes liveness tracking information after `drop` instruction insertion in ExplicitLocals pass. When a drop instruction is inserted to drop a dead register operand, the original operand should be marked not dead anymore because it is now used by the new drop instruction. And the operand to the new drop instruction should be marked killed instead. This bug caused some programs to fail when `llc` is run with `-verify-machineinstrs` option. Reviewers: dschuff Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits Differential Revision: https://reviews.llvm.org/D48253 llvm-svn: 335074
24 lines
749 B
YAML
24 lines
749 B
YAML
# RUN: llc -mtriple=wasm32-unknown-unknown -run-pass wasm-explicit-locals %s -o - | FileCheck %s
|
|
|
|
# When a drop instruction is inserted to drop a dead register operand, the
|
|
# original operand should be marked not dead anymore because it is now used by
|
|
# the new drop instruction. And the operand to the new drop instruction should
|
|
# be marked killed instead.
|
|
---
|
|
name: drop_test
|
|
liveins:
|
|
- { reg: '$arguments' }
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
successors: %bb.1
|
|
liveins: $arguments
|
|
|
|
bb.1:
|
|
; predecessors: %bb.0
|
|
; CHECK-NOT: dead %{{[0-9]+}}
|
|
; CHECK: DROP_I32 killed %{{[0-9]+}}
|
|
dead %0:i32 = CONST_I32 0, implicit-def dead $arguments, implicit $sp32, implicit $sp64
|
|
RETURN_VOID implicit-def dead $arguments
|
|
...
|