- Nov 01, 2023
-
-
Peiming Liu authored
-
Peter Klausler authored
At present, the prescanner emits an error if a source line or compiler directive, after macro replacement or not, contains a token with a non-Fortran character. In the particular case of the '!' character, the code that checks for bad character will accept the '!' if it appears after a ';', since the '!' might begin a compiler directive. This current implementation fails when a compiler directive appears after some other character that might (by means of further source processing not visible to the prescanner) be replaced with a ';' or newline. Extend the bad character check for '!' to actually check for a compiler directive sentinel instead.
-
Peter Klausler authored
Fix IsDescriptor() so that it doesn't return a false negative result that messes up compatibility checking between a separate module procedure's interface and its redundant definition (without MODULE PROCEDURE). Specifically, lower bounds just don't matter, and any upper bound that's not explicit is dispositive.
-
Alexey Bataev authored
the middle of reduction ops. Need to emit freeze instruction not only in the case, where the root is bool logical op, but also if we reduce several scalars, but unable to say precisely, if the root is bool logical op.
-
Peter Klausler authored
... when the derived type used in the structure constructor(s) is from another module and not use-associated into the current module. This came up in a test with a derived type component default initializer of "c_null_ptr", which is replaced with the expression "__builtin_c_ptr(address=0_8)"; the derived type name "__builtin_c_ptr" is not available in the current scope, and the module file would fail semantic analysis when USE'd. The best solution that I found was to extend module file generation to detect this case and handle it by inserting the right USE association to the ultimate derived type symbol, possibly with renaming to a compiler-created name in the case of a conflict. To implement this transformation, it was necessary to fix the utility evaluate::CollectSymbols() to include the derived type symbol from a structure constructor. This involved extending the expression traversal framework to visit the deri...
-
Ramkumar Ramachandra authored
To follow up on 98c90a13 (ISel: introduce vector ISD::LRINT, ISD::LLRINT; custom RISCV lowering), increase the test coverage to test the codegen of the i32-variant of lrint on RV64, and llrint on RV32.
-
Alexey Bataev authored
NFC.
-
Craig Topper authored
Use GSelect and reduce number of temporaries.
-
Peter Klausler authored
When a separate module function's definition has a redundant interface -- it's defined with MODULE FUNCTION, not MODULE PROCEDURE -- the check for result type equivalence needs to allow for character lengths that are the results of specification expressions. At present, identical-looking length specification expression don't compare equal, since they can refer to distinct dummy argument symbols. Ensure just that they are both constant or not, and if constant, that the lengths have the same value.
-
Peter Klausler authored
Name resolution takes a quick pass over the executable part of a (sub)program in search of symbols that appear to be called as procedures, so that those names don't get mistakenly converted into objects when finishing up specification part processing. This pass doesn't currently cope with symbol shadowing by nested declarations in executable constructs. This patch ensures that nested declarations for symbols that could be used in contexts that might have been parsed as function references properly shadow symbols of the same name in outer scopes.
-
Vlad Serebrennikov authored
This patch moves `VectorKind` to namespace scope, and make it complete at the point its bit-field is declared. It also converts it to a scoped enum.
-
Daniil Suchkov authored
This patch fixes a miscompile in LSR caused by incorrect inference of NUW flag for AddRec: we shouldn't infer no-wrap flags based on a comparison which doesn't fully control the loop exit.
-
Peter Klausler authored
…fter macro expansion When compiler directives (!$omp) and/or their continuations (!$omp &) are produced by macro expansion, handle those continuations. Also allow a continuation marker (&) to appear in a macro actual argument.
-
Nico Weber authored
-
Peter Klausler authored
When a derived type definition is visible by two or more names in the same scope due to USE renaming, any generic ASSIGNMENT(=) or OPERATOR() bindings in the type will produce incorrect error messages about indistinguishable specific procedures. This is due to the use of a std::vector<> to hold a sequence of symbols and some derived information for the specific procedures of the generic name. Change to a std::map<> indexed by the ultimate symbol of each specific so that duplicates cannot arise.
-
Peter Klausler authored
A recent fix (https://github.com/llvm/llvm-project/pull/66232) to interpret a hitherto unknown name whose first appearance is as the target of a procedure pointer initializer as an external procedure has led to some inapproprite warning messages if the name is later defined as an external subroutine ("X was already declared as an external"). Ensure that the EXTERNAL attribute is correctly noted as being implicit, and that it's okay that neither the Subroutine nor Function flag has yet been set for the implicit external.
-
Peter Klausler authored
As is already supported as a common extension for intrinsic functions like DIM, allow distinct kinds of integer actual arguments to the MIL-STD bit intrinsic functions IAND, IEOR, and IOR, with the kind of the result being the largest of the kinds of the operands. (Though one could make a case that IAND should return the smallest kind of its operands, that's not what other compilers do.)
-
Arthur Eubanks authored
-
Antonio Frighetto authored
2-stage AArch64 buildbot was previously failing. Fixes: https://lab.llvm.org/buildbot/#/builders/198/builds/5636.
-
Peter Klausler authored
The change https://github.com/llvm/llvm-project/pull/67361 removed submodule name symbols from the name dictionaries of their parent (sub)modules to prevent needless errors about name clashes, but these symbols still need to be checked for things like excessive length.
-
Daniel Bertalan authored
Differential Revision: https://reviews.llvm.org/D154398
-
Vlad Serebrennikov authored
This patch moves ElaboratedTypeKeyword before `Type` definition so that the enum is complete where bit-field for it is declared. It also converts it to scoped enum and removes `ETK_` prefix.
-
Mark de Wever authored
It contained 'thewarnings' without a space. It also fixes some odd formatting in the text introduced by commit dd3c26a0 Author: Tobias Hieta <tobias@hieta.se> Date: Wed May 17 10:56:49 2023 +0200 [NFC][Py Reformat] Reformat python files in clang and clang-tools-extra
-
Mehdi Amini authored
Fixing build warning.
-
Peter Klausler authored
…nversion As requested by people working on lowering: when semantics converts the contents of DATA statements into explicit object initializers, ensure that structure constructors for derived types contain explicit NULL() values for their allocatable components.
-
Mehdi Amini authored
The _mlirRegisterEverything symbol may not be built by some customers. The code here was intended to support this, but didn't properly initialize the init_module variable. This would break JAX with: NameError: free variable 'init_module' referenced before assignment in enclosing scope
-
Jade Lovelace authored
<string> doesn't use any declarations from <cstdint> and this doesn't change the transitive includes, so this is effectively a NFC cleanup.
-
Peter Klausler authored
…hecks An OPEN statement on an existing unit can imply a CLOSE of that unit; for example, OPEN(5, FILE="mydata", FORM="formatted") should implicitly close the standard input that had been preconnected to unit 5. When this happens, later checks in OPEN statement completion that apply only to existing units should be disabled.
-
Aleksandr Popov authored
Co-authored-by:Aleksandr Popov <apopov@azul.com>
-
Peter Klausler authored
When a procedure with an implicit interface is called from two call sites with distinct argument types, we emit a warning. This can lead to a lot of output when the actual argument types are differing-length character, and the warnings are less important since the procedure may well have been defined with assumed-length character dummy arguments. So let cases like CALL MYERROR('ab'); CALL MYERROR('abc') slide by without a warning. -
Philip Reames authored
-
Sander de Smalen authored
Previously we only implemented PNR -> PPR and PPR -> PNR copies.
-
Philip Reames authored
zext nneg was recently added to the IR in #67982. Teaching SCEVExpander to emit nneg when possible is valuable since SCEV may have proved non-trivial facts about loop bounds which would otherwise be lost when materializing the value.
-
Tom Eccles authored
Propagate fast math flags through complex number lowering (when lowering fir.*c directly to llvm floating point operations). The lowering path through the MLIR complex dialect is unchanged. This leads to a small improvement in spec2017 fotonik3d_r.
-
Adrian Prantl authored
-
- Oct 31, 2023
-
-
Chuanqi Xu authored
Close https://github.com/llvm/llvm-project/issues/69439. This patch tries to reuse the codes to generate make style dependencies information with P1689 format directly.
-
Sebastian Poeplau authored
The ABI parameter is used by a number of common backends, including ARM, MIPS, PPC, and RISCV. Exposing it via the C API makes it possible for users of those backends to configure the ABI without custom bindings.
-
Valentin Clement (バレンタイン クレメン) authored
-
Valentin Clement (バレンタイン クレメン) authored
A var may appear at most once in all the clauses of declare directives for a function, subroutine, program, or module. We raise an error when a var appears in two different clauses. If it is in the same clauses, we just issue a warning.
-
Paulo Matos authored
This reverts commit d56eb823.
-