Shilei Tian [Thu, 26 Jan 2023 00:05:53 +0000 (19:05 -0500)]
[NFC] clang-format OpenMPOpt.cpp
Paul Kirth [Wed, 25 Jan 2023 23:55:02 +0000 (23:55 +0000)]
[clang-doc] Removed unused method in the Info class
Reviewed By: brettw
Differential Revision: https://reviews.llvm.org/D142577
Michael Jones [Tue, 24 Jan 2023 22:41:28 +0000 (14:41 -0800)]
[libc] add scanf pointer conversion
This patch adds the last conversion for scanf, %p. It is set up to match
the %p implementation in our printf.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D142510
Michael Jones [Tue, 24 Jan 2023 19:25:54 +0000 (11:25 -0800)]
[libc] add scanf current position conversion
To add the current position (%n) conversion, some reorganization needed
to be done. The "write a number to this pointer using the length
modifier" utilities and a couple other shared parsing functions have
been moved into converter_utils.h. This made implementing
current_pos_converter very simple.
Reviewed By: lntue
Differential Revision: https://reviews.llvm.org/D142495
Paul Kirth [Wed, 25 Jan 2023 21:34:01 +0000 (21:34 +0000)]
[llvm][NFC] Rename variables to match style guide in Local.cpp
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D142579
Arthur Lafrance [Wed, 25 Jan 2023 21:02:16 +0000 (13:02 -0800)]
[mlir-translate] More specific error message for BlockAddress
BlockAddress is currently unimplemented in the LLVM dialect of MLIR;
when converting to LLVM dialect MLIR from LLVM IR, mlir-translate
currently terminates with an "unhandled constant" error message.
Instead, this message could be made more specific, to let the user know
that the specific issue is that BlockAddress is unimplemented in the
LLVM dialect.
Differential Revision: https://reviews.llvm.org/D142337
Daniel Thornburgh [Wed, 25 Jan 2023 22:34:45 +0000 (14:34 -0800)]
Fix compilation failure in CoverageMapping.cpp
Joseph Huber [Wed, 25 Jan 2023 22:20:16 +0000 (16:20 -0600)]
[CUDA] Fix output from `ptxas` being removes as a temporary file
Summary:
The logic here is to add the `.cubin` temporary file if we had to create
a new filename to handle it. Unfortuantely the logic was wrong because
we compare `const char *` values here. This logic seems to have been
wrong for some time, but was never noticed since we never used the
relocatable output.
Fixes https://github.com/llvm/llvm-project/issues/60301
Paul Kirth [Thu, 19 Jan 2023 20:47:43 +0000 (20:47 +0000)]
Reland [pgo] Avoid introducing relocations by using private alias
In many cases, we can use an alias to avoid a symbolic relocations,
instead of using the public, interposable symbol. When the instrumented
function is in a COMDAT, we can use a hidden alias, and still avoid
references to discarded sections.
Previous versions of this patch allowed the compiler to name the
generated alias, but that would only be valid when the functions were
local. Since the alias may be used across TUs we use a more
deterministic naming convention, and add a ".local" suffix to the alias
name just as we do for relative vtables aliases.
https://reviews.llvm.org/rG20894a478da224bdd69c91a22a5175b28bc08ed9
removed an incorrect assertion on Mach-O which caused assertion failures in LLD.
We prevent duplicate symbols under ThinLTO + PGO + CFI by disabling
alias generation when the target function has MD_type metadata used in
CFI.
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D137982
Daniel Thornburgh [Mon, 24 Oct 2022 22:35:00 +0000 (15:35 -0700)]
[llvm-cov] Look up object files using debuginfod
Reviewed By: gulfem
Differential Revision: https://reviews.llvm.org/D136702
Paul Robinson [Wed, 25 Jan 2023 21:58:34 +0000 (13:58 -0800)]
[unittests] Use GTEST_SKIP() instead of return when appropriate
Basically NFC: A TEST/TEST_F/etc that bails out early (usually because
setup failed or some other runtime condition wasn't met) generally
should use GTEST_SKIP() to report its status correctly, unless it
takes steps to report another status (e.g., FAIL()).
I did see a handful of tests show up as SKIPPED after this change,
which is not unexpected. The status seemed appropriate in all the new
cases.
Michael Jones [Wed, 25 Jan 2023 00:08:41 +0000 (16:08 -0800)]
[libc] fix strtointmax tests
The strtointmax tests weren't running because they depend on the same
shared logic as strtol tests and the target for that was being defined
after the inttypes targets, causing them to be skipped. This patch moves
the inttypes test directory later in the order so that the shared tests
are defined before inttypes tests try to use them.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D142515
Florian Hahn [Wed, 25 Jan 2023 21:41:14 +0000 (21:41 +0000)]
[SCCP] Add additional tests for Add NUW/NSW flag inference.
Jon Chesterfield [Wed, 25 Jan 2023 21:38:49 +0000 (21:38 +0000)]
[amdgpuarch] Delete stray hsa #include line
Craig Topper [Wed, 25 Jan 2023 21:09:58 +0000 (13:09 -0800)]
[CodeGen] Split some functionality from DetectDeadLanes into its own class to be reused. NFC
This is an alternative to D140382.
This moves the first part of runOnce into a new class that can be
reused by D129735. This encapsulates the ownership of the worklist,
and VRegInfos into the new class. The code for updating the dead
lanes stays in the DetectDeadLanes class.
The new class is created on the stack during runOnMachineFunction
so all the data structures will be deleted after each run.
Previously we only cleared them after each run so the memory might
have stayed allocated across runs. Except for VRegInfo which was
always deleted. Hopefully this allocation change isn't a big deal.
Reviewed By: BeMg
Differential Revision: https://reviews.llvm.org/D141993
Rafael Auler [Wed, 25 Jan 2023 19:38:07 +0000 (11:38 -0800)]
[BOLT][NFC] Remove C-style out of bounds array ref
Old code breaks build with libstdc++ with assertions. Fix it.
Aaron Ballman [Wed, 25 Jan 2023 20:52:49 +0000 (15:52 -0500)]
Fix clang-tools-extra Sphinx build
This addresses the issue found in:
https://lab.llvm.org/buildbot/#/builders/115/builds/41077
Stanislav Mekhanoshin [Wed, 25 Jan 2023 19:58:58 +0000 (11:58 -0800)]
[AMDGPU] Remove predicates from real dot instructions. NFCI.
These are copied from pseudos automatically.
Differential Revision: https://reviews.llvm.org/D142575
Elizabeth Andrews [Tue, 10 Jan 2023 12:32:05 +0000 (04:32 -0800)]
[Clang] Fix compilation errors for unsupported __bf16 intrinsics
This patch uses existing deferred diagnostics framework to emit error
for unsupported type __bf16 in device code. Error is not emitted in
host code.
Differential Revision: https://reviews.llvm.org/D141375
rkayaith [Wed, 9 Nov 2022 04:23:28 +0000 (23:23 -0500)]
[mlir][Pass] Make PassManager default to op-agnostic
Currently `PassManager` defaults to being anchored on `builtin.module`.
Switching the default makes `PassManager` consistent with
`OpPassManager` and avoids the implicit dependency on `builtin.module`.
Specifying the anchor op type isn't strictly necessary when using
explicit nesting (existing pipelines will continue to work), but I've
updated most call sites to specify the anchor since it allows for better
error-checking during pipeline construction.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D137731
Aaron Ballman [Wed, 25 Jan 2023 20:07:14 +0000 (15:07 -0500)]
Fix a dead link in the docs
The link used to go to a page on Chris Lattner's site that has been
gone since at least 2015. Replaced the link with one that has similar
information to what Chris had.
Fixes #60238
Denis Nikitin [Wed, 25 Jan 2023 19:58:38 +0000 (19:58 +0000)]
[clang-tidy] Fix segfault in bugprone-standalone-empty
The check incorrectly identified empty() method call in the template
class definition as a stand-alone function call.
This led to a crash because the checker did not expect empty() function
calls without arguments.
Fixes: https://github.com/llvm/llvm-project/issues/59487
Reviewed By: cjdb
Differential Revision: https://reviews.llvm.org/D142423
Joseph Huber [Wed, 25 Jan 2023 20:04:25 +0000 (14:04 -0600)]
[Libomptarget] Add correct relative path for the nexgen plugin
Summary:
I forgot that this file "borrowed" the source from the other file tree.
Fix that.
Joseph Huber [Wed, 25 Jan 2023 19:39:02 +0000 (13:39 -0600)]
[Libomptarget] Clean up CUDA plugin CMake files
Clean up this file after changing it in D142568.
Depends on D142568
Reviewed By: tianshilei1992
Differential Revision: https://reviews.llvm.org/D142573
Joseph Huber [Wed, 25 Jan 2023 19:19:37 +0000 (13:19 -0600)]
[Libomptarget] Remove find_package(CUDA) as it has been deprecated
Since D137724 and the LLVM 17 release we have updated to CMake version
3.20. This means that `find_package(CUDA)` is officially deprecated and
can be replaced with `find_package(CUDAToolkit)` instead. This patch
does this and also cleans up a bit of the CMake.
Reviewed By: tianshilei1992
Differential Revision: https://reviews.llvm.org/D142568
Joseph Huber [Wed, 25 Jan 2023 19:24:34 +0000 (13:24 -0600)]
[nvptx-arch] Remove `find_package(CUDA)` as it has been deprecated.
Since D137724 and the LLVM 17 release we have updated to CMake version
3.20. This means we can use `find_package(CUDAToolkit)` instead as the
legacy module is deprecated.
Reviewed By: tianshilei1992
Differential Revision: https://reviews.llvm.org/D142570
Guozhi Wei [Wed, 25 Jan 2023 19:45:01 +0000 (19:45 +0000)]
[GVN] Improve PRE on load instructions
This patch implements the enhancement proposed by
https://github.com/llvm/llvm-project/issues/59312.
Suppose we have following code
v0 = load %addr
br %LoadBB
LoadBB:
v1 = load %addr
...
PredBB:
...
br %cond, label %LoadBB, label %SuccBB
SuccBB:
v2 = load %addr
...
Instruction v1 in LoadBB is partially redundant, edge (PredBB, LoadBB) is a
critical edge. SuccBB is another successor of PredBB, it contains another load
v2 which is identical to v1. Current GVN splits the critical edge
(PredBB, LoadBB) and inserts a new load in it. A better method is move the load
of v2 into PredBB, then v1 can be changed to a PHI instruction.
If there are two or more similar predecessors, like the test case in the bug
entry, current GVN simply gives up because otherwise it needs to split multiple
critical edges. But we can move all loads in successor blocks into predecessors.
Differential Revision: https://reviews.llvm.org/D141712
Amir Ayupov [Wed, 25 Jan 2023 19:37:55 +0000 (11:37 -0800)]
[BOLT] Use LTO fuzzy name matching in function-order
Allow partial name matching wrt LTO suffixes in `function-order`
user-supplied function list, the same as permitted by profile matching.
Reviewed By: #bolt, rafauler
Differential Revision: https://reviews.llvm.org/D142269
Amir Ayupov [Wed, 25 Jan 2023 19:37:42 +0000 (11:37 -0800)]
[BOLT] Emit a warning about invalid entries in function-order list
Move individual warnings under verbosity >= 1, print out a warning with
aggregate number.
Reviewed By: #bolt, rafauler
Differential Revision: https://reviews.llvm.org/D142397
wren romano [Tue, 24 Jan 2023 21:23:52 +0000 (13:23 -0800)]
[mlir][sparse] (re)introducing getRankedTensorType/getMemrefType
The bulk of D142074 seems to have gotten overwritten due to some sort of merge conflict (afaict there's no record of it having been reverted intentionally). So this commit redoes those changes. In addition to the original changes, this commit also:
* moves the definition of `getRankedTensorType` (from `Transforms/CodegenUtils.h` to `IR/SparseTensor.h`), so that it can be used by `IR/SparseTensorDialect.cpp`.
* adds `getMemRefType` as another abbreviation.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D142503
Ingo Müller [Wed, 25 Jan 2023 16:22:11 +0000 (16:22 +0000)]
[mlir][scf] Fix typo in comment in BufferizableOpInterfaceImpl.cpp (NFC).
Reviewed By: ingomueller-net
Differential Revision: https://reviews.llvm.org/D142554
Dave Lee [Wed, 11 Jan 2023 19:37:07 +0000 (11:37 -0800)]
[lldb][test] Replace use of p with expression (NFC)
In API tests, replace use of the `p` alias with the `expression` command.
To avoid conflating tests of the alias with tests of the expression command,
this patch canonicalizes to the use `expression`.
Differential Revision: https://reviews.llvm.org/D141539
Michael Liao [Wed, 25 Jan 2023 15:19:44 +0000 (15:19 +0000)]
[clang][CodeGen][NFC] Fix `llvm-else-after-return`
Rob Suderman [Wed, 25 Jan 2023 17:58:03 +0000 (17:58 +0000)]
[mlir][tosa] Update tosa.avg_pool2d for bit-exact TOSA behavior
The normalization component of average pool has a very specific
rounding behavior for compouting the division for floating
point values. Updated so that the bit-exact version is implemented.
Also includes a fix for computing the stride part of the average pool
operation.
Reviewed By: jpienaar
Differential Revision: https://reviews.llvm.org/D141339
Shafik Yaghmour [Wed, 25 Jan 2023 18:47:21 +0000 (10:47 -0800)]
[Clang] Add sanity check in Sema::getDestructorName to prevent nullptr dereference
Currently in Sema::getDestructorName we call SS.getScopeRep()->getPrefix() but
SS.getScopeRep() can return nullptr because LookupInNestedNameSpec(...) called a
little before can invalidate SS.
This fixes: https://github.com/llvm/llvm-project/issues/59446
Differential Revision: https://reviews.llvm.org/D140598
Matt Arsenault [Wed, 25 Jan 2023 14:04:26 +0000 (10:04 -0400)]
AMDGPU: Convert some tests to opaque pointers
Matt Arsenault [Wed, 25 Jan 2023 13:45:48 +0000 (09:45 -0400)]
LangRef: Fix extra spaces in udec_wrap description
Arthur Eubanks [Tue, 6 Dec 2022 17:20:08 +0000 (09:20 -0800)]
[llvm-c] Remove LLVMContextSetOpaquePointers
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D139441
Florian Hahn [Wed, 25 Jan 2023 18:22:24 +0000 (18:22 +0000)]
Revert "Recommit "[SCCP] Use range info to prove AddInst has NUW flag.""
This reverts commit
366e1faa2fffd5b2284e25b09b6a26bcd2aca2b7.
It looks like this exposes another set of crashes on the buildbots.
Revert while I investigate.
Florian Hahn [Wed, 25 Jan 2023 18:07:24 +0000 (18:07 +0000)]
Recommit "[SCCP] Use range info to prove AddInst has NUW flag."
The recommitted version fixes a crash when one of the operands is a
constant other than a ConstantInt. Test for that case have been added
in
5b16cd97b8e1c273.
It splits off the new logic into a separate function because setting the
flags is quite different compared to the other cases handled in replaceSignedInst
which all require replacing an existing instruction. Instructions are
now refined before any replacements are done, which has the advantage
that we should have lattice values for all operands (fixing the crashes
and simplifies the logic) and also allows optimizing more cases where one
of the operands also gets replaced (see improvements in
@sge_with_sext_to_zext_conversion).
It also guards makeGuaranteedNoWrapRegion by `if (!Inst.hasNoUnsignedWrap())`
as discussed in the review.
Fixes #60280.
Fixes #60278.
Original message:
This patch updates SCCP to use the value ranges of AddInst operands to
try to prove the AddInst does not overflow in the unsigned sense and
adds the NUW flag. The reasoning is done with
makeGuaranteedNoWrapRegion (thanks @nikic for point it out!).
Follow-ups will include adding NSW and extension to more
OverflowingBinaryOperators.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D142387
Austin Kerbow [Mon, 23 Jan 2023 05:26:08 +0000 (21:26 -0800)]
[ScheduleDAG] Fix removing edges with weak deps
In SUnit::removePred edges are removed from the Preds and Succs lists before
updating the bookkeeping. This could result in incorrect values for
NumPreds/SuccsLeft and cause WeakPreds/SuccsLeft to underflow, since the
incorrect SDep will be used to update these values.
Reviewed By: rampitec
Differential Revision: https://reviews.llvm.org/D142325
She Dongrui [Wed, 25 Jan 2023 17:52:48 +0000 (09:52 -0800)]
Avoid removing useful loop metadata when stripping debug info
The stripDebugLocFromLoopID() may mistakenly remove useful metadata nodes
when they are operands of a child node, which also has DILocation operands.
It can be reproduced by the output of clang for code similar to the following:
for(int i = 0; i < n; i++)
x[i] = 10;
-strip-debug removes the child node of llvm.loop.vectorize.followup_all,
which contains llvm.loop.isvectorized and llvm.loop.unroll.count.
This patch fixes by checking all children nodes and only remove a metadata
node if all its children are DILocation.
Differential Revision: https://reviews.llvm.org/D141909
Advenam Tacet [Wed, 25 Jan 2023 18:01:24 +0000 (19:01 +0100)]
[ASan][libcxx] Annotating std::vector with all allocators
This revision is a part of a series of patches extending
AddressSanitizer C++ container overflow detection
capabilities by adding annotations, similar to those existing
in std::vector, to std::string and std::deque collections.
These changes allow ASan to detect cases when the instrumented
program accesses memory which is internally allocated by
the collection but is still not in-use (accesses before or
after the stored elements for std::deque, or between the size and
capacity bounds for std::string).
The motivation for the research and those changes was a bug,
found by Trail of Bits, in a real code where an out-of-bounds read
could happen as two strings were compared via a std::equals function
that took iter1_begin, iter1_end, iter2_begin iterators
(with a custom comparison function).
When object iter1 was longer than iter2, read out-of-bounds on iter2
could happen. Container sanitization would detect it.
In revision D132522, support for non-aligned memory buffers (sharing
first/last granule with other objects) was added, therefore the
check for standard allocator is not necessary anymore.
This patch removes the check in std::vector annotation member
function (__annotate_contiguous_container) to support
different allocators.
If you have any questions, please email:
- advenam.tacet@trailofbits.com
- disconnect3d@trailofbits.com
Reviewed By: #libc, #sanitizers, philnik, vitalybuka
Spies: EricWF, philnik, #sanitizers, libcxx-commits
Differential Revision: https://reviews.llvm.org/D136765
Alex Brachet [Wed, 25 Jan 2023 17:58:13 +0000 (17:58 +0000)]
[libc] Implement strcasestr
Differential Revision: https://reviews.llvm.org/D142518
Campbell Suter [Wed, 25 Jan 2023 14:12:19 +0000 (17:12 +0300)]
[RS4GC] Remove the hardcoded GC strategy names (v2)
Previously, RewriteStatepointsForGC had a hardcoded list of GC
strategies for which it would run, and using it with a custom strategy
required patching LLVM.
The logic for selecting the variables that are considered managed was
also hardcoded to use pointers in address space 1, rather than
delegating to GCStrategy::isGCManagedPointer.
This patch fixes both of these flaws: this pass now applies to all
functions whose GCStrategy returns true for useStatepoints, and checking
if a pointer is managed or not is also now done by the strategy.
One potentially questionable design decision in this change: the pass will
be enabled for all GC strategies that use statepoints. It seems unlikely
this would be a problem - consumers that don't use this pass probably
aren't adding it to the pass manager anyway - but if you had two different
GC strategies and only one wants this pass enabled then that'd need a new
flag in GCStrategy, which I can add if anyone thinks it's necessary.
This is an updated version of D140458, rebased to account for LLVM's
changes since D140504 (required by this patch) landed.
Reviewed By: dantrushin
Differential Revision: https://reviews.llvm.org/D141110
Denis Antrushin [Wed, 25 Jan 2023 17:17:06 +0000 (20:17 +0300)]
Fix assertion in GCStrategy.
It meant to check that `UseRS4GC` requires `UseStatepoints`.
Instead it always required `UseStatepoints` when `useRS4GC()`
was called.
Sergei Barannikov [Mon, 23 Jan 2023 13:52:20 +0000 (16:52 +0300)]
[llvm-ml] Disallow '{' and '}' at the start of a statement
'{', '}' and (conditionally) '*' were allowed at the start of a
statement. This behavior was copied from AsmParser, where they were
added to support Hexagon bundles (braces) and BFP memory instructions
(the star).
MASM dialect is x86-specific and does not allow these symbols to be
used at the beginning of an instruction.
Worth noting that '{' is a valid first character in AT&T syntax
(e.g. "{vex} vpmadd52huq ..."); MASM variant is to omit the braces.
Reviewed By: epastor
Differential Revision: https://reviews.llvm.org/D142321
Valentin Clement [Wed, 25 Jan 2023 17:38:34 +0000 (18:38 +0100)]
[flang] Fix element indexing in derived type default initialization
Derived type default initialization was not taking the step into
consideration.
```
module dt_init
type p1
integer :: a
end type
type, extends(p1) :: p2
integer :: b = 10
end type
contains
subroutine init_dt(z)
class(p1), intent(out) :: z(:)
select type(z)
type is (p2)
print*,z
end select
end subroutine
end module
program test
use dt_init
type(p2) :: t(6) = [ p2(1,2),p2(3,4),p2(5,6),p2(7,8),p2(9,10),p2(11,12) ]
print*,t
call init_dt(t(::2))
print*,t
end program
```
Without the fix, the three first elements are initialized
```
1 2 3 4 5 6 7 8 9 10 11 12
1 10 5 10 9 10
1 10 3 10 5 10 7 8 9 10 11 12
```
Where it should be element number 1,3,5
```
1 2 3 4 5 6 7 8 9 10 11 12
1 10 5 10 9 10
1 10 3 4 5 10 7 8 9 10 11 12
```
Reviewed By: klausler
Differential Revision: https://reviews.llvm.org/D142527
Jay Foad [Wed, 25 Jan 2023 11:29:12 +0000 (11:29 +0000)]
[BOLT] Use MCInstrDesc::operands() instead of OpInfo
operands() is the preferred accessor since D142213. OpInfo will be
removed in D142219.
Differential Revision: https://reviews.llvm.org/D142530
Michael Kruse [Wed, 25 Jan 2023 17:07:47 +0000 (11:07 -0600)]
[Polly] Remove failing Polly-ACC test.
The test has been failing since after last update of ISL (
a749e09e).
Kirill Stoimenov [Wed, 25 Jan 2023 17:04:07 +0000 (17:04 +0000)]
[LSAN] Attempt to fix the ppc64 build by excluding unsupported test
Reviewed By: kstoimenov
Differential Revision: https://reviews.llvm.org/D142561
Mateja Marjanovic [Wed, 25 Jan 2023 15:48:56 +0000 (16:48 +0100)]
[AMDGPU] Make flat_offset a 32-bit operand instead of 16-bits
Differential Revision: https://reviews.llvm.org/D142549
Alex Brachet [Wed, 25 Jan 2023 16:49:10 +0000 (16:49 +0000)]
[libc] Fix warning in ExecuteFunctionUnix.cpp
WIFEXITED and friends expect an `int *` but these methods
were marked `const` so they instead got a `const int *`.
This macros aren't actually modifying their argument, but
we were never using these functions on an immutable
`ProcessStatus` type anyway.
Michael Kruse [Wed, 25 Jan 2023 15:56:22 +0000 (09:56 -0600)]
[Polly] Update ISL to isl-0.25-193-g8621c60c.
The bugfix https://reviews.llvm.org/D142308 might already have been
fixed upstream.
Alex Brachet [Wed, 25 Jan 2023 16:42:34 +0000 (16:42 +0000)]
[libc] Templatize strstr
Differential Revision: https://reviews.llvm.org/D142517
Florian Hahn [Wed, 25 Jan 2023 16:32:40 +0000 (16:32 +0000)]
[VPlan] Use VPDominatorTree in VPlanVerifier .
Use VPDominatorTree to generalize def-use verification.
Depends on D140513.
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D140514
Timm Bäder [Sat, 31 Dec 2022 15:44:41 +0000 (16:44 +0100)]
[clang][Interp][NFC] Refector OffsetHelper
There was a FIXME comment for this. Stop getting the values in
OffsetHelper and let the caller do that instead, so we can control
whether the value(s) are removed from the stack at all.
Also use ArithOp instead of the unclear boolean for Add.
Kazu Hirata [Wed, 25 Jan 2023 16:21:29 +0000 (08:21 -0800)]
Fix warnings
This patch fixes:
clang-tools-extra/clangd/Hover.cpp:1036:28: warning: unused variable
‘MTE’ [-Wunused-variable]
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:22295:19: error:
unused variable 'AN' [-Werror,-Wunused-variable]
Timm Bäder [Sat, 31 Dec 2022 11:53:02 +0000 (12:53 +0100)]
[clang][Interp][NFC] Cast in InterpFrame::localBlock
We know we save a Block* here, so do the cast there instead of
everywhere we're calling this function.
Timm Bäder [Sat, 31 Dec 2022 08:53:56 +0000 (09:53 +0100)]
[clang][Interp][NFCI] Remove an unnecessary DupPtr op
When initializing a primitive array, we don't need to dup the base
pointer for every element.
Xiang Li [Wed, 25 Jan 2023 15:26:01 +0000 (10:26 -0500)]
[mlir] fix crash when call a function decl
Check region before use it.
Fixes #60215 https://github.com/llvm/llvm-project/issues/60215
Differential Revision: https://reviews.llvm.org/D142544
Timm Bäder [Wed, 28 Dec 2022 08:34:47 +0000 (09:34 +0100)]
[clang][Interp] Add back Run() call
We need to run the functions we compiled immediately after to check if
they can ever be a constant expression.
Differential Revision: https://reviews.llvm.org/D140724
Timm Bäder [Wed, 28 Dec 2022 08:44:21 +0000 (09:44 +0100)]
[clang][Interp][NFC] Use InitThisField in initializers
This creates fewer instructions, makes the bytecode easier to read and
InitThisField also cares about checkingPotentialConstantExpression()
cases.
Timm Bäder [Mon, 26 Dec 2022 10:49:58 +0000 (11:49 +0100)]
[clang][Interp][NFC] Add a helper function for local variables
... in EvalEmitter.
Timm Bäder [Fri, 23 Dec 2022 06:56:58 +0000 (07:56 +0100)]
[clang][Interp][NFC] Replace remaining dyn_cast_or_null uses
David Green [Wed, 25 Jan 2023 15:36:01 +0000 (15:36 +0000)]
[AArch64] Remove HasCrypto tablegen predicate. NFC
This is unused, with all relevant patterns and instructions using the
HasAES / HasSHA2 / HasSHA3 / HasSM4 predicates.
Joseph Huber [Wed, 25 Jan 2023 15:30:51 +0000 (09:30 -0600)]
[Clang] Make the linker wrapper test require Linux
Summary:
We only support this offloading on Linux currently, and this handling of
static libraries is mostly based on Linux systems. So we should only
test those systems for now until we expland to other operating systems
in the future.
Timm Bäder [Tue, 20 Dec 2022 09:19:56 +0000 (10:19 +0100)]
[clang][Interp] Compound assign operators for FP values
Differential Revision: https://reviews.llvm.org/D140377
Timm Bäder [Sat, 10 Dec 2022 07:15:09 +0000 (08:15 +0100)]
[clang][Interp][NFC] Get rid of InterpSize
Timm Bäder [Wed, 7 Dec 2022 15:18:29 +0000 (16:18 +0100)]
[clang][Interp][NFC] Remove an unused function
Siu Chi Chan [Tue, 24 Jan 2023 16:31:04 +0000 (11:31 -0500)]
[AMDGCN] Fix device lib test to work with lib64
This change fixes an issue introduced by
https://reviews.llvm.org/D140315. A new unit test was added to validate
the search for the device libraries being placed in Clang's resource
directory; however, the test didn't take into account that certain
platforms use lib64 for 64-bit library directory.
Differential Revision: https://reviews.llvm.org/D142506
Change-Id: I9c31a4f08fbc383350d82d6aba01987a3ef63e51
Christian Ulmann [Wed, 25 Jan 2023 14:52:59 +0000 (15:52 +0100)]
[mlir][LLVM] Add result attribute import support
This commit introduces support for importing result attributes.
Depends on D142372
Reviewed By: gysit
Differential Revision: https://reviews.llvm.org/D142476
LLVM GN Syncbot [Wed, 25 Jan 2023 14:40:30 +0000 (14:40 +0000)]
[gn build] Port
cb7f58221101
MarcoFalke [Wed, 25 Jan 2023 14:39:35 +0000 (15:39 +0100)]
doc: Fix typo in clang-tidy no-automatic-move doc
The latter version is called NotCool in the source code and on godbolt.
Mehdi Amini [Wed, 25 Jan 2023 04:44:22 +0000 (20:44 -0800)]
Replace use of sprintf with snprint in SparseTensorRuntime.cpp (NFC)
This fixes a warning on MacOS:
warning: 'sprintf' is deprecated: This function is provided for compatibility
reasons only. Due to security concerns inherent in the design of sprintf(3),
it is highly recommended that you use snprintf(3) instead.
Mehdi Amini [Wed, 25 Jan 2023 04:43:38 +0000 (20:43 -0800)]
Exclude running MLIR tests for Toy example Ch6 and Ch7 when JIT is unavailable
Simon Pilgrim [Wed, 25 Jan 2023 12:55:55 +0000 (12:55 +0000)]
[ADT] FloatingPointMode.h - add missing closing namespace comment. NFC.
Fixes clang-tidy warning
Timm Bäder [Wed, 25 Jan 2023 14:19:17 +0000 (15:19 +0100)]
[clang][Interp] Add empty messages to static_asserts
To satisfy builders:
https://lab.llvm.org/buildbot/#/builders/216/builds/16264
Xiang Li [Tue, 17 Jan 2023 03:29:12 +0000 (22:29 -0500)]
[mlir][doc] Fix syntax for affine.dam_wait
Change dma_Start to dma_wait for affine.dma_wait.
Also change dma_Start to dma_start for affine.dma_start.
Differential Revision: https://reviews.llvm.org/D141887
Timm Bäder [Wed, 25 Jan 2023 13:51:16 +0000 (14:51 +0100)]
Re-apply "[clang][Interp] Support floating-point values"
Don't move the Repr struct into Integral this time.
Differential Revision: https://reviews.llvm.org/D134859
Christian Ulmann [Wed, 25 Jan 2023 13:59:24 +0000 (14:59 +0100)]
[mlir][LLVM] Add param attr verifiers
This commit introduces unified parameter attribute verifiers to the LLVM
dialect and removes according checks in the export. As LLVM does not
verify the validity of certain attributes on return values, this commit
unifies the handling of argument and result attributes wherever possible.
Depends on D142212
Reviewed By: gysit
Differential Revision: https://reviews.llvm.org/D142372
Erich Keane [Tue, 24 Jan 2023 20:49:24 +0000 (12:49 -0800)]
Fix one of the regressions found in revert of concept sugaring
It seems that the sugaring patches had some pretty significant
interdependencies, and at least one issue exists that requires part of
the concept-sugaring patch. I don't believe this to have anything to do
with the increased compile-times that were seen, so hopefully this will
fix our problems without further regressions.
See https://reviews.llvm.org/rG12cb1cb3720de8d164196010123ce1a8901d8122
for discussion.
Differential Revision: https://reviews.llvm.org/D142500
Krasimir Georgiev [Wed, 25 Jan 2023 14:00:10 +0000 (14:00 +0000)]
Kiran Chandramohan [Wed, 25 Jan 2023 13:37:54 +0000 (13:37 +0000)]
[Flang][Debug] Use pathnames from location of functions
This ensures that functions in included files have the correct path
in their file metadata.
Note: This patch also sets all locations to have the full path names.
Reviewed By: vzakhari, PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D142263
Timm Bäder [Wed, 25 Jan 2023 13:48:16 +0000 (14:48 +0100)]
Revert "[clang][Interp] Support floating-point values"
This reverts commit
62f43c3eae2460d4ca3da7897fd2d7c56920638c.
This breaks a couple of builders, e.g.
https://lab.llvm.org/buildbot/#/builders/139/builds/34925
Jay Foad [Tue, 24 Jan 2023 11:56:09 +0000 (11:56 +0000)]
[TableGen] Speed up computeUberSets. NFC.
Differential Revision: https://reviews.llvm.org/D142472
Jay Foad [Wed, 25 Jan 2023 11:40:19 +0000 (11:40 +0000)]
[MC] Remove MCInstrDesc::opInfo_begin/end, unused since D142213
Timm Bäder [Sun, 30 Oct 2022 06:28:56 +0000 (07:28 +0100)]
[clang][Interp] Support floating-point values
Add a new Floating type and a few new opcodes to support floating point
values.
Differential Revision: https://reviews.llvm.org/D134859
Nikita Popov [Wed, 25 Jan 2023 13:22:31 +0000 (14:22 +0100)]
[Polly] Convert some tests to opaque pointers (NFC)
Convert ScopInfo tests.
LLVM GN Syncbot [Wed, 25 Jan 2023 13:27:16 +0000 (13:27 +0000)]
[gn build] Port
a7a4463acbe1
Matt Devereau [Mon, 16 Jan 2023 09:20:17 +0000 (09:20 +0000)]
[LoopVectorize] Enable integer Mul and Add as select reduction patterns
This patch vectorizes Phi node loop reductions for select's whos condition
comes from a floating-point comparison, with its operands being integers
for Add, Sub, and Mul reductions.
Example:
int foo(float *x, int n) {
int sum = 0;
for (int i=0; i<n; ++i) {
float elem = x[i];
if (elem > 0) {
sum += 2;
}
}
return sum;
}
Differential Revision: https://reviews.llvm.org/D141842
Timm Bäder [Sat, 5 Nov 2022 13:04:56 +0000 (14:04 +0100)]
[clang][Interp] Array initialization via string literal
Differential Revision: https://reviews.llvm.org/D137488
Nikita Popov [Wed, 25 Jan 2023 13:15:01 +0000 (14:15 +0100)]
[MLIR] Remove LLVM typed pointer support
This breaks lowering to typed pointers, and forces import to always
use opaque pointers.
This has no effect on MLIR-level typed pointer support in the
LLVMIR dialect.
Benjamin Kramer [Wed, 25 Jan 2023 13:07:48 +0000 (14:07 +0100)]
[mlir][arith] Don't crash when folding a & ~a -> 0 on vectors
m_Constant happily accepts vector splats, so just use the generic way of
getting a zero attribute.
Timm Bäder [Sat, 5 Nov 2022 12:08:40 +0000 (13:08 +0100)]
[clang][Interp] Start implementing builtin functions
Differential Revision: https://reviews.llvm.org/D137487
Ingo Müller [Wed, 25 Jan 2023 10:04:32 +0000 (10:04 +0000)]
[mlir] Improve line breaks of code snippets in comments (NFC).
Reviewed By: ingomueller-net
Differential Revision: https://reviews.llvm.org/D142528
Timm Bäder [Wed, 25 Jan 2023 12:32:21 +0000 (13:32 +0100)]
[clang][Interp] Specify c++ standard used in switch test
As a follow up for
024e4f16ca795b98a5dea371cab623f851858925.
This should fix builders defaulting to pre-c++17.
E.g. https://lab.llvm.org/buildbot/#/builders/139/builds/34918
Paul Walker [Thu, 19 Jan 2023 13:45:36 +0000 (13:45 +0000)]
[SVE][InstrFormats] Explcitly set hasSideEffects for all SVE instructions.
The instruction property hasSideEffects relies on the presence of
tablegen isel patterns when constructing its value, unless
specifically overriden. Since adding SVE scheduling information
we've noticed this property flip-flop as isel patterns have been
updated. To make things consistent (and correct) this patch
explicitly sets the property for all SVE instructions.
This has resulted in the following notable changes:
* Normal load and store instructions no longer report having side
effects.
* All prefetch instructions correctly report having side effects.
* FFR related instructions continue to report having side effects.
This is likely overkill but I've chosen to remain cautious here.
* Most all integer instructions no longer report having side effects.
* Most all floating point instructions no longer report having side
effects, but do now report their potential for raising FP
exceptions. I do not know how to test the latter so I've again
took a caution route of taging all floating point instructions
except for DUPs.
* The conflict detection intrinsics now report they don't touch
memory.
NOTE: SVE isel makes significant use of psuedo instructions but
this patch makes no effort to update them.
NOTE: We'll need a similar patch for SME but without a scheduling
model it'll be harder to verify the results.
Differential Revision: https://reviews.llvm.org/D142122
Tomas Matheson [Wed, 25 Jan 2023 12:03:47 +0000 (12:03 +0000)]
[AArch64] Codegen for FEAT_LRCPC3
Implements support for the following 128-bit atomic operations with +rcpc3:
- 128-bit store-release -> STILP
- 128-bit load-acquire -> LDIAPP
D126250 and D137590 added support for emitting LDAPR (Load-Acquire RCPc) rather
than LDAP (Load-Acquire) when +rcpc is available. This patch allows emitting
the 128-bit RCPc instructions added in FEAT_LRCPC3 (LDIAPP/STILP). The
implementation is different from LDAPR, because there are no non-RCPc
equivalents for these new instructions.
Support for the offset variants will be added in D141431.
Reviewed By: lenary
Differential Revision: https://reviews.llvm.org/D141429
Florian Hahn [Wed, 25 Jan 2023 12:22:56 +0000 (12:22 +0000)]
[SCCP] Add extra tests for Add flag inference.
Add extra tests from #60280 and #60278 as well as test showing missed
optimization opportunity.