platform/upstream/llvm.git
7 years agoAMDGPU: Add option to stress calls
Matt Arsenault [Thu, 21 Sep 2017 07:00:48 +0000 (07:00 +0000)]
AMDGPU: Add option to stress calls

This inverts the behavior of the AlwaysInline pass to mark
every function not already marked alwaysinline as noinline.

llvm-svn: 313865

7 years ago[MIPS] Restore checking of the disassembler output. NFC
Simon Atanasyan [Thu, 21 Sep 2017 04:55:27 +0000 (04:55 +0000)]
[MIPS] Restore checking of the disassembler output. NFC

llvm-svn: 313864

7 years ago[X86] Remove execute permissions from a couple files.
Craig Topper [Thu, 21 Sep 2017 04:55:08 +0000 (04:55 +0000)]
[X86] Remove execute permissions from a couple files.

llvm-svn: 313863

7 years ago[X86] Remove windows line endings.
Craig Topper [Thu, 21 Sep 2017 04:55:07 +0000 (04:55 +0000)]
[X86] Remove windows line endings.

llvm-svn: 313862

7 years ago[X86] Remove unused tablegen class.
Craig Topper [Thu, 21 Sep 2017 04:55:06 +0000 (04:55 +0000)]
[X86] Remove unused tablegen class.

llvm-svn: 313861

7 years ago[TableGen] Use CHAR_BIT instead of hardcoded 8 with sizeof. NFC
Craig Topper [Thu, 21 Sep 2017 04:55:04 +0000 (04:55 +0000)]
[TableGen] Use CHAR_BIT instead of hardcoded 8 with sizeof. NFC

llvm-svn: 313860

7 years ago[TableGen] Include StringMap.h instead of StringSet.h since that's the data structure...
Craig Topper [Thu, 21 Sep 2017 04:55:03 +0000 (04:55 +0000)]
[TableGen] Include StringMap.h instead of StringSet.h since that's the data structure we use.

llvm-svn: 313859

7 years agoRevert r313782 "[TableGen] Add a DenseMapInfo for MachineValueType."
Craig Topper [Thu, 21 Sep 2017 04:54:59 +0000 (04:54 +0000)]
Revert r313782 "[TableGen] Add a DenseMapInfo for MachineValueType."

We aren't making a DenseSet/DenseMap of MVT anywhere. This was added due to an earlier revision of D37957.

llvm-svn: 313858

7 years agoRevert "Re-enable "[IRCE] Identify loops with latch comparison against current IV...
Serguei Katkov [Thu, 21 Sep 2017 04:50:41 +0000 (04:50 +0000)]
Revert "Re-enable "[IRCE] Identify loops with latch comparison against current IV value""

Revert the patch causing the functional failures.
The patch owner is notified with test cases which fail.
Test case has been provided to Maxim offline.

llvm-svn: 313857

7 years agoRevert "Give external linkage and mangling to lambdas inside inline variables and...
Vitaly Buka [Thu, 21 Sep 2017 02:51:56 +0000 (02:51 +0000)]
Revert "Give external linkage and mangling to lambdas inside inline variables and variable templates."

To fix: runtime error: load of value 15, which is not a valid value for type 'clang::LVComputationKind'

This reverts commit r313827.

llvm-svn: 313856

7 years ago[lit/Win] Check if a path was found before attempting to use it.
David L. Jones [Thu, 21 Sep 2017 01:26:16 +0000 (01:26 +0000)]
[lit/Win] Check if a path was found before attempting to use it.

Summary:
This appears to break some bots, when getToolsPath fails to find some or
all of the tools (for example, an incomplete GnuWin32 installation).

Reviewers: zturner, modocache

Subscribers: sanjoy, llvm-commits

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

llvm-svn: 313854

7 years ago[llvm-cov] Improve error messaging for function mismatches
Vedant Kumar [Thu, 21 Sep 2017 01:11:30 +0000 (01:11 +0000)]
[llvm-cov] Improve error messaging for function mismatches

Passing "-dump" to llvm-cov will now print more detailed information
about function hash and counter mismatches. This should make it easier
to debug *.profdata files which contain incorrect records, and to debug
other scenarios where coverage goes missing due to mismatch issues.

llvm-svn: 313853

7 years agoAMDGPU: Fix crash on immediate operand
Matt Arsenault [Thu, 21 Sep 2017 00:45:59 +0000 (00:45 +0000)]
AMDGPU: Fix crash on immediate operand

We can have a v_mac with an immediate src0.
We can still fold if it's an inline immediate,
otherwise it already uses the constant bus.

llvm-svn: 313852

7 years ago[ubsan] Split ubsan_init_standalone
Vitaly Buka [Thu, 21 Sep 2017 00:35:22 +0000 (00:35 +0000)]
[ubsan] Split ubsan_init_standalone

Summary:
On Linux we may need preinit_array in static lib and
ubsan_standalone_initializer in shared lib.

Reviewers: eugenis

Subscribers: kubamracek, llvm-commits, mgorny

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

llvm-svn: 313851

7 years ago[AArch64] Properly check alignment for AARCH64_LD_PREL_LO19.
Davide Italiano [Thu, 21 Sep 2017 00:26:28 +0000 (00:26 +0000)]
[AArch64] Properly check alignment for AARCH64_LD_PREL_LO19.

Follow-up suggested by Peter Smith.

llvm-svn: 313850

7 years ago[lit] Make lit support config files with .py extension.
Zachary Turner [Thu, 21 Sep 2017 00:24:52 +0000 (00:24 +0000)]
[lit] Make lit support config files with .py extension.

