aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h
diff options
context:
space:
mode:
authorJoshua Cao <cao.joshua@yahoo.com>2023-04-15 16:04:58 -0700
committerJoshua Cao <cao.joshua@yahoo.com>2023-05-10 00:40:28 -0700
commit21f226fc4591db6e98faf380137a42067c909582 (patch)
treee22c7b218ff0b80ea08b7d78bf2705597a8565a7 /lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h
parent99f933b6346b0afcafa3c1ea0972136d7b441a86 (diff)
downloadllvm-21f226fc4591db6e98faf380137a42067c909582.zip
llvm-21f226fc4591db6e98faf380137a42067c909582.tar.gz
llvm-21f226fc4591db6e98faf380137a42067c909582.tar.bz2
[SimpleLoopUnswitch] unswitch selects
The old LoopUnswitch pass unswitched selects, but the changes were never ported to the new SimpleLoopUnswitch. We unswitch by turning: ``` S = select %cond, %a, %b ``` into: ``` head: br %cond, label %then, label %tail then: br label %tail tail: S = phi [ %a, %then ], [ %b, %head ] ``` Unswitch selects are always nontrivial, since the successors do not exit the loop and the loop body always needs to be cloned. Unswitch selects always need to freeze the conditional if the conditional could be poison or undef. Selects don't propagate poison/undef, and branches on poison/undef causes UB. Reviewed By: nikic, kachkov98, vitalybuka Differential Revision: https://reviews.llvm.org/D138526
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h')
0 files changed, 0 insertions, 0 deletions