- Nov 01, 2023
-
-
Ramkumar Ramachandra authored
With the recent change 98c90a13 (ISel: introduce vector ISD::LRINT, ISD::LLRINT; custom RISCV lowering), it is now possible for SLPVectorizer, LoopVectorize, and Scalarizer to operate on llvm.lrint and llvm.llrint, with vector codegen for the RISC-V target. Make a trivial change to VectorUtils, and update the corresponding tests.
-
nicole mazzuca authored
PR #69625 broke the build - I put __cdecl on the wrong side of the `*` in function pointer declarations. Lesson learned - run check-all!
-
Zequan Wu authored
Fixes #65416
-
Martin Storsjö authored
MinGW mode can also use the MSVC/UCRT math functions. On ARM/ARM64, mingw-w64 has always used the UCRT scalbn function. On x86, mingw-w64 recently changed to prefer the UCRT version for a large number of math functions.
-
Jake Egan authored
This will allow for configuring tests according to AIX version. Reviewed By: daltenty, #libc, Mordante Differential Revision: https://reviews.llvm.org/D149660
-
Tulio Magno Quites Machado Filho authored
imp got removed in Python 3.12 [1] and the community recommends using importlib in newer Python versions. [1] https://docs.python.org/3.12/whatsnew/3.12.html#imp
-
nicole mazzuca authored
This is necessary for many projects which pass `/Gz` to their compiles, which makes their default calling convention `__stdcall`. (personal note, I _really_ wish there was a pragma for this)
-
Peter Klausler authored
A recent change of mine caused a local variable to become obsolete in its function, leading to a warning with some build compilers that is fatal under -Werror, breaking a build bot. Remove the variable.
-
Peter Klausler authored
The online CUDA Fortran documentation states that a device subprogram must be a top-level module subprogram, but this has turned out to be an obsolete constraint. Stop enforcing it.
-
Roland McGrath authored
Stricter GCC warnings about implicit widening and narrowing cases necessitate additional explicit casts around some integer operations.
-
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.
-