Many editors and Python-related diagnostics tools such as
debuggers break or fail in mysterious ways when python files
don't end in .py.  This is especially true on Windows, but
still exists on other platforms.  I don't want to be too heavy
handed in changing everything across the board, but I do want
to at least *allow* lit configs to have .py extensions.  This
patch makes the discovery process first look for a config file
with a .py extension, and if one is not found, then looks for
a config file using the old method.  So for existing users, there
should be no functional change.

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

llvm-svn: 313849

7 years ago[X86] Replace a condition that can never be true with an assert.
Craig Topper [Thu, 21 Sep 2017 00:18:48 +0000 (00:18 +0000)]
[X86] Replace a condition that can never be true with an assert.

llvm-svn: 313848

7 years ago[SelectionDAG] Replace a flag that can never be true with an assert.
Craig Topper [Thu, 21 Sep 2017 00:18:46 +0000 (00:18 +0000)]
[SelectionDAG] Replace a flag that can never be true with an assert.

llvm-svn: 313847

7 years ago[AArch64] Include test for out of range LD_PREL_LO19.
Davide Italiano [Thu, 21 Sep 2017 00:16:29 +0000 (00:16 +0000)]
[AArch64] Include test for out of range LD_PREL_LO19.

llvm-svn: 313846

7 years ago[asan] Remove trailing spaces
Vitaly Buka [Thu, 21 Sep 2017 00:14:17 +0000 (00:14 +0000)]
[asan] Remove trailing spaces

llvm-svn: 313845

7 years ago[asan] Remove "COLLISION" workaround for datarace in asan
Vitaly Buka [Thu, 21 Sep 2017 00:11:30 +0000 (00:11 +0000)]
[asan] Remove "COLLISION" workaround for datarace in asan

"nested bug in the same thread" is not expected in case like this and was caused
by https://github.com/google/sanitizers/issues/858

llvm-svn: 313844

7 years ago[asan] Remove "rm -f" in tests where it was needed only because of >>
Vitaly Buka [Thu, 21 Sep 2017 00:06:08 +0000 (00:06 +0000)]
[asan] Remove "rm -f" in tests where it was needed only because of >>

llvm-svn: 313843

7 years agoCheck whether IslAstInfo and DependenceInfo were computed for the same Scop.
Michael Kruse [Thu, 21 Sep 2017 00:01:13 +0000 (00:01 +0000)]
Check whether IslAstInfo and DependenceInfo were computed for the same Scop.

Since -polly-codegen reports itself to preserve DependenceInfo and IslAstInfo,
we might get those analysis that were computed by a different ScopInfo for a
different Scop structure. This would be unfortunate because DependenceInfo and
IslAstInfo hold references to resources allocated by
ScopInfo/ScopBuilder/Scop (e.g. isl_id). If -polly-codegen and
DependenceInfo/IslAstInfo do not agree on which Scop to use, unpredictable
things can happen.

When the ScopInfo/Scop object is freed, there is a high probability that the
new ScopInfo/Scop object will be created at the same heap position with the
same address. Comparing whether the Scop or ScopInfo address is the expected
therefore is unreliable.

Instead, we compare the address of the isl_ctx object. Both, DependenceInfo
and IslAstInfo must hold a reference to the isl_ctx object to ensure it is
not freed before the destruction of those analyses which might happen after
the destruction of the Scop/ScopInfo they refer to.  Hence, the isl_ctx
will not be freed and its address not reused as long there is a
DependenceInfo or IslAstInfo around.

This fixes llvm.org/PR34441

llvm-svn: 313842

7 years ago[AArch64] Implement R_AARCH64_ LD_PREL_LO19.
Davide Italiano [Wed, 20 Sep 2017 23:49:50 +0000 (23:49 +0000)]
[AArch64] Implement R_AARCH64_ LD_PREL_LO19.

Fixes PR34660.

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

llvm-svn: 313841

7 years ago[InstCombine] Teach getDemandedBitsLHSMask to handle constant splat vectors
Craig Topper [Wed, 20 Sep 2017 23:48:58 +0000 (23:48 +0000)]
[InstCombine] Teach getDemandedBitsLHSMask to handle constant splat vectors

This replaces a ConstantInt dyn_cast with m_APInt

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

llvm-svn: 313840

7 years ago[SelectionDAG] Use APInt::getActivebits instead of Bitwidth - leading zeros.
Craig Topper [Wed, 20 Sep 2017 23:48:56 +0000 (23:48 +0000)]
[SelectionDAG] Use APInt::getActivebits instead of Bitwidth - leading zeros.

llvm-svn: 313839

7 years ago[WebAssembly] Weak symbols should be defined in SF_Global
Sam Clegg [Wed, 20 Sep 2017 23:39:44 +0000 (23:39 +0000)]
[WebAssembly] Weak symbols should be defined in SF_Global

Summary:
This manifested itself in lld since it meant that weak
symbols were not appearing in archive symbol tables.

Subscribers: jfb, dschuff, jgravelle-google, aheejin

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

llvm-svn: 313838

7 years agotypo
Adrian Prantl [Wed, 20 Sep 2017 23:29:47 +0000 (23:29 +0000)]
typo

llvm-svn: 313837

7 years agollvm-dwarfdump: move -eh-frame into the right section in the help output.
Adrian Prantl [Wed, 20 Sep 2017 23:29:31 +0000 (23:29 +0000)]
llvm-dwarfdump: move -eh-frame into the right section in the help output.

