[PATCH] D86484: [flang] Don't attempt to compute element size if no DynamicType
Tim Keith via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 24 12:31:03 PDT 2020
tskeith created this revision.
tskeith added reviewers: klausler, PeteSteinfeld.
tskeith added a project: Flang.
Herald added a reviewer: jdoerfert.
Herald added a reviewer: DavidTruby.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
tskeith requested review of this revision.
If an error has occurred a symbol may have a DeclTypeSpec but no
valid DynamicType. There is no need to compute the size of erroneous
symbols.
Also, we only need to process object entities and procedure entities.
All other kinds of symbols can be skipped.
This fixes another problem revealed by https://bugs.llvm.org/show_bug.cgi?id=47265
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D86484
Files:
flang/lib/Semantics/compute-offsets.cpp
Index: flang/lib/Semantics/compute-offsets.cpp
===================================================================
--- flang/lib/Semantics/compute-offsets.cpp
+++ flang/lib/Semantics/compute-offsets.cpp
@@ -300,9 +300,8 @@
}
void ComputeOffsetsHelper::DoSymbol(Symbol &symbol) {
- if (symbol.has<TypeParamDetails>() || symbol.has<SubprogramDetails>() ||
- symbol.has<UseDetails>() || symbol.has<ProcBindingDetails>()) {
- return; // these have type but no size
+ if (!symbol.has<ObjectEntityDetails>() && !symbol.has<ProcEntityDetails>()) {
+ return;
}
SizeAndAlignment s{GetSizeAndAlignment(symbol)};
if (s.size == 0) {
@@ -329,7 +328,7 @@
auto ComputeOffsetsHelper::GetElementSize(const Symbol &symbol)
-> SizeAndAlignment {
const DeclTypeSpec *type{symbol.GetType()};
- if (!type) {
+ if (!evaluate::DynamicType::From(type).has_value()) {
return {};
}
// TODO: The size of procedure pointers is not yet known
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D86484.287468.patch
Type: text/x-patch
Size: 960 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200824/7cd2edab/attachment.bin>
More information about the llvm-commits
mailing list