platform/upstream/llvm.git
4 years agoRevert [WinEH] Allocate space in funclets stack to save XMM CSRs
Reid Kleckner [Tue, 20 Aug 2019 22:08:57 +0000 (22:08 +0000)]
Revert [WinEH] Allocate space in funclets stack to save XMM CSRs

This reverts r367088 (git commit 9ad565f70ec5fd3531056d7c939302d4ea970c83)

And the follow up fix r368631 / e9865b9b31bb2e6bc742dc6fca8f9f9517c3c43e

llvm-svn: 369457

4 years ago[Symbol] Move VerifyDecl to ClangASTContext
Alex Langford [Tue, 20 Aug 2019 22:06:13 +0000 (22:06 +0000)]
[Symbol] Move VerifyDecl to ClangASTContext

VerifyDecl is specific to clang and is only used in ClangASTContext.

llvm-svn: 369456

4 years agoTeach GlobalISelEmitter to treat used iPTRAny operands as pointer operands
Jessica Paquette [Tue, 20 Aug 2019 22:04:10 +0000 (22:04 +0000)]
Teach GlobalISelEmitter to treat used iPTRAny operands as pointer operands

Overloaded intrinsics can use iPTRAny in used/input operands.

The GlobalISelEmitter doesn't know that these are pointers, so it treats them
as scalars. As a result, these intrinsics can't be imported.

This teaches the GlobalISelEmitter to recognize these as pointers rather than
scalars.

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

llvm-svn: 369455

4 years agoAdds support for writing the .bss section for XCOFF object files.
Sean Fertile [Tue, 20 Aug 2019 22:03:18 +0000 (22:03 +0000)]
Adds support for writing the .bss section for XCOFF object files.

Adds Wrapper classes for MCSymbol and MCSection into the XCOFF target
object writer. Also adds a class to represent the top-level sections, which we
materialize in the ObjectWriter.

executePostLayoutBinding will map all csects into the appropriate
container depending on its storage mapping class, and map all symbols
into their containing csect. Once all symbols have been processed we
- Assign addresses and symbol table indices.
- Calaculte section sizes.
- Build the section header table.
- Assign the sections raw-pointer value for non-virtual sections.

Since the .bss section is virtual, writing the header table is enough to
add support. Writing of a sections raw data, or of any relocations is
not included in this patch.

Testing is done by dumping the section header table, but it needs to be
extended to include dumping the symbol table once readobj support for
dumping auxiallary entries lands.

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

llvm-svn: 369454

4 years ago[LLDB][Test] Remove `skipIfWindows` for conditional breakpoint test (NFC)
Med Ismail Bennani [Tue, 20 Aug 2019 21:58:22 +0000 (21:58 +0000)]
[LLDB][Test] Remove `skipIfWindows` for conditional breakpoint test (NFC)

Summary:
The test for conditional breakpoints on Windows was skipped because
there was no expression evaluation support at the time it was written.

After removing the annotation and testing it again, the test is passing.
http://lists.llvm.org/pipermail/lldb-dev/2019-August/015405.html

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Reviewers: stella.stamenova, jingham

Subscribers: lldb-commits

Tags: #lldb

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

llvm-svn: 369453

4 years ago[NFC] Update RegularExpression documentation
Jonas Devlieghere [Tue, 20 Aug 2019 21:56:49 +0000 (21:56 +0000)]
[NFC] Update RegularExpression documentation

llvm-svn: 369452

4 years ago[analyzer] NFC: Remove the BugTypes set from BugReporter.
Artem Dergachev [Tue, 20 Aug 2019 21:41:20 +0000 (21:41 +0000)]
[analyzer] NFC: Remove the BugTypes set from BugReporter.

Its only purpose was to avoid a bug that's caused by
making a virtual call in BugReporter's destructor.

llvm-svn: 369451

4 years ago[analyzer] Fix a crash when destroying a non-region.
Artem Dergachev [Tue, 20 Aug 2019 21:41:17 +0000 (21:41 +0000)]
[analyzer] Fix a crash when destroying a non-region.

Add defensive check that prevents a crash when we try to evaluate a destructor
whose this-value is a concrete integer that isn't a null.

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

llvm-svn: 369450

4 years ago[analyzer] Improve VirtualCallChecker and enable parts of it by default.
Artem Dergachev [Tue, 20 Aug 2019 21:41:14 +0000 (21:41 +0000)]
[analyzer] Improve VirtualCallChecker and enable parts of it by default.

Calling a pure virtual method during construction or destruction
is undefined behavior. It's worth it to warn about it by default.
That part is now known as the cplusplus.PureVirtualCall checker.

Calling a normal virtual method during construction or destruction
may be fine, but does behave unexpectedly, as it skips virtual dispatch.
Do not warn about this by default, but let projects opt in into it
by enabling the optin.cplusplus.VirtualCall checker manually.

Give the two parts differentiated warning text:

  Before:

    Call to virtual function during construction or destruction:
    Call to pure virtual function during construction

    Call to virtual function during construction or destruction:
    Call to virtual function during destruction

  After:

    Pure virtual method call:
    Call to pure virtual method 'X::foo' during construction
        has undefined behavior

    Unexpected loss of virtual dispatch:
    Call to virtual method 'Y::bar' during construction
        bypasses virtual dispatch

Also fix checker names in consumers that support them (eg., clang-tidy)
because we now have different checker names for pure virtual calls and
regular virtual calls.

Also fix capitalization in the bug category.

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

llvm-svn: 369449

4 years agoFix a couple of unguarded operator, calls in algorithm. Fixes PR#43063. Updated all...
Marshall Clow [Tue, 20 Aug 2019 21:31:51 +0000 (21:31 +0000)]
Fix a couple of unguarded operator, calls in algorithm. Fixes PR#43063. Updated all the heap tests to check this.

llvm-svn: 369448

4 years ago[InstCombine] add more extra use tests for icmp with extends; NFC
Sanjay Patel [Tue, 20 Aug 2019 21:23:28 +0000 (21:23 +0000)]
[InstCombine] add more extra use tests for icmp with extends; NFC

llvm-svn: 369447

4 years ago[COFF] Check errorCount before committing the output file
Martin Storsjo [Tue, 20 Aug 2019 21:08:14 +0000 (21:08 +0000)]
[COFF] Check errorCount before committing the output file

This avoids producing an output file if errors appeared late in the
linking process (e.g. while fixing relocations, or as in the test,
while checking for multiple resources). If an output file is produced,
build tools might not retry building it on rebuilds, even if a previous
build failed due to the error return code.

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

llvm-svn: 369445

4 years ago[Attributor] Remove unused variable. NFC.
Michael Liao [Tue, 20 Aug 2019 21:02:31 +0000 (21:02 +0000)]
[Attributor] Remove unused variable. NFC.

