platform/upstream/llvm.git
5 years agoAdd missing #include for Testing/Support/SupportHelpers.h
Fangrui Song [Thu, 6 Sep 2018 20:01:06 +0000 (20:01 +0000)]
Add missing #include for Testing/Support/SupportHelpers.h

llvm-svn: 341582

5 years ago[ARC] Prevent InstPrinter from crashing on unknown condition codes.
Tatyana Krasnukha [Thu, 6 Sep 2018 19:58:26 +0000 (19:58 +0000)]
[ARC] Prevent InstPrinter from crashing on unknown condition codes.

Summary:
Instruction printer shouldn't crash with assertions due to incorrect input data. llvm_unreachable is not intended for runtime error handling.

Reviewers: petecoup

Reviewed By: petecoup

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

llvm-svn: 341581

5 years agoQuick fix for -DBUILD_SHARED_LIBS=on build after rL341502
Fangrui Song [Thu, 6 Sep 2018 19:51:20 +0000 (19:51 +0000)]
Quick fix for -DBUILD_SHARED_LIBS=on build after rL341502

libLLVMTestingSupport.so references a symbol in utils/unittest/UnitTestMain/TestMain.cpp (a layering issue) and will cause a link error because of -Wl,-z,defs (cmake/modules/HandleLLVMOptions.cmake)

Waiting zturner for a better fix.

llvm-svn: 341580

5 years ago[ORC] Make RuntimeDyldObjectLinkingLayer2 take memory managers by unique_ptr.
Lang Hames [Thu, 6 Sep 2018 19:39:26 +0000 (19:39 +0000)]
[ORC] Make RuntimeDyldObjectLinkingLayer2 take memory managers by unique_ptr.

The existing memory manager API can not be shared between objects when linking
concurrently (since there is no way to know which concurrent allocations were
performed on behalf of which object, and hence which allocations would be safe
to finalize when finalizeMemory is called). For now, we can work around this by
requiring a new memory manager for each object.

This change only affects the concurrent version of the ORC APIs.

llvm-svn: 341579

5 years ago[ORC] Remove the mapSectionAddress method from RuntimeDyldObjectLinkingLayer2.
Lang Hames [Thu, 6 Sep 2018 19:39:22 +0000 (19:39 +0000)]
[ORC] Remove the mapSectionAddress method from RuntimeDyldObjectLinkingLayer2.

Section address mappings can be applied using the RuntimeDyld instance passed to
the RuntimeDyld::MemoryManager::notifyObjectLoaded method. Proving an alternate
route via RuntimeDyldObjectLinkingLayer2 is redundant.

llvm-svn: 341578

5 years ago[llvm-ar] Move a variable declaration closer to where it is needed. NFC.
Martin Storsjo [Thu, 6 Sep 2018 19:03:24 +0000 (19:03 +0000)]
[llvm-ar] Move a variable declaration closer to where it is needed. NFC.

This was from a missed review comment from D51338.

llvm-svn: 341577

5 years ago[clangd] Add "Deprecated" field to Symbol and CodeCompletion.
Eric Liu [Thu, 6 Sep 2018 18:52:26 +0000 (18:52 +0000)]
[clangd] Add "Deprecated" field to Symbol and CodeCompletion.

Summary: Also set "deprecated" field in LSP CompletionItem.

Reviewers: sammccall, kadircet

Reviewed By: sammccall

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

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

llvm-svn: 341576

5 years ago[x86] add tests for pow --> cbrt; NFC
Sanjay Patel [Thu, 6 Sep 2018 18:42:55 +0000 (18:42 +0000)]
[x86] add tests for pow --> cbrt; NFC

llvm-svn: 341575

5 years agoMove init code in AArch64SelectionDAGTest to SetUpTestCase (NFC)
Scott Linder [Thu, 6 Sep 2018 18:40:35 +0000 (18:40 +0000)]
Move init code in AArch64SelectionDAGTest to SetUpTestCase (NFC)

llvm-svn: 341574

5 years agoRemove deprecated API
Stephen Kelly [Thu, 6 Sep 2018 18:26:30 +0000 (18:26 +0000)]
Remove deprecated API

Reviewers: teemperor!

Subscribers: cfe-commits

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

llvm-svn: 341573

5 years agoRe-land r334417 "[MS] Use mangled names and comdats for string merging with ASan"
Reid Kleckner [Thu, 6 Sep 2018 18:25:39 +0000 (18:25 +0000)]
Re-land r334417 "[MS] Use mangled names and comdats for string merging with ASan"

The issue with -fprofile-generate was fixed and the dependent CL
relanded in r340232.

llvm-svn: 341572

5 years ago[llvm-ar] Support * as comment char in MRI scripts
Martin Storsjo [Thu, 6 Sep 2018 18:10:45 +0000 (18:10 +0000)]
[llvm-ar] Support * as comment char in MRI scripts

MRI scripts have two comment chars, * and ;, but only the latter was
supported before.

Also allow leading spaces before comment chars (and before any command
string), and allow comments after a command.

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

llvm-svn: 341571

5 years ago[OPENMP] Fix PR38823: Do not emit vtable if it is not used in target
Alexey Bataev [Thu, 6 Sep 2018 17:56:28 +0000 (17:56 +0000)]
[OPENMP] Fix PR38823: Do not emit vtable if it is not used in target
context.

If the explicit template instantiation definition defined outside of the
target context, its vtable should not be marked as used. This is true
for other situations where the compiler want to emit vtables
unconditionally.

llvm-svn: 341570

5 years ago[libfuzzer] Correct typo in comment (test commit).
Jonathan Metzman [Thu, 6 Sep 2018 17:50:01 +0000 (17:50 +0000)]
[libfuzzer] Correct typo in comment (test commit).

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

llvm-svn: 341569

