platform/upstream/llvm.git
4 years agoInterleavedAccessInfo - Don't dereference a dyn_cast result. NFCI.
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

4 years ago[LoopVectorize] Don't dereference a dyn_cast result. NFCI.
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

4 years ago[ARM] Fix for MVE load/store stack accesses
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

4 years agoHide implementation details in namespaces.
Benjamin Kramer [Tue, 17 Sep 2019 12:56:29 +0000 (12:56 +0000)]
Hide implementation details in namespaces.

llvm-svn: 372113

4 years agolldb: move a test input to the test Inputs dir
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

4 years ago[ARM][LowOverheadLoops] Add LR def safety check
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

4 years ago[llvm-readobj] - Test PPC64 relocations properly.
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

4 years ago[obj2yaml] - Support PPC64 relocation types.
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

4 years ago[yaml2obj/obj2yaml] - Allow setting an arbitrary values for e_machine.
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

4 years ago[docs] Make --version text more correct
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

4 years ago[RISCV] Switch to the Machine Scheduler
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

4 years ago[Attributor][Fix] Initialize the cache prior to using it
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

4 years agoRevert Patch from Phabricator
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

4 years ago[X86] Use APInt::getLowBitsSet helper. NFCI.
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

4 years agoAdd SemanticRanges to Clangd server.
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

4 years ago[SLC] Preserve attrs for strncpy(x, "", y) -> memset(align 1 x, '\0', y)
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

4 years ago[SVE][MVT] Fixed-length vector MVT ranges
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

4 years ago[InstCombine] Annotate strdup with deref_or_null
David Bolvansky [Tue, 17 Sep 2019 10:12:48 +0000 (10:12 +0000)]
[InstCombine] Annotate strdup with deref_or_null

llvm-svn: 372098

4 years ago[NFCI] Fixed buildbots
David Bolvansky [Tue, 17 Sep 2019 10:03:45 +0000 (10:03 +0000)]
[NFCI] Fixed buildbots

llvm-svn: 372097

4 years ago[SimplifyLibCalls] Fix -Wunused-result after D53342/r372091
Fangrui Song [Tue, 17 Sep 2019 09:56:55 +0000 (09:56 +0000)]
[SimplifyLibCalls] Fix -Wunused-result after D53342/r372091

llvm-svn: 372096

4 years ago[NFC] Updated test
David Bolvansky [Tue, 17 Sep 2019 09:53:14 +0000 (09:53 +0000)]
[NFC] Updated test

llvm-svn: 372095

4 years ago[ELF][AARCH64] Refactor AArchErrataFix to match changes in ARMErrataFix NFC.
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

4 years ago[NFC} Updated test
David Bolvansky [Tue, 17 Sep 2019 09:45:52 +0000 (09:45 +0000)]
[NFC} Updated test

llvm-svn: 372093

4 years agoPatch from Phabricator
Luis Marques [Tue, 17 Sep 2019 09:43:08 +0000 (09:43 +0000)]
Patch from Phabricator

llvm-svn: 372092

4 years ago[SimplifyLibCalls] Mark known arguments with nonnull
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

4 years ago[lldb] [Process/gdb-remote] Fix defaulting signal to invalid in action list
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

4 years ago[llvm-readobj] - Fix BB after r372087.
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

4 years ago[llvm-ar] Parse 'h' and '-h': display help and exit
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

4 years ago[llvm-readobj] - Fix a TODO in elf-reloc-zero-name-or-value.test.
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

4 years ago[AMDGPU]: PHI Elimination hooks added for custom COPY insertion. Fixed
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

4 years ago[ARM] LE support in ConstantIslands
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

4 years ago[LoopUnroll] Use LoopSize+1 as threshold, to allow unrolling loops matching LoopSize.
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

4 years ago[llvm-readobj] - Refactor the code.
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

4 years ago[Clang] Pragma vectorize_width() implies vectorize(enable)
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

