Stephen Kelly [Fri, 6 Nov 2020 16:05:16 +0000 (16:05 +0000)]
Change algorithms to return iterators
Make it possible to inspect the matched node, possibly to ignore it.
Differential Revision: https://reviews.llvm.org/D90983
Rahul Joshi [Mon, 9 Nov 2020 16:23:55 +0000 (08:23 -0800)]
[MLIR] Change FuncOp assembly syntax to print visibility inline instead of in attrib dict.
- Change syntax for FuncOp to be `func <visibility>? @name` instead of printing the
visibility in the attribute dictionary.
- Since printFunctionLikeOp() and parseFunctionLikeOp() are also used by other
operations, make the "inline visibility" an opt-in feature.
- Updated unit test to use and check the new syntax.
Differential Revision: https://reviews.llvm.org/D90859
Eric Astor [Mon, 9 Nov 2020 18:22:37 +0000 (13:22 -0500)]
[ms] [llvm-ml] Support MASM's relational operators (EQ, LT, etc.)
Support the named relational operators (EQ, LT, etc.).
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D89733
Rahul Joshi [Mon, 9 Nov 2020 17:01:39 +0000 (09:01 -0800)]
[MLIR] Support `global_memref` and `get_global_memref` in standard -> LLVM conversion.
- Convert `global_memref` to LLVM::GlobalOp.
- Convert `get_global_memref` to a memref descriptor with a pointer to the first element
of the global stashed in it.
- Extend unit test and a mlir-cpu-runner test to validate the generated LLVM IR.
Differential Revision: https://reviews.llvm.org/D90803
David Zarzycki [Wed, 28 Oct 2020 11:18:09 +0000 (07:18 -0400)]
[SelectionDAG] Enable CTPOP optimization fine tuning
Add a TLI hook to allow SelectionDAG to fine tune the conversion of CTPOP to a chain of "x & (x - 1)" when CTPOP isn't legal.
A subsequent patch will attempt to fine tune the X86 code gen.
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D89952
Aleksandr Platonov [Mon, 9 Nov 2020 18:39:01 +0000 (21:39 +0300)]
[clangd][remote] Check an index file correctly
There is not reason to check `std::make_unique<...>(..)` return value,
but `clangd::clang::loadIndex()` returns `nullptr` if an index file could not be loaded (e.g. incorrect version).
Reviewed By: kadircet
Differential Revision: https://reviews.llvm.org/D91049
Fangrui Song [Mon, 9 Nov 2020 18:26:02 +0000 (10:26 -0800)]
[FastISel][test] Add ELF triple after D90877
MachO has different symbol naming and thus on a MachO platform this test has a
different behavior without a triple.
Francesco Petrogalli [Mon, 9 Nov 2020 18:18:28 +0000 (18:18 +0000)]
[llvm][AArch64] Allow TB(N)Z to drop signext for sign bit tests.
For example if the sign extension is only used in for TBZ, and the value is used elsewhere with a zero extension, this can eliminate a sign extension.
Reviewed By: samparker
Differential Revision: https://reviews.llvm.org/D90606
Peter Steinfeld [Mon, 9 Nov 2020 15:42:12 +0000 (07:42 -0800)]
[flang] Avoid calling the linker when "-c" option is used
The title says it all.
Eric Astor [Mon, 9 Nov 2020 16:49:41 +0000 (11:49 -0500)]
[ms] [llvm-ml] Support REPEAT/FOR/WHILE macro-like directives
Support MASM's REPEAT, FOR, FORC, and WHILE macro-like directives.
Also adds support for macro argument substitution inside quoted strings, and additional testing for macro directives.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D89732
Fangrui Song [Mon, 9 Nov 2020 18:19:12 +0000 (10:19 -0800)]
[libunwind] Delete unused codeOffsetAtStackDecrement/registersInOtherRegisters/sameValueUsed
ld64 uses them to create compact unwind from DWARF call frame information.
When the code was ported to libunwind, the variables were not deleted.
Reviewed By: #libunwind, compnerd
Differential Revision: https://reviews.llvm.org/D91039
David Green [Mon, 9 Nov 2020 18:18:43 +0000 (18:18 +0000)]
[ARM] Remove MI variable aliasing. NFC
This was accidentally using the same name for two different variables in
the same line. Whilst it seems to work for some compilers, others have
trouble and it is probably not a fantastic idea.
Craig Topper [Mon, 9 Nov 2020 18:05:51 +0000 (10:05 -0800)]
[RISCV] Make ctlz/cttz cheap to speculatively execute so CodeGenPrepare won't insert a zero check.
Add additional isel patterns for ctzw/clzw instructions.
Differential Revision: https://reviews.llvm.org/D91040
Craig Topper [Mon, 9 Nov 2020 18:01:55 +0000 (10:01 -0800)]
[RISCV] Add isel patterns for using PACK for zext.h and zext.w.
Differential Revision: https://reviews.llvm.org/D91024
Craig Topper [Mon, 9 Nov 2020 17:57:38 +0000 (09:57 -0800)]
[RISCV] Make SIGN_EXTEND_INREG from i8/i16 legal when Zbb extension is enabled.
This produces better code for sign extend to i64 on RV32 target.
Differential Revision: https://reviews.llvm.org/D91023
Fangrui Song [Mon, 9 Nov 2020 18:08:44 +0000 (10:08 -0800)]
[ELF] Special case static_assert for _WIN32
I don't have a Windows machine. Hope someone can test why its InputSection is
still larger.
Craig Topper [Mon, 9 Nov 2020 17:45:22 +0000 (09:45 -0800)]
[RISCV] Add isel patterns to match sbset/sbclr/sbinv/sbext even if the shift amount isn't masked.
This uses the shiftop PatFrags to handle the masked shift amount
and unmasked shift amount cases. That also checks XLen as part
of the masked amount check so we don't need separate RV32 and RV64
patterns.
Differential Revision: https://reviews.llvm.org/D91016
Fangrui Song [Mon, 9 Nov 2020 17:55:09 +0000 (09:55 -0800)]
[ELF] Make InputSection smaller
On LP64/Windows platforms, this decreases sizeof(InputSection) from 208 (larger
on Windows) to 184.
For a large executable (7.6GiB, inputSections.size()=5105122,
make<InputSection> called 4835760 times), this decreases cgroup
memory.max_usage_in_bytes by 0.6%
Reviewed By: grimar
Differential Revision: https://reviews.llvm.org/D91018
Simon Pilgrim [Mon, 9 Nov 2020 17:50:03 +0000 (17:50 +0000)]
[X86] vector-narrow-binop.ll - remove unused check-prefixes
Simon Pilgrim [Mon, 9 Nov 2020 17:46:49 +0000 (17:46 +0000)]
[HardwareLoops] Remove unused check-prefixes
Just use default CHECK
Paul Robinson [Thu, 5 Nov 2020 21:09:10 +0000 (13:09 -0800)]
[FastISel] Reduce spills around mem-intrinsic calls
FastISel generates instructions to materialize "local values" at the
top of a block, in the hope that these values could be reused within
the block. To reduce spills and restores, FastISel treats calls as
sub-block boundaries, flushing the "local value map" at each call.
This patch treats the mem* intrinsics as if they were calls, because
at O0 generally they are calls. Eliminating these spills/restores is
actually better for debugging (especially a "continue at this line"
command), code size, stack frame size, and maybe even performance.
Differential Revision: https://reviews.llvm.org/D90877
Rahul Joshi [Sat, 7 Nov 2020 00:24:35 +0000 (16:24 -0800)]
[MLIR] Flag no-terminator error on the last operation of non-empty blocks
- When a block is not empty and does not end with a terminator, flag the error on the
last operation of the block instead of the start of the block.
Differential Revision: https://reviews.llvm.org/D90988
Fangrui Song [Mon, 9 Nov 2020 17:26:37 +0000 (09:26 -0800)]
-fbasic-block-sections=list=: Suppress output if failed to open the file
Reviewed By: tmsriram
Differential Revision: https://reviews.llvm.org/D90815
Simon Pilgrim [Mon, 9 Nov 2020 17:21:11 +0000 (17:21 +0000)]
[X86][GlobalISel] Remove some unused check-prefixes
Simon Pilgrim [Mon, 9 Nov 2020 16:19:10 +0000 (16:19 +0000)]
[FunctionImport] Remove unused check-prefixes
Simon Pilgrim [Mon, 9 Nov 2020 16:08:07 +0000 (16:08 +0000)]
[DeadStoreElimination] Remove unused check-prefixes
Just use default CHECK
António Afonso [Mon, 9 Nov 2020 17:07:48 +0000 (09:07 -0800)]
Revert "Ignores functions that have a range starting outside of a code section"
This reverts commit
df30bc0168d236e5575d815030d6fe4cd8626f34.
Nicolas Vasilache [Mon, 9 Nov 2020 11:57:42 +0000 (11:57 +0000)]
[mlir][Linalg] Add support for bufferization of SubTensorOp and SubTensorInsertOp
This revision adds support for bufferization by using a mix of `tensor_load`, `subview`, `linalg.copy` and `tensor_to_memref`.
Jonas Devlieghere [Mon, 9 Nov 2020 16:47:08 +0000 (08:47 -0800)]
[lldb] Avoid confusing reproducer crashes when initialization failed
During active replay, the ::Initialize call is replayed like any other
SB API call and the return value is ignored. Since we can't intercept
this, we terminate here before the uninitialized debugger inevitably
crashes.
Differential revision: https://reviews.llvm.org/D90987
Atmn Patel [Mon, 9 Nov 2020 13:19:44 +0000 (08:19 -0500)]
[clang] Fix ForStmt mustprogress handling
D86841 had an error where for statements with no conditional were
required to make progress. This is not true, this patch removes that
line, and adds regression tests.
Differential Revision: https://reviews.llvm.org/D91075
Mircea Trofin [Wed, 4 Nov 2020 21:28:13 +0000 (13:28 -0800)]
[NFC] Use [MC]Register
Differential Revision: https://reviews.llvm.org/D90795
jasonliu [Mon, 9 Nov 2020 15:12:46 +0000 (15:12 +0000)]
[XCOFF] Enable explicit sections on AIX
Implement mechanism to allow explicit sections to be generated on AIX.
Reviewed By: DiggerLin
Differential Revision: https://reviews.llvm.org/D88615
António Afonso [Mon, 9 Nov 2020 02:17:10 +0000 (18:17 -0800)]
Ignores functions that have a range starting outside of a code section
This is a similar patch to https://reviews.llvm.org/D87172. Greg said we should also do it for functions.
Reviewed By: clayborg, labath
Differential Revision: https://reviews.llvm.org/D87173
António Afonso [Sun, 18 Oct 2020 17:33:25 +0000 (10:33 -0700)]
Check if debug line sequences are starting after the first code segment
I found a few cases where entries in the debug_line for a specific line of code have invalid entries (the address is outside of a code section or no section at all) and also valid entries. When this happens lldb might not set the breakpoint because the first line entry it will find in the line table might be the invalid one and since it's range is "invalid" no location is resolved. To get around this I changed the way we parse the line sequences to ignore those starting at an address under the first code segment.
Greg suggested to implement it this way so we don't need to check all sections for every line sequence.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D87172
Stanislav Mekhanoshin [Fri, 6 Nov 2020 21:00:10 +0000 (13:00 -0800)]
[AMDGPU] Omit buffer resource with flat scratch.
Differential Revision: https://reviews.llvm.org/D90979
Paul C. Anagnostopoulos [Thu, 5 Nov 2020 17:49:21 +0000 (12:49 -0500)]
[TableGen] Add the !filter bang operator.
Add a test. Update the Programmer's Reference.
Use it in some TableGen files.
Differential Revision: https://reviews.llvm.org/D91008
David Zarzycki [Mon, 9 Nov 2020 15:53:37 +0000 (10:53 -0500)]
[SelectionDAG] NFC: Hoist is legal check
This was requested during the code review of D89952.
Sebastian Neubauer [Wed, 16 Sep 2020 12:38:54 +0000 (14:38 +0200)]
[AMDGPU] Add amdgpu_gfx calling convention
Add a calling convention called amdgpu_gfx for real function calls
within graphics shaders. For the moment, this uses the same calling
convention as other calls in amdgpu, with registers excluded for return
address, stack pointer and stack buffer descriptor.
Differential Revision: https://reviews.llvm.org/D88540
Tyker [Mon, 9 Nov 2020 14:06:14 +0000 (15:06 +0100)]
[NFC] Remove string parameter of annotation attribute from AST childs.
this simplifies using annotation attributes when using clang as library
David Zarzycki [Mon, 9 Nov 2020 15:23:08 +0000 (10:23 -0500)]
[testing] Add exhaustive ULT/UGT vector CTPOP to AArch64 and PPC
This to help review the impact of https://reviews.llvm.org/D89952 which
allows targets to fine tune what SelectionDAG does when vector CTPOP is
not legal.
Momchil Velikov [Mon, 9 Nov 2020 11:48:32 +0000 (11:48 +0000)]
[ARM][MachineOutliner] Emit more CFI instructions
This patch make the outliner emit CFI instructions in a few more
places:
* after LR is restored, but before the return in an outlined
function
* around save/restore of LR to/from a register at calls to outlined
functions
* around save/restore of LR to/from the stack at calls to outlined
functions
The latter two only when the function does NOT spill LR. If the
function spills LR, then outliner generated saves/restores around
calls are not considered interesting for unwinding the frame.
Differential Revision: https://reviews.llvm.org/D89483
Simon Pilgrim [Mon, 9 Nov 2020 15:01:30 +0000 (15:01 +0000)]
[X86] Remove some unused check-prefixes
Simon Pilgrim [Mon, 9 Nov 2020 14:45:48 +0000 (14:45 +0000)]
[X86] Replace X32 check-prefix with X86 and remove unused X64 common prefix
We try to use X32 for gnux32 triple tests
Sam Tebbs [Fri, 30 Oct 2020 13:30:58 +0000 (13:30 +0000)]
[ARM][LowOverheadLoops] Merge a VCMP and the new VPST into a VPT
There were cases where a VCMP and a VPST were merged even if the VCMP
didn't have the same defs of its operands as the VPST. This is fixed by
adding RDA checks for the defs. This however gave rise to cases where
the new VPST created would precede the un-merged VCMP and so would fail
a predicate mask assertion since the VCMP wasn't predicated. This was
solved by converting the VCMP to a VPT instead of inserting the new
VPST.
Differential Revision: https://reviews.llvm.org/D90461
Tres Popp [Mon, 9 Nov 2020 14:55:08 +0000 (15:55 +0100)]
[mlir] Fix bug in use of rewiter for AtomicRMWOp.
The legalization did not forward the listener which prevents dynamic
legalization and prevents rollbacks. This handled that and then changed
the associated pass to support all other std ops to support partial
conversion.
Previously, this lowering was failing, but due to the
initial bug, the op's modifications were not reverted, and thus the
pattern matching succeeded.
Differential Revision: https://reviews.llvm.org/D91079
Sjoerd Meijer [Mon, 9 Nov 2020 14:33:52 +0000 (14:33 +0000)]
[LoopFlatten] FlattenInfo bookkeeping. NFC.
Introduce struct FlattenInfo to group some of the bookkeeping. Besides this
being a bit of a clean-up, it is a prep step for next additions (D90640). I
could take things a bit further, but thought this was a good first step also
not to make this change too large.
Differential Revision: https://reviews.llvm.org/D90408
LLVM GN Syncbot [Mon, 9 Nov 2020 14:31:09 +0000 (14:31 +0000)]
[gn build] Port
9ca6fc4e095
Krasimir Georgiev [Mon, 9 Nov 2020 14:26:02 +0000 (15:26 +0100)]
[clang-format] avoid introducing multiline comments
In C++ with -Werror=comment, multiline comments are not allowed.
clang-format could accidentally introduce multiline comments when reflowing.
This adapts clang-format to not introduce multiline comments by not allowing a
break after `\`. Note that this does not apply to comment lines that already are
multiline comments, such as comments in macros.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D90949
Frank Derry Wanye [Mon, 9 Nov 2020 14:20:35 +0000 (09:20 -0500)]
Add a new altera kernel name restriction check to clang-tidy.
The altera kernel name restriction check finds kernel files and include
directives whose filename is "kernel.cl", "Verilog.cl", or "VHDL.cl".
Such kernel file names cause the Altera Offline Compiler to generate
intermediate design files that have the same names as certain internal
files, which leads to a compilation error.
As per the "Guidelines for Naming the Kernel" section in the "Intel FPGA
SDK for OpenCL Pro Edition: Programming Guide."
This reverts the reversion from
43a38a65233039b5e71797a644d41a890f8d7f2b.
Alex Zinenko [Fri, 6 Nov 2020 10:59:22 +0000 (11:59 +0100)]
[mlir] Add initial Python bindings for DenseInt/FPElementsAttr
Enumerating elements in these classes is necessary to enable custom
operand accessors for variadic operands.
Depends On D90919
Reviewed By: stellaraccident
Differential Revision: https://reviews.llvm.org/D90923
Florian Hahn [Mon, 9 Nov 2020 13:52:54 +0000 (13:52 +0000)]
[VPlan] Print result value for loads in VPWidenMemoryInst (NFC).
For loads, print the result value.
Florian Hahn [Mon, 9 Nov 2020 13:50:58 +0000 (13:50 +0000)]
[VPlan] Add isStore helper to VPWidenMemoryInstructionRecipe (NFC).
Move logic to check if the recipe is a store to a helper for easier
reuse.
Alex Zinenko [Fri, 6 Nov 2020 10:25:41 +0000 (11:25 +0100)]
[mlir] Expose operation attributes to Python bindings
Operations in a MLIR have a dictionary of attributes attached. Expose
those to Python bindings through a pseudo-container that can be indexed
either by attribute name, producing a PyAttribute, or by a contiguous
index for enumeration purposes, producing a PyNamedAttribute.
Depends On D90917
Reviewed By: stellaraccident
Differential Revision: https://reviews.llvm.org/D90919
Evgeny Leviant [Mon, 9 Nov 2020 13:53:50 +0000 (16:53 +0300)]
[llvm-mca] Add branch forms of ALU instructions to Cortex-A57 test
Jay Foad [Mon, 9 Nov 2020 13:51:40 +0000 (13:51 +0000)]
[AMDGPU] Remove unused DisableDecoder machinery. NFC.
This has been unused since D24738.
Florian Hahn [Mon, 9 Nov 2020 13:29:41 +0000 (13:29 +0000)]
[VPlan] Use VPValue def for VPWidenCall.
This patch turns VPWidenCall into a VPValue and uses it
during VPlan construction and codegeneration instead of the plain IR
reference where possible.
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D84681
Nathan James [Mon, 9 Nov 2020 13:21:55 +0000 (13:21 +0000)]
[clang-tidy] Remove bad assert after
3b9b90a1
Forgot to remove it on push, just there to help debugging
Dmitry Preobrazhensky [Mon, 9 Nov 2020 12:46:27 +0000 (15:46 +0300)]
[AMDGPU][MC] Added tests for checking error position
See bug 47519: https://bugs.llvm.org/show_bug.cgi?id=47519
Reviewers: arsenm, rampitec
Differential Revision: https://reviews.llvm.org/D90925
David Green [Mon, 9 Nov 2020 13:17:53 +0000 (13:17 +0000)]
[ARM] Remove kill flags between VCMP and insertion point
When we fold a VCMP into a VPST instruction any kill flags between the
old VCMP position and the new insertion point need to be removed, in
order to keep the verifier happy.
Differential Revision: https://reviews.llvm.org/D90964
Lucas Prates [Wed, 28 Oct 2020 11:07:17 +0000 (11:07 +0000)]
[ARM][AArch64] Adding Neoverse V1 CPU support
Add support for the Neoverse V1 CPU to the ARM and AArch64 backends.
This is based on patches from Mark Murray and Victor Campos.
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D90765
Simon Pilgrim [Mon, 9 Nov 2020 13:12:10 +0000 (13:12 +0000)]
[InterleavedAccess] Remove unused check-prefixes
Just use default CHECK
Simon Pilgrim [Mon, 9 Nov 2020 13:08:56 +0000 (13:08 +0000)]
[ConstProp] Remove unused check-prefixes
Just use default CHECK and remove duplicate RUN
Simon Pilgrim [Mon, 9 Nov 2020 13:01:48 +0000 (13:01 +0000)]
[CodeGenPrepare] Remove unused check-prefixes
Francesco Petrogalli [Mon, 9 Nov 2020 11:37:25 +0000 (11:37 +0000)]
[llvm][AArch64] Simplify (and (sign_extend..) #bitmask).
Fold
VT = (and (sign_extend NarrowVT to VT) #bitmask)
into
VT = (zero_extend NarrowVT)
With this combine, the test replaces a sign extended load + an
unsigned extention with a zero extended load to render one of the
operands of the last multiplication.
BEFORE | AFTER
f_i16_i32: | f_i16_i32:
.fnstart | .fnstart
ldrsh r0, [r0] | ldrh r1, [r1]
ldrsh r1, [r1] | ldrsh r0, [r0]
smulbb r0, r1, r0 | smulbb r0, r0, r1
uxth r1, r1 | mul r0, r0, r1
mul r0, r0, r1 | bx lr
bx lr |
Reviewed By: resistor
Differential Revision: https://reviews.llvm.org/D90605
Florian Hahn [Mon, 9 Nov 2020 12:10:03 +0000 (12:10 +0000)]
[VPlan] Add printOperands helper to VPUser (NFC).
Factor out the code for printing operands of a VPUser so it can be
re-used when printing other recipes.
serge-sans-paille [Mon, 19 Oct 2020 11:21:23 +0000 (13:21 +0200)]
[lld] Provide a hook to customize undefined symbols error handling
This is a follow up to https://reviews.llvm.org/D87758, implementing the missing
symbol part, as done by binutils.
Differential Revision: https://reviews.llvm.org/D89687
Simon Pilgrim [Mon, 9 Nov 2020 12:14:09 +0000 (12:14 +0000)]
[LoopVectorize] Remove unused check-prefixes
Simon Pilgrim [Mon, 9 Nov 2020 12:12:48 +0000 (12:12 +0000)]
[LoopVectorize][AMDGPU] Regenerate packed-math test checks
Simon Pilgrim [Mon, 9 Nov 2020 11:38:39 +0000 (11:38 +0000)]
[MemCpyOpt] Remove unused check-prefixes
Just use default CHECK
Simon Pilgrim [Mon, 9 Nov 2020 11:29:29 +0000 (11:29 +0000)]
[NewGVN] Remove unused check-prefixes
Nathan James [Mon, 9 Nov 2020 12:14:51 +0000 (12:14 +0000)]
[clangd] Handle duplicate enum constants in PopulateSwitch tweak
If an enum has different names for the same constant, make sure only the first one declared gets added into the switch. Failing to do so results in a compiler error as 2 case labels can't represent the same value.
```
lang=c
enum Numbers{
One,
Un = One,
Two,
Deux = Two,
Three,
Trois = Three
};
// Old behaviour
switch (<Number>) {
case One:
case Un:
case Two:
case Duex:
case Three:
case Trois: break;
}
// New behaviour
switch (<Number>) {
case One:
case Two:
case Three: break;
}
```
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D90555
Georgii Rymar [Mon, 9 Nov 2020 11:55:16 +0000 (14:55 +0300)]
[LLDB][test] - Update one more test after the yaml2obj change.
I've missed this one.
LemonBoy [Mon, 9 Nov 2020 11:39:34 +0000 (14:39 +0300)]
[InstCombine] Fix constant-folding of overflowing arithmetic ops on vectors
Feeding vector values to `InstCombiner::OptimizeOverflowCheck` produces a scalar boolean flag if it proves the overflow check can be eliminated.
This causes `InstCombiner::CreateOverflowTuple` to crash as it correctly expects a vector of i1 values instead.
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D89628
Sanne Wouda [Tue, 3 Nov 2020 19:34:27 +0000 (19:34 +0000)]
Reland "Precommit LTO pipeline test"
Target Pass Configuration does not always run, so we can't check for it.
Simon Pilgrim [Mon, 9 Nov 2020 10:56:46 +0000 (10:56 +0000)]
[SLPVectorizer][X86] Remove unused check-prefixes
Michał Górny [Sun, 8 Nov 2020 09:44:54 +0000 (10:44 +0100)]
[lldb] [Host/freebsd] Set Arg0 for 'platform process list -v'
Same fix as in NetBSD (
a6712889f5f1702dfa535718abe400d1a83174c5).
Differential Revision: https://reviews.llvm.org/D91026
Michał Górny [Mon, 9 Nov 2020 11:08:19 +0000 (12:08 +0100)]
Revert "[lldb] [Host/freebsd] Set Arg0 for 'platform process list -v'"
Accidentally referenced the wrong diff.
This reverts commit
fce8e758892f0b650762513680adc06cea53d6e3.
Georgii Rymar [Mon, 9 Nov 2020 10:52:58 +0000 (13:52 +0300)]
[lldb][test] - Update test cases after yaml2obj change.
The format of program header descriptions was changed by D90458.
Simon Pilgrim [Mon, 9 Nov 2020 10:36:46 +0000 (10:36 +0000)]
[SimplifyCFG] Remove unused check-prefixes
Simon Pilgrim [Mon, 9 Nov 2020 10:27:52 +0000 (10:27 +0000)]
[Scalarizer] Remove unused check-prefixes
Michał Górny [Sat, 7 Nov 2020 21:03:29 +0000 (22:03 +0100)]
[llvm] [Support] Fix segv if argv0 is null in getMainExecutable()
When LLDB Python bindings are used and stack backtraces are enabled
for logging, getMainExecutable() is called with argv0 being null.
This caused the fallback function getprogpath() (used on FreeBSD, NetBSD
and Linux) to segfault. Make it handle null executable name gracefully.
Differential Revision: https://reviews.llvm.org/D91012
Michał Górny [Sun, 8 Nov 2020 09:44:54 +0000 (10:44 +0100)]
[lldb] [Host/freebsd] Set Arg0 for 'platform process list -v'
Same fix as in NetBSD (
a6712889f5f1702dfa535718abe400d1a83174c5).
Differential Revision: https://reviews.llvm.org/D91012
Michał Górny [Sun, 8 Nov 2020 13:08:54 +0000 (14:08 +0100)]
[lldb] [test] Extend watchpoint test to wait for thread to start
TestWatchpointMultipleThreads currently accounts for two scenarios:
setting the watchpoint before a new thread starts (presumably, verifying
that it will be propagated to the new thread) and setting it after
the thread starts (presumably, verifying that a new watchpoint is set
on all threads). However, the latter test currently assumes that
the thread will be reported to the debugger before the breakpoint is
hit. This is not the case on FreeBSD and NetBSD.
On NetBSD, new threads do not inherit debug registers from their parent
threads. Instead, LLDB copies them manually after the new thread is
reported. Since the thread is actually reported after the second
breakpoint location, both tests effectively check the same behavior
(i.e. watchpoint being set before the new thread is reported).
On FreeBSD, new threads inherit debug registers and we seem to hit
an interesting race condition. While the thread is reported after
the breakpoint is hit, the kernel seems to construct it and copy
the debug register before that happens. As a result, setting
the watchpoint at the second breakpoint location modifies the debug
registers of the first thread after they have been copied to the second
thread but before the debugger is aware of it. Therefore,
the watchpoint is not propagated to the second thread and the test
fails.
Extend the test to cover all three possible scenarios: setting
watchpoint before the thread is lanched, after it is launched but before
it is guaranteed to have started and after it has actually started. Add
a second barrier to account for the last case. This should ensure that
the second assumption (i.e. that the watchpoint is set on all currently
known threads) is actually tested on FreeBSD and NetBSD.
Differential Revision: https://reviews.llvm.org/D91030
Michał Górny [Fri, 6 Nov 2020 14:32:43 +0000 (15:32 +0100)]
[lldb] [Process/FreeBSDRemote] Handle exec() from inferior
Differential Revision: https://reviews.llvm.org/D90938
Georgii Rymar [Fri, 30 Oct 2020 12:54:03 +0000 (15:54 +0300)]
[yaml2obj] - ProgramHeaders: introduce FirstSec/LastSec instead of Sections list.
Imagine we have a YAML declaration of few sections: `foo1`, `<unnamed 2>`, `foo3`, `foo4`.
To put them into segment we can do (1*):
```
Sections:
- Section: foo1
- Section: foo4
```
or we can use (2*):
```
Sections:
- Section: foo1
- Section: foo3
- Section: foo4
```
or (3*) :
```
Sections:
- Section: foo1
## "(index 2)" here is a name that we automatically created for a unnamed section.
- Section: (index 2)
- Section: foo3
- Section: foo4
```
It looks really confusing that we don't have to list all of sections.
At first I've tried to make this rule stricter and report an error when there is a gap
(i.e. when a section is included into segment, but not listed explicitly).
This did not work perfect, because such approach conflicts with unnamed sections/fills (see (3*)).
This patch drops "Sections" key and introduces 2 keys instead: `FirstSec` and `LastSec`.
Both are optional.
Differential revision: https://reviews.llvm.org/D90458
Georgii Rymar [Mon, 9 Nov 2020 09:18:18 +0000 (12:18 +0300)]
Recommit: [llvm-readelf/obj] - Allow dumping of ELF header even if some elements are corrupt.
This is recommit for D90903 with fixes for BB:
1) Used std::move<> when returning Expected<> (http://lab.llvm.org:8011/#/builders/112/builds/913)
2) Fixed the name of temporarily file in the file-headers.test (http://lab.llvm.org:8011/#/builders/36/builds/1269)
(a local old temporarily file was used before)
For creating `ELFObjectFile` instances we have the factory method
`ELFObjectFile<ELFT>::create(MemoryBufferRef Object)`.
The problem of this method is that it scans the section header to locate some sections.
When a file is truncated or has broken fields in the ELF header, this approach does
not allow us to create the `ELFObjectFile` and dump the ELF header.
This is https://bugs.llvm.org/show_bug.cgi?id=40804
This patch suggests a solution - it allows to delay scaning sections in the
`ELFObjectFile<ELFT>::create`. It now allows user code to call an object
initialization (`initContent()`) later. With that it is possible,
for example, for dumpers just to dump the file header and exit.
By default initialization is still performed as before, what helps to keep
the logic of existent callers untouched.
I've experimented with different approaches when worked on this patch.
I think this approach is better than doing initialization of sections (i.e. scan of them)
on demand, because normally users of `ELFObjectFile` API expect to work with a valid object.
In most cases when a section header table can't be read (because of an error), we don't
have to continue to work with object. So we probably don't need to implement a more complex API.
Differential revision: https://reviews.llvm.org/D90903
Jan Kratochvil [Mon, 9 Nov 2020 09:11:38 +0000 (10:11 +0100)]
[lldb] Fix DW_AT_decl_file from DW_AT_specification from a different CU
This would be reproducible in future DWZ category of the testsuite as:
Failed Tests (1):
lldb-api :: python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py
Differential Revision: https://reviews.llvm.org/D91014
Tim Northover [Mon, 9 Nov 2020 09:19:11 +0000 (09:19 +0000)]
[MergeFunctions] fix function attribute comparison in FunctionComparator
The comparison of AttributeSets stopped after seeing a matching type attribute.
Subsequent mismatching attributes were not detected causing a crash.
QingShan Zhang [Mon, 9 Nov 2020 09:17:28 +0000 (09:17 +0000)]
[NFC][Test] Add tests for constant pool on PowerPC
Georgii Rymar [Mon, 9 Nov 2020 08:50:50 +0000 (11:50 +0300)]
Revert "[llvm-readelf/obj] - Allow dumping of ELF header even if some elements are corrupt."
This reverts commit
ea8a0b8b29eb08d3f0f6ac40942a2d8e98ab57ee.
It broke BBots.
http://lab.llvm.org:8011/#/builders/14/builds/1439
http://lab.llvm.org:8011/#/builders/112/builds/913
Georgii Rymar [Tue, 3 Nov 2020 11:02:01 +0000 (14:02 +0300)]
[llvm-readelf/obj] - Allow dumping of ELF header even if some elements are corrupt.
For creating `ELFObjectFile` instances we have the factory method
`ELFObjectFile<ELFT>::create(MemoryBufferRef Object)`.
The problem of this method is that it scans the section header to locate some sections.
When a file is truncated or has broken fields in the ELF header, this approach does
not allow us to create the `ELFObjectFile` and dump the ELF header.
This is https://bugs.llvm.org/show_bug.cgi?id=40804
This patch suggests a solution - it allows to delay scaning sections in the
`ELFObjectFile<ELFT>::create`. It now allows user code to call an object
initialization (`initContent()`) later. With that it is possible,
for example, for dumpers just to dump the file header and exit.
By default initialization is still performed as before, what helps to keep
the logic of existent callers untouched.
I've experimented with different approaches when worked on this patch.
I think this approach is better than doing initialization of sections (i.e. scan of them)
on demand, because normally users of `ELFObjectFile` API expect to work with a valid object.
In most cases when a section header table can't be read (because of an error), we don't
have to continue to work with object. So we probably don't need to implement a more complex API.
Differential revision: https://reviews.llvm.org/D90903
Georgii Rymar [Mon, 9 Nov 2020 08:11:57 +0000 (11:11 +0300)]
[yaml2obj] - Implement BBAddrMapSection::getEntries(). NFC.
This allows to use the generic fields validation
mechanism that we have.
The behavior (i.e. an error reported) remains the same.
Sam McCall [Fri, 6 Nov 2020 22:38:08 +0000 (23:38 +0100)]
[clangd] Don't run clang-tidy AST traversal if there are no checks.
While here, clean up ParsedAST::build a bit:
- remove FIXMEs that were fixed long ago by ReplayPreamble
- remove redundant if, ClangTidyContext is not actually optional
Differential Revision: https://reviews.llvm.org/D90975
Michael Liao [Mon, 26 Oct 2020 16:17:42 +0000 (12:17 -0400)]
[GlobalsAA] Teach to handle `addrspacecast`.
António Afonso [Mon, 9 Nov 2020 02:09:32 +0000 (18:09 -0800)]
Fix debug_abbrev emitter to only assign table id once
While generating yamls for my tests I noticed that the new debug_abbrev format (with multiple table support) was incorrectly assigning id's to the table because it was generating one per abbrev entry in the table. For instance, the first table would get id 4 when 5 abbrev entries existed in the table. By itself this is not a problem but the corresponding debug_info sections were still referencing id 0. This was introduced here: https://reviews.llvm.org/D83116.
Maybe a better fix is to actually correctly calculate the table id when emitting debug info? From a quick glance it seems to me the ID is just being calculated as the distance between the first DWARFAbbreviationDeclarationSet and the one the debug info entry points to, which means it's just its index and not the actual table id that was generated when emitting the debug_abbrev tables. With my fix I guess this is fine but on the diff that introduced this Pavel mentioned that he would like to have some sort of unique id between them but not necessarily +1 increasing, but for that to work we need to actually find the table ID, I guess by going directly to Y.DebugAbbrev but to honest I have no idea how to link the DWARFAbbreviationDeclarationSet and the Y.DebugAbbrev, so I just did this simple fix.
I also realized there's barely any tests for MachO so it might useful to invest on that if the tool is being reworked on.
Reviewed By: Higuoxing, jhenderson
Differential Revision: https://reviews.llvm.org/D87179
Stella Laurenzo [Mon, 9 Nov 2020 00:49:36 +0000 (16:49 -0800)]
[mlir][CAPI] Proposal: Always building a libMLIRPublicAPI.so (re-apply).
Re-applies the reverted https://reviews.llvm.org/D90824 now that the link issue on BFD has been resolved.
This reverts commit
bb9b5d39712e39e15b22b36e8138075cea0cd7b5.
Differential Revision: https://reviews.llvm.org/D91044
Paul C. Anagnostopoulos [Fri, 6 Nov 2020 14:59:33 +0000 (09:59 -0500)]
[IR] [TableGen] Cleanup pass over the IR TableGen files.
This patch includes intrinsics for AMDGPU.
Differential Revision: https://reviews.llvm.org/D90946
Roman Lebedev [Tue, 3 Nov 2020 17:19:45 +0000 (20:19 +0300)]
[NFC][LoopIdiom] Add basic test coverage for 'left-shift until bittest` idiom
Nathan James [Sun, 8 Nov 2020 17:25:18 +0000 (17:25 +0000)]
[clang-tidy] Fix build for gcc5.3 after
d725f1ce
Hubert Tong [Sun, 8 Nov 2020 17:05:29 +0000 (12:05 -0500)]
[NFC][tests] Replace use of GNUisms in usage of diff
... the POSIX options suffice.
This maintains compatibility with the system `diff` on platforms
like AIX.