platform/upstream/llvm.git
4 years agoFix analyzer TypeAttributeImpl::anchor() override.
Simon Pilgrim [Wed, 25 Sep 2019 14:23:25 +0000 (14:23 +0000)]
Fix analyzer TypeAttributeImpl::anchor() override.

TypeAttributeImpl inherits from EnumAttributeImpl which already defines anchor() as a virtual, so we should override this instead of redeclaring it.

llvm-svn: 372877

4 years ago[gn build] Fix Python DeprecationWarning
Marco Antognini [Wed, 25 Sep 2019 14:15:34 +0000 (14:15 +0000)]
[gn build] Fix Python DeprecationWarning

Summary:
This fixes two issues:
 - DeprecationWarning: invalid escape sequence \`
 - ResourceWarning: unclosed file

Subscribers: mgorny, llvm-commits

Tags: #llvm

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

llvm-svn: 372876

4 years ago[clangd] Fix parseNamespaceEvents to parse the last token
Kadir Cetinkaya [Wed, 25 Sep 2019 14:12:05 +0000 (14:12 +0000)]
[clangd] Fix parseNamespaceEvents to parse the last token

Reviewers: hokein, ilya-biryukov

Subscribers: MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

llvm-svn: 372875

4 years ago[Dominators][AMDGPU] Don't use virtual exit node in findNearestCommonDominator. Clean...
Jakub Kuderski [Wed, 25 Sep 2019 14:04:36 +0000 (14:04 +0000)]
[Dominators][AMDGPU] Don't use virtual exit node in findNearestCommonDominator. Cleanup MachinePostDominators.

Summary:
This patch fixes a bug that originated from passing a virtual exit block (nullptr) to `MachinePostDominatorTee::findNearestCommonDominator` and resulted in assertion failures inside its callee. It also applies a small cleanup to the class.

The patch introduces a new function in PDT that given a list of `MachineBasicBlock`s finds their NCD. The new overload of `findNearestCommonDominator` handles virtual root correctly.

Note that similar handling of virtual root nodes is not necessary in (forward) `DominatorTree`s, as right now they don't use virtual roots.

Reviewers: tstellar, tpr, nhaehnle, arsenm, NutshellySima, grosser, hliao

Reviewed By: hliao

Subscribers: hliao, kzhuravl, jvesely, wdng, yaxunl, dstuttard, t-tye, hiraditya, llvm-commits

Tags: #amdgpu, #llvm

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

llvm-svn: 372874

4 years ago[SystemZ] Improve emitSelect()
Jonas Paulsson [Wed, 25 Sep 2019 14:00:33 +0000 (14:00 +0000)]
[SystemZ]  Improve emitSelect()

Merge more Select pseudo instructions in emitSelect() by allowing other
instructions between them as long as they do not clobber CC.

Debug value instructions are now moved down to below the new PHIs instead of
erasing them.

Review: Ulrich Weigand
https://reviews.llvm.org/D67619

llvm-svn: 372873

4 years agoFix cppcheck variable shadow warning. NFCI.
Simon Pilgrim [Wed, 25 Sep 2019 13:45:36 +0000 (13:45 +0000)]
Fix cppcheck variable shadow warning. NFCI.

llvm-svn: 372872

4 years agoAdd missing ExplicitTy default initialization to ConstantExprKeyType constructors.
Simon Pilgrim [Wed, 25 Sep 2019 13:38:54 +0000 (13:38 +0000)]
Add missing ExplicitTy default initialization to ConstantExprKeyType constructors.

Fixes cppcheck uninitialized variable warnings

llvm-svn: 372871

4 years ago[libTooling] Introduce the MatchConsumer abstraction
Yitzhak Mandelbaum [Wed, 25 Sep 2019 13:34:04 +0000 (13:34 +0000)]
[libTooling] Introduce the MatchConsumer abstraction

Summary:
This revision introduces a separate (small) library for the `MatchConsumer`
abstraction: computations over AST match results.  This abstraction is central
to the Transformer framework, and there deserves being defined explicitly.

Reviewers: gribozavr

Subscribers: cfe-commits

Tags: #clang

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

llvm-svn: 372870

4 years ago[lldb][modern-type-lookup] Add two basic tests for modern-type-lookup
Raphael Isemann [Wed, 25 Sep 2019 13:33:50 +0000 (13:33 +0000)]
[lldb][modern-type-lookup] Add two basic tests for modern-type-lookup

The story so far: LLDB's modern type lookup mode has no (as in, 0%) test
coverage. It was supposed to be tested by hardcoding the default to 'true' and then running
the normal LLDB tests, but to my knowledge no one is doing that. As a around 130 tests
seem to fail with this mode enabled, we also can't just enable it globally for now.

As we touch the surrounding code all the time and also want to refactor parts of it, we
should be a bit more ambitious with our testing efforts.

So this patch adds two basic tests that enable this mode and do some
basic expression parsing which should hopefully be basic enough to not
break anywhere but still lets us know if this mode works at all (i.e. setting up the
ExternalASTMerger in LLDB, using its basic import functionality to move declarations
around and do some lookups).

llvm-svn: 372869

4 years agoRevert [IR] allow fast-math-flags on phi of FP values
Sanjay Patel [Wed, 25 Sep 2019 13:29:09 +0000 (13:29 +0000)]
Revert [IR] allow fast-math-flags on phi of FP values

This reverts r372866 (git commit dec03223a97af0e4dfcb23da55c0f7f8c9b62d00)

llvm-svn: 372868

4 years ago[llvm-readobj/llvm-readelf] - .stack_sizes: demangle symbol names in warnings reported.
George Rimar [Wed, 25 Sep 2019 13:16:43 +0000 (13:16 +0000)]
[llvm-readobj/llvm-readelf] - .stack_sizes: demangle symbol names in warnings reported.

I started this patch as a refactoring, tried to make a helper for
getting symbol names, similar to how we get section names
used in warning messages.

So this patch cleanups the code and fixes an issue: symbol names
in warning messages were not demangled.

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

llvm-svn: 372867

4 years ago[IR] allow fast-math-flags on phi of FP values
Sanjay Patel [Wed, 25 Sep 2019 13:14:12 +0000 (13:14 +0000)]
[IR] allow fast-math-flags on phi of FP values

The changes here are based on the corresponding diffs for allowing FMF on 'select':
D61917

As discussed there, we want to have fast-math-flags be a property of an FP value
because the alternative (having them on things like fcmp) leads to logical
inconsistency such as:
https://bugs.llvm.org/show_bug.cgi?id=38086

The earlier patch for select made almost no practical difference because most
unoptimized conditional code begins life as a phi (based on what I see in clang).
Similarly, I don't expect this patch to do much on its own either because
SimplifyCFG promptly drops the flags when converting to select on a minimal
example like:
https://bugs.llvm.org/show_bug.cgi?id=39535

But once we have this plumbing in place, we should be able to wire up the FMF
propagation and start solving cases like that.

The change to RecurrenceDescriptor::AddReductionVar() is required to prevent a
regression in a LoopVectorize test. We are intersecting the FMF of any
FPMathOperator there, so if a phi is not properly annotated, new math
instructions may not be either. Once we fix the propagation in SimplifyCFG, it
may be safe to remove that hack.

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

llvm-svn: 372866

4 years ago[docs][llvm-strings] Clarify "printable character" wording
James Henderson [Wed, 25 Sep 2019 13:09:17 +0000 (13:09 +0000)]
[docs][llvm-strings] Clarify "printable character" wording

The --bytes option uses the phrase "printable ASCII characters", but the
description section used simply "printable characters". To avoid any
confusion about locale impacts etc, this change adopts the former's
phrasing in both places. It also fixes a minor grammar issue in the
description.

Reviewed by: MaskRay

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

llvm-svn: 372865

4 years ago[docs][llvm-strip] Update llvm-strip doc to better match llvm-objcopy's
James Henderson [Wed, 25 Sep 2019 13:09:12 +0000 (13:09 +0000)]
[docs][llvm-strip] Update llvm-strip doc to better match llvm-objcopy's

Main changes are mostly wording of some options, but this change also
fixes a switch reference so that a link is created and moves
--strip-sections into the ELF-specific area since it is only supported
for ELF currently.

llvm-svn: 372864

4 years ago[AST] Extract Decl::printNestedNameSpecifier helper from Decl::printQualifiedName
Ilya Biryukov [Wed, 25 Sep 2019 13:09:10 +0000 (13:09 +0000)]
[AST] Extract Decl::printNestedNameSpecifier helper from Decl::printQualifiedName

Summary:
To be used in clangd, e.g. in D66647.
Currently the alternative to this function is doing string manipulation on results of `printQualifiedName`, which is
hard-to-impossible to get right in presence of template arguments.

Reviewers: kadircet, aaron.ballman

Reviewed By: kadircet, aaron.ballman

Subscribers: aaron.ballman, usaxena95, cfe-commits

Tags: #clang

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

llvm-svn: 372863

4 years agoHave ABI plugins vend llvm MCRegisterInfo data
Pavel Labath [Wed, 25 Sep 2019 13:03:04 +0000 (13:03 +0000)]
Have ABI plugins vend llvm MCRegisterInfo data

Summary:
I was recently surprised to learn that there is a total of 2 (two) users
of the register info definitions contained in the ABI plugins. Yet, the
defitions themselves span nearly 10kLOC.
The two users are:
 - dwarf expression pretty printer
 - the mechanism for augmenting the register info definitions obtained
   over gdb-remote protocol (AugmentRegisterInfoViaABI)

Both of these uses need the DWARF an EH register numbers, which is
information that is already available in LLVM. This patch makes it
possible to do so.

It adds a GetMCRegisterInfo method to the ABI class, which every class
is expected to implement. Normally, it should be sufficient to obtain
the definitions from the appropriate llvm::Target object (for which I
provide a utility function), but the subclasses are free to construct it
in any way they deem fit.

We should be able to always get the MCRegisterInfo object from llvm,
with one important exception: if the relevant llvm target was disabled
at compile time. To handle this, I add a mechanism to disable the
compilation of ABI plugins based on the value of LLVM_TARGETS_TO_BUILD
cmake setting. This ensures all our existing are able to create their
MCRegisterInfo objects.

The new MCRegisterInfo api is not used yet, but the intention is to make
use of it in follow-up patches.

Reviewers: jasonmolenda, aprantl, JDevlieghere, tatyana-krasnukha

Subscribers: wuzish, nemanjai, mgorny, kbarton, atanasyan, lldb-commits

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

llvm-svn: 372862

4 years ago[lldb][NFC] Remove CompletionRequest::GetCursorArgument and GetRawLineUntilCursor
Raphael Isemann [Wed, 25 Sep 2019 12:55:30 +0000 (12:55 +0000)]
[lldb][NFC] Remove CompletionRequest::GetCursorArgument and GetRawLineUntilCursor

They both return the same result as another function (GetCursorArgumentPrefix
and GetRawLine). They were only added because the old API allowed to look
(in theory) behind the cursor position which is no longer possible.

llvm-svn: 372861

4 years ago[clangd] Add missing header guard, NFC.
Haojian Wu [Wed, 25 Sep 2019 12:54:53 +0000 (12:54 +0000)]
[clangd] Add missing header guard, NFC.

llvm-svn: 372860

4 years ago[clangd] A helper to find explicit references and their names
Ilya Biryukov [Wed, 25 Sep 2019 12:40:22 +0000 (12:40 +0000)]
[clangd] A helper to find explicit references and their names

Summary:
Allows to simplify pending code tweaks:
  - the upcoming DefineInline tweak (D66647)
  - remove using declaration (D56612)
  - qualify name under cursor (D56610)

Another potential future application is simplifying semantic highlighting.

Reviewers: kadircet

Reviewed By: kadircet

Subscribers: mgrang, jfb, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

llvm-svn: 372859

4 years ago[lldb][NFC] Add CompletionRequest::AppendEmptyArgument
Raphael Isemann [Wed, 25 Sep 2019 12:40:01 +0000 (12:40 +0000)]
[lldb][NFC] Add CompletionRequest::AppendEmptyArgument

This is the only legitimate use we currently have for modifying
a CompletionRequest. Add a utility function for this purpose
and remove the remaining setters which go against the idea of
having an immutable CompletionRequest.

llvm-svn: 372858

4 years ago[AMDGPU][MC][DOC] Updated AMD GPU assembler description.
Dmitry Preobrazhensky [Wed, 25 Sep 2019 12:38:35 +0000 (12:38 +0000)]
[AMDGPU][MC][DOC] Updated AMD GPU assembler description.

Summary of changes:
- Updated to reflect recent changes in assembler;
- Minor bugfixing and improvements.

llvm-svn: 372857

4 years ago[DAG] Pull out minimum shift value calc into a helper function. NFCI.
Simon Pilgrim [Wed, 25 Sep 2019 12:28:56 +0000 (12:28 +0000)]
[DAG] Pull out minimum shift value calc into a helper function. NFCI.

llvm-svn: 372856

4 years ago[llvm-readobj] - Simplify stack-sizes.test test case.
George Rimar [Wed, 25 Sep 2019 12:18:45 +0000 (12:18 +0000)]
[llvm-readobj] - Simplify stack-sizes.test test case.

This is a follow-up for D67757,
which allows to describe .stack_sizes sections with a new
YAML syntax.

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

llvm-svn: 372855

4 years ago[yaml2elf] - Support describing .stack_sizes sections using unique suffixes.
George Rimar [Wed, 25 Sep 2019 12:09:30 +0000 (12:09 +0000)]
[yaml2elf] - Support describing .stack_sizes sections using unique suffixes.

Currently we can't use unique suffixes in section names to describe
stack sizes sections. E.g. '.stack_sizes [1]' will be treated as a regular section.
This happens because we recognize stack sizes section by name and
do not yet drop the suffix before the check.

The patch fixes it.

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

llvm-svn: 372853

4 years ago[LLD] Fix testcase from SVN r372843 if executed on windows
Martin Storsjo [Wed, 25 Sep 2019 12:07:50 +0000 (12:07 +0000)]
[LLD] Fix testcase from SVN r372843 if executed on windows

This should fix buildbot errors like this one:
http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/10997

llvm-svn: 372852

4 years ago[lldb][NFC] Remove useless cursor shifting in Options::HandleOptionCompletion
Raphael Isemann [Wed, 25 Sep 2019 12:04:48 +0000 (12:04 +0000)]
[lldb][NFC] Remove useless cursor shifting in Options::HandleOptionCompletion

The cursor position is always at the end of the current argument (as the
argument cut off after the cursor position). So this code is a no-op and
can be removed.

llvm-svn: 372851

4 years agogn build: (manually) merge r372843
Nico Weber [Wed, 25 Sep 2019 12:02:00 +0000 (12:02 +0000)]
gn build: (manually) merge r372843

llvm-svn: 372850

4 years agobuiltins test: Move clear_cache_test.c from a mprotect()ed global to a mmap()ed variable
Nico Weber [Wed, 25 Sep 2019 11:57:51 +0000 (11:57 +0000)]
builtins test: Move clear_cache_test.c from a mprotect()ed global to a mmap()ed variable

ld64 in the macOS 10.15 SDK gives __DATA a maxprot of 3, meaning it
can't be made executable at runtime by default.

Change clear_cache_test.c to use mmap()ed data that's mapped as writable
and executable from the beginning, instead of trying to mprotect()ing a
__DATA variable as executable. This fixes the test on macOS with the
10.15 SDK.

PR43407.

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

llvm-svn: 372849

4 years agoRevert r372788 "Host: use the platform identifiers from LLVM (NFC)"
Hans Wennborg [Wed, 25 Sep 2019 11:55:16 +0000 (11:55 +0000)]
Revert r372788 "Host: use the platform identifiers from LLVM (NFC)"

> Use symbolic constants for the platform identifiers rather than replicating them
> locally.

This broke the build of LLDB on Windows, see
http://lab.llvm.org:8011/builders/lldb-x64-windows-ninja/builds/9182 which
fails with e.g.

  E:\build_slave\lldb-x64-windows-ninja\llvm\include\llvm/BinaryFormat/COFF.h(96): error C2059: syntax error: 'constant'
  E:\build_slave\lldb-x64-windows-ninja\llvm\include\llvm/BinaryFormat/COFF.h(96): error C3805: 'constant': unexpected token, expected either '}' or a ','
  E:\build_slave\lldb-x64-windows-ninja\llvm\include\llvm/BinaryFormat/COFF.h(128): error C2059: syntax error: 'constant'
  ...

llvm-svn: 372847

4 years agoAdd a release note for r372844
Hans Wennborg [Wed, 25 Sep 2019 11:53:17 +0000 (11:53 +0000)]
Add a release note for r372844

llvm-svn: 372846

4 years ago[yaml2obj] - Add a Size field for StackSizesSection.
George Rimar [Wed, 25 Sep 2019 11:40:11 +0000 (11:40 +0000)]
[yaml2obj] - Add a Size field for StackSizesSection.

It is a follow-up requested in the review comment
for D67757. Allows to use Content + Size or just Size
when describing .stack_sizes sections in YAML document

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

llvm-svn: 372845

4 years agoRevert r370850 "Re-commit r363191 "[MS] Pretend constexpr variable template specializ...
Hans Wennborg [Wed, 25 Sep 2019 11:09:46 +0000 (11:09 +0000)]
Revert r370850 "Re-commit r363191 "[MS] Pretend constexpr variable template specializations are inline""

This work-around was necessary to handle standard library headers in
Visual Studio 2019 16.2. Now that 16.3 has shipped to stable, we can
remove it.

> Re-commit r363191 "[MS] Pretend constexpr variable template specializations are inline"
>
> While the next Visual Studio update (16.3) will fix this issue, that hasn't
> shipped yet. Until then Clang wouldn't work with MSVC's headers which seems
> unfortunate. Let's keep this in until VS 16.3 ships. (See also PR42843.)
>
>> Fixes link errors with clang and the latest Visual C++ 14.21.27702
>> headers, which was reported as PR42027.
>>
>> I chose to intentionally make these things linkonce_odr, i.e.
>> discardable, so that we don't emit definitions of these things in every
>> translation unit that includes STL headers.
>>
>> Note that this is *not* what MSVC does: MSVC has not yet implemented C++
>> DR2387, so they emit fully specialized constexpr variable templates with
>> static / internal linkage.
>>
>> Reviewers: rsmith
>>
>> Differential Revision: https://reviews.llvm.org/D63175

llvm-svn: 372844

4 years ago[LLD] [COFF] Resolve source locations for undefined references using dwarf
Martin Storsjo [Wed, 25 Sep 2019 11:03:48 +0000 (11:03 +0000)]
[LLD] [COFF] Resolve source locations for undefined references using dwarf

This fixes PR42407.

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

llvm-svn: 372843

4 years agogn build: Merge r372841
GN Sync Bot [Wed, 25 Sep 2019 10:35:03 +0000 (10:35 +0000)]
gn build: Merge r372841

llvm-svn: 372842

4 years ago[clangd] Move the existing heder-source-switch implemenation out of clangdServer.
Haojian Wu [Wed, 25 Sep 2019 10:30:22 +0000 (10:30 +0000)]
[clangd] Move the existing heder-source-switch implemenation out of clangdServer.

Summary: This is a NFC change.

Reviewers: kadircet

Reviewed By: kadircet

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

llvm-svn: 372841

4 years ago[lldb] [test] Add NetBSD to XFAIL list for thread_local test
Michal Gorny [Wed, 25 Sep 2019 10:18:38 +0000 (10:18 +0000)]
[lldb] [test] Add NetBSD to XFAIL list for thread_local test

llvm-svn: 372840

4 years ago[ARM] Ensure we do not attempt to create lsll #0
David Green [Wed, 25 Sep 2019 10:16:48 +0000 (10:16 +0000)]
[ARM] Ensure we do not attempt to create lsll #0

During legalisation we can end up with some pretty strange nodes, like shifts
of 0. We need to make sure we don't try to make long shifts of these, ending up
with invalid assembly instructions. A long shift with a zero immediate actually
encodes a shift by 32.

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

llvm-svn: 372839

4 years ago[llvm-readobj] - Don't crash when dumping .stack_sizes and unable to find a relocatio...
George Rimar [Wed, 25 Sep 2019 10:14:50 +0000 (10:14 +0000)]
[llvm-readobj] - Don't crash when dumping .stack_sizes and unable to find a relocation resolver.

The crash might happen when we have either a broken or unsupported object
and trying to resolve relocations when dumping the .stack_sizes section.

For the test case I used a 32-bits ELF header and a 64-bit relocation.
In this case a null pointer is returned by the code instead of the relocation
resolver function and then we crash.

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

llvm-svn: 372838

4 years ago[lldb] Test data formatters for empty strings
Raphael Isemann [Wed, 25 Sep 2019 10:07:23 +0000 (10:07 +0000)]
[lldb] Test data formatters for empty strings

llvm-svn: 372837

4 years ago[lldb][NFC] Refactor and document *DumpToStreamOptions
Raphael Isemann [Wed, 25 Sep 2019 09:56:23 +0000 (09:56 +0000)]
[lldb][NFC] Refactor and document *DumpToStreamOptions

Those two classes were mostly copy-pasted.

llvm-svn: 372836

4 years ago[lldb] [cmake] Fix installing Python modules on systems using /usr/lib
Michal Gorny [Wed, 25 Sep 2019 09:47:35 +0000 (09:47 +0000)]
[lldb] [cmake] Fix installing Python modules on systems using /usr/lib

Fix installing Python modules on systems that use /usr/lib for Python
while installing other libraries in /usr/lib64.  Rewrite CMake logic
to query correct directories from Python, similarly to how
prepare_binding_Python.py does it.  Furthermore, change the regex used
in get_relative_lib_dir.py to allow 'lib' without suffix.

I think that the code can be further improved but I'd like to take
this enterprise in smaller steps in case one of them breaks something.

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

llvm-svn: 372835

4 years ago[lldb][NFC] Remove unused method chaining from Read[Buffer/String]AndDumpToStreamOptions
Raphael Isemann [Wed, 25 Sep 2019 09:21:00 +0000 (09:21 +0000)]
[lldb][NFC] Remove unused method chaining from Read[Buffer/String]AndDumpToStreamOptions

All this code isn't used anywhere and method chaining isn't really useful for some
option struct.

llvm-svn: 372834

4 years ago[OpenCL] Add image query builtin functions
Sven van Haastregt [Wed, 25 Sep 2019 09:12:59 +0000 (09:12 +0000)]
[OpenCL] Add image query builtin functions

Add the image query builtin functions from the OpenCL C specification.

Patch by Pierre Gondois and Sven van Haastregt.

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

llvm-svn: 372833

4 years agoRevert r372777: [libc++] Implement LWG 2510 and its follow-ups
Ilya Biryukov [Wed, 25 Sep 2019 09:10:38 +0000 (09:10 +0000)]
Revert r372777: [libc++] Implement LWG 2510 and its follow-ups

This also reverts:
 - r372778: [libc++] Implement LWG 3158
 - r372782: [libc++] Try fixing tests that fail on GCC 5 and older
 - r372787: Purge mentions of GCC 4 from the test suite

Reason: the change breaks compilation of LLVM with libc++, for details see
http://lists.llvm.org/pipermail/libcxx-dev/2019-September/000599.html

llvm-svn: 372832

4 years ago[lldb][NFC] Use default member initializers in ReadBufferAndDumpToStreamOptions
Raphael Isemann [Wed, 25 Sep 2019 08:55:55 +0000 (08:55 +0000)]
[lldb][NFC] Use default member initializers in ReadBufferAndDumpToStreamOptions

llvm-svn: 372830

4 years agoAdd tracing in pickNodeFromQueue.
Jay Foad [Wed, 25 Sep 2019 08:45:41 +0000 (08:45 +0000)]
Add tracing in pickNodeFromQueue.

This matches GenericScheduler::pickNodeFromQueue, from which this
function was mostly cut and pasted.

llvm-svn: 372829

4 years agoFix signature of overloaded operator delete.
Jay Foad [Wed, 25 Sep 2019 08:45:36 +0000 (08:45 +0000)]
Fix signature of overloaded operator delete.

This overload was left over from an operator new that was removed in
r123027. Fix it to match another operator new that was added in r248453.

llvm-svn: 372828

4 years ago[lldb] Remove -nostdlib++ flag from import-std-module/sysroot test
Raphael Isemann [Wed, 25 Sep 2019 08:32:25 +0000 (08:32 +0000)]
[lldb] Remove -nostdlib++ flag from import-std-module/sysroot test

That flag was introduced in Clang 6.0, so this made the test fail
with Clang <= 5.0. As it only influences linking builtin libraries
like -m which aren't relevant for this test, we can drop this flag.

llvm-svn: 372827

4 years ago[clangd] Fix the stale documentation about background indexing.
Haojian Wu [Wed, 25 Sep 2019 08:26:32 +0000 (08:26 +0000)]
[clangd] Fix the stale documentation about background indexing.

Reviewers: kadircet

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, cfe-commits

Tags: #clang

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

llvm-svn: 372825

4 years ago[AArch64] Convert neon_ushl and neon_sshl with positive constants to VSHL.
Florian Hahn [Wed, 25 Sep 2019 08:22:05 +0000 (08:22 +0000)]
[AArch64] Convert neon_ushl and neon_sshl with positive constants to VSHL.

I think we should be able to use shl instead of sshl and ushl for
positive constant shift values, unless I am missing something.

We already have the machinery in place to ensure we only replace
nodes, if the shift value is positive and <= the element width.

This is a generalization of an earlier patch rL372565.

Reviewers: t.p.northover, samparker, dmgreen, anemet

Reviewed By: anemet

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

llvm-svn: 372824

4 years ago[lldb] Fix undefined behavior when having fixits in undefined top level exprs
Raphael Isemann [Wed, 25 Sep 2019 07:34:56 +0000 (07:34 +0000)]
[lldb] Fix undefined behavior when having fixits in undefined top level exprs

In top level expressions, we don't have a m_source_code and we don't need to change
the source bounds (as no wrapping happend there). Fixes the test on the
sanitizer bot.

llvm-svn: 372817

4 years ago[lldb][NFC] Refactor TestCallBuiltinFunction
Raphael Isemann [Wed, 25 Sep 2019 07:11:37 +0000 (07:11 +0000)]
[lldb][NFC] Refactor TestCallBuiltinFunction

Using asserts doesn't print a useful error message in case this test fails.

llvm-svn: 372815

4 years ago[Driver] Always use -z separate-loadable-segments with lld on Fuchsia
Fangrui Song [Wed, 25 Sep 2019 07:06:50 +0000 (07:06 +0000)]
[Driver] Always use -z separate-loadable-segments with lld on Fuchsia

The option was added to lld in D67481/372807.

Reviewed By: phosek

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

llvm-svn: 372814

4 years ago[ADT] Add StringMap::insert_or_assign
Fangrui Song [Wed, 25 Sep 2019 04:58:02 +0000 (04:58 +0000)]
[ADT] Add StringMap::insert_or_assign

Summary: Similar to std::unordered_map::insert_or_assign

Reviewers: alexshap, bkramer, dblaikie, lhames

Subscribers: jkorous, dexonsmith, kristina, llvm-commits

Tags: #llvm

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

llvm-svn: 372813

4 years ago[AArch64][GlobalISel] Tweak legalization rule for G_BSWAP to handle widening s16.
Amara Emerson [Wed, 25 Sep 2019 04:52:42 +0000 (04:52 +0000)]
[AArch64][GlobalISel] Tweak legalization rule for G_BSWAP to handle widening s16.

llvm-svn: 372812

4 years ago[NFC] Add { } to silence compiler warning [-Wmissing-braces].
Huihui Zhang [Wed, 25 Sep 2019 04:40:07 +0000 (04:40 +0000)]
[NFC] Add { } to silence compiler warning [-Wmissing-braces].

/local/mnt/workspace/huihuiz/llvm-comm-git-2/llvm-project/llvm/lib/Object/MachOObjectFile.cpp:2731:7: warning: suggest braces around initialization of subobject [-Wmissing-braces]
      "i386",   "x86_64", "x86_64h",  "armv4t",  "arm",    "armv5e",
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      {
1 warning generated.

/local/mnt/workspace/huihuiz/llvm-comm-git-2/llvm-project/llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp:355:46: warning: suggest braces around initialization of subobject [-Wmissing-braces]
    return addMappingFromTable<1>(MI, MRI, { 0 }, Table);
                                             ^
                                             {}
1 warning generated.

/local/mnt/workspace/huihuiz/llvm-comm-git-2/llvm-project/llvm/tools/llvm-objcopy/ELF/Object.cpp:400:57: warning: suggest braces around initialization of subobject [-Wmissing-braces]
static constexpr std::array<uint8_t, 4> ZlibGnuMagic = {'Z', 'L', 'I', 'B'};
                                                        ^~~~~~~~~~~~~~~~~~
                                                        {                 }
1 warning generated.

llvm-svn: 372811

4 years ago[llvm-objcopy][test] Clean up -B tests
Fangrui Song [Wed, 25 Sep 2019 03:41:01 +0000 (03:41 +0000)]
[llvm-objcopy][test] Clean up -B tests

-B is ignored for GNU objcopy compatibility after D67215/r371914.

* Delete mentions of -B from input-output-target.test - we have enough -B tests.
* Merge binary-input-with-arch.test into binary-output-target.test.

Reviewed By: rupprecht

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

llvm-svn: 372809

4 years ago[ELF] Add -z separate-loadable-segments to complement separate-code and noseparate...
Fangrui Song [Wed, 25 Sep 2019 03:39:31 +0000 (03:39 +0000)]
[ELF] Add -z separate-loadable-segments to complement separate-code and noseparate-code

D64906 allows PT_LOAD to have overlapping p_offset ranges. In the
default R RX RW RW layout + -z noseparate-code case, we do not tail pad
segments when transiting to another segment. This can save at most
3*maxPageSize bytes.

a) Before D64906, we tail pad R, RX and the first RW.
b) With -z separate-code, we tail pad R and RX, but not the first RW (RELRO).

In some cases, b) saves one file page. In some cases, b) wastes one
virtual memory page. The waste is a concern on Fuchsia. Because it uses
compressed binaries, it doesn't benefit from the saved file page.

This patch adds -z separate-loadable-segments to restore the behavior before
D64906. It can affect section addresses and can thus be used as a
debugging mechanism (see PR43214 and ld.so partition bug in
crbug.com/998712).

Reviewed By: jakehehrlich, ruiu

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

llvm-svn: 372807

4 years ago[Powerpc][LoopPreIncPrep] NFC - refactor this pass for ds/dq form.
Chen Zheng [Wed, 25 Sep 2019 03:02:19 +0000 (03:02 +0000)]
[Powerpc][LoopPreIncPrep] NFC - refactor this pass for ds/dq form.

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

llvm-svn: 372803

4 years ago [x86] Adding support for some missing intrinsics: _castf32_u32, _castf64_u64, _castu...
Pengfei Wang [Wed, 25 Sep 2019 02:24:05 +0000 (02:24 +0000)]
 [x86] Adding support for some missing intrinsics: _castf32_u32, _castf64_u64, _castu32_f32, _castu64_f64

Summary:
Adding support for some missing intrinsics:
_castf32_u32, _castf64_u64, _castu32_f32, _castu64_f64

Reviewers: craig.topper, LuoYuanke, RKSimon, pengfei

Reviewed By: RKSimon

Subscribers: llvm-commits

Patch by yubing (Bing Yu)

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

llvm-svn: 372802

4 years ago[Make] Revert some changes from r372795.
Jonas Devlieghere [Wed, 25 Sep 2019 01:39:13 +0000 (01:39 +0000)]
[Make] Revert some changes from r372795.

These changes cause the corresponding test to fail on the Linux bots.

llvm-svn: 372801

4 years agoremove unused method ResetOutputFileHandle()
Jonas Devlieghere [Wed, 25 Sep 2019 01:29:41 +0000 (01:29 +0000)]
remove unused method ResetOutputFileHandle()

ResetOutputFileHandle() isn't being used by anything. Also it's using
FILE*, which is something we should be doing less of. Remove it.

Patch by: Lawrence D'Anna

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

llvm-svn: 372800

4 years ago[CMake] Don't modify LLVM_DISTRIBUTION_COMPONENTS if it's not set
Jonas Devlieghere [Wed, 25 Sep 2019 01:23:05 +0000 (01:23 +0000)]
[CMake] Don't modify LLVM_DISTRIBUTION_COMPONENTS if it's not set

Don't try to remove debugserver from LLVM_DISTRIBUTION_COMPONENTS if the
list is not set.

llvm-svn: 372799

4 years ago[ELF] accept thinlto options without --plugin-opt= prefix
Bob Haarman [Wed, 25 Sep 2019 01:19:48 +0000 (01:19 +0000)]
[ELF] accept thinlto options without --plugin-opt= prefix

Summary:
When support for ThinLTO was first added to lld, the options that
control it were prefixed with --plugin-opt= for compatibility with
an existing implementation as a linker plugin. This change enables
shorter versions of the options to be used, as follows:

  New                              Existing
  -thinlto-emit-imports-files      --plugin-opt=thinlto-emit-imports-files
  -thinlto-index-only              --plugin-opt=thinlto-index-only
  -thinlto-index-only=             --plugin-opt=thinlto-index-only=
  -thinlto-object-suffix-replace=  --plugin-opt=thinlto-object-suffix-replace=
  -thinlto-prefix-replace=         --plugin-opt=thinlto-prefix-replace=
  -lto-obj-path=                   --plugin-opt=obj-path=

The options with the --plugin-opt= prefix have been retained as aliases
for the shorter variants so that they continue to be accepted.

Reviewers: tejohnson, ruiu, espindola

Reviewed By: ruiu

Subscribers: emaste, arichardson, MaskRay, steven_wu, dexonsmith, arphaman, llvm-commits

Tags: #llvm

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

llvm-svn: 372798

4 years ago[Documentation] Expand on testing variants.
Jonas Devlieghere [Wed, 25 Sep 2019 00:58:39 +0000 (00:58 +0000)]
[Documentation] Expand on testing variants.

The testing documentation appears to be from an era when the only kind
of tests were the lldbsuite python tests. This patch adds a short
description of the unittests and LIT tests and how to run them.

Patch by: Lawrence D'Anna

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

llvm-svn: 372797

4 years ago[Docs] Moves Reference docs to new page
DeForest Richards [Wed, 25 Sep 2019 00:49:02 +0000 (00:49 +0000)]
[Docs] Moves Reference docs to new page

Moves Reference docs to new page. Also adds a table of contents to Getting Involved page.

llvm-svn: 372796

4 years agoCanonicalize variable usage in testsuite Makefiles
Adrian Prantl [Wed, 25 Sep 2019 00:36:00 +0000 (00:36 +0000)]
Canonicalize variable usage in testsuite Makefiles

This test streamlines our use of variables that are expected by
Makefile.rules throughout the test suite. Mostly it replaced
potentially dangerous overrides and updates of variables like CFLAGS
with safe assignments to variables reserved for this purpose like
CFLAGS_EXTRAS.

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

llvm-svn: 372795

4 years ago[CMake] Don't try to install the system debugserver.
Jonas Devlieghere [Wed, 25 Sep 2019 00:21:31 +0000 (00:21 +0000)]
[CMake] Don't try to install the system debugserver.

The custom target for the system debugserver has no install target, so
we need to remove it from the LLVM_DISTRIBUTION_COMPONENTS list.

llvm-svn: 372793

4 years ago[WebAssembly][NFC] Remove duplicate SIMD instructions and predicates
Thomas Lively [Wed, 25 Sep 2019 00:15:59 +0000 (00:15 +0000)]
[WebAssembly][NFC] Remove duplicate SIMD instructions and predicates

Summary:
Instead of having different v128.load and v128.store instructions for
each MVT, just have one of each that is reused in all the
patterns. Also removes the HasSIMD128 predicate where accompanied by
HasUnimplementedSIMD128, since the latter implies the former.

Reviewers: aheejin, dschuff

Subscribers: sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits

Tags: #llvm

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

llvm-svn: 372792

4 years agoUse double quotes for LDFLAGS in -DLLVM_BUILD_INSTRUMENTED_COVERAGE
Justin Bogner [Tue, 24 Sep 2019 23:56:22 +0000 (23:56 +0000)]
Use double quotes for LDFLAGS in -DLLVM_BUILD_INSTRUMENTED_COVERAGE

Mimics the changes in r372209 to handle the change of quotes in
r372226. Probably isn't sufficient for windows, but unbreaks the cmake
flag at least.

llvm-svn: 372791

4 years ago[NFC] Invoke lipo from CMAKE_LIPO.
Puyan Lotfi [Tue, 24 Sep 2019 23:48:42 +0000 (23:48 +0000)]
[NFC] Invoke lipo from CMAKE_LIPO.

This shouldn't change anything, except that a cmake cache file that specifies
CMAKE_LIPO can specify an alternate lipo to use.

llvm-svn: 372790

4 years ago[SCEV] Disable canonical expansion for non-affine addrecs.
Artur Pilipenko [Tue, 24 Sep 2019 23:21:07 +0000 (23:21 +0000)]
[SCEV] Disable canonical expansion for non-affine addrecs.

Reviewed By: apilipenko

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

Patch by Evgeniy Brevnov (ybrevnov@azul.com)

llvm-svn: 372789

4 years agoHost: use the platform identifiers from LLVM (NFC)
Saleem Abdulrasool [Tue, 24 Sep 2019 22:55:44 +0000 (22:55 +0000)]
Host: use the platform identifiers from LLVM (NFC)

Use symbolic constants for the platform identifiers rather than replicating them
locally.

llvm-svn: 372788

4 years ago[libc++] Purge mentions of GCC 4 from the test suite
Louis Dionne [Tue, 24 Sep 2019 22:42:36 +0000 (22:42 +0000)]
[libc++] Purge mentions of GCC 4 from the test suite

We don't support GCC 4 and older according to the documentation, so
we should pretend it doesn't exist.

llvm-svn: 372787

4 years ago[CMake] Copy over the system debugserver when using LLDB_USE_SYSTEM_DEBUGSERVER
Jonas Devlieghere [Tue, 24 Sep 2019 22:39:04 +0000 (22:39 +0000)]
[CMake] Copy over the system debugserver when using LLDB_USE_SYSTEM_DEBUGSERVER

r366433 broke support for the system debugserver. Although the change
was well-intended, it (presumably) unintentionally removed the logic to
copy over the debugserver. As a result, even with
LLDB_USE_SYSTEM_DEBUGSERVER enabled, we ended up building, signing and
using the just-built debugserver.

This patch partially recovers the old behavior: when
LLDB_USE_SYSTEM_DEBUGSERVER is set we don't build debugserver and just
copy over the system one.

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

llvm-svn: 372786

4 years ago[BPF] Generate array dimension size properly for zero-size elements
Yonghong Song [Tue, 24 Sep 2019 22:38:43 +0000 (22:38 +0000)]
[BPF] Generate array dimension size properly for zero-size elements

Currently, if an array element type size is 0, the number of
array elements will be set to 0, regardless of what user
specified. This implementation is done in the beginning where
BTF is mostly used to calculate the member offset.

For example,
  struct s {};
  struct s1 {
        int b;
        struct s a[2];
  };
  struct s1 s1;
The BTF will have struct "s1" member "a" with element count 0.

Now BTF types are used for compile-once and run-everywhere
relocations and we need more precise type representation
for type comparison. Andrii reported the issue as there
are differences between original structure and BTF-generated
structure.

This patch made the change to correctly assign "2"
as the number elements of member "a".
Some dead codes related to ElemSize compuation are also removed.

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

llvm-svn: 372785

4 years agoAdding support for overriding LLVM_ENABLE_RUNTIMES for runtimes builds.
Puyan Lotfi [Tue, 24 Sep 2019 22:38:18 +0000 (22:38 +0000)]
Adding support for overriding LLVM_ENABLE_RUNTIMES for runtimes builds.

Second attempt: Now with ';' -> '|' replacement.

On some platforms, certain runtimes are not supported. For runtimes builds of
those platforms it would be nice if we could disable certain runtimes (ie
libunwind on Windows).

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

llvm-svn: 372784

4 years ago[PGO][PGSO] ProfileSummary changes.
Hiroshi Yamauchi [Tue, 24 Sep 2019 22:17:51 +0000 (22:17 +0000)]
[PGO][PGSO] ProfileSummary changes.

(Split of off D67120)

ProfileSummary changes for profile guided size optimization.

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

llvm-svn: 372783

4 years ago[libc++] Try fixing tests that fail on GCC 5 and older
Louis Dionne [Tue, 24 Sep 2019 22:13:17 +0000 (22:13 +0000)]
[libc++] Try fixing tests that fail on GCC 5 and older

llvm-svn: 372782

4 years ago[ELF][ARM] Fix crash when discarding InputSections that have .ARM.exidx
Peter Smith [Tue, 24 Sep 2019 21:44:14 +0000 (21:44 +0000)]
[ELF][ARM] Fix crash when discarding InputSections that have .ARM.exidx

When /DISCARD/ is used on an input section, that input section may have
a .ARM.exidx metadata section that depends on it. As the discard handling
comes after the .ARM.exidx synthetic section is created we need to make
sure that we account for the case where the .ARM.exidx output section
should be removed because there are no more live input sections.

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

llvm-svn: 372781

4 years ago [libc++] Remove C++03 variadics in shared_ptr
Zoe Carver [Tue, 24 Sep 2019 20:55:54 +0000 (20:55 +0000)]
[libc++] Remove C++03 variadics in shared_ptr

    Summary: As suggested by @ldionne in D66178, this patch removes C++03 variadics //only//. Following patches will apply more updates.

    Reviewers: ldionne, EricWF, mclow.lists

    Subscribers: christof, dexonsmith, libcxx-commits, ldionne

    Tags: #libc

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

llvm-svn: 372780

4 years ago[lld][WebAssembly] Fix static linking of -fPIC code with external undefined functions
Sam Clegg [Tue, 24 Sep 2019 20:52:12 +0000 (20:52 +0000)]
[lld][WebAssembly] Fix static linking of -fPIC code with external undefined functions

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

llvm-svn: 372779

4 years ago[libc++] Implement LWG 3158
Louis Dionne [Tue, 24 Sep 2019 20:22:34 +0000 (20:22 +0000)]
[libc++] Implement LWG 3158

Summary:
LWG 3158 marks the allocator_arg_t constructor of std::tuple as
conditionnally explicit based on whether the default constructors
of the tuple's members are explicitly default constructible.

Reviewers: EricWF, mclow.lists

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

Tags: #libc

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

llvm-svn: 372778

4 years ago[libc++] Implement LWG 2510
Louis Dionne [Tue, 24 Sep 2019 20:18:54 +0000 (20:18 +0000)]
[libc++] Implement LWG 2510

Summary:
LWG2510 makes tag types like allocator_arg_t explicitly default
constructible instead of implicitly default constructible. It also
makes the constructors for std::pair and std::tuple conditionally
explicit based on the explicit-ness of the default constructibility
for the pair/tuple's elements.

Reviewers: mclow.lists, EricWF

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

Tags: #libc

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

llvm-svn: 372777

4 years ago[NFC][COFF] fix typo in comment ("algortihm" -> "algorithm")
Bob Haarman [Tue, 24 Sep 2019 20:17:54 +0000 (20:17 +0000)]
[NFC][COFF] fix typo in comment ("algortihm" -> "algorithm")

llvm-svn: 372776

4 years ago[NFC] Strenghten preconditions for warning
David Bolvansky [Tue, 24 Sep 2019 20:10:57 +0000 (20:10 +0000)]
[NFC] Strenghten preconditions for warning

llvm-svn: 372775

4 years ago[unittest] Skip the socket tests if we $TMPDIR is too long.
Jonas Devlieghere [Tue, 24 Sep 2019 19:34:50 +0000 (19:34 +0000)]
[unittest] Skip the socket tests if we $TMPDIR is too long.

Adrian added a sanity check to the socket tests to ensure the $TMPDIR is
not too long for a socket. While this is great for diagnosing the
problem it doesn't really solve the problem for environment where you
have no control over that variable such as in CI. I propose to just skip
the test in that case similar to what we do for tests that rely on
targets that are not currently build, etc.

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

llvm-svn: 372774

4 years ago[HIP] Support new kernel launching API
Yaxun Liu [Tue, 24 Sep 2019 19:16:40 +0000 (19:16 +0000)]
[HIP] Support new kernel launching API

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

llvm-svn: 372773

4 years agoExtends the expansion of the LWZtoc pseduo op for AIX.
Sean Fertile [Tue, 24 Sep 2019 18:04:51 +0000 (18:04 +0000)]
Extends the expansion of the LWZtoc pseduo op for AIX.

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

llvm-svn: 372772

4 years ago[GCRelocate] Add a peephole to canonicalize base pointer relocation
Philip Reames [Tue, 24 Sep 2019 17:24:16 +0000 (17:24 +0000)]
[GCRelocate] Add a peephole to canonicalize base pointer relocation

If we generate the gc.relocate, and then later prove two arguments to the statepoint are equivalent, we should canonicalize the gc.relocate to the form we would have produced if this had been known before rewriting.

llvm-svn: 372771

4 years ago[X86] Add MMX MOVD/MOVQ stores to folding tables to support stack folding
Simon Pilgrim [Tue, 24 Sep 2019 16:15:32 +0000 (16:15 +0000)]
[X86] Add MMX MOVD/MOVQ stores to folding tables to support stack folding

llvm-svn: 372770

4 years ago[InstCombine] (a+b) < a && (a+b) != 0 -> (0-b) < a iff a/b != 0 (PR43259)
Roman Lebedev [Tue, 24 Sep 2019 16:10:50 +0000 (16:10 +0000)]
[InstCombine] (a+b) < a && (a+b) != 0 -> (0-b) < a iff a/b != 0 (PR43259)

Summary:
This is again motivated by D67122 sanitizer check enhancement.
That patch seemingly worsens `-fsanitize=pointer-overflow`
overhead from 25% to 50%, which strongly implies missing folds.

For
```
#include <cassert>
char* test(char& base, signed long offset) {
  __builtin_assume(offset < 0);
  return &base + offset;
}
```
We produce

https://godbolt.org/z/r40U47

and again those two icmp's can be merged:
```
Name: 0
Pre: C != 0
  %adjusted = add i8 %base, C
  %not_null = icmp ne i8 %adjusted, 0
  %no_underflow = icmp ult i8 %adjusted, %base
  %r = and i1 %not_null, %no_underflow