5 years ago[dsymutil] Reduce peak memory usage for the single threaded execution.
Jonas Devlieghere [Thu, 6 Sep 2018 17:31:59 +0000 (17:31 +0000)]
[dsymutil] Reduce peak memory usage for the single threaded execution.

Keeping the compile units in memory is expensive. For the single
threaded case we allocate them in the analyze part and deallocate them
again once we've finished cloning. This poses a problem in the single
threaded case where we did all the analysis first followed by all the
cloning. This meant we had all the link context in memory right after
analyzing finished.

This patch changes the way we order work in the single threaded case.
Instead of doing all the analysis and cloning in serial, we now
interleave the two so we can deallocate the memory as soon as a file is
processed. The result is binary identical and peak memory usage went
down from 13.43GB to 5.73GB for a debug build of trunk clang.

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

llvm-svn: 341568

5 years agoAMDGPU: Remove old hack for function addresses
Matt Arsenault [Thu, 6 Sep 2018 17:23:24 +0000 (17:23 +0000)]
AMDGPU: Remove old hack for function addresses

llvm-svn: 341567

5 years ago[Sema] Clean up some __builtin_*_chk diagnostics
Erik Pilkington [Thu, 6 Sep 2018 17:19:33 +0000 (17:19 +0000)]
[Sema] Clean up some __builtin_*_chk diagnostics

Namely, print the likely macro name when it's used, and include the actual
computed sizes in the diagnostic message, which are sometimes not obvious.

rdar://43909200

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

llvm-svn: 341566

5 years ago[NFC] - in preparation for adding nsw, nuw and exact as flags to MI
Michael Berg [Thu, 6 Sep 2018 17:07:29 +0000 (17:07 +0000)]
[NFC] - in preparation for adding nsw, nuw and exact as flags to MI

llvm-svn: 341565

5 years agoRe-commit "Enable DWARF accelerator tables by default when tuning for lldb (-glldb...
Pavel Labath [Thu, 6 Sep 2018 17:01:45 +0000 (17:01 +0000)]
Re-commit "Enable DWARF accelerator tables by default when tuning for lldb (-glldb => -gpubnames)""

This recommits r341472, which was reverted due to test failures on macos bots.

The issue was that a macos target implies -glldb which, together with
this patch added a -gpubnames switch where there previously wasn't one.
The intentions of those checks was to check that -gpubnames is not
emitted by default so I add an explicit -ggdb arg to those command lines
to get same behavior on all platforms (the fact that -glldb *does* set
-gpubnames is tested by a separate test).

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

llvm-svn: 341564

5 years ago[libomptarget] Remove two unneeded includes, NFCI.
Jonas Hahnfeld [Thu, 6 Sep 2018 17:00:57 +0000 (17:00 +0000)]
[libomptarget] Remove two unneeded includes, NFCI.

Follow-up to r340542 and r340767.

llvm-svn: 341563

5 years ago[libfuzzer] Fix fuzzer-oom.test on windows and reenable it.
Max Moroz [Thu, 6 Sep 2018 16:48:18 +0000 (16:48 +0000)]
[libfuzzer] Fix fuzzer-oom.test on windows and reenable it.

Summary: Patch by Jonathan Metzman (@metzman).

Reviewers: Dor1s, morehouse

Reviewed By: Dor1s

Subscribers: delcypher, llvm-commits, #sanitizers

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

llvm-svn: 341562

5 years agoFix a warning.
Zachary Turner [Thu, 6 Sep 2018 16:34:56 +0000 (16:34 +0000)]
Fix a warning.

llvm-svn: 341561

5 years agoReverting r 341390 because it is causing test failures on GreenDragon.
A Bergen [Thu, 6 Sep 2018 16:29:40 +0000 (16:29 +0000)]
Reverting r 341390 because it is causing test failures on GreenDragon.

http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental/52810/

llvm-svn: 341560

5 years ago[InstCombine] add xor+not folds
Sanjay Patel [Thu, 6 Sep 2018 16:23:40 +0000 (16:23 +0000)]
[InstCombine] add xor+not folds

This fold is needed to avoid a regression when we try
to recommit rL300977.
We can't see the most basic win currently because
demanded bits changes the patterns:
https://rise4fun.com/Alive/plpp

llvm-svn: 341559

5 years agoARM64: improve non-zero memset isel by ~2x
JF Bastien [Thu, 6 Sep 2018 16:03:32 +0000 (16:03 +0000)]
ARM64: improve non-zero memset isel by ~2x

Summary:
I added a few ARM64 memset codegen tests in r341406 and r341493, and annotated
where the generated code was bad. This patch fixes the majority of the issues by
requesting that a 2xi64 vector be used for memset of 32 bytes and above.

The patch leaves the former request for f128 unchanged, despite f128
materialization being suboptimal: doing otherwise runs into other asserts in
isel and makes this patch too broad.

This patch hides the issue that was present in bzero_40_stack and bzero_72_stack
because the code now generates in a better order which doesn't have the store
offset issue. I'm not aware of that issue appearing elsewhere at the moment.

<rdar://problem/44157755>

Reviewers: t.p.northover, MatzeB, javed.absar

Subscribers: eraman, kristof.beyls, chrib, dexonsmith, llvm-commits

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

llvm-svn: 341558

5 years ago[InstCombine] add tests for xor-not; NFC
Sanjay Patel [Thu, 6 Sep 2018 15:35:01 +0000 (15:35 +0000)]
[InstCombine] add tests for xor-not; NFC

These tests demonstrate a missing fold that would
also be needed to avoid a regression when we try
to recommit rL300977.

llvm-svn: 341557

5 years agoRemove unnecessary semicolon to silence -Wpedantic warning. NFCI.
Simon Pilgrim [Thu, 6 Sep 2018 15:16:17 +0000 (15:16 +0000)]
Remove unnecessary semicolon to silence -Wpedantic warning. NFCI.

