495344 Commits

Author SHA1 Message Date
Fangrui Song
3a63f737e2 [MC] Refactor writeRelocations. NFC
MIPS is different and should better off use separate code.
2024-03-23 10:15:47 -07:00
Fangrui Song
87c7f4a12b [MC] Remove unnecessary reversal of relocations. NFC
Commit f44db24e1fd948c75c87aea017646f16553d3361 (2015) enabled this
simplication.
2024-03-23 10:03:09 -07:00
Mike Rice
d7ce6b4d96
[clang-tidy] Fix result check after overwriteChangedFiles() (#86360)
If any return from overwriteChangedFiles is true some fixes were not
applied.
2024-03-23 17:53:29 +01:00
Michał Górny
3f5e649ff6
[Libomptarget] Fix linking to LLVM dylib (#86397)
Use `LINK_COMPONENTS` parameter of `add_llvm_library` rather than
passing LLVM components directly to `target_link_libraries`, in order to
ensure that LLVM dylib is linked correctly when used. Otherwise, CMake
insists on linking to static libraries that aren't present on
distributions doing pure dylib installs, such as Gentoo.

This fixes a regression introduced
in dcbddc25250158469c5635ad2ae4095faef53dfd.
2024-03-23 15:46:32 +00:00
Nikolas Klauser
b68e2eba0b
[libc++] Vectorize mismatch (#73255)
```
---------------------------------------------------
Benchmark                           old         new
---------------------------------------------------
bm_mismatch<char>/1           0.835 ns      2.37 ns
bm_mismatch<char>/2            1.44 ns      2.60 ns
bm_mismatch<char>/3            2.06 ns      2.83 ns
bm_mismatch<char>/4            2.60 ns      3.29 ns
bm_mismatch<char>/5            3.15 ns      3.77 ns
bm_mismatch<char>/6            3.82 ns      4.17 ns
bm_mismatch<char>/7            4.29 ns      4.52 ns
bm_mismatch<char>/8            4.78 ns      4.86 ns
bm_mismatch<char>/16           9.06 ns      7.54 ns
bm_mismatch<char>/64           31.7 ns      19.1 ns
bm_mismatch<char>/512           249 ns      8.16 ns
bm_mismatch<char>/4096         1956 ns      44.2 ns
bm_mismatch<char>/32768       15498 ns       501 ns
bm_mismatch<char>/262144     123965 ns      4479 ns
bm_mismatch<char>/1048576    495668 ns     21306 ns
bm_mismatch<short>/1          0.710 ns      2.12 ns
bm_mismatch<short>/2           1.03 ns      2.66 ns
bm_mismatch<short>/3           1.29 ns      3.56 ns
bm_mismatch<short>/4           1.68 ns      4.29 ns
bm_mismatch<short>/5           1.96 ns      5.18 ns
bm_mismatch<short>/6           2.59 ns      5.91 ns
bm_mismatch<short>/7           2.86 ns      6.63 ns
bm_mismatch<short>/8           3.19 ns      7.33 ns
bm_mismatch<short>/16          5.48 ns      13.0 ns
bm_mismatch<short>/64          16.6 ns      4.06 ns
bm_mismatch<short>/512          130 ns      13.8 ns
bm_mismatch<short>/4096         985 ns      93.8 ns
bm_mismatch<short>/32768       7846 ns      1002 ns
bm_mismatch<short>/262144     63217 ns     10637 ns
bm_mismatch<short>/1048576   251782 ns     42471 ns
bm_mismatch<int>/1            0.716 ns      1.91 ns
bm_mismatch<int>/2             1.21 ns      2.49 ns
bm_mismatch<int>/3             1.38 ns      3.46 ns
bm_mismatch<int>/4             1.71 ns      4.04 ns
bm_mismatch<int>/5             2.00 ns      4.98 ns
bm_mismatch<int>/6             2.43 ns      5.67 ns
bm_mismatch<int>/7             3.05 ns      6.38 ns
bm_mismatch<int>/8             3.22 ns      7.09 ns
bm_mismatch<int>/16            5.18 ns      12.8 ns
bm_mismatch<int>/64            16.6 ns      5.28 ns
bm_mismatch<int>/512            129 ns      25.2 ns
bm_mismatch<int>/4096          1009 ns       201 ns
bm_mismatch<int>/32768         7776 ns      2144 ns
bm_mismatch<int>/262144       62371 ns     20551 ns
bm_mismatch<int>/1048576     254750 ns     90097 ns
```
2024-03-23 15:28:22 +01:00
Harvin Iriawan
57146daeaa
[CodeGen] Update for scalable MemoryType in MMO (#70452)
Remove getSizeOrUnknown call when MachineMemOperand is created.  For Scalable
TypeSize, the MemoryType created becomes a scalable_vector.

2 MMOs that have scalable memory access can then use the updated BasicAA that
understands scalable LocationSize.

Original Patch by Harvin Iriawan
Co-authored-by: David Green <david.green@arm.com>
2024-03-23 12:56:25 +00:00
Nikolas Klauser
f886dfed3a
[libc++] Don't push and pop extensions diagnostics when using clang modules (#85917)
Clang modules take a significant compile time hit when pushing and
popping diagnostics. Since all the headers are marked as system headers
in the modulemap, we can simply disable this pushing and popping when
building with clang modules.
2024-03-23 13:54:35 +01:00
Evgenii Kudriashov
d365a45cb3
[GlobalISel] Introduce G_TRAP, G_DEBUGTRAP, G_UBSANTRAP (#84941)
Here we introduce three new GMIR instructions to cover a set of trap
intrinsics. The idea behind it is that generic intrinsics shouldn't be
used with G_INTRINSIC opcode.

These new instructions can match perfectly with existing trap ISD nodes.
It allows X86, AArch64, RISCV and Mips to reuse SelectionDAG patterns for
selection and avoid manual selection. However AMDGPU is an exception. It
selects traps during legalization regardless SelectionDAG or GlobalISel.

Since there are not many places where traps are used, this change
attempts to clean up all the usages of G_INTRINSIC with trap intrinsics. So,
there is no stage when both G_TRAP and
G_INTRINSIC_W_SIDE_EFFECTS(@llvm.trap) are allowed.
2024-03-23 13:12:44 +01:00
XChy
d7c672834e [CodeGen][NFC] Update tests in AArch64/and-sink.ll 2024-03-23 19:01:33 +08:00
Muhammad Omair Javaid
f317fd266c Revert "[mlir][SVE] Add e2e for 1D depthwise WC convolution (#85225)"
This reverts commit 01b1b0c1f728e2c2639edc654424f50830295989.

Breaks following AArch64 SVE buildbots:
https://lab.llvm.org/buildbot/#/builders/184/builds/11363
https://lab.llvm.org/buildbot/#/builders/176/builds/9331
2024-03-23 15:32:46 +05:00
Owen Pan
47423e9827 [clang-format][NFC] Clean up IsQualifiedPointerOrReference in TokenAnnotator 2024-03-23 02:24:56 -07:00
Owen Pan
579dc7f844
[clang-forma] Support PointerAlignment for pointers to members (#86253)
Fixes #85761.
2024-03-23 02:03:45 -07:00
Fangrui Song
691b97c884 [ELF] Remove zero-value DT_JMPREL when IPLT is present while PLT isn't
The zero-value DT_JMPREL is benign but not needed.
This is also code simplification available after https://reviews.llvm.org/D65651
2024-03-23 01:02:08 -07:00
paperchalice
ef57977f2a
[NewPM][Hexagon] Add HexagonPassRegistry.def (#86244)
Prepare for dag-isel, also migrate some test case
2024-03-23 15:02:27 +08:00
Yingwei Zheng
2f1f6b704d
[LLVM] Use std::move for APInt. NFC. (#86257)
This patch adjusts argument passing for `APInt` to improve the
compile-time.
Compile-time improvement:
https://llvm-compile-time-tracker.com/compare.php?from=d1f182c895728d89c5c3d198b133e212a5d9d4a3&to=ba3e326def3a6e5cd6d72ff5a49c74fba18de1df&stat=instructions:u
2024-03-23 14:58:25 +08:00
Yingwei Zheng
6c1932ffd8
[LLVM] Pass APInt by const reference. NFC. (#86278)
This patch adjusts argument passing for `APInt` to improve the
compile-time.
Compile-time improvement:
https://llvm-compile-time-tracker.com/compare.php?from=d1f182c895728d89c5c3d198b133e212a5d9d4a3&to=32d6611af69bf4e76373f9bc7d9649650f760e48&stat=instructions:u
2024-03-23 14:57:35 +08:00
paperchalice
635ea257ec
[NewPM] Fix BPF build (#86379)
Add Passes in dependency list
2024-03-23 13:06:58 +08:00
paperchalice
2aa5bae0c0
[NewPM][BPF] Add BPFPassRegistry.def NFCI (#86241)
Prepare migration for dag-isel.
2024-03-23 12:53:26 +08:00
paperchalice
7ac7d418ac
[NewPM][NVPTX] Add NVPTXPassRegistry.def NFCI (#86246)
Prepare for dag-isel migration.
2024-03-23 11:20:18 +08:00
paperchalice
76fdb5902f
[NewPM][DirectX] Add DirectXPassRegistry.def NFCI (#86242)
Prepare migration for dag-isel
2024-03-23 10:37:53 +08:00
Craig Topper
84e20cb0cb [TableGen] Minor cleanup in CodeGenRegBank::getConcatSubRegIndex. NFC
Mark a variable const. Capitalize a variable name.

I'm going to add HwMode support to this code and wanted to clean it
up a bit beforehand.
2024-03-22 19:03:43 -07:00
Keith Smiley
2f6b1b4b30
[ORC] Add default visibility to required JIT functions (#86322)
If you build LLVM with `-DCMAKE_CXX_VISIBILITY_PRESET=hidden` to help
reduce binary size, these symbols end up becoming local, and getting
stripped. This forces default visibility to override the global setting
in that case.

Relevant:
https://github.com/llvm/llvm-project/issues/62815#issuecomment-1560078260
2024-03-22 21:10:21 -04:00
Corentin Jabot
b723c57f8f [Clang] Update the C++ page with papers approved in Tokyo 2024-03-23 10:04:45 +09:00
Charlie Barto
dc43aa439e
[asan][windows] When compiling with clang-cl or MSVC pass /Zl (that's a little L) (#85874)
/Zl is the equivalent of -nodefaultlibs. The idea here is to make sure
that the asan runtime doesn't have any defaultlibs directives, which
makes it easier to mix an asan runtime built with the dynamic CRT with
an application built with the static CRT (or vise-versa).

This is part of the overall effort to remove the static asan runtime on
windows entirely: https://github.com/llvm/llvm-project/pull/81677

Co-authored-by: Amy Wishnousky <amyw@microsoft.com>
2024-03-22 17:38:34 -07:00
Joseph Huber
20e0bacd05 [Libomptarget][Fix] Remove duplicate version script for host builds
Summary:
This causes an error on some linkers and was mistakenly kept in.
2024-03-22 19:09:16 -05:00
Xiaoyang Liu
c3747883a0
[libc++][ranges] use static operator() for C++23 ranges (#86052)
## Abstract

This pull request converts the `operator()` of all CPOs and niebloids
related to C++23 ranges to `static`.

## Motivation

In `libc++`, CPOs and niebloids are implemented as function objects.
Currently, the `operator()` for such a function object is a
`const`-qualified member function. This means that even if the function
object is has no data members, an extra register is used to pass in the
`this` pointer when calling `operator()`, unless the compiler can inline
the function call. Declaraing `operator()` as `static` would optimize
away the unnecessary `this` pointer passing for stateless function
objects, since there is no object instance state that needs to be
accessed.

## Reference

- [P1169R4: static `operator()`](https://wg21.link/P1169R4)
2024-03-23 00:32:02 +01:00
Philipp Tomsich
b621269d4a
[AArch64] Adjust ROBsize for Ampere1B (NFC) (#86331)
To align more closely with common usage, we now use the size of the
reorder-buffer for MicroOpBufferSize instead of the entries of the
global micro-op scheduler.
2024-03-22 16:30:12 -07:00
Philipp Tomsich
af63c6e5d0
[AArch64] Adjust ROBsize for Ampere1/Ampere1A (NFC) (#86330)
To align more closely with common usage, we now use the size of the
reorder-buffer for MicroOpBufferSize instead of the entries of the
global micro-op scheduler.
2024-03-22 16:29:58 -07:00
Jan Svoboda
b768a8c1db
[clang][deps] Lazy dependency directives (#86347)
Since b4c83a13f664582015ea22924b9a0c6290d41f5b, `Preprocessor` and
`Lexer` are aware of the concept of scanning dependency directives. This
makes it possible to scan for them on-demand rather than eagerly on the
first filesystem operation (open, or even just stat).

This might improve performance, but is also necessary for the "PCH as
module" mode. Some precompiled header sources use the ".pch" file
extension, which means they were not getting scanned for dependency
directives. This was okay when the PCH was the main input file in a
separate scan step, because there we just lex the file in a
scanning-specific frontend action. But when such source gets treated as
a module implicitly loaded from a TU, it will get compiled as any other
module - with Sema - which will result in compilation errors. (See
attached test case.)

rdar://107663951
2024-03-22 16:09:34 -07:00
Fabian Tschopp
5d187898f6
[mlir][inliner] Return early if the inliningThreshold is 0U or -1U. (#86287)
Computing the inlinling profitability can be costly due to walking the
graph when counting the number of operations.

This PR addresses that by returning early if the threshold is set to
never or always inline.
2024-03-23 00:09:11 +01:00
Daniel M. Katz
0024875417
[Clang] Raise an error on namespace aliases with qualified names. (#86122) 2024-03-23 00:08:02 +01:00
Muhammad Omair Javaid
7fc2fbb3f1 Revert "DebugInfoD tests + fixing issues exposed by tests (#85693)"
This reverts commit 6d939a6ec69adf284cdbef2034b49fd02ba503fc.

This broke following LLDB bots:
https://lab.llvm.org/buildbot/#/builders/96/builds/54867
https://lab.llvm.org/buildbot/#/builders/17/builds/50824
2024-03-23 03:31:56 +05:00
Muhammad Omair Javaid
4406e4a8bd Revert "Missed a null-ptr check in previous PR for Debuginfod testing (#86292)"
This reverts commit b1575f9082071702bd6aaa2600ce9fe011a091e9.
2024-03-23 03:31:25 +05:00
Usama Hameed
3bc71c2abf
Get the linker version and pass the it to compiler-rt tests on Darwin. (#86220)
The HOST_LINK_VERSION is a hardcoded string in Darwin clang that detects
the linker version at configure time. The driver uses this information
to build the correct set of arguments for the linker. This patch detects
the linker version again during compiler-rt configuration and passes it
to the tests. This allows a clang built on a machine with a new linker
to run compiler-rt tests on a machine with an old linker.

rdar://125198603
2024-03-22 15:29:36 -07:00
Maksim Panchenko
51268a57fd
[BOLT] Enable --keep-nops option for Linux kernel by default (#86349)
Preserve nop instructions in the Linux kernel since they could be used
for runtime patching.
2024-03-22 15:29:26 -07:00
Maksim Panchenko
56197d732e
[BOLT] Skip functions with unsupported Linux kernel features (#86345)
Do not overwrite functions with alternative and paravirtual instructions
until a proper update support is implemented.
2024-03-22 15:28:54 -07:00
Yeoul Na
b1e97d60bd
Unwrap CountAttributed for debug info (#86017)
Fix crash caused by 3eb9ff30959a670559bcba03d149d4c51bf7c9c9
2024-03-23 07:26:35 +09:00
Vitaly Buka
362d26366d
[tsan] Process SIGPROF as sync signal only if thread is alive (#86343)
Otherwise it may crash too early.

This is followup to #85188
2024-03-22 15:24:44 -07:00
Vitaly Buka
0ba678a53d
[tsan] Set thr->is_inited after SlotAttachAndLock (#86342)
Almost NFC.

This is symmetrical to `ThreadFinish`, which
resets the slot after `is_inited`.
2024-03-22 15:12:09 -07:00
Vitaly Buka
913e29966b
[NFC][tsan] Use the result of placement new (#86341) 2024-03-22 15:11:26 -07:00
Patrick O'Neill
4652ec0e29
[SLP] Delete vectorized users when tree contains an invalid cost (#86344) 2024-03-22 17:52:27 -04:00
Ellis Hoag
5d0d9eb52d
[NFC][BP] Remove unused parameter from function (#86333)
Remove the unused parameter `RecDepth` from `runIterations()`.
2024-03-22 14:47:31 -07:00
Joseph Huber
85af772f3b [Libomptarget][FIX] Fix unintentinally used PUBLIC interface
Summary:
This was supposed to be private and caused some issues with certain
configs.
2024-03-22 16:38:51 -05:00
Keith Smiley
14be4930c1
[bazel] Make compiler-rt analyze on macOS (#86001)
Previously the select above would fail for non-linux platforms if you
did a `bazel build @llvm-project//...`, now this target specifies that
it's only supported on the linux platform through bazel's
`target_compatible_with` feature. This makes all targets in the tree be
ignored when building on incompatible platforms (and fail if built
directly)
2024-03-22 14:17:51 -07:00
Florian Mayer
215f105ca5
[MTE] Fix test (#85875)
llc runs the stack tagging instrumentation, so if we run opt before, we
double instrument
2024-03-22 14:14:43 -07:00
Joseph Huber
dcbddc2525
[Libomptarget] Unify and simplify plugin CMake (#86191)
Summary:
This patch reworks the CMake handling for building plugins. All this
does is pull a lot of shared and common logic into a single helper
function.
This also simplifies the OMPT libraries from being built separately
instead of just added.
2024-03-22 16:13:58 -05:00
Alexander Yermolovich
f3cfe016c5
[BOLT][DWARF] Add support for cross-cu references for debug-names (#86015)
The DW_AT_abstract_origin can be a cross-cu reference as a by-product of
LTO. On IR level for absolute references an address is stored, vs a DIE
for relative references. Added a map to keep track of cross-cu
referenced DIEs to use when we add an Entry.
2024-03-22 13:48:49 -07:00
Alexander Yermolovich
105feb9ac6
[BOLT][DWARF] Fix handling of DW_TAG_label (#86182)
For DWARF5 BOLT was not retreiving address and instead was setting an
index.
Changed so that an address is used, and added DWARF4 test because it was
missing.
2024-03-22 13:41:27 -07:00
Mariusz Borsa
19268ac551
[Sanitizers][Darwin] Bump up DEFAULT_SANITIZER_MIN_OSX_VERSION (#86035)
The greendragon was recently moved and now it runs on somewhat newer
macOS
version - which breaks some sanitizers tests

rdar://125052915

Co-authored-by: Mariusz Borsa <m_borsa@apple.com>
2024-03-22 13:36:17 -07:00
Valentin Clement (バレンタイン クレメン)
e9639e9c06
[flang][NFC] Extract FIROpConversion to its own files (#86213)
This PR extracts `FIROpConversion` and `FIROpAndTypeConversion`
templated base patterns to a header file. All the functions from
FIROpConversion that do not require the template argument are moved to a
base class named `ConvertFIRToLLVMPattern`.
This move is done so the `FIROpConversion` pattern and all its utility
functions can be reused outside of the codegen pass.

For the most part the code is only moved to the new files and not
modified. The only update is that addition of the PatternBenefit
argument with a default value to the constructor so it can be forwarded
to the `ConversionPattern` ctor.

This split is done in a similar way for the `ConvertOpToLLVMPattern`
base pattern that is based on the `ConvertToLLVMPattern` base class in
`mlir/include/mlir/Conversion/LLVMCommon/Pattern.h`.
2024-03-22 12:56:45 -07:00