=>
  %neg_offset = sub i8 0, C
  %r = icmp ugt i8 %base, %neg_offset
```
https://rise4fun.com/Alive/ALap
https://rise4fun.com/Alive/slnN

There are 3 other variants of this pattern,
i believe they all will go into InstSimplify.

https://bugs.llvm.org/show_bug.cgi?id=43259

Reviewers: spatel, xbolva00, nikic

Reviewed By: spatel

Subscribers: efriedma, hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 372768

4 years ago[InstCombine] (a+b) <= a && (a+b) != 0 -> (0-b) < a (PR43259)
Roman Lebedev [Tue, 24 Sep 2019 16:10:38 +0000 (16:10 +0000)]
[InstCombine] (a+b) <= a && (a+b) != 0 -> (0-b) < a (PR43259)

Summary:
This is again motivated by D67122 sanitizer check enhancement.
That patch seemingly worsens `-fsanitize=pointer-overflow`
overhead from 25% to 50%, which strongly implies missing folds.

This pattern isn't exactly what we get there
(strict vs. non-strict predicate), but this pattern does not
require known-bits analysis, so it is best to handle it first.

```
Name: 0
  %adjusted = add i8 %base, %offset
  %not_null = icmp ne i8 %adjusted, 0
  %no_underflow = icmp ule i8 %adjusted, %base
  %r = and i1 %not_null, %no_underflow
