Usman Nadeem [Sat, 11 Sep 2021 00:57:29 +0000 (17:57 -0700)]
Revert "Revert "[AArch64][SVE][InstCombine] Canonicalize aarch64_sve_dup_x intrinsic to IR splat operation""
This reverts commit
eee7d225ded98f42d37c05ec292bbb18560ce06b.
Effectively relanding
98c37247d81dfc967ecc49eee7a15612b6510f67
after fixing the failing tests.
Change-Id: I5d7461aeb820a2d5f1895457d824a8de4d316ee5
Eric Christopher [Sat, 11 Sep 2021 01:10:16 +0000 (18:10 -0700)]
nullptr initialize variables, spotted on msan bots.
Keith Smiley [Thu, 2 Sep 2021 00:20:13 +0000 (17:20 -0700)]
[docs] Improve description of LLVM_BUILD_TESTS
This makes it clear that this only has an effect if you use the all
build target.
Differential Revision: https://reviews.llvm.org/D109113
Jason Molenda [Fri, 10 Sep 2021 23:56:48 +0000 (16:56 -0700)]
Recognize namespaced all_image_infos symbol name from dyld
In macOS 12, the symbol name for the dyld_all_image_infos struct
in dyld has a namespace qualifier. Search for it without qualification,
then with qualification when doing a by-name search. (lldb will
only search for it by name when loading a user process Mach-O corefile)
rdar://
76270013
owenca [Fri, 10 Sep 2021 08:03:01 +0000 (01:03 -0700)]
[clang-format] Restrict the special handling for K&R C to C/C++
Commits
58494c856a15,
f6bc614546e1, and
0fc27ef19670 added special
handlings for K&R C function definitions and caused some
JavaScript/TypeScript regressions which were addressed in D107267,
D108538, and D108620. This patch would have prevented these known
regressions and will fix any unknown ones.
Differential Revision: https://reviews.llvm.org/D109582
Joseph Huber [Thu, 9 Sep 2021 20:40:59 +0000 (16:40 -0400)]
[OpenMP] Add flag for setting debug in the offloading device
This patch introduces the flags `-fopenmp-target-debug` and
`-fopenmp-target-debug=` to set the value of a global in the device.
This will be used to enable or disable debugging features statically in
the device runtime library.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D109544
Joseph Huber [Fri, 10 Sep 2021 20:17:54 +0000 (16:17 -0400)]
[OpenMP] Add more verbose remarks for runtime folding
We peform runtime folding, but do not currently emit remarks when it is
performed. This is because it comes from the runtime library and is
beyond the users control. However, people may still wish to view this
and similar information easily, so we can enable this behaviour using a
special flag to enable verbose remarks.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D109627
Alex Langford [Fri, 10 Sep 2021 20:37:39 +0000 (13:37 -0700)]
[lldb] Remove unused typedefs from lldb-forward.h
Ye Luo [Mon, 6 Sep 2021 05:55:30 +0000 (00:55 -0500)]
[OpenMP][libomptarget] Add __tgt_target_return_t enum for __tgt_target_XXX return int
The defintion of OFFLOAD_SUCCESS and OFFLOAD_FAIL used in plugin APIs and libomptarget public APIs are not consistent.
Create __tgt_target_return_t for libomptarget public APIs.
Differential Revision: https://reviews.llvm.org/D109304
Johannes Doerfert [Fri, 10 Sep 2021 19:09:10 +0000 (14:09 -0500)]
Reapply "[OpenMP] Group side-effects to improve guarding efficiency"
This reapplies
ca134c3963d310c2868f08c211011d610b4eefb5, effectively
reverting commit
d2f206e0afeba2b08a42903cfb8ad97a7de8a92c.
Minor test changes to make the test pass.
Johannes Doerfert [Fri, 10 Sep 2021 18:44:41 +0000 (13:44 -0500)]
Reapply "[GlobalOpt][FIX] Do not embed initializers into AS!=0 globals""
This reapplies commit
7dbba3376f633cabcf4df568bc9ca95f44a35203, or, put
differently, this reverts commit
d9a8d20827dcddad831751bc38ff178e70f0b2f5.
The test now requires the amdgpu and nvptx backend explicitly as it
won't work without properly.
Rob Suderman [Fri, 27 Aug 2021 02:21:29 +0000 (19:21 -0700)]
[mlir][tosa] Add shape inference for tosa.while
Tosa.while shape inference requires repeatedly running shape inference across
the body of the loop until the types become static as we do not know the number
of iterations required by the loop body. Once the least specific arguments are
known they are propagated to both regions.
To determine the final end type, the least restrictive types are determined
from all yields.
Differential Revision: https://reviews.llvm.org/D108801
Mark Schimmel [Fri, 10 Sep 2021 20:01:51 +0000 (13:01 -0700)]
[ARC] Improve code generated for i32 ADDC/ADDE and SUBC/SUBE
This change improves the code generated for long long addition and subtraction
Differential Revision: https://reviews.llvm.org/D109615
Usman Nadeem [Fri, 10 Sep 2021 20:01:48 +0000 (13:01 -0700)]
Revert "[AArch64][SVE][InstCombine] Canonicalize aarch64_sve_dup_x intrinsic to IR splat operation"
This reverts commit
98c37247d81dfc967ecc49eee7a15612b6510f67.
Usman Nadeem [Fri, 10 Sep 2021 19:22:40 +0000 (12:22 -0700)]
[AArch64][SVE][InstCombine] Canonicalize aarch64_sve_dup_x intrinsic to IR splat operation
Differential Revision: https://reviews.llvm.org/D109118
Change-Id: I47adc1984a54bea02bf5a0a767b765afe7e16aa3
Jan Svoboda [Fri, 10 Sep 2021 19:36:49 +0000 (21:36 +0200)]
[clang][deps] Move tests to the Clang subdirectory
Sanjay Patel [Fri, 10 Sep 2021 17:01:45 +0000 (13:01 -0400)]
[InstCombine] add tests for sub of min/max intrinsics; NFC
Joseph Huber [Fri, 10 Sep 2021 18:11:18 +0000 (14:11 -0400)]
[OpenMP] Check OpenMP assumptions on call-sites as well
This patch adds functionality to check assumption attributes on call
sites as well.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D109376
Joseph Huber [Mon, 30 Aug 2021 23:52:48 +0000 (19:52 -0400)]
[OpenMP] Make CUDA math library functions SPMD amenable
This patch adds the SPMD amenable assumption to the CUDA math library
defintions in Clang. Previously these functions would block SPMD
execution on the device because they're intrinsic calls into the library
and can't be calculated. These functions don't have side-effects so they
are safe to execute in SPMD mode.
Depends on D105937
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D108958
Siva Chandra Reddy [Thu, 9 Sep 2021 19:11:54 +0000 (19:11 +0000)]
[libc] Add extension functions fedisableexcept, feenableexcept and fegetexcept.
Reviewed By: michaelrj
Differential Revision: https://reviews.llvm.org/D109613
Florian Mayer [Thu, 9 Sep 2021 09:09:26 +0000 (10:09 +0100)]
[hwasan] Do not instrument accesses to uninteresting allocas.
This leads to a statistically significant improvement when using -hwasan-instrument-stack=0: https://bit.ly/3AZUIKI.
When enabling stack instrumentation, the data appears gets better but not statistically significantly so. This is consistent
with the very moderate improvements I have seen for stack safety otherwise, so I expect it to improve when the underlying
issue of that is resolved.
Reviewed By: eugenis
Differential Revision: https://reviews.llvm.org/D108457
David Carlier [Fri, 10 Sep 2021 18:23:14 +0000 (19:23 +0100)]
[Sanitizers] intercept netent, protoent and mincore on FreeBSD.
netent on Linux in addition as well.
Reviewd By: vitalybuka
Differential Revision: https://reviews.llvm.org/D109287
Florian Mayer [Fri, 10 Sep 2021 08:49:07 +0000 (09:49 +0100)]
[stack-safety] Allow to determine safe accesses.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D109503
Nico Weber [Fri, 10 Sep 2021 18:13:42 +0000 (14:13 -0400)]
[clang] Fix typo in test from
a723310b4
We want the driver-level flag here, else the test passes for the wrong reasons.
See comments on https://reviews.llvm.org/D99901.
Kazu Hirata [Fri, 10 Sep 2021 18:11:31 +0000 (11:11 -0700)]
[CodeGen, Target] Use pred_empty and succ_empty (NFC)
Rumeet Dhindsa [Fri, 10 Sep 2021 17:59:31 +0000 (10:59 -0700)]
[lldb] Add support for debugging via the dynamic linker.
This patch adds support for shared library load when the executable is
called through ld.so.
Differential Revision:https://reviews.llvm.org/D108061
Roman Lebedev [Fri, 10 Sep 2021 17:20:10 +0000 (20:20 +0300)]
[clang] `aligned_alloc` allocation function specifies alignment in first arg, manifest that knowledge
Mainly, if a constant value was passed as an alignment,
then we correctly annotate the alignment of the returned value
of @aligned_alloc. And if it wasn't constant,
then we also don't loose that, but emit an assumption.
Roman Lebedev [Fri, 10 Sep 2021 16:35:38 +0000 (19:35 +0300)]
[NFCI][clang] Move allocation alignment manifestation for malloc-like into Sema from Codegen
... so that it happens right next to `AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()`,
which is good for consistency.
Roman Lebedev [Fri, 10 Sep 2021 16:35:31 +0000 (19:35 +0300)]
[NFC][clang] Improve test coverage for alignment manifestation on aligned allocation functions
Huihui Zhang [Fri, 10 Sep 2021 17:18:04 +0000 (10:18 -0700)]
[AArch64ISelLowering] Fix null pointer access in performSVEAndCombine.
When combining 'and' of an unsigned unpack and shuffle instruction,
bail early if shuffle is not constructed from a constant integer.
Reviewed By: paulwalker-arm
Differential Revision: https://reviews.llvm.org/D109556
Jon Chesterfield [Fri, 10 Sep 2021 17:35:29 +0000 (18:35 +0100)]
[openmp][amdgpu] Update SupportAndFAQ docs
Anton Afanasyev [Tue, 7 Sep 2021 10:16:55 +0000 (13:16 +0300)]
[AggressiveInstCombine] Add `udiv` and `urem` instrs to TruncInstCombine DAG
Add `udiv` and `urem` instructions to the DAG post-dominated by `trunc`,
allowing TruncInstCombine to reduce bitwidth of expressions containing these
instructions. It is sufficient to require that all truncated bits of both
operands are zeros: https://alive2.llvm.org/ce/z/yiithn
(`urem` case is identical).
Differential Revision: https://reviews.llvm.org/D109515
Anton Afanasyev [Thu, 9 Sep 2021 13:52:24 +0000 (16:52 +0300)]
[Test][AggressiveInstCombine] Add test for `udiv` and `urem`
Precommit test for D109515
Johannes Doerfert [Fri, 10 Sep 2021 17:24:00 +0000 (12:24 -0500)]
Revert "[OpenMP] Group side-effects to improve guarding efficiency"
This reverts commit
ca134c3963d310c2868f08c211011d610b4eefb5.
There seems to be a problem with the tests, investigating now:
https://lab.llvm.org/buildbot/#/builders/61/builds/14574
Johannes Doerfert [Fri, 10 Sep 2021 17:23:08 +0000 (12:23 -0500)]
Revert "[GlobalOpt][FIX] Do not embed initializers into AS!=0 globals"
This reverts commit
7dbba3376f633cabcf4df568bc9ca95f44a35203.
There seems to be a problem with the tests, investigating now:
https://lab.llvm.org/buildbot/#/builders/61/builds/14574
Johannes Doerfert [Mon, 23 Aug 2021 21:55:14 +0000 (16:55 -0500)]
[OpenMP][Docs] Remove old/outdated webpage
This should have happened a long time ago, now that openmp.llvm.org
redirects to openmp.llvm.org/docs we completely switched over to the
sphinx documentation page instead.
Reviewed By: JonChesterfield
Differential Revision: https://reviews.llvm.org/D108588
Johannes Doerfert [Tue, 13 Jul 2021 20:35:58 +0000 (15:35 -0500)]
[OpenMP] Encode `omp [...] assume[...]` assumptions with `omp[x]` prefix
Since these assumptions are coming from OpenMP it makes sense to mark
them as such in the generic IR encoding. Standardized assumptions will
be named
omp_ASSUMPTION_NAME
and extensions will be named
ompx_ASSUMPTION_NAME
which is the OpenMP 5.2 syntax for "extensions" of any kind.
This also matches what the OpenMP-Opt pass expects.
Summarized,
#pragma omp [...] assume[s] no_parallelism
now generates the same IR assumption annotation as
__attribute__((assume("omp_no_parallelism")))
Reviewed By: jhuber6
Differential Revision: https://reviews.llvm.org/D105937
Johannes Doerfert [Thu, 2 Sep 2021 19:12:22 +0000 (14:12 -0500)]
[GlobalOpt][FIX] Do not embed initializers into AS!=0 globals
Not all address spaces support initializers for globals and we can
therefore not set them without checking if they are allowed. This
patch adds a hook into TTI to check if an AS allows non-undef
initializers. We disable it for all but address space 0 by default,
NVPTX and AMDGPU targets allow all but address space 3.
Reviewed By: tra
Differential Revision: https://reviews.llvm.org/D109337
Johannes Doerfert [Wed, 11 Aug 2021 05:03:42 +0000 (00:03 -0500)]
[OpenMP] Group side-effects to improve guarding efficiency
When we guard side-effects as part of SPMDzation we do it for
consecutive instructions that need guarding. This patch will try to
reorder guarded side-effects in a block to decrease the number of
guarded regions we need. It does not use any smarts, e.g., alias
analysis, to move side-effects over non-interfering reads. Instead,
it only moves side-effects downwards to the next guarded side-effect
if there was nothing in between that could have possibly be affected.
Reviewed By: ggeorgakoudis
Differential Revision: https://reviews.llvm.org/D109070
David Green [Fri, 10 Sep 2021 17:03:54 +0000 (18:03 +0100)]
[ARM] Remove unused tblgen arguments. NFC
As per D109359, this removes or makes use of some of the existing unused
NEON and base ARM tblgn arguments.
Nikita Popov [Fri, 10 Sep 2021 16:13:08 +0000 (18:13 +0200)]
[CallLowering] Support opaque pointers
Always use the byval/inalloca/preallocated type (which is required
nowadays), don't fall back on the pointer element type.
This requires adding Function::getParamPreallocatedType() to
mirror the CallBase API, so that the templated code can work with
both.
Nikita Popov [Fri, 10 Sep 2021 16:15:40 +0000 (18:15 +0200)]
[IR] Remove unused parameter (NFC)
Craig Topper [Fri, 10 Sep 2021 16:03:59 +0000 (09:03 -0700)]
[RISCV] Enable CGP to sink splat operands of Add/Sub/Mul/Shl/LShr/AShr
LICM may have pulled out a splat, but with .vx instructions we
can fold it into an operation.
This patch enables CGP to reverse the LICM transform and move the
splat back into the loop.
I've started with the commutable integer operations and shifts, but we can
extend this with more operations in future patches.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D109394
Craig Topper [Thu, 9 Sep 2021 22:17:51 +0000 (15:17 -0700)]
[RISCV] Teach vsetvli insertion that stores don't use the policy bits in vtype.
This can avoid a vsetvl after a tail undisturbed operation.
Differential Revision: https://reviews.llvm.org/D109549
Michał Górny [Fri, 10 Sep 2021 16:02:21 +0000 (18:02 +0200)]
[lldb] [test] Remove parent check in Subprocess/clone-follow-child-softbp.test
Hopefully this will resolve the remaining flakiness.
Sam Clegg [Fri, 10 Sep 2021 08:46:03 +0000 (04:46 -0400)]
[lld][WebAssembly] Cleanup output of --verbose
Remove some unnecessary logging from wasm-ld when running under
`--verbose`. Unlike `-debug` this logging is available in release
builds. This change makes it little more minimal/readable.
Also, avoid compiling the `debugWrite` function in releaase builds
where it does nothing. This should remove a lot debug strings from
the binary, and avoid having to construct unused debug strings at
runtime.
Differential Revision: https://reviews.llvm.org/D109583
Michał Górny [Fri, 10 Sep 2021 14:34:20 +0000 (16:34 +0200)]
[lldb] [test] Skip A/vRun/QEnvironment* tests on Windows, and fix them
Skip A/vRun/QEnvironment* tests on Windows as testing for output is
known not to work there. Add a missing output check to the vRun test.
Michał Górny [Fri, 10 Sep 2021 14:27:29 +0000 (16:27 +0200)]
[lldb] [test] Attempt to fix gdb_remote_client A/vRun tests on Windows
Michał Górny [Fri, 10 Sep 2021 14:06:29 +0000 (16:06 +0200)]
[lldb] [test] Mark new launch/QEnvironment tests as llgs category
Michał Górny [Fri, 10 Sep 2021 14:03:02 +0000 (16:03 +0200)]
[lldb] [test] Skip file permission tests on Windows
David Green [Fri, 10 Sep 2021 14:06:31 +0000 (15:06 +0100)]
[ARM] Remove unused tblgen arguments. NFCI
As per D109359, this removes or makes use of some of the existing unused
MVE tblgn arguments.
Sam Clegg [Tue, 31 Aug 2021 11:04:31 +0000 (07:04 -0400)]
[WebAssembly][libObject] Avoid re-use of Section object during parsing
The re-use of this struct across iterations of the loop was causing
fields (specifically Name) to be incorrectly shared between multiple
sections.
Differential Revision: https://reviews.llvm.org/D108984
Saiyedul Islam [Fri, 10 Sep 2021 11:16:13 +0000 (16:46 +0530)]
[clang-offload-bundler] Fix compatibility testing for non-assert builds
Test using debug-only=CodeObjectComaptibility was failing in
non-assert builds, so it has been moved to a different file which
requires assert.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D109592
Nikita Popov [Sat, 4 Sep 2021 10:18:52 +0000 (12:18 +0200)]
[OpaquePtr] Forbid mixing typed and opaque pointers
Currently, opaque pointers are supported in two forms: The
-force-opaque-pointers mode, where all pointers are opaque and
typed pointers do not exist. And as a simple ptr type that can
coexist with typed pointers.
This patch removes support for the mixed mode. You either get
typed pointers, or you get opaque pointers, but not both. In the
(current) default mode, using ptr is forbidden. In -opaque-pointers
mode, all pointers are opaque.
The motivation here is that the mixed mode introduces additional
issues that don't exist in fully opaque mode. D105155 is an example
of a design problem. Looking at D109259, it would probably need
additional work to support mixed mode (e.g. to generate GEPs for
typed base but opaque result). Mixed mode will also end up
inserting many casts between i8* and ptr, which would require
significant additional work to consistently avoid.
I don't think the mixed mode is particularly valuable, as it
doesn't align with our end goal. The only thing I've found it to
be moderately useful for is adding some opaque pointer tests in
between typed pointer tests, but I think we can live without that.
Differential Revision: https://reviews.llvm.org/D109290
Filipp Zhinkin [Fri, 10 Sep 2021 13:06:48 +0000 (09:06 -0400)]
[InstCombine] add tests for X == 0 ? 0 : X * Y ; NFC
These are the tests for D108408 with current baseline results.
David Green [Fri, 10 Sep 2021 12:48:15 +0000 (13:48 +0100)]
[AArch64] Regenerate some test checks. NFC
This updates some mostly update_test_check test files and generates the
check lines with the script, making them more maintainable.
Jan Svoboda [Fri, 10 Sep 2021 12:44:18 +0000 (14:44 +0200)]
[clang][deps] Test diagnostic options are being respected
This patch tests code in D108976. This split is necessary to avoid temporary regression.
Depends on D108974,
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D109158
Jan Svoboda [Fri, 10 Sep 2021 12:42:11 +0000 (14:42 +0200)]
[clang][deps] Sanitize both instances of DiagnosticOptions
During dependency scanning, we generally want to suppress -Werror. Apply the same logic to the DiagnosticOptions instance used for command-line parsing.
This fixes a test failure on the PS4 bot, where the system header directory could not be found, which was reported due to -Werror being on the command line and not being sanitized.
Sander de Smalen [Fri, 10 Sep 2021 11:54:22 +0000 (12:54 +0100)]
[SelectionDAG] PromoteIntRes_EXTRACT_SUBVECTOR for scalable vectors (widening).
This patch implements legalization of EXTRACT_SUBVECTOR for the case
where the result needs promoting, and the input type requires widening.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D109509
Sander de Smalen [Fri, 10 Sep 2021 11:13:54 +0000 (12:13 +0100)]
[SelectionDAG] PromoteIntRes_EXTRACT_SUBVECTOR for scalable vectors.
This patch implements legalization of EXTRACT_SUBVECTOR for the case
where the result needs promoting, and the input type is either legal
or requires splitting.
The idea is that the operation is broken down into simpler steps,
by first extracting a smaller subvector until the input vector
becomes legal or requires promotion.
Reviewed By: CarolineConcatto
Differential Revision: https://reviews.llvm.org/D109313
Pavel Labath [Fri, 10 Sep 2021 12:16:00 +0000 (14:16 +0200)]
[lldb] Clean up Platform/CMakeLists.txt
Remove comments looking like preprocessor directives (thankfully cmake
does not have those yet), and sort the file.
Alex Zinenko [Fri, 10 Sep 2021 12:08:15 +0000 (14:08 +0200)]
[mlir] spelling and style changes in ReconcileUnrealizedCasts.cpp. NFC.
Michał Górny [Mon, 16 Aug 2021 17:33:07 +0000 (19:33 +0200)]
[lldb] [gdb-remote] Use standardized GDB errno values
GDB uses normalized errno values for vFile errors. Implement
the translation between them and system errno values in the gdb-remote
plugin.
Differential Revision: https://reviews.llvm.org/D108148
Michał Górny [Thu, 12 Aug 2021 15:01:30 +0000 (17:01 +0200)]
[lldb] [gdb-remote] Support QEnvironment fallback to hex-encoded
Fall back to QEnvironmentHexEncoded if QEnvironment is not supported.
The latter packet is an LLDB extension, while the former is universally
supported.
Add tests for both QEnvironment and QEnvironmentHexEncoded packets,
including both use due to characters that need escaping and fallback
when QEnvironment is not supported.
Differential Revision: https://reviews.llvm.org/D108018
Michał Górny [Wed, 11 Aug 2021 20:58:11 +0000 (22:58 +0200)]
[lldb] [gdb-remote] Implement the vRun packet
Implement the simpler vRun packet and prefer it over the A packet.
Unlike the latter, it tranmits command-line arguments without redundant
indices and lengths. This also improves GDB compatibility since modern
versions of gdbserver do not implement the A packet at all.
Make qLaunchSuccess not obligatory when using vRun. It is not
implemented by gdbserver, and since vRun returns the stop reason,
we can assume it to be successful.
Differential Revision: https://reviews.llvm.org/D107931
Michał Górny [Tue, 10 Aug 2021 11:01:34 +0000 (13:01 +0200)]
[lldb] [gdb-remote] Add fallbacks for vFile:mode and vFile:exists
Add a GDB-compatible fallback to vFile:fstat for vFile:mode, and to
vFile:open for vFile:exists. Note that this is only partial fallback,
as it fails if the file cannot be opened.
Differential Revision: https://reviews.llvm.org/D107811
Michał Górny [Tue, 10 Aug 2021 10:03:35 +0000 (12:03 +0200)]
[lldb] Add new commands and tests for getting file perms & exists
Add two new commands 'platform get-file-permissions' and 'platform
file-exists' for the respective bits of LLDB protocol. Add tests for
them. Fix error handling in GetFilePermissions().
Differential Revision: https://reviews.llvm.org/D107809
Michał Górny [Fri, 10 Sep 2021 09:17:08 +0000 (11:17 +0200)]
[lldb] [test] Move "platform connect" logic into a common class
Create a common GDBPlatformClientTestBase class and move the platform
select/connect logic there to reduce duplication.
Differential Revision: https://reviews.llvm.org/D109585
Anastasia Stulova [Fri, 10 Sep 2021 12:05:03 +0000 (13:05 +0100)]
[OpenCL][Docs] Update OpenCL 3.0 status info.
Update info on OpenCLSupport page to reflect changes
committed after release 13 branched.
Jan Svoboda [Fri, 10 Sep 2021 11:46:01 +0000 (13:46 +0200)]
[clang][tooling] Properly initialize DiagnosticsEngine for cc1 command-line construction
In `ToolInvocation::run`, the driver -> cc1 command-line transformation uses `DiagnosticsEngine` that wasn't completely initialized. This patch ensures `ProcessWarningOptions(DiagnosticsEngine&, const DiagnosticOptions &)` is called.
Depends on D108982.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D108974
Max Kazantsev [Fri, 10 Sep 2021 11:45:03 +0000 (18:45 +0700)]
[Test][NFC] Regenerate checks in test
Jan Svoboda [Fri, 10 Sep 2021 11:43:48 +0000 (13:43 +0200)]
[clang][deps] Use correct DiagnosticOptions for command-line handling
In this patch the dependency scanner starts using proper `DiagnosticOptions` parsed from the actual TU command-line in order to mimic what the actual compiler would do. The actual functionality will be enabled and tested in follow-up patches. (This split is necessary to avoid temporary regression.)
Depends on D108976.
Reviewed By: dexonsmith, arphaman
Differential Revision: https://reviews.llvm.org/D108982
Stephan Herhut [Fri, 10 Sep 2021 10:58:18 +0000 (12:58 +0200)]
[mlir][linalg] Fix bufferize pattern to allow unknown operations in body of generic
The original version of the bufferization pattern for linalg.generic would
manually clone operations within the region to the bufferized clone of the
operation. This triggers legality requirements on those operations in the
conversion infra. Instead, this now uses the rewriter to inline the region
instead, avoiding those legality requirements.
Differential Revision: https://reviews.llvm.org/D109581
Sjoerd Meijer [Fri, 3 Sep 2021 14:05:09 +0000 (15:05 +0100)]
[LoopFlatten] Make the analysis more robust after IV widening
LoopFlatten wasn't triggering on this motivating case after IV widening:
void foo(int *A, int N, int M) {
for (int i = 0; i < N; ++i)
for (int j = 0; j < M; ++j)
f(A[i*M+j]);
}
The reason was that the old induction phi nodes were getting in the way. These
narrow and dead induction phis are not always trivially dead, and having both
the narrow and wide IVs confused the analysis and caused it to bail. This adds
some extra bookkeeping for these old phis, so we can filter them out when
checks on phi nodes are performed. Other clean up passes will get rid of these
old phis and increment instructions.
As this was one of the motivating examples from the beginning, it was
surprising this wasn't triggering from C/C++ code. It looks like the IR and CFG
is just slightly different.
Differential Revision: https://reviews.llvm.org/D109309
Jan Svoboda [Fri, 10 Sep 2021 10:50:51 +0000 (12:50 +0200)]
[clang][tooling] Accept custom diagnostic options in ToolInvocation
This patch allows the clients of `ToolInvocation` to provide custom diagnostic options to be used during driver -> cc1 command-line transformation and parsing.
Tests covering this functionality are in a follow-up commit. To make this testable, the `DiagnosticsEngine` needs to be properly initialized via `CompilerInstance::createDiagnostics`.
Reviewed By: dexonsmith, arphaman
Differential Revision: https://reviews.llvm.org/D108976
Anastasia Stulova [Fri, 10 Sep 2021 11:29:11 +0000 (12:29 +0100)]
[OpenCL][Docs] Added ref to libclcxx
Linked libclcxx GitHub project page in C++ libraries
for OpenCL section on OpenCLSupport page.
Differential Revision: https://reviews.llvm.org/D109526
Anastasia Stulova [Mon, 6 Sep 2021 12:44:23 +0000 (13:44 +0100)]
[OpenCL][Docs] Update OpenCL 3.0 implementation status.
Update a section of OpenCLSupport page to reflect the latest
development in OpenCL 3.0 support for release 13.
Differential Revision: https://reviews.llvm.org/D109320
Raphael Isemann [Fri, 10 Sep 2021 11:10:09 +0000 (13:10 +0200)]
[lldb] Fix Clang modules build after D101329
D101329 introduces the Process:SaveCore function returning a
`llvm::Expected<bool>`. That function causes that Clang with -fmodules crashes
while compiling LLDB's PythonDataObjects.cpp. With enabled asserts Clang fails
because of:
Assertion failed: (CachedFieldIndex && "failed to find field in parent")
Crash can be reproduced by building via -DLLVM_ENABLE_MODULES=On with Clang
12.0.1 and then building PythonDataObjects.cpp.o .
Clang bug is tracked at rdar://
82901462
Jean Perier [Fri, 10 Sep 2021 11:07:13 +0000 (13:07 +0200)]
[flang] Signal EOR in non advancing IO and move to next record
When an end of record is met in non advancing IO:
- Set IOSTAT if present according to 12.11.4 (5).
- Position the file to the next record (12.11.4 (4)).
The previous code was only signaling EOR for fixed record length IO.
Reading at 12.11.4, I do not find the rational for this condition, so I
removed it.
It also does not seem the presence of padding should prevent
the EOR signaling.
The positionning to the next record was block when EOR is signaling
in FinishReadingRecord because ErrorHandler.isError() is true in this
case.
EOR in input is not an error, but I am not confident to modify
ErrorHandler.isError() to cover that. However, In FinishReadingRecord,
the code should not bail if the error is simply an end of record.
I did not check the SIZE requirements here because GetSize runtime is
not yet implemented.
Differential Revision: https://reviews.llvm.org/D109505
Michał Górny [Fri, 10 Sep 2021 10:51:13 +0000 (12:51 +0200)]
[lldb] [test] Synchronize before the breakpoint in fork tests
We set breakpoint on child_func, so synchronization inside it is too
late to guarantee ordering between the parent output and child
breakpoint. Split the function in two, and perform synchronization
before the breakpoint.
Differential Revision: https://reviews.llvm.org/D109591
Rosie Sumpter [Wed, 8 Sep 2021 12:42:33 +0000 (13:42 +0100)]
[SVE][LoopVectorize] Optimise code generated by widenPHIInstruction
For SVE, when scalarising the PHI instruction the whole vector part is
generated as opposed to creating instructions for each lane for fixed-
width vectors. However, in some cases the lane values may be needed
later (e.g for a load instruction) so we still need to calculate
these values to avoid extractelement being called on the vector part.
Differential Revision: https://reviews.llvm.org/D109445
Serge Bazanski [Fri, 10 Sep 2021 10:54:43 +0000 (10:54 +0000)]
[Lanai] implement wide immediate support
This fixes LanaiTTIImpl::getIntImmCost to return valid costs for i128
(and wider) values. Previously any immediate wider than
64 bits would cause Lanai llc to crash.
A regression test is also added that exercises this functionality.
Reviewed By: jpienaar
Differential Revision: https://reviews.llvm.org/D107091
Serge Bazanski [Fri, 10 Sep 2021 10:45:25 +0000 (10:45 +0000)]
[Lanai] fix MC / objdump
D78776 removed is{Call,Branch,UnconditionalBranch} guards in objdump
before calling MCInstrAnalysis::evaluateBranch. This is fine for other
architectures as they gracefully handle evaluateBranch being called on
non-branches. However, the Lanai MCInstrAnalysis implementation didn't
and that change caused it to crash.
This inserts the same guards back into Lanai's evaluateBranch
implementation and adds a smoke test that exercises `llc | objdump` so
this kind of regression is hopefully caught next time.
Reviewed By: jpienaar, MaskRay
Differential Revision: https://reviews.llvm.org/D107593
Jan Svoboda [Fri, 10 Sep 2021 10:44:17 +0000 (12:44 +0200)]
[clang][deps] NFC: Extract ModuleName initialization
Cheng Wang [Thu, 9 Sep 2021 10:05:06 +0000 (18:05 +0800)]
[libc] Check signs instead of values in memcmp unittests.
The C standard only guarantees the sign of return value. The exact return
value is implementation defined.
Reviewed By: gchatelet
Differential Revision: https://reviews.llvm.org/D109588
Jan Svoboda [Fri, 10 Sep 2021 10:17:06 +0000 (12:17 +0200)]
[clang][deps] NFC: Remove CompilationDatabase from DependencyScanningTool API
This patch simplifies the dependency scanner API. Depends on D108980.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D108981
Matthias Springer [Fri, 10 Sep 2021 10:06:13 +0000 (19:06 +0900)]
[mlir][scf] Loop peeling: Use scf.for for partial iteration
Generate an scf.for instead of an scf.if for the partial iteration. This is for consistency reasons: The peeling of linalg.tiled_loop also uses another loop for the partial iteration.
Note: Canonicalizations patterns may rewrite partial iterations to scf.if afterwards.
Differential Revision: https://reviews.llvm.org/D109568
Michał Górny [Fri, 10 Sep 2021 09:59:06 +0000 (11:59 +0200)]
[lldb] [gdb-server] Zero-initialize fields on WIN32
Michał Górny [Tue, 10 Aug 2021 16:36:11 +0000 (18:36 +0200)]
Reland "[lldb] [gdb-server] Implement the vFile:fstat packet"
Now with an #ifdef for WIN32.
Differential Revision: https://reviews.llvm.org/D107840
Michał Górny [Fri, 10 Sep 2021 09:43:24 +0000 (11:43 +0200)]
Revert "[lldb] [gdb-server] Implement the vFile:fstat packet"
This reverts commit
9e886fbb18b525c080c04f4a12bd481c9aa849c0. It breaks
on Windows.
Jan Svoboda [Mon, 30 Aug 2021 14:05:15 +0000 (16:05 +0200)]
[clang][deps] NFC: Remove CompilationDatabase from DependencyScanningWorker API
This patch simplifies the dependency scanner API. Depends on D108979.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D108980
Michał Górny [Tue, 10 Aug 2021 16:36:11 +0000 (18:36 +0200)]
[lldb] [gdb-server] Implement the vFile:fstat packet
Differential Revision: https://reviews.llvm.org/D107840
Michał Górny [Mon, 9 Aug 2021 19:25:18 +0000 (21:25 +0200)]
[lldb] [gdb-remote] Implement fallback to vFile:stat for GetFileSize()
Implement a fallback to getting the file size via vFile:stat packet
when the remote server does not implement vFile:size. This makes it
possible to query file sizes from remote gdbserver.
Note that unlike vFile:size, the fallback will not work if the server is
unable to open the file.
While at it, add a few tests for the 'platform get-size' command.
Differential Revision: https://reviews.llvm.org/D107780
David Green [Fri, 10 Sep 2021 09:08:57 +0000 (10:08 +0100)]
[AArch64] Rewrite addsub_ext.ll test. NFC
Rewrite this test to not rely on volatile stores in a large function,
just use separate functions like any other test would.
Jan Svoboda [Fri, 10 Sep 2021 08:24:16 +0000 (10:24 +0200)]
[clang][deps] NFC: Stop going through ClangTool
The dependency scanner currently uses `ClangTool` to invoke the dependency scanning action.
However, `ClangTool` seems to be the wrong level of abstraction. It's intended to be run over a collection of compile commands, which we actively avoid via `SingleCommandCompilationDatabase`. It automatically injects `-fsyntax-only` and other flags, which we avoid by calling `clearArgumentsAdjusters()`. It deduces the resource directory based on the current executable path, which we'd like to change to deducing from `argv[0]`.
Internally, `ClangTool` uses `ToolInvocation` which seems to be more in line with what the dependency scanner tries to achieve. This patch switches to directly using `ToolInvocation` instead. NFC.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D108979
Alfonso Sánchez-Beato [Fri, 10 Sep 2021 08:55:26 +0000 (09:55 +0100)]
[llvm-objcopy][COFF] Fix test for debug dir presence
If the number of directories was 6 (equal to the DEBUG_DIRECTORY
index), patchDebugDirectory() was run even though the debug directory
is actually the 7th entry. Use <= in the comparison to fix that.
This fixes https://llvm.org/PR51243
Differential Revision: https://reviews.llvm.org/D106940
Reviewed by: jhenderson
Cheng Wang [Sun, 5 Sep 2021 03:09:34 +0000 (11:09 +0800)]
[libc] Some clean work with memmove.
- Replace `move_byte_forward()` with `memcpy`. In `memcpy` implementation,
it copies bytes forward from beginning to end. Otherwise, `memmove` unit
tests will break.
- Make `memmove` unit tests work.
Reviewed By: gchatelet
Differential Revision: https://reviews.llvm.org/D109316
Florian Hahn [Fri, 10 Sep 2021 06:58:18 +0000 (08:58 +0200)]
[ARM] Remove unnecessary use of replaceSymbolicStrideSCEV (NFC).
When passing an empty strides map, there's nothing to replace for
replaceSymbolicStrideSCEV and it just returns the SCEV for Ptr. There
should be no need to call the function.
Reviewed By: SjoerdMeijer
Differential Revision: https://reviews.llvm.org/D109462
Tobias Gysi [Fri, 10 Sep 2021 08:34:56 +0000 (08:34 +0000)]
[mlir][linalg] Pass all operands to tile to the tile loop region builder (NFC).
Extend the signature of the tile loop nest region builder to take all operand values to use and not just the scf::For iterArgs. This change allows us to pass in all block arguments of TiledLoop and use them directly instead of replacing them after the loop generation.
Reviewed By: pifon2a
Differential Revision: https://reviews.llvm.org/D109569
Petr Hosek [Fri, 10 Sep 2021 07:07:07 +0000 (00:07 -0700)]
[CMake] Use NOT instead of STREQUAL
`<var> STREQUAL ""` fails when `<var>` is unset which can be the
case when using runtimes as top-level build. Use `NOT` instead.
Differential Revision: https://reviews.llvm.org/D109570