495344 Commits

Author SHA1 Message Date
Alexey Bataev
59ff907fc1 [SLP]Fix PR85082: PHI node has multiple entries.
Need to record casted extractelement for the externally used scalar, not
original extract instruction.
2024-03-13 08:14:10 -07:00
Nikita Popov
628a79dad3 [InstCombine] Don't generate crash dialog for fixpoint verification failure (NFC)
Fixpoint verification failures outside our tests are usually not
indicative of a bug -- don't be pushy about having people report them.
2024-03-13 16:11:11 +01:00
Jon Roelofs
3c227a31dd
[cmake] Silence a duplicate libraries warning from Apple's linker (#85012)
ld: warning: ignoring duplicate libraries:

This triggers quite frequently in llvm's build because CMake's library
depends mechanism doesn't de-duplicate libraries on the link line.
Duplication is necessary for ELF platforms, but means something subtly
different on Darwin platforms, hence the warning. Since we don't have
much control over that from CMake, just disable the warning wholesale
whenever the linker is detected to support it.
2024-03-13 08:02:22 -07:00
Tom Eccles
f46f5a01f4
[flang][OpenMP][OMPIRBuilder][mlir] Optionally pass reduction vars by ref (#84304)
Previously reduction variables were always passed by value into and out
of the initialization and combiner regions of the OpenMP reduction
declare operation.

This worked well for reductions of primitive types (and might perform
better than passing by reference). But passing by reference will be
useful for array and derived type reductions (e.g. to move allocation
inside of the init region).

Passing reductions by reference requires different LLVM-IR generation
when lowering from MLIR because some of the loads/stores/allocations
will now be moved inside of the init and combiner regions. This
alternate code generation is requested using a new attribute to
omp.wsloop and omp.parallel.

Existing lowerings from mlir are unaffected (these will continue to use
the by-value argument passing.

Flang will continue to pass by-value argument passing for trivial types
unless a (hidden) command line argument is supplied. Non-trivial types
will always use the by-ref lowering.

Array reductions are not ready yet (but are coming very soon). In the
meantime, this is tested by forcing existing reductions to use by-ref.

Commit series for by-ref OpenMP reductions 3/3

---------

Co-authored-by: Mats Petersson <mats.petersson@arm.com>
2024-03-13 14:51:09 +00:00
Simon Pilgrim
f18d78b477 [DAG] isKnownToBeAPowerOfTwo - use sd_match to match both commutations of x & -x pattern`. NFC.
Allows us to remove some tricky commutation matching
2024-03-13 14:47:36 +00:00
Simon Pilgrim
63180ba444 [DAG] Use SelectionDAG::getNOT helper where possible. NFC. 2024-03-13 14:47:35 +00:00
David Spickett
4e49ee55c5 [lldb][Test] Disable ConcurrentVFork tests on Arm/AArch64 Linux
They are either flaky, or not cleaning up after themselves.
See https://github.com/llvm/llvm-project/issues/85084.
2024-03-13 14:30:40 +00:00
Florian Hahn
1402c016ff
[VPlan] Use VPBuilder to create BranchOnCond in VPHCFGBuilder.
This simplifies the code to create the recipe slightly as well as
properly retaining the debug location of the input IR.
2024-03-13 14:30:09 +00:00
Zaara Syeda
37b5eb0a0a
[AIX][TOC] Add -mtocdata/-mno-tocdata options on AIX (#67999)
This patch enables support that the XL compiler had for AIX under
-qdatalocal/-qdataimported.
2024-03-13 10:26:31 -04:00
Zepp
e77324decf
[Clang] [Docs] Add reference to documentation of SysVABIAttr (#85022)
We for some reason already had documentation for this attribute, but just weren’t linking to it.
2024-03-13 15:25:29 +01:00
David Spickett
eb21ee49cf [lldb][test] Disable other runlocker test on AArch64 Linux
Flaky on the bot: https://lab.llvm.org/buildbot/#/builders/96/builds/54435
2024-03-13 14:15:30 +00:00
mahesh-attarde
390f28702f
[CodeGen][Tablegen] Fix uninitialized var and shift overflow. (#84896)
Fix uninitialized var and shift overflow.
2024-03-13 22:03:15 +08:00
Sirraide
2cf2bc472d
[Clang] [CodeGen] Fix codegen bug in constant initialisation in C23 mode (#84981)
Consider the following code:
```c
bool const inf =  (1.0/0.0);
``` 

When trying to emit the initialiser of this variable in C23, we end up
hitting a code path in codegen in `VarDecl::evaluateValueImpl()` where
we check for `IsConstantInitialization && (Ctx.getLangOpts().CPlusPlus
|| Ctx.getLangOpts().C23)`, and if that is the case and we emitted any
notes, constant evaluation fails, and as a result, codegen issues this
error:
```
<source>:1:12: error: cannot compile this static initializer yet
    1 | bool const inf =  (1.0/0.0);
      |        
```

As a fix, only fail in C23 mode if we’re initialising a `constexpr`
variable.

This fixes #84784.
2024-03-13 14:59:55 +01:00
Jake Egan
424e0a825f
[ClangRepl] Add missing hashtag
Hashtag missing from commit 960b4aa6dab69125778f230c4c94f2d19c96cc87
2024-03-13 09:57:31 -04:00
Jake Egan
960b4aa6da
[AIX][ClangRepl] Disable new test on AIX
This new test fails on the AIX bot with error `LLVM ERROR: Incompatible object format!`. Disable for now to investigate.

Same as 86337beca2e6f939127cd3e088ec80c0cf4a0a64.
2024-03-13 09:54:35 -04:00
Yingwei Zheng
83d178843f
[InstCombine] Set zero_is_poison for ctlz/cttz if they are only used as shift amounts (#85035)
Alive2: https://alive2.llvm.org/ce/z/r-67t9

It would improve the codegen if the target doesn't provide a defined
value for ctlz/cttz with zero.
2024-03-13 21:52:40 +08:00
NagyDonat
e48d5a838f Reapply "[analyzer] Accept C library functions from the std namespace"
This reapplies f32b04d4ea91ad1018c25a1d4178cc4392d34968i, after fixing
the use-after-free of ASTUnit in the unittest.
https://github.com/llvm/llvm-project/pull/84469#issuecomment-1992163439

Co-authored-by: Balazs Benics <benicsbalazs@gmail.com>
2024-03-13 14:48:42 +01:00
Jay Foad
9fa8660203 [AMDGPU] Test new GFX12 opcode name buffer_atomic_min_num_f32
The old name buffer_atomic_min_f32 is still tested as part of the alias
tests.
2024-03-13 13:11:45 +00:00
Matt Arsenault
5c3d001668
AMDGPU: Don't use table for metadata docs, and fix section headers (#85046) 2024-03-13 18:34:23 +05:30
Louis Dionne
9e406ef4f4
[libc++] Remove _LIBCPP_ENABLE_NARROWING_CONVERSIONS_IN_VARIANT (#83928)
This was slated for removal in LLVM 19.
2024-03-13 09:00:53 -04:00
Jacek Caban
2037577768
[llvm-ar] Use COFF archive format for COFF targets. (#82898)
Detect COFF files by default and allow specifying it with --format
argument.

This is important for ARM64EC, which uses a separated symbol map for EC
symbols. Since K_COFF is mostly compatible with K_GNU, this shouldn't
really make a difference for other targets.

This originally landed as #82642, but was reverted due to test failures
in tests using no symbol table. Since COFF symbol can't express it,
fallback to GNU format in that case.
2024-03-13 13:27:20 +01:00
Yingwei Zheng
c18e1215c4
[InstCombine] Simplify zext nneg i1 X to zero (#85043)
Alive2: https://alive2.llvm.org/ce/z/Wm6kCk
2024-03-13 20:15:29 +08:00
Harald van Dijk
ceb744eb2f
[AMDGPU] Fix canonicalization of truncated values. (#83054)
We were relying on roundings to implicitly canonicalize, which is
generally safe, except with roundings that may be optimized away.

Fixes #82937.
2024-03-13 12:08:39 +00:00
Jay Foad
7cd61f888c [AMDGPU] Remove unneeded MnemonicAlias. NFC.
This is unneeded because MUBUF_Real_Atomic_gfx11_gfx12 on the line above
generates it automatically.
2024-03-13 12:03:41 +00:00
Simon Pilgrim
a7af53e99b [DAG] visitSUB - convert some folds to use SDPatternMatch
General cleanup and allows us to handle several commutable matches with a single pattern
2024-03-13 12:00:24 +00:00
Jonathan Thackray
99be3875fb
[ARM][AArch64] Add missing Arm CPU part-ids to enable -mcpu=native (#84899)
Update Host.cpp with some missing Arm CPU part identifiers,
to enable `-mcpu=native` on these processors. These are found in
the Technical Reference Manuals listed under "part num" or "part no"
2024-03-13 11:19:32 +00:00
Simon Pilgrim
560d7c51fd [DAG] Add SDPatternMatch m_And/m_Or/m_Xor matchers for logic ops 2024-03-13 11:13:37 +00:00
dyung
5a744776bb
Mark test as XFAIL that started failing after 418f0066eb. (#85027)
Similar failures were previously seen and XFAILed in
https://reviews.llvm.org/D118468.

See the phabricator review for a description of the problem, and the
linked discourse thread for what the failing output looks like.

This change should fix the issue on two buildbots that are running older
versions of GDB:
- https://lab.llvm.org/buildbot/#/builders/217/builds/37559
- https://lab.llvm.org/buildbot/#/builders/247/builds/15173
2024-03-13 11:10:03 +00:00
Nikita Popov
e4b27359fd [ThinLTO] Drop inrange attribute from tests (NFC)
The inrange attribute is not relevant to the optimizations being
tested here. Additionally, all the inrange attributes in these
files don't actually carry any additional information, as the
"range" covers the whole object.
2024-03-13 11:53:35 +01:00
Nikita Popov
20b15e645c [Tests] Drop inrange attribute from some tests (NFC)
These don't actually test anything related to inrange, so drop the
attribute.
2024-03-13 11:49:16 +01:00
Florian Hahn
995d1d114e
[SjLjEHPrepare] Use inverse_depth_first() instead of _ext variant (NFC). (#84920)
inverse_depth_first df_iterator_default_set as default set, so there's
no need to explicitly use inverse_depth_first_ext.

PR: https://github.com/llvm/llvm-project/pull/84920
2024-03-13 09:47:16 +00:00
David CARLIER
e371ada409
[compiler-rt] reimplements GetMemoryProfile for netbsd. (#84841)
The actual solution relies on the premise /proc/self/smaps existence.
instead relying on native api like freebsd.
fixing fuzzer build too.
2024-03-13 09:25:43 +00:00
mikaelholmen
2d62ce4beb
[ValueTracking] Remove faulty dereference of "InsertBefore" (#85034)
In 2fe81edef6f
 [NFC][RemoveDIs] Insert instruction using iterators in Transforms/
we changed
       if (*req_idx != *i)
         return FindInsertedValue(I->getAggregateOperand(), idx_range,
-                                 InsertBefore);
+                                 *InsertBefore);
     }
but there is no guarantee that is InsertBefore is non-empty at that
point,
which we e.g can see in the added testcase.

Instead just pass on the optional InsertBefore in the recursive call to
FindInsertedValue, as we do at several other places already.
2024-03-13 09:58:47 +01:00
lcvon007
676c495195
[Attributor][FIX] Register right new created BB. (#84929)
CBBB will keep same after the first iteration so
registerManifestAddedBasicBlock would always register the same basic
block later.

Co-authored-by: laichunfeng <laichunfeng@tencent.com>
2024-03-13 16:38:48 +08:00
AtariDreams
06c06e15f4
[Float2Int] Resolve FIXME: Pick the smallest legal type that fits (#79158)
Pick the type based on the smallest bit-width possible, using
DataLayout.
2024-03-13 09:23:04 +01:00
Sander de Smalen
e42e97a4ad
[AArch64][SME] Don't mark 'smstart za' as using/defining VG. (#84775)
VG is only used/defined when changing the streaming mode, using 'smstart
sm' or plainly 'smstart' (same for smstop).
2024-03-13 08:21:33 +00:00
Haojian Wu
0be9592b00
[clang] CTAD: Respect requires-clause of the original function template for the synthesized deduction guide (#84913)
We ignored the require-clause of the original template when building the deduction guide for type-alias CTAD, this resulted in accepting code which should be rejected (see the test case). This patch fixes it, part of #84492.
2024-03-13 09:02:05 +01:00
Marco Elver
1c792d24e0
[compiler-rt] Fix interceptors with AArch64 BTI (#84061)
On AArch64 with BTI, we have to start functions with the appropriate
BTI hint to indicate that the function is a valid call target.

To support interceptors with AArch64 BTI, add "BTI c".
2024-03-13 09:01:00 +01:00
Danial Klimkin
46682f445a
Fix missing include past a38b7a432d3cbb093af9310eba5b4982dc0a0243 (#85041) 2024-03-13 09:00:09 +01:00
Aiden Grossman
1fe9c417a0 Revert "Reland "[llvm-exegesis] Add thread IDs to subprocess memory names (#84451)""
This reverts commit 8003f553a01a9a2a7eb09fe07e88f1ba9ee7d3a7.

This (and/or a related commit) was causing build failures on one of the
buildbots that needs more investigation. More information is available
at https://lab.llvm.org/buildbot/#/builders/178/builds/7015.
2024-03-13 00:49:23 -07:00
Aiden Grossman
5a4e2210bd Revert "[llvm-exegesis] Use LLVM Support to get thread ID"
This reverts commit 1c3b15e9f5bc671e40bcf5d3475f5425466754ce.

This (and/or) a related patch was causing build failures on one of the
buildbots. More information is available at
https://lab.llvm.org/buildbot/#/builders/178/builds/7015.
2024-03-13 00:48:46 -07:00
Vyacheslav Levytskyy
0a443f13b4
[SPIR-V] Add implementation of G_SPLAT_VECTOR opcode and fix invalid types processing (#84766)
This PR:
* adds support for G_SPLAT_VECTOR generic opcode that may be legally
generated instead of G_BUILD_VECTOR by previous passes of the translator
(see https://github.com/llvm/llvm-project/pull/80378 for the source of
breaking changes);
* improves deduction of types for opaque pointers.

This PR also fixes the following issues:
* if a function has ptr argument(s), two functions that have different
SPIR-V type definitions may get identical LLVM function types and break
agreements of global register and duplicate checker;
* checks for pointer types do not account for TypedPointerType.

Update of tests:
* A test case is added to cover the issue with function ptr parameters.
* The first case, that is support for G_SPLAT_VECTOR generic opcode, is
covered by existing test cases.
* Multiple additional checks by `spirv-val` is added to cover more
possibilities of generation of invalid code.
2024-03-13 08:32:01 +01:00
Matt Arsenault
cd2f616313
AMDGPU: Use list-table for metadata table (#85024)
The table syntax for sphinx is really insufferably whitespace dependent.
I've been meaning to convert the existing attribute and intrinsic tables
to use list-table, which is less painful to merge.
2024-03-13 12:42:15 +05:30
Fangrui Song
fe1d02b08c
[sanitizer] Reject unsupported -static at link time (#83524)
Most sanitizers don't support static linking. One primary reason is the
incompatibility with interceptors. `GetTlsSize` is another reason.
asan/memprof use `__interception::DoesNotSupportStaticLinking`
(`_DYNAMIC` reference) to reject -static at link time. Port this
detector to other sanitizers. dfsan actually supports -static for
certain cases. Don't touch dfsan.
2024-03-12 23:09:36 -07:00
Chuanqi Xu
4d62929852 [C++20] [Modules] Disambuguous Clang module and C++20 Named module further
This patch tries to make the boundary of clang module and C++20 named
module more clear.

The changes included:

- Rename `TranslationUnitKind::TU_Module` to
  `TranslationUnitKind::TU_ClangModule`.
- Rename `Sema::ActOnModuleInclude` to `Sema::ActOnAnnotModuleInclude`.
- Rename `ActOnModuleBegin` to `Sema::ActOnAnnotModuleBegin`.
- Rename `Sema::ActOnModuleEnd` to `Sema::ActOnAnnotModuleEnd`.
- Removes a warning if we're trying to compile a non-module unit as
  C++20 module unit. This is not actually useful and makes (the future)
  implementation unnecessarily complex.

This patch meant to be a NFC fix. But it shows that it fixed a bug
suprisingly that previously we would surppress the unused-value warning
in named modules. Because it shares the same logic with clang modules,
which has headers semantics. This shows the change is meaningful.
2024-03-13 13:57:52 +08:00
Fangrui Song
0d98582c8b [llvm-objcopy] Remove unneeded #include. NFC 2024-03-12 22:31:06 -07:00
Fangrui Song
53613044dd [llvm-objcopy] Use SmallVector to make some structs smaller. NFC 2024-03-12 22:28:32 -07:00
Vitaly Buka
deebf6b312 [tsan] Disabled test dead locking on glibc-2.38
https://github.com/google/sanitizers/issues/1733
2024-03-12 22:22:54 -07:00
Petr Hosek
a0283987d0
[libc] Include additional baremetal entrypoints (#85020)
These functions are usable on embedded platforms and are sometimes used
in various baremetal projects.
2024-03-12 21:33:49 -07:00
Petr Hosek
e25bf70d50
[libc] Add an empty definition of mbstate_t (#84993)
We expect to eventually provide a complete implementation, but having an
empty definition is necessary to unblock the use of libc++ in embedded
environments.

See #84884 for more details.
2024-03-12 21:26:58 -07:00