summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValentin Clement <clementval@gmail.com>2023-02-08 16:54:00 +0100
committerTom Stellard <tstellar@redhat.com>2023-05-15 21:32:49 -0700
commit1a04a5f1cf15ccf5e0472d495fc47311d9656410 (patch)
tree6adfb4719d2b4187a4dd05479e169291e25847f6
parentbef3459fcde7f0be0341a76bcc782799021bae70 (diff)
downloadllvm-1a04a5f1cf15ccf5e0472d495fc47311d9656410.tar.gz
[flang] Fix optional assertion in PFTBuilder
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 (cherry picked from commit 3f55311a0afff6278571922e1c23bf5c71dd2d0b)
-rw-r--r--flang/lib/Lower/PFTBuilder.cpp2
-rwxr-xr-xflang/test/Lower/pre-fir-tree08.f21
2 files changed, 22 insertions, 1 deletions
diff --git a/flang/lib/Lower/PFTBuilder.cpp b/flang/lib/Lower/PFTBuilder.cpp
index a5f1ed7fb0fd..cde906f7565f 100644
--- a/flang/lib/Lower/PFTBuilder.cpp
+++ b/flang/lib/Lower/PFTBuilder.cpp
@@ -508,7 +508,7 @@ private:
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
diff --git a/flang/test/Lower/pre-fir-tree08.f b/flang/test/Lower/pre-fir-tree08.f
new file mode 100755
index 000000000000..a7ee4eb23fc0
--- /dev/null
+++ b/flang/test/Lower/pre-fir-tree08.f
@@ -0,0 +1,21 @@
+! 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
+