4 years ago[llvm-objcopy] - Remove python invocations from 2 test cases.
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

4 years ago[RISCV] Add option aliases: -mcmodel=medany and -mcmodel=medlow
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

4 years ago[bugpoint] Add support for -Oz and properly enable -Os.
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

4 years ago[RISCV] Define __riscv_cmodel_medlow and __riscv_cmodel_medany correctly
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

4 years agoReland "[lldb][NFC] Make ApplyObjcCastHack less scary"
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

4 years ago[ARM][MVE] Add invalidForTailPredication to TSFlags
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

4 years ago[Attributor] Use Alias Analysis in noalias callsite argument deduction
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

4 years ago[clangd] Remove stale comment. NFC
Ilya Biryukov [Tue, 17 Sep 2019 06:49:50 +0000 (06:49 +0000)]
[clangd] Remove stale comment. NFC

llvm-svn: 372074

4 years ago[Attributor] Create helper struct for handling analysis getters
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

4 years ago[git-llvm] Do not reinvent `@{upstream}` (take 2)
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

4 years ago[X86] Split oversized vXi1 vector arguments and return values into scalars on avx512...
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

4 years ago[X86] Allow masked VBROADCAST instructions to be turned into BLENDM with a broadcast...
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

4 years ago[X86] Add support for commuting EVEX VCMP instructons with any immediate value.
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

4 years ago[X86] Add test case for missed opportunity to commute a VCMP instruction after unfold...
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

4 years ago[X86] Enable commuting of EVEX VCMP for all immediate values during isel.
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

4 years ago[test] Disable reproducer dump test on Windows
Jonas Devlieghere [Tue, 17 Sep 2019 03:58:32 +0000 (03:58 +0000)]
[test] Disable reproducer dump test on Windows

llvm-svn: 372064

4 years agoFix reliance on -flax-vector-conversions in AVX intrinsics headers and
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

4 years agoFix reliance on lax vector conversions in tests for x86 intrinsics.
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

4 years agoRemove reliance on lax vector conversions from altivec.h in VSX mode.
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

4 years ago[ScriptInterpreter] Initialize globals when loading a scripting module.
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

4 years ago[ELF][Hexagon] Allow PT_LOAD to have overlapping p_offset ranges on EM_HEXAGON
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

4 years agoPush lambda scope earlier when transforming lambda expression
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

4 years agoRevert "[lldb][NFC] Make ApplyObjcCastHack less scary"
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

4 years ago[libFuzzer] Always print DSO map on Fuchsia libFuzzer launch
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

4 years ago[OPENMP] Fix the test, NFC
Alexey Bataev [Tue, 17 Sep 2019 00:08:50 +0000 (00:08 +0000)]
[OPENMP] Fix the test, NFC

llvm-svn: 372055

4 years agollvm-reduce: Clean out previous test temp/output dir, since it was a dir and now...
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

4 years agollvm-reduce: Remove some string copies
David Blaikie [Mon, 16 Sep 2019 23:54:57 +0000 (23:54 +0000)]
llvm-reduce: Remove some string copies

llvm-svn: 372053

4 years ago[test] Fail gracefully if the regex doesn't match
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

4 years agoRevert r372035: "[lit] Make internal diff work in pipelines"
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

4 years ago[GlobalISel] Partially revert r371901.
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

4 years agollvm-reduce: Make tests shell-independent by passing the interpreter on the command...
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

4 years agoAdd libc to path mappings in git-llvm.
David L. Jones [Mon, 16 Sep 2019 23:36:35 +0000 (23:36 +0000)]
Add libc to path mappings in git-llvm.

llvm-svn: 372048

4 years agoFix swig python package path
Haibo Huang [Mon, 16 Sep 2019 23:31:16 +0000 (23:31 +0000)]
Fix swig python package path

Summary:
The path defined in CMakeLists.txt doesn't match the path generated in
our python script. This change fixes that.

LLVM_LIBRARY_OUTPUT_INTDIR is defined as:

