- Jan 28, 2023
-
-
Noah Goldstein authored
This is just expanding the existing pattern that exists for AND/XOR/OR and gets a bit more parallelism in from the instruction sequence. Alive2: Add - https://alive2.llvm.org/ce/z/dSmPkV Sub1 - https://alive2.llvm.org/ce/z/6rpi5V Sub2 - https://alive2.llvm.org/ce/z/UfYeUd Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D141875
-
Noah Goldstein authored
Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D141874
-
Noah Goldstein authored
1. Add checks if X and/or Y are odd. The Odd values are unnecessary to the icmp: isZero(Odd * N) == isZero(N) 2. If neither X nor Y is known odd, then if X * Y cannot overflow AND if X and/or Y is non-zero, the non-zero values are unnecessary to the icmp. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D140850
-
Noah Goldstein authored
Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D140849
-
River Riddle authored
This commit restructures the sub element infrastructure to be a core part of attributes and types, instead of being relegated to an interface. This establishes sub element walking/replacement as something "always there", which makes it easier to rely on for correctness/etc (which various bits of infrastructure want, such as Symbols). Attribute/Type now have `walk` and `replace` methods directly accessible, which provide power API for interacting with sub elements. As part of this, a new AttrTypeWalker class is introduced that supports caching walked attributes/types, and a friendlier API (see the simplification of symbol walking in SymbolTable.cpp). Differential Revision: https://reviews.llvm.org/D142272
-
Michael Buch authored
Fixes build failures following https://reviews.llvm.org/D141828
-
Aart Bik authored
Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D142784
-
Peter Klausler authored
In free form, don't silently skip over an invalid space between an underscore and a kind parameter. Differential Revision: https://reviews.llvm.org/D142760
-
Peter Klausler authored
Fix a subtle bug in procedure compatibility checking with base derived types vs. their extensions to ensure that a procedure expecting an extended type cannot be associated with a pointer (or dummy procedure) to a procedure expecting a base type. subroutine s1(base); ... subroutine s2(extended) procedure(s1), pointer :: p p => s2 ! <- must be caught as an error Differential Revision: https://reviews.llvm.org/D142753
-
Michael Buch authored
**Summary** This patch makes LLDB understand the `DW_AT_default_value` on template argument DIEs. As a result, type summaries will no longer contain the defaulted template arguments, reducing noise substantially. E.g., Before: ``` (lldb) v nested (std::vector<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::allocator<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator <char> > > > > >) nested = size=0 {} ``` After: ``` (lldb) v nested (std::vector<std::vector<std::basic_string<char> > >) nested = size=0 {} ``` See discussion in https://reviews.llvm.org/D140423 **Testing** * Adjust API tests * Added unit-test Differential Revision: https://reviews.llvm.org/D141828 -
Peter Klausler authored
Ensure that non-BIND(C) separate module procedures are not defined more than once. Differential Revision: https://reviews.llvm.org/D142750
-
Peter Klausler authored
A semantic constraint on assignments in PURE subprograms (C1594) applies only to an intrinsic assignment and should not be checked in the case of a defined assignment. Differential Revision: https://reviews.llvm.org/D142748
-
Dave Lee authored
Set compiler_versions on these tests, as they fail if tested on lower compiler versions versions. Differential Revision: https://reviews.llvm.org/D142513
-
Peter Klausler authored
A subroutine that implements a defined assignment cannot have a dummy argument for its second operand (the RHS of the assignment) with the POINTER or ALLOCATABLE attributes, since the RHS of an assignment is always an expression. This problem is flagged as a fatal error in other compilers, so let's make it fatal here as well. Differential Revision: https://reviews.llvm.org/D142752
-
Artem Belevich authored
When pointers are passed within aggregates, we sometimes end up with IR that loads them as integers and the converts them back to pointers. Typically it's due to a memcpy or SROA. E.g. https://godbolt.org/z/xM3n5daaa Normally we treat all pointers passed to a CUDA kernel as global pointers and the same treatment should be applied to the pointers we load/store as integers. Differential Revision: https://reviews.llvm.org/D142664
-
Krzysztof Drewniak authored
The HIP CMake files expect to find their own dependencies and don't use or respect PATHS or HINTS, relying on CMAKE_PREFIX_PATH to contain /opt/rocm and /opt/rocm/hip . This is not great for the rest of the build. Therefore, copy the CMake prefix path, add the ROCm directories, find HIP, and reset the path to its old value. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D142391
-
Daniel Thornburgh authored
Differential Revision: https://reviews.llvm.org/D136702
-
Joseph Huber authored
Recently the `nvptx-arch` tool was added to address the lack of a similar tool for detecting locally installed NVIDIA GPUs. This patch adds similar functionality for the already existing `amdgpu-arch` tool in libc. These will be used to run tests on the user's system in the future. On a system with both GPUs installed we will just go with the first GPU detected. In the future we may want to configure the tests to run on both of them. Reviewed By: sivachandra, lntue Differential Revision: https://reviews.llvm.org/D142776
-
Joseph Huber authored
Currently this logic causes the `libcgpu.a` to be installed to the user's default triple. The GPU target isn't really true to this in a cross-compiling sense so we should just default to the regular `/lib` directory Reviewed By: sivachandra, lntue Differential Revision: https://reviews.llvm.org/D142774
-
Peter Klausler authored
More generally, don't return a successful result from Fortran::evaluate::DynamicType::MeasureSizeInBytes() when the type is polymorphic. Differential Revision: https://reviews.llvm.org/D142772
-
Siva Chandra Reddy authored
This feature will primarily by used by the runtimes build. In the runtimes build, we build libc-hdrgen once for the host and use it to build the libc for other targets. So, the host libc-hdrgen is like a prebuilt passed to the target builds. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D141426
-
Philip Reames authored
This reverts commit c549da95. Per buildbots, this was not NFC.
-
Philip Reames authored
The PRE implementation was being overly strict when checking to see if a vsetvli was removed in the current block. For instructions which don't use all the fields of VTYPE or VL, we can propagate a changed state past the first instruction with an SEW operand and remove a vsetvli later in the block. We do need to be careful now to ensure that the state convergences before the end of the block or we'd invalidate the cached data flow results. Taking a step back, we're modeling the effect of the emitVSETVLIs pass which runs just after PRE. This is unfortunate, and makes me think we should probably reevaluate doing the PRE as a post-pass instead of as surgery in the data flow phases. Doing that requires us to get more aggressive about mutating user written vsetvlis which we've tried not to do up to now, but well, maybe it's time? Anyways, that's a thought for the future, not something I'm proposing doing now. Differential Revision: https://reviews.llvm.org/D142409
-
Ben Langmuir authored
Use the name "as requested" for the path of the implemented module's modulemap file, just as we do for other modulemap file paths. This fixes fatal errors with modules where we tried to find framework headers relative to the wrong directory when imported by an implementation file of the same module. rdar://104619123 Differential Revision: https://reviews.llvm.org/D142501
-
Peiming Liu authored
This patch moves some utils into CodegenEnv class, it should make the code easier to follow and it eliminates several indirect value assignment that use `ptr**`. Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D142040
-
Philip Reames authored
Mostly to remove a special case from an upcoming patch.
-
Jonas Paulsson authored
- Global vector variables expose the vector ABI through their alignments only if they are >=16 bytes in size. - Vectors passed between functions expose the vector ABI only if they are <=16 bytes in size. LLVM test suite builds with gcc/clang now give the same gnu attributes emitted. Reviewed By: Ulrich Weigand Differential Revision: https://reviews.llvm.org/D141409
-
Tom Stellard authored
libclc requires using cmake files to detect the LLVM installation instead of llvm-config so we need to update our cmake invocation. Reviewed By: thieta Differential Revision: https://reviews.llvm.org/D142716
-
Tom Stellard authored
Reviewed By: thieta Differential Revision: https://reviews.llvm.org/D142718
-
Erich Keane authored
Fixes: #60323 https://github.com/llvm/llvm-project/issues/60323 The problem is that we are profiling the 'Expr' components directly, however when they contain an unresolved lookup, those canonicalize identically. The result was the two versions of calls to 'go' were canonicalized identically. This patch fixes this by ensuring we consider the declaration the constraint is attached to, when possible. When not, we skip the diagnostic. The result is that we are relaxing our diagnostic in some cases (Of which I couldn't come up with a reproducer), such that we might see overflows when evaluating constraints that depend on themselves in a way that they are not attached to a declaration directly, such as if they are nested requirements, though the hope is this won't be a problem, since the 'parent' named constraint would catch this. I'm hopeful that the 'worst case' is that we catch recursion 'later' in the process, instead of immediately.
-
Tom Stellard authored
Reviewed By: thieta Differential Revision: https://reviews.llvm.org/D142719
-
Piotr Zegar authored
When portability-simd-intrinsics.Suggest were set to false, produced warning were missing source location, and due to that such warning coudn't be NOLINTed. Added missing tests. Fixes issues: https://github.com/llvm/llvm-project/issues/52831 Differential Revision: https://reviews.llvm.org/D142565
-
Tom Stellard authored
Reviewed By: thieta Differential Revision: https://reviews.llvm.org/D142720
-
Amir Ayupov authored
Preemptively include clang-bolt target in BOLT-PGO CMake cache file, in preparation of https://reviews.llvm.org/D139454 to avoid breaking bolt-x86_64-ubuntu-clang-bolt-lto-pgo buildbot.
-
Jorge Gorbe Moya authored
`SBSection::GetSectionData` and `Section::GetSectionData` are implemented differently, and the `SBSection` method doesn't handle compressed sections correctly. Differential Revision: https://reviews.llvm.org/D142672
-
Arthur Eubanks authored
It builds but not all tests pass, mostly due to missing libbolt_rt_instr.a. Reviewed By: thakis Differential Revision: https://reviews.llvm.org/D141881
-
Qiao Zhang authored
Fix tsan problem where the per-thread shared_ptr() can be locked right before the cache is destroyed causing a race where it tries to remove an entry from a destroyed cache. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D142394
-
Jason Molenda authored
The description for disable-language-runtime-unwindplans did not include likely search terms ("backtrace", "stack"), rewrite it to include those so it is more easily discoverable with apropos. The text is still not the clearest description of what a language runtime is / what it might do, but this is better. Differential Revision: https://reviews.llvm.org/D142663 -
Jason Molenda authored
It is possible to have a memory-only mach-o corefile, with the threads provided by an os-plugin thread provider, or a scripted process, in Python. Differential Revision: https://reviews.llvm.org/D142662 rdar://102579544
-
Joseph Huber authored
Summary: This patch adds support for `--[no-]whole-archive` to the linker wrapper. This allows us to bypass the symbol resolution logic that is normally used for static archives. For multi-architecture binaries this also allows us to build for every single member.
-