llvm-svn: 313836

7 years ago[asan] Fix nested error detection
Vitaly Buka [Wed, 20 Sep 2017 23:27:38 +0000 (23:27 +0000)]
[asan] Fix nested error detection

Summary: Fixes https://github.com/google/sanitizers/issues/858

Reviewers: eugenis, dvyukov

Subscribers: kubamracek, llvm-commits

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

llvm-svn: 313835

7 years ago[llvm-readobj] Fix 'Teach readobj to dump .res files', pt 3.
Marek Sokolowski [Wed, 20 Sep 2017 23:26:05 +0000 (23:26 +0000)]
[llvm-readobj] Fix 'Teach readobj to dump .res files', pt 3.

Fix (r313790) missing ulittle{}_t error on some buildbots.

llvm-svn: 313834

7 years ago[llvm-readobj] Fix 'Teach readobj to dump .res files', pt 2.
Marek Sokolowski [Wed, 20 Sep 2017 23:07:39 +0000 (23:07 +0000)]
[llvm-readobj] Fix 'Teach readobj to dump .res files', pt 2.

Another fix-up for r313790. Big-endian hosts swapped byte order in
UTF16 words.

llvm-svn: 313833

7 years agoInclude thin --whole-archive members in --reproduce.
Rafael Espindola [Wed, 20 Sep 2017 22:59:50 +0000 (22:59 +0000)]
Include thin --whole-archive members in --reproduce.

We were only including the thin archive members used via a lazy symbol
before.

llvm-svn: 313832

7 years ago[MSan] Disable sanitization for __sanitizer_dtor_callback.
Matt Morehouse [Wed, 20 Sep 2017 22:53:08 +0000 (22:53 +0000)]
[MSan] Disable sanitization for __sanitizer_dtor_callback.

Summary:
Eliminate unnecessary instrumentation at __sanitizer_dtor_callback
call sites.  Fixes https://github.com/google/sanitizers/issues/861.

Reviewers: eugenis, kcc

Reviewed By: eugenis

Subscribers: vitalybuka, llvm-commits, cfe-commits, hiraditya

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

llvm-svn: 313831

7 years agoRemove references to response file argument in CommandLine.rst
Dave Lee [Wed, 20 Sep 2017 22:41:34 +0000 (22:41 +0000)]
Remove references to response file argument in CommandLine.rst

Summary:
The documentation refers to a boolean that controls whether response files are
handled, but this is incorrect. Since r165535, response files are always
enabled.

Reviewers: compnerd, rafael

Reviewed By: compnerd

Subscribers: llvm-commits

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

llvm-svn: 313830

7 years ago[SimplifyCFG] don't create a no-op subtract
Sanjay Patel [Wed, 20 Sep 2017 22:31:35 +0000 (22:31 +0000)]
[SimplifyCFG] don't create a no-op subtract

I noticed this inefficiency while investigating PR34603:
https://bugs.llvm.org/show_bug.cgi?id=34603

This fix will likely push another bug (we don't maintain state of 'LateSimplifyCFG')
into hiding, but I'll try to clean that up with a follow-up patch anyway.

llvm-svn: 313829

7 years ago[MS Compat]Allow __interfaces to have properties.
Erich Keane [Wed, 20 Sep 2017 22:28:24 +0000 (22:28 +0000)]
[MS Compat]Allow __interfaces to have properties.

__interface types are allowed in MSVC to have "property" data members
(marked with declspec property). This patch alters Sema to allow property
data members.

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

llvm-svn: 313828

7 years agoGive external linkage and mangling to lambdas inside inline variables and variable...
Richard Smith [Wed, 20 Sep 2017 22:17:55 +0000 (22:17 +0000)]
Give external linkage and mangling to lambdas inside inline variables and variable templates.

This implements the proposed approach in https://github.com/itanium-cxx-abi/cxx-abi/issues/33

llvm-svn: 313827

7 years agoCommit local changes that missed llvm.dbg.addr
Reid Kleckner [Wed, 20 Sep 2017 21:56:21 +0000 (21:56 +0000)]
Commit local changes that missed llvm.dbg.addr

llvm-svn: 313826

7 years ago[IR] Add llvm.dbg.addr, a control-dependent version of llvm.dbg.declare
Reid Kleckner [Wed, 20 Sep 2017 21:52:33 +0000 (21:52 +0000)]
[IR] Add llvm.dbg.addr, a control-dependent version of llvm.dbg.declare

Summary:
This implements the design discussed on llvm-dev for better tracking of
variables that live in memory through optimizations:
  http://lists.llvm.org/pipermail/llvm-dev/2017-September/117222.html

This is tracked as PR34136

llvm.dbg.addr is intended to be produced and used in almost precisely
the same way as llvm.dbg.declare is today, with the exception that it is
control-dependent. That means that dbg.addr should always have a
position in the instruction stream, and it will allow passes that
optimize memory operations on local variables to insert llvm.dbg.value
calls to reflect deleted stores. See SourceLevelDebugging.rst for more
details.

The main drawback to generating DBG_VALUE machine instrs is that they
usually cause LLVM to emit a location list for DW_AT_location. The next
step will be to teach DwarfDebug.cpp how to recognize more DBG_VALUE
ranges as not needing a location list, and possibly start setting
DW_AT_start_offset for variables whose lifetimes begin mid-scope.

Reviewers: aprantl, dblaikie, probinson

Subscribers: eraman, hiraditya, llvm-commits

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

llvm-svn: 313825

7 years ago[docs] llvm-cov: Document -show-instantiation-summary
Vedant Kumar [Wed, 20 Sep 2017 21:52:09 +0000 (21:52 +0000)]
[docs] llvm-cov: Document -show-instantiation-summary

llvm-svn: 313824

7 years ago[ARM] Fix some Clang-tidy modernize-use-using and Include What You Use warnings;...
Eugene Zelenko [Wed, 20 Sep 2017 21:35:51 +0000 (21:35 +0000)]
[ARM] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC).

