[flang] Fix controlSuccessor chain for select rank construct
authorValentin Clement <clementval@gmail.com>
Sun, 6 Nov 2022 08:56:19 +0000 (09:56 +0100)
committerValentin Clement <clementval@gmail.com>
Sun, 6 Nov 2022 08:56:46 +0000 (09:56 +0100)
Represent the select rank statement + select rank case statement
the same way the select case statement and case statement are represented.
controlSuccessor was not correctly attributed to the next type guard stmt.
Similar to D137460 for select type construct.

Reviewed By: vdonaldson

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

flang/lib/Lower/PFTBuilder.cpp

index 8f87e96..19b2512 100644 (file)
@@ -900,8 +900,13 @@ private:
           },
           [&](const parser::SelectRankStmt &s) {
             insertConstructName(s, parentConstruct);
+            lastConstructStmtEvaluation = &eval;
+          },
+          [&](const parser::SelectRankCaseStmt &) {
+            eval.isNewBlock = true;
+            lastConstructStmtEvaluation->controlSuccessor = &eval;
+            lastConstructStmtEvaluation = &eval;
           },
-          [&](const parser::SelectRankCaseStmt &) { eval.isNewBlock = true; },
           [&](const parser::SelectTypeStmt &s) {
             insertConstructName(s, parentConstruct);
             lastConstructStmtEvaluation = &eval;