495344 Commits

Author SHA1 Message Date
Felix Schneider
a4b23638d2
[mlir] Don't assert when simplifying certain AffineExprs (#78855)
Currently, `simplifyMul()` asserts that either `lhs` or `rhs` is
symbolic or constant. This method is called by the overloaded `*`
operator for `AffineExpr`s which leads to a crash when building a
multiplication expression where neither operand is symbolic or constant.
This patch returns a `nullptr` from `simplifyMul()` to signal that the
expression could not be simplified instead.

Fix https://github.com/llvm/llvm-project/issues/75770
2024-03-19 10:43:02 +01:00
Pierre van Houtryve
5e379b63fc
[AMDGPU][PromoteAlloca] Drop bitcast handling (#85747)
This is no longer needed with opaque pointers.
2024-03-19 10:36:12 +01:00
Benjamin Kramer
db60491127
[mlir][bufferization] Check OpFilter before casting to BufferizableOpInterface (#85690)
This doesn't change functionality, but lets us avoid attaching all the
interfaces after 513cdb82223a106f183b49a40d9acb1f7efbbe7e turned casting
without loading into an error.
2024-03-19 10:31:25 +01:00
nicebert
29849d589c
[OpenMP] Fix ompx_dump_mapping_tables lit test (#85754)
Fixes ompx_dump_mapping_tables test by only using one device after
breaking built bots
2024-03-19 10:26:41 +01:00
Timm Bäder
0d40de754a [clang][Interp][NFC] Add InterpFrame::dump() 2024-03-19 10:25:21 +01:00
Matt Arsenault
1a6953a75d ValueTracking: Fix bug with fcmp false to nan constant
If we had a comparison to a literal nan with a false predicate,
we were incorrectly treating it as an unordered compare. This was
correct for fcmp true, but not fcmp false. I noticed this in the
review for e44d3b3e503fa12fdaead2936b28844aa36237c1 but misdiagnosed
the reason. Also change the test for the fcmp true case to be more
useful, but it wasn't wrong previously.
2024-03-19 14:52:45 +05:30
Yingwei Zheng
a747e86caa
[InstCombine] Fold fpto{s|u}i non-norm to zero (#85569)
This patch enables more optimization after canonicalizing `fmul X, 0.0`
into a copysign.
I decide to implement this fold in InstCombine because
`computeKnownFPClass` may be expensive.

Alive2: https://alive2.llvm.org/ce/z/ASM8tQ
2024-03-19 17:16:48 +08:00
Timm Bäder
6aaf9c8309 [clang][Interp][NFC] Sanitize collectBaseOffset parameters 2024-03-19 10:07:23 +01:00
Shourya Goel
703920d413
[DAG] Matched FixedWidth pattern for ISD::AVGFLOORU (#84903)
Fixes: #84749
2024-03-19 08:29:55 +00:00
Wang Pengcheng
5e486d17d4
[TableGen][NFC] Move MacroFusion classes to TargetMacroFusion.td
To make structure clear.

Reviewers: dtcxzyw, arsenm

Reviewed By: arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/85748
2024-03-19 16:27:15 +08:00
martinboehme
b788e4655c
[clang][dataflow] Model assignment to derived class from base. (#85064)
This is a relatively rare case, but

- It's still nice to get this right,
- We can remove the special case for this in
`VisitCXXOperatorCallExpr()` (that
  simply bails out), and
- With this in place, I can avoid having to add a similar special case
in an
  upcoming patch.
2024-03-19 09:22:35 +01:00
LLVM GN Syncbot
eac68447ad [gn build] Port 59ff3adcc131 2024-03-19 07:48:14 +00:00
martinboehme
59ff3adcc1
[clang][dataflow][NFC] Rename ControlFlowContext to AdornedCFG. (#85640)
This expresses better what the class actually does, and it reduces the
number of
`Context`s that we have in the codebase.

A deprecated alias `ControlFlowContext` is available from the old
header.
2024-03-19 08:44:08 +01:00
Wang Pengcheng
eb5623d101 [MacroFusion] Complete tests and fix indents 2024-03-19 15:41:18 +08:00
Jay Foad
110f630105 [KnownBits] Remove useless lambdas from unit test 2024-03-19 07:06:15 +00:00
Adrian Kuegel
f0a5e50550 [llvm][NVPTX] Add missing feature guard. 2024-03-19 06:53:14 +00:00
Martin Storsjö
cb2ca23345
[llvm-shlib] Fix the version naming style of libLLVM for Windows (#85710)
This reverts the changes from 91a384621e5b762d9c173ffd247cfeadd5f436a2
for Windows targets. The changes in that commit don't work as expected
for Windows targets (those parts of llvm_add_library don't quite behave
the same for Windows), while the previous status quo (producing a
library named "libLLVM-<major>.dll") is the defacto standard way of
doing versioned library names there, contrary to on Unix.

After that commit, the library always ended up named "libLLVM.dll",
executables linking against it would reference "libLLVM.dll", and
"libLLVM-<major>.dll" was provided as a symlink.

Thus revert this bit back to as it were, so that executables actually
link against a versioned libLLVM, and no separate symlink is needed.

The only thing that might be improved compared to the status quo as it
was before these changes, is that the import library is named
"lib/libLLVM-<major>.dll.a", while the common style would be to name it
plainly "lib/libLLVM.dll.a" (even while it produces references to
"libLLVM-<major>.dll", but none of these had that effect for Windows
targets.

(As a side note, the llvm-shlib library can be built for MinGW, but not
currently in MSVC configurations.)
2024-03-19 08:48:57 +02:00
Matthias Springer
b1752ddf0a
[mlir][sparse] Fix memory leaks (part 4) (#85729)
This commit fixes memory leaks in sparse tensor integration tests by
adding `bufferization.dealloc_tensor` ops.

Note: Buffer deallocation will be automated in the future with the
ownership-based buffer deallocation pass, making `dealloc_tensor`
obsolete (only codegen path, not when using the runtime library).

This commit fixes the remaining memory leaks in the MLIR test suite.
`check-mlir` now passes when built with ASAN.
2024-03-19 15:38:16 +09:00
Malay Sanghi
ff60a84f04
Convert copy to r-value reference. (#85606)
That seems to be the intention based on calling code.
2024-03-19 14:15:29 +08:00
Daniil Kovalev
924a1dceb5
[Dwarf] Support __ptrauth qualifier in metadata nodes (#83862)
Reland #82363 after fixing build failure
https://lab.llvm.org/buildbot/#/builders/5/builds/41428.

Memory sanitizer detects usage of `RawData` union member which is not
filled directly. Instead, the code relies on filling `Data` union
member, which is a struct consisting of signing schema parameters.

According to https://en.cppreference.com/w/cpp/language/union, this is
UB:
"It is undefined behavior to read from the member of the union that
wasn't most recently written".

Instead of relying on compiler allowing us to do dirty things, do not
use union and only store `RawData`. Particular ptrauth parameters are
obtained on demand via bit operations.

Original PR description below.

Emit `__ptrauth`-qualified types as `DIDerivedType` metadata nodes in IR
with tag `DW_TAG_LLVM_ptrauth_type`, baseType referring to the type
which has the qualifier applied, and the following parameters
representing the signing schema:

- `ptrAuthKey` (integer)
- `ptrAuthIsAddressDiscriminated` (boolean)
- `ptrAuthExtraDiscriminator` (integer)
- `ptrAuthIsaPointer` (boolean)
- `ptrAuthAuthenticatesNullValues` (boolean)

Co-authored-by: Ahmed Bougacha <ahmed@bougacha.org>
2024-03-19 09:13:17 +03:00
Craig Topper
e04dd68a3a
[GlobalMerge] Use vector::assign in place of fill+resize. NFC (#85723)
Noticed while reviewing the code.

If the resize causes a new allocation, this will fill the new allocation
with zeroes directly. Previously, we would fill the old allocation with
zeroes, then copy them to the new allocation before filling the
additional space with zeros.
2024-03-18 21:14:26 -07:00
lntue
bda05140fb
[libc] Remove constexpr from atan_eval and asin_eval. (#85725)
Fix aarch64 and gcc full build bots:
https://lab.llvm.org/buildbot/#/builders/223/builds/38235/steps/4/logs/stdio
2024-03-18 23:43:57 -04:00
Owen Pan
a2527e06d7 [clang-format] Put erroneously removed braces back into a unit test
See https://github.com/llvm/llvm-project/pull/85470#discussion_r1528904789
2024-03-18 20:22:42 -07:00
Valentin Clement (バレンタイン クレメン)
f6a2a55ba1
[flang][cuda] Handle lowering of stars in cuf kernel launch parameters (#85695)
Parsing of the cuf kernel loop directive has been updated to handle
variants with the * syntax. This patch updates the lowering to make use
of them.

- If the grid or block syntax uses only stars then the operation
variadic operand remains empty.
- If there is values and stars, then stars are represented as a zero
constant value.
2024-03-18 19:46:11 -07:00
Jake Egan
aec50cd840
[NFC] Disable llvm-objdump test on AIX
After commit 9d5edfde5c3dbc4eb559d316e82e664f291fc2bf the test is failing on the AIX bot. XFAIL for now to unblock the bot and give time to investigate.
2024-03-18 22:19:53 -04:00
Kelvin Li
a5f576e596
[flang] Diagnose calling impure final procedure due to finalization in FORALL (#85685)
This patch checks the LHS of an assignment in a FORALL loop and
diagnoses if any impure final procedure is called.
2024-03-18 21:35:56 -04:00
lntue
a629621454
[libc][math] Improve atanf performance. (#85463)
Simplify the range reduction logic and computations. Performance test
using `perf.sh` from CORE-MATH project on Ryzen 5900X:

Before:
```
$ ./perf.sh atanf --rdtsc --path1
LIBC-location: /home/lnt/experiment/llvm-project/build/projects/libc/lib/libllvmlibc.a
GNU libc version: 2.35
GNU libc release: stable
-- CORE-MATH reciprocal throughput --
[####################] 100 %
Ntrial = 20 ; Min = 14.369 + 0.556 clc/call; Median-Min = 0.613 clc/call; Max = 15.061 clc/call;
-- System LIBC reciprocal throughput --
[####################] 100 %
Ntrial = 20 ; Min = 26.180 + 0.015 clc/call; Median-Min = 0.014 clc/call; Max = 26.260 clc/call;
-- LIBC reciprocal throughput --
[####################] 100 %
Ntrial = 20 ; Min = 21.237 + 0.022 clc/call; Median-Min = 0.020 clc/call; Max = 21.272 clc/call;

$ ./perf.sh atanf --rdtsc --path1 --latency
LIBC-location: /home/lnt/experiment/llvm-project/build/projects/libc/lib/libllvmlibc.a
GNU libc version: 2.35
GNU libc release: stable
-- CORE-MATH latency --
[####################] 100 %
Ntrial = 20 ; Min = 50.505 + 0.045 clc/call; Median-Min = 0.037 clc/call; Max = 50.579 clc/call;
-- System LIBC latency --
[####################] 100 %
Ntrial = 20 ; Min = 62.438 + 0.836 clc/call; Median-Min = 0.049 clc/call; Max = 64.498 clc/call;
-- LIBC latency --
[####################] 100 %
Ntrial = 20 ; Min = 67.781 + 0.546 clc/call; Median-Min = 0.028 clc/call; Max = 68.844 clc/call;
```

After:
```
$ ./perf.sh atanf --rdtsc --path2
LIBC-location: /home/lnt/experiment/llvm/llvm-project/build/projects/libc/lib/libllvmlibc.a
GNU libc version: 2.35
GNU libc release: stable
-- CORE-MATH reciprocal throughput --
[####################] 100 %
Ntrial = 20 ; Min = 14.400 + 0.353 clc/call; Median-Min = 0.404 clc/call; Max = 14.863 clc/call;
-- System LIBC reciprocal throughput --
[####################] 100 %
Ntrial = 20 ; Min = 25.247 + 0.783 clc/call; Median-Min = 0.714 clc/call; Max = 26.238 clc/call;
-- LIBC reciprocal throughput --
[####################] 100 %
Ntrial = 20 ; Min = 13.751 + 0.158 clc/call; Median-Min = 0.140 clc/call; Max = 14.006 clc/call;

$ ./perf.sh atanf --rdtsc --path2 --latency
LIBC-location: /home/lnt/experiment/llvm/llvm-project/build/projects/libc/lib/libllvmlibc.a
GNU libc version: 2.35
GNU libc release: stable
-- CORE-MATH latency --
[####################] 100 %
Ntrial = 20 ; Min = 51.837 + 0.073 clc/call; Median-Min = 0.058 clc/call; Max = 52.000 clc/call;
-- System LIBC latency --
[####################] 100 %
Ntrial = 20 ; Min = 62.487 + 1.878 clc/call; Median-Min = 1.965 clc/call; Max = 64.569 clc/call;
OK
-- LIBC latency --
[####################] 100 %
Ntrial = 20 ; Min = 55.414 + 1.312 clc/call; Median-Min = 0.345 clc/call; Max = 58.362 clc/call;
```
2024-03-18 21:10:50 -04:00
Alex Crichton
d66121d74a
[WebAssembly] Change the default linker for wasm32-wasip2 (#84569)
This commit changes the default linker in the WebAssembly toolchain for
the `wasm32-wasip2` target. This target is being added to the
WebAssembly/wasi-sdk and WebAssembly/wasi-libc projects to target the
Component Model by default, in contrast with the preexisting
`wasm32-wasi` target (in the process of being renamed to
`wasm32-wasip1`) which outputs a core WebAssembly module by default.

The `wasm-component-ld` project currently lives in my GitHub account at
https://github.com/alexcrichton/wasm-component-ld and isn't necessarily
"official" yet, but it's expected to continue to evolve as the
`wasm32-wasip2` target continues to shape up and evolve.
2024-03-18 17:55:34 -07:00
Kyungwoo Lee
5373daad94 Revert "[lld-macho] Implement ObjC category merging (-objc_category_merging) (#82928)"
This reverts commit ece2903ce730392e5236d27f1f387fa8067fcb1b, https://github.com/llvm/llvm-project/pull/82928.

https://github.com/llvm/llvm-project/pull/82928
2024-03-18 17:16:52 -07:00
Kyungwoo Lee
6ae77eca6c Revert "[lld] Fix warnings"
This reverts commit 6800f422c22ffd672b1e31f0d0a3fa29d19b7a13 as the part of revert https://github.com/llvm/llvm-project/pull/82928.

buildbot failures: https://lab.llvm.org/buildbot/#/builders/168/builds/19302/steps/10/logs/stdio
2024-03-18 17:15:40 -07:00
Valentin Clement (バレンタイン クレメン)
8a6a0f1954
[flang][cuda] Add proper TODO for cuda fortran assignment (#85705)
Data transfer between host and device can be done with assignment
statements in CUDA Fortran. This is currently not lowered so adding a
proper TODO.


https://docs.nvidia.com/hpc-sdk/archive/24.3/compilers/cuda-fortran-prog-guide/index.html#cfref-data-trans-assgn-statemts
2024-03-18 17:11:04 -07:00
Aart Bik
42c38b1cc5
[mlir][sparse] deallocate temporary transposed tensor (#85720)
Last resort resolution of cycles introduced a sparse conversion without
explicit sparse deallocation (which is not inserted by any automatic
means). This fixes 2 out of 5 remaining asan detected leaks in sparse
integration tests.
2024-03-18 17:10:23 -07:00
Aart Bik
2e6b18b3f3
[mlir][sparse] add example to new operation doc, and roundtrip test (#85711) 2024-03-18 17:06:02 -07:00
Alexander Richardson
ba2dc2953c
[compiler-rt] Don't check COMPILER_RT_STANDALONE_BUILD for test deps
With https://github.com/llvm/llvm-project/pull/83088, we now need the
runtimes to be built before running test if
COMPILER_RT_TEST_STANDALONE_BUILD_LIBS is true, since otherwise we
get failures running `ninja check-all` such as the following:
```
/usr/bin/ld: cannot find .../compiler-rt/cmake-build-all-sanitizers/lib/linux/libclang_rt.fuzzer-x86_64.a: No such file or directory
/usr/bin/ld: cannot find .../compiler-rt/cmake-build-all-sanitizers/lib/linux/libclang_rt.xray-x86_64.a: No such file or directory
/usr/bin/ld: cannot find .../compiler-rt/cmake-build-all-sanitizers/lib/linux/libclang_rt.xray-basic-x86_64.a: No such file or directory
/usr/bin/ld: cannot find .../compiler-rt/cmake-build-all-sanitizers/lib/linux/libclang_rt.xray-fdr-x86_64.a: No such file or directory
```

This is a follow-up to 058e9b03 which started removing these checks
and it should make it easier to stop forcing COMPILER_RT_STANDALONE_BUILD
for runtimes builds in the future.

Reviewed By: vitalybuka

Pull Request: https://github.com/llvm/llvm-project/pull/83651
2024-03-18 16:48:37 -07:00
Slava Zakharin
f4e90e3f3c
[flang][runtime] Get rid of warnings in F18 runtime CUDA build. (#85488) 2024-03-18 16:29:58 -07:00
Shourya Goel
715a931864
[libc] Added tablegen definition for fileno (#85682)
This was missed in the previous PR. Updating tablegen definition with this PR.
2024-03-18 15:48:47 -07:00
Florian Mayer
7ef1a59ed1 remove incorrect DCHECK
this DCHECK was not valid for hwasan_load1, and was not necessary for
the. the function is written without any assumptions of alignment of the
pointer.
2024-03-18 15:39:48 -07:00
Alexander Yermolovich
4841858862
[BOLT][DWARF] Add support to debug_names for DW_AT_abstract_origin/DW_AT_specification (#85485)
According to the DWARF spec a DIE that has DW_AT_specification or
DW_AT_abstract_origin can be part of .debug_name if a DIE those
attribute points to has DW_AT_name or DW_AT_linkage_name.
2024-03-18 15:28:01 -07:00
Mehdi Amini
e0b19e957e [MLIR] Remove unused implicit capture in the lambda (NFC)
This lambda does not capture anything, the `&` is just misleading.
2024-03-18 14:52:06 -07:00
Fangrui Song
228757f6c3 [ELF] Improve --pack-dyn-relocs tests for Android and RELR 2024-03-18 14:42:45 -07:00
Adrian Prantl
7459f72473 Add missing includes (to fix the modules build) 2024-03-18 14:39:00 -07:00
Felipe de Azevedo Piovezan
65d444b9ed
[lldb][nfc] Factor out repeated code in DWIM Print (#85669)
The code that prints ValueObjects is duplicated across two different
cases of the dwim-print command, and a subsequent commit will add a
third case. As such, this commit factors out the common code into a
lambda. A free function was considered, but there is too much
function-local context required in that.

We also reword some of the comments so that they stop counting cases,
making it easier to add other cases later.
2024-03-18 14:34:08 -07:00
Jonas Paulsson
8b8e1adbde
[SystemZ] Don't lower ATOMIC_LOAD/STORE to LOAD/STORE (#75879)
- Instead of lowering float/double ISD::ATOMIC_LOAD / ISD::ATOMIC_STORE
nodes to regular LOAD/STORE nodes, make them legal and select those nodes
properly instead. This avoids exposing them to the DAGCombiner.

- AtomicExpand pass no longer casts float/double atomic load/stores to integer
  (FP128 is still casted).
2024-03-18 17:21:50 -04:00
Michael Jones
5d56b34807
[libc] Remove direct math.h includes (#85324)
Reland of #84991

A downstream overlay mode user ran into issues with the isnan macro not
working in our sources with a specific libc configuration. This patch
replaces the last direct includes of math.h with our internal
math_macros.h, along with the necessary build system changes.
2024-03-18 14:19:33 -07:00
Peter Klausler
d0d9839b14
[flang] Fix crash on erroneous program (#85615) (#85659)
Replace a pointer that should never be null with a reference argument so
that it's always defined.

Fixes https://github.com/llvm/llvm-project/issues/85615.
2024-03-18 14:14:41 -07:00
Peter Klausler
53e8d501e2
[flang] Catch inappropriate attributes for PARAMETERs (#85588)
There's several symbol attributes that cannot be applied to named
constants, but that weren't being checked.
2024-03-18 14:13:50 -07:00
Peter Klausler
7eb5d4fc12
[flang][runtime] Round hex REAL input correctly with excess digits (#85587)
Excess hexadecimal digits were too significant for rounding purposes,
leading to inappropriate rounding away from zero for some modes.
2024-03-18 14:13:02 -07:00
Peter Klausler
606a997a3c
[flang] Fix SCALE() folding with big scale factors (#85576)
The folding of the SCALE() intrinsic function is implemented via
multiplication by a power of two; this simplifies handling of
exceptional cases. But sometimes scaling by a power of two requires an
exponent larger or smaller than a floating-point format can represent,
and two multiplications are required.
2024-03-18 14:12:09 -07:00
Peter Klausler
0007d7eac9
[flang] Reduce recursion in common::visit (#85483)
This patch yields small speed-ups in compiler build and execution times,
but more importantly, reduces the stack depth needed in a build
environment where tail call optimization does not appear to occur.
2024-03-18 14:11:43 -07:00
Fangrui Song
ea72c082bc [ELF] Change getSymbolIndex to use const reference. NFC 2024-03-18 13:58:55 -07:00