Max Kazantsev [Mon, 10 Apr 2023 06:57:51 +0000 (13:57 +0700)]
[NFC][IRCE] Do not store latch exit count
It is not actually used for any computations. Its only purpose is to
check that the loop is finite and find out the type of computed exit
count. Refactor code so that we only store this type.
skc7 [Tue, 28 Mar 2023 18:05:02 +0000 (23:35 +0530)]
[AMDGPU] Introduce SIInstrWorklist to process instructions in moveToVALU
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D147168
Noah Goldstein [Mon, 10 Apr 2023 00:23:30 +0000 (19:23 -0500)]
[X86] Add inst fixup for `unpckps` -> `unpckdq`.
`unpckps` has the same performance as `unpckpd` (only port5) wereas
`unpckdq` can run on p15 on some newer architectures.
`unpckdq` is in the integer domain, so only do the transform if the
target has no bypass delay on shuffles (SKL+).
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D147729
Noah Goldstein [Mon, 10 Apr 2023 00:23:26 +0000 (19:23 -0500)]
[X86] Add inst fixup for `unpckpd` -> `unpckqdq`.
`unpckqdq` seems to be treated as a shuffle from bypass delay
perspective (which makes sense it appears to have shared shuffle units
for all micro-arch).
`unpckqdq` is slightly preferable to `shufpd` as it saves 1-byte of
code size and can be used to replace the micro-fused `rm` version. So,
if the target has no bypass delay, we should do `unpckpd` ->
`unpckqdq` instead of `shufpd.
Reviewed By: pengfei
Differential Revision: https://reviews.llvm.org/D147728
Noah Goldstein [Mon, 10 Apr 2023 00:23:23 +0000 (19:23 -0500)]
[X86] Fix perf bug in `permilps` -> `shufd` in X86FixupInstTuning.
We shouldn't do the transformation if we either have bypass delay OR
the new opcode has worse performance. Previous code was incorrectly
using AND.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D147727
Noah Goldstein [Mon, 10 Apr 2023 00:23:19 +0000 (19:23 -0500)]
[X86] Improve inst tuning tests for X86FixupInstTuning Pass; NFC
1) Add tests for `unpckps`.
2) Add explicit test for fast shuffles (ICX+) but WITH bypass delay.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D147726
Chen Zheng [Mon, 10 Apr 2023 05:11:26 +0000 (01:11 -0400)]
[GlobalISelEmitter] add case for D141247, NFC.
Mehdi Amini [Mon, 10 Apr 2023 04:21:56 +0000 (21:21 -0700)]
Revert "[MLIR] Add an assert in Operation::getOpResultImpl for out of range result"
This reverts commit
13b21971fbf5cd47dc3acb0c593aae8ae980c8d8.
Multiple bots are broken.
Anoop J S [Mon, 10 Apr 2023 03:40:49 +0000 (09:10 +0530)]
[mlir][affine] Fix crash on -affine-loop-invariant-code-motion pass with affine.prefetch Op
Affine Prefetch Op impelements AffineMapAccessInterface but does not implement
AffineReadOpInterface or AffineWriteOpInterface. Prefetch Op was cast to
AffineWriteOpinterface causing the crash.
Reviewed By: bondhugula
Differential Revision: https://reviews.llvm.org/D146836
Nelson Chu [Fri, 15 Apr 2022 04:25:36 +0000 (21:25 -0700)]
[RISCV] Support assembler and dis-assembler for VCIX extension.
Spec: https://sifive.cdn.prismic.io/sifive/
c3829e36-8552-41f0-a841-79945784241b_vcix-spec-software.pdf
Differential Revision: https://reviews.llvm.org/D144530
Ben Shi [Mon, 10 Apr 2023 03:13:07 +0000 (11:13 +0800)]
wangpc [Mon, 10 Apr 2023 02:57:00 +0000 (10:57 +0800)]
[MachineOutliner] Add IsOutlined to MachineFunction
We add a field `IsOutlined` to indicate whether a MachineFunction
is outlined and set it true for outlined functions in MachineOutliner.
Reviewed By: paquette
Differential Revision: https://reviews.llvm.org/D146191
Ben Shi [Sun, 9 Apr 2023 09:37:32 +0000 (17:37 +0800)]
[AVR] Reject invalid LDD instruction with explicit error
We should reject "ldd Rn, X" with explicit error message
rather than "llvm_unreachable" in llvm's release build.
Fixes https://github.com/llvm/llvm-project/issues/62012
Reviewed By: Miss_Grape
Differential Revision: https://reviews.llvm.org/D147877
Chen Zheng [Fri, 7 Apr 2023 10:22:31 +0000 (10:22 +0000)]
[AMDGPU][Global-ISel] reuse extension related patterns in td file
However the imported rules can not be used for now because Global ISel
selectImpl() seems has some bug/limitation to create a illegl COPY
from VGPR to SGPR. So currently workaround this by not auto selecting these
patterns.
Fixes #61468
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D147780
Craig Topper [Mon, 10 Apr 2023 00:12:27 +0000 (17:12 -0700)]
[X86] Add an additional ReadAfterLoad to EVEX FMA instructions.
These instructions have 3 sources. 2 of them are registers when
the load is folded. So we need 2 ReadAfterLoad SchedReads.
Craig Topper [Sun, 9 Apr 2023 23:33:47 +0000 (16:33 -0700)]
[X86] Correct the scheduling information for AVX-VNNI and AVX512-VNNI instructons.
The AVXVNNI load instructions weren't using the Folded load write
class and they had no ReadAdvance.
The YMM versions were using the XMM schedule class.
The AVX512VNNI instructions had the right classes, but not enough
ReadAdvances to account for the 2 sources.
Noticed while investigating #62026.
Reviewed By: pengfei
Differential Revision: https://reviews.llvm.org/D147872
Craig Topper [Sun, 9 Apr 2023 23:32:54 +0000 (16:32 -0700)]
[TableGen] Use map::try_emplace to construction DAGInstruction in the Instructions map. NFC
We add entries to the map in two places. One already used
std::piecewise_construct with map::emplace. The other was using
map::insert. Change both to map::try_emplace.
Shivam Gupta [Sun, 9 Apr 2023 12:57:07 +0000 (18:27 +0530)]
[MLIR] Add an assert in Operation::getOpResultImpl for out of range result
This fix https://github.com/llvm/llvm-project/issues/61962.
Calling op->getResult(0) on a function like operation with no results
returned a garbage pointer.
This patch add assert to check number is in range.
Differential Revision: https://reviews.llvm.org/D147883
Florian Hahn [Sun, 9 Apr 2023 20:01:10 +0000 (21:01 +0100)]
[VPlan] Don't assign slots for external defs (NFCI).
External defs are VPValues wrapping an IR value and hence will get
printed as ir<>. We don't need to assign a slot for a VPValue number.
Michael Liao [Sun, 9 Apr 2023 19:55:38 +0000 (15:55 -0400)]
[clang][AST] Fix `-Wuninitialized`. NFC
- Adjust the declaration order as non-static member are initialized in
order of declaration in the class definition.
Florian Hahn [Sun, 9 Apr 2023 19:32:09 +0000 (20:32 +0100)]
[LV] Update tests checking VPlans to use patterns for VPValues.
This makes the tests more robust to changes in value numbering for
VPValues.
Craig Topper [Sun, 9 Apr 2023 17:56:06 +0000 (10:56 -0700)]
[TableGen] Remove TypeSetByHwMode::isDefaultOnly(). Use InfoByHwMode<T>::isSimple(). NFC
InfoByHwMode is the base class of TypeSetByHwMode. The two methods
did the same thing. No reason to have two ways to do it.
Also use the getSimple() access instead of Map.begin()->second.
LLVM GN Syncbot [Sun, 9 Apr 2023 15:57:26 +0000 (15:57 +0000)]
[gn build] Port
e8cfbfd05a95
Mark de Wever [Sat, 8 Apr 2023 15:29:31 +0000 (17:29 +0200)]
[libc++] Granularize system_error.
Reviewed By: #libc, philnik
Differential Revision: https://reviews.llvm.org/D147853
Congcong Cai [Sun, 9 Apr 2023 14:23:28 +0000 (16:23 +0200)]
[clang-tidy] fix false positve for namespace with attrs in modernize-concat-nested-namespaces
Fixed https://github.com/llvm/llvm-project/issues/57530
Add pre check to avoid false positive for namespace with attributes like
```
namespace [[deprecated]] ns {}
```
Reviewed By: PiotrZSL
Differential Revision: https://reviews.llvm.org/D147857
Mark de Wever [Sat, 8 Apr 2023 12:59:09 +0000 (14:59 +0200)]
[libc++] Implements isblank.
This omission seems to be there for a long time, it's in the initial
libc++ import. This was discovered while working on the std modules.
Reviewed By: #libc, philnik
Differential Revision: https://reviews.llvm.org/D147850
Mark de Wever [Fri, 17 Feb 2023 20:27:08 +0000 (21:27 +0100)]
[libc++][format] Addresses LWG3720.
LWG3720 Restrict the valid types of arg-id for width and precision in
std-format-spec
Depends on D144325
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D144326
Mark de Wever [Thu, 5 May 2022 16:57:32 +0000 (18:57 +0200)]
[libc++][format] range-default-formatter for strings.
Implements the range-default-formatter specialization range_format::string
and range_format::debug_string.
Implements parts of
- P2286R8 Formatting Ranges
- P2585R0 Improving default container formatting
Depends on D145847
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D145853
OCHyams [Sun, 9 Apr 2023 10:21:55 +0000 (11:21 +0100)]
Revert (3) "[Assignment Tracking] Enable by default"
Revert D146987.
This reverts commit
f11e1475c97c1ba6b418838f3592de930677c3d0 which
reapplies D146987.
Buildbot: https://lab.llvm.org/buildbot/#/builders/70/builds/36103
OCHyams [Sun, 9 Apr 2023 08:59:26 +0000 (09:59 +0100)]
Reapply (2) "[Assignment Tracking] Enable by default"
Re-land D146987.
This reverts commit
64fba207a683a355d9059cd57adb8a139c2f5dda
which reverts D146987.
OCHyams [Sun, 9 Apr 2023 08:47:09 +0000 (09:47 +0100)]
[Assignment Tracking] Fix fragments for assignments to variables smaller than the alloca
Prior to this patch the trackAssignments function would attribute all stores to
an alloca to all variables linked to the alloca. This is wrong in the case
where the alloca contains variables which are smaller than the alloca, and
caused erroneous fragment information to be generated.
Now stores outside the variable bounds are discarded, and we check whether a
fragment is needed based on whether the store covers the entire variable as
opposed to whether it covers the entire alloca (except for variables of unknown
size).
Note that trackAssignments doesn't yet understand whole variables sitting at
anything other than offset 0 in an alloca - those variables are still tracked
using dbg.declares.
Fixes https://lab.llvm.org/buildbot/#/builders/70/builds/36007
Reviewed By: jmorse
Differential Revision: https://reviews.llvm.org/D147777
Jorge Pinto Sousa [Sun, 9 Apr 2023 08:45:07 +0000 (08:45 +0000)]
[clang-tidy] Fix AST Library documentation link
The link was pointing to the 'Lexer and Preprocessor Library'
instead.
Reviewed By: PiotrZSL
Differential Revision: https://reviews.llvm.org/D147874
Florian Hahn [Sun, 9 Apr 2023 08:15:42 +0000 (09:15 +0100)]
[VPlan] Don't add live-outs if scalar epilogue is required.
Instead of clearing live outs when a scalar epilogue is required late,
don't add live outs during VPlan construction if a scalar epilogue is
required.
This enables more VPlan-based DCE (if the live out would be the only
user in the plan) and is a step towards removing an access of the cost
model in fixedVectorizedLoop (which is after VPlan execution).
Depends on D147468.
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D147471
Craig Topper [Sun, 9 Apr 2023 07:42:35 +0000 (00:42 -0700)]
[TableGen] Reorder some checks in TreePatternNode::isIsomorphicTo to speedup -gen-dag-isel for RISC-V.
Comparing types is quite expensive when hardware modes are being
used. Checking the operator first can let us detect mismatches
earlier without checking types.
Hristo Hristov [Sat, 1 Apr 2023 08:51:03 +0000 (11:51 +0300)]
[libc++][spaceship] Implement `operator<=>` for `time_point`
Depends on D145881
Implements parts of **P1614R2**: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1614r2.html
Implements `operator<=>` for `time_point`
Reviewed By: #libc, Mordante
Differential Revision: https://reviews.llvm.org/D146250
Craig Topper [Sun, 9 Apr 2023 01:54:56 +0000 (18:54 -0700)]
[TableGen] Slightly improve the efficiency of InfoByHwMode::get.
This avoids some double map lookups. Also use Map.begin() to find
the default mode instead of going through find.
Shengchen Kan [Sun, 9 Apr 2023 01:29:41 +0000 (09:29 +0800)]
[X86][mem-fold][NFC] Simplify code by transform A != 0 - > A
Nikolas Klauser [Sun, 8 Jan 2023 15:47:53 +0000 (16:47 +0100)]
[libc++] Remove <cstdlib> includes
We changed the `abort` calls when trying to throw exceptions in `-fno-exceptions` mode to `__verbose_abort` calls, which removes the dependency in most files.
Reviewed By: ldionne, #libc
Spies: dim, emaste, mikhail.ramalho, smeenai, libcxx-commits
Differential Revision: https://reviews.llvm.org/D146076
Lang Hames [Sat, 8 Apr 2023 23:48:13 +0000 (16:48 -0700)]
[ORC][MachO] Remove unused variables.
Kazu Hirata [Sat, 8 Apr 2023 23:22:39 +0000 (16:22 -0700)]
[CodeGen] Use range-based for loops (NFC)
Lang Hames [Sat, 8 Apr 2023 23:09:45 +0000 (16:09 -0700)]
[ORC] Fix reference to struct member in
f448d44663a.
A map value was converted from a tuple to a struct during development, but I
missed a use in an assert.
Joshua Cao [Sat, 8 Apr 2023 22:55:21 +0000 (15:55 -0700)]
[SCEV][NFC] Fix `Do not use 'else' after 'return'`
Follow LLVM coding standards and make clangd emit less warnings.
Lang Hames [Fri, 7 Apr 2023 21:40:05 +0000 (14:40 -0700)]
[ORC][ORC-RT][MachO] Use _objc_(map|load)_images for ObjC & Swift registration.
This patch drops the individual registration calls to the ObjC and Swift
runtimes (for selectors, classes, etc.), and instead creates a Mach header and
load commands that can be passed to _objc_map_images and _objc_load_images to
trigger registration and execution of +load methods. This approach supports
categories (for which there is no current registration API), and more closely
follows dyld's ObjC & Swift registration path.
Kazu Hirata [Sat, 8 Apr 2023 22:44:18 +0000 (15:44 -0700)]
[mlir] Use DenseMap::contains (NFC)
Joshua Cao [Sat, 8 Apr 2023 22:14:12 +0000 (15:14 -0700)]
[SCEV] Add test for huge trip multiples
Sergei Barannikov [Sat, 8 Apr 2023 22:08:41 +0000 (01:08 +0300)]
[AMDGPU] Update mcp-overlap-after-propagation.mir test
The test was added in D69953, but since D67794 landed a bit later it no
longer catches the bug. Update the test to be representative again.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D146934
Lang Hames [Sat, 8 Apr 2023 17:38:52 +0000 (10:38 -0700)]
[ORC][LLJIT] Improve debugging output, tighten assertion.
Clients can provide an ExecutionSession or an ExecutorProcessControl object to
LLJITBuilder, but should not provide both.
Craig Topper [Sat, 8 Apr 2023 19:46:15 +0000 (12:46 -0700)]
[TableGen] Reimplement union_modes for InfoByHwMode to be avoid a secondary set.
Previously we collected both modes in a set and iterated over that set.
Instead, iterate over the two maps in parallel and detect the differences
as we go.
Craig Topper [Sat, 8 Apr 2023 18:55:55 +0000 (11:55 -0700)]
[TableGen] Use InfoByHwMode::getSimple() in place of *InfoByHwMode::begin(). NFC
Congcong Cai [Sat, 8 Apr 2023 19:03:58 +0000 (21:03 +0200)]
[clang-tidy] fix hint use correct range to replace last NamespaceDecl
range of replacing last namespace decl should be from last non nested namespace to last namespace
Reviewed By: PiotrZSL
Differential Revision: https://reviews.llvm.org/D147843
Nikolas Klauser [Fri, 31 Mar 2023 12:47:33 +0000 (14:47 +0200)]
[libc++][NFC] Only run the preprocessor in transitive_includes.sh.cpp
This cuts the time it takes to run the test in half.
Reviewed By: Mordante, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D147320
Min-Yih Hsu [Fri, 7 Apr 2023 17:57:32 +0000 (10:57 -0700)]
[M68k] Basic FP register files and FMOVE implementations
- FP registers and register classes definitions
- MC support for FP registers
- MC support for the FPDR -> FPDR variant of FMOVE/FSMOVE/FDSMOVE
Note that we don't implement 32/64-bit FP registers with subregisters since
f32/f64 values will be converted to f80 upon storing into a register,
rather than occupying part of the register.
So we only use register classes with different value types to distinguish
them.
Differential Revision: https://reviews.llvm.org/D147480
Piotr Zegar [Sat, 8 Apr 2023 17:17:12 +0000 (17:17 +0000)]
[clang-tidy] Fix extern fixes in readability-redundant-declaration
Currently check does not look into LinkageSpecDecl
when removing redundant variable re-declarations.
This were leaving code in non-compiling state.
Fix patch fixes this and adds removal also of 'extern C'.
Fixes: https://github.com/llvm/llvm-project/issues/42068
Reviewed By: carlosgalvezp
Differential Revision: https://reviews.llvm.org/D146904
Mark de Wever [Sat, 18 Feb 2023 17:30:56 +0000 (18:30 +0100)]
[libc++][format] Implements formatter thread::id.
Since stacktrace header is WIP and it's not sure that will be done
before LLVM17 update the documentation. When the header is implemented
implementing the formatter is trivial, so that can be done quickly
afterwards.
Implements parts of:
- P2693R1 Formatting thread::id and stacktrace
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D144331
Timm Bäder [Sat, 8 Apr 2023 13:44:11 +0000 (15:44 +0200)]
[clang][Interp] Add missing static_assert message
Timm Bäder [Sat, 8 Apr 2023 13:26:46 +0000 (15:26 +0200)]
[clang][Interp][NFC] Add test for e7f55bb
Timm Bäder [Sat, 8 Apr 2023 09:59:59 +0000 (11:59 +0200)]
[clang][Interp] Fix a crash when calling invalid constexpr functions
Differential Revision: https://reviews.llvm.org/D147845
Mark de Wever [Sun, 20 Mar 2022 12:40:02 +0000 (13:40 +0100)]
[libc++][chrono] Add sys_time formatter.
Partially implements:
- P1361 Integration of chrono with text formatting
- P2372 Fixing locale handling in chrono formatters
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D144739
Mark de Wever [Fri, 3 Mar 2023 19:23:51 +0000 (20:23 +0100)]
[libc++][format] Implements LWG3892.
This LWG issue is based on the discussion regarding
P2733R3 Fix handling of empty specifiers in std::format
This paper was disussed and changed a few times in LEWG during the
Issaquah meeting. The paper was not voted in, instead LEWG asked for
a DR against C++26.
This LWG issue contains the direction voted by LEWG. This issue has not
been voted in yet. However it fixes some of the defencies on the
container based formatting. Without this fix the range-default-formatter
for strings looks bad when used in containers.
The changes of this issue match the intended changes of P27333.
type fmt before after (if changed)
---------------------------------------------------------------
char {} a
char {:?} 'a'
array<char, 1> {} ['a']
array<char, 1> {::} [a]
array<char, 1> {::c} [a]
array<char, 1> {::?} ['a']
map<char, char> {} {a: a} -> {'a': 'a'}
map<char, char> {::} {'a': 'a'}
set<char> {} {'a'}
set<char> {::} {a}
set<char> {::c} {a}
set<char> {::?} {'a'}
tuple<char> {} ('a')
stack<char> {} ['a']
stack<char> {::} [a]
stack<char> {::c} [a]
stack<char> {::?} ['a']
array<array<char, 1>, 1> {} [[a]] -> {'a': 'a'}
array<array<char, 1>, 1> {::} [['a']]
array<array<char, 1>, 1> {:::} [[a]]
array<array<char, 1>, 1> {:::c} [[a]]
array<array<char, 1>, 1> {:::?} [['a']]
array<tuple<char>, 1> {} [(a)] -> [('a')]
tuple<tuple<char>> {} ((a)) -> (('a'))
tuple<array<char, 1>> {} ([a]) -> (['a'])
Note the optimization text as mentioned in the tuple formatter can't be
done. The call to parse may affect the formatter so its state needs to
be preserved.
Reviewed By: ldionne, #libc, EricWF
Differential Revision: https://reviews.llvm.org/D145847
Florian Hahn [Sat, 8 Apr 2023 12:04:08 +0000 (13:04 +0100)]
[VPlan] Require VFRange.End to be a power-of-2. (NFCI)
This removes the need to convert the end of the range to the next
power-of-2 for the end iterator after
4bd3fda5124962 and was suggested
as follow-up TODO in D147468.
Matt Arsenault [Sun, 5 Mar 2023 19:53:06 +0000 (15:53 -0400)]
AMDGPU: Add baseline test for issue 61083
Matt Arsenault [Sat, 8 Apr 2023 11:07:29 +0000 (07:07 -0400)]
llvm-reduce: Actually change to the temporary directory in test
Hopefully fixes issue #61132
Matt Arsenault [Sun, 5 Mar 2023 11:07:23 +0000 (07:07 -0400)]
AMDGPU: Fix LiveVariables verifier error for values defined before SI_END_CF
GlobalISel happens to insert some constant materializes before SI_END_CF
in one test. These need to be excluded from AliveBlocks since they
are defined in the original block and used in the split block,
so they aren't fully alive through either block.
The case where the value defined in the first block which was originally used
in a later block is still broken.
Avoids a verifier error in a future patch.
Matt Arsenault [Sun, 5 Mar 2023 01:14:08 +0000 (21:14 -0400)]
AMDGPU: Fix missing MIR serialization for PSInputAddr/PSInputEnable
Resuming any mir test for a pixel shader would assert in the AsmPrinter.
Florian Hahn [Sat, 8 Apr 2023 09:19:56 +0000 (10:19 +0100)]
[VPlan] Add VFRange::begin() and end() iterators. (NFCI)
Add an iterator to iterate over all VFs in VFRange. This simplifies some
existing code and allows using all_of,any_of and none_of on a VFRange.
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D147468
Aiden Grossman [Sat, 8 Apr 2023 07:45:55 +0000 (07:45 +0000)]
[Docs][llvm-remarkutil] Fix dangling reference in documentation
D147710 introduced a new annotation-count subcommand to llvm-remarkutil
and added in documentation. However, the reference added under the
subcommands list never actually pointed to anything. This patch adds a
marker for the reference to point to so that the link works and the
sphinx build finishes without any errors.
Jay Foad [Thu, 6 Apr 2023 16:26:05 +0000 (17:26 +0100)]
[AMDGPU] Fix a case of updating LiveIntervals in SIOptimizeExecMaskingPreRA
This was causing two test failures when I applied D129208 to enable
extra verification of LiveIntervals:
LLVM :: CodeGen/AMDGPU/optimize-negated-cond-exec-masking-wave32.mir
LLVM :: CodeGen/AMDGPU/optimize-negated-cond-exec-masking.mir
Differential Revision: https://reviews.llvm.org/D147721
Craig Topper [Sat, 8 Apr 2023 06:38:04 +0000 (23:38 -0700)]
[TableGen] Simplify TypeInfer::expandOverloads. NFC
Directly test the 5 overloaded types instead of doing extra
set creation and iteration.
Timm Bäder [Wed, 5 Apr 2023 11:46:11 +0000 (13:46 +0200)]
[clang][Sema][NFC] Save token name instead of the full token
Differential Revision: https://reviews.llvm.org/D147615
Timm Bäder [Fri, 3 Feb 2023 11:20:15 +0000 (12:20 +0100)]
[clang][Interp][NFCI] Call* ops don't modify the PC
This caused the reported errors from the Call*() handlers to report the
wrong source location.
Fixes: https://github.com/llvm/llvm-project/issues/62002
Nathan Lanza [Sat, 8 Apr 2023 06:10:27 +0000 (02:10 -0400)]
[Outliner] Add an option to only enable outlining of patterns above a certain threshold
Outlining isn't always a win when the saved instruction count is >= 1.
The overhead of representing a new function in the binary depends on
exception metadata and alignment. So parameterize this for local tuning.
Reviewed By: paquette
Differential Revision: https://reviews.llvm.org/D136774
Congcong Cai [Sat, 8 Apr 2023 04:24:25 +0000 (06:24 +0200)]
[clang-tidy] fix concat-nest-namespace fix hint remove the macro
Partially fixed [#60035](https://github.com/llvm/llvm-project/issues/60035)
This patch refactor the FixHint for concat-nest-namespace.
1. remove each namespace except the last non-nest namespace.
2. replace the last non-nest namespace with the new name.
It can remain the comment / pragma / macro between namespace and update the close comment.
Reviewed By: PiotrZSL
Differential Revision: https://reviews.llvm.org/D147194
Lang Hames [Sat, 8 Apr 2023 03:00:49 +0000 (03:00 +0000)]
[ORC] Drop tests for OrcV2CBindingsReflectProcessSymbols after
231107a8b5b.
This test was removed as LLJIT now reflects process symbols by default.
Zhongyunde [Sat, 8 Apr 2023 02:45:39 +0000 (10:45 +0800)]
[MergeICmps] Attach metadata to new created loads
Use clone to keep the metadata, the issue is reported
by aeubanks on D141188.
Reviewed By: nikic, paulwalker-arm
Differential Revision: https://reviews.llvm.org/D146702
Lang Hames [Fri, 7 Apr 2023 17:06:20 +0000 (17:06 +0000)]
Re-apply "[ORC] LLJIT updates: ExecutorNativePlatform, default ..." with fixes.
This reapplies
371cb1af61d, which was reverted in
0b2240eda01 due to bot
failures.
The clang-repl test failure is fixed by dropping the process symbols definition
generator that was manually attached to the main JITDylib, since LLJIT now
exposes process symbols by default. (The bug was triggered when JIT'd code used
the process atexit provided by the generator, rather than the JIT atexit which
has been moved into the platform JITDylib).
Any LLJIT clients that see crashes in static destructors should likewise remove
any process symbol generators attached to their main JITDylib.
Aart Bik [Fri, 7 Apr 2023 23:24:27 +0000 (16:24 -0700)]
[bazel build] pull in cubin only when needed
Reviewed By: Peiming
Differential Revision: https://reviews.llvm.org/D147826
Augusto Noronha [Fri, 7 Apr 2023 23:36:11 +0000 (16:36 -0700)]
Fix build failure introduced in https://reviews.llvm.org/D145208
Matt Arsenault [Tue, 21 Feb 2023 18:50:11 +0000 (14:50 -0400)]
AMDGPU: Make myself code owner
Matt Arsenault [Mon, 3 Apr 2023 13:29:44 +0000 (09:29 -0400)]
llvm-reduce: Try running test in temporary directory
Attempt to fix issue #61761
Zain Jaffal [Fri, 7 Apr 2023 22:45:45 +0000 (23:45 +0100)]
[llvm-remarkutil] Add missing new line for `llvm/docs/CommandGuide/llvm-remarkutil.rst`
Zain Jaffal [Fri, 7 Apr 2023 22:42:39 +0000 (23:42 +0100)]
Recommit "Add an option to print out annotation remark count."
Add missing new line for `llvm/docs/CommandGuide/llvm-remarkutil.rst`
This reverts commit
0f7fcb4c670fbef2c25b835fdfdd29598c6c13ae.
Zain Jaffal [Fri, 7 Apr 2023 22:41:53 +0000 (23:41 +0100)]
Revert "Add an option to print out annotation remark count."
This reverts commit
7cc80ef5fa359b68ee85033f98b1bef1f37fb21c.
Amaury Séchet [Fri, 7 Apr 2023 22:34:53 +0000 (22:34 +0000)]
[NFC] Add a new test case in add-and-not.ll
Xiang Li [Fri, 7 Apr 2023 15:34:56 +0000 (11:34 -0400)]
[clang:diagnostics] Turning off warn_self_assignment_overloaded for user-defined compound assignments
Fixes 42469 https://github.com/llvm/llvm-project/issues/42469
Only check self assignment on BO_Assign when BuildOverloadedBinOp.
Zain Jaffal [Thu, 6 Apr 2023 14:09:24 +0000 (15:09 +0100)]
Add an option to print out annotation remark count.
This adds a `annotation-count` option to llvm-remarkutil.
```
llvm-remarkutil annotation-count -remark=REMARK
```
This will print out the remark count for a pass that uses annotation remarks.
Differential Revision: https://reviews.llvm.org/D147710
MalavikaSamak [Fri, 7 Apr 2023 22:11:05 +0000 (15:11 -0700)]
[-Wunsafe-buffer-usage] FixableGadget for handling stand alone pointers under UPC
This patch introduces UPCStandalonePointerGadget, a FixableGadget that emits fixits to
handle cases where a pointer identified as unsafe is simply referenced. An example of
such a case is when the pointer is input as an argument to a method call, where we can
not change the type of the argument. For cases where the strategy for the unsafe pointer is
to use std::span, the idea is to extract the underlying pointer by invoking the "data()"
method on the span instance.
For example, the gadget emits a fixit for S3, where S1, S2 are handled by other gadgets:
S1: int *ptr = new int[10];
S2: int val1 = ptr[k]; // Unsafe operation on ptr
S3: foo(ptr); // Some method that accepts raw pointer => FIXIT: foo(ptr.data());
Reviewed by: NoQ, ziqingluo-90, jkorous
Differential revision: https://reviews.llvm.org/D143676
Balaji V. Iyer [Fri, 7 Apr 2023 21:47:20 +0000 (21:47 +0000)]
[mlir][math]Expand Fused math.fmaf to a multiply-add
Fused multiply and add are being pushed directly to the libm. This is problematic
for situations where libm is not available. This patch will break down a fused multiply and
add into a multiply followed by an add.
Reviewed By: rsuderman
Differential Revision: https://reviews.llvm.org/D147811
David Blaikie [Fri, 7 Apr 2023 22:12:31 +0000 (22:12 +0000)]
Remove redundant `get()` call and use auto on LHS of make_unique
Ben Hamilton [Tue, 4 Apr 2023 21:27:42 +0000 (15:27 -0600)]
[Format/ObjC] Support NS_ERROR_ENUM in ObjC language guesser
Apple added a new NS_ERROR_ENUM macro to help define enums for
NSError codes.
This updates libformat's Objective-C language-guessing heuristic
to detect the new macro as well as related NSError types.
Tested: New tests added.
Reviewed By: MyDeveloperDay
Differential Revision: https://reviews.llvm.org/D147577
Blue Gaston [Thu, 6 Apr 2023 17:33:40 +0000 (10:33 -0700)]
[Sanitizers][Atos] Remove null-ing of atos process pointer
Currently, when we send an address to atos to be symbolized, it is
expected that atos returns with more than it was sent, i.e. symbol
information for that address. In the case where only the address is
returned, we currently null the pointer to the atos process. Typically,
for modules where no symbolication is expected, we do not send the
address to atos.
However, in new simulators there is an early call that atos does not
return any symbol information for. And in this case, because we have
gotten rid of the pointer to the process, no subsequent frames are
symbolicated, even tho atos is still working/running.
This patch removes the nulling of the pointer to the process. This
allows subsequent calls to atos even after an unexpected result.
It also now Reports what has happened and the address this occurred.
This will improve symbolication in cases where we get an unepxected
result, and will make it easier to diagnose atos if it is not
symbolicating as expected.
Filed a radar about the change of behavior
107621524
rdar://
107169715
Differential Revision: https://reviews.llvm.org/D147725
Valentin Clement [Fri, 7 Apr 2023 21:18:48 +0000 (14:18 -0700)]
[flang][NFC] Add select type test to check correct ordering
Somehow this test has been left behind in my sandbox. This
patch adds a lowering test for fir.select_type operation and
makes sure the dynamic type comaparison is done in the right
order when we have multiple CLASS IS type guard statement
for types that are linked.
This should have been posted with D138280.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D147807
Eli Friedman [Fri, 3 Mar 2023 02:09:14 +0000 (18:09 -0800)]
[COFF] Add MC support for emitting IMAGE_WEAK_EXTERN_ANTI_DEPENDENCY symbols
This is mostly useful for ARM64EC, which uses such symbols extensively.
One interesting quirk of ARM64EC is that we need to be able to emit weak
symbols that point at each other (so if either symbol is defined
elsewhere, both symbols point at the definition). This required a few
changes to the way we handle weak symbols on Windows.
Differential Revision: https://reviews.llvm.org/D145208
Jonas Devlieghere [Fri, 7 Apr 2023 20:54:45 +0000 (13:54 -0700)]
[JSON] Fix uninitialized variable warning
Fix uninitialized variable warning when deserializing a std::optional<E>
where is an enum type.
JSON.h:771:20: warning: variable 'Result' is uninitialized when used here [-Wuninitialized]
if (!fromJSON(E, Result, P))
^~~~~~
Alex Langford [Fri, 7 Apr 2023 18:41:54 +0000 (11:41 -0700)]
[lldb] Add unittests for a few FileSpec methods
This adds tests for:
- FileSpec::TestFileNameExtensions
- FileSpec::TestFileNameStrippingExtension
- FileSpec::IsSourceImplementationFile
This additionally updates incorrect documentation.
Differential Revision: https://reviews.llvm.org/D147801
Manna, Soumi [Fri, 7 Apr 2023 20:37:56 +0000 (16:37 -0400)]
[NFC][clang] Fix static analyzer tool remarks about large copies by values
Reported by Coverity:
Big parameter passed by value
Copying large values is inefficient, consider passing by reference; Low, medium, and high size thresholds for detection can be adjusted.
1. Inside "SemaConcept.cpp" file, in subsumes<clang::Sema::MaybeEmitAmbiguousAtomicConstraintsDiagnostic(clang::NamedDecl *, llvm::ArrayRef<clang::Expr const *>, clang::NamedDecl *, llvm::ArrayRef<clang::Expr const *>)::[lambda(clang::AtomicConstraint const &, clang::AtomicConstraint const &) (instance 2)]>(llvm::SmallVector<llvm::SmallVector<clang::AtomicConstraint *, 2u>, 4u>, llvm::SmallVector<llvm::SmallVector<clang::AtomicConstraint *, 2u>, 4u>, T1): A large function call parameter exceeding the low threshold is passed by value.
i. pass_by_value: Passing parameter PDNF of type NormalForm (size 144 bytes) by value, which exceeds the low threshold of 128 bytes.
ii. pass_by_value: Passing parameter QCNF of type NormalForm (size 144 bytes) by value, which exceeds the low threshold of 128 bytes.
2. Inside "CodeGenAction.cpp" file, in clang::reportOptRecordError(llvm::Error, clang::DiagnosticsEngine &, clang::CodeGenOptions): A very large function call parameter exceeding the high threshold is passed by value.
i. pass_by_value: Passing parameter CodeGenOpts of type clang::CodeGenOptions const (size 1560 bytes) by value, which exceeds the high threshold of 512 bytes.
3. Inside "SemaCodeComplete.cpp" file, in HandleCodeCompleteResults(clang::Sema *, clang::CodeCompleteConsumer *, clang::CodeCompletionContext, clang::CodeCompletionResult *, unsigned int): A large function call parameter exceeding the low threshold is passed by value.
i. pass_by_value: Passing parameter Context of type clang::CodeCompletionContext (size 200 bytes) by value, which exceeds the low threshold of 128 bytes.
4. Inside "SemaConcept.cpp" file, in <unnamed>::SatisfactionStackRAII::SatisfactionStackRAII(clang::Sema &, clang::NamedDecl const *, llvm::FoldingSetNodeID): A large function call parameter exceeding the low threshold is passed by value.
i. pass_by_value: Passing parameter FSNID of type llvm::FoldingSetNodeID (size 144 bytes) by value, which exceeds the low threshold of 128 bytes.
Reviewed By: erichkeane, aaron.ballman
Differential Revision: https://reviews.llvm.org/D147708
Alexey Bataev [Fri, 7 Apr 2023 20:22:48 +0000 (13:22 -0700)]
[SLP][NFC]Make clusterSortPtrAccesses static.
Noah Goldstein [Fri, 7 Apr 2023 19:35:37 +0000 (14:35 -0500)]
[InstCombine] Improve transforms for `(mul X, Y)` -> `(shl X, log2(Y)`
Using the more robust log2 search allows us to fold more cases (same
logic as exists for idiv/irem).
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D146347
Noah Goldstein [Fri, 17 Mar 2023 06:32:32 +0000 (01:32 -0500)]
[InstCombine] Add tests for indirect mul by power of 2; NFC
Differential Revision: https://reviews.llvm.org/D146346
Alexander Shaposhnikov [Fri, 7 Apr 2023 19:34:52 +0000 (19:34 +0000)]
[Clang][Sema] Add MultiLevelTemplateArgumentList::dump
Add MultiLevelTemplateArgumentList::dump
(similarly to TemplateArgument::dump).
Differential revision: https://reviews.llvm.org/D147744
wren romano [Wed, 29 Mar 2023 23:36:14 +0000 (16:36 -0700)]
[mlir][sparse] Simplifying Merger::expContainsTensor
`expContainsTensor` used to call `expIsTensor` to short-circuit the recursive calls; however, the very first thing `expContainsTensor` does is to check `expIsTensor`, so the short-circuiting code just causes the function to check that condition redundantly.
Depends On D146684
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D146688