llvm-svn: 341556

5 years agoRemove unnecessary semicolon to silence -Wpedantic warning. NFCI.
Simon Pilgrim [Thu, 6 Sep 2018 15:15:28 +0000 (15:15 +0000)]
Remove unnecessary semicolon to silence -Wpedantic warning. NFCI.

llvm-svn: 341555

5 years ago[MSan] store origins for variadic function parameters in __msan_va_arg_origin_tls
Alexander Potapenko [Thu, 6 Sep 2018 15:14:36 +0000 (15:14 +0000)]
[MSan] store origins for variadic function parameters in __msan_va_arg_origin_tls

Add the __msan_va_arg_origin_tls TLS array to keep the origins for variadic function parameters.
Change the instrumentation pass to store parameter origins in this array.

This is a reland of r341528.

test/msan/vararg.cc doesn't work on Mips, PPC and AArch64 (because this
patch doesn't touch them), XFAIL these arches.
Also turned out Clang crashed on i80 vararg arguments because of
incorrect origin type returned by getOriginPtrForVAArgument() - fixed it
and added a test.

llvm-svn: 341554

5 years ago[OpenCL] Relax diagnostics on OpenCL access qualifiers
Andrew Savonichev [Thu, 6 Sep 2018 15:10:26 +0000 (15:10 +0000)]
[OpenCL] Relax diagnostics on OpenCL access qualifiers

Summary:
Emit warning for multiple access qualifiers if they do not conflict.

Patch by Alexey Bader

Reviewers: Anastasia, yaxunl

Reviewed By: Anastasia

Subscribers: asavonic, bader, cfe-commits

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

llvm-svn: 341553

5 years ago[clangd] Fix Dex initialization
Kirill Bobyrev [Thu, 6 Sep 2018 15:10:10 +0000 (15:10 +0000)]
[clangd] Fix Dex initialization

This patch sets URI schemes of Dex to SymbolCollector's default schemes
in case callers tried to pass empty list of schemes. This was the case
for initialization in Clangd main and was a reason of incorrect
behavior.

Also, it fixes a bug with missed `continue;` after spotting invalid URI
scheme conversion.

llvm-svn: 341552

5 years ago[libc++] Add a link to the Release notes from the main libc++ documentation
Louis Dionne [Thu, 6 Sep 2018 15:05:43 +0000 (15:05 +0000)]
[libc++] Add a link to the Release notes from the main libc++ documentation

llvm-svn: 341551

5 years ago[libcxx] Add ReleaseNotes.rst file for release notes
Louis Dionne [Thu, 6 Sep 2018 14:46:22 +0000 (14:46 +0000)]
[libcxx] Add ReleaseNotes.rst file for release notes

llvm-svn: 341550

5 years agoRevert "[DebugInfo] Generate debug information for labels. (Fix PR37395)"
Sam McCall [Thu, 6 Sep 2018 14:27:40 +0000 (14:27 +0000)]
Revert "[DebugInfo] Generate debug information for labels. (Fix PR37395)"

This reverts commit r341519, which generates debug info that causes
backend crashes. (with -split-dwarf-file)

Details in https://reviews.llvm.org/D50495

llvm-svn: 341549

5 years agoFix march triple used test from rL341475
Diogo N. Sampaio [Thu, 6 Sep 2018 14:13:10 +0000 (14:13 +0000)]
Fix march triple used test from rL341475

Change the march triple of test files, possible fixing
test failures due rL341475

llvm-svn: 341548

5 years agoFix the -print-multi-directory flag to print the selected multilib.
Christian Bruel [Thu, 6 Sep 2018 14:03:44 +0000 (14:03 +0000)]
Fix the -print-multi-directory flag to print the selected multilib.

Summary: Fix -print-multi-directory to print the selected multilib

Reviewers: jroelofs

Reviewed By: jroelofs

Subscribers: jroelofs, timshen, thakis, srhines, cfe-commits

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

llvm-svn: 341547

5 years ago[RISCV][NFC] Rework test/MC/RISCV/rv{32,64}* to allow testing of symbol operands
Alex Bradbury [Thu, 6 Sep 2018 13:41:04 +0000 (13:41 +0000)]
[RISCV][NFC] Rework test/MC/RISCV/rv{32,64}* to allow testing of symbol operands

Standardise on check lines:
* CHECK-ASM
* CHECK-OBJ
* CHECK-ASM-AND-OBJ

This allows for the addition of tests involving symbol operands, which will
not result in identical instructions in both assembly and disassembled object
output.

This commit doesn't exploit this reworking to increase test coverage of symbol
operands - that will come in a future patch.

llvm-svn: 341546

5 years ago[InstCombine] fix formatting in SimplifyDemandedVectorElts->Select; NFCI
Sanjay Patel [Thu, 6 Sep 2018 13:19:22 +0000 (13:19 +0000)]
[InstCombine] fix formatting in SimplifyDemandedVectorElts->Select; NFCI

I'm preparing to add the same functionality both here and to the DAG
version of this code in D51696 / D51433, so try to make those cases
as similar as possible to avoid bugs.

llvm-svn: 341545

5 years ago[clangd] NFC: Use TopN instead of std::priority_queue
Kirill Bobyrev [Thu, 6 Sep 2018 13:15:03 +0000 (13:15 +0000)]
[clangd] NFC: Use TopN instead of std::priority_queue

Quality.cpp defines a structure for convenient storage of Top N items,
it should be used instead of the `std::priority_queue` with slightly
obscure semantics.

This patch does not affect functionality.

Reviewed By: sammccall

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

llvm-svn: 341544

5 years ago[clangd] NFC: mark single-parameter constructors explicit
Kirill Bobyrev [Thu, 6 Sep 2018 13:06:04 +0000 (13:06 +0000)]
[clangd] NFC: mark single-parameter constructors explicit

Code health: prevent implicit conversions to user-defined types.

