Craig Topper [Mon, 12 Oct 2015 04:17:55 +0000 (04:17 +0000)]
[X86] Change the immediate for IN/OUT instructions to u8imm so the assembly parser will check the size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250012
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 12 Oct 2015 03:39:57 +0000 (03:39 +0000)]
[X86] Add some instruction aliases to get the assembly parser table to favor arithmetic instructions with 8-bit immediates over the forms that implicitly use the ax/eax/rax.
This allows us to remove the explicit code for working around the existing priority
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250011
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 12 Oct 2015 00:57:29 +0000 (00:57 +0000)]
[llvm-rtdyld] General modernization/cleanup in preparation for (bigger) changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250004
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sun, 11 Oct 2015 21:36:11 +0000 (21:36 +0000)]
[Bugpoint] Get rid of dead code. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249999
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 11 Oct 2015 19:54:02 +0000 (19:54 +0000)]
[X86] Fix CMP and TEST with al/ax/eax/rax to not mark EFLAGS as a use or al/ax/eax/rax as a def. Probably doesn't have a functional affect since these aren't used in isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249994
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 11 Oct 2015 19:48:12 +0000 (19:48 +0000)]
[DAGCombiner] Improved FMA combine support for vectors
Enabled constant canonicalization for all constants.
Improved combining of constant vectors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249993
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 11 Oct 2015 18:33:48 +0000 (18:33 +0000)]
[X86] Completed SHL cost model tests
As discussed in D8690.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249990
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 11 Oct 2015 18:27:24 +0000 (18:27 +0000)]
[X86] Remove special validation for INT immediate operand from AsmParser. Instead mark its operand type as u8imm which will cause it to fail to match. This is more consistent with other instruction behavior.
This also fixes a bug where negative immediates below -128 were not being reported as errors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249989
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 11 Oct 2015 17:34:32 +0000 (17:34 +0000)]
[X86] Renamed SHL cost model tests
Matches naming conventions for ASHR/LSHR cost tests
As discussed in D8690.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249984
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 11 Oct 2015 17:29:26 +0000 (17:29 +0000)]
[X86] Added LSHR cost model tests
There are several dodgy costings due to AVX1 legalizing 256-bit integer vectors that need fixing.
As discussed in D8690.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249983
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 11 Oct 2015 17:08:05 +0000 (17:08 +0000)]
[X86] Added ASHR cost model tests
There are several dodgy costings due to AVX1 legalizing 256-bit integer vectors that need fixing.
As discussed in D8690.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249981
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 11 Oct 2015 16:59:29 +0000 (16:59 +0000)]
[TableGen] Add a space between type and '*' in front of a variable name in output file. While there replace type with 'auto' since there's a cast on the right side of the assignment. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249980
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 11 Oct 2015 16:38:14 +0000 (16:38 +0000)]
[X86] Simplify immediate range checking code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249979
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 11 Oct 2015 16:02:28 +0000 (16:02 +0000)]
[DAGCombiner] Tidyup FMINNUM/FMAXNUM constant folding
Enable constant folding for vector splats as well as scalars.
Enable constant canonicalization for all scalar and vector constants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249978
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 11 Oct 2015 14:38:34 +0000 (14:38 +0000)]
[InstCombine][X86][XOP] Combine XOP integer vector comparisons to native IR
We now have lowering support for XOP PCOM/PCOMU instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249977
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 11 Oct 2015 14:15:17 +0000 (14:15 +0000)]
[X86][XOP] Added support for the lowering of 128-bit vector integer comparisons to XOP PCOM/PCOMU instructions.
The XOP vector integer comparisons can deal with all signed/unsigned comparison cases directly and can be easily commuted as well (D7646).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249976
91177308-0d34-0410-b5e6-
96231b3b80d8
Nathan Slingerland [Sun, 11 Oct 2015 13:30:56 +0000 (13:30 +0000)]
[ProfileData] Test commit for slingn
This is a test of the LLVM commit system. In the event of a real commit there would be some useful code changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249972
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 10 Oct 2015 22:21:05 +0000 (22:21 +0000)]
[X86][SSE] Vector signed/unsigned integer compare tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249954
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 10 Oct 2015 20:17:07 +0000 (20:17 +0000)]
Change isUIntN/isIntN calls with constant N to use the template version. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249952
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 10 Oct 2015 18:54:26 +0000 (18:54 +0000)]
In isUIntN, make sure N is less than 64 before using in a shift to avoid undefined behavior. Also change it to use the same formula as the template version which I think results in less math in compiled code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249951
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 10 Oct 2015 14:18:36 +0000 (14:18 +0000)]
Fix PR25101 - Handle anonymous functions without VST entries
Summary:
The change to use the VST function entries for lazy deserialization did
not handle the case of anonymous functions without aliases. In that case
we must fall back to scanning the function blocks as there is no VST
entry.
Reviewers: dexonsmith, joker.eph, davidxl
Subscribers: tstellarAMD, llvm-commits
Differential Revision: http://reviews.llvm.org/D13596
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249947
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Sat, 10 Oct 2015 07:20:23 +0000 (07:20 +0000)]
[SystemZ] CodeGen/SystemZ/asm-18.ll run with -verify-machineinstrs
Relates to the fixes of r249811.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249946
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Sat, 10 Oct 2015 07:14:24 +0000 (07:14 +0000)]
[SystemZ] Fixes in the backend I/R.
expandPostRAPseudo():
STX -> 2 * STD: The first STD should not have the kill flag set for the address.
SystemZElimCompare:
BRC -> BRCT conversion: Don't forget to remove the CC<use,kill> operand.
Needed to make SystemZ/asm-17.ll pass with -verify-machineinstrs, which
now runs with this flag.
Reviewed by Ulrich Weigand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249945
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Sat, 10 Oct 2015 06:33:33 +0000 (06:33 +0000)]
[IndVars] Use `auto`; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249944
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 10 Oct 2015 05:38:14 +0000 (05:38 +0000)]
Use range-based for loops. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249943
91177308-0d34-0410-b5e6-
96231b3b80d8
Keno Fischer [Sat, 10 Oct 2015 05:37:02 +0000 (05:37 +0000)]
[RuntimeDyld] Fix performance problem in resolveRelocations with many sections
Summary:
Rather than just iterating over all sections and checking whether we have relocations for them, iterate over the relocation map instead. This showed up heavily in an artificial julia benchmark that does lots of compilation. On that particular benchmark, this patch gives
~15% performance improvements. As far as I can tell the primary reason why the original
loop was so expensive is that Relocations[i] actually constructs a relocationList (allocating memory & doing lots of other unnecessary computing) if none is found.
Reviewers: lhames
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D13545
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249942
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 10 Oct 2015 05:25:06 +0000 (05:25 +0000)]
Use range-based for loops. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249941
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 10 Oct 2015 05:25:02 +0000 (05:25 +0000)]
Use emplace_back instead of a constructor call and push_back. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249940
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 10 Oct 2015 02:57:02 +0000 (02:57 +0000)]
Suppress LLVM::tools/llvm-symbolizer/coff-dwarf.test for mingw, for now.
FIXME: Improve llvm-symbolizer, or rename the feature "system-windows".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249937
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Sat, 10 Oct 2015 02:14:18 +0000 (02:14 +0000)]
[libFuzzer] document more trophies
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249933
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Sat, 10 Oct 2015 01:06:20 +0000 (01:06 +0000)]
Move llvm-objdump malformed Mach-O tests to X86 test directory.
rdar://
22983603
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249927
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sat, 10 Oct 2015 00:53:03 +0000 (00:53 +0000)]
Analysis: Remove implicit ilist iterator conversions
Remove implicit ilist iterator conversions from LLVMAnalysis.
I came across something really scary in `llvm::isKnownNotFullPoison()`
which relied on `Instruction::getNextNode()` being completely broken
(not surprising, but scary nevertheless). This function is documented
(and coded to) return `nullptr` when it gets to the sentinel, but with
an `ilist_half_node` as a sentinel, the sentinel check looks into some
other memory and we don't recognize we've hit the end.
Rooting out these scary cases is the reason I'm removing the implicit
conversions before doing anything else with `ilist`; I'm not at all
surprised that clients rely on badness.
I found another scary case -- this time, not relying on badness, just
bad (but I guess getting lucky so far) -- in
`ObjectSizeOffsetEvaluator::compute_()`. Here, we save out the
insertion point, do some things, and then restore it. Previously, we
let the iterator auto-convert to `Instruction*`, and then set it back
using the `Instruction*` version:
Instruction *PrevInsertPoint = Builder.GetInsertPoint();
/* Logic that may change insert point */
if (PrevInsertPoint)
Builder.SetInsertPoint(PrevInsertPoint);
The check for `PrevInsertPoint` doesn't protect correctly against bad
accesses. If the insertion point has been set to the end of a basic
block (i.e., `SetInsertPoint(SomeBB)`), then `GetInsertPoint()` returns
an iterator pointing at the list sentinel. The version of
`SetInsertPoint()` that's getting called will then call
`PrevInsertPoint->getParent()`, which explodes horribly. The only
reason this hasn't blown up is that it's fairly unlikely the builder is
adding to the end of the block; usually, we're adding instructions
somewhere before the terminator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249925
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sat, 10 Oct 2015 00:45:24 +0000 (00:45 +0000)]
[llvm-rtdyld] Use range-based loop. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249923
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sat, 10 Oct 2015 00:13:11 +0000 (00:13 +0000)]
MC: Remove implicit ilist iterator conversions, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249922
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Sat, 10 Oct 2015 00:05:01 +0000 (00:05 +0000)]
Fix a bugs in the Mach-O disassembler when disassembling from a
malformed Mach-O file that caused a crash. This was because of an
assert where the code was incorrectly attempting to parse relocation
entries off of the sections and the filetype was not an MH_OBJECT.
rdar://
22983603
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249921
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sat, 10 Oct 2015 00:04:29 +0000 (00:04 +0000)]
[WinEH] Remove more dead code
wineh-parent is dead, so is ValueOrMBB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249920
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 9 Oct 2015 23:34:53 +0000 (23:34 +0000)]
[WinEH] Delete the old landingpad implementation of Windows EH
The new implementation works at least as well as the old implementation
did.
Also delete the associated preparation tests. They don't exercise
interesting corner cases of the new implementation. All the codegen
tests of the EH tables have already been ported.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249918
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 9 Oct 2015 23:05:54 +0000 (23:05 +0000)]
[SEH] Update SEH codegen tests to use the new IR
Also Fix a buglet where SEH tables had ranges that spanned funclets.
The remaining tests using the old landingpad IR are preparation tests,
and will be deleted along with the old preparation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249917
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 22:56:24 +0000 (22:56 +0000)]
CodeGen: Remove implicit ilist iterator conversions, NFC
Finish removing implicit ilist iterator conversions from LLVMCodeGen.
I'm sure there are lots more of these in lib/CodeGen/*/.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249915
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Fri, 9 Oct 2015 22:26:04 +0000 (22:26 +0000)]
[CMake] Parallel make breaks on native tablegen
Patch by Alex Wang
This patch resolves a parallelization issue that occurs when native tablegen targets are built at the same time. They both try to build libSupport and clobber each other causing the builds to fail.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249911
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 9 Oct 2015 22:18:45 +0000 (22:18 +0000)]
[WinEH] Insert the catchpad return before CSR restoration
x64 catchpads use rax to inform the unwinder where control should go
next. However, we must initialize rax before the epilogue sequence so
as to not perturb the unwinder.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249910
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Fri, 9 Oct 2015 22:09:56 +0000 (22:09 +0000)]
Fix use of uninitialized bool, found by ubsan in portion of
test/tools/llvm-objdump/malformed-machos.test added in r249845.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249909
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Fri, 9 Oct 2015 21:36:19 +0000 (21:36 +0000)]
Fix assert when emitting llvm.pow.f86.
This occurred due to introducing the invalid i64 type after type
legalization had already finished, in an attempt to workaround bitcast
f64 -> v2i32 not doing constant folding.
The *right* thing is to actually fix bitcast, but that has other
complications. So, for now, just get rid of the broken workaround, and
check in a test-case showing that it doesn't crash, with TODOs for
emitting proper code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249908
91177308-0d34-0410-b5e6-
96231b3b80d8
Diego Novillo [Fri, 9 Oct 2015 21:33:13 +0000 (21:33 +0000)]
Remove unused function in sample profile writer API - NFC.
These functions are not needed and are getting in the way of changes
for implementing a table of contents for the binary format.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249907
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 9 Oct 2015 21:27:28 +0000 (21:27 +0000)]
[SEH] Fix _except_handler4 table base states
We got them right for the old IR, but not with funclets. Port the old
test to the new IR and fix the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249906
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 21:08:19 +0000 (21:08 +0000)]
CodeGen: Avoid more ilist iterator implicit conversions, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249903
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 21:05:00 +0000 (21:05 +0000)]
CodeGen: Use range-based for in PostRAScheduler, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249901
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 9 Oct 2015 20:39:39 +0000 (20:39 +0000)]
[SEH] Remember to emit the last invoke range for SEH
This wasn't very observable in execution tests, because usually there is
an invoke in the catchpad that unwinds the the catchendpad but never
actually throws.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249898
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Fri, 9 Oct 2015 20:17:46 +0000 (20:17 +0000)]
Generalize convergent check to handle invokes as well as calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249892
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Fri, 9 Oct 2015 20:10:14 +0000 (20:10 +0000)]
Fix assert in X86 backend.
When running combine on an extract_vector_elt, it wants to look through
a bitcast to check if the argument to the bitcast was itself an
extract_vector_elt with particular operands.
However, it called getOperand() on the argument to the bitcast *before*
checking that the opcode was EXTRACT_VECTOR_ELT, assert-failing if there
were zero operands for the actual opcode.
Fix, and add trivial test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249891
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 9 Oct 2015 19:48:48 +0000 (19:48 +0000)]
Revert "Simplify code. NFC."
This reverts commit r248610.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249887
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 19:40:45 +0000 (19:40 +0000)]
CodeGen: Continue removing ilist iterator implicit conversions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249884
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 19:36:12 +0000 (19:36 +0000)]
CodeGen: Remove implicit iterator conversions from MBB.cpp
Remove implicit ilist iterator conversions from MachineBasicBlock.cpp.
I've also added an overload of `splice()` that takes a pointer, since
it's a natural API. This is similar to the overloads I added for
`remove()` and `erase()` in r249867.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249883
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 19:23:20 +0000 (19:23 +0000)]
CodeGen: Avoid ilist iterator implicit conversions in a few more places, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249880
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 19:13:58 +0000 (19:13 +0000)]
CodeGen: Remove more ilist iterator implicit conversions, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249879
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 19:07:41 +0000 (19:07 +0000)]
CodeGen: Use range-based for in IntrinsicLowering::AddPrototypes, NFC
This happens to avoid a host of implicit ilist iterator conversions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249877
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 18:57:47 +0000 (18:57 +0000)]
CodeGen: Use range-based for in GlobalMerge, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249876
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 18:44:40 +0000 (18:44 +0000)]
CodeGen: Remove a few more ilist iterator implicit conversions, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249875
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Fri, 9 Oct 2015 18:40:20 +0000 (18:40 +0000)]
Teach LoopUnswitch not to perform non-trivial unswitching on loops containing convergent operations.
Doing so could cause the post-unswitching convergent ops to be
control-dependent on the unswitch condition where they were not before.
This check could be refined to allow unswitching where the convergent
operation was already control-dependent on the unswitch condition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249874
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Fri, 9 Oct 2015 18:40:15 +0000 (18:40 +0000)]
Add iterator ranges for blocks in a Loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249873
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 18:35:09 +0000 (18:35 +0000)]
CodeGen: Remove implicit iterator conversions from SlotIndexes.h, NFC
Be explicit about changes between pointers and iterators, as with other
recent commits. This transitively removes implicit ilist iterator
conversions from about 20 source files in CodeGen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249869
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 18:23:49 +0000 (18:23 +0000)]
CodeGen: Remove implicit conversions from Analysis and BranchFolding
Remove a few more implicit ilist iterator conversions, this time from
Analysis.cpp and BranchFolding.cpp.
I added a few overloads for `remove()` and `erase()`, which quite
naturally take pointers as well as iterators as parameters. This will
reduce the churn at least in the short term, but I don't really have a
problem with these existing for longer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249867
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Fri, 9 Oct 2015 18:06:13 +0000 (18:06 +0000)]
Refine the definition of convergent to only disallow the addition of new control dependencies.
This covers the common case of operations that cannot be sunk.
Operations that cannot be hoisted should already be handled properly via
the safe-to-speculate rules and mechanisms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249865
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 9 Oct 2015 18:01:03 +0000 (18:01 +0000)]
fix typos; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249863
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Fri, 9 Oct 2015 17:55:21 +0000 (17:55 +0000)]
[CMake] If LLVM_DYLIB_EXPORT_ALL is On don't generate an export list at all, just export the world.
This should resolve Bug 24157 - CMake built shared library does not export all public symbols
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249862
91177308-0d34-0410-b5e6-
96231b3b80d8
Diego Novillo [Fri, 9 Oct 2015 17:54:24 +0000 (17:54 +0000)]
Add inline stack streaming to binary sample profiles.
With this patch we can now read and write inline stacks in sample
profiles to the binary encoded profiles.
In a subsequent patch, I will add a string table to the binary encoding.
Right now function names are emitted as strings every time we find them.
This is too bloated and will produce large files in applications with
lots of inlining.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249861
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 9 Oct 2015 17:50:00 +0000 (17:50 +0000)]
[WebAssembly] Rename floating-point operators to match their spec names.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249859
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Fri, 9 Oct 2015 17:41:29 +0000 (17:41 +0000)]
Add verification for align, dereferenceable, dereferenceable_or_null load metadata
Reviewed By: reames
Differential Revision: http://reviews.llvm.org/D13428
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249856
91177308-0d34-0410-b5e6-
96231b3b80d8
Keno Fischer [Fri, 9 Oct 2015 17:24:54 +0000 (17:24 +0000)]
Clear SectionSymbols in MCContext::Reset
This was just forgotten when SectionSymbols was introduced and could cause
corruption if the MCContext was reused after Reset.
Reviewers: rafael
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D13547
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249854
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 16:54:54 +0000 (16:54 +0000)]
AArch64: Make getNextNode() cleanup in r249764 more clear
After r249764, if you didn't see the full context, it looked like
`std::next(I)` would get the same result as
`++MachineBasicBlock::iterator(I)`. However, `I` is a `MachineInstr*`
(not a `MachineBasicBlock::iterator`).
Use the `getIterator()` helper I added later (r249782) to make this code
more clear.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249852
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 16:54:49 +0000 (16:54 +0000)]
CodeGen: Start removing implicit conversions to/from list iterators, NFC
Start removing implicit conversions to/from list iterators in CodeGen,
ala r249782 for IR. A lot more to go after this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249851
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 16:51:23 +0000 (16:51 +0000)]
Revert "Support: Partially revert r249782 to unbreak clang build"
This reverts commit r249783, fully reinstating r249782. I've fixed the
bug in clang: it was a non-const iterator that dereferenced to const
(but had an implicit conversion to non-const).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249850
91177308-0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Fri, 9 Oct 2015 16:50:16 +0000 (16:50 +0000)]
Make HeaderLineno a local variable.
http://reviews.llvm.org/D13576
As we are using hierarchical profile, there is no need to keep HeaderLineno a member variable. This is because each level of the inline stack will have its own header lineno. One should use the head lineno of its own inline stack level instead of the actual symbol.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249848
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 9 Oct 2015 16:49:56 +0000 (16:49 +0000)]
Fix pdb.test when python is not on PATH
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249847
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Fri, 9 Oct 2015 16:48:44 +0000 (16:48 +0000)]
Fixed two bugs in llvm-objdump’s printing of Objective-C meta data
from malformed Mach-O files that caused crashes. The first because the
offset in a dyld bind table entry was out of range. The second because their
was no image info section and the routine printing it did not have the
need check to see the section did not exist.
rdar://
22983603
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249845
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Fri, 9 Oct 2015 15:58:26 +0000 (15:58 +0000)]
ValueTracking: use getAlignment in isAligned
Reviewed By: reames
Differential Revision: http://reviews.llvm.org/D13517
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249841
91177308-0d34-0410-b5e6-
96231b3b80d8
Frederic Riss [Fri, 9 Oct 2015 15:04:05 +0000 (15:04 +0000)]
[dsymutil] Prevent warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249836
91177308-0d34-0410-b5e6-
96231b3b80d8
Jun Bum Lim [Fri, 9 Oct 2015 14:11:25 +0000 (14:11 +0000)]
Improve ISel across lane float min/max reduction
In vectorized float min/max reduction code, the final "reduce" step
is sub-optimal. In AArch64, this change wll combine :
svn0 = vector_shuffle t0, undef<2,3,u,u>
fmin = fminnum t0,svn0
svn1 = vector_shuffle fmin, undef<1,u,u,u>
cc = setcc fmin, svn1, ole
n0 = extract_vector_elt cc, #0
n1 = extract_vector_elt fmin, #0
n2 = extract_vector_elt fmin, #1
result = select n0, n1,n2
into :
result = llvm.aarch64.neon.fminnmv t0
This change extends r247575.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249834
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Fri, 9 Oct 2015 11:27:44 +0000 (11:27 +0000)]
[SystemZ] Remove unused code in SystemZElimCompare.cpp
The Reference IndirectDef and IndirectUse members were unused and therefore
removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249824
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Fri, 9 Oct 2015 11:12:18 +0000 (11:12 +0000)]
Vector element extraction without stack operations on Power 8
This patch corresponds to review:
http://reviews.llvm.org/D12032
This patch builds onto the patch that provided scalar to vector conversions
without stack operations (D11471).
Included in this patch:
- Vector element extraction for all vector types with constant element number
- Vector element extraction for v16i8 and v8i16 with variable element number
- Removal of some unnecessary COPY_TO_REGCLASS operations that ended up
unnecessarily moving things around between registers
Not included in this patch (will be in upcoming patch):
- Vector element extraction for v4i32, v4f32, v2i64 and v2f64 with
variable element number
- Vector element insertion for variable/constant element number
Testing is provided for all extractions. The extractions that are not
implemented yet are just placeholders.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249822
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Fri, 9 Oct 2015 10:53:41 +0000 (10:53 +0000)]
[MemCpyOpt] Fix wrong merging adjacent nontemporal stores into memset calls.
Pass MemCpyOpt doesn't check if a store instruction is nontemporal.
As a consequence, adjacent nontemporal stores are always merged into a
memset call.
Example:
;;;
define void @foo(<4 x float>* nocapture %p) {
entry:
store <4 x float> zeroinitializer, <4 x float>* %p, align 16, !nontemporal !0
%p1 = getelementptr inbounds <4 x float>, <4 x float>* %dst, i64 1
store <4 x float> zeroinitializer, <4 x float>* %p1, align 16, !nontemporal !0
ret void
}
!0 = !{i32 1}
;;;
In this example, the two nontemporal stores are combined to a memset of zero
which does not preserve the nontemporal hint. Later on the backend (tested on a
x86-64 corei7) expands that memset call into a sequence of two normal 16-byte
aligned vector stores.
opt -memcpyopt example.ll -S -o - | llc -mcpu=corei7 -o -
Before:
xorps %xmm0, %xmm0
movaps %xmm0, 16(%rdi)
movaps %xmm0, (%rdi)
With this patch, we no longer merge nontemporal stores into calls to memset.
In this example, llc correctly expands the two stores into two movntps:
xorps %xmm0, %xmm0
movntps %xmm0, 16(%rdi)
movntps %xmm0, (%rdi)
In theory, we could extend the usage of !nontemporal metadata to memcpy/memset
calls. However a change like that would only have the effect of forcing the
backend to expand !nontemporal memsets back to sequences of store instructions.
A memset library call would not have exactly the same semantic of a builtin
!nontemporal memset call. So, SelectionDAG will have to conservatively expand
it back to a sequence of !nontemporal stores (effectively undoing the merging).
Differential Revision: http://reviews.llvm.org/D13519
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249820
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnaud A. de Grandmaison [Fri, 9 Oct 2015 09:23:01 +0000 (09:23 +0000)]
[EarlyCSE] Address post commit review for r249523.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249814
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Fri, 9 Oct 2015 07:19:20 +0000 (07:19 +0000)]
[SystemZ] Remove superfluous braces in SystemZShortenInst.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249812
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Fri, 9 Oct 2015 07:19:16 +0000 (07:19 +0000)]
[SystemZ] Minor bugfixes.
LLCH, LLHH and CLIH had the wrong register classes for the def-operand.
Tie operands if changing opcode to an instruction with tied ops.
Comment typo fix.
These fixes were needed in order to make regression test case
SystemZ/asm-18.ll pass with -verify-machineinstrs (not used by
default).
Reviewed by Ulrich Weigand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249811
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Fri, 9 Oct 2015 07:19:12 +0000 (07:19 +0000)]
[SystemZ] Bugfix in SystemZAsmParser.cpp.
Let parseRegister() allow RegFP Group if expecting RegV Group, since the
%f register prefix yields the FP group even while used with vector instructions.
Reviewed by Ulrich Weigand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249810
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 9 Oct 2015 04:03:14 +0000 (04:03 +0000)]
[libFuzzer] don't print large artifacts to stderr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249808
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 9 Oct 2015 03:57:59 +0000 (03:57 +0000)]
[libFuzzer] add -artifact_prefix flag
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249807
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 9 Oct 2015 03:19:03 +0000 (03:19 +0000)]
ARM: tweak WoA frame lowering
Accept r11 when targeting Windows on ARM rather than just low registers.
Because we are in a thumb-2 only mode, this may be slightly more expensive in
code size, but results in better code for the environment since it spills the
frame register, which is generally desired for fast stack walking as per the
ABI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249804
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 9 Oct 2015 02:44:45 +0000 (02:44 +0000)]
[SCEV] Call `StrengthenNoWrapFlags` after `GroupByComplexity`; NFCI
The current implementation of `StrengthenNoWrapFlags` is agnostic to the
order of `Ops`, so this commit should not change anything semantic. An
upcoming change will make `StrengthenNoWrapFlags` sensitive to the order
of `Ops`.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249802
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 9 Oct 2015 01:18:27 +0000 (01:18 +0000)]
Re-enable the coff-dwarf test on Windows
Apparently system-windows was only a clang lit suite feature.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249797
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 9 Oct 2015 01:13:17 +0000 (01:13 +0000)]
Revert "Revert "Revert r248959, "[WinEH] Emit int3 after noreturn calls on Win64"""
This reverts commit r249794.
Apparently my checkouts are full of unexpected surprises today.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249796
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 9 Oct 2015 01:11:40 +0000 (01:11 +0000)]
Fix coff-dwarf test for non-Windows platforms that cannot demangle MS C++ names
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249795
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 9 Oct 2015 01:11:37 +0000 (01:11 +0000)]
Revert "Revert r248959, "[WinEH] Emit int3 after noreturn calls on Win64""
This reverts commit r249032.
TODO write commit msg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249794
91177308-0d34-0410-b5e6-
96231b3b80d8
Joseph Tremoulet [Fri, 9 Oct 2015 00:46:08 +0000 (00:46 +0000)]
[WinEH] Fix cleanup state numbering
Summary:
- Recurse from cleanupendpads to their cleanuppads, to make sure the
cleanuppad is visited if it has a cleanupendpad but no cleanupret.
- Check for and avoid double-processing cleanuppads, to allow for them to
have multiple cleanuprets (plus cleanupendpads).
- Update Cxx state numbering to visit toplevel cleanupendpads and to
recurse from cleanupendpads to their preds, to ensure we number any
funclets in inlined cleanups. SEH state numbering already did this.
Reviewers: rnk
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D13374
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249792
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 9 Oct 2015 00:15:13 +0000 (00:15 +0000)]
[SEH] Fix llvm.eh.exceptioncode fast register allocation assertion
I called the wrong MachineBasicBlock::addLiveIn() overload.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249786
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 9 Oct 2015 00:15:08 +0000 (00:15 +0000)]
Address review comments, remove error case and return 0 instead as required by tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249785
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 9 Oct 2015 00:15:01 +0000 (00:15 +0000)]
[llvm-symbolizer] Make --relative-address work with DWARF contexts
Summary:
Previously the relative address flag only affected PDB debug info. Now
both DIContext implementations always expect to be passed virtual
addresses. llvm-symbolizer is now responsible for adding ImageBase to
module offsets when --relative-offset is passed.
Reviewers: zturner
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D12883
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249784
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 9 Oct 2015 00:03:57 +0000 (00:03 +0000)]
Support: Partially revert r249782 to unbreak clang build
Apparently the iterators in `clang::CFGBlock` have an auto-conversion to
`CFGBlock *`, but the dereference operator gives `const CFGBlock &`.
Until I have a moment to fix that, revert the GenericDomTree chagnes
from r249782.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249783
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Thu, 8 Oct 2015 23:49:46 +0000 (23:49 +0000)]
IR: Remove implicit iterator conversions from lib/IR, NFC
Stop converting implicitly between iterators and pointers/references in
lib/IR. For convenience, I've added a `getIterator()` accessor to
`ilist_node` so that callers don't need to know how to spell the
iterator class (i.e., they can use `X.getIterator()` instead of
`Function::iterator(X)`).
I'll eventually disallow these implicit conversions entirely, but
there's a lot of code, so it doesn't make sense to do it all in one
patch. One library or so at a time.
Why? To root out cases of `getNextNode()` and `getPrevNode()` being
used in iterator logic. The design of `ilist` makes that invalid when
the current node could be at the back of the list, but it happens to
"work" right now because of a bug where those functions never return
`nullptr` if you're using a half-node sentinel. Before I can fix the
function, I have to remove uses of it that rely on it misbehaving.
(Maybe the function should just be deleted anyway? But I don't want
deleting it -- potentially a huge project -- to block fixing
ilist/iplist.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249782
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Thu, 8 Oct 2015 23:18:38 +0000 (23:18 +0000)]
[RS4GC] Refactoring to make a later change easier, NFCI
Summary:
These non-semantic changes will help make a later change adding
support for deopt operand bundles more streamlined.
Reviewers: reames, swaroop.sridhar
Subscribers: sanjoy, llvm-commits
Differential Revision: http://reviews.llvm.org/D13491
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249779
91177308-0d34-0410-b5e6-
96231b3b80d8