${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})

On the other hand, the path of site-package is generaged in
get_framework_python_dir_windows() in finishSwigPythonLLDB.py as:
(Dispite its name, the function is used for everything other than xcode)

prefix/cmakeBuildConfiguration/distutils.sysconfig.get_python_lib()

From lldb/CMakeLists.txt, we can see that:
prefix=${CMAKE_BINARY_DIR},
cmakeBuildConfiguration=${CMAKE_CFG_INTDIR}

And from python source code, we can see get_python_lib() always returns
lib/pythonx.y/site-packages for posix, or Lib/site-packages for windows:
https://github.com/python/cpython/blob/3.8/Lib/distutils/sysconfig.py#L128

We should make them match each other.

Subscribers: mgorny, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D67583

llvm-svn: 372047

4 years ago[Reproducer] Implement dumping packets.
Jonas Devlieghere [Mon, 16 Sep 2019 23:31:06 +0000 (23:31 +0000)]
[Reproducer] Implement dumping packets.

This patch completes the dump functionality by adding support for
dumping a reproducer's GDB remote packets.

Differential revision: https://reviews.llvm.org/D67636

llvm-svn: 372046

4 years agoFix warning: lambda capture 'temp_file_path' is not used
Jonas Devlieghere [Mon, 16 Sep 2019 22:55:49 +0000 (22:55 +0000)]
Fix warning: lambda capture 'temp_file_path' is not used

llvm-svn: 372044

4 years ago[PowerPC] Cust lower fpext v2f32 to v2f64 from extract_subvector v4f32
Nemanja Ivanovic [Mon, 16 Sep 2019 22:54:52 +0000 (22:54 +0000)]
[PowerPC] Cust lower fpext v2f32 to v2f64 from extract_subvector v4f32

Add the missing piece of r372029.
Somehow when the patch for review D61961 was committed, only the test case
went in and the code didn't. This of course caused all kinds of build bot
breaks.
This patch just adds the code for that patch.

Author: Lei Huang
Differential revision: https://reviews.llvm.org/D61961

llvm-svn: 372043

4 years ago[Remarks] Allow remarks::Format::YAML to take a string table
Francis Visoiu Mistrih [Mon, 16 Sep 2019 22:45:17 +0000 (22:45 +0000)]
[Remarks] Allow remarks::Format::YAML to take a string table

It should be allowed to take a string table in case all the strings in
the remarks point there, but it shouldn't use it during serialization.

llvm-svn: 372042

4 years ago[test] Clean up previous raw profile before merging into it
Vedant Kumar [Mon, 16 Sep 2019 22:32:18 +0000 (22:32 +0000)]
[test] Clean up previous raw profile before merging into it

This fixes a test failure in instrprof-set-file-object-merging.c which
seems to have been caused by reuse of stale data in old raw profiles.

llvm-svn: 372041

4 years ago[OPENMP]Fix the test, NFC.
Alexey Bataev [Mon, 16 Sep 2019 22:17:10 +0000 (22:17 +0000)]
[OPENMP]Fix the test, NFC.

llvm-svn: 372040

4 years ago[Modules][Objective-C] Use complete decl from module when diagnosing missing import
Bruno Cardoso Lopes [Mon, 16 Sep 2019 22:00:29 +0000 (22:00 +0000)]
[Modules][Objective-C] Use complete decl from module when diagnosing missing import

Summary:
Otherwise the definition (first found) for ObjCInterfaceDecl's might
precede the module one, which will eventually lead to crash, since
diagnoseMissingImport needs one coming from a module.

This behavior changed after Richard's r342018, which started to look
into the definition of ObjCInterfaceDecls.

rdar://problem/49237144

Reviewers: rsmith, arphaman

Subscribers: jkorous, dexonsmith, ributzka, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D66982

llvm-svn: 372039

