From ad980b570217b6906e08c7cfbc67f5ee0ec35714 Mon Sep 17 00:00:00 2001 From: Valentin Clement Date: Sun, 6 Nov 2022 09:56:19 +0100 Subject: [PATCH] [flang] Fix controlSuccessor chain for select rank construct 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/flang/lib/Lower/PFTBuilder.cpp b/flang/lib/Lower/PFTBuilder.cpp index 8f87e96..19b2512 100644 --- a/flang/lib/Lower/PFTBuilder.cpp +++ b/flang/lib/Lower/PFTBuilder.cpp @@ -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; -- 2.7.4