495344 Commits

Author SHA1 Message Date
Jason Eckhardt
5e6bb1fb88
[TableGen][Target] Add documentation to Constraints. (#85951)
This patch adds some basic documentation for `Constraints`, along with
some "see also" pointers for backend writers to learn more.
2024-03-20 12:56:49 -05:00
Vinayak Dev
5ea152033e
[libc]: Implement strfromf() and shared utilities (#85438)
Fixes #84244.

Implements the function `strfromf()` introduced in C23, and adds shared
utilities for implementation of other `strfrom*()` functions, including
`strfromd()` and `strfroml()`.
2024-03-20 10:47:35 -07:00
Alex Langford
10b0e35537
[lldb] Invert relationship between Process and AddressableBits (#85858)
AddressableBits is in the Utility module of LLDB. It currently directly
refers to Process, which is from the Target LLDB module. This is a
layering violation which concretely means that it is impossible to link
anything that uses Utility without it also using Target as well. This is
generally not an issue for LLDB (since everything is built together) but
it may make it difficult to write unit tests for AddressableBits later
on.
2024-03-20 10:46:06 -07:00
Craig Topper
d42992e71c [RISCV] Cleanup setOperationAction for ISD::BITCAST with Zfa and D extension. NFC
We only need Custom handling for i64 on RV32. This will be used by
type legalization. We don't need to make it custom for f64 to get
type legalization to custom split i64.

If f64 and i64 are legal types, then ISD::BITCAST should be legal.
2024-03-20 10:43:54 -07:00
Alex Langford
66a2ed50cc
[lldb] Remove process restart prompt from TestSourceManager (#85861)
In TestSourceManager, test_artificial_source_location will give the
process restart prompt if you run the test individually. The reason is
that we run the process twice: first using a convenience function to run
to a specific breakpoint and then again to check for a specific message
emitted when you hit the breakpoint. Instead of running twice and making
the test difficult to run individually, we can just check for the
specific messages using other commands.
2024-03-20 10:43:40 -07:00
Augie Fackler
49c3e78961 [bazel] add missing dependency for 2137894a6f5475e51c541b6d16e8902125a8f002 2024-03-20 13:33:35 -04:00
Fangrui Song
721e8f366f [ELF] Improve unknown -z test 2024-03-20 10:26:15 -07:00
AdityaK
b20360abeb
clang driver: enable fast unaligned access for Android on RISCV64 (#85704)
Android CTS test already requires fast unaligned access
https://android-review.googlesource.com/c/platform/cts/+/2675633
2024-03-20 10:15:23 -07:00
Job Henandez Lara
b754e6f690
Fix typo (#85869) 2024-03-20 10:13:45 -07:00
Stephen Tozer
decd88ef05 [RemoveDIs][NFC] Delete a now-redundant comment
Submitted without review for being a trivial comment-only change, deletes
a line that requests the DbgLabelRecord class be renamed to DbgLabelRecord
in the future.
2024-03-20 17:05:31 +00:00
Simon Pilgrim
25d61be8a5 [X86] avx-shuffle-builtins.c - limit to x86 targets
Attempt to fix issue with non-x86 buildbots (sorry its blind but I can't test this)
2024-03-20 16:59:11 +00:00
Fangrui Song
0e47dfede4
[ELF] Add isStaticRelSecType to simplify SHT_REL/SHT_RELA testing. NFC
and make it easier to introduce a new relocation format.

https://discourse.llvm.org/t/rfc-relleb-a-compact-relocation-format-for-elf/77600

Pull Request: https://github.com/llvm/llvm-project/pull/85893
2024-03-20 09:58:56 -07:00
Alexandros Lamprineas
9cb5004209
Reland [FMV] Emit the resolver along with the default version definit… (#85923)
…ion.

This was reverted because the resolver didn't look as expected in one of
the tests. I believe it had some interaction with #84146. I have now
regenerated it using -target-feature -fp-armv8.
2024-03-20 16:49:51 +00:00
Eric Li
a6a6066290
[clang][dataflow] Fix crash when analyzing a coroutine (#85957)
A coroutine function body (`CoroutineBodyStmt`) may have null children,
which causes `isa` to segfault.
2024-03-20 12:45:30 -04:00
Thurston Dang
1b5b4eebb6
[memprof] Move allocator base to avoid conflict with high-entropy ASLR (#85834)
memprof often fails when ASLR entropy is too high ('sudo sysctl
vm.mmap_rnd_bits=32; ninja check-memprof'), which is the default setting
for newer versions of Ubuntu
(https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy/commit/?h=hwe-6.5-next--2024.03.04-1--auto&id=6b522637c6a7dabd8530026ae933fb5ff17e877f).
This patch fixes the issue by moving the allocator base, analogously to
ASan (https://reviews.llvm.org/D148280).

Explanation from the ASan patch: when CONFIG_ARCH_MMAP_RND_BITS == 32,
it will frequently conflict with memprof's allocator, because the PIE
program segment base address of 0x555555555554 plus an ASLR shift of up
to ((2**32) * 4K == 0x100000000000) will sometimes exceed memprof's
hardcoded base address of 0x600000000000. We fix this by simply moving
the allocator base to 0x500000000000, which is below the PIE program
segment base address. This is cleaner than trying to move it to another
location that is sandwiched between the PIE program and library
segments, because if either of those grow too large, it will collide
with the allocator region.

Note that we will never need to change this base address again (unless
we want to increase the size of the allocator), because ASLR cannot be
set above 32-bits for x86-64 Linux (the PIE program segment and library
segments would collide with each other; see also ARCH_MMAP_RND_BITS_MAX
in https://github.com/torvalds/linux/blob/master/arch/x86/Kconfig).
2024-03-20 09:19:20 -07:00
Will Hawkins
12028cb1da
[DwarfGenerator] Calculate relative offset according to Dwarf Version (#84847)
The relative offset for a CU in Dwarf v5 (and later) is different than
the relative offset for a CU in Dwarf v4 (and before).

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2024-03-20 09:18:31 -07:00
Martin Storsjö
407937036f Revert "[libcxx] [modules] Fix relative paths with absolute LIBCXX_INSTALL_MODULES_DIR (#85756)"
This reverts commit 272d1b44efdedb68c194970a610f0ca1b7b769c5,
and the follow-up fix in d209d1340b99d4fbd325dffb5e13b757ab8264ea.

Even after the follow-up fix, building with an empty
CMAKE_INSTALL_PREFIX errors out with errors like this:

    CMake Error at /b/s/w/ir/x/w/llvm-llvm-project/libcxx/modules/CMakeLists.txt:215 (file):
      file RELATIVE_PATH must be passed a full path to the directory:
      lib/x86_64-pc-windows-msvc
2024-03-20 18:06:31 +02:00
Stephen Tozer
75dfa58ea9
[RemoveDIs][NFC] Rename DPMarker->DbgMarker (#85931)
Another trivial rename patch, the last big one for now, which renamed
DPMarkers to DbgMarkers. This required the field `DbgMarker` in
`Instruction` to be renamed to `DebugMarker` to avoid a clash, but
otherwise was a simple string substitution of `s/DPMarker/DbgMarker` and
a manual renaming of `DPM` to `DM` in the few places where that acronym
was used for debug markers.
2024-03-20 16:00:10 +00:00
Steven Varoumas
eb861acd49
[mlir][python] Enable python bindings for Index dialect (#85827)
This small patch enables python bindings for the index dialect.

---------

Co-authored-by: Steven Varoumas <steven.varoumas1@huawei.com>
2024-03-20 16:56:22 +01:00
Martin Storsjö
d209d1340b [libcxx] [cmake] Fix cmake_path(ABSOLUTE_PATH) for empty CMAKE_INSTALL_PREFIX
This should hopefully fix the issue brought up at
https://github.com/llvm/llvm-project/pull/85756#issuecomment-2009852291.
2024-03-20 17:50:12 +02:00
Jonas Paulsson
9ebd329ad8 Revert "Move assertion for AdjustsStack from PEI to MachineVerifier. (#85698)"
This reverts commit 05bde30585710a51592eee0a6cf6df8184d09c92.

Reverting due to verifier complaints with expensive checks on build-bot.
2024-03-20 11:48:30 -04:00
Tom Eccles
3deaa77f1a
[flang][OpenMP] simplify getReductionName (#85666)
Re-use fir::getTypeAsString instead of creating something new here. This
spells integer names like i32 instead of i_32 so there is a lot of test
churn.
2024-03-20 15:47:00 +00:00
Craig Topper
576d81baa5
[RISCV] Use REG_SEQUENCE/EXTRACT_SUBREG to move between individual GPRs and GPRPair. (#85887)
Previously we used memory like we do to move between GPRs and FPR64 with
the D extension on RV32.

We can instead use REG_SEQUENCE/EXTRACT_SUBREG to inform register
allocation how to do the copy without memory.
2024-03-20 08:44:24 -07:00
Thomas Lively
767e0c8bce
[WebAssembly] Select BUILD_VECTOR with large unsigned lane values (#85880)
Previously we expected lane constants to be in the range of signed
values for each lane size, but the included test case produced large
unsigned values that fall outside that range. Allow instruction
selection to proceed in this case rather than failing.

Fixes #63817.
2024-03-20 08:42:42 -07:00
Gheorghe-Teodor Bercea
c25e77436e
Revert "[libomptarget][nextgen-plugin] Use SCRELEASE/SCACQUIRE in packet headers" (#85950)
Reverts llvm/llvm-project#85678
2024-03-20 11:40:12 -04:00
Alexey Bataev
04f7cd7f45 [SLP][NFC]Make findBestRootPair() member function constant. 2024-03-20 08:33:47 -07:00
Gheorghe-Teodor Bercea
927308a52b
[libomptarget][nextgen-plugin] Use SCRELEASE/SCACQUIRE in packet headers (#85678)
This patch updates the construction of packet headers to replace the
usage of ACQUIRE/RELEASE with SCACQUIRE/SCRELEASE which is now
recommended.
The patch also ensures consistency across kernel dispatches.
2024-03-20 11:22:01 -04:00
Chris B
48a1a9b260
[HLSL][docs] Document hlsl.h in the HLSL docs (#84081)
This adds a brief blurb about hlsl.h in the HLSLSupport documentation
where a high level view of the architecture is explained.
2024-03-20 10:16:17 -05:00
ChiaHungDuan
aa8cffb958
[scudo] Fix type mismatch on DefaultMaxEntrySize (#85897) 2024-03-20 08:15:47 -07:00
Christian Ulmann
4095a326c0
[MLIR][LLVM] Add extraData field to the DIDerivedType attribute (#85935)
This commit extends the DIDerivedTypeAttr with the `extraData` field.
For now, the type of it is limited to be a `DINodeAttr`, as extending
the debug metadata handling to support arbitrary metadata nodes does not
seem to be necessary so far.
2024-03-20 16:08:38 +01:00
Alexey Bataev
55c82f149c [SLP][NFC]Add a test with arguments of functions, reduced by minbitwidth
analysis.
2024-03-20 08:08:01 -07:00
Simon Pilgrim
7812fcf3d7 [VectorCombine] foldBitcastShuf - add support for binary shuffles (REAPPLIED)
Generalise fold to "bitcast (shuf V0, V1, MaskC) --> shuf (bitcast V0), (bitcast V1), MaskC'".

Reapplied with a clang codegen test fix.

Further prep work for #67803
2024-03-20 15:06:19 +00:00
Thomas Preud'homme
caf8b1f654
[MLIR] Add missing MLIRDialectUtils dep to TilingInterface (#84544)
This fixes the following failure when doing a clean build (in particular
no .ninja* lying around) of lib/libMLIRTilingInterface.a only:
```
In file included from mlir/include/mlir/Interfaces/TilingInterface.h:17,                                                                     
                 from mlir/lib/Interfaces/TilingInterface.cpp:13:                                                                            
mlir/include/mlir/Dialect/Utils/StructuredOpsUtils.h:27:10: fatal error: mlir/Dialect/Utils/DialectUtilsEnums.h.inc: No such file or directory
```
2024-03-20 15:04:10 +00:00
chrulski-intel
a9fe23cde3
[LLD] [COFF] Port -lto-sample-profile to COFF version of LLD (#85701)
Following the commit of #83972 which added COFF support for SPGO, this
patch ports the support of the option -lto-sample-profile that was only
available in the ELF variant of LLD to the COFF variant to enable
running the SPGO passes in the LTO/thinLTO pipelines.
2024-03-20 23:02:43 +08:00
Tina Jung
647d75d3a8
[mlir][emitc] Restrict integer and float types (#85788)
Restrict which integers and floating-point types are valid in EmitC.
This should cover the types which are supported in C++ and is aligned
with what the emitter currently supports.

The checks are implemented as functions and not fully in tablegen to
allow them to be re-used by conversions to EmitC.
2024-03-20 16:00:05 +01:00
martinboehme
972f65a83f
[clang][NFC] Add documentation for CastExpr::path(). (#85623)
This didn't have any documentation, so I had to do some experimenting in
godbolt when I used this in
https://github.com/llvm/llvm-project/pull/84138, and my reviewer later
also had some
[questions](https://github.com/llvm/llvm-project/pull/84138#discussion_r1524855434)
about this, so I figured it would be worth adding documentation.
2024-03-20 15:34:11 +01:00
Neumann Hon
5fb2797f23
[GOFF][z/OS] Change PrivateGlobalPrefix and PrivateLabelPrefix to be L# (#85730)
The current values for PrivateGlobalPrefix and PrivateLabelPrefix (@@
and @ respectively) are, in hindsight, poor choices for multiple
reasons:

First, there exist externally visible routines from the language
environment that begin with @@. These functions are certainly not
local/private by any means and they should not share a prefix with
private globals.

Secondly, both private globals and private labels should be handled the
same way by GOFF, so it doesn't make much sense for them to have
separate prefixes. GOFF remains the only file format where these are
different and there is no reason for that to be the case
2024-03-20 10:30:30 -04:00
Jonas Paulsson
05bde30585
Move assertion for AdjustsStack from PEI to MachineVerifier. (#85698)
Have the verifier report a missing AdjustsStack flag rather than waiting until
PEI asserts.
2024-03-20 10:29:12 -04:00
Cyndy Ishida
9f168591f3
[InstallAPI] Simplify & improve symbol printing for diagnostics (#85894)
* Defer mangling of symbols until an error is ready to report
* Pass around fewer parameters when reporting
2024-03-20 07:26:08 -07:00
Benjamin Kramer
f872043e05 Revert "[VPlan] Replace disjoint or with add instead of dropping disjoint. (#83821)"
This reverts commit c2c1e6ee4ce0df3d000ba880fa6cf58441da6462. It creates
a use after free.

==8342==ERROR: AddressSanitizer: heap-use-after-free on address 0x50f000001760 at pc 0x55b9fb84a8fb bp 0x7ffc18468a10 sp 0x7ffc18468a08
READ of size 1 at 0x50f000001760 thread T0
 #0 0x55b9fb84a8fa in dropPoisonGeneratingFlags llvm/lib/Transforms/Vectorize/VPlan.h:1040:13
 #1 0x55b9fb84a8fa in llvm::VPlanTransforms::dropPoisonGeneratingRecipes(llvm::VPlan&, llvm::function_ref<bool (llvm::BasicBlock*)>)::$_0::operator()(llvm::VPRecipeBase*) const llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp:1236:23
 #2 0x55b9fb84a196 in llvm::VPlanTransforms::dropPoisonGeneratingRecipes(llvm::VPlan&, llvm::function_ref<bool (llvm::BasicBlock*)>) llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp

Can be reproduced with asan on
Transforms/LoopVectorize/AArch64/sve-interleaved-masked-accesses.ll
Transforms/LoopVectorize/X86/pr81872.ll
Transforms/LoopVectorize/X86/x86-interleaved-accesses-masked-group.ll
2024-03-20 15:14:58 +01:00
Guillaume Chatelet
2137894a6f
[libc][NFC] Move Sign type to separate header (#85930) 2024-03-20 15:10:19 +01:00
Benjamin Kramer
5f5a64134b Revert "[DAGCombiner] Simplifying {si|ui}tofp when only signbit is needed"
This reverts commit 353fbeb0a294d2c7cef6d88607fa0fd50ee81462. It crashes
when it encounters an UINT_TO_FP.

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1618 in SDValue llvm::SelectionDAG::getConstant(const ConstantInt &, const SDLoc &, EVT, bool, bool): VT.isInteger() && "Cannot create FP integer constant!"
2024-03-20 15:08:37 +01:00
Felipe de Azevedo Piovezan
12329648e2
[lldb] Omit --show-globals in help target var (#85855)
This option doesn't exist. It is currently displayed by `help target
var` due to a bug introduced by 41ae8e7445 in 2018.

Some code for `target var` and `frame var` is shared, and some hard-code
constants are used in order to filter out options that belong only to
`frame var`. However, the aforementioned commit failed to update these
constants properly. This patch addresses the issue by having a _single_
place where the filtering of options needs to be done.
2024-03-20 07:03:24 -07:00
Benjamin Kramer
3fbac79064 [AArch64] Don't write to source directory in test 2024-03-20 14:54:39 +01:00
Jay Foad
abed4b7476 [AMDGPU] Simplify definition of GLOBAL_LOAD_TR Real instructions 2024-03-20 13:54:13 +00:00
Hans
9d1cb18d19
[Coroutines] Ignore instructions more aggressively in addMustTailToCoroResumes() (#85271)
The old code used isInstructionTriviallyDead() and removed instructions
when walking the path from a resume call to function return to check if
the call is in tail position.

However, since the code was walking forwards it was not able to get past
instructions such as:

  %gep = getelementptr inbounds i64, ptr %alloc.var, i32 0
  %foo = ptrtoint ptr %gep to i64

This patch instead ignores such instructions as long as their values are
not needed. This enables the code to emit tail calls in more situations.
2024-03-20 14:51:45 +01:00
Simon Pilgrim
ada24ae5e6 Revert 2ac85d8d200a9e1e0ced501c2d2f04404c400bd9 "[VectorCombine] foldBitcastShuf - add support for binary shuffles"
Breaks some tests in other subprojects - will recommit with a fix later
2024-03-20 13:39:42 +00:00
Christian Ulmann
98c6bc531d
[MLIR][SROA][Mem2Reg] Add data layout to interface methods (#85644)
This commit expends the Mem2Reg and SROA interface methods with passed
in handles to a `DataLayout` structure. This is done to avoid
superfluous retreiving of data layouts during each conversion of
intrinsics.

This change, additionally, enables subsequent changes to make the LLVM
dialect implementation of these interfaces type agnostic.
2024-03-20 14:21:53 +01:00
Nikita Popov
3eb806373e [CodeGen] Fix test on 32-bit targets (NFC)
The range here will be different for 32-bit targets. Use a wildcard,
just like all te other target-sensitive parts in this test.
2024-03-20 14:20:44 +01:00
Simon Pilgrim
2ac85d8d20 [VectorCombine] foldBitcastShuf - add support for binary shuffles
Generalise fold to "bitcast (shuf V0, V1, MaskC) --> shuf (bitcast V0), (bitcast V1), MaskC'".

Further prep work for #67803
2024-03-20 13:19:30 +00:00