4 years ago[compiler-rt][crt] make test case nontrivial in check_cxx_section_exists
Jian Cai [Mon, 16 Sep 2019 21:47:47 +0000 (21:47 +0000)]
[compiler-rt][crt]  make test case nontrivial in check_cxx_section_exists

Summary:
.init_array gets optimized away when building with -O2 and as a result,
check_cxx_section_exists failed to pass -DCOMPILER_RT_HAS_INITFINI_ARRAY
when building crtbegin.o and crtend.o, which causes binaries linked with
them encounter segmentation fault. See https://crbug.com/855759 for
details. This change prevents .init_array section to be optimized away
even with -O2 or higher optimization level.

Subscribers: dberris, mgorny, #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

Differential Revision: https://reviews.llvm.org/D67628

llvm-svn: 372038

4 years ago[clang-tidy] add checks to bugprone-posix-return
Jian Cai [Mon, 16 Sep 2019 21:43:56 +0000 (21:43 +0000)]
[clang-tidy] add checks to bugprone-posix-return

This check now also checks if any calls to pthread_* functions expect negative return values. These functions return either 0 on success or an errno on failure, which is positive only.

llvm-svn: 372037

4 years agoAdd a director, along with README.txt and LICENSE.txt, for libc.
David L. Jones [Mon, 16 Sep 2019 21:39:08 +0000 (21:39 +0000)]
Add a director, along with README.txt and LICENSE.txt, for libc.

llvm-svn: 372036

4 years ago[lit] Make internal diff work in pipelines
Joel E. Denny [Mon, 16 Sep 2019 21:22:29 +0000 (21:22 +0000)]
[lit] Make internal diff work in pipelines

When using lit's internal shell, RUN lines like the following
accidentally execute an external `diff` instead of lit's internal
`diff`:

```
 # RUN: program | diff file -
 # RUN: not diff file1 file2 | FileCheck %s
```

Such cases exist now, in `clang/test/Analysis` for example.  We are
preparing patches to ensure lit's internal `diff` is called in such
cases, which will then fail because lit's internal `diff` cannot
currently be used in pipelines and doesn't recognize `-` as a
command-line option.

To enable pipelines, this patch moves lit's `diff` implementation into
an out-of-process script, similar to lit's `cat` implementation.  A
follow-up patch will implement `-` to mean stdin.

Reviewed By: probinson, stella.stamenova

Differential Revision: https://reviews.llvm.org/D66574

llvm-svn: 372035

4 years agoRevert "Implement std::condition_variable via pthread_cond_clockwait() where available"
Dan Albert [Mon, 16 Sep 2019 21:20:32 +0000 (21:20 +0000)]
Revert "Implement std::condition_variable via pthread_cond_clockwait() where available"

This reverts commit 5e37d7f9ff257ec62d733d3d94b11f03e0fe51ca.

llvm-svn: 372034

4 years ago[NFC] Test commit access
Bardia Mahjour [Mon, 16 Sep 2019 20:44:15 +0000 (20:44 +0000)]
[NFC] Test commit access

llvm-svn: 372033

4 years ago[Docs] Bug fix for docs homepage
DeForest Richards [Mon, 16 Sep 2019 20:29:56 +0000 (20:29 +0000)]
[Docs] Bug fix for docs homepage

Removes reference to non-existent Reference Documentation page.

llvm-svn: 372032

4 years ago[Docs] Adds Getting Started/Tutorials, Reference to LLVM docs homepage
DeForest Richards [Mon, 16 Sep 2019 20:19:32 +0000 (20:19 +0000)]
[Docs] Adds Getting Started/Tutorials, Reference to LLVM docs homepage

Adds a section for Getting Started/Tutorials and Reference topics to the LLVM docs homepage.

llvm-svn: 372031

4 years ago[PowerPC] Cust lower fpext v2f32 to v2f64 from extract_subvector v4f32
Lei Huang [Mon, 16 Sep 2019 20:04:15 +0000 (20:04 +0000)]
[PowerPC] Cust lower fpext v2f32 to v2f64 from extract_subvector v4f32

