495344 Commits

Author SHA1 Message Date
Paul Kirth
dfe4ca9b7f
[RISCV][lld] Set the type of TLSDESC relocation's referenced local symbol to STT_NOTYPE
When adding fixups for RISCV_TLSDESC_ADD_LO and RISCV_TLSDESC_LOAD_LO,
the local label added for RISCV TLSDESC relocations have STT_TLS set,
which is incorrect. Instead, these labels should have `STT_NOTYPE`.

This patch stops adding such fixups and avoid setting the STT_TLS on
these symbols. Failing to do so can cause LLD to emit an error `has an
STT_TLS symbol but doesn't have an SHF_TLS section`. We additionally,
adjust how LLD services these relocations to avoid errors with
incompatible relocation and symbol types.

Reviewers: topperc, MaskRay

Reviewed By: MaskRay

Pull Request: https://github.com/llvm/llvm-project/pull/85817
2024-03-22 12:27:41 -07:00
Xing Xue
d394f3a162
[OpenMP][AIX] Affinity implementation for AIX (#84984)
This patch implements `affinity` for AIX, which is quite different from
platforms such as Linux.
- Setting CPU affinity through masks and related functions are not
supported. System call `bindprocessor()` is used to bind a thread to one
CPU per call.
- There are no system routines to get the affinity info of a thread. The
implementation of `get_system_affinity()` for AIX gets the mask of all
available CPUs, to be used as the full mask only.
- Topology is not available from the file system. It is obtained through
system SRAD (Scheduler Resource Allocation Domain).

This patch has run through the libomp LIT tests successfully with
`affinity` enabled.
2024-03-22 15:25:08 -04:00
Schrodinger ZHU Yifan
ee9fa38554
[libc] fix missing macro dependency in bazel (#86298)
![image](https://github.com/llvm/llvm-project/assets/20108837/94cb5718-3526-4bae-8a79-f5b1d19b352d)
2024-03-22 15:20:00 -04:00
Ulrich Weigand
4b907414d2 [SystemZ] Add support for llvm.readcyclecounter
The llvm.readcyclecounter intrinsic can be implemented via the
STORE CLOCK FAST (STCKF) instruction.
2024-03-22 20:01:02 +01:00
Aiden Grossman
50e6218132 Reland "[llvm-exegesis] Add thread IDs to subprocess memory names (#84451)"
This reverts commit 1fe9c417a0bf143f9bb9f9e1fbf7b20f44196883.

This relands commit 6bbe8a296ee91754d423c59c35727eaa624f7140.

This was causing build failures on one of the ARMv8 builders. Still not
completely sure why, but relanding it to see if the failure pops up
again. If it does, the plan is to fix forward by disabling tests on ARM
temporarily as llvm-exegesis does not currently use SubprocessMemory
on ARM.
2024-03-22 11:51:09 -07:00
Keith Smiley
80fc61270d
Revert "[bazel] Update to 7.x (#86297)" (#86325)
Reverting for
https://github.com/llvm/llvm-project/pull/86297#issuecomment-2015660662

This reverts commit ab8ace3bfd5165a8532f710f9c2d8dd40c3fac39.
2024-03-22 11:46:06 -07:00
Tom Stellard
2120f57410
Reapply [workflows] Split pr-code-format into two parts to make it more secure (#78215) (#80495)
Actions triggered by pull_request_target events have access to all
repository secrets, so it is unsafe to use them when executing untrusted
code. The pr-code-format workflow does not execute any untrusted code,
but it passes untrused input into clang-format. An attacker could use
this to exploit a flaw in clang-format and potentially gain access to
the repository secrets.
    
By splitting the workflow, we can use the pull_request target which is
more secure and isolate the issue write permissions in a separate job.
The pull_request target also makes it easier to test changes to the
code-format-helepr.py script, because the version of the script from the
pull request will be used rather than the version of the script from
main.
    
Fixes #77142
2024-03-22 11:45:51 -07:00
Craig Topper
e64e15ee59 [RISCV] Move the RISCVSchedule.td include after RISCVRegisterInfo.td. NFC
Registers shouldn't depend on the scheduler, but a scheduler
predicate could depend on a register.

This would make it possible to move VLDSX0Pred out of the SiFive7
scheduler model to RISCVSchedule.td if another model needed it.
2024-03-22 11:42:12 -07:00
Vinayak Dev
83e96977cd
[libc] Implement strfromd() and strfroml() (#86113)
Follow up to #85438.

Implements the functions `strfromd()` and `strfroml()` introduced in
C23, and unifies the testing framework for `strfrom*()` functions.
2024-03-22 11:39:53 -07:00
Job Henandez Lara
721f149596
Fix typo (#86319)
Im working on the floating point fmaximum and fminimum functions right
now in a different pr and I ran the individual tests by doing

```
ninja libc.test.src.math.smoke.<func>_test.__unit__
```
2024-03-22 11:38:51 -07:00
Kevin Frei
b1575f9082
Missed a null-ptr check in previous PR for Debuginfod testing (#86292)
@GeorgeHuyubo noticed an unchecked shared pointer result in
https://github.com/llvm/llvm-project/pull/85693/. This is the fix for
that issue.

Co-authored-by: Kevin Frei <freik@meta.com>
2024-03-22 11:22:09 -07:00
Craig Topper
fb329f1844
[Target] Move SubRegIdxRanges from MCSubtargetInfo to TargetInfo. (#86245)
I'm planning to add HwMode support to SubRegIdxRanges for RISC-V GPR
pairs. The MC layer is currently unaware of the HwMode for registers and
I'd like to keep it that way.

This information is not used by the MC layer so I think it is safe to
move it.
2024-03-22 11:15:45 -07:00
Danny Mösch
cd8286a667
[GitHub] Allow shortcut for "introductory issue" and request linking to issue in PR (#84635)
The answer to many requests in issues to be assigned to users is often
"just create a pull request". That's in contradiction to the
"introductory issue" instructions posted by the GitHub bot.

This change updates the instructions, mentioning the shortcut of "just
creating a PR". Moreover, it now explains linking PRs to issues in order
to close them automatically upon merge.
2024-03-22 18:51:44 +01:00
srcarroll
bbcfe6f431
[mlir][transform] Emit error message with emitSilenceableFailure (#86146)
The previous implementation used a `notifyMatchFailure` to emit failure
message inappropriately and then used the
`emitDefaultSilenceableFailure`. This patch changes this to use the more
appropriate `emitSilenceableFailure` with error message. Additionally a
failure test has been added.
2024-03-22 12:37:39 -05:00
Aiden Grossman
36a6afdd2c Reland "[llvm-exegesis] Refactor parent code to separate function (#86232)"
This reverts commit c3a41aac5f32475b9a0499e6e888e713763566dc.

This relands commit bd493756fa51e538575fc320aae50d75394f0567.

Apparently I forgot to update a couple values, so this change failed on
every builder that builds those sections (should be every Linux
platform) rather than something architecture specific like originally
thought. I swore I updated the values and ran check-llvm before merging.
Wondering If I forgot to push those changes...
2024-03-22 10:30:42 -07:00
Aiden Grossman
c3a41aac5f Revert "[llvm-exegesis] Refactor parent code to separate function (#86232)"
This reverts commit bd493756fa51e538575fc320aae50d75394f0567.

Causes build failures on non-X86 platforms.
https://lab.llvm.org/buildbot/#/changes/128363
2024-03-22 10:25:23 -07:00
Sacha Coppey
d2f8ba7d6d
[RISCV][NFC] Add generateMCInstSeq in RISCVMatInt (#84462)
This allows to avoid duplicating the code handling the instructions
outputted by `generateInstSeq` when emitting `MCInst`s.
2024-03-23 01:08:13 +08:00
Aiden Grossman
bd493756fa
[llvm-exegesis] Refactor parent code to separate function (#86232)
This patch refactors the parent code to a separate function in the
subprocess executor to make the code more clear and easy to follow.
2024-03-22 10:01:39 -07:00
Aaron Ballman
5184e6ad69 Removing accidental code from 527a624205748814dd9309eda7ee308b40b2359a 2024-03-22 13:01:14 -04:00
Keith Smiley
72c729f354
[bazel] Add support for --incompatible_disallow_empty_glob (#85999)
This bazel flag, that should be flipped in an upcoming release
https://github.com/bazelbuild/bazel/pull/15327, fails if globs have no
matches. This helps find libraries where you are accidentally not
including files because of typos. This change removes the various globs
that were not matching anything, and uncovered some targets that were
doing nothing because their source files were deleted. There are a few
cases where globs were intentionally optional in the case of loops that
expanded to different potential options, so those now use `allow_empty =
True`. This allows downstream consumers to also flip this flags for
their own builds, where previously this would fail in LLVM instead.

The downside to this change is that if files are added in these
relatively standard locations, manual work will have to be done to add
this patterns back. If folks prefer we could instead add `allow_empty =
True` to every glob.
2024-03-22 09:51:20 -07:00
Aaron Ballman
527a624205 [C11] Update the status of N1365 on constant expression handling
This paper is about constant expression handling in the presence of
FLT_EVAL_METHOD, which we handle via insertion of implicit cast nodes
in the AST.
2024-03-22 12:50:18 -04:00
Aaron Ballman
d2f684685a [C99] Update status of DR290, which we do not yet implement 2024-03-22 12:50:18 -04:00
Abhin P Jose
7269570e4b
Fixed build breaking due to #77178 and #86131 (#86290)
Fixed a small issue of matching pthread signature, which was causing the
build to break for the compiler-rt project after adding
-Wcast-function-type-mismatch to -Wextra dignostic group
(https://github.com/llvm/llvm-project/pull/77178 &
https://github.com/llvm/llvm-project/pull/86131).
2024-03-22 12:39:43 -04:00
Yaxun (Sam) Liu
8155ec1396
[HIP][NFC] Refactor managed var codegen (#85976)
Refactor managed variable handling in codegen so that the transformation
is done separately from registration.

This will allow the new driver to register the managed var in the linker
wrapper.
2024-03-22 12:30:02 -04:00
Orlando Cazalet-Hyams
26857582e5 Revert "[RemoveDIs] Update DIBuilder C API with DbgRecord functions [2/2] (#85657)"
This reverts commit 2091c74796b1dac68e622284c63a870b88b7554f.

Builtbot failure: https://lab.llvm.org/buildbot/#/builders/16/builds/63080
2024-03-22 16:21:50 +00:00
Keith Smiley
ab8ace3bfd
[bazel] Update to 7.x (#86297) 2024-03-22 09:04:50 -07:00
Andrzej Warzyński
01b1b0c1f7
[mlir][SVE] Add e2e for 1D depthwise WC convolution (#85225)
Follow-up for https://github.com/llvm/llvm-project/pull/81625
2024-03-22 15:53:04 +00:00
long.chen
631e54aa1a
[mlir][arith] fix wrong floordivsi fold (#83248)
Fixs https://github.com/llvm/llvm-project/issues/83079
2024-03-22 23:52:47 +08:00
Changpeng Fang
3054d0dae7
AMDGPU: Rename and add bf16 support for global_load_tr builtins (#86202)
Make the name of a clang builtin as close to the mnemonic instruction
name as possible. The data type suffix may not be enough to tell what
instruction the builtin is going to produce.
  This patch also add the bf16 support for global_load_tr_b128 builtins.
2024-03-22 08:51:53 -07:00
Orlando Cazalet-Hyams
2091c74796
[RemoveDIs] Update DIBuilder C API with DbgRecord functions [2/2] (#85657)
Follow on from #84915 which adds the DbgRecord function variants.

Update the LLVMDIBuilderInsert... functions to insert DbgRecords instead
of debug intrinsics.

    LLVMDIBuilderInsertDeclareBefore
    LLVMDIBuilderInsertDeclareAtEnd
    LLVMDIBuilderInsertDbgValueBefore
    LLVMDIBuilderInsertDbgValueAtEnd

Calling these functions will now cause an assertion if the module is in the
wrong debug info format. They should only be used when the module is in "new
debug format".

Use LLVMIsNewDbgInfoFormat to query and LLVMSetIsNewDbgInfoFormat to change the
debug info format of a module.

Please see https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-change
(RemoveDIsDebugInfo.md) for more info.
2024-03-22 15:47:40 +00:00
Amir Ayupov
ceba3a38e8
[BOLT] Add number of basic blocks to BAT
YAML profile reader checks the number of basic blocks in regular,
no-stale-matching mode. Add it to BAT.

This increases the size of BAT section to:
- large binary: 39583080 bytes (1.02x of the original),
- medium binary: 3816492 bytes (0.64x),
- small binary: 920 bytes (0.64x, no change due to alignment).

Test Plan: Updated bolt-address-translation-yaml.test

Reviewers: rafaelauler, ayermolo, maksfb, dcci

Reviewed By: rafaelauler

Pull Request: https://github.com/llvm/llvm-project/pull/86045
2024-03-22 08:46:48 -07:00
Christian Ulmann
cb300c3305
[MLIR][LLVM][SROA] Fix pointer escape through stores bug (#86291)
This commit resolves a SROA bug caused by not properly checking if a
llvm store operation writes the pointer to memory or not. Now, we do no
longer consider stores that use a slot pointer as a value to store as
fixable.
2024-03-22 16:44:06 +01:00
Amir Ayupov
b0e23639c5 [BOLT] Add BB index to BAT
Add input basic block index to BAT metadata. This addresses the case
where some basic blocks are eliminated, and output index is not equal
to the input block index. These indices are used in non-stale-matching
mode.

Increases BAT section size to:
- large binary: 39521512 bytes (1.02x original),
- medium binary: 3799988 bytes (0.64x),
- small binary: 920 bytes (0.64x).

Test Plan:
Updated bolt-address-translation{,-yaml}.test

Pull Request: https://github.com/llvm/llvm-project/pull/86044
2024-03-22 08:42:58 -07:00
Amir Ayupov
f66d631bf8 Revert "[BOLT] Add BB index to BAT (#86044)"
This reverts commit 3b3de48fd84b8269d5f45ee0a9dc6b7448368424.
2024-03-22 08:38:40 -07:00
Antonio Frighetto
6e28ecd799 [Object][ELF] Ensure offset to locate dyn section does not go past size
Validate `p_offset` in `dynamicEntries` before computing the entry offset.

Fixes: https://github.com/llvm/llvm-project/issues/85568.
2024-03-22 16:29:09 +01:00
Nick Desaulniers
4318f7e530
[libc][stdlib] initial support for __cxa_finalize (#85865)
I'm trying to break up the pieces of supporting __cxa_finalize into smaller
commits. Provide this symbol first, and make use of it from exit.

Next will be to store __dso_handle, then finally to only run callbacks that
were registered from a specific dso.

Link: #85651
Link: https://itanium-cxx-abi.github.io/cxx-abi/abi.html#dso-dtor
2024-03-22 08:28:03 -07:00
Nick Desaulniers
cdbec7baf1
[libc] fix up the use of angle includes in include/ (#86027)
Performed en-masse via:

    $ grep -rn "#include <ll" libc/include -l | \
      xargs perl -pi -e 's/#include <ll(.*)>/#include "ll$1"/'
    $ grep -rn "#include <__" libc/include -l | \
      xargs perl -pi -e 's/#include <__(.*)>/#include "__$1"/'

Link: #83463
Link: #83210
2024-03-22 08:24:08 -07:00
Wang Pengcheng
b44771f480 [RISCV] Support RISC-V Profiles in -march option (#76357)
This PR implements the draft
https://github.com/riscv-non-isa/riscv-toolchain-conventions/pull/36.

Currently, we replace specified profile in `-march` with standard
arch string.

This is recommitted as 66f88de was reverted because of failures
caused by lacking `--target` option.
2024-03-22 23:21:11 +08:00
Antonio Frighetto
6f44bb7717 [Object] Ensure header size not to underflow in OffloadBinary::create
Prevent potential integer underflows when header size is not valid.

Fixes: https://github.com/llvm/llvm-project/issues/86280.
2024-03-22 15:45:23 +01:00
Alexey Bataev
9c0a0659d4 [SLP]Fix a crash for non-profitable non-schedulable single buildvector node tree, if the threshold allows its vectorization. 2024-03-22 07:44:23 -07:00
Matthias Gehre
71db971521
[mlir][emitc] Arith to EmitC: Handle addi, subi and muli (#86120)
Important to consider that `arith` has wrap around semantics, and in C++
signed overflow is UB.
Unless the operation guarantees that no signed overflow happens, we will
perform the arithmetic in an equivalent unsigned type.
`bool` also doesn't wrap around in C++, and is not addressed here.
2024-03-22 15:39:52 +01:00
agozillon
8612fa0d84
[MLIR][OpenMP] Refactor bounds offsetting and fix to apply to all directives (#84349)
This PR refactors bounds offsetting by combining the two differing
implementations (one applying to initial derived type member map
implementation for descriptors and the other for regular arrays,
effectively allocatable array vs regular array in fortran) now that it's
a little simpler to do.

The PR also moves the utilization of createAlteredByCaptureMap into
genMapInfoOp, where it will be correctly applied to all MapInfoData,
appropriately offsetting and altering Pointer data set in the kernel
argument structure on the host. This primarily means bounds offsets will
now correctly apply to enter/exit/update map clauses as opposed to just
the Target directive that is currently the case. A few fortran runtime
tests have been added to verify this new behavior.

This PR depends on: https://github.com/llvm/llvm-project/pull/84328 and
is an extraction of the larger derived type member map PR stack (so a
requirement for it to land).
2024-03-22 15:32:39 +01:00
Aaron Ballman
d231e3b10e [C11] Add test & update status of N1282 and DR087
Our existing diagnostics for catching unsequenced modifications handles
test coverage for N1282, which is correcting the standard based on the
resolution of DR087.
2024-03-22 10:17:50 -04:00
Billy Laws
46b853a82c
[MC][COFF][AArch64] Treat ARM64EC/X as ARM64 for relocations (#86019)
Since ARM64EC/X objects use regular ARM64 relocations, any special
handling must be done for them too.
2024-03-22 15:17:06 +01:00
Hirofumi Nakamura
e54af60816
[clang-format] Added AlignConsecutiveTableGenBreakingDAGArgColons option. (#86150)
The option to specify the style of alignment of the colons inside TableGen's DAGArg.
2024-03-22 23:11:36 +09:00
David Green
f82d0187a7 [AArch64] Add a test to show incorrect latencies into Bundle instructions. NFC 2024-03-22 14:00:21 +00:00
Simon Pilgrim
a277dd82d8 [X86] vector-half-conversions.ll - add v4f16->v4i32 fptosi/fptoui test coverage 2024-03-22 13:54:42 +00:00
Orlando Cazalet-Hyams
b3f98dff75
[RemoveDIs] Load into new debug info format by default in llvm-lto and llvm-lto2 (#86271)
Directly load all bitcode into the new debug info format in `llvm-lto`
and `llvm-lto2`. This means that new-mode bitcode no longer round-trips
back to old-mode after parsing, and that old-mode bitcode gets
auto-upgraded to new-mode debug info (which is the current in-memory
default in LLVM).
2024-03-22 13:52:11 +00:00
Amir Ayupov
3b3de48fd8
[BOLT] Add BB index to BAT (#86044) 2024-03-22 06:07:17 -07:00
yronglin
31a9a4b837
[libc++] Implement LWG3528 (make_from_tuple can perform (the equivalent of) a C-style cast) (#85263)
Implement [LWG3528](https://wg21.link/LWG3528).
Based on LWG3528(https://wg21.link/LWG3528) and
http://eel.is/c++draft/description#structure.requirements-9, the
standard allows to impose requirements, we constraint
`std::make_from_tuple` to make `std::make_from_tuple` SFINAE friendly
and also avoid worse diagnostic messages. We still keep the constraints
of `std::__make_from_tuple_impl` so that `std::__make_from_tuple_impl`
will have the same advantages when used alone.

---------

Signed-off-by: yronglin <yronglin777@gmail.com>
2024-03-22 20:45:17 +08:00