OSDN Git Service
David Majnemer [Tue, 9 Aug 2016 18:34:19 +0000 (18:34 +0000)]
[vim] Update the llvm.vim syntax file
We never updated this file to contain the WinEH instructions.
Also, add the dereferenceable attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278146
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 9 Aug 2016 17:55:12 +0000 (17:55 +0000)]
[X86] Don't model UD2/UD2B as a terminator
A UD2 might make its way into the program via a call to @llvm.trap.
Obviously, calls are not terminators. However, we modeled the X86
instruction, UD2, as a terminator. Later on, this confuses the epilogue
insertion machinery which results in the epilogue getting inserted
before the UD2. For some platforms, like x64, the result is a
violation of the ABI.
Instead, model UD2/UD2B as a side effecting instruction which may
observe memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278144
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 9 Aug 2016 17:39:11 +0000 (17:39 +0000)]
[DAGCombiner] Better support for shifting large value type by constants
As detailed on D22726, much of the shift combining code assume constant values will fit into a uint64_t value and calls ConstantSDNode::getZExtValue where it probably shouldn't (leading to asserts). Using APInt directly avoids this problem but we encounter other assertions if we attempt to compare/operate on 2 APInt of different bitwidths.
This patch adds a helper function to ensure that 2 APInt values are zero extended as required so that they can be safely used together. I've only added an initial example use for this to the '(SHIFT (SHIFT x, c1), c2) --> (SHIFT x, (ADD c1, c2))' combines. Further cases can easily be added as required.
Differential Revision: https://reviews.llvm.org/D23007
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278141
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Tue, 9 Aug 2016 17:18:05 +0000 (17:18 +0000)]
[AliasAnalysis] Treat invariant.start as read-memory
Summary:
We teach alias analysis that invariant.start is readonly.
This helps with GVN and memcopy optimizations that currently treat.
invariant.start as a clobber.
We need to treat this as readonly, so that DSE does not incorrectly
remove stores prior to the invariant.start
Reviewers: sanjoy, reames, majnemer, dberlin
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23214
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278138
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 17:03:51 +0000 (17:03 +0000)]
auto-generate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278137
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 17:02:17 +0000 (17:02 +0000)]
auto-generate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278136
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 16:59:54 +0000 (16:59 +0000)]
auto-generate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278135
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 9 Aug 2016 16:46:02 +0000 (16:46 +0000)]
test-release.sh: Drop autoconf support
The autoconf build was deleted some time ago.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278133
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 16:39:05 +0000 (16:39 +0000)]
add tests for missing vector icmp folds
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278132
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 16:19:57 +0000 (16:19 +0000)]
update to use FileCheck and auto-generate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278131
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 16:17:46 +0000 (16:17 +0000)]
regenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278130
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 16:05:57 +0000 (16:05 +0000)]
add tests for missing vector icmp folds
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278129
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Tue, 9 Aug 2016 15:35:28 +0000 (15:35 +0000)]
[Profile] turn off verbose warnings by default
no prof data for func warning is turned off by default
due to its high verbosity and minimal usefulness.
Differential Revision: http://reviews.llvm.org/D23295
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278127
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Tue, 9 Aug 2016 14:50:08 +0000 (14:50 +0000)]
[LVI] Make LVI smarter about comparisons with non-constants
Make LVI smarter about comparisons with a non-constant. For example, a s< b constraints a to be in [INT_MIN, INT_MAX) range. This is a part of https://llvm.org/bugs/show_bug.cgi?id=28620 fix.
Reviewed By: sanjoy
Differential Revision: https://reviews.llvm.org/D23205
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278122
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 9 Aug 2016 12:56:15 +0000 (12:56 +0000)]
[X86][XOP] Add support for combining target shuffles to VPERMIL2PD/VPERMIL2PS
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278120
91177308-0d34-0410-b5e6-
96231b3b80d8
Kuba Brecka [Tue, 9 Aug 2016 12:12:15 +0000 (12:12 +0000)]
Add `#ifdef __cplusplus` around `extern "C"` in Compiler.h. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278119
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Tue, 9 Aug 2016 11:54:14 +0000 (11:54 +0000)]
AVX-512: A new test for FMA intrinsic
A new test that explores sub-optimal sequence of FMA intrinsic and FNEG operation.
An upcoming patch will fix it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278117
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 9 Aug 2016 10:56:29 +0000 (10:56 +0000)]
[X86][XOP] Add support for combining target shuffles to VPPERM
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278114
91177308-0d34-0410-b5e6-
96231b3b80d8
Dean Michael Berris [Tue, 9 Aug 2016 10:42:11 +0000 (10:42 +0000)]
[XRay] Test for xray_instr_map in object file. (NFC)
This makes a trivial change in the emission of the per-function XRay
tables, and makes sure that the xray_instr_map section does show up in
the object file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278113
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Tue, 9 Aug 2016 10:00:22 +0000 (10:00 +0000)]
Revert 278107 which causes buildbot failures and in addition has wrong commit message
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278109
91177308-0d34-0410-b5e6-
96231b3b80d8
Vassil Vassilev [Tue, 9 Aug 2016 09:46:11 +0000 (09:46 +0000)]
[modules]Add missing include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278108
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Tue, 9 Aug 2016 09:41:34 +0000 (09:41 +0000)]
Teach CorrelatedValuePropagation to mark adds as no wrap
Use LVI to prove that adds do not wrap. The change is motivated by https://llvm.org/bugs/show_bug.cgi?id=28620 bug and it's the first step to fix that problem.
Reviewed By: sanjoy
Differential Revision: http://reviews.llvm.org/D23059
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278107
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 9 Aug 2016 09:32:34 +0000 (09:32 +0000)]
[X86][SSE] Fix memory folding of (v)roundsd / (v)roundss
We only had partial memory folding support for the intrinsic definitions, and (as noted on PR27481) was causing FR32/FR64/VR128 mismatch errors with the machine verifier.
This patch adds missing memory folding support for both intrinsics and the ffloor/fnearbyint/fceil/frint/ftrunc patterns and in doing so fixes the failing machine verifier stack folding tests from PR27481.
Differential Revision: https://reviews.llvm.org/D23276
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278106
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Tue, 9 Aug 2016 09:14:29 +0000 (09:14 +0000)]
[LVI] NFC. Fix a typo Bofore -> Before
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278105
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 9 Aug 2016 05:26:09 +0000 (05:26 +0000)]
[X86] Reduce duplicated code in the execution domain lookup functions by passing tables as an argument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278098
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 9 Aug 2016 05:26:07 +0000 (05:26 +0000)]
[AVX-512] Add support for execution domain switching masked logical ops between floating point and integer domain.
This switches PS<->D and PD<->Q.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278097
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 9 Aug 2016 03:06:33 +0000 (03:06 +0000)]
[X86] Remove the Fv packed logical operation alias instructions. Replace them with patterns to the regular instructions.
This enables execution domain fixing which is why the tests changed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278090
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 9 Aug 2016 03:06:28 +0000 (03:06 +0000)]
[X86] Cleanup patterns for AVX/SSE for PS operations. Always try to look for bitcasts from floating point types. If only AVX1 is supported we also need to handle integer types with floating point ops without looking for bitcasts.
Previously SSE1 had a pattern that looked for integer types without bitcasts, but the type wasn't legal with only SSE1 and SSE2 add an identical pattern for the integer instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278089
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 9 Aug 2016 03:06:26 +0000 (03:06 +0000)]
[X86] Remove unnecessary bitcast from the front of AVX1Only 256-bit logical operation patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278088
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Tue, 9 Aug 2016 01:47:26 +0000 (01:47 +0000)]
X86InstrInfo: Update liveness in classifyLea()
We need to update liveness information when we create COPYs in
classifyLea().
This fixes http://llvm.org/28301
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278086
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Tue, 9 Aug 2016 00:29:55 +0000 (00:29 +0000)]
[WebAssembly] Fix bugs in WebAssemblyLowerEmscriptenExceptions pass
* Delete extra '_' prefixes from JS library function names. fixImports()
function in JS glue code deals with this for wasm.
* Change command-line option names in order to be consistent with
asm.js.
* Add missing lowering code for llvm.eh.typeid.for intrinsics
* Delete commas in mangled function names
* Fix a function argument attributes bug. Because we add the pointer to
the original callee as the first argument of invoke wrapper, all
argument attribute indices have to be incremented by one.
Patch by Heejin Ahn
Differential Revision: https://reviews.llvm.org/D23258
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278081
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Tue, 9 Aug 2016 00:28:56 +0000 (00:28 +0000)]
Consistently use CGSCCAnalysisManager
Besides a general consistently benefit, the extra layer of indirection
allows the mechanical part of https://reviews.llvm.org/D23256 that
requires touching every transformation and analysis to be factored out
cleanly.
Thanks to David for the suggestion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278080
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Tue, 9 Aug 2016 00:28:52 +0000 (00:28 +0000)]
Consistently use LoopAnalysisManager
One exception here is LoopInfo which must forward-declare it (because
the typedef is in LoopPassManager.h which depends on LoopInfo).
Also, some includes for LoopPassManager.h were needed since that file
provides the typedef.
Besides a general consistently benefit, the extra layer of indirection
allows the mechanical part of https://reviews.llvm.org/D23256 that
requires touching every transformation and analysis to be factored out
cleanly.
Thanks to David for the suggestion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278079
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Tue, 9 Aug 2016 00:28:38 +0000 (00:28 +0000)]
Consistently use ModuleAnalysisManager
Besides a general consistently benefit, the extra layer of indirection
allows the mechanical part of https://reviews.llvm.org/D23256 that
requires touching every transformation and analysis to be factored out
cleanly.
Thanks to David for the suggestion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278078
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Tue, 9 Aug 2016 00:28:15 +0000 (00:28 +0000)]
Consistently use FunctionAnalysisManager
Besides a general consistently benefit, the extra layer of indirection
allows the mechanical part of https://reviews.llvm.org/D23256 that
requires touching every transformation and analysis to be factored out
cleanly.
Thanks to David for the suggestion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278077
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Tue, 9 Aug 2016 00:25:12 +0000 (00:25 +0000)]
CodeView: extract the OMF Directory Header
The DebugDirectory contains a pointer to the CodeView info structure which is a
derivative of the OMF debug directory. The structure has evolved a bit over
time, and PDB 2.0 used a slightly different definition from PDB 7.0. Both of
these are specific to CodeView and not COFF. Reflect this by moving the
structure definitions into the DebugInfo/CodeView headers. Define a generic
DebugInfo union type that can be used to pass around a reference to the
DebugInfo irrespective of the versioning. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278075
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 00:01:11 +0000 (00:01 +0000)]
[x86] split combineVSelectWithAllOnesOrZeros into a helper function; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278074
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Mon, 8 Aug 2016 23:56:01 +0000 (23:56 +0000)]
[WebAssembly] Fix CFI index to account for padding nullptr function
The WebAssembly linker now creates a dummy function at index 0 to
prevent miscomparisons with the NULL pointer, see
https://github.com/WebAssembly/binaryen/pull/658. Thanks to pcc for
pointing out this problem!
Patch by Dominic Chen
Differential Revision: https://reviews.llvm.org/D23137
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278073
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Mon, 8 Aug 2016 23:07:03 +0000 (23:07 +0000)]
Revert "Do not ignore SizeOfOptionalHeader in COFF header even if PE header is not present."
This reverts commit r278066 to unbreak buildbots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278070
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 8 Aug 2016 22:57:30 +0000 (22:57 +0000)]
Revert r278065 while I investigate some build-bot breakage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278069
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Mon, 8 Aug 2016 22:54:22 +0000 (22:54 +0000)]
Do not ignore SizeOfOptionalHeader in COFF header even if PE header is not present.
Attribute SizeOfOptionalHeader is ignored if no PE header is present
in the file. This attribute should be ignored according to standard,
however there are uses of this field even though it should not be used.
This change does not conform to PE/COFF standard, but there are several
COFF files without PE header, where you had to add up SizeOfOptionalHeader
in order to get proper section headers. Other tools and their own parsers
do take this into account.
Patch by Marek Milkovič!
https://reviews.llvm.org/D22750
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278066
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 8 Aug 2016 22:53:37 +0000 (22:53 +0000)]
[RuntimeDyld][Orc][MCJIT] Add partial weak-symbol support to RuntimeDyld.
This patch causes RuntimeDyld to check for existing definitions when it
encounters weak symbols. If a definition already exists then the new weak
definition is discarded. All symbol lookups within a "logical dylib" should now
agree on the address of any given weak symbol. This allows the JIT to better
match the behavior of the static linker for C++ code.
This support is only partial, as it does not allow strong definitions that
occur after the first weak definition (in JIT symbol lookup order) to override
the previous weak definitions. Support for this will be added in a future
patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278065
91177308-0d34-0410-b5e6-
96231b3b80d8
Charles Davis [Mon, 8 Aug 2016 21:20:15 +0000 (21:20 +0000)]
Revert "[X86] Support the "ms-hotpatch" attribute."
This reverts commit r278048. Something changed between the last time I
built this--it takes awhile on my ridiculously slow and ancient
computer--and now that broke this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278053
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Mon, 8 Aug 2016 21:02:11 +0000 (21:02 +0000)]
InstCombine: Remove a redundant #ifdef NDEBUG. NFC
The DEBUG() macro already does this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278049
91177308-0d34-0410-b5e6-
96231b3b80d8
Charles Davis [Mon, 8 Aug 2016 21:01:39 +0000 (21:01 +0000)]
[X86] Support the "ms-hotpatch" attribute.
Summary:
Based on two patches by Michael Mueller.
This is a target attribute that causes a function marked with it to be
emitted as "hotpatchable". This particular mechanism was originally
devised by Microsoft for patching their binaries (which they are
constantly updating to stay ahead of crackers, script kiddies, and other
ne'er-do-wells on the Internet), but is now commonly abused by Windows
programs to hook API functions.
This mechanism is target-specific. For x86, a two-byte no-op instruction
is emitted at the function's entry point; the entry point must be
immediately preceded by 64 (32-bit) or 128 (64-bit) bytes of padding.
This padding is where the patch code is written. The two byte no-op is
then overwritten with a short jump into this code. The no-op is usually
a `movl %edi, %edi` instruction; this is used as a magic value
indicating that this is a hotpatchable function.
Reviewers: majnemer, sanjoy, rnk
Subscribers: dberris, llvm-commits
Differential Revision: https://reviews.llvm.org/D19908
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278048
91177308-0d34-0410-b5e6-
96231b3b80d8
Geoff Berry [Mon, 8 Aug 2016 19:33:27 +0000 (19:33 +0000)]
[MemorySSA] Fix windows build breakage caused by r278028 (take 2)
r278028: [MemorySSA] Ensure address stability of MemorySSA object.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278041
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 8 Aug 2016 19:24:25 +0000 (19:24 +0000)]
[Hexagon] Add pattern for 64-bit mulhs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278040
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Mon, 8 Aug 2016 19:02:15 +0000 (19:02 +0000)]
[LoopUnroll] Simplify loops created by unrolling.
Summary:
Currently loop-unrolling doesn't preserve loop-simplified form. This patch
fixes it by resimplifying affected loops.
Reviewers: chandlerc, sanjoy, hfinkel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23148
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278038
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Mon, 8 Aug 2016 18:51:05 +0000 (18:51 +0000)]
RefreshCallGraph does not modify the SCC, adding "const" to make it clear (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278037
91177308-0d34-0410-b5e6-
96231b3b80d8
Geoff Berry [Mon, 8 Aug 2016 18:27:22 +0000 (18:27 +0000)]
[MemorySSA] Fix windows build breakage caused by r278028
r278028: [MemorySSA] Ensure address stability of MemorySSA object.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278035
91177308-0d34-0410-b5e6-
96231b3b80d8
Elliot Colp [Mon, 8 Aug 2016 18:11:13 +0000 (18:11 +0000)]
Re-add SystemZ SNaN test
The floating-point bug affecting ninja-x64-msvc-RA-centos6 is fixed (r277813) so this test should
now pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278034
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 8 Aug 2016 18:09:56 +0000 (18:09 +0000)]
[BuildingAJIT] Fix a couple of typos in the Chapter 3 draft.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278033
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Mon, 8 Aug 2016 18:01:04 +0000 (18:01 +0000)]
[X86] Improve code size on X86 segment moves
Moves of a value to a segment register from a 16-bit register is
equivalent to one from it's corresponding 32-bit register. Match gas's
behavior and rewrite instructions to the shorter of equivalent forms.
Reviewers: rnk, ab
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23166
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278031
91177308-0d34-0410-b5e6-
96231b3b80d8
Geoff Berry [Mon, 8 Aug 2016 17:52:01 +0000 (17:52 +0000)]
[MemorySSA] Ensure address stability of MemorySSA object.
Summary:
Ensure that the MemorySSA object never changes address when using the
new pass manager since the walkers contained by MemorySSA cache pointers
to it at construction time. This is achieved by wrapping the
MemorySSAAnalysis result in a unique_ptr. Also add some asserts that
check for this bug.
Reviewers: george.burgess.iv, dberlin
Subscribers: mcrosier, hfinkel, chandlerc, silvas, llvm-commits
Differential Revision: https://reviews.llvm.org/D23171
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278028
91177308-0d34-0410-b5e6-
96231b3b80d8
Oliver Stannard [Mon, 8 Aug 2016 15:28:31 +0000 (15:28 +0000)]
[ARM] Add support for embedded position-independent code
This patch adds support for some new relocation models to the ARM
backend:
* Read-only position independence (ROPI): Code and read-only data is accessed
PC-relative. The offsets between all code and RO data sections are known at
static link time. This does not affect read-write data.
* Read-write position independence (RWPI): Read-write data is accessed relative
to the static base register (r9). The offsets between all writeable data
sections are known at static link time. This does not affect read-only data.
These two modes are independent (they specify how different objects
should be addressed), so they can be used individually or together. They
are otherwise the same as the "static" relocation model, and are not
compatible with SysV-style PIC using a global offset table.
These modes are normally used by bare-metal systems or systems with
small real-time operating systems. They are designed to avoid the need
for a dynamic linker, the only initialisation required is setting r9 to
an appropriate value for RWPI code.
I have only added support to SelectionDAG, not FastISel, because
FastISel is currently disabled for bare-metal targets where these modes
would be used.
Differential Revision: https://reviews.llvm.org/D23195
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278015
91177308-0d34-0410-b5e6-
96231b3b80d8
Zhan Jun Liau [Mon, 8 Aug 2016 15:13:08 +0000 (15:13 +0000)]
[SystemZ] Add support for the .insn directive
Summary:
Add support for the .insn directive.
.insn is an s390 specific directive that allows encoding of an instruction
instead of using a mnemonic. The motivating case is some code in node.js that
requires support for the .insn directive.
Reviewers: koriakin, uweigand
Subscribers: koriakin, llvm-commits
Differential Revision: https://reviews.llvm.org/D21809
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278012
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Mon, 8 Aug 2016 14:51:53 +0000 (14:51 +0000)]
Revert r2277979.
For some reason, MSVC2013's cl.exe crashes with
fatal error C1001: An internal error has occurred in the compiler
with this when compiling e.g. LoopDistribute.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278011
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Mon, 8 Aug 2016 14:46:15 +0000 (14:46 +0000)]
GVN-hoist: enable by default
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278010
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Mon, 8 Aug 2016 14:33:11 +0000 (14:33 +0000)]
[LVI] NFC. On the fast dest path use inverse predicate instead of inverse range result
Gathering constantins from a condition on the false path ask makeAllowedICmpRegion about inverse predicate instead of inversing the resulting range.
This change was separated from the review "[LVI] Make LVI smarter about comparisons with non-constants" (https://reviews.llvm.org/D23205#inline-198361)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278009
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Mon, 8 Aug 2016 14:13:56 +0000 (14:13 +0000)]
[LVI] NFC. Rename confusing local NegOffset to Offset
NegOffset is not necessarily negative
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278008
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Mon, 8 Aug 2016 14:08:37 +0000 (14:08 +0000)]
[LVI] NFC. Extract LHS, RHS, Predicate locals in getValueFromCondition
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278007
91177308-0d34-0410-b5e6-
96231b3b80d8
Silviu Baranga [Mon, 8 Aug 2016 13:13:57 +0000 (13:13 +0000)]
[AArch64] PR28877: Don't assume we're running after legalization when creating vcvtfp2fxs
Summary:
The DAG combine transformation that was generating the
aarch64_neon_vcvtfp2fxs node was assuming that all
inputs where legal and wasn't accounting that the input
could be a v4f64 if we're trying to do the transformation
before legalization. We now bail out in this case.
All illegal types besides v4f64 were already rejected.
Fixes https://llvm.org/bugs/show_bug.cgi?id=28877.
Reviewers: jmolloy
Subscribers: aemerson, rengolin, llvm-commits
Differential Revision: https://reviews.llvm.org/D23261
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278002
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Mon, 8 Aug 2016 11:50:25 +0000 (11:50 +0000)]
Re-commit r277988: [mips][ias] Fix all the hacks related to MIPS-specific unary operators (%hi/%lo/%gp_rel/etc.).
Hopefully with the MSVC builds fixed. I've added a missing '#include <tuple>'
that gcc and clang don't seem to need.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277995
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 8 Aug 2016 11:49:24 +0000 (11:49 +0000)]
Fix Wdocumentation unknown parameter warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277994
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 8 Aug 2016 11:07:34 +0000 (11:07 +0000)]
[X86][SSE] Assert if the shuffle mask indices are not -1 or within a valid input range
As discussed in post-review rL277959
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277993
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Mon, 8 Aug 2016 09:33:14 +0000 (09:33 +0000)]
Revert r277988: [mips][ias] Fix all the hacks related to MIPS-specific unary operators (%hi/%lo/%gp_rel/etc.).
It seems that MSVC doesn't like std::tie().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277990
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Mon, 8 Aug 2016 09:20:52 +0000 (09:20 +0000)]
[mips][ias] Fix all the hacks related to MIPS-specific unary operators (%hi/%lo/%gp_rel/etc.).
Summary:
They are now lexed as a single token on targets where
MCAsmInfo::HasMipsExpressions is true and then parsed in a similar way to
the '~' operator as part of MCExpr::parseExpression.
As a result:
* expressions and immediates no longer have different parsing rules. The
difference is now solely down to whether evaluateAsAbsolute() succeeds.
* %hi(%neg(%gp_rel(x))) are no longer parsed as a single operator and
decomposed into the three MipsMCExpr nodes. They are parsed directly as
three MipsMCExpr nodes.
* parseMemOperand no longer needs to eat all the surrounding parenthesis
to get at the outermost operator to make this work
* %hi(%neg(%gp_rel(x))) and %lo(%neg(%gp_rel(x))) are no longer the only
3-in-1 relocs that parse for N64. They're still the only combinations that
are permitted in relocatable expressions though. Fixing that should be a
later patch.
* We no longer need to list all the tokens that can occur as the first token of
an expression or immediate.
test/MC/Mips/expr1.s:
This change also prevents the incorrect lowering of %lo(2*4)+foo to
%lo(8+foo) which is not an equivalent expression (the difference is
whether foo is truncated to 16-bit or not) and the test has been
updated to account for the macro expansion the correct expression requires.
Reviewers: sdardis
Subscribers: dsanders, sdardis, llvm-commits
Differential Revision: https://reviews.llvm.org/D23110
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277988
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Mon, 8 Aug 2016 08:54:39 +0000 (08:54 +0000)]
[SelectionDAG] Refactor visitInlineAsm a bit. NFCI.
This shaves off ~100 lines from visitInlineAsm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277987
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Mon, 8 Aug 2016 07:03:49 +0000 (07:03 +0000)]
Add some comments linking back to PR28400.
Thanks to Mehdi for the suggestion!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277984
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Mon, 8 Aug 2016 05:38:06 +0000 (05:38 +0000)]
[PM] More workaround for PR28400
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277982
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Mon, 8 Aug 2016 05:38:03 +0000 (05:38 +0000)]
[PM] BasicAA needs to be invalidated since it holds pointers to other stuff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277981
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Mon, 8 Aug 2016 05:38:01 +0000 (05:38 +0000)]
[PM] Invalidate CallGraphAnalysis because it holds AssertingVH
This is essentially PR28400. The fix here is similar to that implemented
in r274656.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277980
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Mon, 8 Aug 2016 05:37:58 +0000 (05:37 +0000)]
[PM] Function-level TLI is also immutable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277979
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Mon, 8 Aug 2016 04:44:53 +0000 (04:44 +0000)]
[MSSA] Fix PR28880 by fixing use optimizer's lower bound tracking behavior.
Summary:
In the use optimizer, we need to keep of whether the lower bound still
dominates us or else we may decide a lower bound is still valid when it
is not due to intervening pushes/pops. Fixes PR28880 (and probably a
bunch of other things).
Reviewers: george.burgess.iv
Subscribers: MatzeB, llvm-commits, sebpop
Differential Revision: https://reviews.llvm.org/D23237
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277978
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Mon, 8 Aug 2016 04:10:22 +0000 (04:10 +0000)]
[JumpThreading] Fix handling of aliasing metadata.
Summary:
The correctness fix here is that when we CSE a load with another load,
we need to combine the metadata on the two loads. This matches the
behavior of other passes, like instcombine and GVN.
There's also a minor optimization improvement here: for load PRE, the
aliasing metadata on the inserted load should be the same as the
metadata on the original load. Not sure why the old code was throwing
it away.
Issue found by inspection.
Differential Revision: http://reviews.llvm.org/D21460
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277977
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 8 Aug 2016 03:30:01 +0000 (03:30 +0000)]
[MC] Delete use of *structors_used.
Jim Grosbach and Kevin Enderby think those are not used anymore.
Originally submitted by: Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277973
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 8 Aug 2016 03:23:01 +0000 (03:23 +0000)]
[SimplifyLibCalls] Emit sqrt intrinsic instead of a libcall.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277972
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Mon, 8 Aug 2016 01:30:53 +0000 (01:30 +0000)]
[SROA] Fix crash with lifetime intrinsic partially covering alloca.
Summary:
PromoteMemToReg looks specifically for the pattern
bitcast+lifetime.start (or a bitcast-equivalent GEP); any offset
will lead to an assertion failure.
Fixes https://llvm.org/bugs/show_bug.cgi?id=27999 .
Differential Revision: https://reviews.llvm.org/D22737
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277969
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Aug 2016 21:52:59 +0000 (21:52 +0000)]
[AVX-512] Improve lowering of inserting a single element into lowest element of a 512-bit vector of zeroes by using vmovq/vmovd/vmovss/vmovsd.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277965
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sun, 7 Aug 2016 20:27:03 +0000 (20:27 +0000)]
[SLC] Emit an intrinsic instead of a libcall for pow.
Differential Revision: https://reviews.llvm.org/D22104
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277963
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Sun, 7 Aug 2016 20:18:04 +0000 (20:18 +0000)]
Revert r277905, it caused PR28894
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277962
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Aug 2016 17:14:09 +0000 (17:14 +0000)]
[AVX-512] Add 512-bit logical operations to load folding tables. Add avx512f stack folding test and move some tests from the avx512vl test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277961
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Aug 2016 17:14:05 +0000 (17:14 +0000)]
[AVX-512] Add EVEX encoded floating point MAX/MIN instructions to the load folding tables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277960
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 7 Aug 2016 15:29:12 +0000 (15:29 +0000)]
[X86] lowerVectorShuffle - ensure that undefined mask elements only use SM_SentinelUndef
Help lowering and combining (which can specify SM_SentinelZero mask elements) share more shuffle matching code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277959
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Sun, 7 Aug 2016 13:05:58 +0000 (13:05 +0000)]
AVX-512: Changed lowering of BITCAST between i1 vectors and i8/i16/i32 integer values
Optimized lowering of BITCAST node. The BITCAST node can be replaced with COPY_TO_REG instead of KMOV.
It allows to suppress two opposite BITCAST operations and avoid redundant "movs".
Differential Revision: https://reviews.llvm.org/D23247
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277958
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 7 Aug 2016 12:41:36 +0000 (12:41 +0000)]
[X86][AVX512BW] Add sext/zext AVX512BW 512-bit vector tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277957
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 7 Aug 2016 12:10:46 +0000 (12:10 +0000)]
[X86][AVX512] Add sext/zext to 512-bit vector tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277956
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Sun, 7 Aug 2016 09:29:34 +0000 (09:29 +0000)]
AVX-512: Added a test for cmp intrinsics
This is a new test that should explore a current suboptimal sequence in passing values between cmp and kor intrinsics.
The code will be optimized in an upcoming patch.
Submitted bug here:
https://llvm.org/bugs/show_bug.cgi?id=28839
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277954
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sun, 7 Aug 2016 07:58:12 +0000 (07:58 +0000)]
[InstSimplify] Fold gep (gep V, C), (sub 0, V) to C
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277952
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sun, 7 Aug 2016 07:58:10 +0000 (07:58 +0000)]
[InstSimplify] Try hard to simplify pointer comparisons
Simplify ptrtoint comparisons involving operands with different source
types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277951
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sun, 7 Aug 2016 07:58:00 +0000 (07:58 +0000)]
[InstCombine] Infer inbounds on geps of allocas
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277950
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Aug 2016 05:39:51 +0000 (05:39 +0000)]
[X86] Add commutable floating point max/min instructions to the load folding tables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277949
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Aug 2016 05:39:48 +0000 (05:39 +0000)]
[AVX-512] Add andnps/andnpd to the avx512vl stack folding test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277948
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Aug 2016 05:39:46 +0000 (05:39 +0000)]
[X86] Simplify a shuffle mask copy. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277947
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Sun, 7 Aug 2016 01:56:54 +0000 (01:56 +0000)]
Revert "Revert "[LoopSimplify] Fix updating LCSSA after separating nested loops.""
This reverts commit r277901. Reaaply the commit as it looks like it has
nothing to do with the bots failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277946
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sun, 7 Aug 2016 01:19:37 +0000 (01:19 +0000)]
[ExecutionEngine][RuntimeDyld] Move JITSymbol from ExecutionEngine to RuntimeDyld.
JITSymbol really belongs in RuntimeDyld. This should fix the llvm-rtdyld link
failures caused by r277943.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277945
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sun, 7 Aug 2016 01:12:44 +0000 (01:12 +0000)]
[RuntimeDyld] Remove symbol that is unused as of r277943.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277944
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sun, 7 Aug 2016 00:18:14 +0000 (00:18 +0000)]
[RuntimeDyld] Replace manual flag checks with JITSymbolFlags::fromObjectSymbol.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277943
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sat, 6 Aug 2016 22:36:26 +0000 (22:36 +0000)]
[ORC] Re-apply r277896, removing bogus triples and datalayouts that broke tests
on linux last time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277942
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Sat, 6 Aug 2016 21:28:56 +0000 (21:28 +0000)]
[libFuzzer] make libFuzzer work with a bit older clang versions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277941
91177308-0d34-0410-b5e6-
96231b3b80d8