llvm-svn: 313823

7 years agoRevert "Revert "ExecutionEngine: add R_AARCH64_ABS{16,32}""
Saleem Abdulrasool [Wed, 20 Sep 2017 21:32:44 +0000 (21:32 +0000)]
Revert "Revert "ExecutionEngine: add R_AARCH64_ABS{16,32}""

This reverts commit SVN r313668.  The original test case attempted to
write a pointer value into 16-bits, although the value may exceed the
range representable in 16-bits.  Ensure that the symbol is located in
the address space such that its absolute address is representable in
16-bits.  This should fix the assertion failure that was seen on the
Windows hosts.

llvm-svn: 313822

7 years ago[SimplifyCFG] auto-generate full checks; NFC
Sanjay Patel [Wed, 20 Sep 2017 21:25:02 +0000 (21:25 +0000)]
[SimplifyCFG] auto-generate full checks; NFC

llvm-svn: 313821

7 years ago[NVPTX] Implemented shfl.sync instruction and supporting intrinsics/builtins.
Artem Belevich [Wed, 20 Sep 2017 21:23:07 +0000 (21:23 +0000)]
[NVPTX] Implemented shfl.sync instruction and supporting intrinsics/builtins.

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

llvm-svn: 313820

7 years ago[InstCombine] Handle (X & C2) < C1 --> (X & C2) == 0
Craig Topper [Wed, 20 Sep 2017 21:18:17 +0000 (21:18 +0000)]
[InstCombine] Handle (X & C2) < C1 --> (X & C2) == 0

We already did (X & C2) > C1 --> (X & C2) != 0, if any bit set in (X & C2) will produce a result greater than C1. But there is an equivalent inverse condition with <= C1 (which will be canonicalized to < C1+1)

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

llvm-svn: 313819

7 years ago[InstCombine] Pre-commit test cases for D38065.
Craig Topper [Wed, 20 Sep 2017 21:18:12 +0000 (21:18 +0000)]
[InstCombine] Pre-commit test cases for D38065.

llvm-svn: 313818

7 years ago[WebAssembly] Add support for local symbol bindings
Sam Clegg [Wed, 20 Sep 2017 21:17:04 +0000 (21:17 +0000)]
[WebAssembly] Add support for local symbol bindings

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

llvm-svn: 313817

7 years ago[llvm-readobj] Fix 'Teach readobj to dump .res files'.
Marek Sokolowski [Wed, 20 Sep 2017 21:03:37 +0000 (21:03 +0000)]
[llvm-readobj] Fix 'Teach readobj to dump .res files'.

Fix-up for r313790. Some buildbots couldn't convert size_t to
uint{}_t; do it manually.

llvm-svn: 313816

7 years ago[mips] Fix calculation of a branch instruction offset to escape left shift of negativ...
Simon Atanasyan [Wed, 20 Sep 2017 21:01:30 +0000 (21:01 +0000)]
[mips] Fix calculation of a branch instruction offset to escape left shift of negative value

llvm-svn: 313815

7 years agoAMDGPU: Start selecting v_mad_mixhi_f16
Matt Arsenault [Wed, 20 Sep 2017 21:01:24 +0000 (21:01 +0000)]
AMDGPU: Start selecting v_mad_mixhi_f16

llvm-svn: 313814

7 years agoX86: treat SwiftCC as Win64_CC on Win64
Saleem Abdulrasool [Wed, 20 Sep 2017 21:00:40 +0000 (21:00 +0000)]
X86: treat SwiftCC as Win64_CC on Win64

The Swift CC is identical to Win64 CC with the exception of swift error
being passed in r12 which is a CSR.  However, since this calling
convention is only used in swift -> swift code, it does not impact
interoperability and can be treated entirely as Win64 CC.  We would
previously incorrectly lower the frame setup as we did not treat the
frame as conforming to Win64 specifications.

llvm-svn: 313813

7 years agoAMDGPU: Add tied operands to v_mad_mix{lo|hi}_f16
Matt Arsenault [Wed, 20 Sep 2017 20:53:49 +0000 (20:53 +0000)]
AMDGPU: Add tied operands to v_mad_mix{lo|hi}_f16

These write to the low and high half of the destination
register and leave the other 16-bits unchanged. This is true
for most 16-bit instructions on gfx9, but we don't use that
now.

llvm-svn: 313812

7 years agoImplement cl_khr_int64_extended_atomics builtins
Jan Vesely [Wed, 20 Sep 2017 20:42:19 +0000 (20:42 +0000)]
Implement cl_khr_int64_extended_atomics builtins

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Aaron Watry <awatry@gmail.com>
Tested-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 313811

7 years agoImplement cl_khr_int64_base_atomics builtins
Jan Vesely [Wed, 20 Sep 2017 20:42:14 +0000 (20:42 +0000)]
Implement cl_khr_int64_base_atomics builtins

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Aaron Watry <awatry@gmail.com>
Tested-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 313810