This is a follow up patch from https://reviews.llvm.org/D57857 to handle
extract_subvector v4f32.  For cases where we fpext of v2f32 to v2f64 from
extract_subvector we currently generate on P9 the following:

  lxv 0, 0(3)
  xxsldwi 1, 0, 0, 1
  xscvspdpn 2, 0
  xxsldwi 3, 0, 0, 3
  xxswapd 0, 0
  xscvspdpn 1, 1
  xscvspdpn 3, 3
  xscvspdpn 0, 0
  xxmrghd 0, 0, 3
  xxmrghd 1, 2, 1
  stxv 0, 0(4)
  stxv 1, 0(5)

This patch custom lower it to the following sequence:

  lxv 0, 0(3)       # load the v4f32 <w0, w1, w2, w3>
  xxmrghw 2, 0, 0   # Produce the following vector <w0, w0, w1, w1>
  xxmrglw 3, 0, 0   # Produce the following vector <w2, w2, w3, w3>
  xvcvspdp 2, 2     # FP-extend to <d0, d1>
  xvcvspdp 3, 3     # FP-extend to <d2, d3>
  stxv 2, 0(5)      # Store <d0, d1> (%vecinit11)
  stxv 3, 0(4)      # Store <d2, d3> (%vecinit4)

Differential Revision: https://reviews.llvm.org/D61961

llvm-svn: 372029

4 years ago[NFC] Move dumping into GDBRemotePacket
Jonas Devlieghere [Mon, 16 Sep 2019 20:02:57 +0000 (20:02 +0000)]
[NFC] Move dumping into GDBRemotePacket

This moves the dumping logic from the GDBRemoteCommunicationHistory
class into the GDBRemotePacket so that it can be reused from the
reproducer command object.

llvm-svn: 372028

4 years agoOpen fstream files in O_CLOEXEC mode when possible.
Dan Albert [Mon, 16 Sep 2019 19:26:41 +0000 (19:26 +0000)]
Open fstream files in O_CLOEXEC mode when possible.

Reviewers: EricWF, mclow.lists, ldionne

Reviewed By: ldionne

Subscribers: smeenai, dexonsmith, christof, ldionne, libcxx-commits

Tags: #libc

Differential Revision: https://reviews.llvm.org/D59839

llvm-svn: 372027

4 years agodo not emit -Wunused-macros warnings in -frewrite-includes mode (PR15614)
Lubos Lunak [Mon, 16 Sep 2019 19:18:37 +0000 (19:18 +0000)]
do not emit -Wunused-macros warnings in -frewrite-includes mode (PR15614)

-frewrite-includes calls PP.SetMacroExpansionOnlyInDirectives() to avoid
macro expansions that are useless in that mode, but this can lead
to -Wunused-macros false positives. As -frewrite-includes does not emit
normal warnings, block -Wunused-macros too.

Differential Revision: https://reviews.llvm.org/D65371

llvm-svn: 372026

4 years ago[Coverage] Speed up file-based queries for coverage info, NFC
Vedant Kumar [Mon, 16 Sep 2019 19:08:44 +0000 (19:08 +0000)]
[Coverage] Speed up file-based queries for coverage info, NFC

Speed up queries for coverage info in a file by reducing the amount of
time spent determining whether a function record corresponds to a file.

This gives a 36% speedup when generating a coverage report for `llc`.
The reduction is entirely in user time.

rdar://54758110

Differential Revision: https://reviews.llvm.org/D67575

llvm-svn: 372025

4 years ago[Coverage] Assert that filenames in a TU are unique, NFC
Vedant Kumar [Mon, 16 Sep 2019 19:08:41 +0000 (19:08 +0000)]
[Coverage] Assert that filenames in a TU are unique, NFC

llvm-svn: 372024

