| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[flang][OpenMP] Parse AFFINITY clause, lowering not supported yet (#113485) Implement parsing of the AFFINITY clause on TASK construct, conversion from the parser class to omp::Clause. Lowering to HLFIR is unsupported, a TODO message is displayed. | 1 年前 | |
[flang][OpenMP] Move check of ALIGN clause to visitor function (#164261) This replaces CheckAlignValue with an Enter function, and adds a check that the alignment is a power of 2. | 9 个月前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in ALLOCATE (#165865) The ALLOCATE directive has two forms: - A declarative form with a standalone directive: !$OMP ALLOCATE (variable-list-item...) - An executable form that consists of several directives followed by an ALLOCATE statement: !$OMP ALLOCATE (variable-list-item...) !$OMP ALLOCATE (variable-list-item...) ... ALLOCATE (...) The second form was deprecated in OpenMP 5.2 in favor of the ALLOCATORS construct. Since in the parse tree every type corresponding to a directive only corresponds to a single directive, the executable form is represented by a sequence of nested OmpAllocateDirectives, e.g. !$OMP ALLOCATE(x) !$OMP ALLOCATE(y) ALLOCATE(x, y) will become `` OmpAllocateDirective |- ALLOCATE(x) // begin directive - OmpAllocateDirective // block |- ALLOCATE(y) // begin directive - ALLOCATE(x, y) // block `` With this change all AST nodes for directives use OmpDirectiveSpecification as the directive representation. | 9 个月前 | |
[flang][OpenMP] Use new modifiers in ALLOCATE clause (#117627) Again, this simplifies the semantic checks and lowering quite a bit. Update the check for positive alignment to use a more informative message, and to highlight the modifier itsef, not the whole clause. Remove the checks for the allocator expression itself being positive: there is nothing in the spec that says that it should be positive. Remove the "simple" modifier from the AllocateT template, since both simple and complex modifiers are the same thing, only differing in syntax. | 1 年前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in ALLOCATE (#165865) The ALLOCATE directive has two forms: - A declarative form with a standalone directive: !$OMP ALLOCATE (variable-list-item...) - An executable form that consists of several directives followed by an ALLOCATE statement: !$OMP ALLOCATE (variable-list-item...) !$OMP ALLOCATE (variable-list-item...) ... ALLOCATE (...) The second form was deprecated in OpenMP 5.2 in favor of the ALLOCATORS construct. Since in the parse tree every type corresponding to a directive only corresponds to a single directive, the executable form is represented by a sequence of nested OmpAllocateDirectives, e.g. !$OMP ALLOCATE(x) !$OMP ALLOCATE(y) ALLOCATE(x, y) will become `` OmpAllocateDirective |- ALLOCATE(x) // begin directive - OmpAllocateDirective // block |- ALLOCATE(y) // begin directive - ALLOCATE(x, y) // block `` With this change all AST nodes for directives use OmpDirectiveSpecification as the directive representation. | 9 个月前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in ALLOCATE (#165865) The ALLOCATE directive has two forms: - A declarative form with a standalone directive: !$OMP ALLOCATE (variable-list-item...) - An executable form that consists of several directives followed by an ALLOCATE statement: !$OMP ALLOCATE (variable-list-item...) !$OMP ALLOCATE (variable-list-item...) ... ALLOCATE (...) The second form was deprecated in OpenMP 5.2 in favor of the ALLOCATORS construct. Since in the parse tree every type corresponding to a directive only corresponds to a single directive, the executable form is represented by a sequence of nested OmpAllocateDirectives, e.g. !$OMP ALLOCATE(x) !$OMP ALLOCATE(y) ALLOCATE(x, y) will become `` OmpAllocateDirective |- ALLOCATE(x) // begin directive - OmpAllocateDirective // block |- ALLOCATE(y) // begin directive - ALLOCATE(x, y) // block `` With this change all AST nodes for directives use OmpDirectiveSpecification as the directive representation. | 9 个月前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in ALLOCATE (#165865) The ALLOCATE directive has two forms: - A declarative form with a standalone directive: !$OMP ALLOCATE (variable-list-item...) - An executable form that consists of several directives followed by an ALLOCATE statement: !$OMP ALLOCATE (variable-list-item...) !$OMP ALLOCATE (variable-list-item...) ... ALLOCATE (...) The second form was deprecated in OpenMP 5.2 in favor of the ALLOCATORS construct. Since in the parse tree every type corresponding to a directive only corresponds to a single directive, the executable form is represented by a sequence of nested OmpAllocateDirectives, e.g. !$OMP ALLOCATE(x) !$OMP ALLOCATE(y) ALLOCATE(x, y) will become `` OmpAllocateDirective |- ALLOCATE(x) // begin directive - OmpAllocateDirective // block |- ALLOCATE(y) // begin directive - ALLOCATE(x, y) // block `` With this change all AST nodes for directives use OmpDirectiveSpecification as the directive representation. | 9 个月前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in ALLOCATE (#165865) The ALLOCATE directive has two forms: - A declarative form with a standalone directive: !$OMP ALLOCATE (variable-list-item...) - An executable form that consists of several directives followed by an ALLOCATE statement: !$OMP ALLOCATE (variable-list-item...) !$OMP ALLOCATE (variable-list-item...) ... ALLOCATE (...) The second form was deprecated in OpenMP 5.2 in favor of the ALLOCATORS construct. Since in the parse tree every type corresponding to a directive only corresponds to a single directive, the executable form is represented by a sequence of nested OmpAllocateDirectives, e.g. !$OMP ALLOCATE(x) !$OMP ALLOCATE(y) ALLOCATE(x, y) will become `` OmpAllocateDirective |- ALLOCATE(x) // begin directive - OmpAllocateDirective // block |- ALLOCATE(y) // begin directive - ALLOCATE(x, y) // block `` With this change all AST nodes for directives use OmpDirectiveSpecification as the directive representation. | 9 个月前 | |
[flang][OpenMP] Refactor/update semantic checks for ALLOCATE directive (#164420) OpenMP 5.0 and 5.1 allowed the ALLOCATE directive to appear in two forms, declarative and executable. The syntax of an individual directive was the same in both cases, but the semantic restrictions were slightly different. - Update the semantic checks to reflect the different restrictions, gather them in a single function. - Improve test for the presence of a TARGET region, add a check for REQUIRES directive. - Update tests. | 9 个月前 | |
[flang][OpenMP] Refactor/update semantic checks for ALLOCATE directive (#164420) OpenMP 5.0 and 5.1 allowed the ALLOCATE directive to appear in two forms, declarative and executable. The syntax of an individual directive was the same in both cases, but the semantic restrictions were slightly different. - Update the semantic checks to reflect the different restrictions, gather them in a single function. - Improve test for the presence of a TARGET region, add a check for REQUIRES directive. - Update tests. | 9 个月前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in ALLOCATE (#165865) The ALLOCATE directive has two forms: - A declarative form with a standalone directive: !$OMP ALLOCATE (variable-list-item...) - An executable form that consists of several directives followed by an ALLOCATE statement: !$OMP ALLOCATE (variable-list-item...) !$OMP ALLOCATE (variable-list-item...) ... ALLOCATE (...) The second form was deprecated in OpenMP 5.2 in favor of the ALLOCATORS construct. Since in the parse tree every type corresponding to a directive only corresponds to a single directive, the executable form is represented by a sequence of nested OmpAllocateDirectives, e.g. !$OMP ALLOCATE(x) !$OMP ALLOCATE(y) ALLOCATE(x, y) will become `` OmpAllocateDirective |- ALLOCATE(x) // begin directive - OmpAllocateDirective // block |- ALLOCATE(y) // begin directive - ALLOCATE(x, y) // block `` With this change all AST nodes for directives use OmpDirectiveSpecification as the directive representation. | 9 个月前 | |
[Flang][OpenMP] Re-enable tests on windows 1/n (#92904) Re-enable tests starting with a or b. | 2 年前 | |
[flang][OpenMP] Reorganize ALLOCATE-related semantic checks (#165719) For ALLOCATORS and executable ALLOCATE first perform list item checks in the context of an individual ALLOCATE clause or directive respectively, then perform "global" checks, e.g. whether all list items are present on the ALLOCATE statement. These changes allowed to simplify the checks for presence on ALLOCATE statement and the use of a predefined allocator. Additionally, allow variable list item lists to be empty, add a test for the related spec restriction. This is a first step towards unifying OpenMPDeclarativeAllocate and OpenMPExecutableAllocate into a single directive. | 9 个月前 | |
[flang][OpenMP] Reorganize ALLOCATE-related semantic checks (#165719) For ALLOCATORS and executable ALLOCATE first perform list item checks in the context of an individual ALLOCATE clause or directive respectively, then perform "global" checks, e.g. whether all list items are present on the ALLOCATE statement. These changes allowed to simplify the checks for presence on ALLOCATE statement and the use of a predefined allocator. Additionally, allow variable list item lists to be empty, add a test for the related spec restriction. This is a first step towards unifying OpenMPDeclarativeAllocate and OpenMPExecutableAllocate into a single directive. | 9 个月前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in ALLOCATE (#165865) The ALLOCATE directive has two forms: - A declarative form with a standalone directive: !$OMP ALLOCATE (variable-list-item...) - An executable form that consists of several directives followed by an ALLOCATE statement: !$OMP ALLOCATE (variable-list-item...) !$OMP ALLOCATE (variable-list-item...) ... ALLOCATE (...) The second form was deprecated in OpenMP 5.2 in favor of the ALLOCATORS construct. Since in the parse tree every type corresponding to a directive only corresponds to a single directive, the executable form is represented by a sequence of nested OmpAllocateDirectives, e.g. !$OMP ALLOCATE(x) !$OMP ALLOCATE(y) ALLOCATE(x, y) will become `` OmpAllocateDirective |- ALLOCATE(x) // begin directive - OmpAllocateDirective // block |- ALLOCATE(y) // begin directive - ALLOCATE(x, y) // block `` With this change all AST nodes for directives use OmpDirectiveSpecification as the directive representation. | 9 个月前 | |
[flang][OpenMP] Reorganize ALLOCATE-related semantic checks (#165719) For ALLOCATORS and executable ALLOCATE first perform list item checks in the context of an individual ALLOCATE clause or directive respectively, then perform "global" checks, e.g. whether all list items are present on the ALLOCATE statement. These changes allowed to simplify the checks for presence on ALLOCATE statement and the use of a predefined allocator. Additionally, allow variable list item lists to be empty, add a test for the related spec restriction. This is a first step towards unifying OpenMPDeclarativeAllocate and OpenMPExecutableAllocate into a single directive. | 9 个月前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in ALLOCATE (#165865) The ALLOCATE directive has two forms: - A declarative form with a standalone directive: !$OMP ALLOCATE (variable-list-item...) - An executable form that consists of several directives followed by an ALLOCATE statement: !$OMP ALLOCATE (variable-list-item...) !$OMP ALLOCATE (variable-list-item...) ... ALLOCATE (...) The second form was deprecated in OpenMP 5.2 in favor of the ALLOCATORS construct. Since in the parse tree every type corresponding to a directive only corresponds to a single directive, the executable form is represented by a sequence of nested OmpAllocateDirectives, e.g. !$OMP ALLOCATE(x) !$OMP ALLOCATE(y) ALLOCATE(x, y) will become `` OmpAllocateDirective |- ALLOCATE(x) // begin directive - OmpAllocateDirective // block |- ALLOCATE(y) // begin directive - ALLOCATE(x, y) // block `` With this change all AST nodes for directives use OmpDirectiveSpecification as the directive representation. | 9 个月前 | |
[flang][OpenMP] Reorganize ALLOCATE-related semantic checks (#165719) For ALLOCATORS and executable ALLOCATE first perform list item checks in the context of an individual ALLOCATE clause or directive respectively, then perform "global" checks, e.g. whether all list items are present on the ALLOCATE statement. These changes allowed to simplify the checks for presence on ALLOCATE statement and the use of a predefined allocator. Additionally, allow variable list item lists to be empty, add a test for the related spec restriction. This is a first step towards unifying OpenMPDeclarativeAllocate and OpenMPExecutableAllocate into a single directive. | 9 个月前 | |
[Flang][OpenMP] Re-enable tests on windows 1/n (#92904) Re-enable tests starting with a or b. | 2 年前 | |
[Flang][OpenMP] Re-enable tests on windows 1/n (#92904) Re-enable tests starting with a or b. | 2 年前 | |
[flang][OpenMP] Reorganize ALLOCATE-related semantic checks (#165719) For ALLOCATORS and executable ALLOCATE first perform list item checks in the context of an individual ALLOCATE clause or directive respectively, then perform "global" checks, e.g. whether all list items are present on the ALLOCATE statement. These changes allowed to simplify the checks for presence on ALLOCATE statement and the use of a predefined allocator. Additionally, allow variable list item lists to be empty, add a test for the related spec restriction. This is a first step towards unifying OpenMPDeclarativeAllocate and OpenMPExecutableAllocate into a single directive. | 9 个月前 | |
[flang][OpenMP] Reorganize ALLOCATE-related semantic checks (#165719) For ALLOCATORS and executable ALLOCATE first perform list item checks in the context of an individual ALLOCATE clause or directive respectively, then perform "global" checks, e.g. whether all list items are present on the ALLOCATE statement. These changes allowed to simplify the checks for presence on ALLOCATE statement and the use of a predefined allocator. Additionally, allow variable list item lists to be empty, add a test for the related spec restriction. This is a first step towards unifying OpenMPDeclarativeAllocate and OpenMPExecutableAllocate into a single directive. | 9 个月前 | |
[flang][OpenMP] Anonymous BLOCK DATA may not have Symbol at all (#165250) This fixes https://linaro.atlassian.net/browse/LLVM-2106 and https://github.com/llvm/llvm-project/issues/164815. | 9 个月前 | |
[flang][OpenMP] Avoid analyzing assumed-size array bases (#150324) A check for character substrings masquerading as array sections was using expression analyzer on the array base. When this array happened to be an assumed-size array, the analyzer emitted a semantic error that did not correspond to any issue with the source code. To avoid that, check whether the object is an assumed-size array before using the expression analyzer on it. While at it, replace the call to GetShape with a simple check for rank, since that's the only information needed. Fixes https://github.com/llvm/llvm-project/issues/150297 | 1 年前 | |
[Flang][OpenMP] fix crash on sematic error in atomic capture clause (#140710) Fix a crash caused by an invalid expression in the atomic capture clause, due to the checkForSymbolMatch function not accounting for GetExpr potentially returning null. Fix https://github.com/llvm/llvm-project/issues/139884 | 1 年前 | |
[flang][OpenMP] Overhaul implementation of ATOMIC construct (#137852) The parser will accept a wide variety of illegal attempts at forming an ATOMIC construct, leaving it to the semantic analysis to diagnose any issues. This consolidates the analysis into one place and allows us to produce more informative diagnostics. The parser's outcome will be parser::OpenMPAtomicConstruct object holding the directive, parser::Body, and an optional end-directive. The prior variety of OmpAtomicXyz classes, as well as OmpAtomicClause have been removed. READ, WRITE, etc. are now proper clauses. The semantic analysis consistently operates on "evaluation" representations, mainly evaluate::Expr (as SomeExpr) and evaluate::Assignment. The results of the semantic analysis are stored in a mutable member of the OpenMPAtomicConstruct node. This follows a precedent of having typedExpr member in parser::Expr, for example. This allows the lowering code to avoid duplicated handling of AST nodes. Using a BLOCK construct containing multiple statements for an ATOMIC construct that requires multiple statements is now allowed. In fact, any nesting of such BLOCK constructs is allowed. This implementation will parse, and perform semantic checks for both conditional-update and conditional-update-capture, although no MLIR will be generated for those. Instead, a TODO error will be issues prior to lowering. The allowed forms of the ATOMIC construct were based on the OpenMP 6.0 spec. | 1 年前 | |
[flang][OpenMP] Overhaul implementation of ATOMIC construct (#137852) The parser will accept a wide variety of illegal attempts at forming an ATOMIC construct, leaving it to the semantic analysis to diagnose any issues. This consolidates the analysis into one place and allows us to produce more informative diagnostics. The parser's outcome will be parser::OpenMPAtomicConstruct object holding the directive, parser::Body, and an optional end-directive. The prior variety of OmpAtomicXyz classes, as well as OmpAtomicClause have been removed. READ, WRITE, etc. are now proper clauses. The semantic analysis consistently operates on "evaluation" representations, mainly evaluate::Expr (as SomeExpr) and evaluate::Assignment. The results of the semantic analysis are stored in a mutable member of the OpenMPAtomicConstruct node. This follows a precedent of having typedExpr member in parser::Expr, for example. This allows the lowering code to avoid duplicated handling of AST nodes. Using a BLOCK construct containing multiple statements for an ATOMIC construct that requires multiple statements is now allowed. In fact, any nesting of such BLOCK constructs is allowed. This implementation will parse, and perform semantic checks for both conditional-update and conditional-update-capture, although no MLIR will be generated for those. Instead, a TODO error will be issues prior to lowering. The allowed forms of the ATOMIC construct were based on the OpenMP 6.0 spec. | 1 年前 | |
[flang][OpenMP] Overhaul implementation of ATOMIC construct (#137852) The parser will accept a wide variety of illegal attempts at forming an ATOMIC construct, leaving it to the semantic analysis to diagnose any issues. This consolidates the analysis into one place and allows us to produce more informative diagnostics. The parser's outcome will be parser::OpenMPAtomicConstruct object holding the directive, parser::Body, and an optional end-directive. The prior variety of OmpAtomicXyz classes, as well as OmpAtomicClause have been removed. READ, WRITE, etc. are now proper clauses. The semantic analysis consistently operates on "evaluation" representations, mainly evaluate::Expr (as SomeExpr) and evaluate::Assignment. The results of the semantic analysis are stored in a mutable member of the OpenMPAtomicConstruct node. This follows a precedent of having typedExpr member in parser::Expr, for example. This allows the lowering code to avoid duplicated handling of AST nodes. Using a BLOCK construct containing multiple statements for an ATOMIC construct that requires multiple statements is now allowed. In fact, any nesting of such BLOCK constructs is allowed. This implementation will parse, and perform semantic checks for both conditional-update and conditional-update-capture, although no MLIR will be generated for those. Instead, a TODO error will be issues prior to lowering. The allowed forms of the ATOMIC construct were based on the OpenMP 6.0 spec. | 1 年前 | |
[flang][OpenMP] Overhaul implementation of ATOMIC construct (#137852) The parser will accept a wide variety of illegal attempts at forming an ATOMIC construct, leaving it to the semantic analysis to diagnose any issues. This consolidates the analysis into one place and allows us to produce more informative diagnostics. The parser's outcome will be parser::OpenMPAtomicConstruct object holding the directive, parser::Body, and an optional end-directive. The prior variety of OmpAtomicXyz classes, as well as OmpAtomicClause have been removed. READ, WRITE, etc. are now proper clauses. The semantic analysis consistently operates on "evaluation" representations, mainly evaluate::Expr (as SomeExpr) and evaluate::Assignment. The results of the semantic analysis are stored in a mutable member of the OpenMPAtomicConstruct node. This follows a precedent of having typedExpr member in parser::Expr, for example. This allows the lowering code to avoid duplicated handling of AST nodes. Using a BLOCK construct containing multiple statements for an ATOMIC construct that requires multiple statements is now allowed. In fact, any nesting of such BLOCK constructs is allowed. This implementation will parse, and perform semantic checks for both conditional-update and conditional-update-capture, although no MLIR will be generated for those. Instead, a TODO error will be issues prior to lowering. The allowed forms of the ATOMIC construct were based on the OpenMP 6.0 spec. | 1 年前 | |
[flang][OpenMP] Reassociate ATOMIC update expressions (#153488) An atomic update expression of form x = x + a + b is technically illegal, since the right-hand side is parsed as (x+a)+b, and the atomic variable x should be an argument to the top-level +. When the type of x is integer, the result of (x+a)+b is guaranteed to be the same as x+(a+b), so instead of reporting an error, the compiler can treat (x+a)+b as x+(a+b). This PR implements this kind of reassociation for integral types, and for the two arithmetic associative/commutative operators: + and *. Reinstate PR153098 one more time with fixes for the issues that came up: - unused variable "lsrc", - use of ‘outer1’ before deduction of ‘auto’. | 11 个月前 | |
[flang][OpenMP] Overhaul implementation of ATOMIC construct (#137852) The parser will accept a wide variety of illegal attempts at forming an ATOMIC construct, leaving it to the semantic analysis to diagnose any issues. This consolidates the analysis into one place and allows us to produce more informative diagnostics. The parser's outcome will be parser::OpenMPAtomicConstruct object holding the directive, parser::Body, and an optional end-directive. The prior variety of OmpAtomicXyz classes, as well as OmpAtomicClause have been removed. READ, WRITE, etc. are now proper clauses. The semantic analysis consistently operates on "evaluation" representations, mainly evaluate::Expr (as SomeExpr) and evaluate::Assignment. The results of the semantic analysis are stored in a mutable member of the OpenMPAtomicConstruct node. This follows a precedent of having typedExpr member in parser::Expr, for example. This allows the lowering code to avoid duplicated handling of AST nodes. Using a BLOCK construct containing multiple statements for an ATOMIC construct that requires multiple statements is now allowed. In fact, any nesting of such BLOCK constructs is allowed. This implementation will parse, and perform semantic checks for both conditional-update and conditional-update-capture, although no MLIR will be generated for those. Instead, a TODO error will be issues prior to lowering. The allowed forms of the ATOMIC construct were based on the OpenMP 6.0 spec. | 1 年前 | |
[flang][OpenMP] Overhaul implementation of ATOMIC construct (#137852) The parser will accept a wide variety of illegal attempts at forming an ATOMIC construct, leaving it to the semantic analysis to diagnose any issues. This consolidates the analysis into one place and allows us to produce more informative diagnostics. The parser's outcome will be parser::OpenMPAtomicConstruct object holding the directive, parser::Body, and an optional end-directive. The prior variety of OmpAtomicXyz classes, as well as OmpAtomicClause have been removed. READ, WRITE, etc. are now proper clauses. The semantic analysis consistently operates on "evaluation" representations, mainly evaluate::Expr (as SomeExpr) and evaluate::Assignment. The results of the semantic analysis are stored in a mutable member of the OpenMPAtomicConstruct node. This follows a precedent of having typedExpr member in parser::Expr, for example. This allows the lowering code to avoid duplicated handling of AST nodes. Using a BLOCK construct containing multiple statements for an ATOMIC construct that requires multiple statements is now allowed. In fact, any nesting of such BLOCK constructs is allowed. This implementation will parse, and perform semantic checks for both conditional-update and conditional-update-capture, although no MLIR will be generated for those. Instead, a TODO error will be issues prior to lowering. The allowed forms of the ATOMIC construct were based on the OpenMP 6.0 spec. | 1 年前 | |
[flang][OpenMP] Overhaul implementation of ATOMIC construct (#137852) The parser will accept a wide variety of illegal attempts at forming an ATOMIC construct, leaving it to the semantic analysis to diagnose any issues. This consolidates the analysis into one place and allows us to produce more informative diagnostics. The parser's outcome will be parser::OpenMPAtomicConstruct object holding the directive, parser::Body, and an optional end-directive. The prior variety of OmpAtomicXyz classes, as well as OmpAtomicClause have been removed. READ, WRITE, etc. are now proper clauses. The semantic analysis consistently operates on "evaluation" representations, mainly evaluate::Expr (as SomeExpr) and evaluate::Assignment. The results of the semantic analysis are stored in a mutable member of the OpenMPAtomicConstruct node. This follows a precedent of having typedExpr member in parser::Expr, for example. This allows the lowering code to avoid duplicated handling of AST nodes. Using a BLOCK construct containing multiple statements for an ATOMIC construct that requires multiple statements is now allowed. In fact, any nesting of such BLOCK constructs is allowed. This implementation will parse, and perform semantic checks for both conditional-update and conditional-update-capture, although no MLIR will be generated for those. Instead, a TODO error will be issues prior to lowering. The allowed forms of the ATOMIC construct were based on the OpenMP 6.0 spec. | 1 年前 | |
[flang][OpenMP] Overhaul implementation of ATOMIC construct (#137852) The parser will accept a wide variety of illegal attempts at forming an ATOMIC construct, leaving it to the semantic analysis to diagnose any issues. This consolidates the analysis into one place and allows us to produce more informative diagnostics. The parser's outcome will be parser::OpenMPAtomicConstruct object holding the directive, parser::Body, and an optional end-directive. The prior variety of OmpAtomicXyz classes, as well as OmpAtomicClause have been removed. READ, WRITE, etc. are now proper clauses. The semantic analysis consistently operates on "evaluation" representations, mainly evaluate::Expr (as SomeExpr) and evaluate::Assignment. The results of the semantic analysis are stored in a mutable member of the OpenMPAtomicConstruct node. This follows a precedent of having typedExpr member in parser::Expr, for example. This allows the lowering code to avoid duplicated handling of AST nodes. Using a BLOCK construct containing multiple statements for an ATOMIC construct that requires multiple statements is now allowed. In fact, any nesting of such BLOCK constructs is allowed. This implementation will parse, and perform semantic checks for both conditional-update and conditional-update-capture, although no MLIR will be generated for those. Instead, a TODO error will be issues prior to lowering. The allowed forms of the ATOMIC construct were based on the OpenMP 6.0 spec. | 1 年前 | |
[flang][OpenMP] Overhaul implementation of ATOMIC construct (#137852) The parser will accept a wide variety of illegal attempts at forming an ATOMIC construct, leaving it to the semantic analysis to diagnose any issues. This consolidates the analysis into one place and allows us to produce more informative diagnostics. The parser's outcome will be parser::OpenMPAtomicConstruct object holding the directive, parser::Body, and an optional end-directive. The prior variety of OmpAtomicXyz classes, as well as OmpAtomicClause have been removed. READ, WRITE, etc. are now proper clauses. The semantic analysis consistently operates on "evaluation" representations, mainly evaluate::Expr (as SomeExpr) and evaluate::Assignment. The results of the semantic analysis are stored in a mutable member of the OpenMPAtomicConstruct node. This follows a precedent of having typedExpr member in parser::Expr, for example. This allows the lowering code to avoid duplicated handling of AST nodes. Using a BLOCK construct containing multiple statements for an ATOMIC construct that requires multiple statements is now allowed. In fact, any nesting of such BLOCK constructs is allowed. This implementation will parse, and perform semantic checks for both conditional-update and conditional-update-capture, although no MLIR will be generated for those. Instead, a TODO error will be issues prior to lowering. The allowed forms of the ATOMIC construct were based on the OpenMP 6.0 spec. | 1 年前 | |
[flang][OpenMP] Clarify confusing error message (#144707) The message "The atomic variable x should occur exactly once among the arguments of the top-level [...] operator" was intended to convey that (1) an atomic variable should be an argument, and (2) it should be exactly one of the arguments. However, the wording turned out to be sowing confusion instead. Rework the corresponding check, and emit an individual error message for each problematic situation: - "atomic variable cannot be a proper subexpression of an argument", - "atomic variable should appear as an argument", - "atomic variable should be exactly one of the arguments". Fixes https://github.com/llvm/llvm-project/issues/144599 | 1 年前 | |
[flang][OpenMP] Reassociate ATOMIC update expressions (#153488) An atomic update expression of form x = x + a + b is technically illegal, since the right-hand side is parsed as (x+a)+b, and the atomic variable x should be an argument to the top-level +. When the type of x is integer, the result of (x+a)+b is guaranteed to be the same as x+(a+b), so instead of reporting an error, the compiler can treat (x+a)+b as x+(a+b). This PR implements this kind of reassociation for integral types, and for the two arithmetic associative/commutative operators: + and *. Reinstate PR153098 one more time with fixes for the issues that came up: - unused variable "lsrc", - use of ‘outer1’ before deduction of ‘auto’. | 11 个月前 | |
[flang][Evaluate] OperationCode cleanup, fix for Constant<T> (#151566) Make the OperationCode overloads take the derived operation instead of the Operation base class instance. This makes them usable from visitors of "Expr<T>.u". Also, fix small bug: OperationCode(Constant<T>) shoud be "Constant". | 1 年前 | |
[Flang] Handle the source (scopes) for some OpenMP constructs (#109097) Fixes: https://github.com/llvm/llvm-project/issues/82943 Fixes: https://github.com/llvm/llvm-project/issues/82942 Fixes: https://github.com/llvm/llvm-project/issues/85593 | 1 年前 | |
[flang][Semantics] set scope even for module subroutines outside modules (#109009) The missing scope information led to a crash in OpenMP semantic checks run before printing the error that was already discovered in the code. The following block has to be skipped for this invalid code so that we don't emit a second spurious error. Fixes #82913 | 1 年前 | |
[Flang][OpenMP] Re-enable tests on windows 1/n (#92904) Re-enable tests starting with a or b. | 2 年前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in DECLARE_TARGET (#160573) | 10 个月前 | |
| 1 年前 | ||
[flang][OpenMP][Semantics] Disallow NOWAIT and ORDERED with CANCEL (#135991) NOWAIT was a tricky one because the clause can be on either the start or the end directive. I couldn't find a convenient way to access the end directive from the CANCEL directive nested inside of the construct, but there are convenient ways to access the start directive. I have added a list to the start directive context containing the clauses from the end directive. | 1 年前 | |
[flang][OpenMP] Verify uses of OmpCancellationConstructTypeClause (#139743) Some directive names can be used as clauses, for example in "cancel". In case where a directive name is misplaced, it could be interpreted as a clause. Verify that such uses are valid, and emit a diagnostic message if not. Fixes https://github.com/llvm/llvm-project/issues/138224 | 1 年前 | |
[flang][semantics][OpenMP] store DSA using ultimate sym (#107002) Previously we tracked data sharing attributes by the symbol itself not by the ultimate symbol. When the private clause came first, subsequent uses of the symbol found a host-associated version instead of the ultimate symbol and so the check didn't consider them to be the same symbol. Always adding and checking for the ultimate symbol ensures that we have the same behaviour no matter the order of clauses. The modified list is only used for this multiple clause check. Closes #78235 | 1 年前 | |
[flang][OpenMP] Better diagnostics for invalid or misplaced directives (#168885) Add two more AST nodes, one for a misplaced end-directive, and one for an invalid string following the OpenMP sentinel (e.g. "!$OMP XYZ"). Emit error messages when either node is encountered in semantic analysis. | 8 个月前 | |
[flang][OpenMP] Add version checks for clauses (#110015) If there is a clause that is allowed on a given directive in a later version of the OpenMP spec, report an error and provide the minimal spec version that allows the clause. The case where a clause is not allowed on a directive at all is already handled elsewhere. | 1 年前 | |
[flang][OpenMP]: Allow orphaned distribute construct (#163546) If there is a call inside a TEAMS construct, and that call contains a DISTRIBUTE construct, the DISTRIBUTE region is considered to be enclosed by the TEAMS region (based on the dynamic extent of the construct). Currently, Flang diagnoses this as an error, which is incorrect. For eg : subroutine f !$omp distribute do i = 1, 100 ... end do end subroutine subroutine g !$omp teams call f ! this call is ok, distribute enclosed by teams !$omp end teams end subroutine This patch adjusts the nesting check for the OpenMP DISTRIBUTE directive. It retains the error for DISTRIBUTE directives that are incorrectly nested lexically but downgrades it to a warning for orphaned directives to allow dynamic nesting, such as when a subroutine with DISTRIBUTE is called from within a TEAMS region. Co-authored-by: Chandra Ghale <ghale@pe31.hpc.amslabs.hpecorp.net> | 9 个月前 | |
[flang][OpenMP] Make static duration variables default to shared DSA (#142783) According to the OpenMP standard, variables with static storage duration are predetermined as shared. Add a check when creating implicit symbols for OpenMP to fix them erroneously getting set to firstprivate. Fixes llvm#140732. --------- Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com> | 1 年前 | |
[Flang][OpenMP] Re-enable tests on windows 3/n (#93070) Enables copying, copyprivate, critical, and a few other tests | 2 年前 | |
[flang][OpenMP] Tolerate compiler directives in loop constructs (#169346) PR168884 flagged compiler directives (!dir$ ...) inside OpenMP loop constructs as errors. This caused some customer applications to fail to compile (issue 169229). Downgrade the error to a warning, and gracefully ignore compiler directives when lowering loop constructs to MLIR. Fixes https://github.com/llvm/llvm-project/issues/169229 | 8 个月前 | |
[flang][OpenMP] Fix 2 more regressions after #101009 (#101538) PR #101009 exposed a semantic check issue with OPTIONAL dummy arguments. Another issue occurred when using %{re,im,len,kind}, as these also need to be skipped when handling variables with implicitly defined DSAs. These issues were found by Fujitsu testsuite. | 1 年前 | |
[Flang][OpenMP] Re-enable tests on windows 3/n (#93070) Enables copying, copyprivate, critical, and a few other tests | 2 年前 | |
[Flang][OpenMP] Re-enable tests on windows 3/n (#93070) Enables copying, copyprivate, critical, and a few other tests | 2 年前 | |
[Flang][OpenMP] Re-enable tests on windows 3/n (#93070) Enables copying, copyprivate, critical, and a few other tests | 2 年前 | |
[Flang][OpenMP] Re-enable tests on windows 3/n (#93070) Enables copying, copyprivate, critical, and a few other tests | 2 年前 | |
[Flang][OpenMP] Re-enable tests on windows 3/n (#93070) Enables copying, copyprivate, critical, and a few other tests | 2 年前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[Flang][OpenMP] Re-enable tests on windows 3/n (#93070) Enables copying, copyprivate, critical, and a few other tests | 2 年前 | |
[Flang][OpenMP] Re-enable tests on windows 3/n (#93070) Enables copying, copyprivate, critical, and a few other tests | 2 年前 | |
[flang][OpenMP] Explicitly set Shared DSA in symbols (#142154) Before this change, OmpShared was not always set in shared symbols. Instead, absence of private flags was interpreted as shared DSA. The problem was that symbols with no flags, with only a host association, could also mean "has same DSA as in the enclosing context". Now shared symbols behave the same as private and can be treated the same way. Because of the host association symbols with no flags mentioned above, it was also incorrect to simply test the flags of a given symbol to find out if it was private or shared. The function GetSymbolDSA() was added to fix this. It would be better to avoid the need of these special symbols, but this would require changes to how symbols are collected in lowering. Besides that, some semantic checks need to know if a DSA clause was used or not. To avoid confusing implicit symbols with DSA clauses a new flag was added: OmpExplicit. It is now set for all symbols with explicitly determined data-sharing attributes. With the changes above, AddToContextObjectWithDSA() and the symbol to DSA map could probably be removed and the DSA could be obtained directly from the symbol, but this was not attempted. Some debug messages were also added, with the "omp" DEBUG_TYPE, to make it easier to debug the creation of implicit symbols and to visualize all associations of a given symbol. Fixes #130533 Fixes #140882 | 1 年前 | |
[flang][OpenMP] Verify that arguments to COPYPRIVATE are variables (#141823) The check if the arguments are variable list items was missing, leading to a crash in lowering in some invalid situations. This fixes the first testcase reported in https://github.com/llvm/llvm-project/issues/141481 | 1 年前 | |
[flang][OpenMP] Verify that arguments to COPYPRIVATE are variables (#141823) The check if the arguments are variable list items was missing, leading to a crash in lowering in some invalid situations. This fixes the first testcase reported in https://github.com/llvm/llvm-project/issues/141481 | 1 年前 | |
Revert "[flang][OpenMP] Analyze objects in OmpObjectList on clauses (#155424)" This reverts commit 63085310c9290336ff190ed911f59fc172e32b6c. This breaks gfortran test suite: error: Semantic errors in gfortran/regression/gomp/pr80918.f90 gfortran/regression/gomp/pr80918.f90:6:27: error: Whole assumed-size array 'a' may not appear here without subscripts !$omp task depend(inout:a) ^ gfortran/regression/gomp/pr80918.f90:5:14: Declaration of 'a' integer :: a(*) ^ The error appears to be legitimate. | 11 个月前 | |
[Flang][OpenMP] Re-enable tests on windows 3/n (#93070) Enables copying, copyprivate, critical, and a few other tests | 2 年前 | |
[flang][OpenMP] Insert CRITICAL construct names into global scope (#152004) They were inserted in the current scope. OpenMP spec (all versions): The names of critical constructs are global entities of the program. If a name conflicts with any other entity, the behavior of the program is unspecified. | 1 年前 | |
[flang][OpenMP] Overhaul implementation of ATOMIC construct (#137852) The parser will accept a wide variety of illegal attempts at forming an ATOMIC construct, leaving it to the semantic analysis to diagnose any issues. This consolidates the analysis into one place and allows us to produce more informative diagnostics. The parser's outcome will be parser::OpenMPAtomicConstruct object holding the directive, parser::Body, and an optional end-directive. The prior variety of OmpAtomicXyz classes, as well as OmpAtomicClause have been removed. READ, WRITE, etc. are now proper clauses. The semantic analysis consistently operates on "evaluation" representations, mainly evaluate::Expr (as SomeExpr) and evaluate::Assignment. The results of the semantic analysis are stored in a mutable member of the OpenMPAtomicConstruct node. This follows a precedent of having typedExpr member in parser::Expr, for example. This allows the lowering code to avoid duplicated handling of AST nodes. Using a BLOCK construct containing multiple statements for an ATOMIC construct that requires multiple statements is now allowed. In fact, any nesting of such BLOCK constructs is allowed. This implementation will parse, and perform semantic checks for both conditional-update and conditional-update-capture, although no MLIR will be generated for those. Instead, a TODO error will be issues prior to lowering. The allowed forms of the ATOMIC construct were based on the OpenMP 6.0 spec. | 1 年前 | |
[flang][OpenMP] Insert CRITICAL construct names into global scope (#152004) They were inserted in the current scope. OpenMP spec (all versions): The names of critical constructs are global entities of the program. If a name conflicts with any other entity, the behavior of the program is unspecified. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[flang][OpenMP] Refactor/update semantic checks for ALLOCATE directive (#164420) OpenMP 5.0 and 5.1 allowed the ALLOCATE directive to appear in two forms, declarative and executable. The syntax of an individual directive was the same in both cases, but the semantic restrictions were slightly different. - Update the semantic checks to reflect the different restrictions, gather them in a single function. - Improve test for the presence of a TARGET region, add a check for REQUIRES directive. - Update tests. | 9 个月前 | |
[Flang][OpenMP] Update declare mapper lookup via use-module (#167903) | 8 个月前 | |
[OpenMP][Flang] Change the OmpDefaultMapperName suffix (#168399) This PR fixes a Fortran syntax violation in the OpenMP default mapper naming convention. The suffix .omp.default.mapper contains dots which are invalid in Fortran identifiers, causing failures when mappers are written to and read from module files. The fix changes the suffix to _omp_default_mapper which uses underscores instead of dots, complying with Fortran syntax rules. Key changes: - Changed OmpDefaultMapperName constant from .omp.default.mapper to _omp_default_mapper - Added GetUltimate() calls in mapper symbol resolution to properly handle symbols across module boundaries - Added new test case verifying default mappers work correctly when defined in a module and used in consuming programs This fixes #168336. | 8 个月前 | |
[Flang][OMP]Add support for DECLARE MAPPER parsing and semantics (#115160) Will hit a TODO in the lowering, which there are tests added to check for this happening. | 1 年前 | |
[flang][OpenMP] Analyze objects in OmpObjectList on clauses (#155424) (#155667) This is intended to diagnose errors such as incorrect uses of assumed-size arrays, for example. Fixes https://github.com/llvm/llvm-project/issues/151990 Reinstate 63085310c9 (PR 155424) with a change that treats whole assumed- size-arrays as variables (as defined by the Fortran standard). This treats them, by default, as valid variable list items. | 11 个月前 | |
[OpenMP][Flang] Fix semantic check and scoping for declare mappers (#140560) The current semantic check in place is incorrect, this patch fixes this. Up to 1 **'default'** named mapper should be allowed for each derived type. The current semantic check only allows up to 1 **'default'** named mapper across all derived types. This also makes sure that declare mappers follow proper scoping rules for both default and named mappers. Co-authored-by: Raghu Maddhipatla <Raghu.Maddhipatla@amd.com> | 1 年前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in DECLARE_MAPPER (#160169) | 10 个月前 | |
[flang][openmp]Add UserReductionDetails and use in DECLARE REDUCTION (#140066) This adds another puzzle piece for the support of OpenMP DECLARE REDUCTION functionality. This adds support for operators with derived types, as well as declaring multiple different types with the same name or operator. A new detail class for UserReductionDetials is introduced to hold the list of types supported for a given reduction declaration. Tests for parsing and symbol generation added. Declare reduction is still not supported to lowering, it will generate a "Not yet implemented" fatal error. Fixes #141306 Fixes #97241 Fixes #92832 Fixes #66453 --------- Co-authored-by: Mats Petersson <mats.petersson@arm.com> | 1 年前 | |
[flang][openmp]Add UserReductionDetails and use in DECLARE REDUCTION (#140066) This adds another puzzle piece for the support of OpenMP DECLARE REDUCTION functionality. This adds support for operators with derived types, as well as declaring multiple different types with the same name or operator. A new detail class for UserReductionDetials is introduced to hold the list of types supported for a given reduction declaration. Tests for parsing and symbol generation added. Declare reduction is still not supported to lowering, it will generate a "Not yet implemented" fatal error. Fixes #141306 Fixes #97241 Fixes #92832 Fixes #66453 --------- Co-authored-by: Mats Petersson <mats.petersson@arm.com> | 1 年前 | |
[flang][openmp]Add UserReductionDetails and use in DECLARE REDUCTION (#140066) This adds another puzzle piece for the support of OpenMP DECLARE REDUCTION functionality. This adds support for operators with derived types, as well as declaring multiple different types with the same name or operator. A new detail class for UserReductionDetials is introduced to hold the list of types supported for a given reduction declaration. Tests for parsing and symbol generation added. Declare reduction is still not supported to lowering, it will generate a "Not yet implemented" fatal error. Fixes #141306 Fixes #97241 Fixes #92832 Fixes #66453 --------- Co-authored-by: Mats Petersson <mats.petersson@arm.com> | 1 年前 | |
[flang][OpenMP] Implement OpenMP stylized expressions (#165049) Consider OpenMP stylized expression to be a template to be instantiated with a series of types listed on the containing directive (currently DECLARE_REDUCTION). Create a series of instantiations in the parser, allowing OpenMP special variables to be declared separately for each type. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 9 个月前 | |
[flang][OpenMP] Implement OpenMP stylized expressions (#165049) Consider OpenMP stylized expression to be a template to be instantiated with a series of types listed on the containing directive (currently DECLARE_REDUCTION). Create a series of instantiations in the parser, allowing OpenMP special variables to be declared separately for each type. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 9 个月前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[flang][OpenMP] Implement OpenMP stylized expressions (#165049) Consider OpenMP stylized expression to be a template to be instantiated with a series of types listed on the containing directive (currently DECLARE_REDUCTION). Create a series of instantiations in the parser, allowing OpenMP special variables to be declared separately for each type. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 9 个月前 | |
[flang][OpenMP] Implement OpenMP stylized expressions (#165049) Consider OpenMP stylized expression to be a template to be instantiated with a series of types listed on the containing directive (currently DECLARE_REDUCTION). Create a series of instantiations in the parser, allowing OpenMP special variables to be declared separately for each type. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 9 个月前 | |
[flang][OpenMP] Implement OpenMP stylized expressions (#165049) Consider OpenMP stylized expression to be a template to be instantiated with a series of types listed on the containing directive (currently DECLARE_REDUCTION). Create a series of instantiations in the parser, allowing OpenMP special variables to be declared separately for each type. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 9 个月前 | |
[flang][OpenMP] Implement OpenMP stylized expressions (#165049) Consider OpenMP stylized expression to be a template to be instantiated with a series of types listed on the containing directive (currently DECLARE_REDUCTION). Create a series of instantiations in the parser, allowing OpenMP special variables to be declared separately for each type. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 9 个月前 | |
[flang][openmp]Add UserReductionDetails and use in DECLARE REDUCTION (#140066) This adds another puzzle piece for the support of OpenMP DECLARE REDUCTION functionality. This adds support for operators with derived types, as well as declaring multiple different types with the same name or operator. A new detail class for UserReductionDetials is introduced to hold the list of types supported for a given reduction declaration. Tests for parsing and symbol generation added. Declare reduction is still not supported to lowering, it will generate a "Not yet implemented" fatal error. Fixes #141306 Fixes #97241 Fixes #92832 Fixes #66453 --------- Co-authored-by: Mats Petersson <mats.petersson@arm.com> | 1 年前 | |
[flang][OpenMP] Implement OpenMP stylized expressions (#165049) Consider OpenMP stylized expression to be a template to be instantiated with a series of types listed on the containing directive (currently DECLARE_REDUCTION). Create a series of instantiations in the parser, allowing OpenMP special variables to be declared separately for each type. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 9 个月前 | |
[Flang] Handle the source (scopes) for some OpenMP constructs (#109097) Fixes: https://github.com/llvm/llvm-project/issues/82943 Fixes: https://github.com/llvm/llvm-project/issues/82942 Fixes: https://github.com/llvm/llvm-project/issues/85593 | 1 年前 | |
[flang][OpenMP] Skip implicit typing for OpenMPDeclarativeConstruct (#142415) DeclareSimdConstruct (and other declarative constructs) can currently implicitly declare variables regardless of whether the source code contains "implicit none" or not. This causes semantic analysis issues if the implicit type does not match the declared type. To solve it, skip implicit typing for OpenMPDeclarativeConstruct. Fixes issue #140754. --------- Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com> | 1 年前 | |
| 1 年前 | ||
[flang][OpenMP] Check contatining scoping unit in DECLARE_SIMD (#161556) Check if the name on DECLARE_SIMD is the name of the containing scoping unit. Fixes https://github.com/llvm/llvm-project/issues/161516 | 10 个月前 | |
[flang][OpenMP] Make static duration variables default to shared DSA (#142783) According to the OpenMP standard, variables with static storage duration are predetermined as shared. Add a check when creating implicit symbols for OpenMP to fix them erroneously getting set to firstprivate. Fixes llvm#140732. --------- Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com> | 1 年前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in DECLARE_TARGET (#160573) | 10 个月前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][Semantics] Allow declare target to be used on functions external to the declare targets scope (#122546) Whilst a little contrived, OpenMP allows you to utilise declare target in the scope of one function to mark another function declare target, currently this leads to a semantic error. This appears to be because when we process the declare target directive in the scope of another function (referring to another function), we do not search externally from that functions scope to find possible prior definitions, we only search in the current scope, this leads to us implicitly defining a new variable and using that when implicit none is not specified and then error'ng out or error'ng out earlier when implict none is defined. This patch tries to address this behaviour by looking externally for a function first and using that, before defaulting back to the prior behaviour. | 1 年前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in DECLARE_VARIANT (#160371) | 10 个月前 | |
[flang][OpenMP] Explicitly set Shared DSA in symbols (#142154) Before this change, OmpShared was not always set in shared symbols. Instead, absence of private flags was interpreted as shared DSA. The problem was that symbols with no flags, with only a host association, could also mean "has same DSA as in the enclosing context". Now shared symbols behave the same as private and can be treated the same way. Because of the host association symbols with no flags mentioned above, it was also incorrect to simply test the flags of a given symbol to find out if it was private or shared. The function GetSymbolDSA() was added to fix this. It would be better to avoid the need of these special symbols, but this would require changes to how symbols are collected in lowering. Besides that, some semantic checks need to know if a DSA clause was used or not. To avoid confusing implicit symbols with DSA clauses a new flag was added: OmpExplicit. It is now set for all symbols with explicitly determined data-sharing attributes. With the changes above, AddToContextObjectWithDSA() and the symbol to DSA map could probably be removed and the DSA could be obtained directly from the symbol, but this was not attempted. Some debug messages were also added, with the "omp" DEBUG_TYPE, to make it easier to debug the creation of implicit symbols and to visualize all associations of a given symbol. Fixes #130533 Fixes #140882 | 1 年前 | |
[Flang][OpenMP] Add semantic tests for threadprivate variables with host assoc (#134680) | 1 年前 | |
[flang][OpenMP] Don't abort when default is used on an invalid directive (#107586) The previous assert was not considering programs with semantic errors. Fixes https://github.com/llvm/llvm-project/issues/107495 Fixes https://github.com/llvm/llvm-project/issues/93437 | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Fix defaultmap(none) being overly aggressive with symbol checks (#167806) Currently we're picking up and complaining about builtin (and procedure) symbols like null() when defaultmap(none) is set, so I've relaxed the restriction a bit to allow for procedures and named constants to bypass the restriction. It might be the case that we want to tighten it up again in certain aspects in the future. | 8 个月前 | |
[flang][OpenMP] Use new modifier infrastructure for MAP/FROM/TO clauses (#117447) This removes the specialized parsers and helper classes for these clauses, namely ConcatSeparated, MapModifiers, and MotionModifiers. Map and the motion clauses are now handled in the same way as all other clauses with modifiers, with one exception: the commas separating their modifiers are optional. This syntax is deprecated in OpenMP 5.2. Implement version checks for modifiers: for a given modifier on a given clause, check if that modifier is allowed on this clause in the specified OpenMP version. This replaced several individual checks. Add a testcase for handling map modifiers in a different order, and for diagnosing an ultimate modifier out of position. | 1 年前 | |
[flang][OpenMP] Update frontend support for DEFAULTMAP clause (#116506) Add ALL variable category, implement semantic checks to verify the validity of the clause, improve error messages, add testcases. The variable category modifier is optional since 5.0, make sure we allow it to be missing. If it is missing, assume "all" in clause conversion. | 1 年前 | |
[flang][OpenMP] Support substrings and complex part refs for DEPEND (#143907) Fixes #142404 The parser can't tell the difference between array indexing and a substring: that has to be done in semantics once we have types. Substrings can only be in the form string([lower]:[higher]) not string(index) or string(lower:higher:step). I added semantic checks to catch this for the DEPEND clause. This patch also adds lowering for correct substrings and for complex part references. | 1 年前 | |
[flang][OpenMP] Analyze objects in OmpObjectList on clauses (#155424) (#155667) This is intended to diagnose errors such as incorrect uses of assumed-size arrays, for example. Fixes https://github.com/llvm/llvm-project/issues/151990 Reinstate 63085310c9 (PR 155424) with a change that treats whole assumed- size-arrays as variables (as defined by the Fortran standard). This treats them, by default, as valid variable list items. | 11 个月前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Update handling of DEPEND clause (#113620) Parse the locator list in OmpDependClause as an OmpObjectList (instead of a list of Designators). When a common block appears in the locator list, show an informative message. Implement resolving symbols in DependSinkVec in a dedicated visitor instead of having a visitor for OmpDependClause. Resolve unresolved names common blocks in OmpObjectList. Minor changes to the code organization: - rename OmpDependenceType to OmpTaskDependenceType (to follow 5.2 terminology), - rename Depend::WithLocators to Depend::DepType, - add comments with more detailed spec references to parse-tree.h. --------- Co-authored-by: Kiran Chandramohan <kiran.chandramohan@arm.com> | 1 年前 | |
[flang][OpenMP] Use new modifiers in DEPEND/GRAINSIZE/NUM_TASKS (#117917) The usual changes, added more references to OpenMP specs. | 1 年前 | |
[flang][OpenMP] Parse DOACROSS clause (#115396) Extract the SINK/SOURCE parse tree elements into a separate class OmpDoacross, share them between DEPEND and DOACROSS clauses. Most of the changes in Semantics are to accommodate the new contents of OmpDependClause, and a mere introduction of OmpDoacrossClause. There are no semantic checks specifically for DOACROSS. | 1 年前 | |
[flang][OpenMP] Analyze objects in OmpObjectList on clauses (#155424) (#155667) This is intended to diagnose errors such as incorrect uses of assumed-size arrays, for example. Fixes https://github.com/llvm/llvm-project/issues/151990 Reinstate 63085310c9 (PR 155424) with a change that treats whole assumed- size-arrays as variables (as defined by the Fortran standard). This treats them, by default, as valid variable list items. | 11 个月前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in standalone directives (#131163) This uses OmpDirectiveSpecification in the rest of the standalone directives. | 1 年前 | |
[flang][OpenMP] Parse DOACROSS clause (#115396) Extract the SINK/SOURCE parse tree elements into a separate class OmpDoacross, share them between DEPEND and DOACROSS clauses. Most of the changes in Semantics are to accommodate the new contents of OmpDependClause, and a mere introduction of OmpDoacrossClause. There are no semantic checks specifically for DOACROSS. | 1 年前 | |
[flang][OpenMP] Parse DOACROSS clause (#115396) Extract the SINK/SOURCE parse tree elements into a separate class OmpDoacross, share them between DEPEND and DOACROSS clauses. Most of the changes in Semantics are to accommodate the new contents of OmpDependClause, and a mere introduction of OmpDoacrossClause. There are no semantic checks specifically for DOACROSS. | 1 年前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[Flang] [OpenMP] Add semantic checks for detach clause in task (#119172) Fixes: - Add semantic checks along with the tests - Move the detach clause to allowedOnceClauses list in Task construct Restrictions:\ OpenMP 5.0: Task construct - At most one detach clause can appear on the directive. - If a detach clause appears on the directive, then a mergeable clause cannot appear on the same directive. OpenMP 5.2: Detach contruct - If a detach clause appears on a directive, then the encountering task must not be a final task. - A variable that appears in a detach clause cannot appear as a list item on a data-environment attribute clause on the same construct. - A variable that is part of another variable (as an array element or a structure element) cannot appear in a detach clause. - event-handle must not have the POINTER attribute. | 1 年前 | |
[Flang] [OpenMP] Add semantic checks for detach clause in task (#119172) Fixes: - Add semantic checks along with the tests - Move the detach clause to allowedOnceClauses list in Task construct Restrictions:\ OpenMP 5.0: Task construct - At most one detach clause can appear on the directive. - If a detach clause appears on the directive, then a mergeable clause cannot appear on the same directive. OpenMP 5.2: Detach contruct - If a detach clause appears on a directive, then the encountering task must not be a final task. - A variable that appears in a detach clause cannot appear as a list item on a data-environment attribute clause on the same construct. - A variable that is part of another variable (as an array element or a structure element) cannot appear in a detach clause. - event-handle must not have the POINTER attribute. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang] Warn about inexact real literal implicit widening pitfall (#152799) When a REAL or COMPLEX literal appears without an explicit kind suffix or a kind-determining exponent letter, and the conversion of that literal from decimal to binary is inexact, emit a warning if that constant is later implicitly widened to a more precise kind, since it will have a different value than was probably intended. Values that convert exactly from decimal to default real, e.g. 1.0 and 0.125, do not elicit this warning. There are many contexts in which Fortran implicitly converts constants. This patch covers name constant values, variable and component initialization, constants in expressions, structure constructor components, and array constructors. For example, "real(8) :: tenth = 0.1" is a common Fortran bug that's hard to find, and is one that often trips up even experienced Fortran programmers. Unlike C and C++, the literal constant 0.1 is *not* double precision by default, and it does not have the same value as 0.1d0 or 0.1_8 do when it is converted from decimal to real(4) and then to real(8). | 11 个月前 | |
[flang][OpenMP] Use OmpDirectiveSpecification in DISPATCH (#148008) Dispatch is the last construct (after ATOMIC and ALLOCATORS) where the associated block requires a specific form. Using OmpDirectiveSpecification for the begin and the optional end directives will make the structure of all block directives more uniform. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Enable tiling (#143715) This patch enables tiling in flang. In MLIR tiling is handled by changing the the omp.loop_nest op to be able to represent both collapse and tiling, so the flang front-end will combine the nested constructs into a single MLIR op. The MLIR->LLVM-IR lowering of the LoopNestOp is enhanced to first do the tiling if present, then collapse. | 11 个月前 | |
[flang][OpenMP] Enable tiling (#143715) This patch enables tiling in flang. In MLIR tiling is handled by changing the the omp.loop_nest op to be able to represent both collapse and tiling, so the flang front-end will combine the nested constructs into a single MLIR op. The MLIR->LLVM-IR lowering of the LoopNestOp is enhanced to first do the tiling if present, then collapse. | 11 个月前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Reenable and fix final few tests 6/6 (#93295) Add do02.f90 and taskloop03.f90 that were removed in https://github.com/llvm/llvm-project/pull/92739 Replace shell script tests with python. | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[flang][OpenMP]: Allow orphaned distribute construct (#163546) If there is a call inside a TEAMS construct, and that call contains a DISTRIBUTE construct, the DISTRIBUTE region is considered to be enclosed by the TEAMS region (based on the dynamic extent of the construct). Currently, Flang diagnoses this as an error, which is incorrect. For eg : subroutine f !$omp distribute do i = 1, 100 ... end do end subroutine subroutine g !$omp teams call f ! this call is ok, distribute enclosed by teams !$omp end teams end subroutine This patch adjusts the nesting check for the OpenMP DISTRIBUTE directive. It retains the error for DISTRIBUTE directives that are incorrectly nested lexically but downgrades it to a warning for orphaned directives to allow dynamic nesting, such as when a subroutine with DISTRIBUTE is called from within a TEAMS region. Co-authored-by: Chandra Ghale <ghale@pe31.hpc.amslabs.hpecorp.net> | 9 个月前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang] Make all tests work with lit's internal shell This patch removes REQUIRES: shell lines and updates the tests to not need a shell, or adds REQUIRES lines for Linux where relevant. A lot of these seem to have gotten introduced in 58c3f20bbf51f454ffb38ddb700a1d5ad374dc7b, but many are no longer relevant as these tests no longer use shell scripts. There was one test (missing_newline.f90) that needed to be modified to work. Lit doesn't recognize -ne correctly for echo and the options need to be split into separate flags. Reviewers: clementval, Meinersbur, kiranchandramohan, klausler Reviewed By: clementval Pull Request: https://github.com/llvm/llvm-project/pull/156115 | 11 个月前 | |
[Flang] Fix perfect loop nest detection (#161554) PR #160283 uses Unwrap to detect a continue statement, but it applied it on the loop body itelf which sometimes finds a trailing continue statement, but not always. Apply Unwrap on the last body statement instead, where the continue is expected. Fixes #161529 | 10 个月前 | |
[Flang][OpenMP] Restrict certain loops not allowed in associated loops (#91818) Extends the OmpCycleAndExitChecker to check that associated loops of a loop construct are not DO WHILE or DO without control. OpenMP 5.0 standard clearly mentions this restriction. Later standards enforce this through the definition of associated loops and canonical loop forms. https://www.openmp.org/spec-html/5.0/openmpsu41.html Fixes #81949 | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[Flang] Fix perfect loop nest detection (#161554) PR #160283 uses Unwrap to detect a continue statement, but it applied it on the loop body itelf which sometimes finds a trailing continue statement, but not always. Apply Unwrap on the last body statement instead, where the continue is expected. Fixes #161529 | 10 个月前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Explicitly set Shared DSA in symbols (#142154) Before this change, OmpShared was not always set in shared symbols. Instead, absence of private flags was interpreted as shared DSA. The problem was that symbols with no flags, with only a host association, could also mean "has same DSA as in the enclosing context". Now shared symbols behave the same as private and can be treated the same way. Because of the host association symbols with no flags mentioned above, it was also incorrect to simply test the flags of a given symbol to find out if it was private or shared. The function GetSymbolDSA() was added to fix this. It would be better to avoid the need of these special symbols, but this would require changes to how symbols are collected in lowering. Besides that, some semantic checks need to know if a DSA clause was used or not. To avoid confusing implicit symbols with DSA clauses a new flag was added: OmpExplicit. It is now set for all symbols with explicitly determined data-sharing attributes. With the changes above, AddToContextObjectWithDSA() and the symbol to DSA map could probably be removed and the DSA could be obtained directly from the symbol, but this was not attempted. Some debug messages were also added, with the "omp" DEBUG_TYPE, to make it easier to debug the creation of implicit symbols and to visualize all associations of a given symbol. Fixes #130533 Fixes #140882 | 1 年前 | |
[flang][OpenMP] Implement loop nest parser (#168884) Previously, loop constructs were parsed in a piece-wise manner: the begin directive, the body, and the end directive were parsed separately. Later on in canonicalization they were all coalesced into a loop construct. To facilitate that end-loop directives were given a special treatment, namely they were parsed as OpenMP constructs. As a result syntax errors caused by misplaced end-loop directives were handled differently from those cause by misplaced non-loop end directives. The new loop nest parser constructs the complete loop construct, removing the need for the canonicalization step. Additionally, it is the basis for parsing loop-sequence-associated constructs in the future. It also removes the need for the special treatment of end-loop directives. While this patch temporarily degrades the error messaging for misplaced end-loop directives, it enables uniform handling of any misplaced end-directives in the future. | 8 个月前 | |
[Flang] Add perfect-nest and rectangular-loop semantic tests (#160283) Add semantic tests of currently unsupported OpenMP canonical loops: * non-perfectly nested canonical loop nests * non-rectangular canonical loop nests Both were introduced in OpenMP 5.0 and are not yet supported by Flang. The message "Trip count must be computable and invariant" is the same that OpenACC emits for non-rectangular loops in AccAttributeVisitor::CheckAssociatedLoop. I considered reusing the code, but calls OpenACC-only methods and has different behavior (e.g. symbol resolution and does not check the step operand) | 10 个月前 | |
[flang][OpenMP] Semantic checks for DOACROSS clause (#115397) Keep track of loop constructs and OpenMP loop constructs that have been entered. Use the information to validate the variables in the SINK loop iteration vector. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 1 年前 | |
[flang][OpenMP] Don't try to privatize FORALL/DO CONCURRENT indices (#123341) FORALL/DO CONCURRENT indices have predetermined private DSA (OpenMP 5.2 5.1.1). As FORALL/DO CONCURRENT indices are defined in the construct itself, and OpenMP directives may not appear in it, they are already private and don't need to be modified. Fixes https://github.com/llvm/llvm-project/issues/100919 Fixes https://github.com/llvm/llvm-project/issues/120023 Fixes https://github.com/llvm/llvm-project/issues/123537 | 1 年前 | |
[flang][OpenMP] Dump requirement clauses/flags in WithOmpDeclarative (#163450) | 9 个月前 | |
[flang][OpenMP] Semantic checks for DYN_GROUPPRIVATE (#166214) | 8 个月前 | |
[flang][OpenMP] catch namelist access through equivalence (#130804) The standard prohibits privatising namelist variables. We also decided in #110671 to prohibit reductions of namelist variables. This commit prevents this rule from being circumvented through the use of equivalence statements. Fixes #122824 | 1 年前 | |
[flang][OpenMP] Allow utility constructs in specification part (#121509) Allow utility constructs (error and nothing) to appear in the specification part as well as the execution part. The exception is "ERROR AT(EXECUTION)" which should only be in the execution part. In case of ambiguity (the boundary between the specification and the execution part), utility constructs will be parsed as belonging to the specification part. In such cases move them to the execution part in the OpenMP canonicalization code. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Accept modern syntax of FLUSH construct (#128975) The syntax with the object list following the memory-order clause has been removed in OpenMP 5.2. Still, accept that syntax with versions >= 5.2, but treat it as deprecated (and emit a warning). | 1 年前 | |
[Flang][OpenMP] Update relevant warnings to emit when OMP >= v5.2 (#144492) There has been a number of deprecation warnings that have been added to Flang, however these features are only deprecated when the OpenMP Version being used is 5.2 or later. Previously, flang did not consider the version with the warnings so would always be emitted. Flang now ensures warnings are emitted for the appropriate version of OpenMP, and tests are updated to reflect this change. | 1 年前 | |
[flang][OpenMP] Accept modern syntax of FLUSH construct (#128975) The syntax with the object list following the memory-order clause has been removed in OpenMP 5.2. Still, accept that syntax with versions >= 5.2, but treat it as deprecated (and emit a warning). | 1 年前 | |
[flang][OpenMP] Explicitly set Shared DSA in symbols (#142154) Before this change, OmpShared was not always set in shared symbols. Instead, absence of private flags was interpreted as shared DSA. The problem was that symbols with no flags, with only a host association, could also mean "has same DSA as in the enclosing context". Now shared symbols behave the same as private and can be treated the same way. Because of the host association symbols with no flags mentioned above, it was also incorrect to simply test the flags of a given symbol to find out if it was private or shared. The function GetSymbolDSA() was added to fix this. It would be better to avoid the need of these special symbols, but this would require changes to how symbols are collected in lowering. Besides that, some semantic checks need to know if a DSA clause was used or not. To avoid confusing implicit symbols with DSA clauses a new flag was added: OmpExplicit. It is now set for all symbols with explicitly determined data-sharing attributes. With the changes above, AddToContextObjectWithDSA() and the symbol to DSA map could probably be removed and the DSA could be obtained directly from the symbol, but this was not attempted. Some debug messages were also added, with the "omp" DEBUG_TYPE, to make it easier to debug the creation of implicit symbols and to visualize all associations of a given symbol. Fixes #130533 Fixes #140882 | 1 年前 | |
[flang][OpenMP] Implement CheckReductionObjects for all reduction c… (#118689) …lauses Currently we only do semantic checks for REDUCTION. There are two other clauses, IN_REDUCTION, and TASK_REDUCTION which will also need those checks. Implement a function that checks the common list-item requirements for all those clauses. | 1 年前 | |
[flang][OpenMP] Use new modifier infrastructure for MAP/FROM/TO clauses (#117447) This removes the specialized parsers and helper classes for these clauses, namely ConcatSeparated, MapModifiers, and MotionModifiers. Map and the motion clauses are now handled in the same way as all other clauses with modifiers, with one exception: the commas separating their modifiers are optional. This syntax is deprecated in OpenMP 5.2. Implement version checks for modifiers: for a given modifier on a given clause, check if that modifier is allowed on this clause in the specified OpenMP version. This replaced several individual checks. Add a testcase for handling map modifiers in a different order, and for diagnosing an ultimate modifier out of position. | 1 年前 | |
[flang][OpenMP] Issue a warning when parsing future directive spelling (#147765) OpenMP 6.0 introduced alternative spelling for some directives, with the previous spellings still allowed. Warn the user when a new spelling is encountered with OpenMP version set to an older value. | 1 年前 | |
[flang][OpenMP] Semantic checks for TASKGRAPH (#160115) This verifies the "structural" restrictions on constructs encountered in a TASKGRAPH construct. There are also restrictions that apply to list items, specifically in the following contexts: - a list item on a clause on a replayable construct, - data-sharing attributes for a variable on a replayable construct. These restrictions are not verified, because that would require knowing which clauses (on a potential compound directive) apply to the task- generating construct of interest. This information is not available during semantic checks. | 10 个月前 | |
[flang][OpenMP] Semantic checks for TASKGRAPH (#160115) This verifies the "structural" restrictions on constructs encountered in a TASKGRAPH construct. There are also restrictions that apply to list items, specifically in the following contexts: - a list item on a clause on a replayable construct, - data-sharing attributes for a variable on a replayable construct. These restrictions are not verified, because that would require knowing which clauses (on a potential compound directive) apply to the task- generating construct of interest. This information is not available during semantic checks. | 10 个月前 | |
[flang][OpenMP] Fix typos in diagnostic messages, NFC (#154953) | 11 个月前 | |
[flang][OpenMP] Check for OpenMP 5.0+ for the if clause on "do simd" (#151154) The "if" clause on "do simd" is only supported from OpenMP version 5.0. Currently the tablegen for OMP_DoSimd does not restrict it, leading to an ICE if the clause is used with an older OpenMP version as opposed to a semantic error. Restrict the version to show the correct semantic error. Add flang tests for using the if clause with -fopenmp-version=45 and -fopenmp-version=50 to check for these types of errors. --------- Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com> | 1 年前 | |
[flang][OpenMP] Check for OpenMP 5.0+ for the if clause on "do simd" (#151154) The "if" clause on "do simd" is only supported from OpenMP version 5.0. Currently the tablegen for OMP_DoSimd does not restrict it, leading to an ICE if the clause is used with an older OpenMP version as opposed to a semantic error. Restrict the version to show the correct semantic error. Add flang tests for using the if clause with -fopenmp-version=45 and -fopenmp-version=50 to check for these types of errors. --------- Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com> | 1 年前 | |
[flang][OpenMP] Use new modifiers in IF/LASTPRIVATE (#118128) The usual changes, added more references to OpenMP specs. | 1 年前 | |
[flang][OpenMP] Put taskgroup in a new scope (#144122) Although taskgroup is a privatizing construct, because of task_reduction clause, a new scope was not being created for it. This could cause an extra privatization of variables when taskgroup was lowered, because its scope would be the same as of the parent privatizing construct. This fixes regressions in tests 1052_0201 and 1052_0205, from Fujitsu testsuite. This issue didn't happen before because implicit symbols were being created in a different way before #142154. | 1 年前 | |
[Flang][OpenMP] Improve Semantics for Derived Type Array Elements (#167296) Flang does not allow the use of Structure Component types inside of certain OpenMP clauses. While this has been introduced, it seemed that Structure Component Array Elements were not being captured as they got embedded in the parse tree. To ensure all structure component types are identified, a new HasStructureComponent evaluate function has been introduced to walk a Semantics expression, identified where Components are used within. This replaces the previous implementation of CheckStructureComponent which just looked for the StructureComponent inside of a DataRef. Fixes #150830 | 9 个月前 | |
| 1 年前 | ||
[Flang] Make all tests work with lit's internal shell This patch removes REQUIRES: shell lines and updates the tests to not need a shell, or adds REQUIRES lines for Linux where relevant. A lot of these seem to have gotten introduced in 58c3f20bbf51f454ffb38ddb700a1d5ad374dc7b, but many are no longer relevant as these tests no longer use shell scripts. There was one test (missing_newline.f90) that needed to be modified to work. Lit doesn't recognize -ne correctly for echo and the options need to be split into separate flags. Reviewers: clementval, Meinersbur, kiranchandramohan, klausler Reviewed By: clementval Pull Request: https://github.com/llvm/llvm-project/pull/156115 | 11 个月前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Skip implicit typing for OpenMPDeclarativeConstruct (#142415) DeclareSimdConstruct (and other declarative constructs) can currently implicitly declare variables regardless of whether the source code contains "implicit none" or not. This causes semantic analysis issues if the implicit type does not match the declared type. To solve it, skip implicit typing for OpenMPDeclarativeConstruct. Fixes issue #140754. --------- Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com> | 1 年前 | |
[flang][OpenMP] Rework LINEAR clause (#119278) The OmpLinearClause class was a variant of two classes, one for when the linear modifier was present, and one for when it was absent. These two classes did not follow the conventions for parse tree nodes, (i.e. tuple/wrapper/union formats), which necessitated specialization of the parse tree visitor. The new form of OmpLinearClause is the standard tuple with a list of modifiers and an object list. The specialization of parse tree visitor for it has been removed. Parsing and unparsing of the new form bears additional complexity due to syntactical differences between OpenMP 5.2 and prior versions: in OpenMP 5.2 the argument list is post-modified, while in the prior versions, the step modifier was a post-modifier while the linear modifier had an unusual syntax of modifier(list). With this change the LINEAR clause is no different from any other clauses in terms of its structure and use of modifiers. Modifier validation and all other checks work the same as with other clauses. | 1 年前 | |
[flang][OpenMP]: Allow orphaned distribute construct (#163546) If there is a call inside a TEAMS construct, and that call contains a DISTRIBUTE construct, the DISTRIBUTE region is considered to be enclosed by the TEAMS region (based on the dynamic extent of the construct). Currently, Flang diagnoses this as an error, which is incorrect. For eg : subroutine f !$omp distribute do i = 1, 100 ... end do end subroutine subroutine g !$omp teams call f ! this call is ok, distribute enclosed by teams !$omp end teams end subroutine This patch adjusts the nesting check for the OpenMP DISTRIBUTE directive. It retains the error for DISTRIBUTE directives that are incorrectly nested lexically but downgrades it to a warning for orphaned directives to allow dynamic nesting, such as when a subroutine with DISTRIBUTE is called from within a TEAMS region. Co-authored-by: Chandra Ghale <ghale@pe31.hpc.amslabs.hpecorp.net> | 9 个月前 | |
[flang][OpenMP] Tolerate compiler directives in loop constructs (#169346) PR168884 flagged compiler directives (!dir$ ...) inside OpenMP loop constructs as errors. This caused some customer applications to fail to compile (issue 169229). Downgrade the error to a warning, and gracefully ignore compiler directives when lowering loop constructs to MLIR. Fixes https://github.com/llvm/llvm-project/issues/169229 | 8 个月前 | |
[flang] Extend omp loop semantic checks for reduction (#128823) Extend semantic checks for omp loop directive to report errors when a reduction clause is specified on a standalone loop directive with teams binding. This is similar to how clang behaves. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Add semantic support for Loop Sequences and OpenMP loop fuse (#161213) This patch adds semantics for the omp fuse directive in flang, as specified in OpenMP 6.0. This patch also enables semantic support for loop sequences which are needed for the fuse directive along with semantics for the looprange clause. These changes are only semantic. Relevant tests have been added , and previous behavior is retained with no changes. --------- Co-authored-by: Ferran Toda <ferran.todacasaban@bsc.es> Co-authored-by: Krzysztof Parzyszek <Krzysztof.Parzyszek@amd.com> | 8 个月前 | |
[flang][OpenMP] Implement loop nest parser (#168884) Previously, loop constructs were parsed in a piece-wise manner: the begin directive, the body, and the end directive were parsed separately. Later on in canonicalization they were all coalesced into a loop construct. To facilitate that end-loop directives were given a special treatment, namely they were parsed as OpenMP constructs. As a result syntax errors caused by misplaced end-loop directives were handled differently from those cause by misplaced non-loop end directives. The new loop nest parser constructs the complete loop construct, removing the need for the canonicalization step. Additionally, it is the basis for parsing loop-sequence-associated constructs in the future. It also removes the need for the special treatment of end-loop directives. While this patch temporarily degrades the error messaging for misplaced end-loop directives, it enables uniform handling of any misplaced end-directives in the future. | 8 个月前 | |
[flang][OpenMP] Better diagnostics for invalid or misplaced directives (#168885) Add two more AST nodes, one for a misplaced end-directive, and one for an invalid string following the OpenMP sentinel (e.g. "!$OMP XYZ"). Emit error messages when either node is encountered in semantic analysis. | 8 个月前 | |
[flang][OpenMP] Better diagnostics for invalid or misplaced directives (#168885) Add two more AST nodes, one for a misplaced end-directive, and one for an invalid string following the OpenMP sentinel (e.g. "!$OMP XYZ"). Emit error messages when either node is encountered in semantic analysis. | 8 个月前 | |
[Flang][OpenMP] Add semantic support for Loop Sequences and OpenMP loop fuse (#161213) This patch adds semantics for the omp fuse directive in flang, as specified in OpenMP 6.0. This patch also enables semantic support for loop sequences which are needed for the fuse directive along with semantics for the looprange clause. These changes are only semantic. Relevant tests have been added , and previous behavior is retained with no changes. --------- Co-authored-by: Ferran Toda <ferran.todacasaban@bsc.es> Co-authored-by: Krzysztof Parzyszek <Krzysztof.Parzyszek@amd.com> | 8 个月前 | |
[Flang][OpenMP] Update declare mapper lookup via use-module (#167903) | 8 个月前 | |
[flang][OpenMP] Use new modifier infrastructure for MAP/FROM/TO clauses (#117447) This removes the specialized parsers and helper classes for these clauses, namely ConcatSeparated, MapModifiers, and MotionModifiers. Map and the motion clauses are now handled in the same way as all other clauses with modifiers, with one exception: the commas separating their modifiers are optional. This syntax is deprecated in OpenMP 5.2. Implement version checks for modifiers: for a given modifier on a given clause, check if that modifier is allowed on this clause in the specified OpenMP version. This replaced several individual checks. Add a testcase for handling map modifiers in a different order, and for diagnosing an ultimate modifier out of position. | 1 年前 | |
[flang][OpenMP] Sema checks, lowering with new format of MAP modifiers (#149137) OpenMP 6.0 has changed the modifiers on the MAP clause. Previous patch has introduced parsing support for them. This patch introduces processing of the new forms in semantic checks and in lowering. This only applies to existing modifiers, which were updated in the 6.0 spec. Any of the newly introduced modifiers (SELF and REF) are ignored. | 1 年前 | |
[flang][OpenMP] Frontend support for ATTACH modifier (#163608) Add parsing, semantic checks, but no lowering. | 9 个月前 | |
[flang][OpenMP] Use new modifier infrastructure for MAP/FROM/TO clauses (#117447) This removes the specialized parsers and helper classes for these clauses, namely ConcatSeparated, MapModifiers, and MotionModifiers. Map and the motion clauses are now handled in the same way as all other clauses with modifiers, with one exception: the commas separating their modifiers are optional. This syntax is deprecated in OpenMP 5.2. Implement version checks for modifiers: for a given modifier on a given clause, check if that modifier is allowed on this clause in the specified OpenMP version. This replaced several individual checks. Add a testcase for handling map modifiers in a different order, and for diagnosing an ultimate modifier out of position. | 1 年前 | |
Adding parsing and semantic check support for omp masked (#91432) omp masked directive in OpenMP 5.2 allows to specify code regions which are expected to be executed by thread ids specified by the programmer. Filter clause of the directive allows to specify the thread id. This change adds the parsing support for the directive | 2 年前 | |
[Flang][OpenMP] Allow zero trait score (#131473) | 1 年前 | |
[flang][OpenMP] Semantic checks for context selectors (#123243) This implements checks of the validity of context set selectors and trait selectors, plus the types of trait properties. Clause properties are also validated, but not name or extension properties. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 1 年前 | |
[flang][OpenMP] Semantic checks for context selectors (#123243) This implements checks of the validity of context set selectors and trait selectors, plus the types of trait properties. Clause properties are also validated, but not name or extension properties. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 1 年前 | |
[flang][OpenMP] Semantic checks for context selectors (#123243) This implements checks of the validity of context set selectors and trait selectors, plus the types of trait properties. Clause properties are also validated, but not name or extension properties. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 1 年前 | |
[flang][OpenMP] Semantic checks for context selectors (#123243) This implements checks of the validity of context set selectors and trait selectors, plus the types of trait properties. Clause properties are also validated, but not name or extension properties. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 1 年前 | |
[flang][OpenMP] Parse ORDERED as standalone when DEPEND/DOACROSS is p… (#156693) …resent The OpenMP spec 4.5-5.1 defines ORDERED as standalone when a DEPEND clause is present (with either SOURCE or SINK as argument). The OpenMP spec 5.2+ defines ORDERED as standalone when a DOACROSS clause is present. | 11 个月前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Diagnose non-variable symbols in OpenMP clauses (#111394) The original motivation came from this scenario: !$omp parallel do shared(xyz) xyz: do i = 1, 100 enddo xyz !$omp end parallel do Implement a general check for validity of items listed in OpenMP clauses. In most cases they need to be variables, some clauses allow "extended list items", i.e. variables or procedures. | 1 年前 | |
[Flang][OpenMP] Fix issue with named constants in SHARED and FIRSTPRIVATE clauses (#154335) The seemingly was a regression that prevented the usage of named constant (w/ PARAMETER attribute) in SHARED and FIRSTPRIVATE clauses. This PR corrects that. | 11 个月前 | |
[Flang][OpenMP] Update relevant warnings to emit when OMP >= v5.2 (#144492) There has been a number of deprecation warnings that have been added to Flang, however these features are only deprecated when the OpenMP Version being used is 5.2 or later. Previously, flang did not consider the version with the warnings so would always be emitted. Flang now ensures warnings are emitted for the appropriate version of OpenMP, and tests are updated to reflect this change. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP]: Allow orphaned distribute construct (#163546) If there is a call inside a TEAMS construct, and that call contains a DISTRIBUTE construct, the DISTRIBUTE region is considered to be enclosed by the TEAMS region (based on the dynamic extent of the construct). Currently, Flang diagnoses this as an error, which is incorrect. For eg : subroutine f !$omp distribute do i = 1, 100 ... end do end subroutine subroutine g !$omp teams call f ! this call is ok, distribute enclosed by teams !$omp end teams end subroutine This patch adjusts the nesting check for the OpenMP DISTRIBUTE directive. It retains the error for DISTRIBUTE directives that are incorrectly nested lexically but downgrades it to a warning for orphaned directives to allow dynamic nesting, such as when a subroutine with DISTRIBUTE is called from within a TEAMS region. Co-authored-by: Chandra Ghale <ghale@pe31.hpc.amslabs.hpecorp.net> | 9 个月前 | |
[Flang][OpenMP] Update relevant warnings to emit when OMP >= v5.2 (#144492) There has been a number of deprecation warnings that have been added to Flang, however these features are only deprecated when the OpenMP Version being used is 5.2 or later. Previously, flang did not consider the version with the warnings so would always be emitted. Flang now ensures warnings are emitted for the appropriate version of OpenMP, and tests are updated to reflect this change. | 1 年前 | |
[Flang][OpenMP] Permit loop construct in simd regions (#137020) Simdizable constructs are permitted in a simd region. The loop construct is a simdizable construct. Also fixes the TODO corresponding to this. | 1 年前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[Flang][OpenMP] Update relevant warnings to emit when OMP >= v5.2 (#144492) There has been a number of deprecation warnings that have been added to Flang, however these features are only deprecated when the OpenMP Version being used is 5.2 or later. Previously, flang did not consider the version with the warnings so would always be emitted. Flang now ensures warnings are emitted for the appropriate version of OpenMP, and tests are updated to reflect this change. | 1 年前 | |
Add parser+semantics support for scope construct (#113700) Test parsing, semantics and a couple of basic semantic checks for block/worksharing constructs. Add TODO message in lowering. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang] Make all tests work with lit's internal shell This patch removes REQUIRES: shell lines and updates the tests to not need a shell, or adds REQUIRES lines for Linux where relevant. A lot of these seem to have gotten introduced in 58c3f20bbf51f454ffb38ddb700a1d5ad374dc7b, but many are no longer relevant as these tests no longer use shell scripts. There was one test (missing_newline.f90) that needed to be modified to work. Lit doesn't recognize -ne correctly for echo and the options need to be split into separate flags. Reviewers: clementval, Meinersbur, kiranchandramohan, klausler Reviewed By: clementval Pull Request: https://github.com/llvm/llvm-project/pull/156115 | 11 个月前 | |
[Flang][OpenMP] Fix for error in atomic read for different elements of the common symbol #80399 (#109265) Fixes issue https://github.com/llvm/llvm-project/issues/80399 | 1 年前 | |
[flang][OpenMP] Overhaul implementation of ATOMIC construct (#137852) The parser will accept a wide variety of illegal attempts at forming an ATOMIC construct, leaving it to the semantic analysis to diagnose any issues. This consolidates the analysis into one place and allows us to produce more informative diagnostics. The parser's outcome will be parser::OpenMPAtomicConstruct object holding the directive, parser::Body, and an optional end-directive. The prior variety of OmpAtomicXyz classes, as well as OmpAtomicClause have been removed. READ, WRITE, etc. are now proper clauses. The semantic analysis consistently operates on "evaluation" representations, mainly evaluate::Expr (as SomeExpr) and evaluate::Assignment. The results of the semantic analysis are stored in a mutable member of the OpenMPAtomicConstruct node. This follows a precedent of having typedExpr member in parser::Expr, for example. This allows the lowering code to avoid duplicated handling of AST nodes. Using a BLOCK construct containing multiple statements for an ATOMIC construct that requires multiple statements is now allowed. In fact, any nesting of such BLOCK constructs is allowed. This implementation will parse, and perform semantic checks for both conditional-update and conditional-update-capture, although no MLIR will be generated for those. Instead, a TODO error will be issues prior to lowering. The allowed forms of the ATOMIC construct were based on the OpenMP 6.0 spec. | 1 年前 | |
[flang][OpenMP] Add diagnostic for ATOMIC WRITE with pointer to non-intrinsic type (#162364) Fixes https://github.com/llvm/llvm-project/issues/161932 Added a check for non-intrinsic types in non-pointer assignments. Added bool checkTypeOnPointer = true to both CheckAtomicVariable and CheckAtomicType. All atomic assignment functions now pass !IsPointerAssignment(...) to control the check. The pointer-to-non-intrinsic check lives in CheckAtomicType, guarded by the checkTypeOnPointer flag. The check now applies uniformly to all atomic operations while properly excluding pointer assignments (=>). --------- Co-authored-by: Krish Gupta <krishgupta@Krishs-MacBook-Air.local> | 9 个月前 | |
[flang][OpenMP] Add semantics test: named COMMON + member with firstprivate+lastprivate is valid (#162234) This adds a positive semantics test showing that: - A named COMMON block in a clause is equivalent to listing all explicit members. - The same list item may appear in both firstprivate and lastprivate on the same construct. The reporter example in #162033 therefore conforms to OpenMP and Flang is correct to accept it. This test documents and locks in that behavior to avoid regressions. <img width="1606" height="350" alt="image" src="https://github.com/user-attachments/assets/0b464c58-b9cc-43e0-8d1f-1c5a5b993bf6" /> Co-authored-by: Krish Gupta <krishgupta@Krishs-MacBook-Air.local> | 9 个月前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Add frontend support for ompx_bare clause (#111106) | 1 年前 | |
[flang][OpenMP] Add version checks for clauses (#110015) If there is a clause that is allowed on a given directive in a later version of the OpenMP spec, report an error and provide the minimal spec version that allows the clause. The case where a clause is not allowed on a directive at all is already handled elsewhere. | 1 年前 | |
[Flang][OpenMP] Update relevant warnings to emit when OMP >= v5.2 (#144492) There has been a number of deprecation warnings that have been added to Flang, however these features are only deprecated when the OpenMP Version being used is 5.2 or later. Previously, flang did not consider the version with the warnings so would always be emitted. Flang now ensures warnings are emitted for the appropriate version of OpenMP, and tests are updated to reflect this change. | 1 年前 | |
[flang][OpenMP] Parse ORDERED as standalone when DEPEND/DOACROSS is p… (#156693) …resent The OpenMP spec 4.5-5.1 defines ORDERED as standalone when a DEPEND clause is present (with either SOURCE or SINK as argument). The OpenMP spec 5.2+ defines ORDERED as standalone when a DOACROSS clause is present. | 11 个月前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Semantic checks for DOACROSS clause (#115397) Keep track of loop constructs and OpenMP loop constructs that have been entered. Use the information to validate the variables in the SINK loop iteration vector. --------- Co-authored-by: Tom Eccles <tom.eccles@arm.com> | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Update relevant warnings to emit when OMP >= v5.2 (#144492) There has been a number of deprecation warnings that have been added to Flang, however these features are only deprecated when the OpenMP Version being used is 5.2 or later. Previously, flang did not consider the version with the warnings so would always be emitted. Flang now ensures warnings are emitted for the appropriate version of OpenMP, and tests are updated to reflect this change. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Fix goto within SECTION (#144502) Previously we didn't push any context for SECTION and they are not modelled with differing scopes and so goto detection couldn't tell that GOTOs between two SECTIONs were between constructs rather than just staying inside of the parent SECTIONS construct. Fixes #143231 | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Reland Fix copyprivate semantic checks (#95799) (#101009) There are some cases in which variables used in OpenMP constructs are predetermined as private. The semantic checks for copyprivate were not handling those cases. Besides that, shared symbols were not being properly represented in some cases. When there was no previously declared private (implicit) symbol, no new association symbols, representing shared ones, were being created. These symbols must always be inserted in constructs that may privatize the original symbol: parallel, teams and task generating constructs. Fixes #87214 and #86907 | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Fix 2 more regressions after #101009 (#101538) PR #101009 exposed a semantic check issue with OPTIONAL dummy arguments. Another issue occurred when using %{re,im,len,kind}, as these also need to be skipped when handling variables with implicitly defined DSAs. These issues were found by Fujitsu testsuite. | 1 年前 | |
| 1 年前 | ||
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][semantics][OpenMP] no privatisation of stmt functions (#106550) OpenMP prohibits privatisation of variables that appear in expressions for statement functions. This is a re-working of an old patch https://reviews.llvm.org/D93213 by @praveen-g-ctt. The old patch couldn't be landed because of ordering concerns. Statement functions are rewritten during parse tree rewriting, but this was done after resolve-directives and so some array expressions were incorrectly identified as statement functions. For this reason **I have opted to re-order the semantics driver so that resolve-directives is run after parse tree rewriting**. Closes #54677 --------- Co-authored-by: Praveen <praveen@compilertree.com> | 1 年前 | |
| 11 个月前 | ||
[flang][OpenMP][Semantics] Don't allow reduction of derived type components (#125480) Before this patch, reduction of derived type components crashed the compiler when trying to create the omp.declare_reduction. In OpenMP 3.1 the standard says "a list item that appears in a reduction clause must be a named variable of intrinsic type" (page 106). As I understand it, a derived type component is not a variable. OpenMP 4.0 added declare reduction, partly so that users could define their own reductions on derived types. The above wording was removed from the standard but derived type components were never explicitly allowed. OpenMP 5.0 added "A variable that is part of another variable, with the exception of array elements, cannot appear in17 a reduction clause". All standard versions also require the reduction argument to be "definable", which roughly means that it is a variable. A derived type component is more like an expression. Fixes #125445 | 1 年前 | |
[Flang][OpenMP][Sema] Adding parsing and semantic support for scan directive. (#102792) | 1 年前 | |
[flang][Semantics][OpenMP] don't reduce variables in namelist (#110671) This is allowed by the OpenMP and F23 standards. But variables in a namelist are not allowed in OpenMP privatisation. I suspect this was an oversight. If we allow this we run into problems masking the original symbol with the symbol for the reduction variable when the variable is accessed via a namelist initialised as a global variable. See #101907. One solution for this would be to force the namelist to always be initilized inside of the block in which it is used (therefore using the correct mapping for the reduction variable), but this could make some production applications slow. I tentatively think it is probably better to disallow a (perhaps mistaken) edge case of the standards with (I think) little practical use, than to make real applications slow in order to make this work. If reviewers would rather keep to the letter of the standard, see #109303 which implements the alternative solution. I'm open to either path forward. Fixes #101907 | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP]Replace assert with if-condition (#139559) If a symbol is not declared, check-omp-structure hits an assert. It should be safe to treat undeclared symbols as "not from a block", as they would have to be declared to be in a block... Adding simple test to confirm it gives error messages, not crashing. This should fix issue #131655 (there is already a check for symbol being not null in the code identified in the ticket). | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Implement CheckReductionObjects for all reduction c… (#118689) …lauses Currently we only do semantic checks for REDUCTION. There are two other clauses, IN_REDUCTION, and TASK_REDUCTION which will also need those checks. Implement a function that checks the common list-item requirements for all those clauses. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Implement CheckReductionObjects for all reduction c… (#118689) …lauses Currently we only do semantic checks for REDUCTION. There are two other clauses, IN_REDUCTION, and TASK_REDUCTION which will also need those checks. Implement a function that checks the common list-item requirements for all those clauses. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[flang][OpenMP] Implement CheckReductionObjects for all reduction c… (#118689) …lauses Currently we only do semantic checks for REDUCTION. There are two other clauses, IN_REDUCTION, and TASK_REDUCTION which will also need those checks. Implement a function that checks the common list-item requirements for all those clauses. | 1 年前 | |
[flang][Semantics][OpenMP] Fix ICE for unknown reduction starting with . (#94398) In this case the union inside of the parser::DefinedOperator contains a string name instead of the expected parser::DefinedOperator::IntrinsicOperator. This led to a std::abort. This patch adapts the code so that if it contains a string name we emit a semantic error. | 2 年前 | |
| 2 年前 | ||
[Flang][OpenMP] Improve Semantics for Derived Type Array Elements (#167296) Flang does not allow the use of Structure Component types inside of certain OpenMP clauses. While this has been introduced, it seemed that Structure Component Array Elements were not being captured as they got embedded in the parse tree. To ensure all structure component types are identified, a new HasStructureComponent evaluate function has been introduced to walk a Semantics expression, identified where Components are used within. This replaces the previous implementation of CheckStructureComponent which just looked for the StructureComponent inside of a DataRef. Fixes #150830 | 9 个月前 | |
[flang][OpenMP] Implement CheckReductionObjects for all reduction c… (#118689) …lauses Currently we only do semantic checks for REDUCTION. There are two other clauses, IN_REDUCTION, and TASK_REDUCTION which will also need those checks. Implement a function that checks the common list-item requirements for all those clauses. | 1 年前 | |
[Flang][OpenMP] Improve Semantics for Derived Type Array Elements (#167296) Flang does not allow the use of Structure Component types inside of certain OpenMP clauses. While this has been introduced, it seemed that Structure Component Array Elements were not being captured as they got embedded in the parse tree. To ensure all structure component types are identified, a new HasStructureComponent evaluate function has been introduced to walk a Semantics expression, identified where Components are used within. This replaces the previous implementation of CheckStructureComponent which just looked for the StructureComponent inside of a DataRef. Fixes #150830 | 9 个月前 | |
[flang][OpenMP] Frontend support for REPLAYABLE and TRANSPARENT clauses (#158149) Parsing and semantic checks. | 10 个月前 | |
[flang][OpenMP] Add optional argument to requirement clauses (#163557) OpenMP 6.0 added an optional logical parameter to the requirement clauses (except ATOMIC_DEFAULT_MEM_ORDER) to indicate whether the clause should take effect or not. The parameter defaults to true if not specified. The parameter value is a compile-time constant expression, but it may require folding to get the final value. Since name resolution happens before folding, the argument expression needs to be analyzed by hand. The determination of the value needs to happen during name resolution because the requirement directives need to be available through module files (and the module reader doesn't to semantic checks beyond name resolution). | 9 个月前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Emit requirements in module files (#163449) For each program unit, collect the set of requirements from REQUIRES directives in the source, and modules used by the program unit, and add them to the details of the program unit symbol. The requirements in the symbol details as now stored as clauses. Since requirements need to be emitted in the module files as OpenMP directives, this makes the clause emission straightforward via getOpenMPClauseName. Each program unit, including modules, the corresponding symbol will have the transitive closure of the requirements for everything contained or used in that program unit. | 9 个月前 | |
[flang][OpenMP] Add optional argument to requirement clauses (#163557) OpenMP 6.0 added an optional logical parameter to the requirement clauses (except ATOMIC_DEFAULT_MEM_ORDER) to indicate whether the clause should take effect or not. The parameter defaults to true if not specified. The parameter value is a compile-time constant expression, but it may require folding to get the final value. Since name resolution happens before folding, the argument expression needs to be analyzed by hand. The determination of the value needs to happen during name resolution because the requirement directives need to be available through module files (and the module reader doesn't to semantic checks beyond name resolution). | 9 个月前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Use new modifiers in ALLOCATE clause (#117627) Again, this simplifies the semantic checks and lowering quite a bit. Update the check for positive alignment to use a more informative message, and to highlight the modifier itsef, not the whole clause. Remove the checks for the allocator expression itself being positive: there is nothing in the spec that says that it should be positive. Remove the "simple" modifier from the AllocateT template, since both simple and complex modifiers are the same thing, only differing in syntax. | 1 年前 | |
[Flang][OpenMP][Sema] Adding parsing and semantic support for scan directive. (#102792) | 1 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[flang][OpenMP] Fix goto within SECTION (#144502) Previously we didn't push any context for SECTION and they are not modelled with differing scopes and so goto detection couldn't tell that GOTOs between two SECTIONs were between constructs rather than just staying inside of the parent SECTIONS construct. Fixes #143231 | 1 年前 | |
[Flang][OpenMP] Re-enable more OpenMP tests 5/n (#93246) Enables a few sections, simd, taskloop, use_device tests. | 2 年前 | |
[flang][OpenMP] Fix goto within SECTION (#144502) Previously we didn't push any context for SECTION and they are not modelled with differing scopes and so goto detection couldn't tell that GOTOs between two SECTIONs were between constructs rather than just staying inside of the parent SECTIONS construct. Fixes #143231 | 1 年前 | |
[flang][OpenMP] Treat POINTER variables as valid variable list items (#111722) Follow-up to 418920b3fbdefec5b56ee2b9db96884d0ada7329, which started diagnosing the legality of objects in OpenMP clauses (and caused some test failures). | 1 年前 | |
[Flang][OpenMP] Fix to resolve the crash with SIMD aligned clause. (#150612) **Issue:** When SIMD aligned clause has a alignment value which is not a power of 2, compiler crashes with error Assertion (alignment & (alignment - 1)) == 0 && "alignment is not power of 2" **Fix:** According to LLVM Language Reference manual [[link]](https://llvm.org/docs/LangRef.html#assume-opbundles), the alignment value may be non-power-of-two. In that case, the pointer value must be a null pointer otherwise the behavior is undefined. So instead of emitting llvm.assume intrinsic function with a null pointer having the specified alignment, modified the implementation which ignores the aligned clause which has an alignment value which is not a power of 2. This patch also emits a warning indicating that the aligned clause is ignored if the alignment value is not a power of two. It fixes the issue https://github.com/llvm/llvm-project/issues/149458 | 11 个月前 | |
[flang][OpenMP] Add version checks for clauses (#110015) If there is a clause that is allowed on a given directive in a later version of the OpenMP spec, report an error and provide the minimal spec version that allows the clause. The case where a clause is not allowed on a directive at all is already handled elsewhere. | 1 年前 | |
[flang][OpenMP] Store Block in OpenMPLoopConstruct, add access functions (#168078) Instead of storing a variant with specific types, store parser::Block as the body. Add two access functions to make the traversal of the nest simpler. This will allow storing loop-nest sequences in the future. | 8 个月前 | |
[Flang][OpenMP] Reenable a few tests 4/n (#93214) Re-enable a few simd, critical, workshare tests. | 2 年前 | |
[Flang][OpenMP] Reenable a few tests 4/n (#93214) Re-enable a few simd, critical, workshare tests. | 2 年前 | |
[Flang][OpenMP] Reenable and fix final few tests 6/6 (#93295) Add do02.f90 and taskloop03.f90 that were removed in https://github.com/llvm/llvm-project/pull/92739 Replace shell script tests with python. | 2 年前 | |
[Flang][OpenMP] Re-enable tests on windows 2/n (#93013) Re-enables the single, symbol and threadprivate tests | 2 年前 | |
[Flang][OpenMP] Re-enable tests on windows 2/n (#93013) Re-enables the single, symbol and threadprivate tests | 2 年前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[Flang][OpenMP] Reenable a few tests 4/n (#93214) Re-enable a few simd, critical, workshare tests. | 2 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[flang][OpenMP] Explicitly set Shared DSA in symbols (#142154) Before this change, OmpShared was not always set in shared symbols. Instead, absence of private flags was interpreted as shared DSA. The problem was that symbols with no flags, with only a host association, could also mean "has same DSA as in the enclosing context". Now shared symbols behave the same as private and can be treated the same way. Because of the host association symbols with no flags mentioned above, it was also incorrect to simply test the flags of a given symbol to find out if it was private or shared. The function GetSymbolDSA() was added to fix this. It would be better to avoid the need of these special symbols, but this would require changes to how symbols are collected in lowering. Besides that, some semantic checks need to know if a DSA clause was used or not. To avoid confusing implicit symbols with DSA clauses a new flag was added: OmpExplicit. It is now set for all symbols with explicitly determined data-sharing attributes. With the changes above, AddToContextObjectWithDSA() and the symbol to DSA map could probably be removed and the DSA could be obtained directly from the symbol, but this was not attempted. Some debug messages were also added, with the "omp" DEBUG_TYPE, to make it easier to debug the creation of implicit symbols and to visualize all associations of a given symbol. Fixes #130533 Fixes #140882 | 1 年前 | |
[flang][OpenMP] Explicitly set Shared DSA in symbols (#142154) Before this change, OmpShared was not always set in shared symbols. Instead, absence of private flags was interpreted as shared DSA. The problem was that symbols with no flags, with only a host association, could also mean "has same DSA as in the enclosing context". Now shared symbols behave the same as private and can be treated the same way. Because of the host association symbols with no flags mentioned above, it was also incorrect to simply test the flags of a given symbol to find out if it was private or shared. The function GetSymbolDSA() was added to fix this. It would be better to avoid the need of these special symbols, but this would require changes to how symbols are collected in lowering. Besides that, some semantic checks need to know if a DSA clause was used or not. To avoid confusing implicit symbols with DSA clauses a new flag was added: OmpExplicit. It is now set for all symbols with explicitly determined data-sharing attributes. With the changes above, AddToContextObjectWithDSA() and the symbol to DSA map could probably be removed and the DSA could be obtained directly from the symbol, but this was not attempted. Some debug messages were also added, with the "omp" DEBUG_TYPE, to make it easier to debug the creation of implicit symbols and to visualize all associations of a given symbol. Fixes #130533 Fixes #140882 | 1 年前 | |
[flang][OpenMP] Explicitly set Shared DSA in symbols (#142154) Before this change, OmpShared was not always set in shared symbols. Instead, absence of private flags was interpreted as shared DSA. The problem was that symbols with no flags, with only a host association, could also mean "has same DSA as in the enclosing context". Now shared symbols behave the same as private and can be treated the same way. Because of the host association symbols with no flags mentioned above, it was also incorrect to simply test the flags of a given symbol to find out if it was private or shared. The function GetSymbolDSA() was added to fix this. It would be better to avoid the need of these special symbols, but this would require changes to how symbols are collected in lowering. Besides that, some semantic checks need to know if a DSA clause was used or not. To avoid confusing implicit symbols with DSA clauses a new flag was added: OmpExplicit. It is now set for all symbols with explicitly determined data-sharing attributes. With the changes above, AddToContextObjectWithDSA() and the symbol to DSA map could probably be removed and the DSA could be obtained directly from the symbol, but this was not attempted. Some debug messages were also added, with the "omp" DEBUG_TYPE, to make it easier to debug the creation of implicit symbols and to visualize all associations of a given symbol. Fixes #130533 Fixes #140882 | 1 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[flang][OpenMP] Explicitly set Shared DSA in symbols (#142154) Before this change, OmpShared was not always set in shared symbols. Instead, absence of private flags was interpreted as shared DSA. The problem was that symbols with no flags, with only a host association, could also mean "has same DSA as in the enclosing context". Now shared symbols behave the same as private and can be treated the same way. Because of the host association symbols with no flags mentioned above, it was also incorrect to simply test the flags of a given symbol to find out if it was private or shared. The function GetSymbolDSA() was added to fix this. It would be better to avoid the need of these special symbols, but this would require changes to how symbols are collected in lowering. Besides that, some semantic checks need to know if a DSA clause was used or not. To avoid confusing implicit symbols with DSA clauses a new flag was added: OmpExplicit. It is now set for all symbols with explicitly determined data-sharing attributes. With the changes above, AddToContextObjectWithDSA() and the symbol to DSA map could probably be removed and the DSA could be obtained directly from the symbol, but this was not attempted. Some debug messages were also added, with the "omp" DEBUG_TYPE, to make it easier to debug the creation of implicit symbols and to visualize all associations of a given symbol. Fixes #130533 Fixes #140882 | 1 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[flang][OpenMP] Make all block constructs share the same structure (#150956) The structure is - OmpBeginDirective (aka OmpDirectiveSpecification) - Block - optional<OmpEndDirective> (aka optional<OmpDirectiveSpecification>) The OmpBeginDirective and OmpEndDirective are effectively different names for OmpDirectiveSpecification. They exist to allow the semantic analyses to distinguish between the beginning and the ending of a block construct without maintaining additional context. The actual changes are in the parser: parse-tree.h and openmp-parser.cpp in particular. The rest is simply changing the way the directive/clause information is accessed (typically for the simpler). All standalone and block constructs now use OmpDirectiveSpecification to store the directive/clause information. | 1 年前 | |
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[flang][OpenMP] Make OpenMPCriticalConstruct follow block structure (#152007) This allows not having the END CRITICAL directive in certain situations. Update semantic checks and symbol resolution. | 1 年前 | |
[flang][OpenMP] Make OpenMPCriticalConstruct follow block structure (#152007) This allows not having the END CRITICAL directive in certain situations. Update semantic checks and symbol resolution. | 1 年前 | |
[flang][OpenMP] Undeprecate accidentally deprecated TARGET LOOP (#167495) | 8 个月前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Show error for task depend with no valid modifiers (#142595) If a "TASK DEPEND" clause is not given a valid task dependece type modifier, the semantic checks for the clause will result in an ICE because they assume that such modifiers will be present. Check whether the modifiers are present and show an appropriate error instead of crashing the compiler if they are not. Fixes llvm#133678. Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com> | 1 年前 | |
[Flang][OpenMP] Improve Semantics for Derived Type Array Elements (#167296) Flang does not allow the use of Structure Component types inside of certain OpenMP clauses. While this has been introduced, it seemed that Structure Component Array Elements were not being captured as they got embedded in the parse tree. To ensure all structure component types are identified, a new HasStructureComponent evaluate function has been introduced to walk a Semantics expression, identified where Components are used within. This replaces the previous implementation of CheckStructureComponent which just looked for the StructureComponent inside of a DataRef. Fixes #150830 | 9 个月前 | |
[Flang] Add LLVM lowering support for UNTIED clause in Task (#121052) Implementation details: The UNTIED clause is recognized by setting the flag=0 for the default case or performing logical OR to flag if other clauses are specified, and this flag is passed as an argument to the __kmpc_omp_task_alloc runtime call. Resubmitting the PR with fix for the failure, as it was reverted here: 927a70daf31b1610627f346b0dc140eda72144b9 and previously merged here: https://github.com/llvm/llvm-project/pull/115283 | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[flang][OpenMP] Semantic checks for TASKGRAPH (#160115) This verifies the "structural" restrictions on constructs encountered in a TASKGRAPH construct. There are also restrictions that apply to list items, specifically in the following contexts: - a list item on a clause on a replayable construct, - data-sharing attributes for a variable on a replayable construct. These restrictions are not verified, because that would require knowing which clauses (on a potential compound directive) apply to the task- generating construct of interest. This information is not available during semantic checks. | 10 个月前 | |
[flang][OpenMP] Semantic checks for IN_REDUCTION and TASK_REDUCTION (#118841) Update parsing of these two clauses and add semantic checks for them. Simplify some code in IsReductionAllowedForType and CheckReductionOperator. | 1 年前 | |
[Flang][OpenMP] Re-enable tests without runtime issues on Windows (#92824) | 2 年前 | |
[Flang][OpenMP] Re-enable more OpenMP tests 5/n (#93246) Enables a few sections, simd, taskloop, use_device tests. | 2 年前 | |
[Flang][OpenMP] Re-enable more OpenMP tests 5/n (#93246) Enables a few sections, simd, taskloop, use_device tests. | 2 年前 | |
[Flang][OpenMP] Reenable and fix final few tests 6/6 (#93295) Add do02.f90 and taskloop03.f90 that were removed in https://github.com/llvm/llvm-project/pull/92739 Replace shell script tests with python. | 2 年前 | |
[Flang][OpenMP] Add Lowering support for Collapse with Taskloop (#166791) Support for lowering collapse already exists within genLoopNestClauses, which is called when lowering taskloop. However, the TODO message still included the Collapse clause, so it was not activated. By removing this, it enables lowering of the Collapse clause in taskloop. | 8 个月前 | |
[Flang][OpenMP] Re-enable more OpenMP tests 5/n (#93246) Enables a few sections, simd, taskloop, use_device tests. | 2 年前 | |
[Flang][OpenMP][taskloop] Adding missing semantic checks in Taskloop (#128431) Below semantic checks for Taskloop clause mentioned in OpenMP [5.2] specification were missing, this patch contains the semantic checks, corresponding error messages and test cases: OpenMP standard [5.2]: [12.6] Taskloop Construct [Restrictions] Restrictions to the taskloop construct are as follows: • The reduction-modifier must be default. • The conditional lastprivate-modifier must not be specified. Authored-by: shkaushi <sharang.kaushik@amd.com> | 1 年前 | |
[Flang][OpenMP][taskloop] Adding missing semantic checks in Taskloop (#128431) Below semantic checks for Taskloop clause mentioned in OpenMP [5.2] specification were missing, this patch contains the semantic checks, corresponding error messages and test cases: OpenMP standard [5.2]: [12.6] Taskloop Construct [Restrictions] Restrictions to the taskloop construct are as follows: • The reduction-modifier must be default. • The conditional lastprivate-modifier must not be specified. Authored-by: shkaushi <sharang.kaushik@amd.com> | 1 年前 | |
[Flang][OpenMP] Re-enable tests on windows 2/n (#93013) Re-enables the single, symbol and threadprivate tests | 2 年前 | |
| 1 年前 | ||
[flang] Main program symbol no longer conflicts with the other symbols (#149169) The following code is now accepted: module m end program m use m end The PROGRAM name doesn't really have an effect on the compilation result, so it shouldn't result in symbol name conflicts. This change makes the main program symbol name all uppercase in the cooked character stream. This makes it distinct from all other symbol names that are all lowercase in cooked character stream. Modified the tests that were checking for lower case main program name. | 1 年前 | |
[Flang][OpenMP] Allow copyprivate and nowait on the directive clauses (#127769) Issue: - Single construct used to throw a semantic error for copyprivate and nowait clause when used in the single directive. - Also, the copyprivate with nowait restriction has been removed from OpenMP 6.0 Fix: - Allow copyprivate and nowait on both single and end single directive - Allow at most one nowait clause - Throw a warning when the same list item is used in the copyprivate clause on the end single directive From Reference guide (OpenMP 5.2, 2.10.2): !$omp single [clause[ [,]clause] ... ] loosely-structured-block !$omp end single [end-clause[ [,]end-clause] ...] clause: copyprivate (list) nowait [...] end-clause: copyprivate (list) nowait Towards: https://github.com/llvm/llvm-project/issues/110008 | 1 年前 | |
[Flang][OpenMP] Re-enable tests on windows 2/n (#93013) Re-enables the single, symbol and threadprivate tests | 2 年前 | |
[Flang][OpenMP] Re-enable tests on windows 2/n (#93013) Re-enables the single, symbol and threadprivate tests | 2 年前 | |
[Flang][OpenMP] Re-enable tests on windows 2/n (#93013) Re-enables the single, symbol and threadprivate tests | 2 年前 | |
[Flang] Handle the source (scopes) for some OpenMP constructs (#109097) Fixes: https://github.com/llvm/llvm-project/issues/82943 Fixes: https://github.com/llvm/llvm-project/issues/82942 Fixes: https://github.com/llvm/llvm-project/issues/85593 | 1 年前 | |
[Flang][OpenMP] Add semantic tests for threadprivate variables with host assoc (#134680) | 1 年前 | |
[Flang] Add standalone tile support (#160298) Add support for the standalone OpenMP tile construct: f90 !$omp tile sizes(...) DO i = 1, 100 ... This is complementary to #143715 which added support for the tile construct as part of another loop-associated construct such as worksharing-loop, distribute, etc. | 10 个月前 | |
[flang][OpenMP] Implement loop nest parser (#168884) Previously, loop constructs were parsed in a piece-wise manner: the begin directive, the body, and the end directive were parsed separately. Later on in canonicalization they were all coalesced into a loop construct. To facilitate that end-loop directives were given a special treatment, namely they were parsed as OpenMP constructs. As a result syntax errors caused by misplaced end-loop directives were handled differently from those cause by misplaced non-loop end directives. The new loop nest parser constructs the complete loop construct, removing the need for the canonicalization step. Additionally, it is the basis for parsing loop-sequence-associated constructs in the future. It also removes the need for the special treatment of end-loop directives. While this patch temporarily degrades the error messaging for misplaced end-loop directives, it enables uniform handling of any misplaced end-directives in the future. | 8 个月前 | |
[Flang] Add standalone tile support (#160298) Add support for the standalone OpenMP tile construct: f90 !$omp tile sizes(...) DO i = 1, 100 ... This is complementary to #143715 which added support for the tile construct as part of another loop-associated construct such as worksharing-loop, distribute, etc. | 10 个月前 | |
[Flang] Add standalone tile support (#160298) Add support for the standalone OpenMP tile construct: f90 !$omp tile sizes(...) DO i = 1, 100 ... This is complementary to #143715 which added support for the tile construct as part of another loop-associated construct such as worksharing-loop, distribute, etc. | 10 个月前 | |
[Flang] Add standalone tile support (#160298) Add support for the standalone OpenMP tile construct: f90 !$omp tile sizes(...) DO i = 1, 100 ... This is complementary to #143715 which added support for the tile construct as part of another loop-associated construct such as worksharing-loop, distribute, etc. | 10 个月前 | |
[Flang] Add standalone tile support (#160298) Add support for the standalone OpenMP tile construct: f90 !$omp tile sizes(...) DO i = 1, 100 ... This is complementary to #143715 which added support for the tile construct as part of another loop-associated construct such as worksharing-loop, distribute, etc. | 10 个月前 | |
[Flang] Add standalone tile support (#160298) Add support for the standalone OpenMP tile construct: f90 !$omp tile sizes(...) DO i = 1, 100 ... This is complementary to #143715 which added support for the tile construct as part of another loop-associated construct such as worksharing-loop, distribute, etc. | 10 个月前 | |
[Flang] Add standalone tile support (#160298) Add support for the standalone OpenMP tile construct: f90 !$omp tile sizes(...) DO i = 1, 100 ... This is complementary to #143715 which added support for the tile construct as part of another loop-associated construct such as worksharing-loop, distribute, etc. | 10 个月前 | |
[flang][OpenMP] Implement CheckReductionObjects for all reduction c… (#118689) …lauses Currently we only do semantic checks for REDUCTION. There are two other clauses, IN_REDUCTION, and TASK_REDUCTION which will also need those checks. Implement a function that checks the common list-item requirements for all those clauses. | 1 年前 | |
[flang][OpenMP] Use new modifier infrastructure for MAP/FROM/TO clauses (#117447) This removes the specialized parsers and helper classes for these clauses, namely ConcatSeparated, MapModifiers, and MotionModifiers. Map and the motion clauses are now handled in the same way as all other clauses with modifiers, with one exception: the commas separating their modifiers are optional. This syntax is deprecated in OpenMP 5.2. Implement version checks for modifiers: for a given modifier on a given clause, check if that modifier is allowed on this clause in the specified OpenMP version. This replaced several individual checks. Add a testcase for handling map modifiers in a different order, and for diagnosing an ultimate modifier out of position. | 1 年前 | |
[flang][OpenMP] Frontend support for REPLAYABLE and TRANSPARENT clauses (#158149) Parsing and semantic checks. | 10 个月前 | |
[flang][OpenMP] Add version checks for clauses (#110015) If there is a clause that is allowed on a given directive in a later version of the OpenMP spec, report an error and provide the minimal spec version that allows the clause. The case where a clause is not allowed on a directive at all is already handled elsewhere. | 1 年前 | |
[flang][OpenMP] Implement CheckReductionObjects for all reduction c… (#118689) …lauses Currently we only do semantic checks for REDUCTION. There are two other clauses, IN_REDUCTION, and TASK_REDUCTION which will also need those checks. Implement a function that checks the common list-item requirements for all those clauses. | 1 年前 | |
[Flang][OpenMP] Re-enable more OpenMP tests 5/n (#93246) Enables a few sections, simd, taskloop, use_device tests. | 2 年前 | |
[flang][CLI] Have the CLI hint the flag to disable a warning (#144767) Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free. | 1 年前 | |
[flang][openmp] Add parser and semantic support for workdistribute (#154377) This PR adds workdistribute parser and semantic support in flang. The work in this PR is c-p and updated from @ivanradanov commits from coexecute implementation: flang_workdistribute_iwomp_2024 | 11 个月前 | |
[flang][openmp] Add parser and semantic support for workdistribute (#154377) This PR adds workdistribute parser and semantic support in flang. The work in this PR is c-p and updated from @ivanradanov commits from coexecute implementation: flang_workdistribute_iwomp_2024 | 11 个月前 | |
[flang][openmp] Add parser and semantic support for workdistribute (#154377) This PR adds workdistribute parser and semantic support in flang. The work in this PR is c-p and updated from @ivanradanov commits from coexecute implementation: flang_workdistribute_iwomp_2024 | 11 个月前 | |
[flang][openmp] Add parser and semantic support for workdistribute (#154377) This PR adds workdistribute parser and semantic support in flang. The work in this PR is c-p and updated from @ivanradanov commits from coexecute implementation: flang_workdistribute_iwomp_2024 | 11 个月前 | |
[Flang][OpenMP] Reenable a few tests 4/n (#93214) Re-enable a few simd, critical, workshare tests. | 2 年前 | |
[Flang][OpenMP] Add semantic checks for Worshare construct (#111358) Add missing semantic checks for the Workshare construct: OpenMP 5.2: 11.4 Workshare Construct - The construct must not contain any user-defined function calls unless either the function is pure and elemental or the function call is contained inside a parallel construct that is nested inside the workshare construct. (Flang-new used to check only the elemental function, but now it needs to be an impure elemental function) - At most one NoWait clause can appear in the Workshare construct. - Add tests for the same. | 1 年前 | |
[Flang][OpenMP] Reenable a few tests 4/n (#93214) Re-enable a few simd, critical, workshare tests. | 2 年前 | |
[Flang][OpenMP] Reenable a few tests 4/n (#93214) Re-enable a few simd, critical, workshare tests. | 2 年前 | |
[Flang][OpenMP] Reenable a few tests 4/n (#93214) Re-enable a few simd, critical, workshare tests. | 2 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 2 年前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 11 个月前 | ||
| 10 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 10 个月前 | ||
| 9 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 8 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 |