|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2 |
|
| #
3d63d211 |
| 20-Apr-2022 |
Jean Perier <[email protected]> |
[flang] Do not pass derived type by descriptor when not needed
A missing "!" in the call interface lowering caused all derived type arguments without length parameters that require and explicit inte
[flang] Do not pass derived type by descriptor when not needed
A missing "!" in the call interface lowering caused all derived type arguments without length parameters that require and explicit interface to be passed via fir.box (runtime descriptor).
This was not the intent: there is no point passing a simple derived type scalars or explicit shapes by descriptor just because they have an attribute like TARGET. This would actually be problematic with existing code that is not always 100% compliant: some code implicitly calls procedures with TARGET dummy attributes (this is not something a compiler can enforce if the call and procedure definition are not in the same file).
Add a Scope::IsDerivedTypeWithLengthParameter to avoid passing derived types with only kind parameters by descriptor. There is no point, the callee knows about the kind parameter values.
Differential Revision: https://reviews.llvm.org/D123990
show more ...
|
|
Revision tags: llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4 |
|
| #
f2da8f5e |
| 11-Mar-2022 |
Jean Perier <[email protected]> |
[flang][NFC] rename IsKindParameterizedDerivedType and fix comment typos
Following post-review feedback on https://reviews.llvm.org/D120804 and https://reviews.llvm.org/D120801 about type descriptor
[flang][NFC] rename IsKindParameterizedDerivedType and fix comment typos
Following post-review feedback on https://reviews.llvm.org/D120804 and https://reviews.llvm.org/D120801 about type descriptor changes, fix typos in comments and rename IsKindParameterizedDerivedType to IsDerivedTypeWithKindParameter. Remove a useless `;`.
Reviewed By: clementval, PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D121470
show more ...
|
|
Revision tags: llvmorg-14.0.0-rc3 |
|
| #
f88a9497 |
| 03-Mar-2022 |
Jean Perier <[email protected]> |
[flang] Generate PDT runtime type info in the type definition scope
This patches modifies PDT runtime type info generation so that it is easier to handle derived type descriptor in lowering. It chan
[flang] Generate PDT runtime type info in the type definition scope
This patches modifies PDT runtime type info generation so that it is easier to handle derived type descriptor in lowering. It changes three aspects:
1. The symbol name suffix of runtime type info for PDT instantiation is changed from a serial number unrelated to the types to an encoding of the instantiated KIND parameters. 2. New runtime type info is not created for each instantiation of PDT without KIND parameters (only length parameters). Instead, the runtime type info of the type definition is always used. It is updated to contain the component descriptions. 3. Runtime type info of PDT instantiation is now always generated in the scope where the type is defined. If several PDT type instantiation are made in different scope with the same kind parameters, they will use the same runtime type info.
Rational of the change:
In lowering, derived type descriptors are not mapped when instantiating derived type objects. They are mapped later when symbol knowledge is not available anymore. This mapping is based on the FIR representation of derived types. For PDT, the FIR type information does not allow deducing the instantiation scope, it only allows retrieving the type name, the type _definition_ scope, and the kind parameter values. Therefore, in order to be able to retrieve the derived type descriptor from a FIR type, the derived type descriptor must be generated in the definition scope and must reflect the kind parameters. This justifies the need for changes 1. and 3. above (suffix and scope change). Changes 2. comes from the fact that all runtime type info of type without kind parameters can be generated from the type definition, and that because of the suffix change, the symbol name for type definition and type instantiation are the same.
Although this change is first motivated by how lowering handles derived types, I believe it is also an improvement from a functional point of view since this change will allow reducing the number of generated runtime type info for PDTs, since redundant information (different instantiations with same kind parameters) will only be generated once.
Differential Revision: https://reviews.llvm.org/D120801
show more ...
|
|
Revision tags: llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init |
|
| #
52a1346b |
| 26-Jan-2022 |
Peter Klausler <[email protected]> |
[flang] Distinguish intrinsic from non-intrinsic modules
For "USE, INTRINSIC", search only for intrinsic modules; for "USE, NON_INTRINSIC", do not recognize intrinsic modules. Allow modules of both
[flang] Distinguish intrinsic from non-intrinsic modules
For "USE, INTRINSIC", search only for intrinsic modules; for "USE, NON_INTRINSIC", do not recognize intrinsic modules. Allow modules of both kinds with the same name to be used in the same source file (but not in the same scoping unit, a constraint of the standard that is now enforced).
The symbol table's scope tree now has a single instance of a scope with a new kind, IntrinsicModules, whose children are the USE'd intrinsic modules (explicit or not). This separate "top-level" scope is a child of the single global scope and it allows both intrinsic and non-intrinsic modules of the same name to exist in the symbol table. Intrinsic modules' scopes' symbols now have the INTRINSIC attribute set.
The search path directories need to make a distinction between regular directories and the one(s) that point(s) to intrinsic modules. I allow for multiple intrinsic module directories in the second search path, although only one is needed today.
Differential Revision: https://reviews.llvm.org/D118631
show more ...
|
|
Revision tags: llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
| #
ac964175 |
| 03-Jun-2021 |
peter klausler <[email protected]> |
[flang] Support known constant lengths in DynamicType
The constexpr-capable class evaluate::DynamicType represented CHARACTER length only with a nullable pointer into the declared parameters of type
[flang] Support known constant lengths in DynamicType
The constexpr-capable class evaluate::DynamicType represented CHARACTER length only with a nullable pointer into the declared parameters of types in the symbol table, which works fine for anything with a declaration but turns out to not suffice to describe the results of the ACHAR() and CHAR() intrinsic functions. So extend DynamicType to also accommodate known constant CHARACTER lengths, too; use them for ACHAR & CHAR; clean up several use sites and fix regressions found in test.
Differential Revision: https://reviews.llvm.org/D103571
show more ...
|
| #
1dff8637 |
| 02-Jun-2021 |
peter klausler <[email protected]> |
[flang] Fix crashes due to failure to find a subprogram
In error recovery situations, the mappings from source locations to scopes were failing in a way that tripped some asserts. Specifically, Find
[flang] Fix crashes due to failure to find a subprogram
In error recovery situations, the mappings from source locations to scopes were failing in a way that tripped some asserts. Specifically, FindPureProcedureContaining() wasn't coping well when starting at the global scope. (And since the global scope no longer has a source range, clean up the Semantics constructor to avoid confusion.)
Differential Revision: https://reviews.llvm.org/D103567
show more ...
|
|
Revision tags: llvmorg-12.0.1-rc1 |
|
| #
5091671c |
| 07-Apr-2021 |
peter klausler <[email protected]> |
[flang] Enforce a limit on recursive PDT instantiations
For pernicious test cases with explicit non-constant actual type parameter expressions in components, e.g.:
type :: t(k) integer, kind
[flang] Enforce a limit on recursive PDT instantiations
For pernicious test cases with explicit non-constant actual type parameter expressions in components, e.g.:
type :: t(k) integer, kind :: k type(t(k+1)), pointer :: p end type
we should detect the infinite recursion and complain rather than looping until the stack overflows.
Differential Revision: https://reviews.llvm.org/D100065
show more ...
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4 |
|
| #
0d8331c0 |
| 18-Mar-2021 |
peter klausler <[email protected]> |
[flang] Refine symbol sorting
Replace semantics::SymbolSet with alternatives that clarify whether the set should order its contents by source position or not. This matters because positionally-orde
[flang] Refine symbol sorting
Replace semantics::SymbolSet with alternatives that clarify whether the set should order its contents by source position or not. This matters because positionally-ordered sets must not be used for Symbols that might be subjected to name replacement during name resolution, and address-ordered sets must not be used (without sorting) in circumstances where the order of their contents affects the output of the compiler.
All set<> and map<> instances in the compiler that are keyed by Symbols now have explicit Compare types in their template instantiations. Symbol::operator< is no more.
Differential Revision: https://reviews.llvm.org/D98878
show more ...
|
| #
46ade6d0 |
| 16-Mar-2021 |
peter klausler <[email protected]> |
[flang] Order Symbols by source provenance
In parser::AllCookedSources, implement a map from CharBlocks to the CookedSource instances that they cover. This permits a fast Find() operation based on
[flang] Order Symbols by source provenance
In parser::AllCookedSources, implement a map from CharBlocks to the CookedSource instances that they cover. This permits a fast Find() operation based on std::map::equal_range to map a CharBlock to its enclosing CookedSource instance.
Add a creation order number to each CookedSource. This allows AllCookedSources to provide a Precedes(x,y) predicate that is a true source stream ordering between two CharBlocks -- x is less than y if it is in an earlier CookedSource, or in the same CookedSource at an earlier position.
Add a reference to the singleton SemanticsContext to each Scope.
All of this allows operator< to be implemented on Symbols by means of a true source ordering. From a Symbol, we get to its Scope, then to the SemanticsContext, and then use its AllCookedSources reference to call Precedes().
Differential Revision: https://reviews.llvm.org/D98743
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2 |
|
| #
7d1397f7 |
| 19-Feb-2021 |
Renaud-K <[email protected]> |
Making FindCommonBlock a const member https://reviews.llvm.org/D97093
|
|
Revision tags: llvmorg-11.1.0, llvmorg-11.1.0-rc3 |
|
| #
ebe74d95 |
| 29-Jan-2021 |
peter klausler <[email protected]> |
[flang] Support disabled alternative PARAMETER statement
Legacy Fortran implementations support an alternative form of the PARAMETER statement; it differs syntactically from the standard's PARAMETER
[flang] Support disabled alternative PARAMETER statement
Legacy Fortran implementations support an alternative form of the PARAMETER statement; it differs syntactically from the standard's PARAMETER statement by lacking parentheses, and semantically by using the type and shape of the initialization expression to define the attributes of the named constant. (GNU Fortran gets that part wrong; Intel Fortran and nvfortran have full support.)
This patch disables the old style PARAMETER statement by default, as it is syntactically ambiguous with conforming assignment statements; adds a new "-falternative-parameter-statement" option to enable it; and implements it correctly when enabled.
Fixes https://bugs.llvm.org/show_bug.cgi?id=48774, in which a user tripped over the syntactic ambiguity.
Differential Revision: https://reviews.llvm.org/D95697
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1 |
|
| #
67b13e97 |
| 11-Nov-2020 |
peter klausler <[email protected]> |
[flang] Fix CheckSpecificationExpr handling of associated names
Avoid a spurious error message about a dummy procedure reference in a specification expression by restructuring the handling of use-as
[flang] Fix CheckSpecificationExpr handling of associated names
Avoid a spurious error message about a dummy procedure reference in a specification expression by restructuring the handling of use-associated and host-associated symbols.
Updated to fix a circular dependence between shared library binaries that was introduced by the original patch.
Differential revision: https://reviews.llvm.org/D91286
show more ...
|
|
Revision tags: llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3 |
|
| #
d2c69c2f |
| 11-Sep-2020 |
Richard Barton <[email protected]> |
[flang] Fix build issue with BUILD_SHARED_LIBS=ON
Define Fortran::Semantics::Scope::GetName in the header so it is available to Fortran::Evaluate::Tool::AttachDeclaration without a circular dependen
[flang] Fix build issue with BUILD_SHARED_LIBS=ON
Define Fortran::Semantics::Scope::GetName in the header so it is available to Fortran::Evaluate::Tool::AttachDeclaration without a circular dependency introduced in 82edd42.
Reviewed By: tskeith
Differential Revision: https://reviews.llvm.org/D87505
show more ...
|
| #
92a54197 |
| 31-Aug-2020 |
peter klausler <[email protected]> |
[flang] Support multiple CookedSource instances
These are owned by an instance of a new class AllCookedSources.
This removes the need for a Scope to own a string containing a module's cooked source
[flang] Support multiple CookedSource instances
These are owned by an instance of a new class AllCookedSources.
This removes the need for a Scope to own a string containing a module's cooked source stream, and will enable errors to be emitted when parsing module files in the future.
Differential Revision: https://reviews.llvm.org/D86891
show more ...
|
|
Revision tags: llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1 |
|
| #
7454acdf |
| 26-Jul-2020 |
Tim Keith <[email protected]> |
[flang] Fix implicit declarations in statement functions
If a symbol (that is not a dummy argument) is implicitly declared inside a statement function, don't create it in the statement function's sc
[flang] Fix implicit declarations in statement functions
If a symbol (that is not a dummy argument) is implicitly declared inside a statement function, don't create it in the statement function's scope. Instead, treat statement functions like blocks when finding the inclusive scope and create the symbol there.
Add a new flag, StmtFunction, to symbols that represent statement functions.
Differential Revision: https://reviews.llvm.org/D84588
show more ...
|
|
Revision tags: llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2 |
|
| #
14f49599 |
| 29-May-2020 |
Tim Keith <[email protected]> |
[flang][NFC] Remove link-time dependency of Evaluate on Semantics
Summary: Some Symbol-related functions used in Evaluate were moved to Evaluate/tools.h. This includes changing some member functions
[flang][NFC] Remove link-time dependency of Evaluate on Semantics
Summary: Some Symbol-related functions used in Evaluate were moved to Evaluate/tools.h. This includes changing some member functions that were replaced by non-member functions `IsDummy`, `GetUsedModule`, and `CountLenParameters`.
Some member functions were made inline in `Scope`, `Symbol`, `ArraySpec`, and `DeclTypeSpec`. The definitions were preceded by a comment explaining why they are inline.
`IsConstantShape` was expanded inline in `IsDescriptor` because it isn't used anywhere else
After this change, at least when compiling with clang on macos, `libFortranEvaluate.a` has no undefined symbols that are satisfied by `libFortranSemantics.a`.
Reviewers: klausler, PeteSteinfeld, sscalpone, jdoerfert, DavidTruby
Reviewed By: PeteSteinfeld
Subscribers: llvm-commits
Tags: #flang, #llvm
Differential Revision: https://reviews.llvm.org/D80762
show more ...
|
|
Revision tags: llvmorg-10.0.1-rc1 |
|
| #
d5c05ced |
| 06-May-2020 |
Tim Keith <[email protected]> |
[flang][NFC] Add accessors to equivalence and common blocks
Add a way to get mutable equivalence sets to Scope so that they can have sizes and offsets assigned to them.
Change CommonBlockDetails to
[flang][NFC] Add accessors to equivalence and common blocks
Add a way to get mutable equivalence sets to Scope so that they can have sizes and offsets assigned to them.
Change CommonBlockDetails to have mutable symbols so that they can have sizes and offets assigned to them. This also allows the removal of some `const_cast`s.
Add MutableSymbolRef and MutableSymbolVector as mutable analogs to SymbolRef and SymbolVector. Replace uses of equivalent types with those names.
Differential Revision: https://reviews.llvm.org/D79346
show more ...
|
| #
c353ebbf |
| 22-Apr-2020 |
Tim Keith <[email protected]> |
[flang] Compute sizes and offsets for symbols
Summary: Add size and offset properties to symbols, representing their byte size and offset within their enclosing scope.
Add size and align properties
[flang] Compute sizes and offsets for symbols
Summary: Add size and offset properties to symbols, representing their byte size and offset within their enclosing scope.
Add size and align properties to scopes so that they are available for scopes representing derived types.
Add ComputeOffsets pass over the symbol table to fill in those fields.
Compute descriptor size based on rank and length parameters. Extract DerivedTypeSpec::NumLengthParameters from DynamicType::RequiresDescriptor to share the code.
Add Scope::GetSymbols to get symbols in canonical order. compute-offsets.cpp and mod-file.cpp both need to process symbols in the order in which they are declared. Move the collecting of those symbols into Scope so that it can be shared.
Add symbol size and offset to output of `-fdebug-dump-symbols` and use that in some tests.
Still to do: - make size and alignment rules configurable based on target - use offsets to check EQUIVALENCE statements
Differential Revision: https://reviews.llvm.org/D78680
show more ...
|
| #
2b790490 |
| 31-Mar-2020 |
Pete Steinfeld <[email protected]> |
[flang] Checks for constraints C731 through C740
In most cases, I just added the contraint names to the code and tests.
I implemented the following checks: - C736 A child type with a coarray ulti
[flang] Checks for constraints C731 through C740
In most cases, I just added the contraint names to the code and tests.
I implemented the following checks: - C736 A child type with a coarray ultimate component must have a parent with a coarray ultimate component. - C737 A child type with and EVENT_TYPE or LOCK_TYPE component must have a parent either which is EVENT_TYPE or LOCK_TYPE or a type with an EVENT_TYPE or LOCK_TYPE component. - C740 Sequence types must contain at least on component - C740 Data components of sequence types must either be of an intrinsic type or a sequenced derived type.
After implementing these checks, some tests had new errors unrelated to their original purpose, so I fixed them.
Original-commit: flang-compiler/f18@098f01bc474798ae03bd4dc7de6c929deec6f244 Reviewed-on: https://github.com/flang-compiler/f18/pull/1097
show more ...
|
| #
1f879005 |
| 29-Mar-2020 |
Tim Keith <[email protected]> |
[flang] Reformat with latest clang-format and .clang-format
Original-commit: flang-compiler/f18@9fe84f45d7fd685051004678d6b5775dcc4c6f8f Reviewed-on: https://github.com/flang-compiler/f18/pull/1094
|
|
Revision tags: llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3 |
|
| #
8670e499 |
| 28-Feb-2020 |
Caroline Concatto <[email protected]> |
[flang] [LLVMify F18] Replace the use std::ostream with LLVM streams llvm::ostream
This patch replaces the occurrence of std::ostream by llvm::raw_ostream. In LLVM Coding Standards[1] "All new code
[flang] [LLVMify F18] Replace the use std::ostream with LLVM streams llvm::ostream
This patch replaces the occurrence of std::ostream by llvm::raw_ostream. In LLVM Coding Standards[1] "All new code should use raw_ostream instead of ostream".[1]
As a consequence, this patch also replaces the use of: std::stringstream by llvm::raw_string_ostream or llvm::raw_ostream* std::ofstream by llvm::raw_fd_ostream std::endl by '\n' and flush()[2] std::cout by llvm::outs() and std::cerr by llvm::errs()
It also replaces std::strerro by llvm::sys::StrError** , but NOT in Fortran runtime libraries
*std::stringstream were replaced by llvm::raw_ostream in all methods that used std::stringstream as a parameter. Moreover, it removes the pointers to these streams.
[1]https://llvm.org/docs/CodingStandards.html [2]https://releases.llvm.org/2.5/docs/CodingStandards.html#ll_avoidendl
Signed-off-by: Caroline Concatto <[email protected]>
Running clang-format-7
Signed-off-by: Caroline Concatto <[email protected]>
Removing residue of ostream library
Signed-off-by: Caroline Concatto <[email protected]>
Original-commit: flang-compiler/f18@a3507d44b8911e6024033aa583c1dc54e0eb89fd Reviewed-on: https://github.com/flang-compiler/f18/pull/1047
show more ...
|
| #
61b1390e |
| 17-Mar-2020 |
Tim Keith <[email protected]> |
[flang] Check module subprogram against separate module procedure
When a module subprogram has the MODULE prefix the following must match with the corresponding separate module procedure interface b
[flang] Check module subprogram against separate module procedure
When a module subprogram has the MODULE prefix the following must match with the corresponding separate module procedure interface body: - C1549: characteristics and dummy argument names - C1550: binding label - C1551: NON_RECURSIVE prefix
SubprogramMatchHelper performs all of these checks.
Rename separate-module-procs.f90 to separate-mp01.f90 so we can have separate-mp02.f90 (etc).
Make ShapesAreCompatible public in characteristics.h.
Add Scope::IsSubmodule.
Original-commit: flang-compiler/f18@d121578af17109de3cea23617e4b8239971b5527 Reviewed-on: https://github.com/flang-compiler/f18/pull/1080
show more ...
|
| #
824d198e |
| 17-Mar-2020 |
Tim Keith <[email protected]> |
[flang] Create symbols for args of separate-module-subprogram
A separate-module-subprogram is declared as `module procedure ...` and gets its characteristics from the declaration of that name as a s
[flang] Create symbols for args of separate-module-subprogram
A separate-module-subprogram is declared as `module procedure ...` and gets its characteristics from the declaration of that name as a separate module procedure. When we encounter one, we need to create symbols in the new subprogram scope for the dummy arguments and function return (if any).
The failure to create these symbols led to the bug in issue flang-compiler/f18#1054: when a dummy argument was referenced, the compiler interpreted it as an implicit declaration because there was no symbol for the argument.
Fixes flang-compiler/f18#1054.
Original-commit: flang-compiler/f18@4d3c4bac843dcc6351fbe7538c6ce23bb9c1a215 Reviewed-on: https://github.com/flang-compiler/f18/pull/1080 Tree-same-pre-rewrite: false
show more ...
|
| #
6ab50745 |
| 10-Mar-2020 |
Tim Keith <[email protected]> |
[flang] Fix scope accessibility check
The check for whether a private component is accessible was depending on determining whether the source range of the current scope was within the source range o
[flang] Fix scope accessibility check
The check for whether a private component is accessible was depending on determining whether the source range of the current scope was within the source range of the module that the component was declared in. This could fail if the current scope was of kind `ImpliedDos` and had no source range.
The fix is to add `Scope::Contains` to check the relationship by traversing the parent links. These are created when the Scope is so are always reliable. The source range of a scope is built up over time.
Original-commit: flang-compiler/f18@d787108637adad358ccf8af3d200acb3f66ce099 Reviewed-on: https://github.com/flang-compiler/f18/pull/1060
show more ...
|
| #
64ab3302 |
| 25-Feb-2020 |
CarolineConcatto <[email protected]> |
[flang] [LLVMify F18] Compiler module folders should have capitalised names (flang-compiler/f18#980)
This patch renames the modules in f18 to use a capital letter in the
module name
Signed-off-b
[flang] [LLVMify F18] Compiler module folders should have capitalised names (flang-compiler/f18#980)
This patch renames the modules in f18 to use a capital letter in the
module name
Signed-off-by: Caroline Concatto <[email protected]>
Original-commit: flang-compiler/f18@d2eb7a1c443d1539ef12b6f027074a0eb15b1ea0 Reviewed-on: https://github.com/flang-compiler/f18/pull/980
show more ...
|