Add simple Else conditions to If Conversion (#77728)
authorAlan Hayward <a74nh@users.noreply.github.com>
Wed, 30 Nov 2022 10:53:28 +0000 (10:53 +0000)
committerGitHub <noreply@github.com>
Wed, 30 Nov 2022 10:53:28 +0000 (11:53 +0100)
commit53568571ac9a32608136aac54fafcf580ee47fa2
tree2321f64ed709cac92cbd90cbaf9a86c46c703beb
parentbecfc23bfe74751bdf4b08bc7871339b1c8ce39b
Add simple Else conditions to If Conversion (#77728)

* Add simple Else conditions to If Conversion

For example:
if (x < 7) { a = 5; } else { a = 9; }
a = (cond) ? b : c;

The else condition must write to the same variable as the then
statement.

* Move phase and stop updating ssa

* Wrap JitConfig access

* Add GT_RETURN else cases

* Add test cases with verification checks

* Ensure single only operation condition checks are used

* Remove empty line

* Use DOTNET_ instead of COMPlus_

* Move JitDoIfConversion check

* Move if conversion into it's own file

* Always invert condition

* Rename IfConvertMergeBlocks

* Use gtGetOp1()

* Expand tests

* Add operation type assert

* Allow nested SELECT nodes

* Fix condition directions
src/coreclr/jit/CMakeLists.txt
src/coreclr/jit/compiler.cpp
src/coreclr/jit/ifconversion.cpp [new file with mode: 0644]
src/coreclr/jit/optimizer.cpp
src/tests/JIT/opt/Compares/compares.cs