HomePhabricator

[X86] Avoid codegen changes when DBG_VALUE appears between lowered selects

Authored by jmorse on Mar 4 2019, 2:56 AM.

Description

[X86] Avoid codegen changes when DBG_VALUE appears between lowered selects

X86TargetLowering::EmitLoweredSelect presently detects sequences of CMOV pseudo
instructions without accounting for debug intrinsics. This leads to different
codegen with and without option -g, if a DBG_VALUE instruction lands in the
middle of several lowered selects.

Work around this by skipping over debug instructions when looking for CMOV
sequences, and sinking those debug insts into the EmitLoweredSelect sunk block.
This might slightly shift where variables appear in the instruction sequence,
but won't re-order assignments.

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

llvm-svn: 355307