Harald van Dijk [Wed, 14 Apr 2021 07:04:37 +0000 (08:04 +0100)]
Revert "Title: [RISCV] Add missing part of instruction vmsge {u}. VX Review By: craig.topper Differential Revision : https://reviews.llvm.org/D100115"
This reverts commit
4d9ccb18f50803a1aa9c0332dc72472bdfec8bc4.
LLVM GN Syncbot [Wed, 14 Apr 2021 06:32:13 +0000 (06:32 +0000)]
[gn build] Port
cbc9c4ea90e1
Nathan Ridge [Mon, 22 Feb 2021 07:55:13 +0000 (02:55 -0500)]
[clangd] Add support for inline parameter hints
Differential Revision: https://reviews.llvm.org/D98748
Serguei Katkov [Mon, 12 Apr 2021 08:12:28 +0000 (15:12 +0700)]
[Live Intervals] Teach Greedy RA to recognize special case live-through
Statepoint instruction has a deopt section which is actually live-through the call.
Currently this is handled by special post pass after RA - fixup-statepoint-caller-saved.
This change teaches Greedy RA that if segment of live interval is ended with statepoint
instruction and its reg is used in deopt bundle then this live interval interferes regmask of this statepoint
and as a result caller-saved register cannot be assigned to this live interval.
Reviewers: reames, dantrushin
Reviewed By: reames
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D100296
Hanhan Wang [Wed, 14 Apr 2021 05:36:41 +0000 (22:36 -0700)]
[mlir][StandardToSPIRV] Add support for lowering math.powf to SPIR-V.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D100403
Min-Yih Hsu [Wed, 14 Apr 2021 04:15:47 +0000 (21:15 -0700)]
[M68k] Put M68kInfo as the direct library dependency for AsmParser
M68kAsmParser uses `llvm::getTheM68kTarget` from M68kInfo, therefore we
should put M68kInfo as its direct dependency. Otherwise the build will
fail when building LLVM libraries as shared objects (building LLVM
libraries statically won't have this problem though).
Serguei Katkov [Wed, 14 Apr 2021 03:37:54 +0000 (10:37 +0700)]
[Live Intervals] Factor-out unionBitMask. NFC.
For further re-usage in other place.
Jonas Devlieghere [Wed, 14 Apr 2021 03:36:02 +0000 (20:36 -0700)]
[lldb] Disable TestClangModulesUpdate.py because it's flaky
The test is failing intermittently on GreenDragon.
rdar://
76540904
Jonas Devlieghere [Wed, 14 Apr 2021 02:04:06 +0000 (19:04 -0700)]
[lldb] Build debugserver 2-way fat on AS
When compiling for arm, build debugserver 2 way fat with an arm64 and
arm64e slice. You can only debug arm64e processes using an arm64e
debugserver.
Wang, Pengfei [Wed, 14 Apr 2021 01:32:48 +0000 (09:32 +0800)]
[X86][AMX] Refactor for PostRA ldtilecfg pass.
This is a follow up of D99010. We didn't consider the live range of shape registers when hoist ldtilecfg. There maybe risks, e.g. we happen to insert it to an invalid range of some registers and get unexpected error.
This patch fixes this problem by storing the value to corresponding stack place of ldtilecfg after all its definition immediately.
This patch also fix a problem in previous code: If we don't have a ldtilecfg which dominates all AMX instructions, we cannot initialize shapes for other ldtilecfg.
There're still some optimization points left. E.g. eliminate unused mov instructions, break the def-use dependency before RA etc.
Reviewed By: LuoYuanke, xiangzhangllvm
Differential Revision: https://reviews.llvm.org/D99966
Mehdi Amini [Wed, 14 Apr 2021 01:25:07 +0000 (01:25 +0000)]
Expose parseXInDimensionList() to the `DialectAsmParser`
This allows custom types and attribute to parse a dimension list that
isn't necessarily terminated with `xtype`, for example something like:
#tf.shape<4x5>
Differential Revision: https://reviews.llvm.org/D100432
Philip Reames [Wed, 14 Apr 2021 02:02:11 +0000 (19:02 -0700)]
fix whitespace type
Jonas Devlieghere [Wed, 14 Apr 2021 01:56:05 +0000 (18:56 -0700)]
[lldb] Pretend host architecture is arm64 on AS
The arm64e architecture is a preview. On Apple Silicon, pretend the host
architecture is arm64.
ShihPo Hung [Mon, 12 Apr 2021 02:34:10 +0000 (19:34 -0700)]
[RISCV] Implement COPY for Zvlsseg registers
When copying Zvlsseg register tuples, we split the COPY to NF whole register moves
as below:
$v10m2_v12m2 = COPY $v4m2_v6m2 # NF = 2
=>
$v10m2 = PseudoVMV2R_V $v4m2
$v12m2 = PseudoVMV2R_V $v6m2
This patch copies forwardCopyWillClobberTuple from AArch64 to check
register overlapping.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D100280
Roland McGrath [Tue, 13 Apr 2021 22:03:54 +0000 (15:03 -0700)]
[scudo] Make MTE inline asm compatible with GNU assembler
The GNU assembler can't parse `.arch_extension ...` before a `;`.
So instead uniformly use raw string syntax with separate lines
instead of `;` separators in the assembly code.
Reviewed By: pcc
Differential Revision: https://reviews.llvm.org/D100413
Zoe Carver [Wed, 14 Apr 2021 00:56:55 +0000 (17:56 -0700)]
[libc++][docs] Add status docs for ranges.
The added documents have two tables: 1 containing links to issues and papers related to ranges. And the other contains most of the sections from the One Ranges Proposal, with their dependencies linked. This will allow us to assign work that can be done in parallel.
Differential Revision: https://reviews.llvm.org/D100393
Nemanja Ivanovic [Wed, 14 Apr 2021 00:40:36 +0000 (19:40 -0500)]
[PowerPC] Use correct node to get a super register from a subreg
The VSX tablegen file has some rather eggregious uses of
COPY_TO_REGCLASS even in situations where it needs to use
SUBREG_TO_REG. While this produces correct code, it often doesn't
allow the register coalescer to coalesce copies and the resulting
code ends up being suboptimal. This patch just changes over
patterns that should use SUBREG_TO_REG.
Sterling Augustine [Wed, 14 Apr 2021 00:42:46 +0000 (17:42 -0700)]
Revert "[GlobalOpt] Revert valgrind hacks"
This reverts commit
dbc16ed199dce2598f0e49943bf8354ef92a0ecc.
Matthias Springer [Tue, 13 Apr 2021 23:10:10 +0000 (08:10 +0900)]
[mlir] Fix return values of AMX tests
Differential Revision: https://reviews.llvm.org/D100422
Arjun P [Mon, 12 Apr 2021 15:08:27 +0000 (20:38 +0530)]
[MLIR] PresburgerSet subtraction: add documentation and assertion saying we don't support divisions yet
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D100324
Hongtao Yu [Tue, 13 Apr 2021 00:11:38 +0000 (17:11 -0700)]
[CSSPGO] Fix a test issue due to portablity of std::hash
As a follow-up to D99815, this patch enables the test by using a DAG order instead of a sequential order to mitigate the platform portability issue due to `std:: _Hash_bytes`.
Reviewed By: wenlei, jsji
Differential Revision: https://reviews.llvm.org/D100351
Stella Stamenova [Tue, 13 Apr 2021 23:11:58 +0000 (16:11 -0700)]
Fix resolution-err.ll
chmod tries to be very helpful on some platforms and prevent naive mistakes, by warning the user. This results in the following error during the test:
```chmod: ...resolution-err.ll.tmp.resolution.txt: new permissions are r--rw-rw-, not r--r--r--```
To fix the test, call chmod with u.
Differential Revision: https://reviews.llvm.org/D100417
Anton Bikineev [Fri, 2 Apr 2021 18:14:44 +0000 (20:14 +0200)]
[Sema] Move 'char-expression-as-unsigned < 0' into a separate diagnostic
This change splits '-Wtautological-unsigned-zero-compare' by reporting
char-expressions-interpreted-as-unsigned under a separate diagnostic
'-Wtautological-unsigned-char-zero-compare'. This is beneficial for
projects that want to enable '-Wtautological-unsigned-zero-compare' but at
the same time want to keep code portable for platforms with char being
signed or unsigned, such as Chromium.
Differential Revision: https://reviews.llvm.org/D99808
peter klausler [Tue, 13 Apr 2021 00:05:05 +0000 (17:05 -0700)]
[flang] More precise enforcement of runtime constraint
An OPEN statement that affects an already connected unit
without changing its external file is required to have
STATUS="OLD" or default STATUS=. The code was eliciting
spurious runtime errors in situations where an OPEN statement
pertained to an existing unit number but did not need to have
STATUS="OLD'.
Differential Revision: https://reviews.llvm.org/D100352
root [Tue, 13 Apr 2021 22:06:07 +0000 (06:06 +0800)]
Title: [RISCV] Add missing part of instruction vmsge {u}. VX Review By: craig.topper Differential Revision : https://reviews.llvm.org/D100115
root [Tue, 13 Apr 2021 22:02:07 +0000 (06:02 +0800)]
Title: [RISCV] Add missing part of instruction vmsge {u}. VX Review By: craig.topper Differential Revision : https://reviews.llvm.org/D100115
root [Tue, 13 Apr 2021 21:52:16 +0000 (05:52 +0800)]
Title: [RISCV] Add missing part of instruction vmsge {u}. VX Review By: craig.topper Differential Revision : https://reviews.llvm.org/D100115
Sumesh Udayakumaran [Tue, 13 Apr 2021 19:11:25 +0000 (12:11 -0700)]
[mlir] Prevent operations with users from being hoisted
This patch collects operations that have users in a for loop and uses
them when loop invariant operations are detected and hoisted.
Reviewed By: bondhugula, vinayaka-polymage
Differential Revision: https://reviews.llvm.org/D99761
Daniel Sanders [Tue, 13 Apr 2021 18:14:30 +0000 (11:14 -0700)]
[TableGen] Resolve concrete but not complete field access initializers
This fixes the resolution of Rec10.Zero in ListSlices.td.
As part of this, correct the definition of complete for ListInit such that
it's complete iff all the elements in the list are complete rather than
always being complete regardless of the elements. This is the reason
Rec10.TwoFive from ListSlices.td previously resolved despite being
incomplete like Rec10.Zero was
Depends on D100247
Reviewed By: Paul-C-Anagnostopoulos
Differential Revision: https://reviews.llvm.org/D100253
Artur Gainullin [Tue, 13 Apr 2021 04:39:57 +0000 (21:39 -0700)]
[Driver] Make the findVCToolChainViaEnvironment case-insensitive
PATH usage on Windows is case-insensitive. There could be situations
when toolchain path can't be obtained from PATH because of
case-sensitivity of the findVCToolChainViaEnvironment.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D100361
Rob Suderman [Wed, 7 Apr 2021 01:31:51 +0000 (18:31 -0700)]
[mlir][tosa] Add conv2d lowering to linalg.conv2d operator for FP
Handles lowering conv2d to linalg's convolution operator. This implementation
only supports floating point values but handles all strides, dilations, and
padding values.
Differential Revision: https://reviews.llvm.org/D100061
Sander de Smalen [Tue, 13 Apr 2021 15:04:02 +0000 (16:04 +0100)]
[AArch64][SVE] Always use overloaded methods instead of preprocessor macro.
This fixes a subtle issue where:
svprf(pg, ptr, SV_ALL /*is sv_pattern instead of sv_prfop*/)
would be quietly accepted. With this change, the function declaration
guards that the third parameter is a `enum sv_prfop`. Previously `svprf`
would map directly to `__builtin_sve_svprfb`, which accepts the enum
operand as a signed integer and only checks that the incoming range is
valid, meaning that SV_ALL would be discarded as being outside the valid
immediate range, but would have allowed SV_VL1 without issuing a warning
(C) or error (C++).
Reviewed By: c-rhodes
Differential Revision: https://reviews.llvm.org/D100297
Hana Dusíková [Tue, 13 Apr 2021 19:45:09 +0000 (15:45 -0400)]
Remove warning "suggest braces" for aggregate initialization of an empty class with an aggregate base class.
I recently ran into issues with aggregates and inheritance, I'm using
it for creating a type-safe library where most of the types are build
over "tagged" std::array. After bit of cleaning and enabling -Wall
-Wextra -pedantic I noticed clang only in my pipeline gives me warning.
After a bit of focusing on it I found it's not helpful, and contemplate
disabling the warning all together. After a discussion with other
library authors I found it's bothering more people and decided to fix
it.
Removes this warning:
template<typename T, int N> struct StdArray {
T contents[N];
};
template<typename T, int N> struct AggregateAndEmpty : StdArray<T,N> { };
AggregateAndEmpty<int, 3> p = {1, 2, 3}; // <-- warning here about omitted braces
Lei Zhang [Tue, 13 Apr 2021 19:18:32 +0000 (15:18 -0400)]
[mlir][spirv] Only attach struct offset for required storage classes
Per the SPIR-V spec "2.16.2. Validation Rules for Shader Capabilities":
Composite objects in the StorageBuffer, PhysicalStorageBuffer,
Uniform, and PushConstant Storage Classes must be explicitly
laid out.
For other cases we don't need to attach the struct offsets.
Reviewed By: hanchung
Differential Revision: https://reviews.llvm.org/D100386
Anirudh Prasad [Tue, 13 Apr 2021 19:25:00 +0000 (15:25 -0400)]
[AsmParser][SystemZ][z/OS] Add support to AsmLexer to accept HLASM style integers
- Add support for HLASM style integers. These are the decimal integers [0-9].
- HLASM does not support the additional prefixed integers like, `0b`, `0x`, octal integers and Masm style integers.
- To achieve this, a field `LexHLASMStyleIntegers` (similar to the `LexMasmStyleIntegers` field) is introduced in `MCAsmLexer.h` as well as a corresponding setter.
Note: This field could also go into MCAsmInfo.h. I used the previous precedent set by the `LexMasmIntegers` field.
Depends on https://reviews.llvm.org/D99286
Reviewed By: epastor
Differential Revision: https://reviews.llvm.org/D99374
Aaron Ballman [Tue, 13 Apr 2021 19:18:13 +0000 (15:18 -0400)]
Correct the tablegen for checking mutually exclusive stmt attrs
The previous implementation was insufficient for checking statement
attribute mutual exclusion because attributed statements do not collect
their attributes one-at-a-time in the same way that declarations do. So
the design that was attempting to check for mutual exclusion as each
attribute was processed would not ever catch a mutual exclusion in a
statement. This was missed due to insufficient test coverage, which has
now been added for the [[likely]] and [[unlikely]] attributes.
The new approach is to check all of attributes that are to be applied
to the attributed statement in a group. This required generating
another DiagnoseMutualExclusions() function into AttrParsedAttrImpl.inc.
Craig Topper [Tue, 13 Apr 2021 18:57:10 +0000 (11:57 -0700)]
[RISCV] Add a generic PatGprImm class and use it to simplify patterns in RISCVInstrInfoB.td. NFC
Craig Topper [Tue, 13 Apr 2021 18:29:34 +0000 (11:29 -0700)]
[RISCV] Make use of PatGprGpr and PatGpr in RISCVInstrInfoB.td. NFC
Dan Liew [Tue, 13 Apr 2021 18:53:39 +0000 (11:53 -0700)]
Ship `llvm-cxxfilt` in the toolchain.
Originally done for rdar://problem/
57155465.
rdar://
76602859
Differential Revision: https://reviews.llvm.org/D100405
LLVM GN Syncbot [Tue, 13 Apr 2021 18:49:06 +0000 (18:49 +0000)]
[gn build] Port
8ca366935b05
LLVM GN Syncbot [Tue, 13 Apr 2021 18:49:05 +0000 (18:49 +0000)]
[gn build] Port
46b8ea2fff90
Jez Ng [Tue, 13 Apr 2021 18:45:26 +0000 (14:45 -0400)]
[lld-macho] rm old test directory for segments.s
This should unbreak incremental builds after https://github.com/llvm/llvm-project/commit/
8ca366935b055283b571ba0893f53a7a18ac59bb
Eugene Zhulenev [Tue, 13 Apr 2021 18:40:04 +0000 (11:40 -0700)]
[mlir] Convert async dialect passes from function passes to op agnostic passes
Differential Revision: https://reviews.llvm.org/D100401
Roman Lebedev [Tue, 13 Apr 2021 18:21:19 +0000 (21:21 +0300)]
[clang-tidy] Add check for implicit widening of multiplication result
Overflows are never fun.
In most cases (in most of the code), they are rare,
because usually you e.g. don't have as many elements.
However, it's exceptionally easy to fall into this pitfail
in code that deals with images, because, assuming 4-channel 32-bit FP data,
you need *just* ~269 megapixel image to case an overflow
when computing at least the total byte count.
In [[ https://github.com/darktable-org/darktable | darktable ]], there is a *long*, painful history of dealing with such bugs:
* https://github.com/darktable-org/darktable/pull/7740
* https://github.com/darktable-org/darktable/pull/7419
* https://github.com/darktable-org/darktable/commit/
eea1989f2c9fa76710db07baaec4c19c1e40e81c
* https://github.com/darktable-org/darktable/commit/
70626dd95bf0fab36f2d011dab075e3ebbf7aa28
* https://github.com/darktable-org/darktable/pull/670
* https://github.com/darktable-org/darktable/commit/
38c69fb1b2bc90057c569242cb9945a10be0b583
and yet they clearly keep resurfacing still.
It would be immensely helpful to have a diagnostic for those patterns,
which is what this change proposes.
Currently, i only diagnose the most obvious case, where multiplication
is directly widened with no other expressions inbetween,
(i.e. `long r = (int)a * (int)b` but not even e.g. `long r = ((int)a * (int)b)`)
however that might be worth relaxing later.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D93822
Siva Chandra Reddy [Tue, 13 Apr 2021 18:35:41 +0000 (11:35 -0700)]
[libc][Obvious] Fix nextafter* implementation.
It broke when FPBits was converted to a union.
Yonghong Song [Tue, 13 Apr 2021 16:15:21 +0000 (09:15 -0700)]
BPF: remove default .extern data section
Currently, for any extern variable, if it doesn't have
section attribution, it will be put into a default ".extern"
btf DataSec. The initial design is to put every extern
variable in a DataSec so libbpf can use it.
But later on, libbpf actually requires extern variables
to put into special sections, e.g., ".kconfig", ".ksyms", etc.
so they can be used properly based on section name.
Andrii mentioned since ".extern" variables are
not actually used, it makes sense to remove it from
the compiler so libbpf does not need to deal with it,
esp. for static linking. The BTF for these extern variables
is still generated.
With this patch, I tested kernel selftests/bpf and all tests
passed. Indeed, removing ".extern" DataSec seems having no
impact.
Differential Revision: https://reviews.llvm.org/D100392
Matt Morehouse [Tue, 13 Apr 2021 18:12:05 +0000 (11:12 -0700)]
[libFuzzer] Fix fuzzer-oom.test.
SinkPtr was not correctly marked as volatile, causing the malloc to get
optimized out. This was causing 20-minute timeouts for the test and no
OOM.
Lang Hames [Tue, 13 Apr 2021 18:26:57 +0000 (11:26 -0700)]
[lli] Honor the --entry-function flag in orc and orc-lazy modes.
Fixes https://llvm.org/PR49906.
Nikita Popov [Sat, 10 Apr 2021 21:50:23 +0000 (23:50 +0200)]
[SCEV] Don't walk uses of phis without SCEV expression when forgetting
I've run into some cases where a large fraction of compile-time is
spent invalidating SCEV. One of the causes is forgetLoop(), which
walks all values that are def-use reachable from the loop header
phis. When invalidating a topmost loop, that might be close to all
values in a function. Additionally, it's fairly common for there to
not actually be anything to invalidate, but we'll still be performing
this walk again and again.
My first thought was that we don't need to continue walking the uses
if the current value doesn't have a SCEV expression. However, this
isn't quite right, because SCEV construction can skip over values
(e.g. for a chain of adds, we might only create a SCEV expression
for the final value).
What this patch does instead is to only walk the (full) def-use chain
of loop phis that have a SCEV expression. If there's no expression
for a phi, then we also don't have any dependent expressions to
invalidate.
Differential Revision: https://reviews.llvm.org/D100264
ThePhD [Tue, 13 Apr 2021 18:15:45 +0000 (14:15 -0400)]
String Literal and Wide String Literal Encoding from the Preprocessor
Adds the __clang_literal_encoding__ and __clang_wide_literal_encoding__
predefined macros to expose the encoding used for string literals to
the preprocessor.
Craig Topper [Tue, 13 Apr 2021 14:54:24 +0000 (07:54 -0700)]
[RISCV] Rename RISCVISD::GREVI(W)/GORCI(W) to RISCVISD::GREV(W)/GORC(W). Don't require second operand to be a constant.
Prep work for adding intrinsics for these instructions in the
future.
Jessica Paquette [Mon, 12 Apr 2021 21:49:20 +0000 (14:49 -0700)]
[AArch64][GlobalISel] Mark G_CTPOP as legal for v16s8 and v8s8
G_CTPOP can be directly selected to CNT in these cases.
Differential Revision: https://reviews.llvm.org/D100349
Arnamoy Bhattacharyya [Tue, 13 Apr 2021 17:56:43 +0000 (13:56 -0400)]
[flang][OpenMP] Modify semantic check for nesting of `ordered` regions to include `close` nesting check.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D100222
Alina Sbirlea [Tue, 13 Apr 2021 00:53:29 +0000 (17:53 -0700)]
[MemorySSA] Add test for PR49859.
Peter Steinfeld [Mon, 12 Apr 2021 20:11:42 +0000 (13:11 -0700)]
[flang] Handle instantiation of procedure pointer components
We were not instantiating procedure pointer components. If the instantiation
contained errors, we were not reporting them. This resulted in internal errors
in later processing.
I fixed this by adding code in .../lib/Semantics/type.cpp in
InstantiateComponent() to handle a component with ProcEntityDetails. I also
added several tests for various good and bad instantiations of procedure
pointer components.
Differential Revision: https://reviews.llvm.org/D100341
Matt Morehouse [Tue, 13 Apr 2021 16:25:12 +0000 (09:25 -0700)]
[libFuzzer] Fix MSan false positives with custom mutators.
We need to unpoison parameters before calling into MSan-instrumented
user-defined mutators.
Addresses https://github.com/google/oss-fuzz/issues/4605.
Reviewed By: metzman
Differential Revision: https://reviews.llvm.org/D100355
Jonas Devlieghere [Tue, 13 Apr 2021 17:23:04 +0000 (10:23 -0700)]
[debugserver] Use class member initialization for RNBContext
Address Shafik Yaghmour's post commit code review feedback.
Philip Reames [Tue, 13 Apr 2021 17:22:30 +0000 (10:22 -0700)]
Remove a -O2 usage from a CSE specific test file
Given this is checking attributes, there are a bunch of valid ways that O2 can infer attributes that CSE will not.
Shilei Tian [Tue, 13 Apr 2021 17:22:24 +0000 (13:22 -0400)]
[Clang][OpenMP][NVPTX] Fixed failure in openmp-offload-gpu.c if the system has CUDA
https://lists.llvm.org/pipermail/openmp-dev/2021-March/003940.html reports
test failure in `openmp-offload-gpu.c`. The failure is, when using `-S` in the
clang driver, it still reports bitcode library doesn't exist. However, it is not
exposed in my local run and Phabiractor test. The reason it escaped from Phabricator
test is, the test machine doesn't have CUDA, so `LibDeviceFile` is empty. In this
case, the check of `OPT_S` will be hit, and we get "expected" result. However, if
the test machine has CUDA, `LibDeviceFile` will not be empty, then the check will
not be done, and it just proceeds, trying to add the bitcode library. The reason
it escaped from my local run is, I didn't build ALL targets, so this case was
marked UNSUPPORTED.
Reviewed By: kkwli0
Differential Revision: https://reviews.llvm.org/D98902
Michał Górny [Sun, 11 Apr 2021 09:37:36 +0000 (11:37 +0200)]
[lldb] [gdb-remote server] Abstract away getting current process
Introduce new m_current_process and m_continue_process variables that
keep the pointers to currently selected process. At this moment, this
is equivalent to m_debugged_process_up but it lays foundations for
the future multiprocess support.
Differential Revision: https://reviews.llvm.org/D100256
Jonas Devlieghere [Tue, 13 Apr 2021 15:58:40 +0000 (08:58 -0700)]
[debugserver] Fix unintialized member variable
Caught by ubsan (__ubsan_handle_load_invalid_value_abort) when running
the unit tests.
Mircea Trofin [Mon, 5 Apr 2021 23:15:36 +0000 (16:15 -0700)]
[mlgo] Skip AOT-compiling a model if a header/object pair is provided
This allows one to cross-compile the header/object for a model in a
setup where the compiler is built on a system that cannot host the AOT
compiler. For example, if arm-hostable clang is desired, while the AOT
Tensorflow compiler can cross-compile to arm, it can't currently run on
arm.
The only alternative in that scenario would be to cross-compile clang
itself, but that gets complicated when trying to run tests after that.
Differential Revision: https://reviews.llvm.org/D99992
Jez Ng [Tue, 13 Apr 2021 16:39:24 +0000 (12:39 -0400)]
Simon Pilgrim [Tue, 13 Apr 2021 14:54:40 +0000 (15:54 +0100)]
[X86][SSE] combineSetCCMOVMSK - allow comparison with upper (known zero) bits in CMP(MOVMSK(PACKSS())) -> CMP(MOVMSK()) fold
We already allow the comparison of the upper bits of 'IsAllOf' (allbits) patterns, but we can safely compare the known zero bits for 'IsAnyOf' (zerobits) patterns as well.
This fixes an issues where we are comparing a type wide than the number of vector elements, which avoids a regression mentioned in rGbaadbe04bf75.
Aaron Ballman [Tue, 13 Apr 2021 16:24:16 +0000 (12:24 -0400)]
Implement WG21 P2156R1/WG14 N2557 on duplicate attributes
These proposals make the same changes to both C++ and C and remove a
restriction on standard attributes appearing multiple times in the same
attribute list.
We could warn on the duplicate attributes, but do not. This is for
consistency as we do not warn on attributes duplicated within the
attribute specifier sequence. If we want to warn on duplicated
standard attributes, we should do so both for both situations:
[[foo, foo]] and [[foo]][[foo]].
Siva Chandra Reddy [Mon, 12 Apr 2021 22:56:09 +0000 (15:56 -0700)]
[libc] Make FPBits a union.
This helps us avoid the uncomfortable reinterpret-casts. Avoiding the
reinterpret casts prevents us from tripping the sanitizers as well.
Reviewed By: lntue
Differential Revision: https://reviews.llvm.org/D100360
Evgeny Leviant [Tue, 13 Apr 2021 16:17:11 +0000 (19:17 +0300)]
Remove empty test case
Anirudh Prasad [Tue, 13 Apr 2021 15:55:21 +0000 (11:55 -0400)]
[SystemZ][z/OS] Introduce dialect querying helper functions
- In the SystemZAsmParser, there will be a few queries to the type of dialect it is (AD_ATT, AD_HLASM) in future patches.
- It would be nice to have two small helper functions `isParsingATT()` and `isParsingHLASM()`
- Putting this as a separate smaller patch allows us to remove its definitions from other dependent patches.
Reviewed By: uweigand, abhina.sreeskantharajan
Differential Revision: https://reviews.llvm.org/D99891
Evgeny Leviant [Tue, 13 Apr 2021 16:11:10 +0000 (19:11 +0300)]
[GlobalOpt] Revert valgrind hacks
Differential revision: https://reviews.llvm.org/D69428
LLVM GN Syncbot [Tue, 13 Apr 2021 16:05:40 +0000 (16:05 +0000)]
[gn build] Port
bb6d96ced80f
LLVM GN Syncbot [Tue, 13 Apr 2021 16:05:39 +0000 (16:05 +0000)]
[gn build] Port
8914902b01a3
Jesse Zhang [Tue, 13 Apr 2021 15:17:38 +0000 (17:17 +0200)]
Fix the const overload of IgnoreExprNodes
The existing code causes an infinite recursion. This is likely an
oversight of commit
c0e5e3fbfa504c37 [1] where the intent must have been
to call the non-const overload.
[1] https://reviews.llvm.org/D87278
Reviewed By: gribozavr2
Differential Revision: https://reviews.llvm.org/D100347
Joseph Huber [Tue, 13 Apr 2021 15:23:16 +0000 (11:23 -0400)]
[OpenMP] Fix incompatible attributes in OpenMPIRBuilder test.
Summary:
After D98740 the function attributes were changes to append rather than
overwrite when using the values defined in OMPKinds.def. One of the
OpenMPIRBuilder tests erroenously used `readnone` instead of `readonly` which
would cause a conflict and result in a broken module once `readonly` was
appended to it. This patch fixes the test to use the correct attributes.
Denys Petrov [Tue, 13 Apr 2021 15:55:53 +0000 (18:55 +0300)]
[analyzer] [NFC] Eliminate dispatchCast, evalCastFromNonLoc and evalCastFromLoc functions from SValBuilder
Summary: Remove dispatchCast, evalCastFromNonLoc and evalCastFromLoc functions since their functionality has been moved to common evalCast function. Use evalCast instead.
Post-clean up patch for https://reviews.llvm.org/D96090 patch. The patch shall not change any behavior.
Differential Revision: https://reviews.llvm.org/D97277
Jez Ng [Tue, 13 Apr 2021 15:45:41 +0000 (11:45 -0400)]
[lld-macho] arm64_32 executables are always PIE
This should fix the assert that's currently breaking the build.
Yonghong Song [Tue, 13 Apr 2021 05:45:51 +0000 (22:45 -0700)]
BPF: generate proper BTF for globals with WeakODRLinkage
For a global weak symbol defined as below:
char g __attribute__((weak)) = 2;
LLVM generates an allocated global with WeakAnyLinkage,
for which BPF backend generates proper BTF info.
For the above example, if a modifier "const" is added like
const char g __attribute__((weak)) = 2;
LLVM generates an allocated global with WeakODRLinkage,
for which BPF backend didn't generate any BTF as it
didn't handle WeakODRLinkage.
This patch addes support for WeakODRLinkage and proper
BTF info can be generated for weak symbol defined with
"const" modifier.
Differential Revision: https://reviews.llvm.org/D100362
Kadir Cetinkaya [Fri, 12 Mar 2021 15:10:24 +0000 (16:10 +0100)]
[clangd] Propagate data in diagnostics
Differential Revision: https://reviews.llvm.org/D98505
Kadir Cetinkaya [Fri, 12 Mar 2021 13:23:45 +0000 (14:23 +0100)]
[clangd] Introduce ASTHooks to FeatureModules
These can be invoked at different stages while building an AST to let
FeatureModules implement features on top of it. The patch also
introduces a sawDiagnostic hook, which can mutate the final clangd::Diag
while reading a clang::Diagnostic.
Differential Revision: https://reviews.llvm.org/D98499
Kadir Cetinkaya [Fri, 12 Mar 2021 11:27:19 +0000 (12:27 +0100)]
[clangd] Enable modules to contribute tweaks.
First patch to enable diagnostic fix generation through modules. The
workflow will look like:
- ASTWorker letting modules know about diagnostics while building AST,
modules can read clang::Diagnostic and mutate clangd::Diagnostic through
that hook.
- Modules can implement and expose tweaks to fix diagnostics or act as
general refactorings.
- Tweak::Selection will contain information about the diagnostic
associated with the codeAction request to enable modules to fail their
diagnostic fixing tweakson prepare if need be.
Differential Revision: https://reviews.llvm.org/D98498
Emilio Cota [Tue, 13 Apr 2021 15:33:17 +0000 (08:33 -0700)]
[mlir] X86Vector: Add AVX Rsqrt
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D99818
Kostya Kortchinsky [Fri, 9 Apr 2021 21:15:13 +0000 (14:15 -0700)]
[docs][scudo] Update Scudo documentation
Update the Scudo document to align with the standalone version.
Add some more verbiage about the various component of the
allocator, rework a bit everything.
The build instructions have been updated.
The options and their default values have been updated, and
the `mallopt` ones have been added.
Differential Revision: https://reviews.llvm.org/D100230
Marek Kurdej [Tue, 13 Apr 2021 15:10:55 +0000 (17:10 +0200)]
[libc++] [P0458] Add map::contains and set::contains for heterogenous lookup missed in
a17b1aed.
Commit rGa17b1aed added `bool contains(const key_type& x) const;` methods to associative containers, but didn't add `template<class K> bool contains(const K& x) const;` for heterogenous lookup.
Reviewed By: #libc, Quuxplusone, ldionne
Differential Revision: https://reviews.llvm.org/D100369
Anirudh Prasad [Tue, 13 Apr 2021 15:07:46 +0000 (11:07 -0400)]
[AsmParser][SystemZ][z/OS] Add in support to allow use of additional comment strings.
- Currently, MCAsmInfo provides a CommentString attribute, that various targets can set, so that the AsmLexer can appropriately lex a string as a comment based on the set value of the attribute.
- However, AsmLexer also supports a few additional comment syntaxes, in addition to what's specified as a CommentString attribute. This includes regular C-style block comments (/* ... */), regular C-style line comments (// .... ) and #. While I'm not sure as to why this behaviour exists, I am assuming it does to maintain backward compatibility with GNU AS (see https://sourceware.org/binutils/docs/as/Comments.html#Comments for reference)
For example:
Consider a target which sets the CommentString attribute to '*'.
The following strings are all lexed as comments.
```
"# abc" -> comment
"// abc" -> comment
"/* abc */ -> comment
"* abc" -> comment
```
- In HLASM however, only "*" is accepted as a comment string, and nothing else.
- To achieve this, an additional attribute (`AllowAdditionalComments`) has been added to MCAsmInfo. If this attribute is set to false, then only the string specified by the CommentString attribute is used as a possible comment string to be lexed by the AsmLexer. The regular C-style block comments, line comments and "#" are disabled. As a final note, "#" will still be treated as a comment, if the CommentString attribute is set to "#".
Depends on https://reviews.llvm.org/D99277
Reviewed By: abhina.sreeskantharajan, myiwanch
Differential Revision: https://reviews.llvm.org/D99286
Pavel Labath [Tue, 13 Apr 2021 15:03:09 +0000 (17:03 +0200)]
[lldb/test] s/add_no_ack_remote_stream/do_handshake
These two functions are doing the same thing, only one of them is
sending the packets immediately and the other "queues" them to be sent
later. The first one is better as in case of errors, the backtrace will
point straight to the place that caused them.
Modify the first method to avoid duplication, and ten standardize on it.
Denys Petrov [Tue, 13 Apr 2021 15:09:10 +0000 (18:09 +0300)]
[analyzer] Replace StoreManager::CastRetrievedVal with SValBuilder::evalCast
Summary: Move logic from CastRetrievedVal to evalCast and replace CastRetrievedVal with evalCast. Also move guts from SimpleSValBuilder::dispatchCast inside evalCast.
evalCast intends to substitute dispatchCast, evalCastFromNonLoc and evalCastFromLoc in the future. OriginalTy provides additional information for casting, which is useful for some cases and useless for others. If `OriginalTy.isNull()` is true, then cast performs based on CastTy only. Now evalCast operates in two ways. It retains all previous behavior and take over dispatchCast behavior. dispatchCast, evalCastFromNonLoc and evalCastFromLoc is considered as buggy since it doesn't take into account OriginalTy of the SVal and should be improved.
From this patch use evalCast instead of dispatchCast, evalCastFromNonLoc and evalCastFromLoc functions. dispatchCast redirects to evalCast.
This patch shall not change any behavior.
Differential Revision: https://reviews.llvm.org/D96090
Jez Ng [Tue, 13 Apr 2021 14:40:24 +0000 (10:40 -0400)]
[lld-macho] Make load relaxation work for arm64_32
arm64_32 uses 32-bit GOT loads, so we should accept those
instructions in `ARM64Common::relaxGotLoad()` too.
Reviewed By: #lld-macho, gkm
Differential Revision: https://reviews.llvm.org/D100229
Jez Ng [Tue, 13 Apr 2021 14:40:22 +0000 (10:40 -0400)]
[lld-macho] Have toString() emit full path to archive files
It doesn't make sense to take just the base filename for archives when we emit
the full path for object files. (LLD-ELF emits the full path too.)
This will also make it easier to write a proper test for {D100147}.
Reviewed By: #lld-macho, oontvoo
Differential Revision: https://reviews.llvm.org/D100357
Jez Ng [Tue, 13 Apr 2021 14:40:21 +0000 (10:40 -0400)]
[lld-macho] Add 32-bit compact unwind support
This could probably have been part of D99633, but I split it up to make
things a bit more reviewable. I also fixed some bugs in the implementation that
were masked through integer underflows when operating in 64-bit mode.
Reviewed By: #lld-macho, gkm
Differential Revision: https://reviews.llvm.org/D99823
Jez Ng [Tue, 13 Apr 2021 14:40:20 +0000 (10:40 -0400)]
[lld-macho] Add support for arm64_32
From what I can tell, it's pretty similar to arm64. The two main differences
are:
1. No 64-bit relocations
2. Stub code writes to 32-bit registers instead of 64-bit
Plus of course the various on-disk structures like `segment_command` are using
the 32-bit instead of the 64-bit variants.
Reviewed By: #lld-macho, gkm
Differential Revision: https://reviews.llvm.org/D99822
David Spickett [Tue, 13 Apr 2021 14:37:06 +0000 (15:37 +0100)]
[lldb][AArch64] Only run MTE memory region test if we have MTE
This test is flakey because it tries to read the proc/smaps
file of the first lldb-server process it finds. This process
can finish before we finish doing that.
http://lab.llvm.org:8011/#/builders/96/builds/6634/steps/6/logs/stdio
For now limit this to MTE targets which basically means
QEMU via lldb-dotest, which doesn't have this issue.
I'll fix the race condition shortly.
Tobias Gysi [Tue, 13 Apr 2021 14:04:45 +0000 (14:04 +0000)]
[mlir][linalg] update tiling to support linalg index operations.
The patch updates the tiling pass to add the tile offsets to the indices returned by the linalg operations.
Differential Revision: https://reviews.llvm.org/D100379
Pavel Labath [Tue, 13 Apr 2021 14:21:45 +0000 (16:21 +0200)]
[lldb] Remove self-skipping code from lldb-server tests
We already do category based skipping in checkDebugServerSupport in
dotest.py.
Tim Northover [Wed, 17 Mar 2021 10:48:20 +0000 (10:48 +0000)]
StackProtector: ensure protection does not interfere with tail call frame.
The IR stack protector pass must insert stack checks before the call instead of
between it and the return.
Similarly, SDAG one should recognize that ADJCALLFRAME instructions could be
part of the terminal sequence of a tail call. In this case because such call
frames cannot be nested in LLVM the stack protection code must skip over the
whole sequence (or risk clobbering argument registers).
Pavel Labath [Thu, 14 Jan 2021 14:13:07 +0000 (15:13 +0100)]
[lldb] Remote @debugserver_test from TestAppleSimulatorOSType
The annotation is now (since the introduction of @apple_simulator_test)
redundant, and the test could theoretically run on lldb-server too (if
it supported darwin hosts).
Sander de Smalen [Sat, 23 Jan 2021 12:14:21 +0000 (12:14 +0000)]
[TTI] NFC: Change get[Interleaved]MemoryOpCost to return InstructionCost
This patch migrates the TTI cost interfaces to return an InstructionCost.
See this patch for the introduction of the type: https://reviews.llvm.org/D91174
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D100205
Sander de Smalen [Fri, 22 Jan 2021 22:41:19 +0000 (22:41 +0000)]
[TTI] NFC: Change getMaskedMemoryOpCost to return InstructionCost
This patch migrates the TTI cost interfaces to return an InstructionCost.
See this patch for the introduction of the type: https://reviews.llvm.org/D91174
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D100204
Sander de Smalen [Fri, 22 Jan 2021 21:44:23 +0000 (21:44 +0000)]
[TTI] NFC: Change getCmpSelInstrCost to return InstructionCost
This patch migrates the TTI cost interfaces to return an InstructionCost.
See this patch for the introduction of the type: https://reviews.llvm.org/D91174
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D100203
Sander de Smalen [Fri, 22 Jan 2021 22:07:09 +0000 (22:07 +0000)]
[TTI] NFC: Change getMinMaxReductionCost to return InstructionCost
This patch migrates the TTI cost interfaces to return an InstructionCost.
See this patch for the introduction of the type: https://reviews.llvm.org/D91174
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D100202
Sander de Smalen [Fri, 22 Jan 2021 21:33:51 +0000 (21:33 +0000)]
[TTI] NFC: Change getArithmeticReductionCost to return InstructionCost
This patch migrates the TTI cost interfaces to return an InstructionCost.
See this patch for the introduction of the type: https://reviews.llvm.org/D91174
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html
This patch is practically NFC, with the exception of an AArch64 SVE related
cost-model change, where we can now return an Invalid cost instead of some
bogus number.
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D100201
Sander de Smalen [Fri, 22 Jan 2021 21:25:50 +0000 (21:25 +0000)]
[TTI] NFC: Change getGatherScatterOpCost to return InstructionCost
This patch migrates the TTI cost interfaces to return an InstructionCost.
See this patch for the introduction of the type: https://reviews.llvm.org/D91174
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D100200