[flang] Add fir.select_type conversion to if-then-else ladder
authorValentin Clement <clementval@gmail.com>
Mon, 21 Nov 2022 09:00:17 +0000 (10:00 +0100)
committerValentin Clement <clementval@gmail.com>
Mon, 21 Nov 2022 09:01:42 +0000 (10:01 +0100)
commit06b4ce66d831206a20f0886bfd8e7a1998b53a2e
tree88132293a99a3cd585b6e3e4f85f6d13f214cf28
parentf873c50caa597051e7cbff50116da83b8a9171c9
[flang] Add fir.select_type conversion to if-then-else ladder

Convert fir.select_type operation to an if-then-else ladder.
The type guards are sorted before the conversion so it follows the
execution of SELECT TYPE construct as mentioned in 11.1.11.2 point 4
of the Fortran standard.

Depends on D138279

Reviewed By: jeanPerier

Differential Revision: https://reviews.llvm.org/D138280
flang/include/flang/Optimizer/Transforms/Passes.td
flang/lib/Optimizer/Dialect/FIROps.cpp
flang/lib/Optimizer/Dialect/FIRType.cpp
flang/lib/Optimizer/Transforms/ControlFlowConverter.cpp
flang/test/Lower/select-type.f90