From: Paul Scoropan <1paulscoropan@gmail.com> Date: Wed, 5 Apr 2023 14:31:16 +0000 (+0000) Subject: [Flang] Fix usage of uninitialized resolution variable X-Git-Tag: upstream/17.0.6~12572 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6da1f2277dd1fbd560204c6ab0e129eb3cb0906b;p=platform%2Fupstream%2Fllvm.git [Flang] Fix usage of uninitialized resolution variable Recent Flang PowerPC intrinsics patch used resolution variable without checking if it exists first, causing segmentation faults in some scenarios. This patch checks that the resolution variable exists first before usage. Reviewed By: DanielCChen Differential Revision: https://reviews.llvm.org/D147616 --- diff --git a/flang/lib/Semantics/expression.cpp b/flang/lib/Semantics/expression.cpp index 06226f2..cec936c 100644 --- a/flang/lib/Semantics/expression.cpp +++ b/flang/lib/Semantics/expression.cpp @@ -2518,12 +2518,12 @@ auto ExpressionAnalyzer::GetCalleeAndArguments(const parser::Name &name, mightBeStructureConstructor)}; resolution = pair.first; dueToAmbiguity = pair.second; - if (context_.GetPPCBuiltinsScope() && - resolution->name().ToString().rfind("__ppc_", 0) == 0) { - semantics::CheckPPCIntrinsic( - *symbol, *resolution, arguments, GetFoldingContext()); - } if (resolution) { + if (context_.GetPPCBuiltinsScope() && + resolution->name().ToString().rfind("__ppc_", 0) == 0) { + semantics::CheckPPCIntrinsic( + *symbol, *resolution, arguments, GetFoldingContext()); + } // re-resolve name to the specific procedure name.symbol = const_cast(resolution); }