=>
  %neg_offset = sub i8 0, %offset
  %r = icmp ugt i8 %base, %neg_offset
```
https://rise4fun.com/Alive/knp

There are 3 other variants of this pattern,
they all will go into InstSimplify:
https://rise4fun.com/Alive/bIDZ

https://bugs.llvm.org/show_bug.cgi?id=43259

Reviewers: spatel, xbolva00, nikic

Reviewed By: spatel

Subscribers: hiraditya, majnemer, vsk, llvm-commits

Tags: #llvm

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

llvm-svn: 372767

4 years ago[X86] Add tests showing failure to stack fold MMX MOVD/MOVQ stores
Simon Pilgrim [Tue, 24 Sep 2019 15:40:09 +0000 (15:40 +0000)]
[X86] Add tests showing failure to stack fold MMX MOVD/MOVQ stores

llvm-svn: 372766

4 years ago[TextAPI] Remove redundant checking causing warnings. NFC.
Michael Liao [Tue, 24 Sep 2019 14:52:13 +0000 (14:52 +0000)]
[TextAPI] Remove redundant checking causing warnings. NFC.

- Minor coding format.

llvm-svn: 372765

4 years agoRegex: Make "match" and "sub" const member functions
Thomas Preud'homme [Tue, 24 Sep 2019 14:42:36 +0000 (14:42 +0000)]
Regex: Make "match" and "sub" const member functions

Summary:
The Regex "match" and "sub" member functions were previously not "const"
because they wrote to the "error" member variable. This commit removes
those assignments, and instead assumes that the validity of the regex
is already known after the initial compilation of the regular
expression. As a result, these member functions were possible to make
"const". This makes it easier to do things like pre-compile Regexes
up-front, and makes "match" and "sub" thread-safe. The error status is
now returned as an optional output, which also makes the API of "match"
and "sub" more consistent with each other.

Also, some uses of Regex that could be refactored to be const were made const.

Patch by Nicolas Guillemot

Reviewers: jankratochvil, thopre

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 372764

4 years ago[NFC] Fix typo in the "kind" description for the software single-step breakpoint
Tatyana Krasnukha [Tue, 24 Sep 2019 14:24:52 +0000 (14:24 +0000)]
[NFC] Fix typo in the "kind" description for the software single-step breakpoint

llvm-svn: 372763

4 years ago[yaml2obj/obj2yaml] - Add support for .stack_sizes sections.
George Rimar [Tue, 24 Sep 2019 14:22:37 +0000 (14:22 +0000)]
[yaml2obj/obj2yaml] - Add support for .stack_sizes sections.

.stack_sizes is a SHT_PROGBITS section that contains pairs of
<address (4/8 bytes), stack size (uleb128)>.

This patch teach tools to parse and dump it.

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

llvm-svn: 372762

4 years ago[Compiler] Fix LLVM_NODISCARD for GCC
David Bolvansky [Tue, 24 Sep 2019 14:01:14 +0000 (14:01 +0000)]
[Compiler] Fix LLVM_NODISCARD for GCC

Summary:
This branch is currently dead since we don't use C++17.
 #if __cplusplus > 201402L && LLVM_HAS_CPP_ATTRIBUTE(nodiscard)
 #define LLVM_NODISCARD [[nodiscard]]

This branch is Clang-only.
 #elif LLVM_HAS_CPP_ATTRIBUTE(clang::warn_unused_result)
 #define LLVM_NODISCARD [[clang::warn_unused_result]]

While we could use gnu variant  [[gnu::warn_unused_result]], it is not ideal because it works only on functions.
/home/xbolva00/LLVM/llvm/include/llvm/ADT/ArrayRef.h:41:24: warning: â€˜warn_unused_result’ attribute only applies to function types [-Wattributes]

GCC (checked 5,6,7,8) seems to enable [[nodiscard]] even in C++14 mode and does not produce warnings that nodiscard is C++17 feature. but Clang does - but we do not reach it due the code above. So it affects only GCC and does what we want.

Reviewers: jfb, rsmith, echristo, aaron.ballman

Reviewed By: aaron.ballman

Subscribers: MaskRay, dexonsmith

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

llvm-svn: 372761

4 years ago[clang-format] [PR36858] Add missing .hh and .cs extensions from python support utilities
Paul Hoad [Tue, 24 Sep 2019 14:00:06 +0000 (14:00 +0000)]
[clang-format] [PR36858] Add missing .hh and .cs extensions from python support utilities

Summary: https://bugs.llvm.org/show_bug.cgi?id=36858 identifies .hh as a missing C++ header extension file while making this change I realized there was no support for .cs files which were added recently

Reviewers: pseyfert, klimek, owenpan

Reviewed By: klimek

Subscribers: cfe-commits

Tags: #clang-tools-extra, #clang

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

llvm-svn: 372760