D142279 enabled assertion in libstdc++ and one was triggered
in the PFTBuilder because an optional was access even if it was
null.
This patch fix this issue and add a regression test.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D143589
auto branchTargetMatch = [&]() {
if (const parser::Label targetLabel =
ifCandidateStack.back().ifTargetLabel)
- if (targetLabel == *targetEval.label)
+ if (targetEval.label && targetLabel == *targetEval.label)
return true; // goto target match
if (targetEvalIsEndDoStmt && ifCandidateStack.back().isCycleStmt)
return true; // cycle target match
--- /dev/null
+! RUN: %flang_fc1 -fdebug-pre-fir-tree -fopenacc %s | FileCheck %s
+ program rewrite_goto
+ integer b
+
+ b = dummy(10)
+
+ end
+ function dummy(a)
+ integer, a
+
+ do 10 i=1,10
+ 10 if(i .EQ. 1) GOTO 11
+ i=0
+ 11 dummy = a + i
+ return
+ end
+
+! CHECK: <<IfConstruct!>> -> 5
+! CHECK: 2 ^IfStmt -> 5: 10if(i.eq.1)goto11
+! CHECK: 3 ^GotoStmt! -> 7: goto11
+