7 years agoIntroduce the llvm-cfi-verify tool (resubmission of D37937).
Vlad Tsyrklevich [Wed, 20 Sep 2017 20:38:14 +0000 (20:38 +0000)]
Introduce the llvm-cfi-verify tool (resubmission of D37937).

Summary: Resubmission of D37937. Fixed i386 target building (conversion from std::size_t& to uint64_t& failed). Fixed documentation warning failure about docs/CFIVerify.rst not being in the tree.

Reviewers: vlad.tsyrklevich

Reviewed By: vlad.tsyrklevich

Patch by Mitch Phillips

Subscribers: sbc100, mgorny, pcc, llvm-commits, kcc

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

llvm-svn: 313809

7 years agoRemove the default subtarget from the new Nios2 port. It's unused and deprecated.
Eric Christopher [Wed, 20 Sep 2017 20:32:23 +0000 (20:32 +0000)]
Remove the default subtarget from the new Nios2 port. It's unused and deprecated.

llvm-svn: 313808

7 years ago[lit] Undo the patch to stop writing pyc files.
Zachary Turner [Wed, 20 Sep 2017 20:31:24 +0000 (20:31 +0000)]
[lit] Undo the patch to stop writing pyc files.

The problems on the bots appear to be resolved and this was
determined to not be the culprit.  Removing this.

llvm-svn: 313807

7 years agoAMDGPU: Start selecting v_mad_mixlo_f16
Matt Arsenault [Wed, 20 Sep 2017 20:28:39 +0000 (20:28 +0000)]
AMDGPU: Start selecting v_mad_mixlo_f16

Also add some tests that should be able to use v_mad_mixhi_f16,
but do not yet. This is trickier because we don't really model
the partial update of the register done by 16-bit instructions.

llvm-svn: 313806

7 years ago[OPENMP] Support for re-declarations when checking captured variables.
Alexey Bataev [Wed, 20 Sep 2017 20:11:31 +0000 (20:11 +0000)]
[OPENMP] Support for re-declarations when checking captured variables.

Need to check for variables re-declarations when checking that the
variable was already captured in the captured region.

llvm-svn: 313805

7 years agoRevert "Introduce the llvm-cfi-verify tool (resubmission of D37937)."
Vlad Tsyrklevich [Wed, 20 Sep 2017 19:46:02 +0000 (19:46 +0000)]
Revert "Introduce the llvm-cfi-verify tool (resubmission of D37937)."

This reverts commit r313798, it's causing buildbot failures.

llvm-svn: 313804

7 years agoRevert 313789 because gcc doesn't like it
Marshall Clow [Wed, 20 Sep 2017 19:38:43 +0000 (19:38 +0000)]
Revert 313789 because gcc doesn't like it

llvm-svn: 313803

7 years agoFixed unused variable warning introduced in r313796 causing build failure
Cameron Desrochers [Wed, 20 Sep 2017 19:37:37 +0000 (19:37 +0000)]
Fixed unused variable warning introduced in r313796 causing build failure

llvm-svn: 313802

7 years ago[clangd] Fixed crash on MacOS.
Ilya Biryukov [Wed, 20 Sep 2017 19:32:06 +0000 (19:32 +0000)]
[clangd] Fixed crash on MacOS.

Caused by invalid order of members in ClangdServer.
DiagnosticsMutex was used after destruction.

llvm-svn: 313801

7 years agoConsider ForceAbsolute again in moveAbsRight.
Rafael Espindola [Wed, 20 Sep 2017 19:24:57 +0000 (19:24 +0000)]
Consider ForceAbsolute again in moveAbsRight.

This patch goes back to considering ForceAbsolute in moveAbsRight, but
only if the second argument is not already absolute.

With this we can handle "foo + ABSOLUTE(foo)" and "ABSOLUTE(foo) + foo".

llvm-svn: 313800

7 years agoFix warning caused by new clang::BuiltinType::Float16 added in r312794
Ted Woodward [Wed, 20 Sep 2017 19:16:53 +0000 (19:16 +0000)]
Fix warning caused by new clang::BuiltinType::Float16 added in r312794

llvm-svn: 313799

7 years agoIntroduce the llvm-cfi-verify tool (resubmission of D37937).
Vlad Tsyrklevich [Wed, 20 Sep 2017 19:14:16 +0000 (19:14 +0000)]
Introduce the llvm-cfi-verify tool (resubmission of D37937).

Summary: Resubmission of D37937. Fixed i386 target building (conversion from std::size_t& to uint64_t& failed). Fixed documentation warning failure about docs/CFIVerify.rst not being in the tree.

Reviewers: vlad.tsyrklevich

Reviewed By: vlad.tsyrklevich

Patch by Mitch Phillips

Subscribers: mgorny, pcc, llvm-commits, kcc

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

llvm-svn: 313798

7 years agoAMDGPU: Fix encoding of op_sel for mad_mix* opcodes
Matt Arsenault [Wed, 20 Sep 2017 19:09:28 +0000 (19:09 +0000)]
AMDGPU: Fix encoding of op_sel for mad_mix* opcodes

llvm-svn: 313797

