diff options
author | Valentin Clement <clementval@gmail.com> | 2023-02-08 16:54:00 +0100 |
---|---|---|
committer | Tom Stellard <tstellar@redhat.com> | 2023-05-15 21:32:49 -0700 |
commit | 1a04a5f1cf15ccf5e0472d495fc47311d9656410 (patch) | |
tree | 6adfb4719d2b4187a4dd05479e169291e25847f6 | |
parent | bef3459fcde7f0be0341a76bcc782799021bae70 (diff) | |
download | llvm-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.cpp | 2 | ||||
-rwxr-xr-x | flang/test/Lower/pre-fir-tree08.f | 21 |
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 + |