OSDN Git Service
Hans Wennborg [Thu, 9 Feb 2017 23:03:34 +0000 (23:03 +0000)]
Don't try to link to the 4.0 release notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294647
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 9 Feb 2017 23:03:22 +0000 (23:03 +0000)]
lit.rst: Fix sphinx complaint about multiple option definitions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294646
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonathan Roelofs [Thu, 9 Feb 2017 23:02:37 +0000 (23:02 +0000)]
[docs] Fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294645
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian McCarthy [Thu, 9 Feb 2017 22:49:35 +0000 (22:49 +0000)]
Fix build break from r294633.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294642
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 9 Feb 2017 22:35:59 +0000 (22:35 +0000)]
[X86] Remove duplicate call to getValueType. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294640
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 9 Feb 2017 22:02:28 +0000 (22:02 +0000)]
X86: Introduce relocImm-based patterns for cmp.
Differential Revision: https://reviews.llvm.org/D28690
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294636
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 9 Feb 2017 22:00:42 +0000 (22:00 +0000)]
AMDGPU: Add pass to expand memcpy/memmove/memset
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294635
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 9 Feb 2017 21:58:24 +0000 (21:58 +0000)]
X86: Teach X86InstrInfo::analyzeCompare to recognize compares of symbols.
This requires that we communicate to X86InstrInfo::optimizeCompareInstr
that the second operand is neither a register nor an immediate. The way we
do that is by setting CmpMask to zero.
Note that there were already instructions where the second operand was not a
register nor an immediate, namely X86::SUB*rm, so also set CmpMask to zero
for those instructions. This seems like a latent bug, but I was unable to
trigger it.
Differential Revision: https://reviews.llvm.org/D28621
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294634
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian McCarthy [Thu, 9 Feb 2017 21:51:19 +0000 (21:51 +0000)]
Introduce NativeRawSymbol for PDB reading.
This is a stub for a new concrete implementation of IPDBRawSymbol.
Nothing uses this uses this implementation yet. My plan is to
locally switch lldb-pdbdump from the DIA reader to the Native one
and flesh out the implementations of these method stubs in the order
they're needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294633
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Thu, 9 Feb 2017 21:46:49 +0000 (21:46 +0000)]
[LoadCombine] Fix combining of loads which span an aliasing store.
Fixes PR31517
Differential Revision: https://reviews.llvm.org/D28922
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294632
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 9 Feb 2017 21:45:01 +0000 (21:45 +0000)]
Rename LowerTypeTestsSummaryAction to PassSummaryAction. NFCI.
I intend to use the same type with the same semantics in the WholeProgramDevirt
pass.
Differential Revision: https://reviews.llvm.org/D29746
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294629
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 9 Feb 2017 21:43:06 +0000 (21:43 +0000)]
[InstCombine] use m_APInt to allow demanded bits analysis on splat constants
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294628
91177308-0d34-0410-b5e6-
96231b3b80d8
Konstantin Zhuravlyov [Thu, 9 Feb 2017 21:33:23 +0000 (21:33 +0000)]
[AMDGPU] Calculate number of min/max SGPRs/VGPRs for WavesPerEU instead of using switch statement
Differential Revision: https://reviews.llvm.org/D29741
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294627
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 9 Feb 2017 21:33:19 +0000 (21:33 +0000)]
[InstCombine] add test for demanded bits with splat vector constants; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294625
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Thu, 9 Feb 2017 21:29:12 +0000 (21:29 +0000)]
CODE_OWNERS: Update email address
Also clean up description.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294624
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Thu, 9 Feb 2017 20:37:46 +0000 (20:37 +0000)]
Drop graph_ prefix
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294621
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Thu, 9 Feb 2017 20:37:24 +0000 (20:37 +0000)]
GraphTraits: Add range versions of graph traits functions (graph_nodes, graph_children, inverse_graph_nodes, inverse_graph_children).
Summary:
Convert all obvious node_begin/node_end and child_begin/child_end
pairs to range based for.
Sending for review in case someone has a good idea how to make
graph_children able to be inferred. It looks like it would require
changing GraphTraits to be two argument or something. I presume
inference does not happen because it would have to check every
GraphTraits in the world to see if the noderef types matched.
Note: This change was 3-staged with clang as well, which uses
Dominators/etc from LLVM.
Reviewers: chandlerc, tstellarAMD, dblaikie, rsmith
Subscribers: arsenm, llvm-commits, nhaehnle
Differential Revision: https://reviews.llvm.org/D29767
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294620
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Thu, 9 Feb 2017 20:06:30 +0000 (20:06 +0000)]
test: adjust the test for the BSD format
The padding for ld64 changes the header to include the padding. Adjust
the test to account for this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294619
91177308-0d34-0410-b5e6-
96231b3b80d8
Frederic Riss [Thu, 9 Feb 2017 19:41:55 +0000 (19:41 +0000)]
[dsymutil] Fix handling of empty CUs in LTO links.
r288399 introduced the DIEUnit class, and in the process broke
the corner case where dsymutil generates an empty CU during an
LTO link. This restores the logic and adds a test for the corner
case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294618
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Thu, 9 Feb 2017 19:40:22 +0000 (19:40 +0000)]
[JumpThreading] Thread through guards
Summary:
This patch allows JumpThreading also thread through guards.
Virtually, guard(cond) is equivalent to the following construction:
if (cond) { do something } else {deoptimize}
Yet it is not explicitly converted into IFs before lowering.
This patch enables early threading through guards in simple cases.
Currently it covers the following situation:
if (cond1) {
// code A
} else {
// code B
}
// code C
guard(cond2)
// code D
If there is implication cond1 => cond2 or !cond1 => cond2, we can transform
this construction into the following:
if (cond1) {
// code A
// code C
} else {
// code B
// code C
guard(cond2)
}
// code D
Thus, removing the guard from one of execution branches.
Patch by Max Kazantsev!
Reviewers: reames, apilipenko, igor-laevsky, anna, sanjoy
Reviewed By: sanjoy
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D29620
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294617
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Thu, 9 Feb 2017 19:37:18 +0000 (19:37 +0000)]
[utils] coverage: Add help text about the --restrict flag (NFC)
Passing the --restrict flag to the coverage prep script before other
positional arguments is wrong, because it prevents the argparse module
from telling apart arguments to --restrict versus positional arguments.
Pointed out by Sean Callanan!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294616
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Thu, 9 Feb 2017 19:29:35 +0000 (19:29 +0000)]
Object: pad out BSD archive members to 8-bytes
ld64 requires its archive members to be 8-byte aligned for 64-bit
content and 4-byte aligned for 32-bit content. Opt for the larger
alignment requirement. This ensures that ld64 can consume archives
generated by llvm-ar.
Thanks to Kevin Enderby for the hint about the ld64/cctools behaviours!
Resolves PR28361!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294615
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 9 Feb 2017 18:52:24 +0000 (18:52 +0000)]
Convert to for-range loop. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294610
91177308-0d34-0410-b5e6-
96231b3b80d8
Geoff Berry [Thu, 9 Feb 2017 18:28:17 +0000 (18:28 +0000)]
[SelectionDAG] Fix bugs in inverted condition splitting code.
Summary:
Fix two bugs in SelectionDAGBuilder::FindMergedConditions reported by
Mikael Holmen. Handle non-canonicalized xor not operation
correctly (was assuming operand 0 was always the non-constant operand)
and check that the negated condition is also in the same block as the
original and/or instruction (as is done for and/or operands already)
before proceeding with optimization.
Reviewers: bogner, MatzeB, qcolombet
Subscribers: mcrosier, uabelho, llvm-commits
Differential Revision: https://reviews.llvm.org/D29680
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294605
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Thu, 9 Feb 2017 18:14:12 +0000 (18:14 +0000)]
[CMake] Fix standalone project builds broken in r294514
This patch sets the global property indicating that target registration is complete for standalone sub-project builds.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294602
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 9 Feb 2017 18:12:39 +0000 (18:12 +0000)]
[InstCombine] add tests for icmp with add nsw; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294601
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Thu, 9 Feb 2017 17:56:26 +0000 (17:56 +0000)]
Tweak the implementation of llvm-objdump’s -objc-meta-data option so
that it works when the ObjC metadata sections end up in the
__DATA_CONST or __DATA_DIRTY segments.
rdar://
26315238
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294599
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 9 Feb 2017 17:54:51 +0000 (17:54 +0000)]
[X86][BMI2] Regenerate mulx tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294598
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 9 Feb 2017 17:08:47 +0000 (17:08 +0000)]
[X86][MMX] Remove the (long time) unused MMX_PINSRW ISD opcode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294596
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Kortchinsky [Thu, 9 Feb 2017 16:07:52 +0000 (16:07 +0000)]
[docs] Documentation update for Scudo
Summary:
Documentation update to reflect the changes that occured in the allocator:
- additional architectures support;
- modification of the header;
- options default values for 32 & 64-bit.
Reviewers: kcc, alekseyshl
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D29592
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294595
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Thu, 9 Feb 2017 15:47:58 +0000 (15:47 +0000)]
Object: add a comment explaining a divergence
Add a note about the reason for the divergence from the specification
for ld64. Addresses post-commit review comments from Davide. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294594
91177308-0d34-0410-b5e6-
96231b3b80d8
David Bozier [Thu, 9 Feb 2017 15:40:14 +0000 (15:40 +0000)]
Revert: "[Stack Protection] Add diagnostic information for why stack protection was applied to a function"
this reverts revision r294590 as it broke some buildbots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294593
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Thu, 9 Feb 2017 15:13:40 +0000 (15:13 +0000)]
Add DAGCombiner load combine tests for partially available values
If some of the trailing or leading bytes of a load combine pattern are zeroes we can combine the pattern to a load + zext and shift. Currently we don't support it, so the tests check the current codegen without load combine. This change will make the patch to support this kind of combine a bit more clear.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294591
91177308-0d34-0410-b5e6-
96231b3b80d8
David Bozier [Thu, 9 Feb 2017 15:08:40 +0000 (15:08 +0000)]
[Stack Protection] Add diagnostic information for why stack protection was applied to a function
Stack Smash Protection is not completely free, so in hot code, the overhead it causes can cause performance issues. By adding diagnostic information for which function have SSP and why, a user can quickly determine what they can do to stop SSP being applied to a specific hot function.
This change adds an SSP-specific DiagnosticInfo class and uses of it to the Stack Protection code. A subsequent change to clang will cause the remarks to be emitted when enabled.
Patch by: James Henderson
Differential Revision: https://reviews.llvm.org/D29023
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294590
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 9 Feb 2017 14:59:20 +0000 (14:59 +0000)]
Make it possible to set SHF_LINK_ORDER explicitly.
This will make it possible to add support for gcing user metadata
(asan for example).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294589
91177308-0d34-0410-b5e6-
96231b3b80d8
Pierre Gousseau [Thu, 9 Feb 2017 14:43:58 +0000 (14:43 +0000)]
[X86][btver2] PR31902: Fix a crash in combineOrCmpEqZeroToCtlzSrl under fast math.
In combineOrCmpEqZeroToCtlzSrl, replace "getConstantOperand == 0" by "isNullConstant" to account for floating point constants.
Differential Revision: https://reviews.llvm.org/D29756
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294588
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 9 Feb 2017 14:14:06 +0000 (14:14 +0000)]
[X86][SSE] Added extra FMA/NO-FMA reciprocal test cases for D26855
Test for expected codegen for nr reciprocal cases with/without FMA
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294587
91177308-0d34-0410-b5e6-
96231b3b80d8
David Bozier [Thu, 9 Feb 2017 14:12:30 +0000 (14:12 +0000)]
[docs] cleanup documentation on lit substitutions
1. Added missing substitutions to the documentation in docs/TestingGuide.rst
2. Modified docs/CommandGuide/lit.rst to only document the "base" set of substitutions and to refer the reader to docs/TestingGuide.rst for more detailed info on substitutions.
Patch by bd1976llvm
Differential Revision: https://reviews.llvm.org/D29281
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294586
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Thu, 9 Feb 2017 13:09:59 +0000 (13:09 +0000)]
[ARM] GlobalISel: Lower single precision FP args
Both for aapcscc and aapcs_vfpcc. We currently filter out soft float targets
because we don't support libcalls yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294584
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Thu, 9 Feb 2017 12:06:01 +0000 (12:06 +0000)]
[DAGCombiner] Support non-zero offset in load combine
Enable folding patterns which load the value from non-zero offset:
i8 *a = ...
i32 val = a[4] | (a[5] << 8) | (a[6] << 16) | (a[7] << 24)
=>
i32 val = *((i32*)(a+4))
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D29394
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294582
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 9 Feb 2017 11:50:19 +0000 (11:50 +0000)]
[X86][SSE] Attempt to break register dependencies during lowerBuildVector
LowerBuildVectorv16i8/LowerBuildVectorv8i16 insert values into a UNDEF vector if the build vector doesn't contain any zero elements, resulting in register dependencies with a previous use of the register.
This patch attempts to break the register dependency by either always zeroing the vector before hand or (if we're inserting to the 0'th element) by using VZEXT_MOVL(SCALAR_TO_VECTOR(i32 AEXT(Elt))) which lowers to (V)MOVD and performs a similar function. Additionally (V)MOVD is a shorter instruction than PINSRB/PINSRW. We already do something similar for SSE41 PINSRD.
On pre-SSE41 LowerBuildVectorv16i8 we go a little further and use VZEXT_MOVL(SCALAR_TO_VECTOR(i32 ZEXT(Elt))) if the build vector contains zeros to avoid the vector zeroing at the cost of a scalar zero extension, which can probably be brought over to the other cases in a future patch in some cases (load folding etc.)
Differential Revision: https://reviews.llvm.org/D29720
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294581
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Thu, 9 Feb 2017 09:28:05 +0000 (09:28 +0000)]
LVI: Fix use-of-uninitialized-value after r294463
BlockValueStack can be reallocated making reference e invalid.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294572
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Thu, 9 Feb 2017 07:39:19 +0000 (07:39 +0000)]
Add new tests for EXTRACT_VECTOR_ELT (vector of packed i8/16/i32/i64/ps/pd data)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294565
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 9 Feb 2017 06:51:02 +0000 (06:51 +0000)]
[X86] Remove the HLE feature flag.
We only implemented it for one of the 3 HLE instructions and that instruction is also under the RTM flag. Clang only implements the RTM flag from its command line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294562
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 9 Feb 2017 06:50:59 +0000 (06:50 +0000)]
[X86] Remove INVPCID and SMAP feature flags. They aren't currently used by any instructions and not tested.
If we implement intrinsics for their instructions in the future, the feature flags can be added back with proper testing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294561
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 9 Feb 2017 04:27:34 +0000 (04:27 +0000)]
[X86] Clzero intrinsic and its addition under znver1
This patch does the following.
1. Adds an Intrinsic int_x86_clzero which works with __builtin_ia32_clzero
2. Identifies clzero feature using cpuid info. (Function:8000_0008, Checks if EBX[0]=1)
3. Adds the clzero feature under znver1 architecture.
4. The custom inserter is added in Lowering.
5. A testcase is added to check the intrinsic.
6. The clzero instruction is added to assembler test.
Patch by Ganesh Gopalasubramanian with a couple formatting tweaks, a disassembler test, and using update_llc_test.py from me.
Differential revision: https://reviews.llvm.org/D29385
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294558
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Thu, 9 Feb 2017 04:26:21 +0000 (04:26 +0000)]
Object: pad BSD ar string table to 4-bytes
cctools would pad the string table to a sizeof(int32_t) (explicitly
printed out by cctools rather than 4). This adjusts the string table to
make it more compatible with cctools, but is insufficient to make ld64
happy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294557
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Thu, 9 Feb 2017 02:50:01 +0000 (02:50 +0000)]
[GlobalISel] Simplify StringRef parameters. NFC.
'const' on StringRef parameters adds no guarantees. Remove it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294555
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Thu, 9 Feb 2017 01:52:17 +0000 (01:52 +0000)]
SwiftCC: swifterror register cannot be as the base register
Functions that have a dynamic alloca require a base register which is defined to
be X19 on AArch64 and r6 on ARM. We have defined the swifterror register to be
the same register. Use a different callee save register for swifterror instead:
X21 on AArch64
R8 on ARM
rdar://
30433803
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294551
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 9 Feb 2017 01:48:24 +0000 (01:48 +0000)]
LowerTypeTests: Change a few vtable globals in tests to constants.
It turns out that some of our negative tests were not in fact providing the
test coverage we expected: they were passing because the vtables were failing
an early check that they were constant. Fix this by changing the globals in
these tests to constants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294550
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Thu, 9 Feb 2017 01:09:54 +0000 (01:09 +0000)]
[MC] Fix some Clang-tidy modernize and Include What You Use warnings in SubtargetFeature; other minor fixes (NFC).
Same changes in files affected by reduced SubtargetFeature.h dependencies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294548
91177308-0d34-0410-b5e6-
96231b3b80d8
Wolfgang Pieb [Wed, 8 Feb 2017 23:46:59 +0000 (23:46 +0000)]
Reapply r294356 ("Keep track of spilled variables in LiveDebugValues").
Was reverted with r294447 due to undefined behavior with negative offsets
in DBG_VALUE instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294532
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 8 Feb 2017 23:23:39 +0000 (23:23 +0000)]
GlobalISel: legalize G_FPOW to a libcall on AArch64.
There's no instruction to implement it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294531
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 8 Feb 2017 23:23:32 +0000 (23:23 +0000)]
GlobalISel: translate @llvm.pow intrinsic to G_FPOW.
It'll usually be immediately legalized back to a libcall, but occasionally
something can be done with it so we'd just as well enable that flexibility from
the start.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294530
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Aizatsky [Wed, 8 Feb 2017 23:12:46 +0000 (23:12 +0000)]
[sancov] using comdat only when it is enabled
Differential Revision: https://reviews.llvm.org/D29733
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294529
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Wed, 8 Feb 2017 22:30:47 +0000 (22:30 +0000)]
[ARM/AArch ISel] SwiftCC: First parameters that are marked swiftself are not 'this returns'
We mark X0 as preserved by a call that passes the returned parameter.
x0 = ...
fun(x0) // no implicit def of x0
This no longer is valid if we pass the parameter in a different register then
the returned value as is the case with a swiftself parameter (passed in x20).
x20 = ...
fun(x20) // there should be an implict def of x8
rdar://
30425845
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294527
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Wed, 8 Feb 2017 22:23:19 +0000 (22:23 +0000)]
[MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294526
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Wed, 8 Feb 2017 22:19:56 +0000 (22:19 +0000)]
[ARM] Fix some Include What You Use warnings; other minor fixes (NFC).
This is preparation to reduce MC headers dependencies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294525
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 8 Feb 2017 22:14:11 +0000 (22:14 +0000)]
[InstCombine] add tests to show information-losing add nsw/nuw transforms; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294524
91177308-0d34-0410-b5e6-
96231b3b80d8
Amara Emerson [Wed, 8 Feb 2017 21:41:16 +0000 (21:41 +0000)]
Revert r294437 as it broke an asan buildbot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294523
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 8 Feb 2017 21:22:25 +0000 (21:22 +0000)]
GlobalISel: select G_[SU]MULH on AArch64.
Hopefully this'll be nuked by tablegen pretty soon, but until then it's
reasonably important for supporting C++ operator new[].
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294520
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 8 Feb 2017 21:22:15 +0000 (21:22 +0000)]
GlobalISel: expand mul-with-overflow into mul-hi on AArch64.
AArch64 has specific instructions to multiply two numbers at double the width
and produce the high part of the result. These can be used to implement LLVM's
mul.with.overflow instructions fairly simply. Helps with C++ operator new[].
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294519
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Wed, 8 Feb 2017 21:22:03 +0000 (21:22 +0000)]
[AMDGPU] Implement register pressure callbacks
Implement getRegPressureLimit and getRegPressureSetLimit callbacks in
SIRegisterInfo.
This makes standard converge scheduler to behave almost the same as
GCNScheduler, sometime slightly better sometimes a bit worse.
In gerenal that is also possible to switch GCNScheduler to use these
callbacks instead of getMaxWaves(), which also makes GCNScheduler
slightly better on some tests and slightly worse on another. A big
win is behavior with converge scheduler.
Note, these are used not only by scheduling, but in places like
MachineLICM.
Differential Revision: https://reviews.llvm.org/D29700
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294518
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Aizatsky [Wed, 8 Feb 2017 21:20:33 +0000 (21:20 +0000)]
[sancov] specifying comdat for sancov constructors
Differential Revision: https://reviews.llvm.org/D29662
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294517
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 8 Feb 2017 21:16:27 +0000 (21:16 +0000)]
Take code ownership of LLVM bitcode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294516
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Wed, 8 Feb 2017 20:58:37 +0000 (20:58 +0000)]
[CMake] Fix `is_llvm_target_library` and support out-of-order components
Summary: This patch is required by D28855, and enables us to rely on CMake's ability to handle out of order target dependencies.
Reviewers: mgorny, chapuni, bryant
Subscribers: llvm-commits, jgosnell
Differential Revision: https://reviews.llvm.org/D28869
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294514
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 8 Feb 2017 20:58:33 +0000 (20:58 +0000)]
build_llvm_package.bat: Build teh clang-format plugin separately
In r293373 we switched the build to linking dynamically against the
Universal CRT and include the redistributables in the installer.
However, clang-format.exe is copied into the vsix and needs to be
statically linked. This commit makes us build the plugin in a separate
step that uses static linking.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294513
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 8 Feb 2017 20:44:00 +0000 (20:44 +0000)]
ThinLTOBitcodeWriter: Strip debug info from merged module.
This module will contain nothing but vtable definitions and (soon)
available_externally function definitions, so there is no point in keeping
debug info in the module.
Differential Revision: https://reviews.llvm.org/D28913
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294511
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Wed, 8 Feb 2017 19:52:46 +0000 (19:52 +0000)]
[SLP] Additional test to check correct work of horizontal reductions,
NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294505
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Wed, 8 Feb 2017 19:25:23 +0000 (19:25 +0000)]
[Loop Vectorizer] Cost-based decision for vectorization form of memory instruction.
Making the cost model selecting between Interleave, GatherScatter or Scalar vectorization form of memory instruction.
The right decision should be done for non-consecutive memory access instrcuctions that may have more than one vectorization solution.
This patch includes the following changes:
- Cost Model calculates the cost of Load/Store vector form and choose the better option between Widening, Interleave, GatherScactter and Scalarization. Cost Model keeps the widening decision.
- Arrays of Uniform and Scalar values are moved from Legality to Cost Model.
- Cost Model collects Uniforms and Scalars per VF. The collection is based on CM decision map of Loadis/Stores vectorization form.
- Vectorization of memory instruction is performed according to the CM decision.
Differential Revision: https://reviews.llvm.org/D27919
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294503
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Wed, 8 Feb 2017 19:03:46 +0000 (19:03 +0000)]
[DebugInfo] Rename EmitDebugValue to EmitDebugThreadLocal (NFC)
As pointed out by David Blaikie in the post commit review of
r292624, EmitDebugValue should be called EmitDebugThreadLocal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294500
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 8 Feb 2017 19:01:27 +0000 (19:01 +0000)]
[X86][SSE] Regenerate scalar integer conversions to float tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294499
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 8 Feb 2017 18:17:21 +0000 (18:17 +0000)]
Fix inline-asm-diags.ll on Windows, give it a triple to avoid WoA thumb confusion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294496
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Wed, 8 Feb 2017 18:11:31 +0000 (18:11 +0000)]
llvm-objdump: make NoLeadingAddr work on more than just MachO
Support printing the disassembly without the address on all formats
rather than making it MachO specific.
Patch by Jeff Muizelaar!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294495
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Wed, 8 Feb 2017 17:59:34 +0000 (17:59 +0000)]
[DAGCombiner] NFC. Mark ByteProvider accessors as const
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294494
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 8 Feb 2017 17:57:27 +0000 (17:57 +0000)]
GlobalISel: select G_VASTART on iOS AArch64.
The AAPCS ABI is substantially more complicated so that's coming in a separate
patch. For now we can generate correct code for iOS though.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294493
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 8 Feb 2017 17:57:20 +0000 (17:57 +0000)]
GlobalISel: translate @llvm.va_start intrinsic.
Because we need to preserve the memory access being performed we need a
separate instruction to represent this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294492
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 8 Feb 2017 17:49:52 +0000 (17:49 +0000)]
NVPTX: Extract mem intrinsic expansions into utilities
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294490
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Wed, 8 Feb 2017 17:45:27 +0000 (17:45 +0000)]
[Reassociate] Remove an unused argument. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294489
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Wed, 8 Feb 2017 17:44:43 +0000 (17:44 +0000)]
Fix bitcode upgrade for DIGlobalVariables with a var: field.
This is a follow-up to https://reviews.llvm.org/D29349. It turns out
that NeedUpgradeToDIGlobalVariableExpression is always necessary when
we encountered a version==0 record because it may always be referenced
via a list of globals in a DICompileUnit. My tests weren't good enough
to catch this though. To trigger this case, we need much older bitcode
produced by LLVM around version 3.7.
<rdar://problem/
30404262>
Differential Revision: https://reviews.llvm.org/D29693
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294488
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 8 Feb 2017 17:37:17 +0000 (17:37 +0000)]
[InstCombine] add test for missed vector icmp fold; NFC
Also, move the related existing scalar test to a renamed file
where I'm planning to add more icmp-add tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294487
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanne Wouda [Wed, 8 Feb 2017 16:48:35 +0000 (16:48 +0000)]
Move inline asm diags tests to an ARM directory.
The assembler syntaxes (and parsers) differ too much to expect this test to
pass for all of them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294475
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 8 Feb 2017 16:31:00 +0000 (16:31 +0000)]
[Hexagon] Fix decoding conflict between A2_zxtb and A4_ext
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294472
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Wed, 8 Feb 2017 16:25:05 +0000 (16:25 +0000)]
[mips] MUL macro variations
[mips] MUL macro variations
Adds support for MUL macro variations.
Patch by: Srdjan Obucina
Reviewers: zoran.jovanovic, vkalintiris, dsanders, sdardis, obucina, seanbruno
Differential Revision: https://reviews.llvm.org/D16807
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294471
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 8 Feb 2017 16:19:36 +0000 (16:19 +0000)]
[InstCombine] add local name for repeated calls; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294470
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanne Wouda [Wed, 8 Feb 2017 16:14:01 +0000 (16:14 +0000)]
Fix inline asm diagnostics test.
Don't depend on X86 everywhere. Fix the original problem with a reg-exp for the
column number.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294468
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Wed, 8 Feb 2017 15:22:52 +0000 (15:22 +0000)]
LVI: Add a per-value worklist limit to LazyValueInfo.
Summary:
LVI is now depth first, which is optimal for iteration strategy in
terms of work per call. However, the way the results get cached means
it can still go very badly N^2 or worse right now. The overdefined
cache is per-block, because LVI wants to try to get different results
for the same name in different blocks (IE solve the problem
PredicateInfo solves). This means even if we discover a value is
overdefined after going very deep, it doesn't cache this information,
causing it to end up trying to rediscover it again and again. The
same is true for values along the way. In practice, overdefined
anywhere should mean overdefined everywhere (this is how, for example,
SCCP works).
Until we get around to reworking the overdefined cache, we need to
limit the worklist size we process. Note that permanently reverting
the DFS strategy exploration seems the wrong strategy (temporarily
seems fine if we really want). BFS is clearly the wrong approach, it
just gets luckier on some testcases. It's also very hard to design
an effective throttle for BFS. For DFS, the throttle is directly related
to the depth of the CFG. So really deep CFGs will get cutoff, smaller
ones will not. As the CFG simplifies, you get better results.
In BFS, the limit is it's related to the fan-out times average block size,
which is harder to reason about or make good choices for.
Bug being filed about the overdefined cache, but it will require major
surgery to fix it (plumbing predicateinfo through CVP or LVI).
Note: I did not make this number configurable because i'm not sure
anyone really needs to tweak this knob. We run CVP 3 times. On the
testcases i have the slow ones happen in the middle, where CVP is
doing cleanup work other things are effective at. Over the course of
3 runs, we don't see to have any real loss of performance.
I haven't gotten a minimized testcase yet, but just imagine in your
head a testcase where, going *up* the CFG, you have branches, one of
which leads 50000 blocks deep, and the other, to something where the
answer is overdefined immediately. BFS would discover the overdefined
faster than DFS, but do more work to do so. In practice, the right
answer is "once DFS discovers overdefined for a value, stop trying to
get more info about that value" (and so, DFS would normally cache the
overdefined results for every value it passed through in those 50k
blocks, and never do that work again. But it don't, because of the
naming problem)
Reviewers: chandlerc, djasper
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D29715
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294463
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 8 Feb 2017 15:22:52 +0000 (15:22 +0000)]
[x86] add AVX512vl target for more coverage; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294462
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Laevsky [Wed, 8 Feb 2017 15:21:48 +0000 (15:21 +0000)]
[InstComobineCalls] Fix buildbot failures after r294453.
Some targets don't support uint64_t options. Change type to unsigned.
Differential Revision: https://reviews.llvm.org/D28909
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294461
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanne Wouda [Wed, 8 Feb 2017 14:48:05 +0000 (14:48 +0000)]
[Assembler] Enable nicer diagnostics for inline assembly.
Fixed test.
Summary:
Enables source location in diagnostic messages from the backend. This
is after parsing, during finalization. This requires the SourceMgr, the
inline assembly string buffer, and DiagInfo to still be alive after
EmitInlineAsm returns.
This patch creates a single SourceMgr for inline assembly inside the
AsmPrinter. MCContext gets a pointer to this SourceMgr. Using one
SourceMgr per call to EmitInlineAsm would make it difficult for
MCContext to figure out in which SourceMgr the SMLoc is located, while a
single SourceMgr can figure it out if it has multiple buffers.
The Str argument to EmitInlineAsm is copied into a buffer and owned by
the inline asm SourceMgr. This ensures that DiagHandlers won't print
garbage. (Clang emits a "note: instantiated into assembly here", which
refers to this string.)
The AsmParser gets destroyed before finalization, which means that the
DiagHandlers the AsmParser installs into the SourceMgr will be stale.
Restore the saved DiagHandlers.
Since now we're using just one SourceMgr for multiple inline asm
strings, we need to tell the AsmParser which buffer it needs to parse
currently. Hand a buffer id -- returned from SourceMgr::
AddNewSourceBuffer -- to the AsmParser.
Reviewers: rnk, grosbach, compnerd, rengolin, rovka, anemet
Reviewed By: rnk
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D29441
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294458
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 8 Feb 2017 14:44:45 +0000 (14:44 +0000)]
[X86][SSE] Tidyup LowerBuildVectorv16i8 and LowerBuildVectorv8i16. NFCI.
Run clang-format and standardized variable names between functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294456
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury Sechet [Wed, 8 Feb 2017 14:35:48 +0000 (14:35 +0000)]
Add test case for pr31890. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294455
91177308-0d34-0410-b5e6-
96231b3b80d8
Konstantin Zhuravlyov [Wed, 8 Feb 2017 14:34:10 +0000 (14:34 +0000)]
[AMDGPU][NFC] Assign IsaInfo to reference variable in order to shorten long lines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294454
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Laevsky [Wed, 8 Feb 2017 14:32:04 +0000 (14:32 +0000)]
[InstCombineCalls] Unfold element atomic memcpy instruction
Differential Revision: https://reviews.llvm.org/D28909
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294453
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Laevsky [Wed, 8 Feb 2017 14:23:47 +0000 (14:23 +0000)]
[InstCombineCalls] Remove zero length atomic memcpy intrinsics
Differential Revision: https://reviews.llvm.org/D28909
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294452
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Wed, 8 Feb 2017 14:23:30 +0000 (14:23 +0000)]
Fix test to work on swift/cyclone too
I forgot to remove the neonfp target feature from the test, which means we'd
have trouble selecting VADDS on targets that have neonfp enabled by default.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294451
91177308-0d34-0410-b5e6-
96231b3b80d8
Konstantin Zhuravlyov [Wed, 8 Feb 2017 14:05:23 +0000 (14:05 +0000)]
[AMDGPU] Add target information that is required by tools to metadata
Differential Revision: https://reviews.llvm.org/D28760#
fb670e28
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294449
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Wed, 8 Feb 2017 14:02:16 +0000 (14:02 +0000)]
Revert "[Assembler] Enable nicer diagnostics for inline assembly."
This reverts commit r294433 because it seems it broke the buildbots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294448
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 8 Feb 2017 13:49:28 +0000 (13:49 +0000)]
Revert r294356, "DebugInfo: Track spilled variables in LiveDebugValues"
It caused undefined behavior in VarLoc. As far as I investigated,
- VarLoc::VarLoc() treats negative offset value as InvalidKind.
Consider the case that (int64_t)MI.getOperand(1).getImm() is negative and whether it satisfies ((uint64_t)Offset < (1ULL << 32)).
- Comparison operators in VarLoc behave undefined since VarLoc::Loc.Hash is uninitialized in case of InvalidKind.
I guess Offset (in VarLoc) could be made aware of signed, but I am not sure.
So I have reverted it for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294447
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Wed, 8 Feb 2017 13:48:08 +0000 (13:48 +0000)]
Move test from r294430 to target-specific directory
The test is X86-specific, and it broke on the ARM bots because they don't build
the X86 target.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294446
91177308-0d34-0410-b5e6-
96231b3b80d8