7 years ago[PCH] Fixed preamble breaking with BOM presence (and particularly, fluctuating BOM...
Cameron Desrochers [Wed, 20 Sep 2017 19:03:37 +0000 (19:03 +0000)]
[PCH] Fixed preamble breaking with BOM presence (and particularly, fluctuating BOM presence)

This patch fixes broken preamble-skipping when the preamble region includes a byte order mark (BOM). Previously, parsing would fail if preamble PCH generation was enabled and a BOM was present.

This also fixes preamble invalidation when a BOM appears or disappears. This may seem to be an obscure edge case, but it happens regularly with IDEs that pass buffer overrides that never (or always) have a BOM, yet the underlying file from the initial parse that generated a PCH might (or might not) have a BOM.

I've included a test case for these scenarios.

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

llvm-svn: 313796

7 years agoReland "[WebAssembly] Add support for naming wasm data segments"
Sam Clegg [Wed, 20 Sep 2017 19:03:35 +0000 (19:03 +0000)]
Reland "[WebAssembly] Add support for naming wasm data segments"

Add adds support for naming data segments.  This is useful
useful linkers so that they can merge similar sections.

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

llvm-svn: 313795

7 years agoConsider only A.Sec in moveAbsRight.
Rafael Espindola [Wed, 20 Sep 2017 18:56:08 +0000 (18:56 +0000)]
Consider only A.Sec in moveAbsRight.

The idea of this function is to simplify the implementation of binary
operators like add.

A value might be absolute because of an ABSOLUTE expression, but it
still depends on the value of a section and we might not be able to
evaluate it early. We should keep such values on the LHS, so that we
can delay the evaluation.

We can now handle both "1 + ABSOLUTE(foo)" and "ABSOLUTE(foo) + 1".

llvm-svn: 313794

7 years ago[APInt] Use getActiveBits() to implement logBase2 and ceilLogBase2. NFC
Craig Topper [Wed, 20 Sep 2017 18:49:31 +0000 (18:49 +0000)]
[APInt] Use getActiveBits() to implement logBase2 and ceilLogBase2. NFC

llvm-svn: 313793

7 years ago[InstCombine] Use APInt::getActiveBits() to avoid creating an APInt from a trailing...
Craig Topper [Wed, 20 Sep 2017 18:49:29 +0000 (18:49 +0000)]
[InstCombine] Use APInt::getActiveBits() to avoid creating an APInt from a trailing zero count to do a comparison. NFCI

llvm-svn: 313792

7 years agoCodeGen: support SwiftError SwiftCC on Windows x64
Saleem Abdulrasool [Wed, 20 Sep 2017 18:40:59 +0000 (18:40 +0000)]
CodeGen: support SwiftError SwiftCC on Windows x64

Add support for passing SwiftError through a register on the Windows x64
calling convention.  This allows the use of swifterror attributes on
parameters which is used by the swift front end for the `Error`
parameter.  This partially enables building the swift standard library
for Windows x86_64.

llvm-svn: 313791

7 years ago[llvm-readobj] Teach readobj to dump .res files (WindowsResource).
Marek Sokolowski [Wed, 20 Sep 2017 18:33:35 +0000 (18:33 +0000)]
[llvm-readobj] Teach readobj to dump .res files (WindowsResource).

This enables readobj to output Windows resource files (.res). This way,
we'll be able to test .res outputs without comparing them byte-by-byte
with "magic binary files" generated by MS toolchain.

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

llvm-svn: 313790

7 years agoMark the __eval methods on independent_bits_engine (and __independent_bits_engine...
Marshall Clow [Wed, 20 Sep 2017 18:32:08 +0000 (18:32 +0000)]
Mark the __eval methods on independent_bits_engine (and __independent_bits_engine) as const, since they make no changes to the object. NFC.

llvm-svn: 313789

7 years agoFix assigning to _gp in linker scripts.
Rafael Espindola [Wed, 20 Sep 2017 18:30:57 +0000 (18:30 +0000)]
Fix assigning to _gp in linker scripts.

The previous logic was to try to detect if a linker script defined _gp
by checking !ElfSym::MipsGp->Value. That doesn't work in all cases as
the assigned value can be 0.

We now just always defined it Writer.cpp and always overwrite it
afterwards if needed.

llvm-svn: 313788

7 years agoRename K_MIPS64 to K_GNU64
Jake Ehrlich [Wed, 20 Sep 2017 18:23:01 +0000 (18:23 +0000)]
Rename K_MIPS64 to K_GNU64

This patch renames K_MIPS64 to K_GNU64 as part of a change to add
support for writing archives with 64-bit indexes in the symbol table.

llvm-svn: 313787

7 years agoRe-land "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
Reid Kleckner [Wed, 20 Sep 2017 18:19:08 +0000 (18:19 +0000)]
Re-land "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"

After r313775, it's easier to maintain a parallel BitVector of spilled
locations indexed by location number.

I wasn't able to build a good reduced test case for this iteration of
the bug, but I added a more direct assertion that spilled values must
use frame index locations. If this bug reappears, it won't only fire on
the NEON vector code that we detected it on, but on medium-sized
integer-only programs as well.

llvm-svn: 313786

7 years agoFix the SIGINT handlers
Adrian McCarthy [Wed, 20 Sep 2017 18:09:39 +0000 (18:09 +0000)]
Fix the SIGINT handlers

1. Fix a data race (g_interrupt_sent flag usage was not thread safe, signals
can be handled on arbitrary threads)

2. exit() is not signal-safe, replaced it with the signal-safe equivalent
_exit()

(This differs from the patch on Phabrictor because I had to add
`#include <atomic>` to get the definition of `std::atomic_flag`.)

patch by lemo

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

llvm-svn: 313785

7 years agoRemove offset size check in nullptr arithmetic handling
Andrew Kaylor [Wed, 20 Sep 2017 18:06:44 +0000 (18:06 +0000)]
Remove offset size check in nullptr arithmetic handling

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

llvm-svn: 313784

7 years ago[TableGen] Some optimizations to TableGen.
Zachary Turner [Wed, 20 Sep 2017 18:01:40 +0000 (18:01 +0000)]
[TableGen] Some optimizations to TableGen.

This changes some STL data types to corresponding LLVM
data types that have better performance characteristics.

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

llvm-svn: 313783

7 years ago[TableGen] Add a DenseMapInfo for MachineValueType.
Zachary Turner [Wed, 20 Sep 2017 18:01:20 +0000 (18:01 +0000)]
[TableGen] Add a DenseMapInfo for MachineValueType.

No functional change, just adding a DenseMapInfo and tombstone
value so that MVT's can be put into a DenseMap / DenseSet.

llvm-svn: 313782

7 years agoRevert r313771 "[SLP] Vectorize jumbled memory loads."
Hans Wennborg [Wed, 20 Sep 2017 18:00:03 +0000 (18:00 +0000)]
Revert r313771 "[SLP] Vectorize jumbled memory loads."

This broke the buildbots, e.g.
http://bb.pgr.jp/builders/test-llvm-i686-linux-RA/builds/391

> Summary:
> This patch tries to vectorize loads of consecutive memory accesses, accessed
> in non-consecutive or jumbled way. An earlier attempt was made with patch D26905
> which was reverted back due to some basic issue with representing the 'use mask'
> jumbled accesses.
>
> This patch fixes the mask representation by recording the 'use mask' in the usertree entry.
>
> Change-Id: I9fe7f5045f065d84c126fa307ef6ebe0787296df
>
> Subscribers: mzolotukhin
>
> Reviewed By: ayal
>
> Differential Revision: https://reviews.llvm.org/D36130
>
> Review comments updated accordingly
>
> Change-Id: I22ab0a8a9bac9d49d74baa81a08e1e486f5e75f0
>
> Added a TODO for sortLoadAccesses API
>
> Change-Id: I3c679bf1865422d1b45e17ea28f1992bca660b58
>
> Modified the TODO for sortLoadAccesses API
>
> Change-Id: Ie64a66cb5f9e2a7610438abb0e750c6e090f9565
>
> Review comment update for using OpdNum to insert the mask in respective location
>
> Change-Id: I016d0c1b29874e979efc0205bbf078991f92edce
>
> Fixes '-Wsign-compare warning' in LoopAccessAnalysis.cpp and code rebase
>
> Change-Id: I64b2ea5e68c1d7b6a028f5ef8251c5a97333f89b

llvm-svn: 313781

7 years agoPacify a gcc -Wparentheses warning
Hans Wennborg [Wed, 20 Sep 2017 18:00:02 +0000 (18:00 +0000)]
Pacify a gcc -Wparentheses warning

llvm-svn: 313780

7 years agoPacify gcc's -Wnum-compare after r313775
Hans Wennborg [Wed, 20 Sep 2017 18:00:02 +0000 (18:00 +0000)]
Pacify gcc's -Wnum-compare after r313775

llvm-svn: 313779

7 years agollvm-dwarfdump: implement --recurse-depth=<N>
Adrian Prantl [Wed, 20 Sep 2017 17:44:00 +0000 (17:44 +0000)]
llvm-dwarfdump: implement --recurse-depth=<N>

This patch implements the Darwin dwarfdump option --recurse-depth=<N>,
which limits the recursion depth when selectively printing DIEs at an
offset.

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

llvm-svn: 313778

7 years agoAdd a special case for trivial alignment.
Rafael Espindola [Wed, 20 Sep 2017 17:43:44 +0000 (17:43 +0000)]
Add a special case for trivial alignment.

Normally to find the offset of a value in a section, we have to
compute the value since the alignment is defined on the final address.

If the alignment is trivial, we can skip the value computation. This
allows us to know the offset even in cases where we cannot yet know
the value.

llvm-svn: 313777

7 years agoFix a bit of UB in __independent_bits_engine. Fixes PR#34663
Marshall Clow [Wed, 20 Sep 2017 17:34:11 +0000 (17:34 +0000)]
Fix a bit of UB in __independent_bits_engine. Fixes PR#34663

llvm-svn: 313776

7 years ago[DebugInfo] Use a MapVector to coalesce MachineOperand locations
Reid Kleckner [Wed, 20 Sep 2017 17:32:54 +0000 (17:32 +0000)]
[DebugInfo] Use a MapVector to coalesce MachineOperand locations

Summary:
The new code should be linear in the number of DBG_VALUEs, while the old
code was quadratic. NFC intended.

This is also hopefully a more direct expression of the problem, which is
to:

1. Rewrite all virtual register operands to stack slots or physical
   registers
2. Uniquely number those machine operands, assigning them location
   numbers
3. Rewrite all uses of the old location numbers in the interval map to
   use the new location numbers

In r313400, I attempted to track which locations were spilled in a
parallel bitvector indexed by location number. My code was broken
because these location numbers are not stable during rewriting.

Reviewers: aprantl, hans

Subscribers: hiraditya, llvm-commits

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

llvm-svn: 313775

7 years ago[InstCombine] Add select simplifications
Quentin Colombet [Wed, 20 Sep 2017 17:32:16 +0000 (17:32 +0000)]
[InstCombine] Add select simplifications

In these cases, two selects have constant selectable operands for
both the true and false components and have the same conditional
expression.
We then create two arithmetic operations of the same type and feed a
final select operation using the result of the true arithmetic for the true
operand and the result of the false arithmetic for the false operand and reuse
the original conditionl expression.
The arithmetic operations are naturally folded as a consequence, leaving
only the newly formed select to replace the old arithmetic operation.

Patch by: Michael Berg <michael_c_berg@apple.com>
Differential Revision: https://reviews.llvm.org/D37019

llvm-svn: 313774

7 years agoAdd travis CI configuration file
Jan Vesely [Wed, 20 Sep 2017 17:28:58 +0000 (17:28 +0000)]
Add travis CI configuration file

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 313773

7 years agoReland "[llvm-objcopy] Add support for .dynamic, .dynsym, and .dynstr"
Jake Ehrlich [Wed, 20 Sep 2017 17:22:06 +0000 (17:22 +0000)]
Reland "[llvm-objcopy] Add support for .dynamic, .dynsym, and .dynstr"

I did not upload two binaries that I reference in tests.

This change adds support for sections involved in dynamic loading such
as SHT_DYNAMIC, SHT_DYNSYM, and allocated string tables.

The two added binaries used for tests can be downloaded here and here

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

llvm-svn: 313772

7 years ago[SLP] Vectorize jumbled memory loads.
Mohammad Shahid [Wed, 20 Sep 2017 17:19:57 +0000 (17:19 +0000)]
[SLP] Vectorize jumbled memory loads.

Summary:
This patch tries to vectorize loads of consecutive memory accesses, accessed
in non-consecutive or jumbled way. An earlier attempt was made with patch D26905
which was reverted back due to some basic issue with representing the 'use mask'
jumbled accesses.

This patch fixes the mask representation by recording the 'use mask' in the usertree entry.

Change-Id: I9fe7f5045f065d84c126fa307ef6ebe0787296df

Subscribers: mzolotukhin

Reviewed By: ayal

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

Review comments updated accordingly

Change-Id: I22ab0a8a9bac9d49d74baa81a08e1e486f5e75f0

Added a TODO for sortLoadAccesses API

Change-Id: I3c679bf1865422d1b45e17ea28f1992bca660b58

Modified the TODO for sortLoadAccesses API

Change-Id: Ie64a66cb5f9e2a7610438abb0e750c6e090f9565

Review comment update for using OpdNum to insert the mask in respective location

Change-Id: I016d0c1b29874e979efc0205bbf078991f92edce

Fixes '-Wsign-compare warning' in LoopAccessAnalysis.cpp and code rebase

Change-Id: I64b2ea5e68c1d7b6a028f5ef8251c5a97333f89b
llvm-svn: 313771

7 years ago[cmake] Add an option to build llvm with IR PGO
Vedant Kumar [Wed, 20 Sep 2017 17:16:01 +0000 (17:16 +0000)]
[cmake] Add an option to build llvm with IR PGO

This adds an LLVM_ENABLE_IR_PGO option to enable building llvm and its
tools with IR PGO instrumentation.

Usage: -DLLVM_BUILD_INSTRUMENTED=On -DLLVM_ENABLE_IR_PGO=On (both
options must be enabled)

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

llvm-svn: 313770

7 years ago[cmake] Unmark LLVM_BUILD_INSTRUMENTED_COVERAGE as experimental
Vedant Kumar [Wed, 20 Sep 2017 17:16:00 +0000 (17:16 +0000)]
[cmake] Unmark LLVM_BUILD_INSTRUMENTED_COVERAGE as experimental

The coverage bot has been stable for a while:

  http://lab.llvm.org:8080/coverage/coverage-reports/index.html

llvm-svn: 313769

7 years ago[docs] Make a note of LLVM_BUILD_INSTRUMENTED_COVERAGE
Vedant Kumar [Wed, 20 Sep 2017 17:16:00 +0000 (17:16 +0000)]
[docs] Make a note of LLVM_BUILD_INSTRUMENTED_COVERAGE

llvm-svn: 313768

7 years agoReland "[llvm-objcopy] Add support for .dynamic, .dynsym, and .dynstr"
Jake Ehrlich [Wed, 20 Sep 2017 17:11:58 +0000 (17:11 +0000)]
Reland "[llvm-objcopy] Add support for .dynamic, .dynsym, and .dynstr"

I overzealously landed this before I was sure that another change
wouldn't break the build that this change depends on.

This change adds support for sections involved in dynamic loading such
as SHT_DYNAMIC, SHT_DYNSYM, and allocated string tables.

The two added binaries used for tests can be downloaded here and here

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

llvm-svn: 313767

7 years ago[ThinLTO] Fix dead stripping analysis for SamplePGO
Teresa Johnson [Wed, 20 Sep 2017 17:09:47 +0000 (17:09 +0000)]
[ThinLTO] Fix dead stripping analysis for SamplePGO

Summary:
The fix for dead stripping analysis in the case of SamplePGO indirect
calls to local functions (r313151) introduced the possibility of an
infinite loop.

Make sure we check for the value being already live after we update it
for SamplePGO indirect call handling.

Reviewers: danielcdh

Subscribers: mehdi_amini, inglorion, llvm-commits, eraman

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

llvm-svn: 313766

7 years ago[lit] Reverse path list when updating environment vars.
Zachary Turner [Wed, 20 Sep 2017 17:08:20 +0000 (17:08 +0000)]
[lit] Reverse path list when updating environment vars.

Bug pointed out by EricWF.  This would construct a path where
items would be added in the wrong order, potentially leading
to using the wrong tools for testing.

llvm-svn: 313765