llvm-svn: 369444

4 years ago[test] Fix tests when run on windows after SVN r369426. NFC.
Martin Storsjo [Tue, 20 Aug 2019 20:58:02 +0000 (20:58 +0000)]
[test] Fix tests when run on windows after SVN r369426. NFC.

When running tests on windows, invoking "llc -march=<arch>" will
implicitly use windows as the target os, making these tests misbehave
after this change.

Fix the issue by using more specific -mtriple values instead of plain
-march in these tests.

This should hopefully fix buildbot failures like
http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/9816.

llvm-svn: 369443

4 years ago[NewPM] Run ubsan-coroutines test under the legacy pass manager only
Leonard Chan [Tue, 20 Aug 2019 20:55:36 +0000 (20:55 +0000)]
[NewPM] Run ubsan-coroutines test under the legacy pass manager only

The passes that lower the llvm.coro.* instrinsics have not yet been ported,
so only run under the legacy PM for now.

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

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

llvm-svn: 369442

4 years ago[AArch64] Speed-up leak and address sanitizers on AArch64 for 48-bit VMA
Sebastian Pop [Tue, 20 Aug 2019 20:54:05 +0000 (20:54 +0000)]
[AArch64] Speed-up leak and address sanitizers on AArch64 for 48-bit VMA

This patch fixes https://github.com/google/sanitizers/issues/703
On a Graviton-A1 aarch64 machine with 48-bit VMA,
the time spent in LSan and ASan reduced from 2.5s to 0.01s when running

clang -fsanitize=leak compiler-rt/test/lsan/TestCases/sanity_check_pure_c.c && time ./a.out
clang -fsanitize=address compiler-rt/test/lsan/TestCases/sanity_check_pure_c.c && time ./a.out

With this patch, LSan and ASan create both the 32 and 64 allocators and select
at run time between the two allocators following a global variable that is
initialized at init time to whether the allocator64 can be used in the virtual
address space.

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

llvm-svn: 369441

4 years ago[AutoFDO] Make call targets order deterministic for sample profile
Wenlei He [Tue, 20 Aug 2019 20:52:00 +0000 (20:52 +0000)]
[AutoFDO] Make call targets order deterministic for sample profile

Summary:
StringMap is used for storing call target to frequency map for AutoFDO. However the iterating order of StringMap is non-deterministic, which leads to non-determinism in AutoFDO profile output. Now new API getSortedCallTargets and SortCallTargets are added for deterministic ordering and output.

Roundtrip test for text profile and binary profile is added.

Reviewers: wmi, davidxl, danielcdh

Subscribers: hiraditya, mgrang, llvm-commits, twoh

Tags: #llvm

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

llvm-svn: 369440

4 years ago[InstCombine] add tests for mismatched cast ops for icmp; NFC
Sanjay Patel [Tue, 20 Aug 2019 20:51:50 +0000 (20:51 +0000)]
[InstCombine] add tests for mismatched cast ops for icmp; NFC

Motivating case is shown in PR42700:
https://bugs.llvm.org/show_bug.cgi?id=42700

llvm-svn: 369439

4 years ago[llvm-extract] Update the help message for group extraction feature
Jinsong Ji [Tue, 20 Aug 2019 20:45:16 +0000 (20:45 +0000)]
[llvm-extract] Update the help message for group extraction feature

Summary:
https://reviews.llvm.org/D60973 exposed the group extraction feature of
the BlockExtractor to llvm-extract.
However, the help message was not updated, so users might not be able to
know how to use this feature without looking into history/commits.

This patch just update the help message to show how to use this group
extraction feature.

Reviewers: qcolombet, volkan

Reviewed By: qcolombet

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 369438

4 years ago[libc++] Fix std::abs tests
Zoe Carver [Tue, 20 Aug 2019 20:44:59 +0000 (20:44 +0000)]
[libc++] Fix std::abs tests

On systems where sizeof(long) == sizeof(int)
the current tests failed. This commit updates
those tests to work on all systems.
std::abs has specific long specializations
which can be used instead.

llvm-svn: 369437

4 years ago[Symbol][NFC] Remove references to clang in TypeMap
Alex Langford [Tue, 20 Aug 2019 20:44:36 +0000 (20:44 +0000)]
[Symbol][NFC] Remove references to clang in TypeMap

llvm-svn: 369436

4 years ago[CMake] Remove LLDB_TEST_USE_CUSTOM_C(XX)_COMPILER
Jonas Devlieghere [Tue, 20 Aug 2019 20:20:20 +0000 (20:20 +0000)]
[CMake] Remove LLDB_TEST_USE_CUSTOM_C(XX)_COMPILER

Given that LLDB_TEST_USE_CUSTOM_C_COMPILER and LLDB_TEST_C_COMPILER are
both set at configuration time, I don't really see the point of having
both. This patch simplifies things and uses the custom C/C++ compiler
when the variable is set, and uses the default one when it's not set.
The variable can be unset by passing -ULLDB_TEST_C_COMPILER to CMake.

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

llvm-svn: 369435

