495344 Commits

Author SHA1 Message Date
David Green
18da51b2b2 [CodeGen] More uses of LocationSize::beforeOrAfterPointer().
As an extension to #84751, this adds some extra uses of beforeOrAfterPointer()
instead of UnknownSize.
2024-03-18 20:18:49 +00:00
Noah Goldstein
5265be11b1 [InstSimply] Simplify (fmul -x, +/-0) -> -/+0
We already handle the `+x` case, and noticed it was missing in the bug
affecting #82555

Proofs: https://alive2.llvm.org/ce/z/WUSvmV

Closes #85345
2024-03-18 15:11:55 -05:00
Noah Goldstein
6984ba7b94 [InstSimply] Add tests for simplify (fmul -x, +/-0); NFC 2024-03-18 15:11:55 -05:00
Noah Goldstein
ff63d628c4 [CodeExtractor] Terminate callsite blocks to new noreturn functions with unreachable
Since some of the users of `CodeExtractor` like `HotColdSplitting` run
late in the pipeline, returns are not cleaned to `unreachable`. So,
just emit `unreachable` directly if the function is `noreturn`.

Closes #84682
2024-03-18 15:11:55 -05:00
Fangrui Song
9936ac3083
[docs] Prefer --gcc-install-dir= to deprecated GCC_INSTALL_PREFIX (#85458)
Setting GCC_INSTALL_PREFIX leads to a warning (#77537).

Link:
https://discourse.llvm.org/t/add-gcc-install-dir-deprecate-gcc-toolchain-and-remove-gcc-install-prefix/65091
Link:
https://discourse.llvm.org/t/correct-cmake-parameters-for-building-clang-and-lld-for-riscv/72833
2024-03-18 13:11:44 -07:00
Joseph Huber
cf835b96b1 [libc] Remove fileno from GPU entrypoints 2024-03-18 14:52:46 -05:00
Orlando Cazalet-Hyams
9a5c0d6af9 Revert "[RemoveDIs] Enable direct-to-bitcode writing by default"
This reverts commit e419084da7a00b269368aeb95698e0d36b24e8ec.

Likely cause of buildbot failure:
https://lab.llvm.org/buildbot/#/builders/179/builds/9629
2024-03-18 19:29:08 +00:00
Florian Hahn
8578b6e912
[VPlan] Store VPlan directly in VPRecipeBuilder (NFCI).
Instead of passing VPlan in a number of places, just store it directly
in VPRecipeBuilder. A single instance is only used for a single VPlan.

This simplifies the code and was suggested by @nikolaypanchenko in
https://github.com/llvm/llvm-project/pull/84464.
2024-03-18 19:23:37 +00:00
nicebert
20f5bcfb1a
[OpenMP] Add OpenMP extension API to dump mapping tables (#85381)
This adds an API call ompx_dump_mapping_tables.
This allows users to debug the mapping tables and can be especially
useful for unified shared memory applications to check if the code
behaves in the way it should. The implementation reuses code already
present to dump mapping tables (in a debug setting).

---------

Co-authored-by: Joseph Huber <huberjn@outlook.com>
2024-03-18 14:09:20 -05:00
Kazu Hirata
6800f422c2 [lld] Fix warnings
This patch fixes:

  lld/MachO/ObjC.cpp:633:12: error: unused variable 'expectedListSize'
  [-Werror,-Wunused-variable]

  lld/MachO/ObjC.cpp:1034:12: error: unused variable 'newCatDef'
  [-Werror,-Wunused-variable]
2024-03-18 12:01:24 -07:00
Guray Ozen
7d55b916a5
[mlir][nvgpu] Support strided memref when creating TMA descriptor (#85652) 2024-03-18 19:47:39 +01:00
Craig Topper
1261c02be4
[LICM] Drop nsw/nuw flags on affected instructions in hoistMulAddAssociation. (#85486)
Since we are introducing new multiplies earlier in the arithmetic, the
nsw/nuw flags on later instructions are no longer accurate.

Fixes #85457.
2024-03-18 11:46:25 -07:00
Paul Kirth
457f762651
[cmake] Disable FatLTO in clang build for Fuchsia (#85677)
We're seeing an issue on Macs, which shouldn't be using this config, so
we will temporarily disable this while we investigate.
2024-03-18 11:29:42 -07:00
Valentin Clement (バレンタイン クレメン)
85d7fef6c1
[flang][NFC] Fix include style (#85655) 2024-03-18 11:17:32 -07:00
Michael Maitland
e5f2ed37e5 [RISCV] Add IMinMax sched resources to P600SchedModel
CI checks were passing in #84962 (c48d8182f172ac24244d5fb038b7ab983f67def4) but
that commit caused failures once merged due to ships passing since the
PR was not rebased on #85131. This commit fixes this problem by adding
sched resources for integer min max instructions from Zbb in P600 model.
2024-03-18 10:49:30 -07:00
Michael Maitland
c48d8182f1
[RISCV] Add SiFiveP600Model SchedModel that is used by sifive-p670 (#84962)
This PR includes an initial scheduler model shows improvement on
multiple workloads over NoSchedModel and SiFive7Model for sifive-p670.
We plan on making significant changes to this model in the future so
that it is more accurate. This patch would close
https://github.com/llvm/llvm-project/pull/80612.
2024-03-18 13:44:21 -04:00
Nick Desaulniers
27d7bb8616
[libc] fix up fileno tests (#85660)
Fixes #85628
2024-03-18 13:35:44 -04:00
Alexey Bataev
44c579f5b5 [SLP][NFC]Add a test with minbitwidth operand, but not a user. 2024-03-18 10:20:58 -07:00
Fraser Cormack
67c5a98cae [IR][NFC] Suppress warnings in ternary operators
Just doing this the same way as in AMDGPUPromoteAlloca.cpp
2024-03-18 17:17:08 +00:00
Alex Richardson
0db2e1e91a Reland "[compiler-rt] Avoid generating coredumps when piped to a tool"
Updated the corelimit.cpp test to handle buildbots with RLIMIT_CORE
rlim_max already set to zero.

Original commit message:

I was trying to debug why `ninja check-compiler-rt` was taking so long
to run on my system and after some debugging it turned out that most of
the time was being spent generating core dumps.

On many current Linux systems, coredumps are no longer dumped in the CWD
but instead piped to a utility such as systemd-coredumpd that stores
them in a deterministic location. This can be done by setting the
kernel.core_pattern sysctl to start with a '|'. However, when using such
a setup the kernel ignores a coredump limit of 0 (since there is no file
being written) and we can end up piping many gigabytes of data to
systemd-coredumpd which causes the test suite to freeze for a long time.
While most piped coredump handlers do respect the crashing processes'
RLIMIT_CORE, this is notable not the case for Debian's systemd-coredump
due to a local patch that changes sysctl.d/50-coredump.conf to ignore
the specified limit and instead use RLIM_INFINITY
(https://salsa.debian.org/systemd-team/systemd/-/commit/64599ffe44f0d).

Fortunately there is a workaround: the kernel recognizes the magic value
of 1 for RLIMIT_CORE to disable coredumps when piping. One byte is also
too small to generate any coredump, so it effectively behaves as if we
had set the value to zero.

The alternative to using RLIMIT_CORE=1 would be to use prctl() with the
PR_SET_DUMPABLE flag, however that also prevents ptrace(), so makes it
impossible to attach a debugger.

Fixes: https://github.com/llvm/llvm-project/issues/45797

This reverts commit 0b9f19a9880eb786871194af116f223d2ad30c52.
2024-03-18 10:14:08 -07:00
Joseph Huber
280c7a9526 [Clang] Fix preprocessing device only in HIP mode
Summary:
A recent change made the HIP compilation bundle by default. However we
don't want to do this for `-E`, which silently broke some handling.
2024-03-18 12:12:17 -05:00
alx32
ece2903ce7
[lld-macho] Implement ObjC category merging (-objc_category_merging) (#82928)
This change adds a flag to lld to enable category merging for MachoO +
ObjC.
It adds the '-objc_category_merging' flag for enabling this option and
uses the existing '-no_objc_category_merging' flag for disabling it.
In ld64, this optimization is enabled by default, but in lld, for now,
we require explicitly passing the '-objc_category_merging' flag in order
to enable it.

Behavior: if in the same link unit, multiple categories are extending
the same class, then they get merged into a single category.
Ex: `Cat1(method1+method2,protocol1) + Cat2(method3+method4,protocol2,
property1) = Cat1_2(method1+method2+method3+method4,
protocol1+protocol2, property1)`

Notes on implementation decisions made in this diff:
1. There is a possibility to further improve the current implementation
by directly merging the category data into the base class (if the base
class is present in the link unit) - this improvement may be done as a
follow-up. This improved functionality is already present in ld64.
2. We do the merging on the raw inputSections - after dead-stripping
(categories can't be dead stripped anyway).
3. The changes are mostly self-contained to ObjC.cpp, except for adding
a new flag (linkerOptimizeReason) to ConcatInputSection and StringPiece
to mark that this data has been optimized away. Another way to do it
would have been to just mark the pieces as not 'live' but this would
cause the old symbols to show up in the linker map as being
dead-stripped - even if dead-stripping is disabled. This flag allows us
to match the ld64 behavior.

---------

Co-authored-by: Alex B <alexborcan@meta.com>
2024-03-18 10:08:18 -07:00
David Green
9a784303a3
[AArch64][GlobalISel] Legalize small G_TRUNC (#85625)
This is an alternative to #85610, that moreElement's small G_TRUNC
vectors to widen the vectors. It needs to disable one of the existing
Unmerge(Trunc(..)) combines, and some of the code is not as optimal as
it could be. I believe with some extra optimizations it could look
better (I was thinking combining trunc(buildvector) -> buildvector and
possibly improving buildvector lowering by generating
insert_vector_element earlier).
2024-03-18 10:04:31 -07:00
Endre Fülöp
705788c846
[clang][analyzer] Improve BlockInCriticalSectionsChecker (#80029)
* Add support for multiple, potentially overlapping critical sections:
  The checker can now simultaneously handle several mutex's critical
  sections without confusing them.
* Implement the handling of recursive mutexes:
  By identifying the lock events, recursive mutexes are now supported.
  A lock event is a pair of a lock expression, and the SVal of the mutex
  that it locks, so even multiple locks of the same mutex (and even by
  the same expression) is now supported.
* Refine the note tags generated by the checker:
  The note tags now correctly show just for mutexes that are
  active at the point of error, and multiple acquisitions of the same mutex
  are also noted.
2024-03-18 17:56:15 +01:00
zhongyunde 00443407
bd9a2afa80 [InstCombine] Add tests for selects with same conditions (NFC) 2024-03-18 17:51:13 +01:00
Balaji V. Iyer
8d142043e8
Revert "[MLIR][XeGPU] Adding XeGPU 2d block operators (#84692)" (#85653)
This reverts commit daebe5c4f27ba140ac8d13abf41e3fe4db72b91a.

This commit causes the following asan issue:

```
<snip>/llvm-project/build/bin/mlir-opt <snip>/llvm-project/mlir/test/Dialect/XeGPU/XeGPUOps.mlir | <snip>/llvm-project/build/bin/FileCheck <snip>/llvm-project/mlir/test/Dialect/XeGPU/XeGPUOps.mlir
# executed command: <snip>/llvm-project/build/bin/mlir-opt <snip>/llvm-project/mlir/test/Dialect/XeGPU/XeGPUOps.mlir
# .---command stderr------------
# | =================================================================
# | ==2772558==ERROR: AddressSanitizer: stack-use-after-return on address 0x7fd2c2c42b90 at pc 0x55e406d54614 bp 0x7ffc810e4070 sp 0x7ffc810e4068
# | READ of size 8 at 0x7fd2c2c42b90 thread T0
# |     #0 0x55e406d54613 in operator()<long int const*> /usr/include/c++/13/bits/predefined_ops.h:318
# |     #1 0x55e406d54613 in __count_if<long int const*, __gnu_cxx::__ops::_Iter_pred<mlir::verifyListOfOperandsOrIntegers(Operation*, llvm::StringRef, unsigned int, llvm::ArrayRef<long int>, ValueRange)::<lambda(int64_t)> > > /usr/include/c++/13/bits/stl_algobase.h:2125
# |     #2 0x55e406d54613 in count_if<long int const*, mlir::verifyListOfOperandsOrIntegers(Operation*, 
...
```
2024-03-18 11:27:58 -05:00
Shourya Goel
ca04b56a8b
[libc] Implement fileno (#85628)
fixes: #85150
2024-03-18 09:26:30 -07:00
Mark de Wever
f804217155 Revert "[libc++][CMake] Removes LIBCXX_ENABLE_CLANG_TIDY. (#85262)"
This reverts commit 4109b18ee5de1346c2b89a5c89b86bae5c8631d3.

It looks like the automatic detection has false positives. This broke
the following build https://github.com/llvm/llvm-project/pull/85262
2024-03-18 17:13:56 +01:00
Andrei Golubev
39c739eec9
[mlir][OpInterfacesGen][NFC] Add newline after traits declaration (#85633)
Slightly improve the readability of the tablegen-generated code.

Co-authored-by: Orest Chura <orest.chura@intel.com>
2024-03-18 17:05:05 +01:00
Congcong Cai
12b802ac0b
[clang-tidy]bugprone-unused-return-value ignore ++ and -- operator overloading (#84922)
Fixes: #84705
Further fix for #84489
2024-03-18 23:56:36 +08:00
Mike Rice
57914f647e
[clang-tidy][NFC] Remove unnecessary nullptr check on cast subexpr (#85473)
The value of SubExpr is not null since getSubExpr would assert in that
case. Remove the nullptr check. This avoids confusion since SubExpr is
used without check later in the function.
2024-03-18 08:44:55 -07:00
Schrodinger ZHU Yifan
f6f42af06f
[libc] Add shm_open/shm_unlink (#84974) 2024-03-18 11:40:07 -04:00
Hirofumi Nakamura
0c423af59c
[clang-format] Add Options to break inside the TableGen DAGArg. (#83149)
Add two options to control the line break inside TableGen DAGArg.
- TableGenBreakInsideDAGArg
- TableGenBreakingDAGArgOperators
2024-03-19 00:13:59 +09:00
Jie Fu
73381a8df8 [CodeGen] Fix -Wunused-variable in PrologEpilogInserter.cpp (NFC)
llvm-project/llvm/lib/CodeGen/PrologEpilogInserter.cpp:369:12:
error: unused variable 'MaxCFSIn' [-Werror,-Wunused-variable]
  uint32_t MaxCFSIn =
           ^
1 error generated.
2024-03-18 23:09:54 +08:00
Timm Bäder
d56110fa02 [clang][Interp] Fix _Complex comma operators
Handle them before shelling out to visitComplexBinOp().
2024-03-18 16:02:40 +01:00
Kelvin Li
0c21377aea
[flang] Diagnose the impure procedure reference in finalization according to the rank of the entity (#85475)
Use the rank of the array section to determine which final procedure
would be called in diagnosing whether that procedure is impure or not.
2024-03-18 10:59:47 -04:00
Orlando Cazalet-Hyams
487f356b20
[RemoveDIs][AsmWriter] Add empty-metadata operands to the SlotTracker (#85636) 2024-03-18 14:41:32 +00:00
Martin Wehking
c5177f149b
Silence potential overflow warning (#83272)
Cast Offset variable to int64_t type directly inside a multiplication
and function call to utilize 64-bit arithmetic.

Ensure that the multiplication will not overflow.

A static analyzer warned about this since the function expects a 64-bit
argument, but the multiplication is evaluated inside a 32-bit context.
2024-03-18 14:38:27 +00:00
Jonas Paulsson
09bc6abba6
[MachineFrameInfo] Refactoring around computeMaxcallFrameSize() (NFC) (#78001)
- Use computeMaxCallFrameSize() in PEI::calculateCallFrameInfo() instead of duplicating the code.

- Set AdjustsStack in FinalizeISel instead of in computeMaxCallFrameSize().
2024-03-18 10:37:59 -04:00
Fraser Cormack
9253950ec1
[libclc] Convert tabs to spaces in CMake (#85634)
Having a mix of tabs and spaces makes the diff of any changes to the
build system noisier than necessary. This commit unifies them to two
spaces.

This includes some minor cosmetic changes such as with joining things on
one line where appropriate.

There are other files in libclc which have tabs but those haven't been
touched at this time. Those could come at another time if desired,
though they might be more contentious as the project isn't
clang-formatted at all and so that might invite larger discussions
around formatting.
2024-03-18 14:37:04 +00:00
Timm Bäder
e2e3624fae [clang][test] Try to fix constexpr-void-cast test
The test currenlty fails:
https://lab.llvm.org/buildbot/#/builders/139/builds/61628

because it emits a C11 warning when compiling as C. Try to fix that
be defining the C standard to use.
2024-03-18 15:35:39 +01:00
Tom Stellard
9cea288bf7
[release] Fix version extraction in export.sh (#85328)
The LLVM_VERSION_* variables were moved to a new file in
81e20472a0c5a4a8edc5ec38dc345d580681af81.
2024-03-18 15:32:10 +01:00
Qiu Chaofan
e5b20c83e5
[PowerPC] Update chain uses when emitting lxsizx (#84892) 2024-03-18 22:31:05 +08:00
Jay Foad
cb84f130b7
[AMDGPU] Remove unneeded addr mode predicates on FLAT Real instructions (#85641)
These predicates should be copied from the corresponding Pseudo
instruction. Previously that did not work because of a problem with
setting the right predicates on the Pseudos, but #85442 fixed that.
2024-03-18 14:29:53 +00:00
Florian Hahn
fd93a5e3c0
[VPlan] Support match unary and binary recipes in pattern matcher (NFC).
Generalize pattern matchers to take recipe types to match as template
arguments and use it to provide matchers for unary and binary recipes
with specific opcodes and a list of recipe types (VPWidenRecipe,
VPReplicateRecipe, VPWidenCastRecipe, VPInstruction)

The new matchers are used to simplify and generalize the code in
simplifyRecipes.
2024-03-18 14:24:52 +00:00
Adrian Kuegel
bfd1d95de2 [mlir] Fix unused variable error in builds with asserts enabled. 2024-03-18 14:13:47 +00:00
ykiko
eb264d825b
Add some missing Kinds to libclang python bindings (#85571)
Add some Kinds existing in Index.h but missing in cindex.py.
2024-03-18 10:13:10 -04:00
Miguel Raz Guzmán Macedo
276847a65a
[LangRef][IR] Add 3-way compare intrinsics llvm.scmp/llvm.ucmp (#83227)
This PR adds the `[us]cmp` intrinsics to the LangRef, `Intrinsics.td`
and some tests to the IRVerifier.

RFC: https://discourse.llvm.org/t/rfc-add-3-way-comparison-intrinsics/76685
2024-03-18 15:02:26 +01:00
Benji Smith
a8bda0b4a6
[C API] Add accessors for function prefix and prologue data (#82193)
A test is added to echo.ll, and the echo.cpp part of llvm-c-test is
updated to clone a function's prefix and prologue.
2024-03-18 14:58:22 +01:00
Timm Baeder
4294841ebc
[clang][ExprConst] Can't be past an invalid LValue designator (#84293)
For the test case in C, both `LV.getLValueOffset()` and
`Ctx.getTypeSizeInChars(Ty)` are zero, so we return `true` from
`isOnePastTheEndOfCompleteObject()` and ultimately diagnose this as
being one past the end, but the diagnostic doesn't make sense.
2024-03-18 14:56:16 +01:00