Reviewed By: sammccall

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

llvm-svn: 341543

5 years ago[clangd] Implement proximity path boosting for Dex
Kirill Bobyrev [Thu, 6 Sep 2018 12:54:43 +0000 (12:54 +0000)]
[clangd] Implement proximity path boosting for Dex

This patch introduces `PathURI` Search Token kind and utilizes it to
uprank symbols which are defined in files with small distance to the
directory where the fuzzy find request is coming from (e.g. files user
is editing).

Reviewed By: ioeric

Reviewers: ioeric, sammccall

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

llvm-svn: 341542

5 years ago[MSan] revert r341528 to unbreak the bots
Alexander Potapenko [Thu, 6 Sep 2018 12:19:27 +0000 (12:19 +0000)]
[MSan] revert r341528 to unbreak the bots

llvm-svn: 341541

5 years agoARM: wrap call to __clzsi2 so that the name is correct on MachO.
Tim Northover [Thu, 6 Sep 2018 12:13:46 +0000 (12:13 +0000)]
ARM: wrap call to __clzsi2 so that the name is correct on MachO.

MachO symbols are prefixed with an extra '_' (that's 3 in total for this
function), so assembly calls have to go through a wrapper to insert any prefix
needed.

llvm-svn: 341540

5 years ago[OpenCL] Disallow negative attribute arguments
Andrew Savonichev [Thu, 6 Sep 2018 11:54:09 +0000 (11:54 +0000)]
[OpenCL] Disallow negative attribute arguments

Summary:
Negative arguments in kernel attributes are silently bitcast'ed to
unsigned, for example:

    __attribute__((reqd_work_group_size(1, -1, 1)))
    __kernel void k() {}

is a complete equivalent of:

    __attribute__((reqd_work_group_size(1, 4294967294, 1)))
    __kernel void k() {}

This is likely an error, so the patch forbids negative arguments in
several OpenCL attributes. Users who really want 4294967294 can still
use it as an unsigned representation.

Reviewers: Anastasia, yaxunl, bader

Reviewed By: Anastasia, yaxunl, bader

Subscribers: bader, cfe-commits

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

llvm-svn: 341539

5 years ago[clangd] Fix data race in async fuzzyFind tests.
Ilya Biryukov [Thu, 6 Sep 2018 11:04:56 +0000 (11:04 +0000)]
[clangd] Fix data race in async fuzzyFind tests.

llvm-svn: 341538

5 years ago[LoopInterchange] Cleanup unused variables.
Florian Hahn [Thu, 6 Sep 2018 10:41:01 +0000 (10:41 +0000)]
[LoopInterchange] Cleanup unused variables.

llvm-svn: 341537

5 years agoFix argument type in MachineInstr::hasPropertyInBundle
Sven van Haastregt [Thu, 6 Sep 2018 10:25:59 +0000 (10:25 +0000)]
Fix argument type in MachineInstr::hasPropertyInBundle

The MCID::Flag enumeration now has more than 32 items, this means that
the hasPropertyBundle argument 'Mask' can overflow.

This patch changes the argument to be 64 bits instead.

Patch by Mikael Nilsson.

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

llvm-svn: 341536

5 years agoReland [ClangUserExpression][NFC] Removed unused code
Raphael Isemann [Thu, 6 Sep 2018 10:24:11 +0000 (10:24 +0000)]
Reland [ClangUserExpression][NFC] Removed unused code

The GetLanguageForExpr has side effects, so we can't remove this
call without breaking the completion mechanism. However, we can
keep the change that gets rid of this unnecessary variable.

llvm-svn: 341535

5 years ago[clangd] Set SymbolID for sema macros so that they can be merged with index macros.
Eric Liu [Thu, 6 Sep 2018 09:59:37 +0000 (09:59 +0000)]
[clangd] Set SymbolID for sema macros so that they can be merged with index macros.

Reviewers: sammccall

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

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

llvm-svn: 341534

5 years ago[LoopInterchange] Move preheader creation to transform stage and simplify.
Florian Hahn [Thu, 6 Sep 2018 09:57:27 +0000 (09:57 +0000)]
[LoopInterchange] Move preheader creation to transform stage and simplify.

There is no need to create preheaders in the analysis stage, we only
need them when adjusting the branches. Also, the only cases we need to
create our own preheaders is when they have more than 1 predecessors or
PHI nodes (even with only 1 predecessor, we could have an LCSSA phi
node). I have simplified the conditions and added some assertions to be
sure. Because we know the inner and outer loop need to be tightly
nested, it is sufficient to check if the inner loop preheader is the
outer loop header to check if we need to create a new preheader.

Reviewers: efriedma, mcrosier, karthikthecool

Reviewed By: efriedma

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

llvm-svn: 341533

5 years agoRevert "[ClangUserExpression][NFC] Removed unused code"
Raphael Isemann [Thu, 6 Sep 2018 09:42:44 +0000 (09:42 +0000)]
Revert "[ClangUserExpression][NFC] Removed unused code"

GetLanguageForExpr has side effects, so this actually breaks
the completion. Should fix TestExprCompletion.

llvm-svn: 341532

5 years ago[NFC] Simplify inner structure of InstructionPrecedenceTracking
Max Kazantsev [Thu, 6 Sep 2018 09:29:42 +0000 (09:29 +0000)]
[NFC] Simplify inner structure of InstructionPrecedenceTracking

Currently it has a set KnownBlocks that marks blocks as having cached
answers and a map FirstSpecialInsts that maps these blocks to first
special instructions in them. The value in the map is always non-null,
and for blocks that are known to have no special instructions the map
does not have an instance.

This patch removes KnownBlocks as obsolete. Instead, for blocks that
are known to have no special instructions, we just put a nullptr value.
This makes the code much easier to read.

llvm-svn: 341531