4 years ago[X86] Add a DAG combine to transform (i8 (bitcast (v8i1 (extract_subvector (v16i1...
Craig Topper [Tue, 20 Aug 2019 20:20:04 +0000 (20:20 +0000)]
[X86] Add a DAG combine to transform (i8 (bitcast (v8i1 (extract_subvector (v16i1 X), 0)))) -> (i8 (trunc (i16 (bitcast (v16i1 X))))) on KNL target

Without AVX512DQ we don't have KMOVB so we can't really copy 8-bits of a k-register to a GPR. We have to copy 16 bits instead. We do this even if the DAG copy is from v8i1->v16i1. If we detect the (i8 (bitcast (v8i1 (extract_subvector (v16i1 X), 0)))) we should rewrite the types to match the copy we do support. By doing this, we can help known bits to propagate without losing the upper 8 bits of the input to the extract_subvector. This allows some zero extends to be removed since we have an isel pattern to use kmovw for (zero_extend (i16 (bitcast (v16i1 X))).

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

llvm-svn: 369434

4 years ago[GWP-ASan] Fix typos.
Mitch Phillips [Tue, 20 Aug 2019 20:16:11 +0000 (20:16 +0000)]
[GWP-ASan] Fix typos.

Summary:
Fix two spelling typos and de-indent a guarded #define so that it's
consistent with clang-format.

Reviewers: vitalybuka

Reviewed By: vitalybuka

Subscribers: #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

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

llvm-svn: 369433

4 years ago[OPENMP]Fix delayed diagnostics for standalone declare target directive.
Alexey Bataev [Tue, 20 Aug 2019 19:50:13 +0000 (19:50 +0000)]
[OPENMP]Fix delayed diagnostics for standalone declare target directive.

If the function is marked as declare target in a standalone directive,
the delayed diagnostics is not emitted. Patch fixes this problem.

llvm-svn: 369432

4 years ago[X86] Add isel patterns for (i64 (zext (i8 (bitcast (v16i1 X))))) to use a KMOVW...
Craig Topper [Tue, 20 Aug 2019 19:43:48 +0000 (19:43 +0000)]
[X86] Add isel patterns for (i64 (zext (i8 (bitcast (v16i1 X))))) to use a KMOVW and a SUBREG_TO_REG. Similar for i8 and anyextend.

We already had patterns for extending to i32 to take advantage of
the impliciting zeroing of the upper bits of a 32-bit GPR that is
done by KMOVW/KMOVB. But the extend might be all the way to i64,
in which case the existing patterns would fail and we'd get a
KMOVW/B followed by a MOVZX. By adding patterns for i64 we can
use the fact that KMOVW/B zero the upper bits of the 32-bit GPR
and the normal property that 32-bit GPR writes implicitly zero the
upper 32-bits of the full 64-bit GPR.

The anyextend patterns are slightly different since we don't care
about the upper zeros. For the i8->i64 I think this avoids selecting
the anyextend as a MOVZX to prevent a partial register issue that
doesn't exist. For i16->i64 I think we would have just emitted an
insert_subreg on top of the extract_subreg that the vXi16->i16
bitcast pattern emits. The register coalescer or peephole pass
should combine those, but this saves that work and makes i8/16
consistent.

llvm-svn: 369431

4 years agoForce honoring nthreads-var and thread-limit-var inside teams construct on host
Jonathan Peyton [Tue, 20 Aug 2019 19:39:17 +0000 (19:39 +0000)]
Force honoring nthreads-var and thread-limit-var inside teams construct on host

This patch fixes https://bugs.llvm.org/show_bug.cgi?id=42906, via adding
adjustment of number of threads on enter to the teams construct on host
according to user settings. This allows to pass checks and avoid assertions
at time of team of threads creation.

Patch by Andrey Churbanov

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

llvm-svn: 369430

4 years ago[libc++] Avoid implicit conversion warning in a <random> test
Louis Dionne [Tue, 20 Aug 2019 19:28:26 +0000 (19:28 +0000)]
[libc++] Avoid implicit conversion warning in a <random> test

By stashing the computation of `E::max() - E::min()` in a variable, we
avoid the warning introduced in r367497. Note that we use `auto` to
avoid having to deduce the type of the computation, which is not a
problem since Clang provides `auto` as an extension even in C++03 (and
we disable warnings related to using C++11 extensions in the test suite).

llvm-svn: 369429

4 years agofix buildbot start script to no longer hang
Eric Fiselier [Tue, 20 Aug 2019 19:06:23 +0000 (19:06 +0000)]
fix buildbot start script to no longer hang

llvm-svn: 369428

4 years ago[Sema][Typo] Fix assertion failure for expressions with multiple typos
David Goldman [Tue, 20 Aug 2019 19:03:15 +0000 (19:03 +0000)]
[Sema][Typo] Fix assertion failure for expressions with multiple typos

Summary:
As Typo Resolution can create new TypoExprs while resolving typos,
it is necessary to recurse through the expression to search for more
typos.

This should fix the assertion failure in `clang::Sema::~Sema()`:
  `DelayedTypos.empty() && "Uncorrected typos!"`

Notes:
- In case some TypoExprs are created but thrown away, Sema
  now has a Vector that is used to keep track of newly created
  typos.
- For expressions with multiple typos, we only give suggestions
  if we are able to resolve all typos in the expression
- This patch is similar to D37521 except that it does not eagerly
  commit to a correction for the first typo in the expression.
  Instead, it will search for corrections which fix all of the
  typos in the expression.

Subscribers: cfe-commits

Tags: #clang

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

llvm-svn: 369427

4 years ago[TargetMachine] Don't try to create COFFSTUB references on windows on non-COFF
Martin Storsjo [Tue, 20 Aug 2019 18:58:05 +0000 (18:58 +0000)]
[TargetMachine] Don't try to create COFFSTUB references on windows on non-COFF

This avoids spurious relocation types for windows/elf targets.

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

llvm-svn: 369426

4 years ago[COFF] Print the file name on errors writing the pdb file
Martin Storsjo [Tue, 20 Aug 2019 18:56:48 +0000 (18:56 +0000)]
[COFF] Print the file name on errors writing the pdb file

This avoids confusing contextless error messages such as "No such file
or directory" if e.g. the pdb output file should be written to a
nonexistent directory. (This can happen with linkrepro scripts, at least
old ones.)

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

llvm-svn: 369425

4 years ago[ClangExpressionParser] Add ClangDeclVendor
Alex Langford [Tue, 20 Aug 2019 18:47:30 +0000 (18:47 +0000)]
[ClangExpressionParser] Add ClangDeclVendor

Summary:
This introduces a layer between DeclVendor and the currently implemented
DeclVendors (ClangModulesDeclVendor and AppleObjCDeclVendor). This
allows the removal of DeclVendor::GetImporterSource which is extremely
clang-specific, freeing up the interface to be more general.

A good follow up to this would be to remove the remaining instances of
clang in DeclVendor, either by moving things to ClangDeclVendor or by
using wrappers (e.g. CompilerDecl instead of clang::NamedDecl).

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

llvm-svn: 369424

4 years ago[WebAssembly][lld] Fix crash when applying relocations to debug sections
Sam Clegg [Tue, 20 Aug 2019 18:39:24 +0000 (18:39 +0000)]
[WebAssembly][lld] Fix crash when applying relocations to debug sections

Debug sections are special in that they can contain relocations against
symbols that are not present in the final output (i.e. not live).
However it is also possible to have R_WASM_TABLE_INDEX relocations
against symbols that don't have a table index assigned (since they are
not address taken by actual code.

Fixes: https://github.com/emscripten-core/emscripten/issues/9023

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

llvm-svn: 369423

4 years ago[libc++] Implement LWG 3199
Louis Dionne [Tue, 20 Aug 2019 18:21:06 +0000 (18:21 +0000)]
[libc++] Implement LWG 3199

Summary:
The resolution of LWG 3199 makes sure that input-streaming into an empty bitset
does not set the failbit on the input stream.

Reviewers: mclow.lists, EricWF

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

Tags: #libc

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

llvm-svn: 369422

4 years ago[InstCombine] add helper function for icmp+zext/sext; NFC
Sanjay Patel [Tue, 20 Aug 2019 18:15:17 +0000 (18:15 +0000)]
[InstCombine] add helper function for icmp+zext/sext; NFC

llvm-svn: 369421

4 years ago[libc++] Precise XFAIL for AppleClang 11
Louis Dionne [Tue, 20 Aug 2019 18:05:06 +0000 (18:05 +0000)]
[libc++] Precise XFAIL for AppleClang 11

This test doesn't fail on all patch levels of AppleClang 11

llvm-svn: 369420

4 years agoFix typo in comment. NFCI.
Simon Pilgrim [Tue, 20 Aug 2019 17:54:37 +0000 (17:54 +0000)]
Fix typo in comment. NFCI.

llvm-svn: 369419

4 years agoFix name of the error message, NFC.
Alexey Bataev [Tue, 20 Aug 2019 17:50:13 +0000 (17:50 +0000)]
Fix name of the error message, NFC.

llvm-svn: 369418

4 years agoRevert "AMDGPU: Fix iterator error when lowering SI_END_CF"
Matt Arsenault [Tue, 20 Aug 2019 17:45:25 +0000 (17:45 +0000)]
Revert "AMDGPU: Fix iterator error when lowering SI_END_CF"

This reverts r367500 and r369203. This is causing various test
failures.

llvm-svn: 369417

4 years agobump lld version used by buildbots
Eric Fiselier [Tue, 20 Aug 2019 17:43:00 +0000 (17:43 +0000)]
bump lld version used by buildbots

llvm-svn: 369416

4 years ago[Attr] Support _attribute__ ((fallthrough))
Nathan Huckleberry [Tue, 20 Aug 2019 17:16:49 +0000 (17:16 +0000)]
[Attr] Support _attribute__ ((fallthrough))

Summary: Fixed extraneous matches of non-NullStmt

Reviewers: aaron.ballman, rsmith, efriedma, xbolva00

Reviewed By: aaron.ballman, rsmith, xbolva00

Subscribers: riccibruno, arphaman, ziangwan, ojeda, xbolva00, nickdesaulniers, cfe-commits

Tags: #clang

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

llvm-svn: 369414

4 years ago[libc++] fix test for unsigned char
Zoe Carver [Tue, 20 Aug 2019 17:09:00 +0000 (17:09 +0000)]
[libc++] fix test for unsigned char

On some systems char is unsigned.
If that is the case, we will now
test signed char twice in std::abs.
NFC. Fixes the build bots.

llvm-svn: 369413

4 years ago[X86][BtVer2] Use ReadAfterLd entries for the register operands of CMPXCHG.
Andrea Di Biagio [Tue, 20 Aug 2019 17:05:56 +0000 (17:05 +0000)]
[X86][BtVer2] Use ReadAfterLd entries for the register operands of CMPXCHG.

This is a follow-up of r369365.

llvm-svn: 369412

4 years ago[InstCombine] make fold for icmp with sext more efficient; NFC
Sanjay Patel [Tue, 20 Aug 2019 17:03:22 +0000 (17:03 +0000)]
[InstCombine] make fold for icmp with sext more efficient; NFC

We were creating 2 instructions and relying on a subsequent fold
to invert a not(icmp). Create the final icmp directly instead.

llvm-svn: 369411

4 years ago[X86] Use isNullConstant instead of getConstantOperandVal == 0. NFC
Craig Topper [Tue, 20 Aug 2019 16:55:12 +0000 (16:55 +0000)]
[X86] Use isNullConstant instead of getConstantOperandVal == 0. NFC

llvm-svn: 369410

4 years ago[libc++] Disable <chrono> ""d and ""y literal tests on AppleClang 10.0.0
Louis Dionne [Tue, 20 Aug 2019 16:45:27 +0000 (16:45 +0000)]
[libc++] Disable <chrono> ""d and ""y literal tests on AppleClang 10.0.0

In r368882, I enabled those tests for all AppleClang's above version 9.
However, it turns out that the feature is only supported starting with
AppleClang 10.0.1, not AppleClang 10.0.0. This commit fixes that hole.

llvm-svn: 369409

4 years ago[LifetimeAnalysis] Add support for free functions
Gabor Horvath [Tue, 20 Aug 2019 16:45:06 +0000 (16:45 +0000)]
[LifetimeAnalysis] Add support for free functions

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

llvm-svn: 369408

4 years agoMake the FindTypes(std::vector<CompilerContext>, ...) API testable in lldb-test
Adrian Prantl [Tue, 20 Aug 2019 16:44:25 +0000 (16:44 +0000)]
Make the FindTypes(std::vector<CompilerContext>, ...) API testable in lldb-test

This adds a -compiler-context=<...> option to lldb-test that trakes a
comma-separated string that is a list of kind/name pairs and
translates it into a std::vector<CompilerContext>, a CompilerContext
being a pair of context-kind and name.

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

<rdar://problem/54471165>

llvm-svn: 369407

4 years ago[libc++] Populate a lit feature including the compiler patch level
Louis Dionne [Tue, 20 Aug 2019 16:41:38 +0000 (16:41 +0000)]
[libc++] Populate a lit feature including the compiler patch level

If the compiler is (for example) AppleClang 10.0.1, we would previously
populate the following lit features:

    apple-clang
    apple-clang-10
    apple-clang-10.0

This patch additionally populates a feature called 'apple-clang-10.0.1',
which allows more precise enabling/disabling of tests.

llvm-svn: 369406

4 years ago[CodeGen] Add EarlyIfConvert test missed in previous commit
Thomas Raoux [Tue, 20 Aug 2019 16:34:47 +0000 (16:34 +0000)]
[CodeGen] Add EarlyIfConvert test missed in previous commit

llvm-svn: 369405

4 years ago[ARM] Select vaddva
Sam Tebbs [Tue, 20 Aug 2019 16:33:34 +0000 (16:33 +0000)]
[ARM] Select vaddva

This patch adds vaddva selection.

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

llvm-svn: 369404

4 years ago[GlobalISel] Handle multiple registers in dbg.value intrinsic
Aditya Nandakumar [Tue, 20 Aug 2019 16:28:37 +0000 (16:28 +0000)]
[GlobalISel] Handle multiple registers in dbg.value intrinsic

https://reviews.llvm.org/D66077

The value passed into dbg.value may relate to multiple registers,
each of which need a DBG_VALUE.

This fix calls MIRBuilder.buildDirectDbgValue for each register.

Without this, IR passed in from flang-compiler/flang may fail an
assertion in getOrCreateVReg.

Patch by : peterwaller-arm.

llvm-svn: 369403

4 years agowin: Enable /Zc:twoPhase by default if targeting MSVC 2017 update 3 or newer
Nico Weber [Tue, 20 Aug 2019 16:28:11 +0000 (16:28 +0000)]
win: Enable /Zc:twoPhase by default if targeting MSVC 2017 update 3 or newer

MSVC 2017 update 3 (_MSC_VER 1911) enables /Zc:twoPhase by default, and
so should clang-cl:
https://docs.microsoft.com/en-us/cpp/build/reference/zc-twophase

clang-cl takes the MSVC version it emulates from the -fmsc-version flag,
or if that's not passed it tries to check what the installed version of
MSVC is and uses that, and failing that it uses a default version that's
currently 1911. So this changes the default if no -fmsc-version flag is
passed and no installed MSVC is detected. (It also changes the default
if -fmsc-version is passed or MSVC is detected, and either indicates
_MSC_VER >= 1911.)

As mentioned in the MSDN article, the Windows SDK header files in
version 10.0.15063.0 (Creators Update or Redstone 2) and earlier
versions do not work correctly with /Zc:twoPhase. If you need to use
these old SDKs with a new clang-cl, explicitly pass /Zc:twoPhase- to get
the old behavior.

Fixes PR43032.

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

llvm-svn: 369402

4 years agogn build: Merge r369298
Nico Weber [Tue, 20 Aug 2019 16:19:50 +0000 (16:19 +0000)]
gn build: Merge r369298

llvm-svn: 369401

4 years ago[scudo][standalone] Fix malloc_iterate
Kostya Kortchinsky [Tue, 20 Aug 2019 16:17:08 +0000 (16:17 +0000)]
[scudo][standalone] Fix malloc_iterate

Summary:
cferris's Bionic tests found an issue in Scudo's `malloc_iterate`.

We were inclusive of both boundaries, which resulted in a `Block` that
was located on said boundary to be possibly accounted for twice, or
just being accounted for while iterating on regions that are not ours
(usually the unmapped ones in between Primary regions).

The fix is to exclude the upper boundary in `iterateOverChunks`, and
add a regression test.

This additionally corrects a typo in a comment, and change the 64-bit
Primary iteration function to not assume that `BatchClassId` is 0.

Reviewers: cferris, morehouse, hctim, vitalybuka, eugenis

Reviewed By: hctim

Subscribers: delcypher, #sanitizers, llvm-commits

Tags: #llvm, #sanitizers

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

llvm-svn: 369400

4 years agoFix availability of __thread_id on builds with external threading. Reviewed as https...
Marshall Clow [Tue, 20 Aug 2019 16:16:23 +0000 (16:16 +0000)]
Fix availability of __thread_id on builds with external threading. Reviewed as https://reviews.llvm.org/D66480

llvm-svn: 369399

4 years ago[lldb] Use the new Regex::isValid() with no parameter
Jan Kratochvil [Tue, 20 Aug 2019 16:08:27 +0000 (16:08 +0000)]
[lldb] Use the new Regex::isValid() with no parameter

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

llvm-svn: 369398

4 years ago[clang] Use the new Regex::isValid() with no parameter
Jan Kratochvil [Tue, 20 Aug 2019 16:07:31 +0000 (16:07 +0000)]
[clang] Use the new Regex::isValid() with no parameter

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

llvm-svn: 369397

4 years agoRegex: Add isValid() with no parameter
Jan Kratochvil [Tue, 20 Aug 2019 16:05:23 +0000 (16:05 +0000)]
Regex: Add isValid() with no parameter

There will be some performance (only a little) improvement for LLDB's
RegularExpression::Execute.

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

llvm-svn: 369396

4 years ago [CodeGen] Add a pass to do block predication on SSA machine IR.
Thomas Raoux [Tue, 20 Aug 2019 15:54:59 +0000 (15:54 +0000)]
[CodeGen] Add a pass to do block predication on SSA machine IR.

    For targets requiring aggressive scheduling and/or software pipeline we need to
    apply predication before preRA scheduling. This adds a pass re-using the early
    if-cvt infrastructure but generating predicated instructions instead of
    speculatively executing instructions. It allows doing if conversion on blocks
    containing instructions with side-effects. The pass re-use the target hook from
    postRA if-conversion to let the target decide on the heuristic to apply.

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

llvm-svn: 369395

4 years ago[libc++] std::abs should not return double
Zoe Carver [Tue, 20 Aug 2019 15:43:25 +0000 (15:43 +0000)]
[libc++] std::abs should not return double

Implement LWG Issue 2735 by adding std::abs
tests for several types and checking their
return value. NFC.

llvm-svn: 369394

4 years ago[libc++] Explicitly cast in generate_canonical
Louis Dionne [Tue, 20 Aug 2019 15:39:20 +0000 (15:39 +0000)]
[libc++] Explicitly cast in generate_canonical

A new clang warning introduced in r367497 was complaining about
the change in value.

Thanks to Brian Cain for the patch.
Differential Revision: https://reviews.llvm.org/D66422

llvm-svn: 369393

4 years ago[llvm-objcopy][test] Add a test to show that argv[0] is included in error/warning...
Fangrui Song [Tue, 20 Aug 2019 15:34:07 +0000 (15:34 +0000)]
[llvm-objcopy][test] Add a test to show that argv[0] is included in error/warning messages

test/llvm-objcopy/ELF/error-format.test is similar to test/llvm-readobj/error-format.test added in D66425.

Reviewed By: grimar, jhenderson

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

llvm-svn: 369392

4 years ago[llvm-objcopy] Append '\n' to warning messages
Fangrui Song [Tue, 20 Aug 2019 15:00:07 +0000 (15:00 +0000)]
[llvm-objcopy] Append '\n' to warning messages

Currently the warning message of `llvm-strip %t.o %t.o` does not include
the trailing newline. Fix this by appending a '\n'.

This is the only warning llvm-objcopy and llvm-strip can issue.

Reviewed By: jhenderson

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

llvm-svn: 369391

4 years ago[InstCombine] improve readability for icmp with cast folds; NFC
Sanjay Patel [Tue, 20 Aug 2019 14:56:44 +0000 (14:56 +0000)]
[InstCombine] improve readability for icmp with cast folds; NFC

1. Update function name and stale code comments.
2. Use variable names that are less ambiguous.
3. Move operand checks into the function as early exits.

llvm-svn: 369390

4 years ago[BlockExtractor] Avoid assert with wrong line format
Jinsong Ji [Tue, 20 Aug 2019 14:46:02 +0000 (14:46 +0000)]
[BlockExtractor] Avoid assert with wrong line format

Summary:
When the line format is wrong, we may end up accessing out of bound
memory. eg: the test with invalide line will cause assert.
Assertion `idx < size()' failed

The fix is to report fatal when we found mismatched line format.

Reviewers: qcolombet, volkan

Reviewed By: qcolombet

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 369389

4 years ago[X86][BtVer2] Fix latency and throughput of atomic INC/DEC/NEG/NOT.
Andrea Di Biagio [Tue, 20 Aug 2019 14:31:27 +0000 (14:31 +0000)]
[X86][BtVer2] Fix latency and throughput of atomic INC/DEC/NEG/NOT.

Latency and throughput of LOCK INC/DEC/NEG/NOT is always 19cy.
Number of uOPs is still 1.

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

llvm-svn: 369388

4 years ago[clangd] Fix one testcase in XRefsTests.
Haojian Wu [Tue, 20 Aug 2019 14:07:27 +0000 (14:07 +0000)]
[clangd] Fix one testcase in XRefsTests.

Summary:
The test didn't test anything actually -- it used "[]" as annotation which should be
"[[]]".

This patch also fixes a bug in XRef where we may return duplicated refs.

Reviewers: ilya-biryukov

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

Tags: #clang

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

llvm-svn: 369387

4 years ago[InstCombine] simplify min/max of min/max with same operands (PR35607)
Sanjay Patel [Tue, 20 Aug 2019 13:39:17 +0000 (13:39 +0000)]
[InstCombine] simplify min/max of min/max with same operands (PR35607)

This is the original integer variant requested in:
https://bugs.llvm.org/show_bug.cgi?id=35607

As noted in the TODO and several similar TODOs around this block,
we could do this in instsimplify, but then it would cost more
because we would be trying to match min/max via ValueTracking
in 2 different places.

There are 4 commuted variants for each of smin/smax/umin/umax
that are not matched here. There are also icmp predicate variants
that are not included in the affected test file because they are
already handled by instsimplify by folding the final icmp to
true/false.

https://rise4fun.com/Alive/3KVc

  Name: smax(smax, smin)
  %c1 = icmp slt i32 %x, %y
  %c2 = icmp slt i32 %y, %x
  %min = select i1 %c1, i32 %x, i32 %y
  %max = select i1 %c2, i32 %x, i32 %y
  %c3 = icmp sgt i32 %max, %min
  %r = select i1 %c3, i32 %max, i32 %min
  =>
  %r = %max

  Name: smin(smax, smin)
  %c1 = icmp slt i32 %x, %y
  %c2 = icmp slt i32 %y, %x
  %min = select i1 %c1, i32 %x, i32 %y
  %max = select i1 %c2, i32 %x, i32 %y
  %c3 = icmp sgt i32 %max, %min
  %r = select i1 %c3, i32 %min, i32 %max
  =>
  %r = %min

  Name: umax(umax, umin)
  %c1 = icmp ult i32 %x, %y
  %c2 = icmp ult i32 %y, %x
  %min = select i1 %c1, i32 %x, i32 %y
  %max = select i1 %c2, i32 %x, i32 %y
  %c3 = icmp ult i32 %min, %max
  %r = select i1 %c3, i32 %max, i32 %min
  =>
  %r = %max

  Name: umin(umax, umin)
  %c1 = icmp ult i32 %x, %y
  %c2 = icmp ult i32 %y, %x
  %min = select i1 %c1, i32 %x, i32 %y
  %max = select i1 %c2, i32 %x, i32 %y
  %c3 = icmp ult i32 %min, %max
  %r = select i1 %c3, i32 %min, i32 %max
  =>
  %r = %min

llvm-svn: 369386

4 years ago[Syntax] Added function to get macro expansion tokens to TokenBuffer.
Johan Vikstrom [Tue, 20 Aug 2019 13:34:01 +0000 (13:34 +0000)]
[Syntax] Added function to get macro expansion tokens to TokenBuffer.

Summary:
Returns the first token in every mapping where the token is an identifier.
This API is required to be able to highlight macro expansions in clangd.

Reviewers: hokein, ilya-biryukov

Subscribers: kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 369385

4 years ago[X86][FMA] Add FMA 'negated expression' combine tests for D63141
Simon Pilgrim [Tue, 20 Aug 2019 13:25:55 +0000 (13:25 +0000)]
[X86][FMA] Add FMA 'negated expression' combine tests for D63141

llvm-svn: 369384

4 years agoRegex: +regex string lifetime comment
Jan Kratochvil [Tue, 20 Aug 2019 13:25:19 +0000 (13:25 +0000)]
Regex: +regex string lifetime comment

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

llvm-svn: 369383

4 years ago[llvm-objdump] - Remove one of `report_error` functions and improve the error reporting.
George Rimar [Tue, 20 Aug 2019 13:19:16 +0000 (13:19 +0000)]
[llvm-objdump] - Remove one of `report_error` functions and improve the error reporting.

One of the report_error functions was taking object::Archive::Child as an
argument. It feels excessive, this patch removes it and introduce a helper
function instead. Also I fixed a "TODO" in this patch what improved the message printed.

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

llvm-svn: 369382

4 years agoFix build for r369374
Pavel Labath [Tue, 20 Aug 2019 13:17:20 +0000 (13:17 +0000)]
Fix build for r369374

This patch added some gtest code to the TestingSupport library. As this
is not a unit test, but a unit test library, gtest does not get added to
the include path automatically, but we have to do that ourselves. (It
was working for me without this because the compiler picked up the
system gtest instead.)

llvm-svn: 369381

4 years agoRemoved the 'id' AST matcher, which is superseded by '.bind()'
Dmitri Gribenko [Tue, 20 Aug 2019 13:02:28 +0000 (13:02 +0000)]
Removed the 'id' AST matcher, which is superseded by '.bind()'

Summary:
The 'id' matcher is not even included in the AST Matchers Reference
document, so I don't expect there to be a significant number of users.

There's no reason to provide two ways to do the exact same thing that
only have a minor syntactic difference.

Subscribers: cfe-commits

Tags: #clang

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

llvm-svn: 369380

4 years agoConvert minidump unittests to use llvm::yaml::convertYAML
Pavel Labath [Tue, 20 Aug 2019 12:53:42 +0000 (12:53 +0000)]
Convert minidump unittests to use llvm::yaml::convertYAML

previously they used a minidump-specific function for this purpose, but
this is no longer needed now that whole of yaml2obj is available as a
library.

llvm-svn: 369379

4 years ago[DWARF] Fix reading 64-bit DWARF type units.
Igor Kudrin [Tue, 20 Aug 2019 12:52:32 +0000 (12:52 +0000)]
[DWARF] Fix reading 64-bit DWARF type units.

The type_offset field is 8 bytes long in DWARF64. The patch extends
TypeOffset to uint64_t and fixes its reading. The patch also fixes
checking of TypeOffset bounds as it was inaccurate in DWARF64 case.

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

llvm-svn: 369378

4 years ago[llvm-readobj] Prepend argv[0] to error/warning messages
Fangrui Song [Tue, 20 Aug 2019 12:49:15 +0000 (12:49 +0000)]
[llvm-readobj] Prepend argv[0] to error/warning messages

Summary:
Currently, we report:

    error: ...

Prepend argv[0] (tool name):

    llvm-readobj: error: ...

This is consistent with most GNU binutils/clang/lld, and gives a bit
more context in a long build log.

Reviewed By: grimar, jhenderson, rupprecht

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

llvm-svn: 369377

4 years ago[InstCombine] add tests for min/max with min/max of same operands; NFC
Sanjay Patel [Tue, 20 Aug 2019 12:49:03 +0000 (12:49 +0000)]
[InstCombine] add tests for min/max with min/max of same operands; NFC

llvm-svn: 369376

4 years ago[RISCV] Implement getExprForFDESymbol to ensure RISCV_32_PCREL is used for the FDE...
Alex Bradbury [Tue, 20 Aug 2019 12:32:31 +0000 (12:32 +0000)]
[RISCV] Implement getExprForFDESymbol to ensure RISCV_32_PCREL is used for the FDE location

Follow binutils in using RISCV_32_PCREL for the FDE initial location. As
explained in the relevant binutils commit
<https://github.com/riscv/riscv-binutils-gdb/commit/a6cbf936e3dce68114d28cdf60d510a3f78a6d40>,
the ADD/SUB pair of relocations is problematic in the presence of linker
relaxation.

This patch has the same end goal as D64715 but includes test changes and
avoids adding a new global VariantKind to MCExpr.h (preferring
RISCVMCExpr VKs like the rest of the RISC-V backend).

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

llvm-svn: 369375

4 years agounittests: Use yaml2obj as a library instead of an external process
Pavel Labath [Tue, 20 Aug 2019 12:28:36 +0000 (12:28 +0000)]
unittests: Use yaml2obj as a library instead of an external process

Summary:
Recently, yaml2obj has been turned into a library. This means we can use
it from our unit tests directly, instead of shelling out to an external
process. This patch does just that.

Reviewers: JDevlieghere, aadsm, espindola, jdoerfert

Subscribers: emaste, mgorny, arichardson, MaskRay, jhenderson, abrachet, lldb-commits

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

llvm-svn: 369374

4 years ago[OpenCL] Add const, volatile and pointer builtin handling
Sven van Haastregt [Tue, 20 Aug 2019 12:21:03 +0000 (12:21 +0000)]
[OpenCL] Add const, volatile and pointer builtin handling

Const, volatile, and pointer types were previously available, but not
working.  This patch adds handling for OpenCL builtin functions.

Add TableGen definitions for some atomic and asynchronous builtins to
make use of the new functionality.

Patch by Pierre Gondois and Sven van Haastregt.

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

llvm-svn: 369373

4 years ago[cmake] Remove the test for libstdc++<4.9
Pavel Labath [Tue, 20 Aug 2019 12:17:42 +0000 (12:17 +0000)]
[cmake] Remove the test for libstdc++<4.9

It is no longer relevant now that llvm requires >=5.1.

llvm-svn: 369371

4 years agoRecommit "MemoryBuffer: Add a missing error-check to getOpenFileImpl"
Pavel Labath [Tue, 20 Aug 2019 12:08:52 +0000 (12:08 +0000)]
Recommit "MemoryBuffer: Add a missing error-check to getOpenFileImpl"

This recommits r368977, which was reverted in r369027 due to test
failures in lldb. The cause of this was different behavior of
readNativeFileSlice on windows and unix. These have been addressed in
r369269.

The original commit message was:
In case the function was called with a desired read size *and* the file
was not an "mmap()" candidate, the function was falling back to a
"pread()", but it was failing to check the result of that system call.
This meant that the function would return "success" even though the read
operation failed, and it returned a buffer full of uninitialized memory.

Reviewers: rnk, dblaikie

Subscribers: kristina, llvm-commits

Tags: #llvm

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

llvm-svn: 369370

4 years ago[CMake] Update C4324 MSVC warning comment to explain its still broken at VS2019
Simon Pilgrim [Tue, 20 Aug 2019 11:20:05 +0000 (11:20 +0000)]
[CMake] Update C4324 MSVC warning comment to explain its still broken at VS2019

As promised, I've updated the comment for the C4324 MSVC warning that was re-disabled at rL367409 / rG8f823e63e3edf87ab029ba32b68f3eb5d2f392b5 to put it in terms of currently supported VS versions

llvm-svn: 369368

4 years ago[MCA][X86] Add tests for LOCK variants of standard X86 arithmetic ops
Simon Pilgrim [Tue, 20 Aug 2019 11:13:20 +0000 (11:13 +0000)]
[MCA][X86] Add tests for LOCK variants of standard X86 arithmetic ops

D66424 adds the base support for LOCK so we should be able to add special case support for all these cases in future patches

llvm-svn: 369367

4 years agoFix MSVC "result of 32-bit shift implicitly converted to 64 bits" warning. NFCI.
Simon Pilgrim [Tue, 20 Aug 2019 10:25:57 +0000 (10:25 +0000)]
Fix MSVC "result of 32-bit shift implicitly converted to 64 bits" warning. NFCI.

llvm-svn: 369366

4 years ago[X86][Btver2] Fix latency and throughput of CMPXCHG instructions.
Andrea Di Biagio [Tue, 20 Aug 2019 10:23:55 +0000 (10:23 +0000)]
[X86][Btver2] Fix latency and throughput of CMPXCHG instructions.

On Jaguar, CMPXCHG has a latency of 11cy, and a maximum throughput of 0.33 IPC.
Throughput is superiorly limited to 0.33 because of the implicit in/out
dependency on register EAX. In the case of repeated non-atomic CMPXCHG with the
same memory location, store-to-load forwarding occurs and values for sequent
loads are quickly forwarded from the store buffer.

Interestingly, the functionality in LLVM that computes the reciprocal throughput
doesn't seem to know about RMW instructions. That functionality only looks at
the "consumed resource cycles" for the throughput computation. It should be
fixed/improved by a future patch. In particular, for RMW instructions, that
logic should also take into account for the write latency of in/out register
operands.

An atomic CMPXCHG has a latency of ~17cy. Throughput is also limited to
~17cy/inst due to cache locking, which prevents other memory uOPs to start
executing before the "lock releasing" store uOP.

CMPXCHG8rr and CMPXCHG8rm are treated specially because they decode to one less
macro opcode. Their latency tend to be the same as the other RR/RM variants. RR
variants are relatively fast 3cy (but still microcoded - 5 macro opcodes).

CMPXCHG8B is 11cy and unfortunately doesn't seem to benefit from store-to-load
forwarding. That means, throughput is clearly limited by the in/out dependency
on GPR registers. The uOP composition is sadly unknown (due to the lack of PMCs
for the Integer pipes). I have reused the same mix of consumed resource from the
other CMPXCHG instructions for CMPXCHG8B too.
LOCK CMPXCHG8B is instead 18cycles.

CMPXCHG16B is 32cycles. Up to 38cycles when the LOCK prefix is specified. Due to
the in/out dependencies, throughput is limited to 1 instruction every 32 (or 38)
cycles dependeing on whether the LOCK prefix is specified or not.
I wouldn't be surprised if the microcode for CMPXCHG16B is similar to 2x
microcode from CMPXCHG8B. So, I have speculatively set the JALU01 consumption to
2x the resource cycles used for CMPXCHG8B.

The two new hasLockPrefix() functions are used by the btver2 scheduling model
check if a MCInst/MachineInst has a LOCK prefix. Calls to hasLockPrefix() have
been encoded in predicates of variant scheduling classes that describe lat/thr
of CMPXCHG.

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

llvm-svn: 369365

4 years ago[libcxx] Fix build breakage on mips
Mikhail Maltsev [Tue, 20 Aug 2019 10:19:55 +0000 (10:19 +0000)]
[libcxx] Fix build breakage on mips

Fixes https://bugs.llvm.org/show_bug.cgi?id=43011 caused by
https://reviews.llvm.org/D63284.

Committing as obvious.

llvm-svn: 369364

4 years ago[COFF] Require an explicit -implib option for creating implibs in mingw mode
Martin Storsjo [Tue, 20 Aug 2019 10:14:54 +0000 (10:14 +0000)]
[COFF] Require an explicit -implib option for creating implibs in mingw mode

GNU ld doesn't produce implibs unless explicitly requested.

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

llvm-svn: 369363

4 years ago[yaml2obj/obj2yaml][MachO] Fix a test failure in big endian hosts
Seiya Nuta [Tue, 20 Aug 2019 09:58:31 +0000 (09:58 +0000)]
[yaml2obj/obj2yaml][MachO] Fix a test failure in big endian hosts

These section contents are dummy data (0xdeadbeef) and it's endianess
does not matter.

- http://lab.llvm.org:8011/builders/clang-ppc64be-linux/builds/37265

llvm-svn: 369360

4 years ago[COFF] Allow using custom .edata from input object files
Martin Storsjo [Tue, 20 Aug 2019 09:53:06 +0000 (09:53 +0000)]
[COFF] Allow using custom .edata from input object files

This is used by Wine for manually crafting export tables.

If the input object contains .edata sections, GNU ld references them
in the export directory instead of synthesizing an export table using
either export directives or the normal auto export mechanism. (AFAIK,
historically, way way back, GNU ld didn't support synthesizing the
export table - one was supposed to generate it using dlltool and link
it in instead.)

If faced with --out-implib and --output-def, GNU ld still populates
those output files with the same export info as it would have generated
otherwise, disregarding the input .edata. As this isn't an intended
usage combination, I'm not adding checks for that in tests.

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

llvm-svn: 369358

4 years ago[DWARF] Fix DWARFUnit::getDebugInfoSize() for 64-bit DWARF.
Igor Kudrin [Tue, 20 Aug 2019 09:50:44 +0000 (09:50 +0000)]
[DWARF] Fix DWARFUnit::getDebugInfoSize() for 64-bit DWARF.

The calculation there was correct only for DWARF32.

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

llvm-svn: 369356

4 years ago[lldb][NFC] Test quotes when completing
Raphael Isemann [Tue, 20 Aug 2019 09:26:58 +0000 (09:26 +0000)]
[lldb][NFC] Test quotes when completing

llvm-svn: 369353

4 years ago[lldb] D66174 `RegularExpression` cleanup
Jan Kratochvil [Tue, 20 Aug 2019 09:24:20 +0000 (09:24 +0000)]
[lldb] D66174 `RegularExpression` cleanup

I find as a good cleanup to drop the Compile method. As I do not find TIMTOWTDI
as an advantage and there is already constructor parameter to compile the
regex.

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

llvm-svn: 369352

4 years ago[ELF][PPC] Allow PT_LOAD to have overlapping p_offset ranges on EM_PPC
Fangrui Song [Tue, 20 Aug 2019 09:20:05 +0000 (09:20 +0000)]
[ELF][PPC] Allow PT_LOAD to have overlapping p_offset ranges on EM_PPC

Ported the D64906 technique to EM_PPC.

Delete ppc-rela.s that is covered by ppc32-abs-pic.s

llvm-svn: 369351

4 years ago[clangd] Skip function bodies inside processed files while indexing
Ilya Biryukov [Tue, 20 Aug 2019 08:54:30 +0000 (08:54 +0000)]
[clangd] Skip function bodies inside processed files while indexing

Summary:
This significantly improves performance of background indexing.

We do not collect references and declarations inside the processed
files, so this does not affect the final indexing results.

The idea is borrowed from libclang, which has a similar optimization in
its indexing functionality.

Measurements show a nice decrease in indexing time, up to ~40% for
building the whole index. These are not proper benchmarks, so one should
not rely on these results too much.

1. Rebuilding the whole index for LLVM:
  - Before. Total time: 14m58s.
    ./bin/clangd -pch-storage=memory < ./clangd.input  23917.67s user 515.86s system 2718% cpu 14:58.68 total
  - After. Total time: 8m41s.
    ./bin/clangd -pch-storage=memory < ./clangd.input  13627.29s user 288.10s system 2672% cpu 8:40.67 total

2. Rebuilding index after removing shards matching '*clangd*' (case-insensitively):
  - Before. Total time: 30s.
    ./bin/clangd -pch-storage=memory < ./clangd.input  130.94s user 6.82s system 452% cpu 30.423 total
  - After. Total time: 26s.
    ./bin/clangd -pch-storage=memory < ./clangd.input  80.51s user 5.40s system 333% cpu 25.777 total

Reviewers: kadircet, sammccall

Reviewed By: kadircet

Subscribers: MaskRay, jkorous, arphaman, cfe-commits

Tags: #clang

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

llvm-svn: 369349

4 years ago[yaml2obj/obj2yaml][MachO] Allow setting custom section data
Seiya Nuta [Tue, 20 Aug 2019 08:49:07 +0000 (08:49 +0000)]
[yaml2obj/obj2yaml][MachO] Allow setting custom section data

Reviewers: alexshap, jhenderson, rupprecht

Reviewed By: alexshap, jhenderson

Subscribers: abrachet, hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 369348

4 years ago[ELF][X86] Allow PT_LOAD to have overlapping p_offset ranges on EM_386
Fangrui Song [Tue, 20 Aug 2019 08:43:47 +0000 (08:43 +0000)]
[ELF][X86] Allow PT_LOAD to have overlapping p_offset ranges on EM_386

Ported the D64906 technique to EM_386.

If `sh_addralign(.tdata) < sh_addralign(.tbss)`,
we can potentially make `p_vaddr(PT_TLS)%p_align(PT_TLS) != 0`.

ld.so that are known to have problems if p_vaddr%p_align!=0:

* FreeBSD 13.0-CURRENT rtld-elf
* glibc https://sourceware.org/bugzilla/show_bug.cgi?id=24606

New test i386-tls-vaddr-align.s checks our workaround makes p_vaddr%p_align = 0.

Reviewed By: ruiu

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

llvm-svn: 369347