| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[flang][openacc] Add semantic checks for atomic constructs (#149579) An error report of the following code generating non-atomic code led us to realize there are missing checks in the OpenACC atomics code. Add some of those checks for atomic and sketch how the rest of the code should proceed in checking the rest of the properties. The following cases are all reported as errors. fortran ! Originally reported error! !$acc atomic capture a = b c = b !$acc end atomic capture ! Other ambiguous, but related errors! !$acc atomic capture x = i i = x !$acc end atomic capture !$acc atomic capture a = b b = b !$acc end atomic capture !$acc atomic capture a = b a = c !$acc end atomic capture | 1 年前 | |
[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][openacc] Allow scalar in acc cache directive (#70713) | 2 年前 | |
[flang][openacc] Accept !$acc end loop Some compilers accept !$acc end loop associated with an !$acc loop directive. This patch updates the acc loop parser to accept it as well. The parser is also updated to be stricter on the following statement to match the OpenACC combined construct parser. The rewrite canonicalization is not a rewrite anymore and the naming will be updated in a follow up patch for the Loop and Combined constructs. Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D159015 | 2 年前 | |
[flang][cuda] Avoid crash when the force modifier is used (#160176) | 10 个月前 | |
[flang][openacc] Support labeled DO loop after acc combined directive (#66296) This patch adds support for labeled do loop after combined directive. It relaxes the initial parser and canonicalize labeled do loop into the OpenACCCombinedConstruct. | 2 年前 | |
[flang][OpenACC] Relax COMMON block usage restriction in OpenACC directives (#162659) Unlike OpenMP, OpenACC doesn't require that the COMMON block be defined in the same scope as the directive. | 9 个月前 | |
[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][openacc] fix a bug with checking data mapping clause when there is no default (#151419) Test case used to complain about dosomething requiring a data mapping clause. Now no such error exists. | 1 年前 | |
[flang][openacc] Warn about misplaced end loop directive and ignore it (#69512) Instead of raising an error for a misplaced end loop directive, just warn about it and ignore it. This directive is an extension and is optional. | 2 年前 | |
[flang][openacc] Allow if_present multiple times on host_data and update (#135422) Similar to #135415. The spec has not strict restriction to allow a single if_present clause on the host_data and update directives. Allowing this clause multiple times does not change the semantic of it. This patch relax the rules in ACC.td since there is no restriction in the standard. The OpenACC dialect represents the if_present clause with a UnitAttr so the attribute will be set if the is one or more if_present clause. | 1 年前 | |
[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] 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] 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][openacc] Support labeled DO loop after acc loop directive (#66294) Make the DoConstruct in OpenACCLoopConstruct optional and move the labeled do construct in in the canonicalization step. | 2 年前 | |
[flang][acc] Allow nested gang loops inside acc routines (#158693) The following commit incorrectly prohibited nested gang loops inside acc routines. This PR limits the restriction to loops within kernels constructs only. https://github.com/llvm/llvm-project/commit/8470027f257a3304b2abe50e5663bcd711f6ca29 | 10 个月前 | |
[flang][openacc] Carry device dependent info for routine in the module file | 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][openacc] bug fix in semantic checking (#155659) This fixes two scoping related bugs with OpenACC semantic checking. - Data constructs with open acc now inherit the default Data Sharing Attribute of their parent construct. - Data Sharing Attributes scopes now nest such that if a symbol's DSA wasn't declared by the innermost then lookup looks in the parent construct's data sharing declarations. This fixes the added test cases. | 11 个月前 | |
[flang][acc] honor reduction clause's implied copy attribute (#156982) The Open ACC spec states that the reduction clause implies the copy clause. Account for this in the check for default(none) variables. Add a test that shouldn't error, but did before this PR. | 11 个月前 | |
[Flang] Ported test_errors.sh to Python To enable Flang testing on Windows, shell scripts have to be ported to Python. In this patch the "test_errors.sh" script is ported to python ("test_errors.py"). The RUN line of existing tests was changed to make use of the python script. Used python regex in place of awk/sed. Reviewed By: Meinersbur Differential Revision: https://reviews.llvm.org/D107575 | 4 年前 | |
[Flang] Ported test_errors.sh to Python To enable Flang testing on Windows, shell scripts have to be ported to Python. In this patch the "test_errors.sh" script is ported to python ("test_errors.py"). The RUN line of existing tests was changed to make use of the python script. Used python regex in place of awk/sed. Reviewed By: Meinersbur Differential Revision: https://reviews.llvm.org/D107575 | 4 年前 | |
[flang] Allow compiler directives for collapsed loops in OpenACC If one tries to compile the attached test case code with flan, the one will get an internal compiler error on CHECK(level == 0) at the end of PrivatizeAssociatedLoopIndex function. Other compilers (gfortran and nvfortran) build this code just fine. This change fixes the ICE. Reviewed By: clementval Differential Revision: https://reviews.llvm.org/D132846 | 3 年前 | |
[flang][openacc] Fix false positive error in common block resolution The following error was triggered in the added test case. This is a false positive. COMMON block must be declared in the same scoping unit in which the OpenACC directive or clause appears Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D154742 | 3 年前 | |
[flang][openacc] parse and ignore non-standard shortloop clause (#106564) shortloop is a non standard OpenACC extension (https://docs.nvidia.com/hpc-sdk/pgi-compilers/2015/pgirn157.pdf) that can be found on loop directives. f18 parser was choking when seeing it. Since it can be found in existing apps and is mainly an optimization hint, parse it on loop directives and ignore it with a warning. For the records, here is shortloop meaning according to the manual linked above: "If the shortloop clause appears on a loop directive with the vector clause, it tells the compiler that the loop trip count is less than or equal to the number of vector lanes created for that loop. This means the value of the vector() clause on the loop directive in a kernels region, or the value of the vector_length() clause on the parallel directive in a parallel region will be greater than or equal to the loop trip count. This allows the compiler to generate more efficient code for the loop" | 1 年前 | |
[flang][openacc] Allow acc routine at the top level (#69936) Some compilers allow the $acc routine(<name>) to be placed at the program unit level. To be compatible, this patch enables the use of acc routine at this level. These acc routine directives must have a name. | 2 年前 | |
[flang][openacc] Do not accept static and num for gang clause on routine dir (#77673) Only the dim argument is allowed on the gang clause for the routine directive. Reject static and num arguments in the semantic check. | 2 年前 | |
[flang][openacc] Suppport !@acc compiler sentinel (#161706) | 10 个月前 | |
[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] 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] 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] 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] 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][openacc] Make sure the correct flags are set for symbol in acc declare Flags were not correctly set for symbols appearing in the OpenACC declare directive in module declaration part. Also some missing flags for OpenACC are added. This makes the Flags enum > 64 and then the implementation switch to std::bitset as defined in flang/include/flang/Common/enum-set.h. Therefore, constexpr cannot be used for set of flags in flang/lib/Semantics/resolve-directives.cpp. Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D157042 | 2 年前 | |
[flang][openacc] Allow if_present multiple times on host_data and update (#135422) Similar to #135415. The spec has not strict restriction to allow a single if_present clause on the host_data and update directives. Allowing this clause multiple times does not change the semantic of it. This patch relax the rules in ACC.td since there is no restriction in the standard. The OpenACC dialect represents the if_present clause with a UnitAttr so the attribute will be set if the is one or more if_present clause. | 1 年前 | |
[Flang] Ported test_errors.sh to Python To enable Flang testing on Windows, shell scripts have to be ported to Python. In this patch the "test_errors.sh" script is ported to python ("test_errors.py"). The RUN line of existing tests was changed to make use of the python script. Used python regex in place of awk/sed. Reviewed By: Meinersbur Differential Revision: https://reviews.llvm.org/D107575 | 4 年前 | |
[flang] Improve OpenACC SELF clause parser (#135883) The current parser can fail on "self(x * 2)" by recognizing just "x" as a one-element list of object names and then failing at a higher level because it never reached the right parenthesis. Add lookahead checks and error recovery. Fixes https://github.com/llvm/llvm-project/issues/135810. | 1 年前 | |
[flang] Improve OpenACC SELF clause parser (#135883) The current parser can fail on "self(x * 2)" by recognizing just "x" as a one-element list of object names and then failing at a higher level because it never reached the right parenthesis. Add lookahead checks and error recovery. Fixes https://github.com/llvm/llvm-project/issues/135810. | 1 年前 | |
[flang] Address OpenACC name resolution gaps (#164313) Some OpenACC parsers aren't filling in the "source" data members of parse tree nodes, or not doing so correctly; and some of those nodes are not adding their source data members to the source ranges of the current scope when being visited in name resolution, which causes SemanticsContext::FindScope() to misidentify the current scope in directive resolution when creating contexts. Further, the name resolution for a "use_device" clause isn't walking its subtrees, so some parser::Name nodes are not being resolved to Symbols. Fix these problems, and clean up resolve-directives.cpp a bit, since most Name nodes don't need to have their symbol table pointers updated now. | 9 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 11 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 2 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 2 年前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 4 年前 | ||
| 4 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 4 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 |