Arthur O'Dwyer [Mon, 23 Nov 2020 17:44:41 +0000 (12:44 -0500)]
[libc++] Remove _LIBCPP_CONSTEXPR_AFTER_CXX17_WITH_IS_CONSTANT_EVALUATED.
Zoe Carver says: "We decided that libc++ only supports C++20 constexpr algorithms
when `is_constant_evaluated` is also supported. Here's a link to the discussion."
https://reviews.llvm.org/D65721#inline-735682
Remove _LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED from tests, too.
See Louis's
5911e6a8857f146fb5a8f23af1d768aba25e7c3e if needed to fix bots.
I've applied `UNSUPPORTED: clang-8` preemptively to the altered tests;
I don't know for sure that this was needed, because no clang-8 buildbots
are triggered on pull requests.
Sam McCall [Fri, 20 Nov 2020 14:47:55 +0000 (15:47 +0100)]
[clangd] Mention when CXXThis is implicit in exposed AST.
Seeing an implicit this in the AST is pretty confusing I think.
While here, also mention when `this` is const.
Differential Revision: https://reviews.llvm.org/D91868
Nico Weber [Tue, 24 Nov 2020 14:43:22 +0000 (09:43 -0500)]
Fix driver test from
e16c0a9a689719
The test failed silently if lld wasn't built alongside clang.
But the test uses -###, so the "invalid linker name in -fuse-ld=lld"
diag didn't make clang fail, and something else happened to match
"-demangle", so the test passed.
To fix, pass -B to a directory with two empty +x files (which works
on non-Windows), and look for `"-demangle"` instead of just `-demangle`.
Also force linker_version to 0 and pass a darwin triple.
Differential Revision: https://reviews.llvm.org/D92028
Evgeny Leviant [Tue, 24 Nov 2020 15:27:59 +0000 (18:27 +0300)]
[llvm-mca] Fix processing thumb instruction set
Differential revision: https://reviews.llvm.org/D91704
diggerlin [Tue, 24 Nov 2020 15:23:57 +0000 (10:23 -0500)]
[NFC][AIX][XCOFF] change function name from getNumofGPRsSaved to getNumOfGPRsSaved
change function name from getNumofGPRsSaved to getNumOfGPRsSaved for class XCOFFTracebackTable
Reviewers: Jason Liu
Differential Revision: https://reviews.llvm.org/D91882
Evgeny Leviant [Tue, 24 Nov 2020 15:13:10 +0000 (18:13 +0300)]
[MC][ARM] Fix number of operands of tMOVSr
Differential revision: https://reviews.llvm.org/D92029
Nicolas Vasilache [Tue, 24 Nov 2020 14:23:57 +0000 (14:23 +0000)]
[mlir] NFC - Expose an OffsetSizeAndStrideOpInterface
This revision will make it easier to create new ops base on the strided memref abstraction outside of the std dialect.
OffsetSizeAndStrideOpInterface is an interface for ops that allow specifying mixed dynamic and static offsets, sizes and strides variadic operands.
Ops that implement this interface need to expose the following methods:
1. `getArrayAttrRanks` to specify the length of static integer
attributes.
2. `offsets`, `sizes` and `strides` variadic operands.
3. `static_offsets`, resp. `static_sizes` and `static_strides` integer
array attributes.
The invariants of this interface are:
1. `static_offsets`, `static_sizes` and `static_strides` have length
exactly `getArrayAttrRanks()`[0] (resp. [1], [2]).
2. `offsets`, `sizes` and `strides` have each length at most
`getArrayAttrRanks()`[0] (resp. [1], [2]).
3. if an entry of `static_offsets` (resp. `static_sizes`,
`static_strides`) is equal to a special sentinel value, namely
`ShapedType::kDynamicStrideOrOffset` (resp. `ShapedType::kDynamicSize`,
`ShapedType::kDynamicStrideOrOffset`), then the corresponding entry is
a dynamic offset (resp. size, stride).
4. a variadic `offset` (resp. `sizes`, `strides`) operand must be present
for each dynamic offset (resp. size, stride).
This interface is useful to factor out common behavior and provide support
for carrying or injecting static behavior through the use of the static
attributes.
Differential Revision: https://reviews.llvm.org/D92011
Nico Weber [Fri, 20 Nov 2020 18:57:44 +0000 (13:57 -0500)]
clang+lld: Improve clang+ld.darwinnew.lld interaction, pass -demangle
This patch:
- adds an ld64.lld.darwinnew symlink for lld, to go with
f2710d4b576,
so that `clang -fuse-ld=lld.darwinnew` can be used to test new
Mach-O lld while it's in bring-up. (The expectation is that we'll
remove this again once new Mach-O lld is the defauld and only Mach-O
lld.)
- lets the clang driver know if the linker is lld (currently
only triggered if `-fuse-ld=lld` or `-fuse-ld=lld.darwinnew` is
passed). Currently only used for the next point, but could be used
to implement other features that need close coordination between
compiler and linker, e.g. having a diag for calling `clang++` instead
of `clang` when link errors are caused by a missing C++ stdlib.
- lets the clang driver pass `-demangle` to Mach-O lld (both old and
new), in addition to ld64
- implements -demangle for new Mach-O lld
- changes demangleItanium() to accept _Z, __Z, ___Z, ____Z prefixes
(and updates one test added in D68014). Mach-O has an extra
underscore for symbols, and the three (or, on Mach-O, four)
underscores are used for block names.
Differential Revision: https://reviews.llvm.org/D91884
Ayal Zaks [Tue, 24 Nov 2020 10:15:18 +0000 (12:15 +0200)]
[LV] Keep Primary Induction alive when folding tail by masking
Fix PR47390.
The primary induction should be considered alive when folding tail by masking,
because it will be used by said masking; even when it may otherwise appear
useless: feeding only its own 'bump', which is correctly considered dead, and
as the 'bump' of another induction variable, which may wrongfully want to
consider its bump = the primary induction, dead.
Differential Revision: https://reviews.llvm.org/D92017
Yaxun (Sam) Liu [Fri, 23 Oct 2020 20:24:48 +0000 (16:24 -0400)]
[HIP] Fix regressions due to fp contract change
Recently HIP toolchain made a change to use clang instead of opt/llc to do compilation
(https://reviews.llvm.org/D81861). The intention is to make HIP toolchain canonical like
other toolchains.
However, this change introduced an unintentional change regarding backend fp fuse
option, which caused regressions in some HIP applications.
Basically before the change, HIP toolchain used clang to generate bitcode, then use
opt/llc to optimize bitcode and generate ISA. As such, the amdgpu backend takes
the default fp fuse mode which is 'Standard'. This mode respect contract flag of
fmul/fadd instructions and do not fuse fmul/fadd instructions without contract flag.
However, after the change, HIP toolchain now use clang to generate IR, do optimization,
and generate ISA as one process. Now amdgpu backend fp fuse option is determined
by -ffp-contract option, which is 'fast' by default. And this -ffp-contract=fast language option
is translated to 'Fast' fp fuse option in backend. Suddenly backend starts to fuse fmul/fadd
instructions without contract flag.
This causes wrong result for some device library functions, e.g. tan(-1e20), which should
return 0.8446, now returns -0.933. What is worse is that since backend with 'Fast' fp fuse
option does not respect contract flag, there is no way to use #pragma clang fp contract
directive to enforce fp contract requirements.
This patch fixes the regression by introducing a new value 'fast-honor-pragmas' for -ffp-contract
and use it for HIP by default. 'fast-honor-pragmas' is equivalent to 'fast' in frontend but
let the backend to use 'Standard' fp fuse option. 'fast-honor-pragmas' is useful since 'Fast'
fp fuse option in backend does not honor contract flag, it is of little use to HIP
applications since all code with #pragma STDC FP_CONTRACT or any IR from a
source compiled with -ffp-contract=on is broken.
Differential Revision: https://reviews.llvm.org/D90174
Hans Wennborg [Tue, 24 Nov 2020 13:08:42 +0000 (14:08 +0100)]
[docs] Try to make this bullet list in ThinLTO.rst actually be a bullet list
Ulysse Beaugnon [Tue, 24 Nov 2020 12:57:18 +0000 (13:57 +0100)]
[MLIR] Fix TableGen generator for attribute interfaces.
Use the correct interface base type name when generating attribute interfaces
with TabeGen.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D92023
Fraser Cormack [Fri, 20 Nov 2020 17:10:24 +0000 (17:10 +0000)]
[RISCV] Combine GREVI sequences
This combine step performs the following type of transformation:
rev.p a0, a0 # grevi a0, a0, 0b01
rev2.n a0, a0 # grevi a0, a0, 0b10
-->
rev.n a0, a0 # grevi a0, a0, 0b11
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D91877
Kadir Cetinkaya [Fri, 20 Nov 2020 12:02:18 +0000 (13:02 +0100)]
[clangd] Fix shared-lib builds
Differential Revision: https://reviews.llvm.org/D91859
Simon Pilgrim [Tue, 24 Nov 2020 11:38:30 +0000 (11:38 +0000)]
[IR] Constant::getAggregateElement - early-out for ScalableVectorType
We can't call getNumElements() for ScalableVectorType types - just bail for now, although ConstantAggregateZero/UndefValue could return a reasonable value.
Fixes crash shown in OSS-Fuzz #25272 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25272
Eugene Zhulenev [Tue, 24 Nov 2020 11:17:33 +0000 (03:17 -0800)]
[mlir] AsyncRuntime: fix concurrency bugs + fix exports in methods definitions
1. Move ThreadPool ownership to the runtime, and wait for the async tasks completion in the destructor.
2. Remove MLIR_ASYNCRUNTIME_EXPORT from method definitions because they are unnecessary in .cpp files, as only function declarations need to be exported, not their definitions.
3. Fix concurrency bugs in group emplace and potential use-after-free in token emplace.
Tested internally 10k runs in `async.mlir` and `async-group.mlir`.
Fixed: https://bugs.llvm.org/show_bug.cgi?id=48267
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D91988
Max Kazantsev [Tue, 24 Nov 2020 10:56:59 +0000 (17:56 +0700)]
Revert "[NFC][SCEV] Generalize monotonicity check for full and limited iteration space"
This reverts commit
2734a9ebf4a31df0131acdfc739395a5e692c342.
This patch appeared to not be a NFC. It introduced an execution path where
monotonicity check on limited space started relying in existing nsw/nuw
flags, which is illegal. The motivating test will follow-up.
Evgeny Leviant [Tue, 24 Nov 2020 10:52:32 +0000 (13:52 +0300)]
[SchedModels] Improve diagnostics. NFC
Alexander Belyaev [Tue, 24 Nov 2020 10:09:33 +0000 (11:09 +0100)]
[mlir][linalg] Add bufferization pattern for `linalg.indexed_generic`.
Differential Revision: https://reviews.llvm.org/D92014
AndreyChurbanov [Tue, 24 Nov 2020 10:08:24 +0000 (13:08 +0300)]
[OpenMP] fix asm code for for arm64 (AARCH64) for Darwin/macOS
Adjusted external reference for Darwin/AARCH64 link compatibility.
Made size directive conditional only if __ELF__ defined.
Patch by Michael_Pique <mpique@icloud.com>
Differential Revision: https://reviews.llvm.org/D88252
Marek Kurdej [Tue, 24 Nov 2020 10:06:08 +0000 (11:06 +0100)]
[libc++] [www] Fix HTML. NFC.
Needed for a future automatic update to RST.
Evgeny Leviant [Tue, 24 Nov 2020 09:44:10 +0000 (12:44 +0300)]
[SchedModels] Limit set of predicates seen by mutuallyExclusive
Patch limits set of predicates seen by mutuallyExclusive to ones which belong
to current processor model. This needs to be done, because same predicate can
be used by multiple processor models which can make mutuallyExclusive over
optimistic.
Kai Luo [Tue, 24 Nov 2020 08:17:46 +0000 (08:17 +0000)]
[DAGCombine][PowerPC] Convert negated abs to trivial arithmetic ops
This patch converts `0 - abs(x)` to `Y = sra (X, size(X)-1); sub (Y, xor (X, Y))` for better codegen.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D91120
Georgii Rymar [Mon, 23 Nov 2020 13:18:00 +0000 (16:18 +0300)]
[llvm-readelf/obj] - Refine the implementation of `printGNUVersionSectionProlog`
This:
1) Changes its signature.
2) Refines the name of local variable (`SymTabName`->`LinkedSecName`,
because SHT_GNU_verneed/SHT_GNU_verdef are linked with the string table, not with the symbol table).
3) Stops using the `unwrapOrError` inside.
Differential revision: https://reviews.llvm.org/D91964
Georgii Rymar [Tue, 17 Nov 2020 13:15:45 +0000 (16:15 +0300)]
[llvm-readelf/obj] - Improve the error reporting in printStackSize().
This stops using `RelocationRef` API in the `printStackSize` method
and starts using the "regular" API that is used in almost all other places
in ELFDumper.cpp.
This is not only makes the code to be more consistent, but helps to diagnose
issues better, because the `ELFObjectFile` API, which is used
currently to implement stack sized dumping sometimes has a behavior
that just doesn't work well for broken inputs.
E.g see how it gets the `symbol_end` iterator. It will just not work
well for a case when the `sh_size` is broken.
```
template <class ELFT>
basic_symbol_iterator ELFObjectFile<ELFT>::symbol_end() const {
...
DataRefImpl Sym = toDRI(SymTab, SymTab->sh_size / sizeof(Elf_Sym));
return basic_symbol_iterator(SymbolRef(Sym, this));
}
```
Differential revision: https://reviews.llvm.org/D91624
Evgeny Leviant [Tue, 24 Nov 2020 08:43:51 +0000 (11:43 +0300)]
Add support for branch forms of ALU instructions to Cortex-A57 model
Patch fixes scheduling of ALU instructions which modify pc register. Patch
also fixes computation of mutually exclusive predicates for sequences of
variants to be properly expanded
Differential revision: https://reviews.llvm.org/D91266
Georgii Rymar [Mon, 23 Nov 2020 10:40:01 +0000 (13:40 +0300)]
[[lvm-readelf/obj] - Remove `tryGetSectionName` helper.
D91867 introduced the `tryGetSectionName` helper.
But we have `getPrintableSectionName` member with the similar
behavior which we can reuse. This patch does it.
Differential revision: https://reviews.llvm.org/D91954
Nathan Ridge [Tue, 24 Nov 2020 08:17:44 +0000 (03:17 -0500)]
[clangd] Sort results of incomingCalls request by container name
Differential Revision: https://reviews.llvm.org/D92009
Alex Zinenko [Mon, 23 Nov 2020 13:19:07 +0000 (14:19 +0100)]
[mlir] move lib/Bindings/Python/Attributes.td to include/mlir/Bindings/Python
This file is intended to be included by other files, including
out-of-tree dialects, and makes more sense in `include` than in `lib`.
Depends On D91652
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D91961
Haowei Wu [Tue, 13 Oct 2020 03:01:52 +0000 (20:01 -0700)]
[llvm-elfabi] Emit ELF .dynsym, .dynamic sections
This change makes llvm-elfabi tool to emit .dynsym and .dynamic
sections.
Differential Revision: https://reviews.llvm.org/D89432
Alex Zinenko [Tue, 17 Nov 2020 17:28:16 +0000 (18:28 +0100)]
[mlir] Make attributes mutable in Python bindings
Attributes represent additional data about an operation and are intended to be
modifiable during the lifetime of the operation. In the dialect-specific Python
bindings, attributes are exposed as properties on the operation class. Allow
for assigning values to these properties. Also support creating new and
deleting existing attributes through the generic "attributes" property of an
operation. Any validity checking must be performed by the op verifier after the
mutation, similarly to C++. Operations are not invalidated in the process: no
dangling pointers can be created as all attributes are owned by the context and
will remain live even if they are not used in any operation.
Introduce a Python Test dialect by analogy with the Test dialect and to avoid
polluting the latter with Python-specific constructs. Use this dialect to
implement a test for the attribute access and mutation API.
Reviewed By: stellaraccident, mehdi_amini
Differential Revision: https://reviews.llvm.org/D91652
Martin Storsjö [Tue, 17 Nov 2020 14:05:29 +0000 (16:05 +0200)]
[LLD] [COFF] Allow wrapping dllimported functions
GNU ld doesn't seem to do this though, but it looks like a reasonable
use case, is easy to implement, and was requested in
https://bugs.llvm.org/show_bug.cgi?id=47384.
Differential Revision: https://reviews.llvm.org/D91689
Pavel Labath [Tue, 24 Nov 2020 08:00:42 +0000 (09:00 +0100)]
Revert "[DebugInfo] Refactor code for emitting DWARF expressions for FP constants"
The commit introduced a crash when emitting (debug info for) complex
floats (pr48277).
Arthur Eubanks [Tue, 24 Nov 2020 07:46:08 +0000 (23:46 -0800)]
[test] Fix gvn-inline-iteration.ll under NPM
Amara Emerson [Tue, 24 Nov 2020 06:57:37 +0000 (22:57 -0800)]
[AArch64][GlobalISel] Add pre-isel lowering to convert p0 G_DUPs to use s64.
This uses the same reasoning as other similar conversions just before selection,
without it we miss out on selection because the importer considers s64 and p0
distinct types.
Amara Emerson [Tue, 24 Nov 2020 06:49:27 +0000 (22:49 -0800)]
[AArch64][GlobalISel] Make <2 x p0> of G_SHUFFLE_VECTOR legal.
Gabriel Hjort Åkerlund [Tue, 24 Nov 2020 06:12:54 +0000 (07:12 +0100)]
[GlobalISel][TableGen] Fix seg fault for zero instruction
Tablegen seg faulted when parsing a Pat where the destination part has
no output (zero instruction), due to a register class lookup using
nullptr.
Reviewed By: Paul-C-Anagnostopoulos
Differential Revision: https://reviews.llvm.org/D90829
Kai Luo [Tue, 24 Nov 2020 06:32:38 +0000 (06:32 +0000)]
[PowerPC] Pre-commit more tests for `select` codegen. NFC.
Arthur Eubanks [Thu, 15 Oct 2020 00:56:38 +0000 (17:56 -0700)]
Reland [CGSCC] Detect devirtualization in more cases
The devirtualization wrapper misses cases where if it wraps a pass
manager, an individual pass may devirtualize an indirect call created by
a previous pass. For example, inlining may create a new indirect call
which is devirtualized by instcombine. Currently the devirtualization
wrapper will not see that because it only checks cgscc edges at the very
beginning and end of the pass (manager) it wraps.
This fixes some tests testing this exact behavior in the legacy PM.
Instead of checking WeakTrackingVHs for CallBases at the very beginning
and end of the pass it wraps, check every time
updateCGAndAnalysisManagerForPass() is called.
check-llvm and check-clang with -abort-on-max-devirt-iterations-reached
on by default doesn't show any failures outside of tests specifically
testing it so it doesn't needlessly rerun passes more than necessary.
(The NPM -O2/3 pipeline run the inliner/function simplification pipeline
under a devirtualization repeater pass up to 4 times by default).
http://llvm-compile-time-tracker.com/?config=O3&stat=instructions&remote=aeubanks
shows that 7zip has ~1% compile time regression. I looked at it and saw
that there indeed was devirtualization happening that was not previously
caught, so now it reruns the CGSCC pipeline on some SCCs, which is WAI.
The initial land assumed CallBase WeakTrackingVHs would always be
CallBases, but they can be RAUW'd with undef.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D89587
Arthur Eubanks [Tue, 20 Oct 2020 17:57:02 +0000 (10:57 -0700)]
[FunctionAttrs][NPM] Fix handling of convergent
The legacy pass didn't properly detect indirect calls.
We can still remove the convergent attribute when there are indirect
calls. The LangRef says:
> When it appears on a call/invoke, the convergent attribute indicates
that we should treat the call as though we’re calling a convergent
function. This is particularly useful on indirect calls; without this we
may treat such calls as though the target is non-convergent.
So don't skip handling of convergent when there are unknown calls.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D89826
Philip Reames [Tue, 24 Nov 2020 05:06:46 +0000 (21:06 -0800)]
[LoopVec] Reuse a lambda [NFC]
Minor code refactor to improve readability.
Fangrui Song [Tue, 24 Nov 2020 03:46:52 +0000 (19:46 -0800)]
[CMake] Unify LLVM_LINKER_IS_GOLD -Wl,--gc-sections setting with GNU ld and LLD
John Paul Adrian Glaubitz [Tue, 24 Nov 2020 03:25:36 +0000 (19:25 -0800)]
[Driver] Enable getOSLibDir() lib32 workaround for SPARC on Linux
This fixes the Builtins-sparc-linux testsuite failures on Linux
SPARC which occur because clang cannot find the 32-bit runtime
libraries when -m32 is passed on the command line. The same
workaround is already being used on X86 and PPC.
Also, switch the CHECK-DEBIAN-SPARC tests to use debian_multiarch_tree
as both sparc and sparc64 are using the MultiArch mechanism on modern Debian
systems the same way as x86_64, powerpc64el and others. Thus, switch the
CHECK-DEBIAN-SPARC32 and CHECK-DEBIAN-SPARC64 tests to use the files from
the debian_multiarch_tree directory for the header and linker path tests.
Finally, rename CHECK-DEBIAN-SPARC32 to CHECK-DEBIAN-SPARC to match the naming
scheme of the Debian MultiArch checks for the other Debian architectures.
Reviewed By: MaskRay, phosek
Differential Revision: https://reviews.llvm.org/D90524
Brandon Bergren [Tue, 24 Nov 2020 03:07:21 +0000 (19:07 -0800)]
[libunwind] Multiple preprocessor fixes on PowerPC*
* Remove misnamed `PPC64_HAS_VMX` in preference of directly checking `defined(__VSX__)`.
libunwind was using "VMX" to mean "VSX". "VMX" is just another name for Altivec, while "VSX" is the vector-scalar extensions first used in POWER7. Exposing a "PPC64_HAS_VMX" define was misleading and incorrect.
* Add `defined(__ALTIVEC__)` guards around vector register operations to fix non-altivec CPUS such as the e5500.
When compiling for certain Book-E processors such as the e5500, we want to skip vector save/restore, as the Altivec registers are illegal on non-Altivec implementations.
* Add `!defined(__NO_FPRS__)` guards around traditional floating-point save/restore.
When compiling for powerpcspe, we cannot access floating point registers, as there aren't any. (The SPE on e500v2 is a 64-bit extension of the GPRs, and it doesn't have the normal floating-point registers at all.)
This fixes building for powerpcspe, although no actual handling for SPE save/restore is written yet.
Reviewed By: MaskRay, #libunwind, compnerd
Differential Revision: https://reviews.llvm.org/D91906
Nico Weber [Tue, 24 Nov 2020 02:28:51 +0000 (21:28 -0500)]
[gn build] modify hotfix in
17df195f705cef76a9 to work with all enabled targets
llvm-config output with the gn build is just good enough to make
tests pass, but llvm-config wants all .a files it knows about to
actually exist. So let it know about fewer .a files that don't
exist if not all targets are enabled.
Muhammad Omair Javaid [Tue, 24 Nov 2020 02:05:02 +0000 (07:05 +0500)]
[LLDB] Fix typo in RegisterContextPOSIXProcessMonitor_arm64
This patch fixes a minor typo in RegisterContextPOSIXProcessMonitor_arm64
constructor where memset target was wrongly specified as m_fpr instead of
m_gpr_arm64.
Jonas Devlieghere [Mon, 23 Nov 2020 23:10:46 +0000 (15:10 -0800)]
[lldb] Add platform select to TestProcessConnect.py
Extend TestProcessConnect to cover the scenario fixed by
6c0cd5676e0a0feaf836e0399023a6e21224467b. This replaces
command-process-connect.test which would fail if port 4321
was open.
LLVM GN Syncbot [Tue, 24 Nov 2020 01:44:50 +0000 (01:44 +0000)]
[gn build] Port
3e6e6a2db67
Nathan Ridge [Mon, 23 Nov 2020 02:47:07 +0000 (21:47 -0500)]
[clangd] Use WorkScheduler.run() in ClangdServer::resolveTypeHierarchy()
Differential Revision: https://reviews.llvm.org/D91941
Nathan Ridge [Mon, 16 Nov 2020 03:45:17 +0000 (22:45 -0500)]
[clangd] Call hierarchy (ClangdLSPServer layer)
Differential Revision: https://reviews.llvm.org/D91124
Nathan Ridge [Mon, 16 Nov 2020 02:36:46 +0000 (21:36 -0500)]
[clangd] Call hierarchy (ClangdServer layer)
Differential Revision: https://reviews.llvm.org/D91123
Nathan Ridge [Mon, 16 Nov 2020 03:59:10 +0000 (22:59 -0500)]
[clangd] Call hierarchy (XRefs layer, incoming calls)
Support for outgoing calls is left for a future change.
Differential Revision: https://reviews.llvm.org/D91122
Richard Smith [Tue, 24 Nov 2020 01:20:19 +0000 (17:20 -0800)]
Fix signed integer overflow bug that's causing test failures with UBSan.
Jameson Nash [Tue, 24 Nov 2020 01:17:36 +0000 (20:17 -0500)]
fix some Wundef warnings in public headers
Differential Revision: https://reviews.llvm.org/D91094
Yichao Yu [Tue, 24 Nov 2020 00:59:35 +0000 (19:59 -0500)]
Enable support for floating-point division reductions
Similar to fsub, fdiv can also be vectorized using fmul.
Also http://llvm.org/viewvc/llvm-project?view=revision&revision=215200
Differential Revision: https://reviews.llvm.org/D34078
Co-authored-by: Jameson Nash <jameson@juliacomputing.com>
Ben Dunbobbin [Mon, 23 Nov 2020 09:27:38 +0000 (09:27 +0000)]
[Clang][-fvisibility-from-dllstorageclass] Set DSO Locality from final visibility
Ensure that the DSO Locality of the globals in the IR is derived from
their final visibility when using -fvisibility-from-dllstorageclass.
To accomplish this we reset the DSO locality of globals (before
setting their visibility from their dllstorageclass) at the end of
IRGen in Clang. This removes any effects that visibility options or
annotations may have had on the DSO locality.
The resulting DSO locality of the globals will be pessimistic
w.r.t. to the normal compiler IRGen.
Differential Revision: https://reviews.llvm.org/D91779
Amy Huang [Tue, 24 Nov 2020 00:29:04 +0000 (16:29 -0800)]
Revert "[llvm-symbolizer] Switch to using native symbolizer by default on Windows"
Breaks some asan tests on the buildbot.
This reverts commit
c74b427cb2a90309ee0c29df21ad1ca26390263c.
Evgenii Stepanov [Tue, 24 Nov 2020 00:01:13 +0000 (16:01 -0800)]
[hwasan] Fix tests when vm.overcommit_memory=1.
Remove an invalid check from sizes.cpp that only passes when overcommit is disabled.
Fixes PR48274.
Differential Revision: https://reviews.llvm.org/D91999
Amy Huang [Thu, 19 Nov 2020 19:49:22 +0000 (11:49 -0800)]
[llvm-symbolizer] Switch to using native symbolizer by default on Windows
llvm-symbolizer used to use the DIA SDK for symbolization on
Windows; this patch switches to using native symbolization, which was
implemented recently.
Users can still make the symbolizer use DIA by adding the `-dia` flag
in the LLVM_SYMBOLIZER_OPTS environment variable.
Differential Revision: https://reviews.llvm.org/D91814
Philip Reames [Mon, 23 Nov 2020 23:36:08 +0000 (15:36 -0800)]
[test] pre-comit test for D91451
Philip Reames [Mon, 23 Nov 2020 23:23:46 +0000 (15:23 -0800)]
[LoopVectorizer] Lower uniform loads as a single load (instead of relying on CSE)
A uniform load is one which loads from a uniform address across all lanes. As currently implemented, we cost model such loads as if we did a single scalar load + a broadcast, but the actual lowering replicates the load once per lane.
This change tweaks the lowering to use the REPLICATE strategy by marking such loads (and the computation leading to their memory operand) as uniform after vectorization. This is a useful change in itself, but it's real purpose is to pave the way for a following change which will generalize our uniformity logic.
In review discussion, there was an issue raised with coupling cost modeling with the lowering strategy for uniform inputs. The discussion on that item remains unsettled and is pending larger architectural discussion. We decided to move forward with this patch as is, and revise as warranted once the bigger picture design questions are settled.
Differential Revision: https://reviews.llvm.org/D91398
Alex Zinenko [Mon, 23 Nov 2020 19:45:30 +0000 (20:45 +0100)]
[mlir] Support WsLoopOp in OpenMP to LLVM dialect conversion
It is a simple conversion that only requires to change the region argument
types, generalize it from ParallelOp.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D91989
zoecarver [Mon, 23 Nov 2020 22:21:50 +0000 (14:21 -0800)]
[libcxx] Resolve LWG 2724 protected -> private.
Fixes LWG issue 2724: "The protected virtual member functions of memory_resource should be private."
Differential Revision: https://reviews.llvm.org/D66615
Craig Topper [Mon, 23 Nov 2020 22:17:06 +0000 (14:17 -0800)]
[RISCV] Remove unused VM register class
Nothing references this class today so it looks like some leftover.
Differential Revision: https://reviews.llvm.org/D91977
George [Mon, 23 Nov 2020 21:08:00 +0000 (13:08 -0800)]
Use MlirStringRef throughout the C API
While this makes the unit tests a bit more verbose, this simplifies the creation of bindings because only the bidirectional mapping between the host language's string type and MlirStringRef need to be implemented.
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D91905
Sanjay Patel [Mon, 23 Nov 2020 21:46:41 +0000 (16:46 -0500)]
[InstCombine] propagate 'nsw' on pointer difference of 'inbounds' geps
This is a retry of
324a53205. I cautiously reverted that at 6aa3fc4
because the rules about gep math were not clear. Since then, we
have added this line to LangRef for gep inbounds:
"The successive addition of offsets (without adding the base address)
does not wrap the pointer index type in a signed sense (nsw)."
See D90708 and post-commit comments on the revert patch for more details.
LLVM GN Syncbot [Mon, 23 Nov 2020 21:33:46 +0000 (21:33 +0000)]
[gn build] Port
f6b02ecd027
Saleem Abdulrasool [Thu, 5 Nov 2020 23:59:39 +0000 (23:59 +0000)]
APINotes: add property models for YAML attributes
This adds internal representation of the attributes in a more usable
form. This is meant to allow programmatic access to the attributes that
are specified in the YAML data.
This is based upon the work contributed by Apple at
https://github.com/llvm/llvm-project-staging/tree/staging/swift/apinotes.
Differential Revision: https://reviews.llvm.org/D91104
Reviewed By: Gabor Marton
Arthur Eubanks [Mon, 23 Nov 2020 21:20:21 +0000 (13:20 -0800)]
Revert "[CGSCC] Detect devirtualization in more cases"
This reverts commit
14a68b4aa9732293ad7e16f105b0feb53dc8dbe2.
Causes building self hosted clang to crash when using NPM.
Martin Storsjö [Fri, 13 Nov 2020 20:35:22 +0000 (22:35 +0200)]
Reapply "[CodeGen] [WinException] Only produce handler data at the end of the function if needed"
This reapplies
36c64af9d7f97414d48681b74352c9684077259b in updated
form.
Emit the xdata for each function at .seh_endproc. This keeps the
exact same output header order for most code generated by the LLVM
CodeGen layer. (Sections still change order for code built from
assembly where functions lack an explicit .seh_handlerdata
directive, and functions with chained unwind info.)
The practical effect should be that assembly output lacks
superfluous ".seh_handlerdata; .text" pairs at the end of functions
that don't handle exceptions, which allows such functions to use
the AArch64 packed unwind format again.
Differential Revision: https://reviews.llvm.org/D87448
Arthur Eubanks [Wed, 18 Nov 2020 20:54:54 +0000 (12:54 -0800)]
[NPM] Share pass building options with legacy PM
We should share options when possible.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D91741
Jordan Rupprecht [Mon, 23 Nov 2020 20:45:46 +0000 (12:45 -0800)]
[lldb/test] Remove flaky `process connect` test.
This test is flaky because it assumes port 4321 is not already open on a machine.
smhc [Mon, 23 Nov 2020 20:45:50 +0000 (20:45 +0000)]
[clang-tidy] Use compiled regex for AllowedRegexp in macro usage check
Current check compiles the regex on every attempt at matching. The check also populates and enables a regex value by default so the default behaviour results in regex re-compilation for every macro - if the check is enabled. If people used this check there's a reasonable chance they would have relatively complex regexes in use.
This is a quick and simple fix to store and use the compiled regex.
Reviewed By: njames93
Differential Revision: https://reviews.llvm.org/D91908
Nicolas Vasilache [Mon, 23 Nov 2020 20:36:50 +0000 (20:36 +0000)]
[mlir] Add mising dependency
Reid Kleckner [Mon, 23 Nov 2020 20:19:20 +0000 (12:19 -0800)]
Make check-clang depend on the LLVM split-file utility
Fixes a recently added test that has this dependency. IMO this utility
is generally useful, so we should go ahead and take the new dependency.
Haowei Wu [Tue, 29 Sep 2020 05:10:54 +0000 (22:10 -0700)]
[llvm-elfabi] Emit ELF header and string table sections
This change serves to create the initial framework for outputting ELF
files from llvm-elfabi.
Differential Revision: https://reviews.llvm.org/D61767
Nathan James [Mon, 23 Nov 2020 20:04:50 +0000 (20:04 +0000)]
[clang-tidy] Fix RenamerClangTidy checks trying to emit a fix that isnt a valid identifier
Addresses https://bugs.llvm.org/show_bug.cgi?id=48230.
Handle the case when the Fixup suggested isn't a valid c/c++ identifer.
Reviewed By: aaron.ballman, gribozavr2
Differential Revision: https://reviews.llvm.org/D91915
Eric Astor [Mon, 23 Nov 2020 19:20:17 +0000 (14:20 -0500)]
[ms] [llvm-ml] Support purging macro definitions
Support MASM's PURGE directive.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D89735
Haowei Wu [Mon, 23 Nov 2020 19:58:51 +0000 (11:58 -0800)]
Revert "[llvm-elfabi] Emit ELF header and string table sections"
This reverts commit
53c5fdd59a5cf7fbb4dcb7a7e84c9c4a40d32a84.
Reason of revert: Some builders failed to build with ld.
Arthur Eubanks [Wed, 18 Nov 2020 07:42:18 +0000 (23:42 -0800)]
Port -print-memderefs to NPM
There is lots of code duplication, but hopefully it won't matter soon.
Reviewed By: ychen
Differential Revision: https://reviews.llvm.org/D91683
Arthur Eubanks [Wed, 18 Nov 2020 07:18:26 +0000 (23:18 -0800)]
[test] Pin memory-dereferenceable.ll to legacy PM
-print-memderefs is only used for one test and hasn't been touched in a while.
Arthur Eubanks [Thu, 15 Oct 2020 00:56:38 +0000 (17:56 -0700)]
[CGSCC] Detect devirtualization in more cases
The devirtualization wrapper misses cases where if it wraps a pass
manager, an individual pass may devirtualize an indirect call created by
a previous pass. For example, inlining may create a new indirect call
which is devirtualized by instcombine. Currently the devirtualization
wrapper will not see that because it only checks cgscc edges at the very
beginning and end of the pass (manager) it wraps.
This fixes some tests testing this exact behavior in the legacy PM.
Instead of checking WeakTrackingVHs for CallBases at the very beginning
and end of the pass it wraps, check every time
updateCGAndAnalysisManagerForPass() is called.
check-llvm and check-clang with -abort-on-max-devirt-iterations-reached
on by default doesn't show any failures outside of tests specifically
testing it so it doesn't needlessly rerun passes more than necessary.
(The NPM -O2/3 pipeline run the inliner/function simplification pipeline
under a devirtualization repeater pass up to 4 times by default).
http://llvm-compile-time-tracker.com/?config=O3&stat=instructions&remote=aeubanks
shows that 7zip has ~1% compile time regression. I looked at it and saw
that there indeed was devirtualization happening that was not previously
caught, so now it reruns the CGSCC pipeline on some SCCs, which is WAI.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D89587
Xiangling Liao [Mon, 23 Nov 2020 18:55:47 +0000 (13:55 -0500)]
[AIX] Support init priority
Support reserved [0-100] and non-reserved[101-65535] Clang/GNU init
priority values on AIX.
This patch maps Clang/GNU values into priority values used in sinit/sterm
functions. User can play with values and be able to get init to occur
before or after XL init and vice versa.
Differential Revision: https://reviews.llvm.org/D91272
Arthur Eubanks [Wed, 18 Nov 2020 08:04:27 +0000 (00:04 -0800)]
[test] Pin tests using -dot-callgraph to legacy PM
-dot-callgraph is not ported to the NPM yet. It can be ported at a later
time if necessary.
Differential Revision: https://reviews.llvm.org/D91685
Haowei Wu [Tue, 29 Sep 2020 05:10:54 +0000 (22:10 -0700)]
[llvm-elfabi] Emit ELF header and string table sections
This change serves to create the initial framework for outputting ELF
files from llvm-elfabi.
Differential Revision: https://reviews.llvm.org/D61767
Eric Astor [Fri, 13 Nov 2020 22:39:33 +0000 (17:39 -0500)]
[ms] [llvm-ml] Support macro function invocations in expressions
Accept macro function definitions, and apply them when invoked in operand position.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D89734
Craig Topper [Mon, 23 Nov 2020 19:08:10 +0000 (11:08 -0800)]
[AArch64] Update clang CodeGen tests I missed in
4252f7773a5b98b825d17e5f77c7d349cb2fb7c7.
These tests invoke opt and llc even though they are in the frontend.
We now do a better job of generating commuted patterns for fma so
these tests now form fmls instead of fmla+fneg.
Amy Huang [Mon, 23 Nov 2020 18:51:09 +0000 (10:51 -0800)]
[NFC] remove print statement I accidentally added.
Florian Hahn [Mon, 23 Nov 2020 18:32:56 +0000 (18:32 +0000)]
[AArch64] Add scatter cost model tests.
MaheshRavishankar [Mon, 23 Nov 2020 18:34:48 +0000 (10:34 -0800)]
[mlir][Linalg] NFC: Expose some utility functions used for promotion.
Exposing some utility functions from Linalg to allow for promotion of
fused views outside of the core tile+fuse logic.
This is an alternative to patch D91322 which adds the promotion logic
to the tileAndFuse method. Downside with that approach is that it is
not easily customizable based on needs.
Differential Revision: https://reviews.llvm.org/D91503
Nico Weber [Mon, 23 Nov 2020 18:29:36 +0000 (13:29 -0500)]
[mac/arm] fix clang/test/Driver/darwin-ld-dedup.c
The test needs an object file, which it currenty gets with
`-target x86_64-apple-darwin10`. Rather than adding `REQUIRES: X86`, create
the object file via yaml2obj. This way, the test runs and passes even if the
host arch isn't x86 and only the host arch is built.
Part of PR46644.
MaheshRavishankar [Mon, 23 Nov 2020 18:07:34 +0000 (10:07 -0800)]
[mlir][Linalg] Fuse sequence of Linalg operation (on buffers)
Enhance the tile+fuse logic to allow fusing a sequence of operations.
Make sure the value used to obtain tile shape is a
SubViewOp/SubTensorOp. Current logic used to get the bounds of loop
depends on the use of `getOrCreateRange` method on `SubViewOp` and
`SubTensorOp`. Make sure that the value/dim used to compute the range
is from such ops. This fix is a reasonable WAR, but a btter fix would
be to make `getOrCreateRange` method be a method of `ViewInterface`.
Differential Revision: https://reviews.llvm.org/D90991
Craig Topper [Mon, 23 Nov 2020 18:01:52 +0000 (10:01 -0800)]
[SelectionDAG][ARM][AArch64][Hexagon][RISCV][X86] Add SDNPCommutative to fma and fmad nodes in tablegen. Remove explicit commuted patterns from targets.
X86 was already specially marking fma as commutable which allowed
tablegen to autogenerate commuted patterns. This moves it to the target
independent definition and fix up the targets to remove now
unneeded patterns.
Unfortunately, the tests change because the commuted version of
the patterns are generating operands in a different than the
explicit patterns.
Differential Revision: https://reviews.llvm.org/D91842
Nico Weber [Mon, 23 Nov 2020 17:55:51 +0000 (12:55 -0500)]
[mac/arm] make clang/test/Driver/clang_f_opts.c pass consistently
Part of PR46644, see comment 7/8.
George [Mon, 23 Nov 2020 17:52:17 +0000 (09:52 -0800)]
Add userData to the diagnostic handler C API
Previously, there was no way to add context to the diagnostic engine via the C API. Adding this ability makes it much easier to reason about memory ownership, particularly in reference-counted languages such as Swift. There are more details in the review comments.
Reviewed By: ftynse, mehdi_amini
Differential Revision: https://reviews.llvm.org/D91738
Florian Hahn [Mon, 23 Nov 2020 17:33:27 +0000 (17:33 +0000)]
[AArch64] Add tests for masked.gather costs.
Paul C. Anagnostopoulos [Sun, 22 Nov 2020 14:56:42 +0000 (09:56 -0500)]
[TableGen] Eliminte source location from CodeInit
Step 1 in eliminating the 'code' type.
Differential Revision: https://reviews.llvm.org/D91932
Simon Moll [Mon, 23 Nov 2020 14:33:10 +0000 (15:33 +0100)]
[VE] VE Vector Predicated SDNode, vector add isel and tests
VE Vector Predicated (VVP) SDNodes form an intermediate layer between VE
vector instructions and the initial SDNodes.
We introduce 'vvp_add' with isel and tests as the first of these VVP
nodes. VVP nodes have a mask and explicit vector length operand, which
we will make proper use of later.
Reviewed By: kaz7
Differential Revision: https://reviews.llvm.org/D91802
Alex Zinenko [Mon, 23 Nov 2020 15:50:55 +0000 (16:50 +0100)]
[mlir] Temporarily disable flaky mlir-cpu-runner async tests
These tests fail sporadically on irrelevant commits, e.g.
http://lab.llvm.org:8011/#/builders/61/builds/1777 as well as in local
builds.
Stephen Kelly [Mon, 23 Nov 2020 15:22:03 +0000 (15:22 +0000)]
Fix tests for clang-query completion