4 years ago[lld] Update lld driver to use new LTO APIs to handle libcall symbols
Steven Wu [Mon, 16 Sep 2019 18:49:57 +0000 (18:49 +0000)]
[lld] Update lld driver to use new LTO APIs to handle libcall symbols

NFC. Remove duplicated code in ELF/COFF driver and libLTO legacy
interfaces.

llvm-svn: 372022

4 years ago[LTO][Legacy] Add new C inferface to query libcall functions
Steven Wu [Mon, 16 Sep 2019 18:49:54 +0000 (18:49 +0000)]
[LTO][Legacy] Add new C inferface to query libcall functions

Summary:
This is needed to implemented the same approach as lld (implemented in r338434)
for how to handling symbols that can be generated by LTO code generator
but not present in the symbol table for linker that uses legacy C APIs.

libLTO is in charge of providing the list of symbols. Linker is in
charge of implementing the eager loading from static libraries using
the list of symbols.

rdar://problem/52853974

Reviewers: tejohnson, bd1976llvm, deadalnix, espindola

Reviewed By: tejohnson

Subscribers: emaste, arichardson, hiraditya, MaskRay, dang, kledzik, mehdi_amini, inglorion, jkorous, dexonsmith, ributzka, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67568

llvm-svn: 372021

4 years ago[PGO] Use linkonce_odr linkage for __profd_ variables in comdat groups
Reid Kleckner [Mon, 16 Sep 2019 18:49:09 +0000 (18:49 +0000)]
[PGO] Use linkonce_odr linkage for __profd_ variables in comdat groups

This fixes relocations against __profd_ symbols in discarded sections,
which is PR41380.

In general, instrumentation happens very early, and optimization and
inlining happens afterwards. The counters for a function are calculated
early, and after inlining, counters for an inlined function may be
widely referenced by other functions.

For C++ inline functions of all kinds (linkonce_odr &
available_externally mainly), instr profiling wants to deduplicate these
__profc_ and __profd_ globals. Otherwise the binary would be quite
large.

I made __profd_ and __profc_ comdat in r355044, but I chose to make
__profd_ internal. At the time, I was only dealing with coverage, and in
that case, none of the instrumentation needs to reference __profd_.
However, if you use PGO, then instrumentation passes add calls to
__llvm_profile_instrument_range which reference __profd_ globals. The
solution is to make these globals externally visible by using
linkonce_odr linkage for data as was done for counters.

This is safe because PGO adds a CFG hash to the names of the data and
counter globals, so if different TUs have different globals, they will
get different data and counter arrays.

Reviewers: xur, hans

Differential Revision: https://reviews.llvm.org/D67579

llvm-svn: 372020

4 years ago[ARM][Codegen] Autogenerate arm-cgp-casts.ll test.
Roman Lebedev [Mon, 16 Sep 2019 18:28:22 +0000 (18:28 +0000)]
[ARM][Codegen] Autogenerate arm-cgp-casts.ll test.

Apparently it got broken by r372009 while i thought it was r372012.

llvm-svn: 372019

4 years ago[lldb] Remove SetCount/ClearCount from Flags
Raphael Isemann [Mon, 16 Sep 2019 18:02:49 +0000 (18:02 +0000)]
[lldb] Remove SetCount/ClearCount from Flags

Summary:
These functions are only used in tests where we should test the actual flag values instead of counting all bits for an approximate check.
Also these popcount implementation aren't very efficient and doesn't seem to be optimised to anything fast.

Reviewers: davide, JDevlieghere

Reviewed By: davide, JDevlieghere

Subscribers: abidh, JDevlieghere, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D67540

llvm-svn: 372018

4 years ago[lldb][NFC] Make ApplyObjcCastHack less scary
Raphael Isemann [Mon, 16 Sep 2019 18:02:21 +0000 (18:02 +0000)]
[lldb][NFC] Make ApplyObjcCastHack less scary

llvm-svn: 372017

4 years agoImplement std::condition_variable via pthread_cond_clockwait() where available
Dan Albert [Mon, 16 Sep 2019 17:57:48 +0000 (17:57 +0000)]
Implement std::condition_variable via pthread_cond_clockwait() where available

