Craig Topper [Tue, 17 Sep 2019 18:02:52 +0000 (18:02 +0000)]
[X86] Call SimplifyDemandedVectorElts on KSHIFTL/KSHIFTR nodes during DAG combine.
llvm-svn: 372154
Craig Topper [Tue, 17 Sep 2019 18:02:46 +0000 (18:02 +0000)]
[X86] Simplify some code in LowerBUILD_VECTORvXi1. NFCI
The case were Immediate is 0 and HasConstElts is true should never
happen since that would mean the constant elts were all zero. But
we check for all zero build vector earlier. So just use HasConstElts
and blindly take Immediate without checking if its 0.
Move the code that bitcasts and extract the immediate into the
the HasConstElts case since the other code just creates an undef
with the right type. No casting needed.
llvm-svn: 372153
Erik Pilkington [Tue, 17 Sep 2019 18:02:45 +0000 (18:02 +0000)]
Use 'BOOL' instead of BOOL in diagnostic messages
Type names should be enclosed in single quotes.
llvm-svn: 372152
Stanislav Mekhanoshin [Tue, 17 Sep 2019 17:56:13 +0000 (17:56 +0000)]
[AMDGPU] Added MI bit IsDOT
NFC, needed for future commit.
Differential Revision: https://reviews.llvm.org/D67669
llvm-svn: 372151
GN Sync Bot [Tue, 17 Sep 2019 17:51:27 +0000 (17:51 +0000)]
gn build: Merge r372149
llvm-svn: 372150
Greg Clayton [Tue, 17 Sep 2019 17:46:13 +0000 (17:46 +0000)]
GSYM: Add the llvm::gsym::Header header class with tests
This patch adds the llvm::gsym::Header class which appears at the start of a stand alone GSYM file, or in the first bytes of the GSYM data in a GSYM section within a file. Added encode and decode methods with full error handling and full tests.
Differential Revision: https://reviews.llvm.org/D67666
llvm-svn: 372149
Alexey Bataev [Tue, 17 Sep 2019 17:44:27 +0000 (17:44 +0000)]
[OPENMP] Rework the test, NFC.
llvm-svn: 372148
Alexey Bataev [Tue, 17 Sep 2019 17:36:49 +0000 (17:36 +0000)]
[OPENMP5.0]Introduce attribute for declare variant directive.
Added attribute for declare variant directive. It will allow to handle
declare variant directive at the codegen and will allow to add extra
checks.
llvm-svn: 372147
Simon Pilgrim [Tue, 17 Sep 2019 17:32:15 +0000 (17:32 +0000)]
[TableGen] CodeGenMapTable - Don't dereference a dyn_cast result. NFCI.
The static analyzer is warning about potential null dereferences of dyn_cast<> results - in these cases we can safely use cast<> directly as we know that these cases should all be the correct type, which is why its working atm and anyway cast<> will assert if they aren't.
llvm-svn: 372146
Simon Pilgrim [Tue, 17 Sep 2019 17:26:14 +0000 (17:26 +0000)]
[ARM][AsmParser] Don't dereference a dyn_cast result. NFCI.
The static analyzer is warning about potential null dereferences of dyn_cast<> results - in these cases we can safely use cast<> directly as we know that these cases should all be the correct type, which is why its working atm and anyway cast<> will assert if they aren't.
llvm-svn: 372145
Simon Pilgrim [Tue, 17 Sep 2019 17:24:55 +0000 (17:24 +0000)]
Fix MSVC lambda capture warnings. NFCI.
llvm-svn: 372144
David Bolvansky [Tue, 17 Sep 2019 17:17:30 +0000 (17:17 +0000)]
Remove asan test for strncat(x, y, 0)
llvm-svn: 372143
David Bolvansky [Tue, 17 Sep 2019 17:12:24 +0000 (17:12 +0000)]
Reland "[SLC] Preserve attrs for strncpy(x, "", y) -> memset(align 1 x, '\0', y)"
llvm-svn: 372142
David Bolvansky [Tue, 17 Sep 2019 17:07:31 +0000 (17:07 +0000)]
[ASAN] Adjust asan tests due to new optimizations
llvm-svn: 372141
Nemanja Ivanovic [Tue, 17 Sep 2019 16:45:20 +0000 (16:45 +0000)]
[PowerPC] Exploit single instruction load-and-splat for word and doubleword
We currently produce a load, followed by (possibly a move for integers and) a
splat as separate instructions. VSX has always had a splatting load for
doublewords, but as of Power9, we have it for words as well. This patch just
exploits these instructions.
Differential revision: https://reviews.llvm.org/D63624
llvm-svn: 372139
Alina Sbirlea [Tue, 17 Sep 2019 16:33:35 +0000 (16:33 +0000)]
[MemorySSA] Fix phi insertion when inserting a def.
Summary:
When inserting a Def, the current algorithm is walking edges backward
and inserting new Phis where needed. There may be additional Phis needed
in the IDF of the newly inserted Def and Phis.
Adding Phis in the IDF of the Def was added ina previous patch, but we
may also need other Phis in the IDF of the newly added Phis.
Reviewers: george.burgess.iv
Subscribers: Prazek, sanjoy.google, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67637
llvm-svn: 372138
Alina Sbirlea [Tue, 17 Sep 2019 16:31:37 +0000 (16:31 +0000)]
[MemorySSA] Update MSSA for non-conventional AA.
Summary:
Regularly when moving an instruction that may not read or write memory,
the instruction is not modelled in MSSA, so not action is necessary.
For a non-conventional AA pipeline, MSSA needs to explicitly check when
creating accesses, so as to not model instructions that may not read and
write memory.
Reviewers: george.burgess.iv
Subscribers: Prazek, sanjoy.google, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67562
llvm-svn: 372137
Petr Hosek [Tue, 17 Sep 2019 16:27:36 +0000 (16:27 +0000)]
Move DK_Misexpect for compatability with getNextAvailablePluginDiagnosticKind
First identified after D66324 landed.
Patch By: paulkirth
Differential Revision: https://reviews.llvm.org/D67648
llvm-svn: 372136
Greg Clayton [Tue, 17 Sep 2019 16:15:49 +0000 (16:15 +0000)]
GSYM: add encoding and decoding to FunctionInfo
This patch adds encoding and decoding of the FunctionInfo objects along with full error handling and tests. Full details of the FunctionInfo encoding format appear in the FunctionInfo.h header file.
Differential Revision: https://reviews.llvm.org/D67506
llvm-svn: 372135
David Green [Tue, 17 Sep 2019 15:32:28 +0000 (15:32 +0000)]
[ARM] Add a SelectTAddrModeImm7 for MVE narrow loads and stores
We were previously using the SelectT2AddrModeImm7 for both normal and narrowing
MVE loads/stores. As the narrowing instructions do not accept sp as a register,
it makes little sense to optimise a FrameIndex into the load, only to have to
recover that later on. This adds a SelectTAddrModeImm7 which does not do that
folding, and uses it for narrowing load/store patterns.
Differential Revision: https://reviews.llvm.org/D67489
llvm-svn: 372134
David Green [Tue, 17 Sep 2019 15:25:24 +0000 (15:25 +0000)]
[ARM] Fixup pipeline test. NFC
llvm-svn: 372133
David Green [Tue, 17 Sep 2019 15:23:09 +0000 (15:23 +0000)]
[ARM] Reserve an emergency spill slot for fp16 addressing modes that need it
Similar to D67327, but this time for the FP16 VLDR and VSTR instructions that
use the AddrMode5FP16 addressing mode. We need to reserve an emergency spill
slot for instructions that will be out of range to use sp directly.
AddrMode5FP16 is 8 bits with a scale of 2.
Differential Revision: https://reviews.llvm.org/D67483
llvm-svn: 372132
Alexey Bataev [Tue, 17 Sep 2019 15:11:52 +0000 (15:11 +0000)]
[OPENMP]Try to rework the test to pacify the buildbots, NFC.
llvm-svn: 372130
Yitzhak Mandelbaum [Tue, 17 Sep 2019 15:10:39 +0000 (15:10 +0000)]
[clang-format] Fix cleanup of `AnnotatedLine` to include children nodes.
Summary:
AnnotatedLine has a tree structure, and things like the body of a lambda will be
a child of the lambda expression. For example,
[&]() { foo(a); };
will have an AnnotatedLine with a child:
[&]() {};
'- foo(a);
Currently, when the `Cleaner` class analyzes the affected lines, it does not
cleanup the lines' children nodes, which results in missed cleanup
opportunities, like the lambda body in the example above.
This revision extends the algorithm to visit children, thereby fixing the above problem.
Patch by Eric Li.
Reviewers: krasimir
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67659
llvm-svn: 372129
Benjamin Kramer [Tue, 17 Sep 2019 14:56:11 +0000 (14:56 +0000)]
[clangd] Fix another TSAN issue
llvm-svn: 372128
Benjamin Kramer [Tue, 17 Sep 2019 14:27:31 +0000 (14:27 +0000)]
[RISCV] Unbreak the build
llvm-svn: 372127
Sam Parker [Tue, 17 Sep 2019 14:21:36 +0000 (14:21 +0000)]
[ARM] Fix for buildbots
Remove setPreservesCFG from ARMConstantIslandPass and add a couple
of -verify-machine-dom-info instances into the existing codegen
tests.
llvm-svn: 372126
Krasimir Georgiev [Tue, 17 Sep 2019 14:15:23 +0000 (14:15 +0000)]
Revert "[SLC] Preserve attrs for strncpy(x, "", y) -> memset(align 1 x, '\0', y)"
Summary:
This reverts commit r372101.
Causes ASAN build bot failures:
http://lab.llvm.org:8011/builders/sanitizer-ppc64be-linux/builds/14176
From http://lab.llvm.org:8011/builders/sanitizer-ppc64be-linux/builds/14176/steps/64-bit%20check-asan/logs/stdio:
```
[ RUN ] AddressSanitizer.StrNCatOOBTest
/home/buildbots/ppc64be-sanitizer/sanitizer-ppc64be/build/llvm-project/compiler-rt/lib/asan/tests/asan_str_test.cpp:462: Failure
Death test: strncat(to - 1, from, 0)
Result: failed to die.
```
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67658
llvm-svn: 372125
Erich Keane [Tue, 17 Sep 2019 14:11:51 +0000 (14:11 +0000)]
Add SpellingNotCalculated to Attribute Enums to suppress UBSan warnings
UBSan downstreams noticed that the assignment of SpellingNotCalculated
to the spellings caused warnings.
llvm-svn: 372124
Nico Weber [Tue, 17 Sep 2019 14:06:05 +0000 (14:06 +0000)]
gn build: (manually) merge r372076
llvm-svn: 372123
George Rimar [Tue, 17 Sep 2019 13:58:46 +0000 (13:58 +0000)]
[llvm-readobj/llvm-objdump] - Improve how tool locate the dynamic table and report warnings about that.
Before this patch we gave a priority to a dynamic table found
from the section header.
It was discussed (here: https://reviews.llvm.org/D67078?id=218356#inline-602082)
that probably preferring the table from PT_DYNAMIC is better,
because it is what runtime loader sees.
This patch makes the table from PT_DYNAMIC be chosen at first place if it is available.
But also it adds logic to fall back to SHT_DYNAMIC if the table from the dynamic segment is
broken or fall back to use no table if both are broken.
It adds a few more diagnostic warnings for the logic above.
Differential revision: https://reviews.llvm.org/D67547
llvm-svn: 372122
Sam Parker [Tue, 17 Sep 2019 13:46:26 +0000 (13:46 +0000)]
[ARM] Fix for buildbots
Add --verifymachineinstrs and update the remaining low overhead loop
tests.
llvm-svn: 372121
Luis Marques [Tue, 17 Sep 2019 13:34:17 +0000 (13:34 +0000)]
[RISCV][NFC] Use NoRegister instead of 0 literal
Summary: Trivial cleanup.
Reviewers: asb, lenary
Reviewed By: lenary
Subscribers: hiraditya, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, s.egerton, pzheng, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67526
llvm-svn: 372120
Sven van Haastregt [Tue, 17 Sep 2019 13:32:56 +0000 (13:32 +0000)]
[OpenCL] Tidy up some comments; NFC
llvm-svn: 372119
Simon Pilgrim [Tue, 17 Sep 2019 13:27:02 +0000 (13:27 +0000)]
[X86] X86DAGToDAGISel::tryFoldLoad - assert root/parent pointers are non-null. NFCI.
Silences a static analyzer warning.
llvm-svn: 372118
Simon Pilgrim [Tue, 17 Sep 2019 13:25:56 +0000 (13:25 +0000)]
InterleavedAccessInfo - Don't dereference a dyn_cast result. NFCI.
llvm-svn: 372117
Simon Pilgrim [Tue, 17 Sep 2019 13:24:54 +0000 (13:24 +0000)]
[LoopVectorize] Don't dereference a dyn_cast result. NFCI.
The static analyzer is warning about potential null dereferences of dyn_cast<> results, we can use cast<> directly as we know that these cases should all be CastInst, which is why its working atm and anyway cast<> will assert if they aren't.
llvm-svn: 372116
David Green [Tue, 17 Sep 2019 12:58:51 +0000 (12:58 +0000)]
[ARM] Fix for MVE load/store stack accesses
MVE loads and stores have a 7 bit immediate range, scaled by the length of the type. This needs to be taught to the stack estimation code to ensure that an emergency spill slot is reserved in case we run out of registers when materialising stack indices.
Also the narrowing loads/stores can be created with frame indices even though they do not accept SP as a register. We need in those cases to make sure we have an emergency register to use as the frame base, as SP can never be used.
Differential Revision: https://reviews.llvm.org/D67327
llvm-svn: 372114
Benjamin Kramer [Tue, 17 Sep 2019 12:56:29 +0000 (12:56 +0000)]
Hide implementation details in namespaces.
llvm-svn: 372113
Krasimir Georgiev [Tue, 17 Sep 2019 12:23:03 +0000 (12:23 +0000)]
lldb: move a test input to the test Inputs dir
Summary:
This makes the input file for a new test added in r372060 directly
available in the Inputs subdirectory of the test dir.
Differential Revision: https://reviews.llvm.org/D67655
llvm-svn: 372112
Sam Parker [Tue, 17 Sep 2019 12:19:32 +0000 (12:19 +0000)]
[ARM][LowOverheadLoops] Add LR def safety check
Converting the *LoopStart pseudo instructions into DLS/WLS results in
LR being defined. These instructions were inserted on the assumption
that LR would already contain the loop counter because a mov is
introduced during ISel as the the consumers in the loop can only use
LR. That assumption proved wrong!
So perform a safety check, finding an appropriate place to insert the
DLS/WLS instructions or revert if this isn't possible.
Differential Revision: https://reviews.llvm.org/D67539
llvm-svn: 372111
George Rimar [Tue, 17 Sep 2019 12:05:39 +0000 (12:05 +0000)]
[llvm-readobj] - Test PPC64 relocations properly.
We had a precompiled binary committed and not all of the relocations
supported were tested. This patch fixes this.
Differential revision: https://reviews.llvm.org/D67617
llvm-svn: 372110
George Rimar [Tue, 17 Sep 2019 12:00:55 +0000 (12:00 +0000)]
[obj2yaml] - Support PPC64 relocation types.
We do not support them and fail with llvm_unreachable currently.
This is not the only target we do not support and also seems we are missing
the tests for those we have already. But I needed this one for another patch,
so posted it separatelly.
Relocation names are taken from llvm\include\llvm\BinaryFormat\ELFRelocs\PowerPC64.def
Differential revision: https://reviews.llvm.org/D67615
llvm-svn: 372109
George Rimar [Tue, 17 Sep 2019 11:51:26 +0000 (11:51 +0000)]
[yaml2obj/obj2yaml] - Allow setting an arbitrary values for e_machine.
Currently we only allow using a known named constants
for `Machine` field in YAML documents.
This patch allows using any numbers (valid or "unknown")
and adds test cases for current and new functionality.
With this it is possible to write a test cases for really unknown
EM_* targets.
Differential revision: https://reviews.llvm.org/D67652
llvm-svn: 372108
James Henderson [Tue, 17 Sep 2019 11:43:42 +0000 (11:43 +0000)]
[docs] Make --version text more correct
Follow-up to r371983. Referring to "this program" in the description of
the --version option in the documentation isn't exactly correct, because
the docs are not part of the program, and so "this program" doesn't
really refer to anything. This patch brings the other users of this
terminology into line with the new updates to llvm-size and
llvm-strings.
Reviewed by: alexshap, MaskRay
Differential Revision: https://reviews.llvm.org/D67618
llvm-svn: 372107
Luis Marques [Tue, 17 Sep 2019 11:15:35 +0000 (11:15 +0000)]
[RISCV] Switch to the Machine Scheduler
Most of the test changes are trivial instruction reorderings and differing
register allocations, without any obvious performance impact.
Differential Revision: https://reviews.llvm.org/D66973
llvm-svn: 372106
Johannes Doerfert [Tue, 17 Sep 2019 10:52:41 +0000 (10:52 +0000)]
[Attributor][Fix] Initialize the cache prior to using it
Summary:
There were segfaults as we modified and iterated the instruction maps in
the cache at the same time. This was happening because we created new
instructions while we populated the cache. This fix changes the order
in which we perform these actions. First, the caches for the whole
module are created, then we start to create abstract attributes.
I don't have a unit test but the LLVM test suite exposes this problem.
Reviewers: uenoku, sstefan1
Subscribers: hiraditya, bollu, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67232
llvm-svn: 372105
Luis Marques [Tue, 17 Sep 2019 10:52:09 +0000 (10:52 +0000)]
Revert Patch from Phabricator
This reverts r372092 (git commit
e38695a0255c9e7b53639f349f8101bae1ce5c04)
llvm-svn: 372104
Simon Pilgrim [Tue, 17 Sep 2019 10:51:30 +0000 (10:51 +0000)]
[X86] Use APInt::getLowBitsSet helper. NFCI.
Also avoids a static analyzer warning about out of range shifts.
llvm-svn: 372103
Utkarsh Saxena [Tue, 17 Sep 2019 10:28:05 +0000 (10:28 +0000)]
Add SemanticRanges to Clangd server.
Summary:
Adds Semantic Ranges capabilities to Clangd server.
Also adds tests for running it via clangd server.
This differs from the LSP spec as the spec needs this to be evaluated on multiple 'pos' and the expected output is an list of list of semantic ranges.
This is majorly for multi cursor and assuming this is a rare thing, we don't want to optimize make things complicated just for this.
This should be done in the LSP level by queueing one request per 'pos' in the input.
LSP Spec:
https://github.com/microsoft/language-server-protocol/blob/dbaeumer/3.15/specification.md#textDocument_selectionRange
Reviewers: hokein
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67650
llvm-svn: 372102
David Bolvansky [Tue, 17 Sep 2019 10:25:38 +0000 (10:25 +0000)]
[SLC] Preserve attrs for strncpy(x, "", y) -> memset(align 1 x, '\0', y)
llvm-svn: 372101
Graham Hunter [Tue, 17 Sep 2019 10:19:23 +0000 (10:19 +0000)]
[SVE][MVT] Fixed-length vector MVT ranges
* Reordered MVT simple types to group scalable vector types
together.
* New range functions in MachineValueType.h to only iterate over
the fixed-length int/fp vector types.
* Stopped backends which don't support scalable vector types from
iterating over scalable types.
Reviewers: sdesmalen, greened
Reviewed By: greened
Differential Revision: https://reviews.llvm.org/D66339
llvm-svn: 372099
David Bolvansky [Tue, 17 Sep 2019 10:12:48 +0000 (10:12 +0000)]
[InstCombine] Annotate strdup with deref_or_null
llvm-svn: 372098
David Bolvansky [Tue, 17 Sep 2019 10:03:45 +0000 (10:03 +0000)]
[NFCI] Fixed buildbots
llvm-svn: 372097
Fangrui Song [Tue, 17 Sep 2019 09:56:55 +0000 (09:56 +0000)]
[SimplifyLibCalls] Fix -Wunused-result after D53342/r372091
llvm-svn: 372096
David Bolvansky [Tue, 17 Sep 2019 09:53:14 +0000 (09:53 +0000)]
[NFC] Updated test
llvm-svn: 372095
Peter Smith [Tue, 17 Sep 2019 09:49:30 +0000 (09:49 +0000)]
[ELF][AARCH64] Refactor AArchErrataFix to match changes in ARMErrataFix NFC.
D67284 introduced ARMErrataFix.cpp which was derived from
AArch64ErrataFix.cpp. There were some useful refactoring changes made to
ARMErrataFix.cpp made as part of the review. This change applies the
relevant changes back to AArch64ErrataFix.cpp.
Main changes are:
- Old style variable names in comments like IS, are now new style isec.
- Simplify init() collection of mappingSymbols to always start with a code
mapping symbol.
- Simplify logic in mergeCmp().
- Fix one 80 column overflow caused by IS -> isec transformation.
Differential Revision: https://reviews.llvm.org/D67622
llvm-svn: 372094
David Bolvansky [Tue, 17 Sep 2019 09:45:52 +0000 (09:45 +0000)]
[NFC} Updated test
llvm-svn: 372093
Luis Marques [Tue, 17 Sep 2019 09:43:08 +0000 (09:43 +0000)]
Patch from Phabricator
llvm-svn: 372092
David Bolvansky [Tue, 17 Sep 2019 09:32:52 +0000 (09:32 +0000)]
[SimplifyLibCalls] Mark known arguments with nonnull
Reviewers: efriedma, jdoerfert
Reviewed By: jdoerfert
Subscribers: ychen, rsmith, joerg, aaron.ballman, lebedev.ri, uenoku, jdoerfert, hfinkel, javed.absar, spatel, dmgreen, llvm-commits
Differential Revision: https://reviews.llvm.org/D53342
llvm-svn: 372091
Michal Gorny [Tue, 17 Sep 2019 09:31:00 +0000 (09:31 +0000)]
[lldb] [Process/gdb-remote] Fix defaulting signal to invalid in action list
Fix processing of "C" packet with signal for the whole process to
default signal value for action list to LLDB_INVALID_SIGNAL_NUMBER
rather than 0.
Differential Revision: https://reviews.llvm.org/D67625
llvm-svn: 372090
George Rimar [Tue, 17 Sep 2019 09:26:49 +0000 (09:26 +0000)]
[llvm-readobj] - Fix BB after r372087.
Seems I forgot to update the number of bytes checked.
llvm-svn: 372089
Fangrui Song [Tue, 17 Sep 2019 09:25:52 +0000 (09:25 +0000)]
[llvm-ar] Parse 'h' and '-h': display help and exit
Support `llvm-ar h` and `llvm-ar -h` because they may be what users try
at first. Note, operation 'h' is undocumented in GNU ar.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D67560
llvm-svn: 372088
George Rimar [Tue, 17 Sep 2019 09:12:10 +0000 (09:12 +0000)]
[llvm-readobj] - Fix a TODO in elf-reloc-zero-name-or-value.test.
The "TODO" mentioned was:
"Add test for symbol with no name but with a value once yaml2obj allows
referencing symbols with no name from relocations."
We can do it now.
Differential revision: https://reviews.llvm.org/D67609
llvm-svn: 372087
Alexander Timofeev [Tue, 17 Sep 2019 09:08:58 +0000 (09:08 +0000)]
[AMDGPU]: PHI Elimination hooks added for custom COPY insertion. Fixed
Defferential Revision: https://reviews.llvm.org/D67101
Reviewers: rampitec, vpykhtin
llvm-svn: 372086
Sam Parker [Tue, 17 Sep 2019 09:08:05 +0000 (09:08 +0000)]
[ARM] LE support in ConstantIslands
The low-overhead branch extension provides a loop-end 'LE' instruction
that performs no decrement nor compare, it just jumps backwards. This
patch modifies the constant islands pass to try to insert LE
instructions in place of a Thumb2 conditional branch, instead of
shrinking it. This only happens if a cmp can be converted to a cbn/z
and used to exit the loop.
Differential Revision: https://reviews.llvm.org/D67404
llvm-svn: 372085
Florian Hahn [Tue, 17 Sep 2019 09:02:48 +0000 (09:02 +0000)]
[LoopUnroll] Use LoopSize+1 as threshold, to allow unrolling loops matching LoopSize.
We use `< UP.Threshold` later on, so we should use LoopSize + 1, to
allow unrolling if the result won't exceed to loop size.
Fixes PR43305.
Reviewers: efriedma, dmgreen, paquette
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D67594
llvm-svn: 372084
George Rimar [Tue, 17 Sep 2019 08:53:18 +0000 (08:53 +0000)]
[llvm-readobj] - Refactor the code.
It's a straightforward refactoring that allows to simplify and encapsulate the code.
Differential revision: https://reviews.llvm.org/D67624
llvm-svn: 372083
Sjoerd Meijer [Tue, 17 Sep 2019 08:43:11 +0000 (08:43 +0000)]
[Clang] Pragma vectorize_width() implies vectorize(enable)
Specifying the vectorization width was supposed to implicitly enable
vectorization, except that it wasn't really doing this. It was only
setting the vectorize.width metadata, but not vectorize.enable.
This should fix PR27643.
Differential Revision: https://reviews.llvm.org/D66290
llvm-svn: 372082
George Rimar [Tue, 17 Sep 2019 08:38:53 +0000 (08:38 +0000)]
[llvm-objcopy] - Remove python invocations from 2 test cases.
It is possible to use yaml2obj to create sections with overlapping sh_offset now.
This patch does that.
Differential revision: https://reviews.llvm.org/D67610
llvm-svn: 372081
Kito Cheng [Tue, 17 Sep 2019 08:19:17 +0000 (08:19 +0000)]
[RISCV] Add option aliases: -mcmodel=medany and -mcmodel=medlow
RISC-V GCC use -mcmodel=medany and -mcmodel=medlow, but LLVM use
-mcmodel=small and -mcmodel=medium.
Add those two option aliases for provide same user interface between
GCC and LLVM.
Reviewed By: lenary
Differential Revision: https://reviews.llvm.org/D67066
llvm-svn: 372080
Florian Hahn [Tue, 17 Sep 2019 08:14:09 +0000 (08:14 +0000)]
[bugpoint] Add support for -Oz and properly enable -Os.
This patch adds -Oz as option and also properly enables support for -Os.
Currently, the existing check for -Os is dead, because the enclosing if
only checks of O1, O2 and O3.
There is still a difference between the -Oz pipeline compared to opt,
but I have not been able to track that down yet.
Reviewers: bogner, sebpop, efriedma
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D67593
llvm-svn: 372079
Kito Cheng [Tue, 17 Sep 2019 08:09:56 +0000 (08:09 +0000)]
[RISCV] Define __riscv_cmodel_medlow and __riscv_cmodel_medany correctly
RISC-V LLVM was only implement small/medlow code model, so it defined
__riscv_cmodel_medlow directly without check.
Now, we have medium/medany code model in RISC-V back-end, it should
define according the actually code model.
Reviewed By: lewis-revill
Differential Revision: https://reviews.llvm.org/D67065
llvm-svn: 372078
Raphael Isemann [Tue, 17 Sep 2019 07:58:01 +0000 (07:58 +0000)]
Reland "[lldb][NFC] Make ApplyObjcCastHack less scary"
First version had a typo.
llvm-svn: 372077
Sam Parker [Tue, 17 Sep 2019 07:43:04 +0000 (07:43 +0000)]
[ARM][MVE] Add invalidForTailPredication to TSFlags
Set this bit for the MVE reduction instructions to prevent a loop from
becoming tail predicated in their presence.
Differential Revision: https://reviews.llvm.org/D67444
llvm-svn: 372076
Hideto Ueno [Tue, 17 Sep 2019 06:53:27 +0000 (06:53 +0000)]
[Attributor] Use Alias Analysis in noalias callsite argument deduction
Summary: This patch adds a check of alias analysis in `noalias` callsite argument deduction.
Reviewers: jdoerfert, sstefan1
Reviewed By: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67604
llvm-svn: 372075
Ilya Biryukov [Tue, 17 Sep 2019 06:49:50 +0000 (06:49 +0000)]
[clangd] Remove stale comment. NFC
llvm-svn: 372074
Hideto Ueno [Tue, 17 Sep 2019 05:45:18 +0000 (05:45 +0000)]
[Attributor] Create helper struct for handling analysis getters
Summary: This patch introduces a helper struct `AnalysisGetter` to put together analysis getters. In this patch, a getter for `AAResult` is also added for `noalias`.
Reviewers: jdoerfert, sstefan1
Reviewed By: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67603
llvm-svn: 372072
David Zarzycki [Tue, 17 Sep 2019 04:44:13 +0000 (04:44 +0000)]
[git-llvm] Do not reinvent `@{upstream}` (take 2)
This makes git-llvm more of a thin wrapper around git while temporarily
maintaining backwards compatibility with past git-llvm behavior.
Using @{upstream} makes git-llvm more robust when used with a nontrivial
local repository.
https://reviews.llvm.org/D67389
llvm-svn: 372070
Craig Topper [Tue, 17 Sep 2019 04:41:14 +0000 (04:41 +0000)]
[X86] Split oversized vXi1 vector arguments and return values into scalars on avx512 targets.
Previously we tried to split them into narrower v64i1 or v16i1
pieces that each got promoted to vXi8 and then passed in a zmm
or xmm register. But this crashes when you need to pass more
pieces than available registers reserved for argument passing.
The scalarizing done here generates much longer and slower code,
but is consistent with the behavior of avx2 and earlier targets
for these types.
Fixes PR43323.
llvm-svn: 372069
Craig Topper [Tue, 17 Sep 2019 04:41:10 +0000 (04:41 +0000)]
[X86] Allow masked VBROADCAST instructions to be turned into BLENDM with a broadcast load to avoid a copy.
The BLENDM instructions allow an 2 sources and an independent
destination while masked VBROADCAST has the destination tied
to the source.
llvm-svn: 372068
Craig Topper [Tue, 17 Sep 2019 04:41:05 +0000 (04:41 +0000)]
[X86] Add support for commuting EVEX VCMP instructons with any immediate value.
Previously we limited to the EQ/NE/TRUE/FALSE/ORD/UNORD immediates.
llvm-svn: 372067
Craig Topper [Tue, 17 Sep 2019 04:41:01 +0000 (04:41 +0000)]
[X86] Add test case for missed opportunity to commute a VCMP instruction after unfolding one load in order to fold another load.
llvm-svn: 372066
Craig Topper [Tue, 17 Sep 2019 04:40:58 +0000 (04:40 +0000)]
[X86] Enable commuting of EVEX VCMP for all immediate values during isel.
llvm-svn: 372065
Jonas Devlieghere [Tue, 17 Sep 2019 03:58:32 +0000 (03:58 +0000)]
[test] Disable reproducer dump test on Windows
llvm-svn: 372064
Richard Smith [Tue, 17 Sep 2019 03:56:30 +0000 (03:56 +0000)]
Fix reliance on -flax-vector-conversions in AVX intrinsics headers and
corresponding tests.
llvm-svn: 372063
Richard Smith [Tue, 17 Sep 2019 03:56:28 +0000 (03:56 +0000)]
Fix reliance on lax vector conversions in tests for x86 intrinsics.
llvm-svn: 372062
Richard Smith [Tue, 17 Sep 2019 03:56:26 +0000 (03:56 +0000)]
Remove reliance on lax vector conversions from altivec.h in VSX mode.
llvm-svn: 372061
Jonas Devlieghere [Tue, 17 Sep 2019 03:55:58 +0000 (03:55 +0000)]
[ScriptInterpreter] Initialize globals when loading a scripting module.
The LoadScriptingModule used by command script import wasn't
initializing the LLDB global variables (things like `lldb.frame` and
`lldb.debugger`). They would get initialized however when running the
interactive script interpreter or running a single script line (e.g.
`script print(lldb.frame)`). This patch fixes that by properly
initializing the globals when loading a Python module.
Differential revision: https://reviews.llvm.org/D67644
llvm-svn: 372060
Fangrui Song [Tue, 17 Sep 2019 02:45:38 +0000 (02:45 +0000)]
[ELF][Hexagon] Allow PT_LOAD to have overlapping p_offset ranges on EM_HEXAGON
Port the D64906 technique to EM_HEXAGON. This concludes the patch series.
Differential Revision: https://reviews.llvm.org/D67605
llvm-svn: 372059
Nicholas Allegra [Tue, 17 Sep 2019 01:43:33 +0000 (01:43 +0000)]
Push lambda scope earlier when transforming lambda expression
Differential Revision: https://reviews.llvm.org/D66067
llvm-svn: 372058
Jim Ingham [Tue, 17 Sep 2019 00:44:48 +0000 (00:44 +0000)]
Revert "[lldb][NFC] Make ApplyObjcCastHack less scary"
This reverts commit
21641a2f6dbac22653befd03496e0850537882ff.
It was causing the following test failures:
lldb-Suite.lang/objc/objc-class-method.TestObjCClassMethod.py
lldb-Suite.lang/objc/foundation.TestObjCMethodsString.py
lldb-Suite.lang/objc/foundation.TestConstStrings.py
lldb-Suite.lang/objc/radar-9691614.TestObjCMethodReturningBOOL.py
lldb-Suite.lang/objc/foundation.TestObjCMethodsNSArray.py
llvm-svn: 372057
Jake Ehrlich [Tue, 17 Sep 2019 00:34:41 +0000 (00:34 +0000)]
[libFuzzer] Always print DSO map on Fuchsia libFuzzer launch
Fuchsia doesn't have /proc/id/maps, so it relies on the kernel logging system
to provide the DSO map to be able to symbolize in the context of ASLR. The DSO
map is logged automatically on Fuchsia when encountering a crash or writing to
the sanitizer log for the first time in a process. There are several cases
where libFuzzer doesn't encounter a crash, e.g. on timeouts, OOMs, and when
configured to print new PCs as they become covered, to name a few. Therefore,
this change always writes to the sanitizer log on startup to ensure the DSO map
is available in the log.
Author: aarongreen
Differential Revision: https://reviews.llvm.org/D66233
llvm-svn: 372056
Alexey Bataev [Tue, 17 Sep 2019 00:08:50 +0000 (00:08 +0000)]
[OPENMP] Fix the test, NFC
llvm-svn: 372055
David Blaikie [Mon, 16 Sep 2019 23:56:26 +0000 (23:56 +0000)]
llvm-reduce: Clean out previous test temp/output dir, since it was a dir and now it's used as just a single file
llvm-svn: 372054
David Blaikie [Mon, 16 Sep 2019 23:54:57 +0000 (23:54 +0000)]
llvm-reduce: Remove some string copies
llvm-svn: 372053
Jonas Devlieghere [Mon, 16 Sep 2019 23:49:42 +0000 (23:49 +0000)]
[test] Fail gracefully if the regex doesn't match
This test is failing on the Fedora bot (staging). Rather than failing
with an IndexError, we should trigger an assert and dump the log when
the regex doesn't match.
llvm-svn: 372052
Joel E. Denny [Mon, 16 Sep 2019 23:47:46 +0000 (23:47 +0000)]
Revert r372035: "[lit] Make internal diff work in pipelines"
This breaks a Windows bot.
llvm-svn: 372051
Amara Emerson [Mon, 16 Sep 2019 23:46:03 +0000 (23:46 +0000)]
[GlobalISel] Partially revert r371901.
r371901 was overeager and widenScalarDst() and the like in the legalizer
attempt to increment the insert point given in order to add new instructions
after the currently legalizing inst. In cases where the insertion point is not
exactly the current instruction, then callers need to de-compensate for the
behaviour by decrementing the insertion iterator before calling them. It's not
a nice state of affairs, for now just undo the problematic parts of the change.
llvm-svn: 372050
David Blaikie [Mon, 16 Sep 2019 23:41:19 +0000 (23:41 +0000)]
llvm-reduce: Make tests shell-independent by passing the interpreter on the command line rather than using #! in the test file
llvm-svn: 372049