OSDN Git Service
Tim Northover [Thu, 4 Aug 2016 19:32:28 +0000 (19:32 +0000)]
AArch64: don't assume all i128s are BUILD_PAIRs
It leads to a crash when they're not. I'm *sure* I've made this mistake before,
at least once.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277755
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Thu, 4 Aug 2016 19:19:25 +0000 (19:19 +0000)]
[macho2yaml] String table can contain null strings
Since the string table being read from the MachO is a properly bounded StringRef including null strings is safe and reasonable.
This occurs frequently with stripped binaries where the string table has been modified.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277753
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 4 Aug 2016 19:12:12 +0000 (19:12 +0000)]
[InstCombine] use m_APInt to allow icmp eq (or X, C1), C2 folds for splat constant vectors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277752
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Thu, 4 Aug 2016 18:35:17 +0000 (18:35 +0000)]
GlobalISel: also add G_TRUNC to IRTranslator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277749
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Thu, 4 Aug 2016 18:35:11 +0000 (18:35 +0000)]
GlobalISel: add code to widen scalar G_ADD
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277747
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 4 Aug 2016 18:14:02 +0000 (18:14 +0000)]
remove FIXME comments (fixed with r277738)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277744
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Thu, 4 Aug 2016 18:01:52 +0000 (18:01 +0000)]
[WebAssembly] Check return value of getRegForValue in FastISel
Previously, FastISel for WebAssembly wasn't checking the return value of
`getRegForValue` in certain cases, which would generate instructions
referencing NoReg. This patch fixes this behavior.
Patch by Dominic Chen
Differential Revision: https://reviews.llvm.org/D23100
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277742
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Thu, 4 Aug 2016 18:00:42 +0000 (18:00 +0000)]
[llvm-cov] Add some documentation for the -tab-size option
Also, un-hide the cl::opt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277741
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Thu, 4 Aug 2016 17:56:19 +0000 (17:56 +0000)]
[Hexagon] Validate register class when doing bit simplification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277740
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 4 Aug 2016 17:48:04 +0000 (17:48 +0000)]
[InstCombine] use m_APInt to allow icmp eq (op X, Y), C folds for splat constant vectors
I'm removing a misplaced pair of more specific folds from InstCombine in this patch as well,
so we know where those folds are happening in InstSimplify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277738
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 4 Aug 2016 17:16:50 +0000 (17:16 +0000)]
[X86][SSE] Rename target shuffle unary permute matching function. NFCI.
In preparation for adding a binary permute matching function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277737
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 4 Aug 2016 16:48:30 +0000 (16:48 +0000)]
add tests for missing vector folds
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277736
91177308-0d34-0410-b5e6-
96231b3b80d8
Alina Sbirlea [Thu, 4 Aug 2016 16:38:44 +0000 (16:38 +0000)]
LoadStoreVectorizer: Remove TargetBaseAlign. Keep alignment for stack adjustments.
Summary:
TargetBaseAlign is no longer required since LSV checks if target allows misaligned accesses.
A constant defining a base alignment is still needed for stack accesses where alignment can be adjusted.
Previous patch (D22936) was reverted because tests were failing. This patch also fixes the cause of those failures:
- x86 failing tests either did not have the right target, or the right alignment.
- NVPTX failing tests did not have the right alignment.
- AMDGPU failing test (merge-stores) should allow vectorization with the given alignment but the target info
considers <3xi32> a non-standard type and gives up early. This patch removes the condition and only checks
for a maximum size allowed and relies on the next condition checking for %4 for correctness.
This should be revisited to include 3xi32 as a MVT type (on arsenm's non-immediate todo list).
Note that checking the sizeInBits for a MVT is undefined (leads to an assertion failure),
so we need to create an EVT, hence the interface change in allowsMisaligned to include the Context.
Reviewers: arsenm, jlebar, tstellarAMD
Subscribers: jholewinski, arsenm, mzolotukhin, llvm-commits
Differential Revision: https://reviews.llvm.org/D23068
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277735
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Thu, 4 Aug 2016 16:28:22 +0000 (16:28 +0000)]
Shamelessly add myself to CREDITS.TXT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277734
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Thu, 4 Aug 2016 15:36:03 +0000 (15:36 +0000)]
[mips] Set Personality and LSDA encoding for FreeBSD
Reviewers: seanbruno, sdardis
Subscribers: tberghammer, danalbert, srhines, dsanders, sdardis, llvm-commits, seanbruno
Differential Revision: https://reviews.llvm.org/D23113
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277732
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 4 Aug 2016 15:19:25 +0000 (15:19 +0000)]
[InstCombine] use m_APInt to allow icmp eq (sub C1, X), C2 folds for splat constant vectors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277731
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 4 Aug 2016 14:21:32 +0000 (14:21 +0000)]
[X86][SSE] Split off shuffle mask canonicalization from lowerVectorShuffle. NFCI.
The new function now returns true if the shuffle should be commuted.
This will allow target shuffle combines to share the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277728
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Thu, 4 Aug 2016 14:17:16 +0000 (14:17 +0000)]
[Hexagon] Clear kill flags from modified registers in peephole optimizer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277727
91177308-0d34-0410-b5e6-
96231b3b80d8
Nikolai Bozhenov [Thu, 4 Aug 2016 12:47:28 +0000 (12:47 +0000)]
[X86] Heuristic to selectively build Newton-Raphson SQRT estimation
On modern Intel processors hardware SQRT in many cases is faster than RSQRT
followed by Newton-Raphson refinement. The patch introduces a simple heuristic
to choose between hardware SQRT instruction and Newton-Raphson software
estimation.
The patch treats scalars and vectors differently. The heuristic is that for
scalars the compiler should optimize for latency while for vectors it should
optimize for throughput. It is based on the assumption that throughput bound
code is likely to be vectorized.
Basically, the patch disables scalar NR for big cores and disables NR completely
for Skylake. Firstly, scalar SQRT has shorter latency than NR code in big cores.
Secondly, vector SQRT has been greatly improved in Skylake and has better
throughput compared to NR.
Differential Revision: https://reviews.llvm.org/D21379
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277725
91177308-0d34-0410-b5e6-
96231b3b80d8
Hrvoje Varga [Thu, 4 Aug 2016 11:22:52 +0000 (11:22 +0000)]
[mips][microMIPS] Implement CFC1, CFC2, CTC1 and CTC2 instructions
Differential Revision: https://reviews.llvm.org/D22347
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277719
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 4 Aug 2016 11:04:13 +0000 (11:04 +0000)]
[X86] Dropped XOP ctbits checks - they match the AVX checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277718
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 4 Aug 2016 10:51:41 +0000 (10:51 +0000)]
[X86][SSE] Add initial costs for vector CTTZ/CTLZ
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277716
91177308-0d34-0410-b5e6-
96231b3b80d8
Ying Yi [Thu, 4 Aug 2016 10:39:43 +0000 (10:39 +0000)]
[LLVM-COV]Replace tabs to the space indentations in the HTML coverage report.
When using orbis-llvm-cov.exe to generate the HTML report, the HTML report
can look quite different to the source file if it includes tabs.The default
tab size is 2 spaces instead of 8 spaces. A command line switch is
be added to set the tab size.
Differential Revision: https://reviews.llvm.org/D23087
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277715
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Hahnfeld [Thu, 4 Aug 2016 10:24:48 +0000 (10:24 +0000)]
Remove LLVM_ENABLE_LIBCXXABI
libc++.so is now a linker script that includes -lc++abi if necessary.
Differential Revision: https://reviews.llvm.org/D22861
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277714
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 4 Aug 2016 10:14:39 +0000 (10:14 +0000)]
[X86][SSE] Don't decide when to scalarize CTTZ/CTLZ for performance at lowering - this is what cost models are for
Improved CTTZ/CTLZ costings will be added shortly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277713
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Thu, 4 Aug 2016 09:17:07 +0000 (09:17 +0000)]
[mips] Enable tail calls by default
Enable tail calls by default for (micro)MIPS(64).
microMIPS is slightly more tricky than doing it for MIPS(R6) or microMIPSR6.
microMIPS has two instruction encodings: 16bit and 32bit along with some
restrictions on the size of the instruction that can fill the delay slot.
For safe tail calls for microMIPS, the delay slot filler attempts to find
a correct size instruction for the delay slot of TAILCALL pseudos.
Reviewers: dsanders, vkalintris
Subscribers: jfb, dsanders, sdardis, llvm-commits
Differential Revision: https://reviews.llvm.org/D21138
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277708
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Thu, 4 Aug 2016 08:25:08 +0000 (08:25 +0000)]
Typo fix in comment. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277704
91177308-0d34-0410-b5e6-
96231b3b80d8
Dean Michael Berris [Thu, 4 Aug 2016 07:37:28 +0000 (07:37 +0000)]
[XRay] Align entry and return sleds to 2 byte boundaries
This should ensure that we can atomically write two bytes (on top of the
retq and the one past it) and have those two bytes not straddle cache
lines.
We also move the label past the alignment instruction so that we can refer
to the actual first instruction, as opposed to potential padding before the
aligned instruction.
Update the tests to allow us to reflect the new order of assembly.
Reviewers: rSerge, echristo, majnemer
Subscribers: llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D23101
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277701
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 4 Aug 2016 07:04:54 +0000 (07:04 +0000)]
AMDGPU: Fix a slow test by using basic regalloc
This just tests that the register limit isn't exceeded,
so the regisetr allocation doesn't need to be great.'
The critically slow part is all in greedy RA, so
switch to basic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277700
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury Sechet [Thu, 4 Aug 2016 05:35:25 +0000 (05:35 +0000)]
Fix intrinsics.ll test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277695
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury Sechet [Thu, 4 Aug 2016 05:27:20 +0000 (05:27 +0000)]
Add popcount(n) == bitsize(n) -> n == -1 transformation.
Summary: As per title.
Reviewers: majnemer, spatel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23139
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277694
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Thu, 4 Aug 2016 04:47:18 +0000 (04:47 +0000)]
Forgot the dyn_cast_or_null intended for r277691.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277693
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Thu, 4 Aug 2016 04:24:02 +0000 (04:24 +0000)]
Reinstate "[CloneFunction] Don't remove side effecting calls"
This reinstates r277611 + r277614 and reverts r277642. A cast_or_null
should have been a dyn_cast_or_null.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277691
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Thu, 4 Aug 2016 04:16:24 +0000 (04:16 +0000)]
Revert "GVN-hoist: enable by default" & "Make GVN Hoisting obey optnone/bisect."
This reverts commits r277685 & r277688. r277685 broke compiler-rt
compilation http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_build/23335
and r277685 is a followup from it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277690
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 4 Aug 2016 03:52:53 +0000 (03:52 +0000)]
[PM] Change the name of the repeating utility to something less
overloaded (and simpler).
Sean rightly pointed out in code review that we've started using
"wrapper pass" as a specific part of the old pass manager, and in fact
it is more applicable there. Here, we really have a pass *template* to
build a repeated pass, so call it that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277689
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Thu, 4 Aug 2016 02:05:08 +0000 (02:05 +0000)]
Make GVN Hoisting obey optnone/bisect.
Differential Revision: https://reviews.llvm.org/D23136
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277688
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Thu, 4 Aug 2016 01:59:42 +0000 (01:59 +0000)]
GVN-hoist: enable by default
As we addressed all compilation time problems with GVN-hoist
https://llvm.org/bugs/show_bug.cgi?id=28670
this patch turns GVN-hoist back by default.
Differential Revision: https://reviews.llvm.org/D23136
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277685
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Wed, 3 Aug 2016 23:54:39 +0000 (23:54 +0000)]
pdbdump: Add a test to verify the result of PDB -> YAML -> PDB conversions.
Currently not all information can be restored from YAML.
This test verifies only the PDB header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277682
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Wed, 3 Aug 2016 23:43:23 +0000 (23:43 +0000)]
pdbdump: Fix crash bug.
pdbdump calls DbiStreamBuilder::commit through PDBFileBuilder::commit
without calling DbiStreamBuilder::finalize. Because `finalize` initializes
`Header` member, `Header` remained nullptr which caused a crash bug.
Differential Revision: https://reviews.llvm.org/D23143
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277681
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Wed, 3 Aug 2016 23:10:51 +0000 (23:10 +0000)]
llvm-profdata: Clarify the top level help
It wasn't very obvious that you're supposed to call help on the
subcommands. This should help.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277678
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Wed, 3 Aug 2016 22:37:47 +0000 (22:37 +0000)]
RenameIndependentSubregs: Fix liveness query in rewriteOperands()
rewriteOperands() always performed liveness queries at the base index
rather than the RegSlot/Base as apropriate for the machine operand. This
could lead to illegal rewriting in some cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277661
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 3 Aug 2016 22:08:44 +0000 (22:08 +0000)]
[InstCombine] use m_APInt to allow icmp eq (add X, C1), C2 folds for splat constant vectors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277659
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Wed, 3 Aug 2016 21:57:47 +0000 (21:57 +0000)]
Clean up of libObject/Archive interfaces and change the last three uses of ErrorOr<>
changing them to Expected<> to allow them to pass through llvm Errors.
No functional change.
This commit by itself will break the next lld builds.  I’ll be committing the
matching change for lld immediately next.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277656
91177308-0d34-0410-b5e6-
96231b3b80d8
Guozhi Wei [Wed, 3 Aug 2016 21:43:51 +0000 (21:43 +0000)]
[PPC] Handling CallInst in PPCBoolRetToInt
This patch fixes pr25548.
Current implementation of PPCBoolRetToInt doesn't handle CallInst correctly, so it failed to do the intended optimization when there is a CallInst with parameters. This patch fixed that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277655
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Wed, 3 Aug 2016 21:26:21 +0000 (21:26 +0000)]
Revert "[ARM] Constant Materialize: imms with specific value can be encoded into mov.w"
This reverts commit r277610 /
d619aa8878c3dafcc0d29a46517f63ff3209fdd4.
This make subtarget-no-movt.ll fail in
http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_check/26892,
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277654
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Wed, 3 Aug 2016 21:07:52 +0000 (21:07 +0000)]
[MSSA] Fix a bug in MemorySSA's move ctor.
Not a correctness issue, but it would be nice if we didn't have to
recompute our block numbering (worst-case) every time we move MSSA.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277652
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Wed, 3 Aug 2016 20:54:38 +0000 (20:54 +0000)]
GVN-hoist: limit the length of dependent instructions
Limit the number of times the while(1) loop is executed. With this restriction
the number of hoisted instructions does not change in a significant way on the
test-suite.
Differential Revision: https://reviews.llvm.org/D23028
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277651
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Wed, 3 Aug 2016 20:54:36 +0000 (20:54 +0000)]
GVN-hoist: compute DFS numbers once
With this patch we compute the DFS numbers of instructions only once and update
them during the code generation when an instruction gets hoisted.
Differential Revision: https://reviews.llvm.org/D23021
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277650
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Wed, 3 Aug 2016 20:54:33 +0000 (20:54 +0000)]
GVN-hoist: compute MSSA once per function (PR28670)
With this patch we compute the MemorySSA once and update it in the code generator.
Differential Revision: https://reviews.llvm.org/D22966
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277649
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 3 Aug 2016 20:53:23 +0000 (20:53 +0000)]
[IndVars] Un-grepify test; NFC
Some of these tests need to be cleaned up further to make it obvious
what they're testing, but as a first step remove all instances of
"grep".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277648
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Wed, 3 Aug 2016 20:28:19 +0000 (20:28 +0000)]
opt-bisect-legacy-pass-manager.ll: Test only works with default triple configured
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277645
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 3 Aug 2016 20:01:01 +0000 (20:01 +0000)]
Revert "[CloneFunction] Don't remove side effecting calls"
This reverts commit r277611 and the followup r277614.
Bootstrap builds and chromium builds are crashing during inlining after
this change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277642
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Wed, 3 Aug 2016 19:59:11 +0000 (19:59 +0000)]
[MSSA] clang-format. NFC.
Didn't want to fold this in with r277640, since it touches bits that
aren't entirely related to r277640.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277641
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Wed, 3 Aug 2016 19:57:02 +0000 (19:57 +0000)]
[MSSA] Add special handling for invariant/constant loads.
This is a follow-up to r277637. It teaches MemorySSA that invariant
loads (and loads of provably constant memory) are always liveOnEntry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277640
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 3 Aug 2016 19:48:40 +0000 (19:48 +0000)]
[InstCombine] use m_APInt to allow icmp eq (srem X, C1), C2 folds for splat constant vectors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277638
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Wed, 3 Aug 2016 19:39:54 +0000 (19:39 +0000)]
[MSSA] Add logic for special handling of atomics/volatiles.
This patch makes MemorySSA recognize atomic/volatile loads, and makes
MSSA treat said loads specially. This allows us to be a bit more
aggressive in some cases.
Administrative note: Revision was LGTM'ed by reames in person.
Additionally, this doesn't include the `invariant.load` recognition in
the differential revision, because I feel it's better to commit that
separately. Will commit soon.
Differential Revision: https://reviews.llvm.org/D16875
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277637
91177308-0d34-0410-b5e6-
96231b3b80d8
Elliot Colp [Wed, 3 Aug 2016 19:39:20 +0000 (19:39 +0000)]
I can't reproduce this buildbot failure locally, so temporarily remove this test while I investigate.
http://bb.pgr.jp/builders/ninja-x64-msvc-RA-centos6/builds/27427
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277636
91177308-0d34-0410-b5e6-
96231b3b80d8
Tobias Grosser [Wed, 3 Aug 2016 19:30:35 +0000 (19:30 +0000)]
[InstCombine] Refactor optimization of zext(or(icmp, icmp)) to enable more aggressive cast-folding
Summary:
InstCombine unfolds expressions of the form `zext(or(icmp, icmp))` to `or(zext(icmp), zext(icmp))` such that in a later iteration of InstCombine the exposed `zext(icmp)` instructions can be optimized. We now combine this unfolding and the subsequent `zext(icmp)` optimization to be performed together. Since the unfolding doesn't happen separately anymore, we also again enable the folding of `logic(cast(icmp), cast(icmp))` expressions to `cast(logic(icmp, icmp))` which had been disabled due to its interference with the unfolding transformation.
Tested via `make check` and `lnt`.
Background
==========
For a better understanding on how it came to this change we subsequently summarize its history. In commit r275989 we've already tried to enable the folding of `logic(cast(icmp), cast(icmp))` to `cast(logic(icmp, icmp))` which had to be reverted in r276106 because it could lead to an endless loop in InstCombine (also see http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-
20160718/374347.html). The root of this problem is that in `visitZExt()` in InstCombineCasts.cpp there also exists a reverse of the above folding transformation, that unfolds `zext(or(icmp, icmp))` to `or(zext(icmp), zext(icmp))` in order to expose `zext(icmp)` operations which would then possibly be eliminated by subsequent iterations of InstCombine. However, before these `zext(icmp)` would be eliminated the folding from r275989 could kick in and cause InstCombine to endlessly switch back and forth between the folding and the unfolding transformation. This is the reason why we now combine the `zext`-unfolding and the elimination of the exposed `zext(icmp)` to happen at one go because this enables us to still allow the cast-folding in `logic(cast(icmp), cast(icmp))` without entering an endless loop again.
Details on the submitted changes
================================
- In `visitZExt()` we combine the unfolding and optimization of `zext` instructions.
- In `transformZExtICmp()` we have to use `Builder->CreateIntCast()` instead of `CastInst::CreateIntegerCast()` to make sure that the new `CastInst` is inserted in a `BasicBlock`. The new calls to `transformZExtICmp()` that we introduce in `visitZExt()` would otherwise cause according assertions to be triggered (in our case this happend, for example, with lnt for the MultiSource/Applications/sqlite3 and SingleSource/Regression/C++/EH/recursive-throw tests). The subsequent usage of `replaceInstUsesWith()` is necessary to ensure that the new `CastInst` replaces the `ZExtInst` accordingly.
- In InstCombineAndOrXor.cpp we again allow the folding of casts on `icmp` instructions.
- The instruction order in the optimized IR for the zext-or-icmp.ll test case is different with the introduced changes.
- The test cases in zext.ll have been adopted from the reverted commits r275989 and r276105.
Reviewers: grosser, majnemer, spatel
Subscribers: eli.friedman, majnemer, llvm-commits
Differential Revision: https://reviews.llvm.org/D22864
Contributed-by: Matthias Reisinger <d412vv1n@gmail.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277635
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Wed, 3 Aug 2016 19:13:50 +0000 (19:13 +0000)]
Pass EphValues by const-ref as it is not modified in the callee
Patch by Aditya Kumar.
Differential Revision: https://reviews.llvm.org/D22967
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277634
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolai Haehnle [Wed, 3 Aug 2016 19:10:13 +0000 (19:10 +0000)]
[InstCombine] Cleanup select-bitext.ll tests
Follow-up to r277596.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277633
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 3 Aug 2016 19:08:24 +0000 (19:08 +0000)]
[X86][SSE] Enable target shuffle combining to combine multiple shuffle inputs.
We currently only support combining target shuffles that consist of a single source input (plus elements known to be undef/zero).
This patch generalizes the recursive combining of the target shuffle to collect all the inputs, merging any duplicates along the way, into a full set of src ops and its shuffle mask.
We uncover a number of cases where we have failed to combine a unary shuffle because the input has been duplicated and separated during lowering.
This will allow us to combine to 2-input shuffles in a future patch.
Differential Revision: https://reviews.llvm.org/D22859
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277631
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Wed, 3 Aug 2016 19:02:50 +0000 (19:02 +0000)]
Reapply "More fixes to get good error messages for bad archives."
This reverts commit the revert commit r277627. The build errors
mentioned in r277627 were likely caused by an unclean build directory.
Sorry for the noise.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277630
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 3 Aug 2016 18:59:03 +0000 (18:59 +0000)]
[InstCombine] use m_APInt to allow icmp (binop X, Y), C folds with constant splat vectors
This removes the restriction for the icmp constant, but as noted by the FIXME comments,
we still need to change individual checks for binop operand constants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277629
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Wed, 3 Aug 2016 18:44:32 +0000 (18:44 +0000)]
Revert "More fixes to get good error messages for bad archives."
This reverts commit r277540. It breaks the build with:
../lib/Object/Archive.cpp:264:41: error: return type of out-of-line definition of 'llvm::object::ArchiveMemberHeader::getUID' differs from that in the declaration
Expected<unsigned> ArchiveMemberHeader::getUID() const {
~~~~~~~~~~~~~~~~~~ ^
include/llvm/Object/Archive.h:53:12: note: previous declaration is here
unsigned getUID() const;
~~~~~~~~ ^
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277627
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 3 Aug 2016 18:35:48 +0000 (18:35 +0000)]
[Hexagon] Generate COPY/REG_SEQUENCE more aggressively for vectors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277626
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Wed, 3 Aug 2016 18:19:43 +0000 (18:19 +0000)]
IR: Drop uniquing when an MDNode Value operand is deleted
This is a fix for PR28697.
An MDNode can indirectly refer to a GlobalValue, through a
ConstantAsMetadata. When the GlobalValue is deleted, the MDNode operand
is reset to `nullptr`. If the node is uniqued, this can lead to a
hard-to-detect cache invalidation in a Metadata map that's shared across
an LLVMContext.
Consider:
1. A map from Metadata* to `T` called RemappedMDs.
2. A node that references a global variable, `!{i1* @GV}`.
3. Insert `!{i1* @GV} -> SomeT` in the map.
4. Delete `@GV`, leaving behind `!{null} -> SomeT`.
Looking up the generic and uninteresting `!{null}` gives you `SomeT`,
which is likely related to `@GV`. Worse, `SomeT`'s lifetime may be tied
to the deleted `@GV`.
This occurs in practice in the shared ValueMap used since r266579 in the
IRMover. Other code that handles more than one Module (with different
lifetimes) in the same LLVMContext could hit it too.
The fix here is a partial revert of r225223: in the rare case that an
MDNode operand is a ConstantAsMetadata (i.e., wrapping a node from the
Value hierarchy), drop uniquing if it gets replaced with `nullptr`.
This changes step #4 above to leave behind `distinct !{null} -> SomeT`,
which can't be confused with the generic `!{null}`.
In theory, this can cause some churn in the LLVMContext's MDNode
uniquing map when Values are being deleted. However:
- The number of GlobalValues referenced from uniqued MDNodes is
expected to be quite small. E.g., the debug info metadata schema
only references GlobalValues from distinct nodes.
- Other Constants have the lifetime of the LLVMContext, whose teardown
is careful to drop references before deleting the constants.
As a result, I don't expect a compile time regression from this change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277625
91177308-0d34-0410-b5e6-
96231b3b80d8
Ehsan Amiri [Wed, 3 Aug 2016 18:17:35 +0000 (18:17 +0000)]
Adding -verify-machineinstrs option to PowerPC tests
Currently we have a number of tests that fail with -verify-machineinstrs.
To detect this cases earlier we add the option to the testcases with the
exception of tests that will currently fail with this option. PR 27456 keeps
track of this failures.
No code review, as discussed with Hal Finkel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277624
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 3 Aug 2016 18:13:32 +0000 (18:13 +0000)]
[Hexagon-ish] Add function to print cell map contents in bit tracker
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277622
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 3 Aug 2016 17:37:10 +0000 (17:37 +0000)]
[CloneFunction] Don't crash if the value map doesn't hold something
It is possible for the value map to not have an entry for some value
that has already been removed.
I don't have a testcase, this is fall-out from a buildbot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277614
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 3 Aug 2016 17:23:08 +0000 (17:23 +0000)]
use local variables; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277612
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 3 Aug 2016 17:12:47 +0000 (17:12 +0000)]
[CloneFunction] Don't remove side effecting calls
We were able to figure out that the result of a call is some constant.
While propagating that fact, we added the constant to the value map.
This is problematic because it results in us losing the call site when
processing the value map.
This fixes PR28802.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277611
91177308-0d34-0410-b5e6-
96231b3b80d8
Weiming Zhao [Wed, 3 Aug 2016 17:05:23 +0000 (17:05 +0000)]
[ARM] Constant Materialize: imms with specific value can be encoded into mov.w
Summary: Thumb2 supports encoding immediates with specific patterns into mov.w by splatting the low 8 bits into other bytes.
Reviewers: john.brawn, jmolloy
Subscribers: jmolloy, aemerson, rengolin, samparker, llvm-commits
Differential Revision: https://reviews.llvm.org/D23090
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277610
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 3 Aug 2016 16:53:21 +0000 (16:53 +0000)]
[msf] Make FPM reader use MappedBlockStream.
MappedBlockSTream can work with any sequence of block data where
the ordering is specified by a list of block numbers. So rather
than manually stitch them together in the case of the FPM, reuse
this functionality so that we can treat the FPM as if it were
contiguous.
Reviewed By: ruiu
Differential Revision: https://reviews.llvm.org/D23066
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277609
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Wed, 3 Aug 2016 16:20:48 +0000 (16:20 +0000)]
Revert "Teach CorrelatedValuePropagation to mark adds as no wrap"
This reverts commit r277592, trying to fix the AArch64 42VMA buildbot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277607
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 3 Aug 2016 15:51:10 +0000 (15:51 +0000)]
Hexagon: Use llvm_unreachable. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277605
91177308-0d34-0410-b5e6-
96231b3b80d8
Elliot Colp [Wed, 3 Aug 2016 15:09:21 +0000 (15:09 +0000)]
Disable shrinking of SNaN constants
When expanding FP constants, we attempt to shrink doubles to floats and perform an extending load.
However, on SystemZ, and possibly on other targets (I've only confirmed the problem on SystemZ), the FP extending load instruction may convert SNaN into QNaN, or may cause an exception. So in the general case, we would still like to shrink FP constants, but SNaNs should be left as doubles.
Differential Revision: https://reviews.llvm.org/D22685
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277602
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 3 Aug 2016 15:06:18 +0000 (15:06 +0000)]
[Hexagon] Do not check alignment for unsized types in isLegalAddressingMode
When the same base address is used to load two different data types, LSR
would assume a memory type of "void". This type is not sized and has no
alignment information. Checking for it causes a crash.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277601
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 3 Aug 2016 14:25:55 +0000 (14:25 +0000)]
add a vector variant of each test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277598
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolai Haehnle [Wed, 3 Aug 2016 13:37:56 +0000 (13:37 +0000)]
[InstCombine] Add select-bitext.ll tests
As requested for D22747.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277596
91177308-0d34-0410-b5e6-
96231b3b80d8
Gil Rapaport [Wed, 3 Aug 2016 13:23:43 +0000 (13:23 +0000)]
[Loop Vectorizer] Move store-predication into its own function, remove obsolete comment (NFC)
Differential Revision: https://reviews.llvm.org/D23013
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277595
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Wed, 3 Aug 2016 13:11:39 +0000 (13:11 +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@277592
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Wed, 3 Aug 2016 10:58:05 +0000 (10:58 +0000)]
[AVX512] Add aliases for vcvttss2si{l|q}, vcvttsd2si{l|q}, vcvttss2usi{l|q}, vcvttsd2usi{l|q} instructions.
Differential Revision: http://reviews.llvm.org/D23111
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277586
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 3 Aug 2016 09:14:03 +0000 (09:14 +0000)]
[PM] Fix a mis-named parameter in parseLoopPass -- the pass manager was
called "FPM" instead of "LPM" in a hold-over from when the code was
modeled on that used to parse function passes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277584
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 3 Aug 2016 08:16:08 +0000 (08:16 +0000)]
[PM] Add the explicit copy, move, swap, and assignment boilerplate
required by MSVC 2013.
This also makes the repeating pass wrapper assignable. Mildly
unfortunate as it means we can't use a const member for the int, but
that is a really minor invariant to try to preserve at the cost of loss
of regularity of the type. Yet another annoyance of the particular C++
object / move semantic model.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277582
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 3 Aug 2016 07:44:48 +0000 (07:44 +0000)]
[PM] Add a generic 'repeat N times' pass wrapper to the new pass
manager.
While this has some utility for debugging and testing on its own, it is
primarily intended to demonstrate the technique for adding custom
wrappers that can provide more interesting interation behavior in
a nice, orthogonal, and composable layer.
Being able to write these kinds of very dynamic and customized controls
for running passes was one of the motivating use cases of the new pass
manager design, and this gives a hint at how they might look. The actual
logic is tiny here, and most of this is just wiring in the pipeline
parsing so that this can be widely used.
I'm adding this now to show the wiring without a lot of business logic.
This is a precursor patch for showing how a "iterate up to N times as
long as we devirtualize a call" utility can be added as a separable and
composable component along side the CGSCC pass management.
Differential Revision: https://reviews.llvm.org/D22405
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277581
91177308-0d34-0410-b5e6-
96231b3b80d8
Dean Michael Berris [Wed, 3 Aug 2016 07:21:55 +0000 (07:21 +0000)]
[XRay] Make the xray_instr_map section specification more correct
Summary:
We also add a test to show what currently happens when we create a
section per function and emit an xray_instr_map. This illustrates the
relationship (or lack thereof) between the per-function section and the
xray_instr_map section.
We also change the code generation slightly so that we don't always
create group sections, but rather only do so if a function where the
table is associated with is in a group.
Also in this change:
- Remove the "merge" flag on the xray_instr_map section.
- Test that we're generating the right table for comdat and non-comdat functions.
Reviewers: echristo, majnemer
Subscribers: llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D23104
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277580
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Wed, 3 Aug 2016 05:46:35 +0000 (05:46 +0000)]
[IfConversion] Bugfix: Don't use undef flag while adding use operands.
IfConversion used to always add the undef flag when adding a use operand
on a newly predicated instruction. This would be an operand for the register
being conditionally redefined. Due to the undef flag, the liveness of this
register prior to the predicated instruction would get lost.
This patch changes this so that such use operands are added only when the
register is live, without the undef flag.
This was reverted but pushed again now, for details follow link below.
Reviewed by Quentin Colombet.
http://reviews.llvm.org/
D209077
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277571
91177308-0d34-0410-b5e6-
96231b3b80d8
David Callahan [Wed, 3 Aug 2016 04:28:39 +0000 (04:28 +0000)]
[ADCE] Refactor anticipating new functionality (NFC)
Summary:
This is the first refactoring before adding new functionality.
Add a class wrapper for the functions and container for
state associated with the transformation.
No functional change
Reviewers: majnemer, nadav, mehdi_amini
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23065
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277565
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 3 Aug 2016 03:51:42 +0000 (03:51 +0000)]
RecordStreamer: handle inline asm "lazy_reference" and mark symbols as "used"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277564
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 3 Aug 2016 03:26:09 +0000 (03:26 +0000)]
[PM] Remove the NDEBUG condition around isModulePassName.
I forgot to do this initially, and added when I saw this fail in
a no-asserts build, but managed to loose the diff from the actual patch
that got submitted. Very sorry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277562
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 3 Aug 2016 03:21:41 +0000 (03:21 +0000)]
[PM] Significantly refactor the pass pipeline parsing to be easier to
reason about and less error prone.
The core idea is to fully parse the text without trying to identify
passes or structure. This is done with a single state machine. There
were various bugs in the logic around this previously that were repeated
and scattered across the code. Having a single routine makes it much
easier to fix and get correct. For example, this routine doesn't suffer
from PR28577.
Then the actual pass construction is handled using *much* easier to read
code and simple loops, with particular pass manager construction sunk to
live with other pass construction. This is especially nice as the pass
managers *are* in fact passes.
Finally, the "implicit" pass manager synthesis is done much more simply
by forming "pre-parsed" structures rather than having to duplicate tons
of logic.
One of the bugs fixed by this was evident in the tests where we accepted
a pipeline that wasn't really well formed. Another bug is PR28577 for
which I have added a test case.
The code is less efficient than the previous code but I'm really hoping
that's not a priority. ;]
Thanks to Sean for the review!
Differential Revision: https://reviews.llvm.org/D22724
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277561
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Wed, 3 Aug 2016 01:22:19 +0000 (01:22 +0000)]
[MSSA] Fix a caching bug.
This fixes a bug where we'd sometimes cache overly-conservative results
with our walker. This bug was made more obvious by r277480, which makes
our cache far more spotty than it was. Test case is llvm-unit, because
we're likely going to use CachingWalker only for def optimization in the
future.
The bug stems from that there was a place where the walker assumed that
`DefNode.Last` was a valid target to cache to when failing to optimize
phis. This is sometimes incorrect if we have a cache hit. The fix is to
use the thing we *can* assume is a valid target to cache to. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277559
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 3 Aug 2016 01:02:31 +0000 (01:02 +0000)]
[Inliner] clang-format various parts of the inliner prior to changes
here. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277557
91177308-0d34-0410-b5e6-
96231b3b80d8
Ivan Krasin [Wed, 3 Aug 2016 00:59:38 +0000 (00:59 +0000)]
Add -lowertypetests-bitsets-level to control bitsets generation.
Summary:
Sometimes, bitsets could get really large (>300k entries) and
we might want to drop a check, as it would have a too much cost.
Adding a flag to control how much penalty are we willing to pay
for bitsets.
Reviewers: kcc
Differential Revision: https://reviews.llvm.org/D23088
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277556
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 3 Aug 2016 00:36:54 +0000 (00:36 +0000)]
add vector test for icmp+sub
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277555
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Wed, 3 Aug 2016 00:01:46 +0000 (00:01 +0000)]
Support for lifetime begin/end markers in the MemorySSA use optimizer
Summary: Depends on D23072
Reviewers: george.burgess.iv
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23076
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277553
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Tue, 2 Aug 2016 23:36:06 +0000 (23:36 +0000)]
CommandFlags.h/llc: Move StopAfter/StartBefore options to llc.
Move those two options to llc:
The options in CommandFlags.h are shared by dsymutil, gold, llc,
llvm-dwp, llvm-lto, llvm-mc, lto, opt.
-stop-after/-start-after only affect codegen passes however only gold and llc
actually create codegen passes and I believe these flags to be only
useful for users of llc. For the other tools they are just highly
confusing: -stop-after claims to "Stop compilation after a specific
pass" which is not true in the context of the "opt" tool.
Differential Revision: https://reviews.llvm.org/D23050
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277551
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Tue, 2 Aug 2016 23:32:53 +0000 (23:32 +0000)]
[Verifier] Add more tests related to non-integral pointers
As suggested by Matt Arsenault in post-commit review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277550
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Tue, 2 Aug 2016 23:31:56 +0000 (23:31 +0000)]
[WebAssembly] Remove unnecessary subtarget checks in peephole pass
Leftover from D22686; the passes can handle all the instructions
unconditionally; only isel needs to care whether to generate them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277549
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Tue, 2 Aug 2016 23:25:59 +0000 (23:25 +0000)]
Fix a test for r277545.
This change should have been submitted with that commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277548
91177308-0d34-0410-b5e6-
96231b3b80d8