Artem Belevich [Wed, 8 Jul 2020 20:23:18 +0000 (13:23 -0700)]
[MC,NVPTX] Add MCAsmPrinter support for unsigned-only data directives.
PTX does not support negative values in .bNN data directives and we must
typecast such values to unsigned before printing them.
MCAsmInfo can now specify whether such casting is necessary for particular
target.
Differential Revision: https://reviews.llvm.org/D83423
Nithin Vadukkumchery Rajendrakumar [Wed, 15 Jul 2020 00:54:44 +0000 (02:54 +0200)]
[Analyzer] Add checkRegionChanges for SmartPtrModeling
Summary:
Implemented checkRegionChanges for SmartPtrModeling
Reviewers: NoQ, Szelethus, vsavchenko, xazax.hun
Reviewed By: NoQ, vsavchenko, xazax.hun
Subscribers: martong, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D83836
shafik [Mon, 20 Jul 2020 23:09:18 +0000 (16:09 -0700)]
Fix how we handle bit-fields for Objective-C when creating an AST
Currently expressions dealing with bit-fields in Objective-C objects is pretty broken. When generating debug-info for Objective-C bit-fields DW_AT_data_bit_offset has a different meaning than it does to C and C++.
When we parse the DWARF we validate bit offsets for C and C++ correctly but not for ObjC. For ObjC in some cases we end up incorrectly flagging an error and we don't generate further bit-fields in the AST.
Later on when we do a name lookup we don't find the ObjCIvarDecl in the ObjCInterfaceDecl in some cases since we never added it and then we don't go to the runtime to obtain the offset.
This will fix how we handle bit-fields for the Objective-C case and add tests to verify this fix but also to documents areas that still don't work and will be addressed in follow-up PRs.
Note: we can never correctly calculate offsets statically because of how Objective-C deals with the fragile base class issue. Which means the runtime may need to shift fields over.
Differential Revision: https://reviews.llvm.org/D83433
Logan Smith [Mon, 20 Jul 2020 22:13:22 +0000 (15:13 -0700)]
Fix typo causing build failure
(facepalm)
Davide Italiano [Mon, 20 Jul 2020 21:50:36 +0000 (14:50 -0700)]
[PlatformMacOSX] Remove unused variable. NFC.
Lang Hames [Mon, 20 Jul 2020 21:31:48 +0000 (14:31 -0700)]
[ExecutionEngine] Initialize near block hint in SectionMemoryManager.
When allocating a new memory block in SectionMemoryManager, initialize
the Near hint for the other memory groups if they have not been set
already.
Patch by Dana Koch. Thanks Dana!
Logan Smith [Mon, 20 Jul 2020 21:38:10 +0000 (14:38 -0700)]
[NFC] Add missing 'override's
Davide Italiano [Mon, 20 Jul 2020 21:11:58 +0000 (14:11 -0700)]
[testsuite] Adapt lldb-server base test helper to run on arm64
Yitzhak Mandelbaum [Mon, 20 Jul 2020 21:24:58 +0000 (21:24 +0000)]
Revert "[libTooling] In Clang Transformer, change `Metadata` field to deferred evalutaion"
This reverts commit
c0b8954ecba500e3d9609152295b74ccd7d89d62.
The commit has broken various builds. Reverting while I investigate the cause.
Yitzhak Mandelbaum [Mon, 20 Jul 2020 21:16:39 +0000 (21:16 +0000)]
[libTooling] In Clang Transformer, change `Metadata` field to deferred evalutaion
`Metadata` is being changed from an `llvm::Any` to a `MatchConsumer<llvm;:Any>`, so that it's evaluation can be be dependent on `MatchResult`s passed in.
Reviewed By: ymandel, gribozavr2
Differential Revision: https://reviews.llvm.org/D83820
AndreyChurbanov [Mon, 20 Jul 2020 21:12:46 +0000 (00:12 +0300)]
[OpenMP] libomp cleanup: add checks of bad memory access
Add check of frm to prevent array out-of-bound access;
add check of new_nproc to prevent access of unallocated hot_teams array;
add check of location info pointer to prevent NULL dereference;
add check of d_tn pointer to prevent NULL dereference in release build.
These checks make static analyzers happier.
This is second part of the patch from https://reviews.llvm.org/D84062.
Davide Italiano [Mon, 20 Jul 2020 21:10:35 +0000 (14:10 -0700)]
[PlatformDarwin] Add support for Apple Silicon.
Gets another large chunk of the testsuite to pass.
Roman Lebedev [Mon, 20 Jul 2020 19:25:15 +0000 (22:25 +0300)]
[Reduce] Argument reduction: don't try to drop terminator instructions
Newly-added test previously crashed.
While it is up for debate whether or not instruction reduction
should be indiscriminate in instruction dropping (there you can
just ensure that the test case is still -verify'ies), here
if we drop terminator, CloneFunctionInto() will immediately crash.
So let's not do that :)
Vy Nguyen [Mon, 20 Jul 2020 20:59:46 +0000 (16:59 -0400)]
Disable trivial weak_ptr test on ARM because it is not expected to work.
Summary:
weak_ptr has two pointers (more than the 4 bytes limit), so it will not be returned in registers on ARM, even if it is trivial.
The test, therefore, will fail on ARM.
Reviewers: #libc!
Subscribers: kristof.beyls, danielkiss, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D84200
Logan Smith [Mon, 20 Jul 2020 20:59:34 +0000 (13:59 -0700)]
[llvm][unittest] Add -Wno-suggest-override to more infrastructure that includes googletest/googlemock headers
AndreyChurbanov [Mon, 20 Jul 2020 20:49:58 +0000 (23:49 +0300)]
[OpenMP] libomp cleanup: add check of input global tid parameter
Add check of negative gtid before indexing __kmp_threads.
This makes static analyzers happier.
This is the first part of the patch split in two parts.
Differential Revision: https://reviews.llvm.org/D84062
Gabor Marton [Tue, 7 Jul 2020 16:34:20 +0000 (18:34 +0200)]
[analyzer][StdLibraryFunctionsChecker] Add POSIX networking functions
Summary:
Adding networking functions from the POSIX standard (2017). This includes
functions that deal with sockets from socket.h, netdb.h.
In 'socket.h' of some libc implementations (e.g. glibc) with C99, sockaddr
parameter is a transparent union of the underlying sockaddr_ family of pointers
instead of being a pointer to struct sockaddr. In these cases, the standardized
signature will not match, thus we try to match with another signature that has
the joker Irrelevant type. In the case of transparent unions, we also not add
those constraints which require pointer types for the sockaddr param.
Interestingly, in 'netdb.h' sockaddr is not handled as a transparent union.
Tags: #clang
Differential Revision: https://reviews.llvm.org/D83407
Louis Dionne [Mon, 20 Jul 2020 20:15:49 +0000 (16:15 -0400)]
[NFC] Use std::free instead of ::free
Since we include <cstdlib> instead of <stdlib.h>, it makes sense to
use std::free.
Sanjay Patel [Mon, 20 Jul 2020 19:49:01 +0000 (15:49 -0400)]
[InstCombine] allow peeking through zext of shift amount to match rotate idioms (PR45701)
We might want to also allow trunc of the shift amount, but that seems less likely?
define i32 @src(i32 %x, i1 %y) {
%0:
%rem = and i1 %y, 1
%cmp = icmp eq i1 %rem, 0
%sh_prom = zext i1 %rem to i32
%sub = sub nsw nuw i1 0, %rem
%sh_prom1 = zext i1 %sub to i32
%shr = lshr i32 %x, %sh_prom1
%shl = shl i32 %x, %sh_prom
%or = or i32 %shl, %shr
%r = select i1 %cmp, i32 %x, i32 %or
ret i32 %r
}
=>
define i32 @tgt(i32 %x, i1 %y) {
%0:
%t = zext i1 %y to i32
%r = fshl i32 %x, i32 %x, i32 %t
ret i32 %r
}
Transformation seems to be correct!
https://alive2.llvm.org/ce/z/xgMvE3
http://bugs.llvm.org/PR45701
Sanjay Patel [Mon, 20 Jul 2020 19:31:24 +0000 (15:31 -0400)]
[InstCombine] add tests for funnel shift/rotate with narrow shift amount; NFC
Florian Hahn [Mon, 20 Jul 2020 19:50:49 +0000 (20:50 +0100)]
[Matrix] Use TileInfo to create tiled loop nest for matrix multiply.
This patch uses the TileInfo introduced in D77550 to generate a loop
nest for tiled matrix multiplication, instead of generating the
unrolled code for the whole multiplication. This makes code-generation
more scalable for larger matrixes.
Initially loops are only used if both the number of rows and columns are
divisible by the tile size. Other cases will be added as follow-up.
Reviewers: anemet, Gerolf, hfinkel, andrew.w.kaylor, LuoYuanke, nicolasvasilache
Reviewed By: anemet
Differential Revision: https://reviews.llvm.org/D81308
Eli Friedman [Tue, 14 Jul 2020 20:02:58 +0000 (13:02 -0700)]
[AArch64][SVE] Add support for trunc to <vscale x N x i1>.
This isn't a natively supported operation, so convert it to a
mask+compare.
In addition to the operation itself, fix up some surrounding stuff to
make the testcase work: we need concat_vectors on i1 vectors, we need
legalization of i1 vector truncates, and we need to fix up all the
relevant uses of getVectorNumElements().
Differential Revision: https://reviews.llvm.org/D83811
Martin Storsjö [Fri, 17 Jul 2020 20:35:45 +0000 (23:35 +0300)]
[LLDB] [COFF] Fix handling of symbols with more than one aux symbol
Differential Revision: https://reviews.llvm.org/D84070
Logan Smith [Mon, 20 Jul 2020 17:06:11 +0000 (10:06 -0700)]
Enable -Wsuggest-override in the LLVM build
This patch adds Clang's new (and GCC's old) -Wsuggest-override to the warning flags for the LLVM build. The warning is a stronger form of -Winconsistent-missing-override which warns _everywhere_ that override is missing, not just in places where it's inconsistent within a class.
Some directories in the monorepo need the warning disabled for compatibility's, or sanity's, sake; in particular, libcxx/libcxxabi, and any code implementing or interoperating with googletest, googlemock, or google benchmark (which do not themselves use override). This patch adds -Wno-suggest-override to the relevant CMakeLists.txt's to accomplish this.
Differential Revision: https://reviews.llvm.org/D84126
Hiroshi Yamauchi [Wed, 15 Jul 2020 18:56:06 +0000 (11:56 -0700)]
[PGO] Enable the extended value profile buckets for mem op sizes.
Following up D81682 and enable the new, extended value profile buckets for mem
op sizes.
Differential Revision: https://reviews.llvm.org/D83903
Aleksandr Platonov [Mon, 20 Jul 2020 11:46:09 +0000 (13:46 +0200)]
[clangd] Remove TokenBuffer usage in TypeHierarchy
Summary:
This patch mostly reverts D74850.
We could not use `AST.getTokens()` here, because it does not have tokens from the preamble.
Reviewers: sammccall, kadircet
Reviewed By: kadircet
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, kbobyrev, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D84144
Anders Waldenborg [Sat, 18 Jul 2020 10:35:01 +0000 (12:35 +0200)]
[clang-format] Add BitFieldColonSpacing option
This new option allows controlling if there should be spaces around
the ':' in a bitfield declaration.
BitFieldColonSpacing accepts four different values:
// "Both" - default
unsigned bitfield : 5
unsigned bf2 : 5 // AlignConsecutiveBitFields=true
// "None"
unsigned bitfield:5
unsigned bf2 :5
// "Before"
unsigned bitfield :5
unsigned bf2 :5
// "After"
unsigned bitfield: 5
unsigned bf2 : 5
Differential Revision: https://reviews.llvm.org/D84090
Jonas Devlieghere [Mon, 20 Jul 2020 18:23:43 +0000 (11:23 -0700)]
[lldb/Reproducers] Always record the current working directory
Setting the current working directory in the VFS will fail if the given
path doesn't exist in the YAML mapping or on disk.
Jonas Devlieghere [Mon, 20 Jul 2020 18:20:20 +0000 (11:20 -0700)]
[lldb] Fix method name to match LLDB code style (NFC)
recordInterestingDirectory -> RecordInterestingDirectory
Hiroshi Yamauchi [Fri, 17 Jul 2020 17:41:25 +0000 (10:41 -0700)]
[PGO][PGSO] Remove a temporary flag used for gradual rollout.
Remove the temporary flag PGSOIRPassOrTestOnly and the guard code which was used
for the staged rollout. This is a cleanup (NFC) as it's now false by default.
Differential Revision: https://reviews.llvm.org/D84057
Mircea Trofin [Thu, 9 Jul 2020 01:55:36 +0000 (18:55 -0700)]
[llvm] Development-mode InlineAdvisor
Summary:
This is the InlineAdvisor used in 'development' mode. It enables two
scenarios:
- loading models via a command-line parameter, thus allowing for rapid
training iteration, where models can be used for the next exploration
phase without requiring recompiling the compiler. This trades off some
compilation speed for the added flexibility.
- collecting training logs, in the form of tensorflow.SequenceExample
protobufs. We generate these as textual protobufs, which simplifies
generation and testing. The protobufs may then be readily consumed by a
tensorflow-based training algorithm.
To speed up training, training logs may also be collected from the
'default' training policy. In that case, this InlineAdvisor does not
use a model.
RFC: http://lists.llvm.org/pipermail/llvm-dev/2020-April/140763.html
Reviewers: jdoerfert, davidxl
Subscribers: mgorny, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D83733
LLVM GN Syncbot [Mon, 20 Jul 2020 17:51:57 +0000 (17:51 +0000)]
[gn build] Port
e1270b16c94
Florian Hahn [Mon, 20 Jul 2020 17:31:04 +0000 (18:31 +0100)]
[Matrix] Add TileInfo abstraction for tiled matrix code-gen.
This patch adds a TileInfo abstraction and utilities to
create a 3-level loop nest for tiling.
Reviewers: anemet
Reviewed By: anemet
Differential Revision: https://reviews.llvm.org/D77550
Victor Huang [Mon, 20 Jul 2020 17:40:41 +0000 (17:40 +0000)]
[PowerPC] Implement R_PPC64_REL24_NOTOC local calls, callee requires a TOC
The PC Relative code now allows for calls that are marked with the relocation
R_PPC64_REL24_NOTOC. This indicates that the caller does not have a valid TOC
pointer in R2 and does not require R2 to be restored after the call.
This patch is added to support local calls to callees that require a TOC
Reviewed By: sfertile, MaskRay, nemanjai, stefanp
Differential Revision: https://reviews.llvm.org/D83504
Sylvain Audi [Thu, 9 Jul 2020 21:12:02 +0000 (17:12 -0400)]
[LLD][COFF] Skip computation of the undefined symbols references that are not shown
The "undefined symbol" error message from lld-link displays up to 3 references to that symbol, and the number of extra references not shown.
This patch removes the computation of the strings for those extra references.
It fixes a freeze of lld-link we accidentally encountered when activating asan on a large project, without linking with the asan library.
In that case, __asan_report_load8 was referenced more than 2 million times, causing the computation of that many display strings, of which only 3 were used.
Differential Revision: https://reviews.llvm.org/D83510
Yuanfang Chen [Sun, 19 Jul 2020 07:26:55 +0000 (00:26 -0700)]
[NFC] remove unused llvm::deleter
Yuanfang Chen [Sat, 11 Jul 2020 02:47:12 +0000 (19:47 -0700)]
[NFC] remove unused includes of SelectionDAGISel.h
Yuanfang Chen [Tue, 7 Jul 2020 16:39:55 +0000 (09:39 -0700)]
[NFC] remove unneeded TargetLoweringObjectFile init after
85c30f3374d9
Yuanfang Chen [Mon, 20 Jul 2020 17:09:41 +0000 (10:09 -0700)]
[llc] (almost) remove `--print-machineinstrs`
Its effect could be achieved by
`-stop-after`,`-print-after`,`-print-after-all`. But a few tests need to
print MIR after ISel which could not be done with
`-print-after`/`-stop-after` since isel pass does not have commandline name.
That's the reason `--print-machineinstrs` is downgraded to
`--print-after-isel` in this patch. `--print-after-isel` could be
removed after we switch to new pass manager since isel pass would have a
commandline text name to use `print-after` or equivalent switches.
The motivation of this patch is to reduce tests dependency on
would-be-deprecated feature.
Reviewed By: arsenm, dsanders
Differential Revision: https://reviews.llvm.org/D83275
Matt Arsenault [Mon, 20 Jul 2020 17:25:07 +0000 (13:25 -0400)]
AMDGPU: Use MCRegister for preloaded arguments
Attempt to fix build error with ancient GCC
Fangrui Song [Mon, 20 Jul 2020 17:25:16 +0000 (10:25 -0700)]
[llvm-readobj] clang-format DwarfCFIEHPrinter.h, NFC
Pre-commit header ordering changes (and other minor clean-ups) before landing D84106.
Jakub Lichman [Mon, 20 Jul 2020 16:30:10 +0000 (18:30 +0200)]
[mlir] Added support for symbols inside linalg.generic and map concatenation
This commit adds functionality needed for implementation of convolutions with
linalg.generic op. Since linalg.generic right now expects indexing maps to be
just permutations, offset indexing needed in convolutions is not possible.
Therefore in this commit we address the issue by adding support for symbols inside
indexing maps which enables more advanced indexing. The upcoming commit will
solve the problem of computing loop bounds from such maps.
Differential Revision: https://reviews.llvm.org/D83158
Fangrui Song [Mon, 20 Jul 2020 16:58:31 +0000 (09:58 -0700)]
[LLVMgold.so] -plugin-opt=save-temps: save combined module to .lto.o instead of .o
This matches LLD and fixes https://sourceware.org/bugzilla/show_bug.cgi?id=26262#c1
.o is a bad choice for save-temps output because it is easy to override the bitcode file (*.o)
```
# Use bfd for the example, -fuse-ld=gold is similar.
clang -flto -c a.c # generate bitcode file a.o
clang -fuse-ld=bfd -flto a.o -o a -Wl,-plugin-opt=save-temps # override a.o
# The user repeats the command but get surprised, because a.o is now a combined module.
clang -fuse-ld=bfd -flto a.o -o a -Wl,-plugin-opt=save-temps
```
Reviewed By: tejohnson
Differential Revision: https://reviews.llvm.org/D84132
Alexey Bataev [Tue, 7 Jul 2020 20:16:17 +0000 (16:16 -0400)]
[OPENMP50]Perform data mapping analysis only for explicitly mapped data.
Summary:
According to OpenMP 5.0, the restrictions for mapping of overlapped data
apply only for explicitly mapped data, there is no restriction for
implicitly mapped data just like in OpenMP 4.5.
Reviewers: jdoerfert
Subscribers: yaxunl, guansong, sstefan1, cfe-commits, caomhin
Tags: #clang
Differential Revision: https://reviews.llvm.org/D83398
Vy Nguyen [Mon, 20 Jul 2020 16:53:05 +0000 (12:53 -0400)]
[libcxx] Skip tests on GCC
Summary: These don't work with GCC
Reviewers: jyknight, #libc!
Subscribers: libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D84183
Nick Desaulniers [Mon, 20 Jul 2020 16:50:22 +0000 (09:50 -0700)]
[ThinLTO] parse flags and blockcount summaries
Forked from pr/46523, we were having a hard time running llvm-extract on
IR from a thinLTO build of the Linux kernel.
$ llvm-extract --func jeq_imm jit-
42f488b63a04fdaa931315bdadecb6d23e20529a.ll
llvm-extract: jit-
42f488b63a04fdaa931315bdadecb6d23e20529a.ll:47463:8:
error: Expected 'gv', 'module', or 'typeid' at the start of summary
entry
^209 = flags: 8
^
Reviewed By: tejohnson
Differential Revision: https://reviews.llvm.org/D82917
Fangrui Song [Mon, 20 Jul 2020 16:34:39 +0000 (09:34 -0700)]
[Driver] Add --ld-path= and deprecate -fuse-ld=/abs/path and -fuse-ld=rel/path
Supersedes D80225. Add --ld-path= to avoid strange target specific
prefixes and make -fuse-ld= focus on its intended job: "linker flavor".
(-f* affects generated code or language features. --ld-path does not
affect codegen, so it is not named -f*)
The way --ld-path= works is similar to "Command Search and Execution" in POSIX.1-2017 2.9.1 Simple Commands.
If --ld-path= specifies
* an absolute path, the value specifies the linker.
* a relative path without a path component separator (/), the value is searched using the -B, COMPILER_PATH, then PATH.
* a relative path with a path component separator, the linker is found relative to the current working directory.
-fuse-ld= and --ld-path= can be composed, e.g. `-fuse-ld=lld --ld-path=/usr/bin/ld.lld`
The driver can base its linker option decision on the flavor -fuse-ld=, but it should not do fragile
flavor checking with --ld-path=.
Reviewed By: whitequark, keith
Differential Revision: https://reviews.llvm.org/D83015
Vy Nguyen [Mon, 13 Jul 2020 16:34:37 +0000 (12:34 -0400)]
Reland [libcxx]Put clang::trivial_abi on smart pointers
Reviewed By: ldionne,EricWF
Tags: #libcxx
Differential Revision: https://reviews.llvm.org/D82490
Hans Wennborg [Mon, 20 Jul 2020 15:48:00 +0000 (17:48 +0200)]
Require shell for lld/test/ELF/arm-exidx-range.s
The test fails in 32-bit Windows builds for unclear reasons:
ld.lld: error: failed to open
C:\src\llvm_package_1100-rc1\build32_stage0\tools\lld\test\ELF\Output\arm-exidx-range.s.tmp:
The parameter is incorrect.
David Goldman [Fri, 17 Jul 2020 19:06:28 +0000 (15:06 -0400)]
Fix issue in typo handling which could lead clang to hang
Summary:
We need to detect when certain TypoExprs are not being transformed
due to invalid trees, otherwise we risk endlessly trying to fix it.
Reviewers: rsmith
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D84067
Matt Arsenault [Mon, 20 Jul 2020 15:37:31 +0000 (11:37 -0400)]
AMDGPU: Remove outdated fixme
Matt Arsenault [Sat, 18 Jul 2020 00:21:28 +0000 (20:21 -0400)]
AMDGPU: Fix not accounting for constantexpr uses of LDS globals
This was failing to add the size of LDS globals that weren't directly
used by an instruction. They could be used by constant expressions
which are transitively used by the function. This requires a better
search, but just abort on this for now for correctness.
Benjamin Kramer [Mon, 20 Jul 2020 15:33:30 +0000 (17:33 +0200)]
[Sema] Promote SmallSet of enum to bitset
Even with 300 elements, this still consumes less stack space than the
SmallSet. NFCI.
Matt Arsenault [Fri, 3 Jul 2020 18:47:23 +0000 (14:47 -0400)]
AMDGPU/GlobalISel: Initial Implementation of calls
Return values, and tail calls are not yet handled.
Matt Arsenault [Mon, 29 Jun 2020 14:37:15 +0000 (10:37 -0400)]
Verifier: Check byref address space for AMDGPU calling conventions
Erich Keane [Mon, 20 Jul 2020 15:00:13 +0000 (08:00 -0700)]
Issue error on invalid arithemtic conversions in C ternary
As reported in PR46774, an invalid arithemetic conversion used in a C
ternary operator resulted in an assertion. This patch replaces that
assertion with a diagnostic stating that the conversion failed.
At the moment, I believe the only case of this happening is _ExtInt
types.
Matt Arsenault [Thu, 7 May 2020 18:58:05 +0000 (14:58 -0400)]
Verifier: Disallow byval and similar for AMDGPU calling conventions
These imply stack-like semantics, which doesn't make any sense for
entry points.
Benjamin Kramer [Mon, 20 Jul 2020 14:50:00 +0000 (16:50 +0200)]
[Driver] Promote SmallSet of enum to a bitset. NFCI.
Benjamin Kramer [Mon, 20 Jul 2020 14:41:44 +0000 (16:41 +0200)]
Upgrade SmallSets of pointer-like types to SmallPtrSet
This is slightly more efficient. NFC.
Frederik Gossen [Mon, 20 Jul 2020 14:46:18 +0000 (14:46 +0000)]
[MLIR][Shape] Allow `shape.rank` to accept extent tensors `tensor?xindex>`
Differential Revision: https://reviews.llvm.org/D84156
Frederik Gossen [Mon, 20 Jul 2020 14:37:19 +0000 (14:37 +0000)]
[MLIR][Shape] Allow `cstr_broadcastable` to accept extent tensors
Differential Revision: https://reviews.llvm.org/D84155
Alok Kumar Sharma [Mon, 20 Jul 2020 14:20:37 +0000 (19:50 +0530)]
[DebugInfo] Support for DW_AT_associated and DW_AT_allocated.
Summary:
This support is needed for the Fortran array variables with pointer/allocatable
attribute. This support enables debugger to identify the status of variable
whether that is currently allocated/associated.
for pointer array (before allocation/association)
without DW_AT_associated
(gdb) pt ptr
type = integer (
140737345375288:
140737354129776)
(gdb) p ptr
value requires
35017956 bytes, which is more than max-value-size
with DW_AT_associated
(gdb) pt ptr
type = integer (:)
(gdb) p ptr
$1 = <not associated>
for allocatable array (before allocation)
without DW_AT_allocated
(gdb) pt arr
type = integer (
140737345375288:
140737354129776)
(gdb) p arr
value requires
35017956 bytes, which is more than max-value-size
with DW_AT_allocated
(gdb) pt arr
type = integer, allocatable (:)
(gdb) p arr
$1 = <not allocated>
Testing
- unit test cases added
- check-llvm
- check-debuginfo
Reviewed By: aprantl
Differential Revision: https://reviews.llvm.org/D83544
Matt Arsenault [Fri, 5 Jun 2020 20:58:47 +0000 (16:58 -0400)]
IR: Define byref parameter attribute
This allows tracking the in-memory type of a pointer argument to a
function for ABI purposes. This is essentially a stripped down version
of byval to remove some of the stack-copy implications in its
definition.
This includes the base IR changes, and some tests for places where it
should be treated similarly to byval. Codegen support will be in a
future patch.
My original attempt at solving some of these problems was to repurpose
byval with a different address space from the stack. However, it is
technically permitted for the callee to introduce a write to the
argument, although nothing does this in reality. There is also talk of
removing and replacing the byval attribute, so a new attribute would
need to take its place anyway.
This is intended avoid some optimization issues with the current
handling of aggregate arguments, as well as fixes inflexibilty in how
frontends can specify the kernel ABI. The most honest representation
of the amdgpu_kernel convention is to expose all kernel arguments as
loads from constant memory. Today, these are raw, SSA Argument values
and codegen is responsible for turning these into loads.
Background:
There currently isn't a satisfactory way to represent how arguments
for the amdgpu_kernel calling convention are passed. In reality,
arguments are passed in a single, flat, constant memory buffer
implicitly passed to the function. It is also illegal to call this
function in the IR, and this is only ever invoked by a driver of some
kind.
It does not make sense to have a stack passed parameter in this
context as is implied by byval. It is never valid to write to the
kernel arguments, as this would corrupt the inputs seen by other
dispatches of the kernel. These argumets are also not in the same
address space as the stack, so a copy is needed to an alloca. From a
source C-like language, the kernel parameters are invisible.
Semantically, a copy is always required from the constant argument
memory to a mutable variable.
The current clang calling convention lowering emits raw values,
including aggregates into the function argument list, since using
byval would not make sense. This has some unfortunate consequences for
the optimizer. In the aggregate case, we end up with an aggregate
store to alloca, which both SROA and instcombine turn into a store of
each aggregate field. The optimizer never pieces this back together to
see that this is really just a copy from constant memory, so we end up
stuck with expensive stack usage.
This also means the backend dictates the alignment of arguments, and
arbitrarily picks the LLVM IR ABI type alignment. By allowing an
explicit alignment, frontends can make better decisions. For example,
there's real no advantage to an aligment higher than 4, so a frontend
could choose to compact the argument layout. Similarly, there is a
high penalty to using an alignment lower than 4, so a frontend could
opt into more padding for small arguments.
Another design consideration is when it is appropriate to expose the
fact that these arguments are all really passed in adjacent
memory. Currently we have a late IR optimization pass in codegen to
rewrite the kernel argument values into explicit loads to enable
vectorization. In most programs, unrelated argument loads can be
merged together. However, exposing this property directly from the
frontend has some disadvantages. We still need a way to track the
original argument sizes and alignments to report to the driver. I find
using some side-channel, metadata mechanism to track this
unappealing. If the kernel arguments were exposed as a single buffer
to begin with, alias analysis would be unaware that the padding bits
betewen arguments are meaningless. Another family of problems is there
are still some gaps in replacing all of the available parameter
attributes with metadata equivalents once lowered to loads.
The immediate plan is to start using this new attribute to handle all
aggregate argumets for kernels. Long term, it makes sense to migrate
all kernel arguments, including scalars, to be passed indirectly in
the same manner.
Additional context is in D79744.
Simon Pilgrim [Mon, 20 Jul 2020 14:17:04 +0000 (15:17 +0100)]
MCFixup.h - remove unnecessary MCExpr.h include. NFCI.
Move the include down to files that actually depend on MCExpr definitions.
Also exposes an implicit dependency on MCContext in AVRAsmBackend.h
Simon Pilgrim [Mon, 20 Jul 2020 13:03:46 +0000 (14:03 +0100)]
CodeGenDAGPatterns.h - remove unnecessary ComplexPattern forward declaration. NFCI.
This is defined in CodeGenTarget.h which we have to explicitly include already.
Simon Pilgrim [Mon, 20 Jul 2020 12:49:20 +0000 (13:49 +0100)]
CodeGenDAGPatterns.h - remove unused CodeGenHwModes.h include. NFCI.
Petar Avramovic [Mon, 20 Jul 2020 14:12:19 +0000 (16:12 +0200)]
AMDGPU/GlobalISel: Legalize s16->s64 G_FPEXT
Legalize using narrowScalar as s16->s32 G_FPEXT
followed by s32->s64 G_FPEXT.
Differential Revision: https://reviews.llvm.org/D84030
Matt Arsenault [Sat, 18 Jul 2020 18:12:16 +0000 (14:12 -0400)]
AMDGPU/GlobalISel: Remove outdated comment
Matt Arsenault [Sat, 18 Jul 2020 16:27:16 +0000 (12:27 -0400)]
GlobalISel: Don't handle widenScalar for vector G_INSERT
This handling didn't make any sense for vectors.
Matt Arsenault [Sun, 19 Jul 2020 15:57:49 +0000 (11:57 -0400)]
AMDGPU/GlobalISel: Fix custom lowering of llvm.trunc.f64 for SI
This was missing an operand from BFE and not erasing the original
instruction.
Matt Arsenault [Sun, 19 Jul 2020 15:03:39 +0000 (11:03 -0400)]
AArch64/GlobalISel: Fix hardcoded registers in error message checks
Matt Arsenault [Sun, 19 Jul 2020 16:29:48 +0000 (12:29 -0400)]
GlobalISel: Consistently get TII from MIRBuilder
Pavel Labath [Mon, 13 Jul 2020 16:04:46 +0000 (18:04 +0200)]
[lldb/Utility] Simplify Scalar::SetValueFromData
The function was fairly complicated and didn't support new bigger
integer sizes. Use llvm function for loading an APInt from memory to
write a unified implementation for all sizes.
Pavel Labath [Wed, 15 Jul 2020 14:50:34 +0000 (16:50 +0200)]
[lldb/test] Simplify Makefile rules for .d files
The sed line in the rules was adding the .d file as a target to the
dependency rules -- to ensure the file gets rebuild when the sources
change. The same thing can be achieved more elegantly with some -M
flags.
Benjamin Kramer [Mon, 20 Jul 2020 13:42:16 +0000 (15:42 +0200)]
[LLE] std::inserter doesn't work with SmallSet, so don't use it.
Haojian Wu [Mon, 20 Jul 2020 13:29:14 +0000 (15:29 +0200)]
[AST][RecoveryExpr] Add recovery-ast tests for C language, NFC.
some examples are working already.
Differential Revision: https://reviews.llvm.org/D84146
Haojian Wu [Mon, 20 Jul 2020 13:06:40 +0000 (15:06 +0200)]
[AST][RecoveryExpr] Fix a crash on opencl C++.
Differential Revision: https://reviews.llvm.org/D84145
Haojian Wu [Mon, 20 Jul 2020 13:11:00 +0000 (15:11 +0200)]
Fix clangd build, NFC
Benjamin Kramer [Mon, 20 Jul 2020 13:00:27 +0000 (15:00 +0200)]
[LoopSimplify] Use SmallPtrSet and range for loops more. NFCI.
Haojian Wu [Mon, 20 Jul 2020 12:53:29 +0000 (14:53 +0200)]
[AST][RecoveryExpr] Preserve the AST for invalid conditions.
Adjust an existing diagnostic test, which is an improvement of secondary diagnostic.
Differential Revision: https://reviews.llvm.org/D81163
Pavel Labath [Mon, 20 Jul 2020 10:45:52 +0000 (12:45 +0200)]
[LLDB/test] Simplify result formatter code
Now that the main test results are reported through lit, and we only
have one formatter class, this code is unnecessarily baroque.
Sam McCall [Fri, 17 Jul 2020 10:03:24 +0000 (12:03 +0200)]
[clangd] Exclude preprocessed-to-nothing tokens from selection
This prevents selection of empty preprocessor entities (like #define directives,
or text in disabled sections) creating a selection in the parent element.
Summary: Based on D83508 by Aleksandr Platonov.
Reviewers: ArcsinX, kadircet
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D84012
Sam McCall [Fri, 17 Jul 2020 09:35:04 +0000 (11:35 +0200)]
[Syntax] expose API for expansions overlapping a spelled token range.
Summary:
This allows efficiently accessing all expansions (without iterating over each
token and searching), and also identifying tokens within a range that are
affected by the preprocessor (which is how clangd will use it).
Subscribers: ilya-biryukov, kadircet, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D84009
Simon Pilgrim [Mon, 20 Jul 2020 12:36:27 +0000 (13:36 +0100)]
SubtargetFeatureInfo.h - remove unnecessary include and forward declarations. NFCI.
Move necessary include down to SubtargetFeatureInfo.cpp.
Muhammad Omair Javaid [Mon, 20 Jul 2020 12:37:07 +0000 (17:37 +0500)]
Revert "AArch64 SVE register infos and core file support"
This reverts commit
7e017de0ad62dfd3f373354fc47b0e39c0fef657.
Frederik Gossen [Mon, 20 Jul 2020 12:24:02 +0000 (12:24 +0000)]
[MLIR][Shape] Fold `shape.shape_eq`
Fold `shape.shape_eq`.
Differential Revision: https://reviews.llvm.org/D82533
Nicolas Vasilache [Mon, 20 Jul 2020 12:15:31 +0000 (08:15 -0400)]
[mlir][Vector] NFC - Improve VectorInterfaces
This revision improves and makes better use of OpInterfaces for the Vector dialect.
Differential Revision: https://reviews.llvm.org/D84053
Muhammad Omair Javaid [Wed, 8 Jul 2020 01:44:12 +0000 (06:44 +0500)]
AArch64 SVE register infos and core file support
Summary:
This patch adds support for AArch64 SVE register infos description and
core file register access.
AArch64 SVE is a an optional extension of Arm v8.3-a architecture. It
has introduced 32 new vector registers Z, 16 predicate P registers and FFR
predicate register. These registers have fixed names but can dynamically
be configured to different size based on underlying OS configuration.
This patch adds register info struct that describes SVE register infos and
also provides RegisterContextPOSIXCore_arm64 routines to access SVE registers.
This patch also introduces a mechanism to configure SVE register sizes and
offsets at startup before exchanging register information across gdb-remote.
TestLinuxCore.py has been updated to include testing of SVE core files.
Reviewers: labath, clayborg, jankratochvil, jasonmolenda, rengolin
Reviewed By: labath
Subscribers: tschuett, kristof.beyls, danielkiss, lldb-commits
Differential Revision: https://reviews.llvm.org/D77047
Alex Zinenko [Mon, 20 Jul 2020 11:54:30 +0000 (13:54 +0200)]
[mlir] Support translating function linkage between MLIR and LLVM IR
Linkage support is already present in the LLVM dialect, and is being translated
for globals other than functions. Translation support has been missing for
functions because their conversion goes through a different code path than
other globals.
Differential Revision: https://reviews.llvm.org/D84149
Paul Walker [Mon, 20 Jul 2020 10:57:58 +0000 (10:57 +0000)]
[SVE] Add lowering for fixed length vector fdiv, fma, fmul and fsub operations.
Differential Revision: https://reviews.llvm.org/D84034
Joachim Protze [Mon, 20 Jul 2020 11:53:29 +0000 (13:53 +0200)]
[OpenMP][Tests][NFC] Mark compatibility with older versions of clang
Haojian Wu [Mon, 20 Jul 2020 11:11:15 +0000 (13:11 +0200)]
[AST][RecoveryExpr] Preserve the AST for invalid class constructions.
Differential Revision: https://reviews.llvm.org/D81090
Paul Walker [Mon, 20 Jul 2020 10:43:45 +0000 (10:43 +0000)]
[Driver] Add support for -msve-vector-bits=scalable.
No real action is taken for a value of scalable but it provides a
route to disable an earlier specification and is effectively its
default value when omitted.
Patch also removes an "unused variable" warning.
Differential Revision: https://reviews.llvm.org/D84021
George Mitenkov [Mon, 20 Jul 2020 10:40:18 +0000 (13:40 +0300)]
[MLIR][SPIRVToLLVM] Documentation for SPIR-V to LLVM conversion
This patch adds documentation for SPIR-V to LLVM conversion. It describes
the approaches taken and what is currently supported by this conversion
framework.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D83322
James Henderson [Mon, 20 Jul 2020 10:21:54 +0000 (11:21 +0100)]
[test][llvm-readobj] Fix build bot failure after
df952cb9
The test wasn't updated due to being an unusual target not included in
my test run.
Florian Hahn [Mon, 20 Jul 2020 09:50:15 +0000 (10:50 +0100)]
[Matrix] Add minimal lowering pass that only requires TTI.
This patch adds a new variant of the matrix lowering pass that only does
a minimal lowering and only depends on TTI. The main purpose of this pass
is to have a pass with minimal dependencies to run as part of the backend
pipeline.
At the moment, the only difference to the regular lowering pass is that it
does not support remarks. But in subsequent patches add support for tiling
to the lowering pass which will require more analysis, which we do not want
to run in the backend, as the lowering should happen in the middle-end in
practice and running it in the backend is mostly for convenience when
running llc.
Reviewers: anemet, Gerolf, efriedma, hfinkel
Reviewed By: anemet
Differential Revision: https://reviews.llvm.org/D76867
Hans Wennborg [Mon, 20 Jul 2020 10:04:42 +0000 (12:04 +0200)]
[clang-cl] Allow a colon after the /Fe option (PR46720)
Muhammad Omair Javaid [Mon, 20 Jul 2020 09:36:41 +0000 (14:36 +0500)]
Remove Linux sysroot dependencies of SVE PT macros
Summary:
SVE elf note data requires SVE PT macros for reading writing data. Same macros are used by Linux ptrace SVE register access.
This patch makes necessary changes to lldb/source/Plugins/Process/Linux/LinuxPTraceDefines_arm64sve.h in order to make them sysroot independent.
Reviewers: labath, rengolin
Reviewed By: labath
Subscribers: tschuett, lldb-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D83541
Muhammad Omair Javaid [Mon, 20 Jul 2020 09:36:40 +0000 (14:36 +0500)]
Remove use of multiple reg index enums by RegisterContextPOSIX_arm64
Summary:
This patch removes dependence of RegisterContextPOSIX_arm64 on register number enums defined in lldb-arm64-register-enums.h.
RegisterContextPOSIX_arm64 makes use of helper functions to access register numbers defined in RegisterInfos_arm64.h via RegisterInfosPOSIX_arm64.
Reviewers: labath
Reviewed By: labath
Subscribers: emaste, kristof.beyls, arphaman, danielkiss, lldb-commits
Differential Revision: https://reviews.llvm.org/D83753
Balázs Kéri [Mon, 20 Jul 2020 07:07:48 +0000 (09:07 +0200)]
[Analyzer][StreamChecker] Report every leak, clean up state.
Summary:
Report resource leaks with non-fatal error.
Report every resource leak.
Stream state is cleaned up at `checkDeadSymbols`.
Reviewers: Szelethus, baloghadamsoftware, NoQ
Reviewed By: Szelethus
Subscribers: rnkovacs, xazax.hun, baloghadamsoftware, szepet, a.sidorin, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, gamesh411, Charusso, martong, ASDenysPetrov, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D82845