OSDN Git Service
David Majnemer [Mon, 20 Jun 2016 02:33:29 +0000 (02:33 +0000)]
[LoopIdiom] Don't remove dead operands manually
Removing dead instructions requires remembering which operands have
already been removed. RecursivelyDeleteTriviallyDeadInstructions has
this logic, don't partially reimplement it in LoopIdiomRecognize.
This fixes PR28196.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273132
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 20 Jun 2016 01:05:15 +0000 (01:05 +0000)]
Reformat blank lines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273131
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 20 Jun 2016 00:49:20 +0000 (00:49 +0000)]
Trailing whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273130
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 20 Jun 2016 00:37:41 +0000 (00:37 +0000)]
Untabify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273129
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 19 Jun 2016 21:40:12 +0000 (21:40 +0000)]
[InstSimplify] add tests for PR27689; regenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273128
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sun, 19 Jun 2016 21:36:35 +0000 (21:36 +0000)]
Address Eli's post-commit comments
Use an APInt to handle pointers of arbitrary width, let
accumulateConstantOffset handle overflow issues.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273126
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 19 Jun 2016 20:59:19 +0000 (20:59 +0000)]
[X86][AVX512] Added 512-bit BITREVERSE tests and enabled AVX512BW lowering support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273125
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 19 Jun 2016 20:22:43 +0000 (20:22 +0000)]
Strip trailing whitespace. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273124
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 19 Jun 2016 18:20:44 +0000 (18:20 +0000)]
Fixed signed/unsigned warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273120
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 19 Jun 2016 18:03:52 +0000 (18:03 +0000)]
[X86][SSE] Allow target shuffle combining to match masks with SM_Sentinel values
We currently only allow exact matches of shuffle mask patterns during target shuffle combining.
This patch relaxes this to permit SM_SentinelUndef in the combined shuffle to always be accepted as well as allowing exact matching of the SM_SentinelZero value.
I've adjusted some tests that were requiring exact shuffle masks to now include undef values.
Differential Revision: http://reviews.llvm.org/D21495
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273119
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 19 Jun 2016 17:20:27 +0000 (17:20 +0000)]
fix formatting, typo; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273118
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 19 Jun 2016 15:37:39 +0000 (15:37 +0000)]
[X86] Add an assert to ensure that a routine is only used with 128-bit vectors. Reduce SmallVector size accordingly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273117
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 19 Jun 2016 15:37:37 +0000 (15:37 +0000)]
[X86] Make is128BitLaneRepeatedShuffleMask correct the indices of the second vector for the smaller mask. This removes some custom correction code and can potentially provide other benefits in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273116
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 19 Jun 2016 15:37:35 +0000 (15:37 +0000)]
[X86] Remove a dead path through one of the shuffle lowering routines. It's only called on single input shuffles masks already. Add an assert instead to verify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273115
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 19 Jun 2016 15:37:33 +0000 (15:37 +0000)]
[X86] Pre-allocate a SmallVector instead of using push_back in a loop. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273114
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 19 Jun 2016 15:37:30 +0000 (15:37 +0000)]
[X86] Use SmallVector::assign instead of resize to ensure we really start with a vector of all -1s. Otherwise we're trusting the caller to pass the right thing.
This should be no functional change with current code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273113
91177308-0d34-0410-b5e6-
96231b3b80d8
Vassil Vassilev [Sun, 19 Jun 2016 15:31:12 +0000 (15:31 +0000)]
Add the corresponding modulemap entry, following up r273066.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273112
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Dewhurst [Sun, 19 Jun 2016 12:56:42 +0000 (12:56 +0000)]
[SPARC] Additional condition required for DelaySlot fixing erratum in revision r273108.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273111
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Dewhurst [Sun, 19 Jun 2016 12:52:39 +0000 (12:52 +0000)]
[SPARC[ Correcting out-of-date unit tests checked in as part of r273108
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273110
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Sun, 19 Jun 2016 12:37:52 +0000 (12:37 +0000)]
Indent consistently.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273109
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Dewhurst [Sun, 19 Jun 2016 11:03:28 +0000 (11:03 +0000)]
[SPARC] Fixes for hardware errata on LEON processor.
Passes to fix three hardware errata that appear on some LEON processor variants.
The instructions FSMULD, FMULS and FDIVS do not work as expected on some LEON processors. This change allows those instructions to be substituted for alternatives instruction sequences that are known to work.
These passes only run when selected individually, or as part of a processor defintion. They are not included in general SPARC processor compilations for non-LEON processors or for those LEON processors that do not have these hardware errata.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273108
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sun, 19 Jun 2016 06:14:56 +0000 (06:14 +0000)]
[LoadCombine] Combine Loads formed from GEPS with negative indexes
Change the underlying offset and comparisons to use int64_t instead of
uint64_t.
Patch by River Riddle!
Differential Revision: http://reviews.llvm.org/D21499
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273105
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Sat, 18 Jun 2016 23:25:37 +0000 (23:25 +0000)]
doesSetDirectiveSuppressesReloc -> doesSetDirectiveSuppressReloc, the
former is grammatically incorrect.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273100
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Sat, 18 Jun 2016 23:23:38 +0000 (23:23 +0000)]
If the revision number starts with r, drop it. It will get added back
later and we don't want to use it twice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273099
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 18 Jun 2016 22:59:08 +0000 (22:59 +0000)]
[X86][AVX] Added test case for PR28136
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273098
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 18 Jun 2016 21:18:21 +0000 (21:18 +0000)]
[X86][SSSE3] Added examples of target shuffle combining failing to match undefs in shuffle masks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273097
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 18 Jun 2016 21:07:31 +0000 (21:07 +0000)]
[X86][XOP] Added fast-isel tests matching tools/clang/test/CodeGen/xop-builtins.c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273096
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Sat, 18 Jun 2016 19:13:38 +0000 (19:13 +0000)]
test commit: remove trailing whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273094
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 18 Jun 2016 17:20:52 +0000 (17:20 +0000)]
[X86][TBM] Added fast-isel tests matching tools/clang/test/CodeGen/tbm-builtins.c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273087
91177308-0d34-0410-b5e6-
96231b3b80d8
Vasileios Kalintiris [Sat, 18 Jun 2016 15:39:43 +0000 (15:39 +0000)]
[mips] Emit a JALR with $rd equal to $zero, instead of a JR in MIPS32R6.
Summary:
JR is an alias of JALR with $rd=0 in the R6 ISA. Also, this fixes recursive
builds in MIPS32R6.
Reviewers: dsanders, sdardis
Subscribers: jfb, dschuff, dsanders, sdardis, llvm-commits
Differential Revision: http://reviews.llvm.org/D21370
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273085
91177308-0d34-0410-b5e6-
96231b3b80d8
Amjad Aboud [Sat, 18 Jun 2016 10:25:07 +0000 (10:25 +0000)]
[codeview] Emit non-virtual method type.
Differential Revision: http://reviews.llvm.org/D21011
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273084
91177308-0d34-0410-b5e6-
96231b3b80d8
Marcin Koscielnicki [Sat, 18 Jun 2016 10:10:37 +0000 (10:10 +0000)]
[sanitizers] Disable target-specific lowering of string functions.
CodeGen has hooks that allow targets to emit specialized code instead
of calls to memcmp, memchr, strcpy, stpcpy, strcmp, strlen, strnlen.
When ASan/MSan/TSan/ESan is in use, this sidesteps its interceptors, resulting
in uninstrumented memory accesses. To avoid that, make these sanitizers
mark the calls as nobuiltin.
Differential Revision: http://reviews.llvm.org/D19781
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273083
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Sat, 18 Jun 2016 09:17:32 +0000 (09:17 +0000)]
Add a super basic LazyCallGraph DOT printer.
Access it through -passes=print-lcg-dot
Let me know any suggestions for changing the rendering; I'm not
particularly attached to what is implemented here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273082
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Sat, 18 Jun 2016 05:15:58 +0000 (05:15 +0000)]
Add looping testcase that broke in r272987
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273081
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Sat, 18 Jun 2016 05:15:53 +0000 (05:15 +0000)]
AMDGPU: Fix kernel argument alignment impacting stack size
Don't use AllocateStack because kernel arguments have nothing
to do with the stack. The ensureMaxAlignment call was still
changing the stack alignment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273080
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Sat, 18 Jun 2016 04:38:31 +0000 (04:38 +0000)]
[SCEV] Fix incorrect trip count computation
The way we elide max expressions when computing trip counts is incorrect
-- it breaks cases like this:
```
static int wrapping_add(int a, int b) {
return (int)((unsigned)a + (unsigned)b);
}
void test() {
volatile int end_buf =
2147483548; // INT_MIN - 100
int end = end_buf;
unsigned counter = 0;
for (int start = wrapping_add(end, 200); start < end; start++)
counter++;
print(counter);
}
```
Note: the `NoWrap` variable that was being tested has little to do with
the values flowing into the max expression; it is a property of the
induction variable.
test/Transforms/LoopUnroll/nsw-tripcount.ll was added to solely test
functionality I'm reverting in this change, so I've deleted the test
fully.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273079
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 18 Jun 2016 02:38:26 +0000 (02:38 +0000)]
[X86][SSE4A] Autoupgrade and remove MOVNTSD/MOVNTSS intrinsics
Required better annotation of the instruction defs upon removal of the builtin intrinsic pattern.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273077
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sat, 18 Jun 2016 00:24:49 +0000 (00:24 +0000)]
Add a test for r273022.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273073
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sat, 18 Jun 2016 00:03:20 +0000 (00:03 +0000)]
[X86Subtarget] Use isPositionIndependent(). NFC.
Differential Revision: http://reviews.llvm.org/D21480
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273071
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 17 Jun 2016 23:36:38 +0000 (23:36 +0000)]
Revert "Revert "Revert "InstCombine: Reduce trunc (shl x, K) width."""
This seems to be causing an infinite loop / crash in instcombine
on some bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273069
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Fri, 17 Jun 2016 22:40:19 +0000 (22:40 +0000)]
Codegen: [MBP] Add assert strings. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273067
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Fri, 17 Jun 2016 22:38:08 +0000 (22:38 +0000)]
Support/ELF: Add AMDGPU relocation definitions to match documentation
Reviewers: arsenm, kzhuravl, rafael
Subscribers: llvm-commits, kzhuravl
Differential Revision: http://reviews.llvm.org/D21443
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273066
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Fri, 17 Jun 2016 22:35:41 +0000 (22:35 +0000)]
[LAA] Enable symbolic stride speculation for all LAA clients
This is a functional change for LLE and LDist. The other clients (LV,
LVerLICM) already had this explicitly enabled.
The temporary boolean parameter to LAA is removed that allowed turning
off speculation of symbolic strides. This makes LAA's caching interface
LAA::getInfo only take the loop as the parameter. This makes the
interface more friendly to the new Pass Manager.
The flag -enable-mem-access-versioning is moved from LV to a LAA which
now allows turning off speculation globally.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273064
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 17 Jun 2016 22:27:03 +0000 (22:27 +0000)]
AMDGPU: Temporarily select trap to s_endpgm
This should select to s_trap, but that requires
additonal work to setup and enable the trap handler.
For now emit s_endpgm so bugpoint stops getting stuck
on the unsupported call to abort.
Emit a warning that this will only terminate the wave and
not really trap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273062
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 17 Jun 2016 22:26:56 +0000 (22:26 +0000)]
DiagnosticInfo: Allow unsupported be a warning
Some unsupported features can be ignored, so don't force
this to be a hard error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273061
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Fri, 17 Jun 2016 22:22:09 +0000 (22:22 +0000)]
AMDGPU/SI: Simplify code in SITargetLowering::LowerGlobalAddress()
This change were suggested in http://reviews.llvm.org/D21154.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273059
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Fri, 17 Jun 2016 22:16:06 +0000 (22:16 +0000)]
Add support for Darwin’s static library table of contents with 64-bit offsets to the archive members.
Darwin added support in its Xcode 8.0 tools (released in the beta) for static
library table of contents with 64-bit offsets to the archive members. The
change is very straight forward. The table of contents member is named
___.SYMDEF_64 or "___.SYMDEF_64 SORTED" and same layout is used but with
fields using 64 bit values instead of 32 bit values.
rdar://
26869808
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273058
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 17 Jun 2016 22:14:39 +0000 (22:14 +0000)]
[codeview] Emit incomplete member pointer types with the unknown model
An incomplete member pointer type will always have a size of zero, so we
don't need an extra flag. Credit to David Majnemer for the idea.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273057
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 17 Jun 2016 21:53:31 +0000 (21:53 +0000)]
[Coverage] Move logic to encode filenames and mappings into llvm (NFC)
Currently, frontends which emit source-based code coverage have to
duplicate logic to encode filenames and raw coverage mappings properly.
This violates an abstraction layer and forces frontends to copy tricky
code.
Introduce llvm::coverage::encodeFilenamesAndRawMappings() to take care
of this.
This will help us experiment with zlib-compressing coverage mapping
data.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273055
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 17 Jun 2016 21:31:33 +0000 (21:31 +0000)]
[codeview] Add DIFlags for pointer to member representations
Summary:
This seems like the least intrusive way to pass this information
through.
Fixes PR28151
Reviewers: majnemer, aprantl, dblaikie
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D21444
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273053
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 17 Jun 2016 21:31:03 +0000 (21:31 +0000)]
[Coverage] Get rid of an input/output parameter (NFC)
readFunctionRecords is used to iterate through the entries of the
coverage mapping section. Instead of expecting the function to update
the iterator through a `const char *&` parameter, just return the
updated iterator.
This will help us experiment with zlib-compressing coverage mapping
data.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273052
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 17 Jun 2016 21:18:41 +0000 (21:18 +0000)]
AMDGPU: Remove llvm.SI.tid intrinsic
Mesa doesn't emit this for llvm >= 3.8 anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273050
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 17 Jun 2016 20:41:14 +0000 (20:41 +0000)]
Apply another batch of fixes from clang-tidy's performance-unnecessary-value-param.
Contains some manual fixes. No functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273047
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 17 Jun 2016 20:38:01 +0000 (20:38 +0000)]
[pdb] Don't error on missing FPO streams
64-bit PDBs never have FPO data. They have xdata instead.
Also improve error recovery of stream summary dumping while I'm here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273046
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 17 Jun 2016 20:33:53 +0000 (20:33 +0000)]
Revert "Revert "InstCombine: Reduce trunc (shl x, K) width.""
Reapply r272987. Condition should be in terms of the destination type,
and the flags should not be copied.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273045
91177308-0d34-0410-b5e6-
96231b3b80d8
Marcin Koscielnicki [Fri, 17 Jun 2016 20:24:07 +0000 (20:24 +0000)]
[SelectionDAG] Don't treat library calls specially if marked with nobuiltin.
To be used by D19781.
Differential Revision: http://reviews.llvm.org/D19801
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273039
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Fri, 17 Jun 2016 20:21:17 +0000 (20:21 +0000)]
[X86] Add missing AVX512 anyext patterns.
Add AVX512 anyext patterns for i16 and i64, modeled on the existing i8 and
i32 patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273038
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian McCarthy [Fri, 17 Jun 2016 19:45:59 +0000 (19:45 +0000)]
Revert "Properly handle short file names on the command line in Windows"
This reverts commit
3e5651782cfc985fca9d94595cad63059e587e2f.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273033
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 17 Jun 2016 19:10:09 +0000 (19:10 +0000)]
[PM] Port MergedLoadStoreMotion to the new pass manager, take two.
This is indeed a much cleaner approach (thanks to Daniel Berlin
for pointing out), and also David/Sean for review.
Differential Revision: http://reviews.llvm.org/D21454
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273032
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 17 Jun 2016 18:59:41 +0000 (18:59 +0000)]
Avoid duplicated map lookups. No functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273030
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 17 Jun 2016 18:40:46 +0000 (18:40 +0000)]
ARM: take account of possible bundle when erasing an instruction.
Fortunately this appears to be the only ARM-specific pass that runs while
bundles might be in play, so no other cases need modifying.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273029
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 17 Jun 2016 18:20:14 +0000 (18:20 +0000)]
[IRObjectFile] Handle .weak in RecordStreamer.
Differential Revision: http://reviews.llvm.org/D21476
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273027
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Fri, 17 Jun 2016 18:11:48 +0000 (18:11 +0000)]
Support expanding partial-word cmpxchg to full-word cmpxchg in AtomicExpandPass.
Many CPUs only have the ability to do a 4-byte cmpxchg (or ll/sc), not 1
or 2-byte. For those, you need to mask and shift the 1 or 2 byte values
appropriately to use the 4-byte instruction.
This change adds support for cmpxchg-based instruction sets (only SPARC,
in LLVM). The support can be extended for LL/SC-based PPC and MIPS in
the future, supplanting the ISel expansions those architectures
currently use.
Tests added for the IR transform and SPARCv9.
Differential Revision: http://reviews.llvm.org/D21029
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273025
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 17 Jun 2016 18:07:14 +0000 (18:07 +0000)]
[Codegen] Change PICLevel.
We convert `Default` to `NotPIC` so that target independent code
can reason about this correctly.
Differential Revision: http://reviews.llvm.org/D21394
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273024
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 17 Jun 2016 17:59:48 +0000 (17:59 +0000)]
LoopSimplifyCFG: Prefer `const auto &` to `auto &`, for clarity. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273023
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 17 Jun 2016 17:53:57 +0000 (17:53 +0000)]
Don't use the new x86 relax relocations on the gold plugin.
Should bring back the bots with old versions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273022
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 17 Jun 2016 17:43:41 +0000 (17:43 +0000)]
Change RelaxELFRelocations for llc.
As a developer tool it makes sense for it to use the new relocations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273019
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 17 Jun 2016 17:26:07 +0000 (17:26 +0000)]
Change RelaxELFRelocations' default.
NFC to the existing clients since they all set it already.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273017
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 17 Jun 2016 17:04:56 +0000 (17:04 +0000)]
Change the default of -relax-relocations.
llvm-mc is a developer tool, as such it make sense for it to use new
features by default.
This doesn't change the user facing clang, which still defaults to non
relaxable relocations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273014
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 17 Jun 2016 16:46:50 +0000 (16:46 +0000)]
[InstCombine] allow more than one use for vector bitcast folding with selects
The motivating example for this transform is similar to D20774 where bitcasts interfere
with a single cmp/select sequence, but in this case we have 2 uses of each bitcast to
produce min and max ops:
define void @minmax_bc_store(<4 x float> %a, <4 x float> %b, <4 x float>* %ptr1, <4 x float>* %ptr2) {
%cmp = fcmp olt <4 x float> %a, %b
%bc1 = bitcast <4 x float> %a to <4 x i32>
%bc2 = bitcast <4 x float> %b to <4 x i32>
%sel1 = select <4 x i1> %cmp, <4 x i32> %bc1, <4 x i32> %bc2
%sel2 = select <4 x i1> %cmp, <4 x i32> %bc2, <4 x i32> %bc1
%bc3 = bitcast <4 x float>* %ptr1 to <4 x i32>*
store <4 x i32> %sel1, <4 x i32>* %bc3
%bc4 = bitcast <4 x float>* %ptr2 to <4 x i32>*
store <4 x i32> %sel2, <4 x i32>* %bc4
ret void
}
With this patch, we move the selects up to use the input args which allows getting rid of
all of the bitcasts:
define void @minmax_bc_store(<4 x float> %a, <4 x float> %b, <4 x float>* %ptr1, <4 x float>* %ptr2) {
%cmp = fcmp olt <4 x float> %a, %b
%sel1.v = select <4 x i1> %cmp, <4 x float> %a, <4 x float> %b
%sel2.v = select <4 x i1> %cmp, <4 x float> %b, <4 x float> %a
store <4 x float> %sel1.v, <4 x float>* %ptr1, align 16
store <4 x float> %sel2.v, <4 x float>* %ptr2, align 16
ret void
}
The asm for x86 SSE then improves from:
movaps %xmm0, %xmm2
cmpltps %xmm1, %xmm2
movaps %xmm2, %xmm3
andnps %xmm1, %xmm3
movaps %xmm2, %xmm4
andnps %xmm0, %xmm4
andps %xmm2, %xmm0
orps %xmm3, %xmm0
andps %xmm1, %xmm2
orps %xmm4, %xmm2
movaps %xmm0, (%rdi)
movaps %xmm2, (%rsi)
To:
movaps %xmm0, %xmm2
minps %xmm1, %xmm2
maxps %xmm0, %xmm1
movaps %xmm2, (%rdi)
movaps %xmm1, (%rsi)
The TODO comments show that we're limiting this transform only to vectors and only to bitcasts
because we need to improve other transforms or risk creating worse codegen.
Differential Revision: http://reviews.llvm.org/D21190
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273011
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 17 Jun 2016 16:13:21 +0000 (16:13 +0000)]
[CodeView] Refactor enumerator emission
This addresses Amjad's review comments on D21442.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273010
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 17 Jun 2016 16:11:20 +0000 (16:11 +0000)]
[codeview] Make function names more consistent with MSVC
Names in function id records don't include nested name specifiers or
template arguments, but names in the symbol stream include both.
For the symbol stream, instead of having Clang put the fully qualified
name in the subprogram display name, recreate it from the subprogram
scope chain. For the type stream, take the unqualified name and chop of
any template arguments.
This makes it so that CodeView DI metadata is more similar to DWARF DI
metadata.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273009
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Fri, 17 Jun 2016 16:06:17 +0000 (16:06 +0000)]
Refactor and cleanup Assembly Parsing / Lexing
Recommiting after fixing non-atomic insert to front of SmallVector in
MCAsmLexer.h
Add explicit Comment Token in Assembly Lexing for future support for
outputting explicit comments from inline assembly. As part of this,
CPPHash Directives are now explicitly distinguished from Hash line
comments in Lexer.
Line comments are recorded as EndOfStatement tokens, not Comment tokens
to simplify compatibility with current TargetParsers. This slightly
complicates comment output.
This remove all lexing tasks out of the parser, does minor cleanup
to remove extraneous newlines Asm Output, and some improvements white
space handling.
Reviewers: rtrieu, dwmw2, rnk
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20009
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273007
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Laevsky [Fri, 17 Jun 2016 15:19:41 +0000 (15:19 +0000)]
[MCContext] Don't use getenv inside class constructor
Differential Revision: http://reviews.llvm.org/D21471
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273005
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 17 Jun 2016 14:27:38 +0000 (14:27 +0000)]
[X86][SSE4A] Remove the GCCBuiltins from the movntsd/movntss intrinsic defs so we can emit native IR from clang.
Clang-side sibling commit to follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273002
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 17 Jun 2016 14:14:29 +0000 (14:14 +0000)]
[ARM] Strength reduce vectors to arrays.
No functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273001
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 17 Jun 2016 13:15:10 +0000 (13:15 +0000)]
[PPC] Strength-reduce SmallVectors into arrays.
No functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272999
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 17 Jun 2016 13:07:06 +0000 (13:07 +0000)]
[libFuzzer] make the single-run output more reliable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272998
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 17 Jun 2016 12:20:50 +0000 (12:20 +0000)]
[X86] Pre-size several SmallVectors instead of calling push_back in a loop. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272997
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 17 Jun 2016 12:20:48 +0000 (12:20 +0000)]
[X86] Fix formatting. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272996
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Fri, 17 Jun 2016 09:13:15 +0000 (09:13 +0000)]
[LLE] Don't hard-code the name of the preheader in test
Turns out a didn't get this right because symbolic stride versioning
changes the name. Relax the matching.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272992
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 17 Jun 2016 07:15:29 +0000 (07:15 +0000)]
[PM] Run clang-format over various parts of the new pass manager code
prior to some very substantial patches to isolate any formatting-only
changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272991
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 17 Jun 2016 06:28:53 +0000 (06:28 +0000)]
Revert "InstCombine: Reduce trunc (shl x, K) width."
This reverts commit r272987.
This might be causing crashes on some bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272990
91177308-0d34-0410-b5e6-
96231b3b80d8
Qin Zhao [Fri, 17 Jun 2016 04:50:20 +0000 (04:50 +0000)]
[esan|cfrag] Add the struct field size array in StructInfo
Summary:
Adds the struct field size array in struct StructInfo.
Updates test struct_field_count_basic.ll.
Reviewers: aizatsky
Subscribers: vitalybuka, zhaoqin, kcc, eugenis, bruening, llvm-commits
Differential Revision: http://reviews.llvm.org/D21341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272989
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 17 Jun 2016 04:43:22 +0000 (04:43 +0000)]
InstCombine: Reduce trunc (shl x, K) width.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272987
91177308-0d34-0410-b5e6-
96231b3b80d8
Ranjeet Singh [Fri, 17 Jun 2016 00:52:41 +0000 (00:52 +0000)]
[ARM] Add support for mrrc/mrrc2 intrinsics.
Reapplying patch as it was reverted when it was first
committed because of an assertion failure when the
mrrc2 intrinsic was called in ARM mode. The failure
was happening because the instruction was being built
in ARMISelDAGToDAG.cpp and the tablegen description for
mrrc2 instruction doesn't allow you to use a predicate.
The ARM architecture manuals do say that mrrc2 in ARM
mode can be predicated with AL in assembly but this has
no effect on the encoding of the instruction as the top
4 bits will always be 1111 not 1110 which is the encoding
for the condition AL.
Differential Revision: http://reviews.llvm.org/D21408
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272982
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 17 Jun 2016 00:45:00 +0000 (00:45 +0000)]
[RS4GC] Pass CallSite by value instead of const ref; NFC
That's the idiomatic LLVM pattern.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272981
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 17 Jun 2016 00:11:01 +0000 (00:11 +0000)]
[PM] Remove support for omitting the AnalysisManager argument to new
pass manager passes' `run` methods.
This removes a bunch of SFINAE goop from the pass manager and just
requires pass authors to accept `AnalysisManager<IRUnitT> &` as a dead
argument. This is a small price to pay for the simplicity of the system
as a whole, despite the noise that changing it causes at this stage.
This will also helpfull allow us to make the signature of the run
methods much more flexible for different kinds af passes to support
things like intelligently updating the pass's progression over IR units.
While this touches many, many, files, the changes are really boring.
Mostly made with the help of my trusty perl one liners.
Thanks to Sean and Hal for bouncing ideas for this with me in IRC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272978
91177308-0d34-0410-b5e6-
96231b3b80d8
Chuang-Yu Cheng [Fri, 17 Jun 2016 00:04:39 +0000 (00:04 +0000)]
Use m_APInt in SimplifyCFG
Switch from m_Constant to m_APInt per David's request. NFC.
Author: Thomas Jablin (tjablin)
Reviewers: majnemer cycheng
http://reviews.llvm.org/D21440
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272977
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Thu, 16 Jun 2016 22:57:55 +0000 (22:57 +0000)]
[LV] Move management of symbolic strides to LAA. NFCI
This is still NFCI, so the list of clients that allow symbolic stride
speculation does not change (yes: LV and LoopVersioningLICM, no: LLE,
LDist). However since the symbolic strides are now managed by LAA
rather than passed by client a new bool parameter is used to enable
symbolic stride speculation.
The existing test Transforms/LoopVectorize/version-mem-access.ll checks
that stride speculation is performed for LV.
The previously added test Transforms/LoopLoadElim/symbolic-stride.ll
ensures that no speculation is performed for LLE.
The next patch will change the functionality and turn on symbolic stride
speculation in all of LAA's clients and remove the bool parameter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272970
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Thu, 16 Jun 2016 22:34:04 +0000 (22:34 +0000)]
[safestack] Sink unsafe address computation to each use.
This is a fix for PR27844.
When replacing uses of unsafe allocas, emit the new location
immediately after each use. Without this, the pointer stays live from
the function entry to the last use, while it's usually cheaper to
recalculate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272969
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Thu, 16 Jun 2016 22:34:00 +0000 (22:34 +0000)]
[safestack] Fixup llvm.dbg.value when rewriting unsafe allocas.
When moving unsafe allocas to the unsafe stack, dbg.declare intrinsics are
updated to refer to the new location.
This change does the same to dbg.value intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272968
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian McCarthy [Thu, 16 Jun 2016 22:07:55 +0000 (22:07 +0000)]
Properly handle short file names on the command line in Windows
Some build systems use the short (8.3) file names on Windows, especially if the path has spaces in it. The shortening made it impossible for clang to distinguish between clang.exe, clang++.exe, and clang-cl.exe. So this expands short names in the first argument and does wildcard expansion for the rest.
Differential Revision: http://reviews.llvm.org/D21420
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272967
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Thu, 16 Jun 2016 21:55:10 +0000 (21:55 +0000)]
[LV] Make getSymbolicStrides return a pointer rather than a reference. NFC
Turns out SymbolicStrides is actually used in canVectorizeWithIfConvert
before it gets set up in canVectorizeMemory.
This works fine as long as SymbolicStrides resides in LV since we just
have an empty map. Based on this the conclusion is made that there are
no symbolic strides which is conservatively correct.
However once SymbolicStrides becomes part of LAI, LAI is nullptr at this
point so we need to differentiate the uninitialized state by returning a
nullptr for SymbolicStrides.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272966
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Thu, 16 Jun 2016 21:45:13 +0000 (21:45 +0000)]
Fix BitVector move ctor/assignment.
Current implementation leaves the object in an invalid state.
This reverts commit
bf0c389ac683cd6c0e5959b16537e59e5f4589e3.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272965
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 16 Jun 2016 21:43:12 +0000 (21:43 +0000)]
TTI: Add hook for memory width to vectorize
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272964
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Thu, 16 Jun 2016 21:32:16 +0000 (21:32 +0000)]
[CodeView] Implement support for enums
MSVC handles enums differently from structs and classes: a forward
declaration is not emitted unconditionally. MSVC does not emit an S_UDT
record for the enum.
Differential Revision: http://reviews.llvm.org/D21442
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272960
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 16 Jun 2016 21:21:49 +0000 (21:21 +0000)]
AArch64: Fix range loop contradicting comment above it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272959
91177308-0d34-0410-b5e6-
96231b3b80d8
Changpeng Fang [Thu, 16 Jun 2016 21:20:47 +0000 (21:20 +0000)]
AMDGPU/SI: Propagate the Kill flag in storeRegToStackSlot and eliminateFrameIndex
Reviewers: arsenm, tstellarAMD
Differential Revision: http://reviews.llvm.org/21438
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272958
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Thu, 16 Jun 2016 21:19:23 +0000 (21:19 +0000)]
Revert "Refactor and cleanup Assembly Parsing / Lexing"
Reverting for unexpected crashes on various platforms.
This reverts commit r272953.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272957
91177308-0d34-0410-b5e6-
96231b3b80d8