5 years ago[MSan] store origins for variadic function parameters in __msan_va_arg_origin_tls
Alexander Potapenko [Thu, 6 Sep 2018 08:50:11 +0000 (08:50 +0000)]
[MSan] store origins for variadic function parameters in __msan_va_arg_origin_tls

Add the __msan_va_arg_origin_tls TLS array to keep the origins for
variadic function parameters.
Change the instrumentation pass to store parameter origins in this array.

llvm-svn: 341528

5 years ago[SLC] Add an alignment to CreateGlobalString
David Green [Thu, 6 Sep 2018 08:42:17 +0000 (08:42 +0000)]
[SLC] Add an alignment to CreateGlobalString

Previously the alignment on the newly created global strings was not set,
meaning that DataLayout::getPreferredAlignment was free to overalign it
to 16 bytes. This caused unnecessary code bloat with the padding between
variables.

The main example of this happening was the printf->puts optimisation in
SimplifyLibCalls, but as the change here is made in
IRBuilderBase::CreateGlobalString, other globals using this will now be
aligned too.

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

llvm-svn: 341527

5 years agoReturn "[NFC] Add severe validation of InstructionPrecedenceTracking"
Max Kazantsev [Thu, 6 Sep 2018 08:33:02 +0000 (08:33 +0000)]
Return "[NFC] Add severe validation of InstructionPrecedenceTracking"

This validation patch has been reverted as rL341147 because of conserns raised by
@reames. This revision returns it as is to raise a discussion and address the concerns.

Differential Revision: https://reviews.llvm.org/D51523
Reviewed By: reames

llvm-svn: 341526

5 years ago[MSan] Make sure variadic function arguments do not overflow __msan_va_arg_tls
Alexander Potapenko [Thu, 6 Sep 2018 08:21:54 +0000 (08:21 +0000)]
[MSan] Make sure variadic function arguments do not overflow __msan_va_arg_tls