std::condition_variable is currently implemented via
pthread_cond_timedwait() on systems that use pthread. This is
problematic, since that function waits by default on CLOCK_REALTIME
and libc++ does not provide any mechanism to change from this
default.

Due to this, regardless of if condition_variable::wait_until() is
called with a chrono::system_clock or chrono::steady_clock parameter,
condition_variable::wait_until() will wait using CLOCK_REALTIME. This
is not accurate to the C++ standard as calling
condition_variable::wait_until() with a chrono::steady_clock parameter
should use CLOCK_MONOTONIC.

This is particularly problematic because CLOCK_REALTIME is a bad
choice as it is subject to discontinuous time adjustments, that may
cause condition_variable::wait_until() to immediately timeout or wait
indefinitely.

This change fixes this issue with a new POSIX function,
pthread_cond_clockwait() proposed on
http://austingroupbugs.net/view.php?id=1216. The new function is
similar to pthread_cond_timedwait() with the addition of a clock
parameter that allows it to wait using either CLOCK_REALTIME or
CLOCK_MONOTONIC, thus allowing condition_variable::wait_until() to
wait using CLOCK_REALTIME for chrono::system_clock and CLOCK_MONOTONIC
for chrono::steady_clock.

pthread_cond_clockwait() is implemented in glibc (2.30 and later) and
Android's bionic (Android API version 30 and later).

This change additionally makes wait_for() and wait_until() with clocks
other than chrono::system_clock use CLOCK_MONOTONIC.<Paste>

llvm-svn: 372016

4 years ago[Clang][Codegen] Disable arm_acle.c test.
Roman Lebedev [Mon, 16 Sep 2019 17:46:08 +0000 (17:46 +0000)]
[Clang][Codegen] Disable arm_acle.c test.

This test is broken by design. Clang codegen tests should not depend
on llvm middle-end behaviour, they should *only* test clang codegen.
Yet this test runs whole optimization pipeline.
I've really tried to fix it, but there isn't just a few things
that depend on passes, but everything there does.

llvm-svn: 372015

4 years ago[Clang][Codegen] Relax available-externally-suppress.c test
Roman Lebedev [Mon, 16 Sep 2019 17:46:01 +0000 (17:46 +0000)]
[Clang][Codegen] Relax available-externally-suppress.c test

That test is broken by design.
It depends on llvm middle-end behavior.
No clang codegen test should be doing that.
This one is salvageable by relaxing check lines.

llvm-svn: 372014

4 years ago[X86][AVX] matchShuffleWithSHUFPD - add support for zeroable operands
Simon Pilgrim [Mon, 16 Sep 2019 17:30:33 +0000 (17:30 +0000)]
[X86][AVX] matchShuffleWithSHUFPD - add support for zeroable operands

Determine if all of the uses of LHS/RHS operands can be replaced with a zero vector.

llvm-svn: 372013

4 years ago[ARM] A predicate cast of a predicate cast is a predicate cast
David Green [Mon, 16 Sep 2019 17:29:07 +0000 (17:29 +0000)]
[ARM] A predicate cast of a predicate cast is a predicate cast

The adds some very basic folding of PREDICATE_CASTS, removing cases when they
are chained together. These would already be removed eventually, as these are
lowered to copies. This just allows it to happen earlier, which can help other
simplifications.

Differential Revision: https://reviews.llvm.org/D67591

llvm-svn: 372012

4 years ago[OPENMP]Fix parsing/sema for function templates with declare simd.
Alexey Bataev [Mon, 16 Sep 2019 17:06:31 +0000 (17:06 +0000)]
[OPENMP]Fix parsing/sema for function templates with declare simd.

Need to return original declaration group with FunctionTemplateDecl, not
the inner FunctionDecl, to correctly handle parsing of directives with
the templates parameters.

llvm-svn: 372011