- Feb 26, 2024
-
-
Jeremy Morse authored
With no debug intrinsics, correctly identifying the start of a block with iterators becomes important. We need to use the iterator-returning methods here in loop-unroll-and-jam where we're shifting PHIs around. Otherwise they can be inserted after debug-info records, leading to debug-info attached to PHIs, which is ill formed. Fixes #83000
-
Francesco Petrogalli authored
-
Krystian Stasiowski authored
[Clang][Sema] Defer instantiation of exception specification until after partial ordering when determining primary template (#82417) Consider the following: ``` struct A { static constexpr bool x = true; }; template<typename T, typename U> void f(T, U) noexcept(T::y); // #1, error: no member named 'y' in 'A' template<typename T, typename U> void f(T, U*) noexcept(T::x); // #2 template<> void f(A, int*) noexcept; // explicit specialization of #2 ``` We currently instantiate the exception specification of all candidate function template specializations when deducting template arguments for an explicit specialization, which results in a error despite `#1` not being selected by partial ordering as the most specialized template. According to [except.spec] p13: > An exception specification is considered to be needed when: > - [...] > - the exception specification is compared to that of another declaration (e.g., an explicit specialization or an overriding virtual function); Assuming that "comparing declarations" means "determining whether the declarations correspond and declare the same entity" (per [basic.scope.scope] p4 and [basic.link] p11.1, respectively), the exception specification does _not_ need to be instantiated until _after_ partial ordering, at which point we determine whether the implicitly instantiated specialization and the explicit specialization declare the same entity (the determination of whether two functions/function templates correspond does not consider the exception specifications). This patch defers the instantiation of the exception specification until a single function template specialization is selected via partial ordering, matching the behavior of GCC, EDG, and MSVC: see https://godbolt.org/z/Ebb6GTcWE. -
Jay Foad authored
For renamed instructions, there is no need to mention the new name twice on every line defining a Real.
-
Guillaume Chatelet authored
Indentified in https://github.com/llvm/llvm-project/pull/77741#pullrequestreview-1893531270
-
LLVM GN Syncbot authored
-
LLVM GN Syncbot authored
-
LLVM GN Syncbot authored
-
Timm Bäder authored
This test was broken on MacOS, see the discussion in https://github.com/llvm/llvm-project/commit/a35599b9ae5e7ad924b78c65f6348e0b711bad5d
-
Erich Keane authored
Like with 'break'/'continue', returning out of a compute construct is ill-formed, so this implements the diagnostic. However, unlike the OpenMP implementation of this same diagnostic, OpenACC doesn't have a concept of 'capture region', so this is implemented as just checking the 'scope'.
-
David Spickett authored
For whatever reason on Windows, it is not at this point. The copy of unit test we used to use would ignore failures during teardown but Python's does not.
-
David Spickett authored
This actually passes on Windows but I don't know how to convey that with an xfail without clashing with the xfail for all platforms. At least this avoids a UPASS.
-
Egor Zhdan authored
This upstreams more of the Clang API Notes functionality that is currently implemented in the Apple fork: https://github.com/apple/llvm-project/tree/next/clang/lib/APINotes This was extracted from a larger PR: https://github.com/llvm/llvm-project/pull/73017
-
Hirofumi Nakamura authored
To align colons inside TableGen !cond operators.
-
David Spickett authored
This reverts commit 1069823c. This has caused second stage timeouts when building Flang on AArch64: https://lab.llvm.org/buildbot/#/builders/179/builds/9442
-
Jay Foad authored
The name hasGDS better reflects what it is used for.
-
Samira Bazuzi authored
Reverts llvm/llvm-project#82348, which caused crashes when analyzing empty InitListExprs for unions, e.g. ```cc union U { double double_value; int int_value; }; void target() { U value; value = {}; } ``` Co-authored-by:Samira Bazuzi <bazuzi@users.noreply.github.com>
-
Balazs Benics authored
-
Jay Foad authored
Speed up disassembly by only calling tryDecodeInst for DecoderTables that make sense for the current subtarget. This gives a 1.3x speed-up on check-llvm-mc-disassembler-amdgpu in my Release+Asserts build.
-
Timm Bäder authored
Implementation looks similar to the one in the current interpreter. Except for three static assertions, test/Sema/atomic-ops.c works.
-
Timm Bäder authored
-
Petar Avramovic authored
When initializing MachineSSAUpdater save all attributes of current virtual register and create new virtual registers with same attributes. Now new virtual registers have same both register class or bank and LLT. Previously new virtual registers had same register class but LLT was not set (LLT was set to default/empty LLT). Required by GlobalISel for AMDGPU, new 'lane mask' virtual registers created by MachineSSAUpdater need to have both register class and LLT. patch 4 from: https://github.com/llvm/llvm-project/pull/73337
-
Florian Hahn authored
Additional test for https://github.com/llvm/llvm-project/pull/82922/.
-
Jeremy Morse authored
Part of removing debug-intrinsics from LLVM requires using iterators whenever we insert an instruction into a block. That means we need all instruction constructors and factory functions to have an iterator taking option, which this patch adds. The whole of this patch should be NFC: it's adding new flavours of existing constructors, and plumbing those through to the Instruction constructor that takes iterators. It's almost entirely boilerplate copy-and-paste too.
-
ostannard authored
PR #75527 fixed ARMFrameLowering to set the IsRestored flag for LR based on all of the return instructions in the function, not just one. However, there is also code in ARMLoadStoreOptimizer which changes return instructions, but it set IsRestored based on the one instruction it changed, not the whole function. The fix is to factor out the code added in #75527, and also call it from ARMLoadStoreOptimizer if it made a change to return instructions. Fixes #80287.
-
Oliver Stannard authored
This test shows the bug where LR is used as a general-purpose register on a code path where it is not spilled to the stack.
-
Timm Bäder authored
-
Jack Styles authored
[CodeGen] [ARM] Make RISC-V Init Undef Pass Target Independent and add support for the ARM Architecture. (#77770) When using Greedy Register Allocation, there are times where early-clobber values are ignored, and assigned the same register. This is illeagal behaviour for these intructions. To get around this, using Pseudo instructions for early-clobber registers gives them a definition and allows Greedy to assign them to a different register. This then meets the ARM Architecture Reference Manual and matches the defined behaviour. This patch takes the existing RISC-V patch and makes it target independent, then adds support for the ARM Architecture. Doing this will ensure early-clobber restraints are followed when using the ARM Architecture. Making the pass target independent will also open up possibility that support other architectures can be added in the future.
-
Luke Lau authored
These shufflevector chains will get combined into a n-ary concat_vectors node.
-
Orlando Cazalet-Hyams authored
llvm.dbg.labels are deleted in SpeculativelyExecuteBB so DPLabels should be too. Modify existing test to check this (NB I couldn't find a dedicated debug-info test that checks this behaviour).
-
Luke Lau authored
If the vector type is a fixed vector type, we convert it to a container scalable vector type to compute its reg class. But we need to keep the old fixed type so we create a result node with the same type. This code path is currently dead so I haven't been able to create a test case for it. But I have an upcoming patch for insert_subvector lowering that will exercise this.
-
CarolineConcatto authored
All assembly instructions that have an operand using sve_pred_enum and mistakenly use '#' in front of it would fail without an error message.
-
David Spickett authored
No idea why but this is now passing (though if it randomly fails I won't be surprised). See https://github.com/llvm/llvm-project/issues/25034 for background on the original expected fail.
-
Nikolas Klauser authored
They aren't ever used, so they can be removed.
-
Diana Picus authored
I'm about to add more tests here (downstream for now). Change-Id: Ibd5edb398f544c90e6e8b5e49b1777a407f0594a
-
David Spickett authored
On Windows the line has \r\n at the end.
-
Timm Bäder authored
We do not necessarily prepare storage for the return value when we are returning a complex value.
-
Michael Halkenhäuser authored
Since there's no `ompt_target_data_transfer_tofrom_device` (within ompt_target_data_op_t enum) or something other that conveys the meaning of inter-device data exchange we decided to indicate a Device-to-Device transfer by using: optype == ompt_target_data_transfer_from_device (=3) Hence, a device transfer may be identified e.g. by checking for: (optype == 3) && (src_device_num < omp_get_num_devices()) && (dest_device_num < omp_get_num_devices()) Fixes: #66478
-
Benjamin Maxwell authored
`op` can be null here, in which case this should just return a null value back.
-
Nathan Sidwell authored
Some CGRecordLowering functions either do not need the object or do not mutate it. Thus marking static or const as appropriate.
-