Turns out that calling a variadic function with too many (e.g. >100 i64's)
arguments overflows __msan_va_arg_tls, which leads to smashing other TLS
data with function argument shadow values.

getShadow() already checks for kParamTLSSize and returns clean shadow if
the argument does not fit, so just skip storing argument shadow for such
arguments.

llvm-svn: 341525

5 years ago[DebugInfo] Generate debug information for labels. (Fix PR37395)
Hsiangkai Wang [Thu, 6 Sep 2018 06:03:36 +0000 (06:03 +0000)]
[DebugInfo] Generate debug information for labels. (Fix PR37395)

Generate DILabel metadata and call llvm.dbg.label after label
statement to associate the metadata with the label.

After fixing PR37395.
After fixing problems in LiveDebugVariables.

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

llvm-svn: 341519

5 years ago[XRay] Add a BlockIndexer visitor for FDR Records.
Dean Michael Berris [Thu, 6 Sep 2018 05:55:57 +0000 (05:55 +0000)]
[XRay] Add a BlockIndexer visitor for FDR Records.

Summary:
This change adds a `BlockIndexer` type which maintains pointers to
records that belong to the same process+thread pairs. The indexing
happens with order of appearance of records as they are visited.

This version of the indexer currently only supports FDR version 3 logs,
which contain `BufferExtent` records. We will add support for v2 and v1
logs in follow-up patches.

This is another part of D50441.

Reviewers: eizan, kpw, mboerger

Reviewed By: mboerger

Subscribers: mboerger, mgorny, hiraditya, llvm-commits

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

llvm-svn: 341518

5 years agoRevert "[IndVars] Turn isValidRewrite into an assertion" because it seems wrong
Max Kazantsev [Thu, 6 Sep 2018 05:52:47 +0000 (05:52 +0000)]
Revert "[IndVars] Turn isValidRewrite into an assertion" because it seems wrong

llvm-svn: 341517

5 years ago[IndVars] Turn isValidRewrite into an assertion
Max Kazantsev [Thu, 6 Sep 2018 05:21:25 +0000 (05:21 +0000)]
[IndVars] Turn isValidRewrite into an assertion

Function rewriteLoopExitValues contains a check on isValidRewrite which
is needed to make sure that SCEV does not convert the pattern
`gep Base, (&p[n] - &p[0])` into `gep &p[n], Base - &p[0]`. This problem
has been fixed in SCEV long ago, so this check is just obsolete.

This patch converts it into an assertion to make sure that the SCEV will
not mess up this case in the future.

Differential Revision: https://reviews.llvm.org/D51582
Reviewed By: atrick

llvm-svn: 341516

5 years agoRevert rL341509 to fix massive failures on buildbots
Max Kazantsev [Thu, 6 Sep 2018 04:40:49 +0000 (04:40 +0000)]
Revert rL341509 to fix massive failures on buildbots

llvm-svn: 341515

5 years ago[libfuzzer] Temporarily disable unittests failing on Windows.
Max Moroz [Thu, 6 Sep 2018 02:54:47 +0000 (02:54 +0000)]
[libfuzzer] Temporarily disable unittests failing on Windows.

Summary:
Patch by Jonathan Metzman (@metzman).

Reviewers: morehouse, Dor1s

Reviewed By: Dor1s

Subscribers: kcc, delcypher, llvm-commits, #sanitizers

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

llvm-svn: 341514

5 years ago[DebugInfo] Do not generate label debug info if it has been processed.
Hsiangkai Wang [Thu, 6 Sep 2018 02:22:06 +0000 (02:22 +0000)]
[DebugInfo] Do not generate label debug info if it has been processed.

In DwarfDebug::collectEntityInfo(), if the label entity is processed in
DbgLabels list, it means the label is not optimized out. There is no
need to generate debug info for it with null position.

llvm-svn: 341513

5 years ago[X86][Assembler] Allow %eip as a register in 32-bit mode for .cfi directives.
Craig Topper [Thu, 6 Sep 2018 02:03:14 +0000 (02:03 +0000)]
[X86][Assembler] Allow %eip as a register in 32-bit mode for .cfi directives.

This basically reverts a change made in r336217, but improves the text of the error message for not allowing IP-relative addressing in 32-bit mode.

Fixes PR38826.

Patch by Iain Sandoe.

llvm-svn: 341512

5 years agoRe-instate a bit of code that was commented out in r188246 which
Jason Molenda [Thu, 6 Sep 2018 00:55:27 +0000 (00:55 +0000)]
Re-instate a bit of code that was commented out in r188246 which
reads an ObjectFileMachO's string table in one chunk.  Originally
this was commented out because binaries in the system's shared cache
all share a mega-string table and so reading the entire mega-strtab
for each binary was a performance problem.

In the reinstated code, I add a check that the binary we're reading
from memory is not in the shared cache (there isn't a constant in
<mach-o/loader.h> for this bit yet; we hardcode the value in one
other place in ObjectFileMachO alread).  For binaries that we're
reading out of memory that are NOT in the shared cache, reading
the string table in one chunk is a big performance improvement.

Also have debugserver send up the flags value for binaries in its
response to the jGetLoadedDynamicLibrariesInfos request.

NFC.

<rdar://problem/33604496>

llvm-svn: 341511

5 years ago[llvm-dwp] Fix `UN:` lines (supposed to be `RUN:`) in X86/simple.test and adjust...
Fangrui Song [Thu, 6 Sep 2018 00:46:30 +0000 (00:46 +0000)]
[llvm-dwp] Fix `UN:` lines (supposed to be `RUN:`) in X86/simple.test and adjust check lines for TYPES:

Reviewers: dblaikie, aprantl

Subscribers: llvm-commits

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

llvm-svn: 341510

5 years ago[llvm-dwp] Use buffer_stream if output file is not seekable (e.g. "-")
Fangrui Song [Thu, 6 Sep 2018 00:06:25 +0000 (00:06 +0000)]
[llvm-dwp] Use buffer_stream if output file is not seekable (e.g. "-")

Reviewers: dblaikie, pcc

Subscribers: llvm-commits

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

llvm-svn: 341509

5 years agoFix some warnings.
Zachary Turner [Thu, 6 Sep 2018 00:06:20 +0000 (00:06 +0000)]
Fix some warnings.

llvm-svn: 341508

5 years ago[hwasan] when verbose_threads==1, print the memory usage per thread
Kostya Serebryany [Wed, 5 Sep 2018 23:52:31 +0000 (23:52 +0000)]
[hwasan] when verbose_threads==1, print the memory usage per thread

llvm-svn: 341507

5 years agoPrint column info in backtraces et al. if available
Adrian Prantl [Wed, 5 Sep 2018 23:52:08 +0000 (23:52 +0000)]
Print column info in backtraces et al. if available

This patch allows LLDB to print column info in backtraces et al. if
available, which is useful when the backtrace contains a frame like
the following:

  f(can_crash(0), can_crash(1));

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

llvm-svn: 341506

5 years agoFix silly error in unittest helper.
Zachary Turner [Wed, 5 Sep 2018 23:45:48 +0000 (23:45 +0000)]
Fix silly error in unittest helper.

llvm-svn: 341505

5 years agoNFC: improve ARM64 isFPImmLegal debug print
JF Bastien [Wed, 5 Sep 2018 23:38:11 +0000 (23:38 +0000)]
NFC: improve ARM64 isFPImmLegal debug print

Forking this change from D51706. This just made it easier to understand llc
output with -debug.

llvm-svn: 341504

5 years ago[PDB] Refactor the PDB symbol classes to fix a reuse bug.
Zachary Turner [Wed, 5 Sep 2018 23:30:38 +0000 (23:30 +0000)]
[PDB] Refactor the PDB symbol classes to fix a reuse bug.

The way DIA SDK works is that when you request a symbol, it
gets assigned an internal identifier that is unique for the
life of the session.  You can then use this identifier to
get back the same symbol, with all of the same internal state
that it had before, even if you "destroyed" the original
copy of the object you had.

This didn't work properly in our native implementation, and
if you destroyed an object for a particular symbol, then
requested the same symbol again, it would get assigned a new
ID and you'd get a fresh copy of the object.  In order to fix
this some refactoring had to happen to properly reuse cached
objects.  Some unittests are added to verify that symbol
reuse is taking place, making use of the new unittest input
feature.

llvm-svn: 341503

5 years agoAdd support for unittest inputs.
Zachary Turner [Wed, 5 Sep 2018 23:30:17 +0000 (23:30 +0000)]
Add support for unittest inputs.

Occasionally it is useful to have unittest which take inputs.
While we normally try to have this test be more of a lit test
we occasionally don't have tools that can exercise the code
in the right way to test certain things.  LLDB has been using
this style of unit test for a while, particularly with regards
to how it tests core dump and minidump file parsing.  Recently
i needed this as well for the case where we want to test that
some of the PDB reading code works correctly.  It needs to
exercise the code in a way that is not covered by any dumper
and would be impractical to implement in one of the dumpers,
but requires a valid PDB file.  Since this is now needed by
more than one project, it makes sense to have this be a
generally supported thing that unit tests can do, and we just
encourage people to use this sparingly.

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

llvm-svn: 341502

5 years ago[hwasan] simplify the code, NFC
Kostya Serebryany [Wed, 5 Sep 2018 23:22:38 +0000 (23:22 +0000)]
[hwasan] simplify the code, NFC

llvm-svn: 341501

5 years ago[hwasan] Don't handle signals on Android.
Evgeniy Stepanov [Wed, 5 Sep 2018 22:46:19 +0000 (22:46 +0000)]
[hwasan] Don't handle signals on Android.

Sigtrap is used for error reporting, but all other signals are better
left for the platform.

In particular, sanitizer signal handlers do not dump registers or
memory which makes debugging harder for no good reason.

llvm-svn: 341500

5 years agoPR38627: Fix handling of exception specification adjustment for
Richard Smith [Wed, 5 Sep 2018 22:30:37 +0000 (22:30 +0000)]
PR38627: Fix handling of exception specification adjustment for
destructors.

We previously tried to patch up the exception specification after
completing the class, which went wrong when the exception specification
was needed within the class body (in particular, by a friend
redeclaration of the destructor in a nested class). We now mark the
destructor as having a not-yet-computed exception specification
immediately after creating it.

This requires delaying various checks against the exception
specification (where we'd previously have just got the wrong exception
specification, and now find we have an exception specification that we
can't compute yet) when those checks fire while the class is being
defined.

This also exposed an issue that we were missing a CodeSynthesisContext
for computation of exception specifications (otherwise we'd fail to make
the module containing the definition of the class visible when computing
its members' exception specs). Adding that incidentally also gives us a
diagnostic quality improvement.

This has also exposed an pre-existing problem: making the exception
specification evaluation context a non-SFINAE context (as it should be)
results in a bootstrap failure; PR38850 filed for this.

llvm-svn: 341499

5 years agoRemove unnecessary options from test RUN lines.
Richard Trieu [Wed, 5 Sep 2018 22:14:46 +0000 (22:14 +0000)]
Remove unnecessary options from test RUN lines.

These tests do not check the color printing, so color options should not
be used when running them.

llvm-svn: 341498

5 years agoSet Windows console mode to enable support for ansi escape codes
David Bolvansky [Wed, 5 Sep 2018 22:06:58 +0000 (22:06 +0000)]
Set Windows console mode to enable support for ansi escape codes

Summary:
Windows console now supports supports ANSI escape codes, but we need to enable it using SetConsoleMode with ENABLE_VIRTUAL_TERMINAL_PROCESSING flag.

https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences.

Syntax hightlighting now works fine on Windows:
https://i.imgur.com/P0i04A7.png

Reviewers: JDevlieghere, teemperor, zturner

Reviewed By: zturner

Subscribers: abidh, lldb-commits

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

llvm-svn: 341497

5 years agoAdd triple to test case.
Richard Trieu [Wed, 5 Sep 2018 21:55:09 +0000 (21:55 +0000)]
Add triple to test case.

This test uses enums, which have different behavior when targeting different
systems.  Specifying a triple will give predictable behavior to this test.

llvm-svn: 341496

5 years ago[libfuzzer] Replace memmem with strstr.
Matt Morehouse [Wed, 5 Sep 2018 21:03:43 +0000 (21:03 +0000)]
[libfuzzer] Replace memmem with strstr.

Summary: Memmem is not available on Windows.

Patch By: metzman

Reviewers: morehouse

Reviewed By: morehouse

Subscribers: george.karpenkov, morehouse

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

llvm-svn: 341495

5 years agoRemove some unnecessary constructor arguments.
Lang Hames [Wed, 5 Sep 2018 20:57:41 +0000 (20:57 +0000)]
Remove some unnecessary constructor arguments.

ExecutionSession defaults to creating a new shared pool if none is provided,
so explicitly passing one in is unnecessary.

llvm-svn: 341494

5 years agoNFC: more memset inline arm64 coverage
JF Bastien [Wed, 5 Sep 2018 20:35:06 +0000 (20:35 +0000)]
NFC: more memset inline arm64 coverage

I'm looking at some codegen optimization in this area and want to make sure I understand the current codegen and don't regress it. This patch further expands the tests (which I already expanded in r341406) to capture more of the current code generation when it comes to stack-based small non-zero memset on arm64. This patch annotates some potential fixes.

llvm-svn: 341493

5 years agoRevert "Enable DWARF accelerator tables by default when tuning for lldb (-glldb ...
Pavel Labath [Wed, 5 Sep 2018 20:20:28 +0000 (20:20 +0000)]
Revert "Enable DWARF accelerator tables by default when tuning for lldb (-glldb => -gpubnames)"

This reverts commit r341472 due to breakage in green dragon bots.

llvm-svn: 341492

5 years agoForbid address spaces on compound literals in local scope.
John McCall [Wed, 5 Sep 2018 19:22:40 +0000 (19:22 +0000)]
Forbid address spaces on compound literals in local scope.

Patch by Bevin Hansson!

llvm-svn: 341491

5 years ago[Sema] Don't warn about omitting unavailable enum constants in a switch
Erik Pilkington [Wed, 5 Sep 2018 19:13:27 +0000 (19:13 +0000)]
[Sema] Don't warn about omitting unavailable enum constants in a switch

rdar://42717026

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

llvm-svn: 341490

5 years agoAdd -Wobjc-property-assign-on-object-type.
John McCall [Wed, 5 Sep 2018 19:02:00 +0000 (19:02 +0000)]
Add -Wobjc-property-assign-on-object-type.

This is a warning about using 'assign' instead of 'unsafe_unretained'
in Objective-C property declarations.  It's off by default because there
isn't consensus in the Objective-C steering group that this is the right
thing to do, but we're nonetheless okay with adding it because there's a
substantial pool of Objective-C programmers who will appreciate the warning.

Patch by Alfred Zien!

llvm-svn: 341489

5 years ago[clang-tidy] minor bug fix to AbseilMatcher.h
Eric Liu [Wed, 5 Sep 2018 19:01:34 +0000 (19:01 +0000)]
[clang-tidy] minor bug fix to AbseilMatcher.h

This missing directory is not yet released, but is causing some problems
internally. It's gonna be released eventually and received permission to
include it here. This matcher will also be periodically updated by my
team as we have more releases and or problems internally.

Patch by Hugo Gonzalez!

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

llvm-svn: 341488

5 years agoModernize NativeProcessProtocol::GetSoftwareBreakpointTrapOpcode
Pavel Labath [Wed, 5 Sep 2018 18:08:56 +0000 (18:08 +0000)]
Modernize NativeProcessProtocol::GetSoftwareBreakpointTrapOpcode

return the opcode as a Expected<ArrayRef> instead of a
Status+pointer+size combo.

I also move the linux implementation to the base class, as the trap
opcodes are likely to be the same for all/most implementations of the
class (except the arm one, where linux chooses a different opcode than
what the arm spec recommends, which I keep linux-specific).

llvm-svn: 341487

5 years agolld-link: Write an empty "repro" debug directory entry if /Brepro is passed
Nico Weber [Wed, 5 Sep 2018 18:02:43 +0000 (18:02 +0000)]
lld-link: Write an empty "repro" debug directory entry if /Brepro is passed

If the coff timestamp is set to a hash, like lld-link does if /Brepro is
passed, the coff spec suggests that a IMAGE_DEBUG_TYPE_REPRO entry is in the
debug directory. This lets lld-link write such a section.
Fixes PR38429, see bug for details.

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

llvm-svn: 341486

5 years agoHandle zero-length debug directory entries.
Nico Weber [Wed, 5 Sep 2018 18:01:04 +0000 (18:01 +0000)]
Handle zero-length debug directory entries.

Part of https://reviews.llvm.org/D51652 (tests will be in the lld repo)

llvm-svn: 341485

5 years agoTest Commit for git-svn-cleanup comment.
Erich Keane [Wed, 5 Sep 2018 17:14:21 +0000 (17:14 +0000)]
Test Commit for git-svn-cleanup comment.

Removes the class name for the Expr class, which isn't necessary.

llvm-svn: 341484

5 years ago[OPENMP][NVPTX] Disable runtime-type info for CUDA devices.
Alexey Bataev [Wed, 5 Sep 2018 17:10:30 +0000 (17:10 +0000)]
[OPENMP][NVPTX] Disable runtime-type info for CUDA devices.

RTTI is not supported by the NVPTX target.

llvm-svn: 341483

5 years agoHold GIL while allocating memory for PythonString.
Tatyana Krasnukha [Wed, 5 Sep 2018 17:07:29 +0000 (17:07 +0000)]
Hold GIL while allocating memory for PythonString.

Summary:
Swig wraps C++ code into SWIG_PYTHON_THREAD_BEGIN_ALLOW; ...  SWIG_PYTHON_THREAD_END_ALLOW;
Thus, LLDB crashes with "Fatal Python error: Python memory allocator called without holding the GIL" when calls an lldb_SB***___str__ function.

Reviewers: clayborg

Reviewed By: clayborg

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

llvm-svn: 341482

5 years ago[DAGCombiner] try to convert pow(x, 0.25) to sqrt(sqrt(x))
Sanjay Patel [Wed, 5 Sep 2018 17:01:56 +0000 (17:01 +0000)]
[DAGCombiner] try to convert pow(x, 0.25) to sqrt(sqrt(x))

This was proposed as an IR transform in D49306, but it was not clearly justifiable as a canonicalization.
Here, we only do the transform when the target tells us that sqrt can be lowered with inline code.

This is the basic case. Some potential enhancements are in the TODO comments:

1. Generalize the transform for other exponents (allow more than 2 sqrt calcs if that's really cheaper).
2. If we have less fast-math-flags, generate code to avoid -0.0 and/or INF.
3. Allow the transform when optimizing/minimizing size (might require a target hook to get that right).

Note that by default, x86 converts single-precision sqrt calcs into sqrt reciprocal estimate with
refinement. That codegen is controlled by CPU attributes and can be manually overridden. We have plenty
of test coverage for that already, so I didn't bother to include extra testing for that here. AArch uses
its full-precision ops in all cases (not sure if that's the intended behavior or not, but that should
also be covered by existing tests).

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

llvm-svn: 341481

5 years ago[hwasan] deflake a test
Kostya Serebryany [Wed, 5 Sep 2018 16:09:53 +0000 (16:09 +0000)]
[hwasan] deflake a test

llvm-svn: 341480

5 years ago[XRay] Use a function to return a constant
Dean Michael Berris [Wed, 5 Sep 2018 16:03:21 +0000 (16:03 +0000)]
[XRay] Use a function to return a constant

We do this instead of using static constexpr char arrays because MSVC
2015 cannot handle the constant initialisation of those along with the
out-of-line storage declaration.

This is a follow-up to D51672.

llvm-svn: 341479

5 years ago[Hexagon] Ignore unnamed globals in HexagonConstExtenders
Krzysztof Parzyszek [Wed, 5 Sep 2018 15:54:44 +0000 (15:54 +0000)]
[Hexagon] Ignore unnamed globals in HexagonConstExtenders

This replaces r337723. The global list in the module can be huge with LTO,
plus the module can change between different invocations of the pass, so
there is no easy way to deterministically cache the ordering (especially
in the presence of multiple threads).

llvm-svn: 341478

5 years ago[XRay] Use `const` instead of `constexpr` in storage declaration
Dean Michael Berris [Wed, 5 Sep 2018 15:19:43 +0000 (15:19 +0000)]
[XRay] Use `const` instead of `constexpr` in storage declaration

This should make MSVC happy with the storage provided for static
constexpr character arrays out-of-line.

Follow-up to D51672.

llvm-svn: 341477

5 years ago[Sema] Store MacroInfo in CodeCompletionResult for macro results.
Eric Liu [Wed, 5 Sep 2018 14:59:17 +0000 (14:59 +0000)]
[Sema] Store MacroInfo in CodeCompletionResult for macro results.

Summary:
This provides information about the macro definition. For example, it
can be used to compute macro USRs.

Reviewers: sammccall

Subscribers: cfe-commits

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

llvm-svn: 341476