Florian Hahn [Wed, 27 Oct 2021 17:15:17 +0000 (18:15 +0100)]
[Clang] Add elementwise abs builtin.
This patch implements __builtin_elementwise_abs as specified in
D111529.
Reviewed By: aaron.ballman, scanon
Differential Revision: https://reviews.llvm.org/D111986
Tom Stellard [Wed, 27 Oct 2021 19:56:55 +0000 (12:56 -0700)]
utils/release: Add script for building release documentation
Reviewed By: hans, kuhnel
Differential Revision: https://reviews.llvm.org/D95284
Roman Lebedev [Wed, 27 Oct 2021 19:19:59 +0000 (22:19 +0300)]
Revert "[NFC] `IRBuilderBase::CreateAdd()`: place constant onto RHS"
Clang OpenMP codegen tests are failing,
will recommit afterwards.
This reverts commit
4723c9b3c6c46632a5d66e65d198899894b1e2c5.
Roman Lebedev [Wed, 27 Oct 2021 19:19:10 +0000 (22:19 +0300)]
Revert "[IR] `IRBuilderBase::CreateAdd()`: short-circuit `x + 0` --> `x`"
Clang OpenMP codegen tests are failing.
This reverts commit
288f1f8abe5835180a0021f142043ee261ab3846.
This reverts commit
cb90e5356ac1594e95fed8e208d6e0e9b6a87db1.
Nikita Popov [Wed, 27 Oct 2021 13:12:02 +0000 (15:12 +0200)]
[ConstantRange] Optimize smul_sat() (NFC)
Base the implementation on the APInt smul_sat() implementation,
which is much more efficient than performing calculations in
double the bitwidth.
Jez Ng [Wed, 27 Oct 2021 18:58:15 +0000 (14:58 -0400)]
[lld-macho] If export_size is zero, export_off must be zero
Otherwise tools like codesign_allocate will choke. We were already
handling this correctly for the other DYLD_INFO sections.
Doing this correctly is a bit subtle: we don't know if export_size will
be zero until we have run `ExportSection::finalizeContents()`. However,
we must still add the ExportSection to the `__LINKEDIT` segment in order
that it gets sorted during `sortSectionsAndSegments()`.
Reviewed By: #lld-macho, oontvoo
Differential Revision: https://reviews.llvm.org/D112589
Nikita Popov [Wed, 27 Oct 2021 12:58:34 +0000 (14:58 +0200)]
[BasicAA] Remove misleading overflow check
GEP decomposition currently checks whether the multiplication of
the linear expression offset and GEP scale overflows. However, if
everything else works correctly, this overflow check is both
unnecessary and dangerously misleading. While it will avoid an
overflow in Scale * Offset in particular, other parts of the
calculation (including those on dynamic values) may still overflow.
The code working on the decomposed GEPs is responsible for ensuring
that it remains correct in the presence of overflow. D112611 fixes
the last issue of that kind that I'm aware of (in fact, the overflow
check was originally introduced to work around precisely that issue).
Differential Revision: https://reviews.llvm.org/D112618
Danil Stefaniuc [Wed, 27 Oct 2021 18:54:19 +0000 (11:54 -0700)]
[formatters] Add a libstdcpp formatter for set and unify tests across stdlibs
This diff adds a data formatter for libstdcpp's set. Besides, it unifies the tests for set for libcxx and libstdcpp for maintainability.
Reviewed By: wallace
Differential Revision: https://reviews.llvm.org/D112537
Roman Lebedev [Wed, 27 Oct 2021 18:52:32 +0000 (21:52 +0300)]
Nick Desaulniers [Wed, 27 Oct 2021 18:36:23 +0000 (11:36 -0700)]
[LowerTypeTests] Emit cfi_jt aliases regardless of function export
A constant complaint we get is that the __typeid__ symbols in the CFI
jump tables causes confusing stack traces in applications. Emit the more
readable cfi_jt aliases regardless of function export (LTO vs Thin LTO).
Reviewed By: pcc, tejohnson
Differential Revision: https://reviews.llvm.org/D107934
Roman Lebedev [Wed, 27 Oct 2021 17:35:55 +0000 (20:35 +0300)]
[IR] `IRBuilderBase::CreateAdd()`: short-circuit `x + 0` --> `x`
There's precedent for that in `CreateOr()`/`CreateAnd()`.
The motivation here is to avoid bloating the run-time check's IR
in `SCEVExpander::generateOverflowCheck()`.
Refs. https://reviews.llvm.org/D109368#3089809
Roman Lebedev [Wed, 27 Oct 2021 16:58:10 +0000 (19:58 +0300)]
[NFC] `IRBuilderBase::CreateAdd()`: place constant onto RHS
Philip Reames [Wed, 27 Oct 2021 17:51:03 +0000 (10:51 -0700)]
[Operator] Add hasPoisonGeneratingFlags [mostly NFC]
This method parallels the dropPoisonGeneratingFlags on Instruction, but is hoisted to operator to handle constant expressions as well.
This is mostly code movement, but I did go ahead and add the inrange constexpr gep case. This had been discussed previously, but apparently never followed up o.
Alexey Bataev [Wed, 27 Oct 2021 18:16:20 +0000 (11:16 -0700)]
Revert "[SLP]Improve/fix reordering of the gathered graph nodes."
This reverts commit
64d1617d18cb8b6f9511d0eda481fc5a5d0ebddf to fix test
non-stability.
Michael Jones [Wed, 27 Oct 2021 18:11:29 +0000 (11:11 -0700)]
[libc][obvious] fix strdup being listed twice
strdup was being included even if malloc wasn't and that was causing
a build failure.
Differential Revision: https://reviews.llvm.org/D112641
Douglas Yung [Wed, 27 Oct 2021 17:49:52 +0000 (10:49 -0700)]
Add "REQUIRES: native" to test.
This test was failing on the PS4 bot because the test attempts to link, but the PS4 platform requires an external
linker that is not present, causing the test to fail. This should get the PS4 bot green again.
Nico Weber [Mon, 25 Oct 2021 14:25:14 +0000 (10:25 -0400)]
[lld/mac] Don't assert when ICFing arm64 code
WordLiteralSection dedupes literals by content.
WordLiteralInputSection::getOffset() used to read a literal at the passed-in
offset and look up this value in the deduping map to find the offset of the
deduped value.
But it's possible that (e.g.) a 16-byte literal's value is accessed 4 bytes in.
To get the offset at that address, we have to get the deduped value at offset 0
and then apply the offset 4 to the result.
(See also WordLiteralSection::finalizeContents() which fills in those maps.)
Only a problem on arm64 because in x86_64 the offset is part of the instruction
instead of a separate ARM64_RELOC_ADDEND relocation. (See bug for more details.)
Fixes PR51999.
Differential Revision: https://reviews.llvm.org/D112584
Alexandre Rames [Wed, 27 Oct 2021 17:51:35 +0000 (10:51 -0700)]
[MLIR] Remove the unused `ArithmeticCastOp`.
This was deprecated as part of
a54f4eae0e1d0ef5adccdcf9f6c2b518dc1101aa.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D112638
Sam Clegg [Wed, 27 Oct 2021 01:31:05 +0000 (18:31 -0700)]
[lld][WebAssebmly] Convert tests to use disassembly. NFC
Differential Revision: https://reviews.llvm.org/D112590
Kirill Bobyrev [Wed, 27 Oct 2021 17:31:39 +0000 (19:31 +0200)]
[clangd] IncludeCleaner: Do not process locations in built-in files
Doing otherwise leads to crashing. Way to reproduce: open "gmock/gmock.h" in
the LLVM source tree.
Reviewed By: kadircet
Differential Revision: https://reviews.llvm.org/D112608
Michael Jones [Tue, 19 Oct 2021 23:14:22 +0000 (16:14 -0700)]
[libc] add strdup implementation
Add an implementation for strdup.
Reviewed By: lntue, sivachandra
Differential Revision: https://reviews.llvm.org/D111584
Michael Jones [Tue, 19 Oct 2021 23:06:52 +0000 (16:06 -0700)]
[libc] add malloc funcs as external entrypoints
malloc, calloc, realloc, and free are all functions that other libc
functions depend on, but are pulled from external sources, instead of
having an internal implementation. This patch adds a way to include
functions like that as entrypoints in the list of external entrypoints,
and includes the malloc functions using this new path.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D112104
Michael Liao [Wed, 27 Oct 2021 16:45:18 +0000 (12:45 -0400)]
[cmake] Surpress cmake warning on that EH requires RTTI. NFC.
- Both LLVM_REQUIRES_RTTI and LLVM_REQUIRES_EH are internal flags that
individual targets can use to force RTTI/EH. Turning off
LLVM_REQUIRES_RTTI should honor if that variable is set explicitly for
an individual target.
Fangrui Song [Wed, 27 Oct 2021 16:51:06 +0000 (09:51 -0700)]
[ELF] Replace InputBaseSection::{areRelocsRela,firstRelocation,numRelocation} with relSecIdx
For `InputSection` `.foo`, its `InputBaseSection::{areRelocsRela,firstRelocation,numRelocation}` basically
encode the information of `.rel[a].foo`. However, one uint32_t (the relocation section index)
suffices. See the implementation of `relsOrRelas`.
This change decreases sizeof(InputSection) from 184 to 176 on 64-bit Linux.
The maximum resident set size linking a large application (1.2G output) decreases by 0.39%.
Differential Revision: https://reviews.llvm.org/D112513
Roman Lebedev [Wed, 27 Oct 2021 16:13:49 +0000 (19:13 +0300)]
[IR] `SCEVExpander::generateOverflowCheck()`: short-circuit `umul_with_overflow`-by-one
It's a no-op, no overflow happens ever: https://alive2.llvm.org/ce/z/Zw89rZ
While generally i don't like such hacks,
we have a very good reason to do this: here we are expanding
a run-time correctness check for the vectorization,
and said `umul_with_overflow` will not be optimized out
before we query the cost of the checks we've generated.
Which means, the cost of run-time checks would be artificially inflated,
and after https://reviews.llvm.org/D109368 that will affect
the minimal trip count for which these checks are even evaluated.
And if they aren't even evaluated, then the vectorized code
certainly won't be run.
We could consider doing this in IRBuilder, but then we'd need to
also teach `CreateExtractValue()` to look into chain of `insertvalue`'s,
and i'm not sure there's precedent for that.
Refs. https://reviews.llvm.org/D109368#3089809
Fangrui Song [Wed, 27 Oct 2021 16:35:30 +0000 (09:35 -0700)]
[ELF][X86] Write R_X86_64_TLSDESC addends with -z rel
Similar to D100544 for AArch64.
Reviewed By: arichardson
Differential Revision: https://reviews.llvm.org/D112592
Kazu Hirata [Wed, 27 Oct 2021 16:22:31 +0000 (09:22 -0700)]
[X86] Remove getSETOpc (NFC)
This function seems to be unused for at least one year.
Kazu Hirata [Wed, 27 Oct 2021 16:22:29 +0000 (09:22 -0700)]
[X86] Remove NeedsRetpoline in X86AsmPrinter (NFC)
This field seems to be unused for at least one year.
Kazu Hirata [Wed, 27 Oct 2021 16:22:27 +0000 (09:22 -0700)]
[X86] Remove CallOperand in X86Operand (NFC)
This field seems to be unused for at least one year.
Dmitry Vyukov [Wed, 27 Oct 2021 16:01:38 +0000 (18:01 +0200)]
sanitizer_common: fix up onprint.cpp test
Commit D112602 ("sanitizer_common: tighten on_print hook test")
changed fopen to open in this test. fopen created the file
if if does not exist, but open does not. This was unnoticed
during local testing because lit is not hermetic and reuses
files from previous runs, but it started failing on bots.
Fix the open call.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D112630
Mikhail Dvorskiy [Wed, 27 Oct 2021 15:51:36 +0000 (18:51 +0300)]
[pstl] A hot fix for a reduction parallel pattern of OpenMP backend
Reviewed By: nadiasvertex, ldionne
Differential Revision: https://reviews.llvm.org/D112125
Alexey Bataev [Mon, 25 Oct 2021 14:32:35 +0000 (07:32 -0700)]
[SLP]Improve/fix reordering of the gathered graph nodes.
Gathered loads/extractelements/extractvalue instructions should be
checked if they can represent a vector reordering node too and their
order should ve taken into account for better graph reordering analysis/
Also, if the gather node has reused scalars, they must be reordered
instead of the scalars themselves.
Differential Revision: https://reviews.llvm.org/D112454
Raphael Isemann [Wed, 27 Oct 2021 15:42:57 +0000 (17:42 +0200)]
[lldb][NFC] Move a declaration in DWARFASTParserClang to its first use.
Djordje Todorovic [Wed, 27 Oct 2021 15:36:05 +0000 (17:36 +0200)]
[llvm-locstats] Move the test from D110621 into test/llvm-locstats/ dir
Aaron Ballman [Wed, 27 Oct 2021 15:24:00 +0000 (11:24 -0400)]
Fix consteval crash when transforming 'this' expressions
When reaching the end of a function body, we need to ensure that the
ExitFunctionBodyRAII object is destroyed before we pop the declaration context
for the function. Exiting the function body causes us to handle immediate
invocations, which involves template transformations that need to know the
correct type for this.
This addresses PR48235.
Gabor Marton [Fri, 22 Oct 2021 08:12:38 +0000 (10:12 +0200)]
[Analyzer][solver] Handle adjustments in constraint assignor remainder
We can reuse the "adjustment" handling logic in the higher level
of the solver by calling `State->assume`.
Differential Revision: https://reviews.llvm.org/D112296
David Sherwood [Fri, 15 Oct 2021 11:54:58 +0000 (12:54 +0100)]
[NFC][LoopVectorize] Change getStepVector to take a Value* for the StartIdx
This patch changes the definition of getStepVector from:
Value *getStepVector(Value *Val, int StartIdx, Value *Step, ...
to
Value *getStepVector(Value *Val, Value *StartIdx, Value *Step, ...
because:
1. it seems inconsistent to pass some values as Value* and some as
integer, and
2. future work will require the StartIdx to be an expression made up
of runtime calculations of the VF.
In widenIntOrFpInduction I've changed the code to pass in the
value returned from getRuntimeVF, but the presence of the assert:
assert(!VF.isScalable() && "scalable vectors not yet supported.");
means that currently this code path is only exercised for fixed-width
VFs and so the patch is still NFC.
Differential revision: https://reviews.llvm.org/D111882
Roman Lebedev [Wed, 27 Oct 2021 14:31:29 +0000 (17:31 +0300)]
[IR] `IRBuilderBase::CreateAnd()`: short-circuit `x & 0` --> `0`
https://alive2.llvm.org/ce/z/YzPhSb
Refs. https://reviews.llvm.org/D109368#3089809
Roman Lebedev [Wed, 27 Oct 2021 14:04:07 +0000 (17:04 +0300)]
[IR] `IRBuilderBase::CreateAnd()`: fix short-circuiting for constant on LHS
Refs. https://reviews.llvm.org/D109368#3089809
Roman Lebedev [Wed, 27 Oct 2021 13:38:01 +0000 (16:38 +0300)]
[IR] `IRBuilderBase::CreateOr()`: fix short-circuiting for constant on LHS
There is no guarantee that the constant is on RHS here,
we have to handle both cases.
Refs. https://reviews.llvm.org/D109368#3089809
Roman Lebedev [Wed, 27 Oct 2021 13:05:09 +0000 (16:05 +0300)]
[IR] `IRBuilderBase::CreateSelect()`: if cond is a constant i1, short-circuit
While we could emit such a tautological `select`,
it will stick around until the next instsimplify invocation,
which may happen after we count the cost of this redundant `select`.
Which is precisely what happens with loop vectorization legality checks,
and that artificially increases the cost of said checks,
which is bad.
There is prior art for this in `IRBuilderBase::CreateAnd()`/`IRBuilderBase::CreateOr()`.
Refs. https://reviews.llvm.org/D109368#3089809
Roman Lebedev [Wed, 27 Oct 2021 12:58:40 +0000 (15:58 +0300)]
[NFC] Re-autogenerate check lines in some tests to ease of future update
Gabor Marton [Mon, 25 Oct 2021 16:10:12 +0000 (18:10 +0200)]
[Analyzer][solver] Simplification: reorganize equalities with adjustment
Initiate the reorganization of the equality information during symbol
simplification. E.g., if we bump into `c + 1 == 0` during simplification
then we'd like to express that `c == -1`. It makes sense to do this only
with `SymIntExpr`s.
Reviewed By: steakhal
Differential Revision: https://reviews.llvm.org/D111642
OCHyams [Wed, 27 Oct 2021 14:27:16 +0000 (15:27 +0100)]
[dexter] Fix failing regression tests
D109833 makes the flags `--builder` and `--binary` mutually exclusive, which
caused some regression tests to fail. Add a new substitution
`%dexter_regression_base` that doesn't include the `--builder`, `--cflags` or
`--ldflags` flags and use that for tests that use the `--binary` flag.
Reviewed By: jmorse
Differential Revision: https://reviews.llvm.org/D112624
Alexey Bataev [Wed, 27 Oct 2021 14:31:36 +0000 (07:31 -0700)]
Revert "[SLP]Improve/fix reordering of the gathered graph nodes."
This reverts commit
f719b794bcaa1df8fa82659d6d4e754c77d2f94e to fix
instability in tests.
AndreyChurbanov [Wed, 27 Oct 2021 13:54:25 +0000 (16:54 +0300)]
[OpenMP][NFC] disable test on power because of -mlong-double-80 option
AndreyChurbanov [Wed, 27 Oct 2021 13:38:09 +0000 (16:38 +0300)]
[OpenMP] libomp: Fix possible NULL dereference.
According to dlsym description, the value of symbol could be NULL,
and there is no error in this case. Thus dlerror will also return NULL in
this case. We need to check the value returned by dlerror before printing it.
Differential Revision: https://reviews.llvm.org/D112174
Nico Weber [Wed, 27 Oct 2021 13:52:17 +0000 (09:52 -0400)]
fix comment typos to cycle bots
Nico Weber [Wed, 27 Oct 2021 13:37:45 +0000 (09:37 -0400)]
[gn build] Use LLD as host linker by default on macOS if clang_base_path is set
lld/mac should be stable enough to use it as host linker. I've been
using `use_lld=true` in my local args.gn for many months now and it
works fine (and links much faster than ld64).
Differential Revision: https://reviews.llvm.org/D112622
Nico Weber [Wed, 27 Oct 2021 13:43:42 +0000 (09:43 -0400)]
fix comment typos to cycle bots
Nico Weber [Wed, 27 Oct 2021 13:34:25 +0000 (09:34 -0400)]
[gn build] Add lldb to default target on Windows
It seems to build fine (even though some tests fail), so might
as well let the bots build it. If it turns out to break a lot,
we can always turn it back off.
Differential Revision: https://reviews.llvm.org/D112620
Jeremy Morse [Wed, 27 Oct 2021 13:19:16 +0000 (14:19 +0100)]
[DebugInfo][NFC] Initialize a new object field in unittests
Over in
e7084ceab3122 the InstrRefBasedLDV class grew a MachineRegisterInfo
pointer to lookup register sizes -- however, that field wasn't initialized
in the corresponding unit tests. This patch initializes it!
Fixes a buildbot failure reported on D112006
Kerry McLaughlin [Tue, 26 Oct 2021 09:37:52 +0000 (10:37 +0100)]
[SVE][CodeGen] Fix incorrect legalisation of zero-extended masked loads
PromoteIntRes_MLOAD always sets the extension type to `EXTLOAD`, which
results in a sign-extended load. If the type returned by getExtensionType()
for the load being promoted is something other than `NON_EXTLOAD`, we
should instead pass this to getMaskedLoad() as the extension type.
Reviewed By: CarolineConcatto
Differential Revision: https://reviews.llvm.org/D112320
Dmitry Vyukov [Wed, 27 Oct 2021 08:42:26 +0000 (10:42 +0200)]
sanitizer_common: tighten on_print hook test
The new tsan runtime does not support arbitrary forms
of recursing into the runtime from hooks.
Disable instrumentation of the hook and use write instead
of fwrite (calls malloc internally).
The new version still recurses (write is intercepted),
but does not fail now (the issue at hand was malloc).
Depends on D112601.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D112602
Dmitry Vyukov [Wed, 27 Oct 2021 08:57:42 +0000 (10:57 +0200)]
tsan: switch sync test from EXPECT to CHECK
Gtest's EXPECT calls whole lot of libc functions
(mem*, malloc) even when EXPECT does not fail.
This does not play well with tsan runtime unit tests
b/c e.g. we call some EXPECTs with runtime mutexes locked.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D112601
Alexey Bataev [Mon, 25 Oct 2021 14:32:35 +0000 (07:32 -0700)]
[SLP]Improve/fix reordering of the gathered graph nodes.
Gathered loads/extractelements/extractvalue instructions should be
checked if they can represent a vector reordering node too and their
order should ve taken into account for better graph reordering analysis/
Also, if the gather node has reused scalars, they must be reordered
instead of the scalars themselves.
Differential Revision: https://reviews.llvm.org/D112454
Nico Weber [Wed, 27 Oct 2021 13:07:24 +0000 (09:07 -0400)]
[gn build] add build rule for llvm-locstats
Needed by tests after
30a3652b6ade.
Nico Weber [Tue, 26 Oct 2021 14:53:33 +0000 (10:53 -0400)]
[clang] Add range accessor for ObjCAtTryStmt catch_stmts and use it
No behavior change.
Differential Revision: https://reviews.llvm.org/D112543
Nico Weber [Tue, 26 Oct 2021 14:35:21 +0000 (10:35 -0400)]
[clang] Convert ObjCAtTryStmt to llvm::TrailingObjects
And make it final while here.
No behavior change.
Differential Revision: https://reviews.llvm.org/D112542
Caroline Concatto [Wed, 20 Oct 2021 21:38:02 +0000 (22:38 +0100)]
[SelectionDAG] Widening the result of INSERT_SUBVECTOR.
Widens the result and first input vector because they have the same size.
The subvector to be inserted is widened in the operand widen function.
Differential Revision: https://reviews.llvm.org/D112187
Nikita Popov [Mon, 25 Oct 2021 13:47:21 +0000 (15:47 +0200)]
[BasicAA] Handle known bits as ranges
BasicAA currently tries to determine that the offset is positive by
checking whether all variable indices are positive based on known
bits, multiplied by a positive scale. However, this is incorrect
if the scale multiplication might overflow. In the modified test
case the original value is positive, but may be negative after a
left shift.
Fix this by converting known bits into a constant range and reusing
the range-based logic, which handles overflow correctly.
Differential Revision: https://reviews.llvm.org/D112611
djtodoro [Fri, 15 Oct 2021 11:00:04 +0000 (13:00 +0200)]
[llvm-locstats] Report a warning if overflow was detected by llvm-dwarfdump
Catch that llvm-dwarfdump detected an overflow in statistics.
Differential Revision: https://reviews.llvm.org/D110621
Daniel Kiss [Wed, 27 Oct 2021 12:29:35 +0000 (14:29 +0200)]
Revert "[ARM] __cxa_end_cleanup should be called instead of _UnwindResume."
This reverts commit
da1d1a08694bbfe0ea7a23ea094612436e8a2dd0.
Jan Svoboda [Wed, 27 Oct 2021 11:57:35 +0000 (13:57 +0200)]
[clang][deps] Fix fragile test
This test was failing on GreenDragon.
Caitlyn Cano [Thu, 1 Jul 2021 20:41:51 +0000 (20:41 +0000)]
[mlir] gen_spirv_dialect.py: Some support for OCL ops generation
It is not complete and disabled by default, but it can be still useful.
Differential Revision: https://reviews.llvm.org/D111886
Sanjay Patel [Wed, 27 Oct 2021 11:53:14 +0000 (07:53 -0400)]
[x86] enhance mayFoldLoad to check alignment
As noted in D112464, a pre-AVX target may not be able to fold an
under-aligned vector load into another op, so we shouldn't report
that as a load folding candidate. I only found one caller where
this would make a difference -- combineCommutableSHUFP() -- so
that's where I added a test to show the (minor) regression.
Differential Revision: https://reviews.llvm.org/D112545
Kirill Bobyrev [Wed, 27 Oct 2021 11:52:44 +0000 (13:52 +0200)]
[clangd] NFC: Remove single-line braces in IncludeCleaner
Michał Górny [Wed, 27 Oct 2021 11:31:35 +0000 (13:31 +0200)]
[lldb] [docs] Remove obsolete recommonmark use
The recommonmark package is no longer required since all the documents
have been converted to .rst. Remove the related support code from
docs/conf.py.
Differential Revision: https://reviews.llvm.org/D112612
Matt [Tue, 12 Oct 2021 10:18:59 +0000 (10:18 +0000)]
[AArch64][SVE] Combine predicated FMUL/FADD into FMA
Combine FADD and FMUL intrinsics into FMA when the result of the FMUL is an FADD operand
with one only use and both use the same predicate.
Differential Revision: https://reviews.llvm.org/D111638
Alexandros Lamprineas [Mon, 20 Sep 2021 10:49:30 +0000 (11:49 +0100)]
[AArch64] Add support for the 'R' architecture profile.
This change introduces subtarget features to predicate certain
instructions and system registers that are available only on
'A' profile targets. Those features are not present when
targeting a generic CPU, which is the default processor.
In other words the generic CPU now means the intersection of
'A' and 'R' profiles. To maintain backwards compatibility we
enable the features that correspond to -march=armv8-a when the
architecture is not explicitly specified on the command line.
References: https://developer.arm.com/documentation/ddi0600/latest
Differential Revision: https://reviews.llvm.org/D110065
Alexey Bataev [Tue, 26 Oct 2021 14:12:45 +0000 (07:12 -0700)]
[SLP]Fix logical and/or reductions.
Need to emit select(cmp) instructions for poison-safe forms of select
ops. Currently alive reports that `Target is more poisonous than source`
for operations we generating for such instructions.
https://alive2.llvm.org/ce/z/FiNiAA
Differential Revision: https://reviews.llvm.org/D112562
Vignesh Balasubramanian [Wed, 27 Oct 2021 10:49:07 +0000 (16:19 +0530)]
[OpenMP][OMPD] Implementation of OMPD debugging library - libompd.
This is a continuation of the review: https://reviews.llvm.org/D100183
It contains routines that retrieve OpenMP ICV values for OMPD.
Reviewed By: @hbae
Differential Revision: https://reviews.llvm.org/D100184
Pavel Labath [Wed, 27 Oct 2021 10:47:11 +0000 (12:47 +0200)]
[lldb] Modernize TestVLA.py
Use expect_expr/var_path instead of regular expect and substring checks
Michał Górny [Mon, 25 Oct 2021 20:55:48 +0000 (22:55 +0200)]
[lldb] [Host/ConnectionFileDescriptor] Refactor to improve code reuse
Refactor ConnectionFileDescriptor to improve code reuse for different
types of sockets. Unify method naming.
While at it, remove some (now-)dead code from Socket.
Differential Revision: https://reviews.llvm.org/D112495
Nikita Popov [Mon, 25 Oct 2021 16:47:51 +0000 (18:47 +0200)]
[BasicAA] Make range check more precise
Make the range check more precise by calculating the range of
potentially accessed bytes for both accesses and checking whether
their intersection is empty. In that case there can be no overlap
between the accesses and the result is NoAlias.
This is more powerful than the previous approach, because it can
deal with sign-wrapped ranges. In the test case the original range
is [-1, INT_MAX] but becomes [0, INT_MIN] after applying the offset.
This is a wrapping range, so getSignedMin/getSignedMax will treat
it as a full range. However, the range excludes the elements
[INT_MIN+1, -1], which is enough to prove NoAlias with an access
at offset -1.
Differential Revision: https://reviews.llvm.org/D112486
Roman Lebedev [Wed, 27 Oct 2021 09:48:16 +0000 (12:48 +0300)]
[NFC][LV][X86] Improve test coverage for masked mem ops
Eugene Zhulenev [Wed, 27 Oct 2021 10:18:47 +0000 (03:18 -0700)]
[mlir] Reduce the number of iterations in async microbenchmarks
Differential Revision: https://reviews.llvm.org/D112609
Florian Hahn [Wed, 27 Oct 2021 10:15:58 +0000 (11:15 +0100)]
[DSE] Add test case with 2 memcpys that should not be eliminated.
Vassil Vassilev [Wed, 27 Oct 2021 10:11:29 +0000 (10:11 +0000)]
[clang-repl] Remove redundant link libraries and drop unused file.
Many thanks to @thakis for pointing this out.
That commit should have been a part of https://reviews.llvm.org/D107049
Mikhail Dvorskiy [Fri, 22 Oct 2021 15:58:06 +0000 (18:58 +0300)]
[pstl] A hot compilation fix for MacOS, OpenMP backend; + full qualified names for some internal functions
Reviewed By: nadiasvertex, ldionne
Differential Revision: https://reviews.llvm.org/D112528
Sam McCall [Tue, 26 Oct 2021 13:27:07 +0000 (15:27 +0200)]
[clangd] Add integration test for crash handling
This replaces the test removed in
51be7061d025139ba66869d5d99c7157a3ae9edd
It is more principled and tests more critical cases: a crash while parsing.
We need two pieces of plumbing:
- a way to re-enable the crashing #pragmas via a flag, to test parse crashes
- a bit of reshuffling around ASTWorker execution so that we set up the
crash handler in both sync/async modes.
Sync mode is useful for debugging, so I tested both.
Differential Revision: https://reviews.llvm.org/D112565
Kirill Bobyrev [Wed, 27 Oct 2021 09:50:35 +0000 (11:50 +0200)]
[clangd] IncludeCleaner: Don't warn on system headers
This is a temporary hack to disable diagnostics for system headers. As of right
now, IncludeCleaner does not handle the Standard Library correctly and will
report most system headers as unused because very few symbols are defined in
top-level system headers. This will eventually be fixed, but for now we are
aiming for the most conservative approach with as little false-positive
warnings as possible. After the initial prototype and core functionality is
polished, I will turn back to handling the Standard Library as it requires
custom logic.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D112571
Salman Javed [Wed, 27 Oct 2021 09:38:52 +0000 (22:38 +1300)]
[clang-tidy] Correct typo in bugprone-easily-swappable-parameters
The string table `DefaultIgnoredParameterTypeSuffixes` has a typo:
`ForwardIt` is mistyped as `FowardIt`.
Correct typo and add test coverage.
Differential Revision: https://reviews.llvm.org/D112596
Pavel Labath [Tue, 26 Oct 2021 08:52:39 +0000 (10:52 +0200)]
Modernize Platform::GetOSKernelDescription
Jay Foad [Mon, 27 Sep 2021 15:05:54 +0000 (16:05 +0100)]
[LiveInterval] Add RemoveDeadValNo argument to removeSegment(iterator)
Add an optional bool RemoveDeadValNo argument to the
removeSegment(iterator) overload, for consistency with the other
overloads. This gives clients a way to remove dead valnos while also
getting an updated iterator returned (in the manner of vector::erase).
Use this to clean up some inefficient code in
LiveIntervals::repairOldRegInRange. NFC.
Differential Revision: https://reviews.llvm.org/D110560
Daniel Kiss [Wed, 27 Oct 2021 08:32:11 +0000 (10:32 +0200)]
[ARM] __cxa_end_cleanup should be called instead of _UnwindResume.
ARM EHABI[1] specifies the __cxa_end_cleanup to be called after cleanup.
It will call the UnwindResume.
__cxa_begin_cleanup will be called from libcxxabi while __cxa_end_cleanup is never called.
This will trigger a termination when a foreign exception is processed while UnwindResume is called
because the global state will be wrong due to the missing __cxa_end_cleanup call.
Additional test here: D109856
[1] https://github.com/ARM-software/abi-aa/blob/main/ehabi32/ehabi32.rst#941compiler-helper-functions
Reviewed By: logan
Differential Revision: https://reviews.llvm.org/D111703
David Sherwood [Mon, 4 Oct 2021 16:31:35 +0000 (17:31 +0100)]
[NFC][LoopVectorize] Remove setBestPlan in favour of getBestPlanFor
I have removed LoopVectorizationPlanner::setBestPlan, since this
function is quite aggressive because it deletes all other plans
except the one containing the <VF,UF> pair required. The code is
currently written to assume that all <VF,UF> pairs will live in the
same vplan. This is overly restrictive, since scalable VFs live in
different plans to fixed-width VFS. When we add support for
vectorising epilogue loops when the main loop uses scalable vectors
then we will the vplan for the main loop will be different to the
epilogue.
Instead I have added a new function called
LoopVectorizationPlanner::getBestPlanFor
that returns the best vplan for the <VF,UF> pair requested and leaves
all the vplans untouched. We then pass this best vplan to
LoopVectorizationPlanner::executePlan
which now takes an additional VPlanPtr argument.
Differential revision: https://reviews.llvm.org/D111125
Matthias Springer [Wed, 27 Oct 2021 07:40:26 +0000 (16:40 +0900)]
[mlir][linalg][bufferize] Add analysis fuzzer option
Analyze ops in a pseudo-random order to see if any assertions are triggered. Randomizing the order of analysis likely worsens the quality of the bufferization result (more out-of-place bufferizations). However, assertions should never fail, as that would indicate a problem with our implementation.
Differential Revision: https://reviews.llvm.org/D112581
Shraiysh Vaishay [Wed, 27 Oct 2021 06:48:00 +0000 (12:18 +0530)]
[MLIR][OpenMP] Added omp.atomic.read and omp.atomic.write
This patch supports the atomic construct (read and write) following
section 2.17.7 of OpenMP 5.0 standard. Also added tests and
verifier for the same.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D111992
Kirill Bobyrev [Wed, 27 Oct 2021 08:30:03 +0000 (10:30 +0200)]
[clangd] IncludeCleaner: Support macros
Collect the macro definition locations for all the macros used in the main
file.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D112447
Nicolas Vasilache [Tue, 26 Oct 2021 21:13:11 +0000 (21:13 +0000)]
[mlir][Linalg] NFC - Add additional control to lower vector.shape_cast ops
This also moves some code to a new patterns file.
Differential Revision: https://reviews.llvm.org/D112575
Nicolas Vasilache [Wed, 27 Oct 2021 07:48:39 +0000 (07:48 +0000)]
[mlir][Vector] Add InsertStridedSliceOp -> ShuffleOp for the rank-1 cases.
This also fixes the vector.shuffle C++ builder which had an incorrect type assumption that triggers with this new rewrite.
The vector.shuffle semantics were correct though.
Differential revision: https://reviews.llvm.org/D112578
Kadir Cetinkaya [Tue, 26 Oct 2021 17:10:26 +0000 (19:10 +0200)]
[clangd] Fix filename ranges while replaying preamble
Clangd used first token of filename as filename range rather than the
synthezied filename token. Unfortunately the former only contains `"` or `<` in
the raw lexing mode, resulting in wrong range information and breaking tidy
checks that relied on it.
Fixes https://github.com/clangd/clangd/issues/896.
Differential Revision: https://reviews.llvm.org/D112559
Arthur Eubanks [Wed, 27 Oct 2021 06:41:02 +0000 (23:41 -0700)]
[InferAddressSpaces] Make pass work with opaque pointers
Avoid getPointerElementType().
Dmitry Vyukov [Tue, 26 Oct 2021 14:37:11 +0000 (16:37 +0200)]
tsan: tidy up SCOPED_INTERCEPTOR_RAW
Don't leak caller_pc var from the macro
(it's not supposed to be used by interceptors).
Use UNUSED instead of (void) cast.
Depends on D112540.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D112541
Dmitry Vyukov [Tue, 26 Oct 2021 14:31:46 +0000 (16:31 +0200)]
tsan: remove real func check from interceptors
If the real function is not intercepted,
we are going to crash one way or another.
The question is just in the failure mode:
error message vs NULL deref. But the message
costs us a check in every interceptor and
they are not observed to be failing in real life
for a long time, also other sanitizers don't
have this check as well (also crash on
NULL deref if that happens).
Remove the check from non-debug mode.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D112540
Kazu Hirata [Wed, 27 Oct 2021 06:38:14 +0000 (23:38 -0700)]
[Hexagon] Remove set-but-unused variables (NFC)
Pavel Labath [Thu, 21 Oct 2021 18:13:45 +0000 (20:13 +0200)]
Remove ConstString from Language, LanguageRuntime, SystemRuntime and SymbolFile plugin names
Phoebe Wang [Wed, 27 Oct 2021 05:58:31 +0000 (13:58 +0800)]
[X86][NFC] Add the missed `break;` for
79f9dfef0da5
Uday Bondhugula [Tue, 19 Oct 2021 07:19:01 +0000 (12:49 +0530)]
[Clang][NFC] Clang CUDA codegen clean-up
Update an instance of dyn_cast -> cast and other NFC clang-tidy fixes
for Clang CUDA codegen.
Differential Revision: https://reviews.llvm.org/D112284