[all-commits] [llvm/llvm-project] 6f4504: [Statepoints] Disable VReg lowering for values use...

dantrushin via All-commits all-commits at lists.llvm.org
Mon Dec 21 05:27:58 PST 2020


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 6f45049fb6e5c6d573ef5bae338da822f6cbaa53
      https://github.com/llvm/llvm-project/commit/6f45049fb6e5c6d573ef5bae338da822f6cbaa53
  Author: Denis Antrushin <dantrushin at gmail.com>
  Date:   2020-12-21 (Mon, 21 Dec 2020)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
    M llvm/test/CodeGen/X86/statepoint-vreg-invoke.ll

  Log Message:
  -----------
  [Statepoints] Disable VReg lowering for values used on exception path of invoke.

Currently we lower invokes the same way as usual calls, e.g.:

V1 = STATEPOINT ... V (tied-def 0)

But this is incorrect is V1 is used on exceptional path.
By LLVM rules V1 neither dominates its uses in landing pad, nor
its live range is live on entry to landing pad. So compiler is
allowed to do various weird transformations like splitting live
range after statepoint and use split LR in catch block.

Until (and if) we find better solution to this problem, let's
use old lowering (spilling) for those values which are used on
exceptional path and allow VReg lowering for values used only
on normal path.

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




More information about the All-commits mailing list