summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Updates in IntelJITEventListener.cpp - by Arch Robison.Elena Demikhovsky2014-06-011-2/+2
| | | | | | This patch updates IntelJITEventListener.cpp to account for revision 206654, which removed some methods from DILineInfo. llvm-svn: 209989
* R600: Set all float vector expands in the same placeMatt Arsenault2014-06-011-5/+2
| | | | llvm-svn: 209988
* DebugInfo: Assert that DbgVariables have associated DIEsDavid Blaikie2014-06-013-3/+393
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was previously committed in r209680 and reverted in r209683 after it caused sanitizer builds to crash. The issue seems to be that the DebugLoc associated with dbg.value IR intrinsics isn't necessarily accurate. Instead, we duplicate the DIVariables and add an InlinedAt field to them to record their location. We were using this InlinedAt field to compute the LexicalScope for the variable, but not using it in the abstract DbgVariable construction and mapping. This resulted in a formal parameter to the current concrete function, correctly having no InlinedAt information, but incorrectly having a DebugLoc that described an inlined location within the function... thus an abstract DbgVariable was created for the variable, but its DIE was never constructed (since the LexicalScope had no such variable). This DbgVariable was silently ignored (by testing for a non-null DIE on the abstract DbgVariable). So, fix this by using the right scoping information when constructing abstract DbgVariables. In the long run, I suspect we want to undo the work that added this second kind of location tracking and fix the places where the DebugLoc propagation on the dbg.value intrinsic fails. This will shrink debug info (by not duplicating DIVariables), make it more efficient (by not having to construct new DIVariable metadata nodes to try to map back to a single variable), and benefit all instructions. But perhaps there are insurmountable issues with DebugLoc quality that I'm unaware of... I just don't know how we can't /just keep the DebugLoc from the dbg.declare to the dbg.values and never get this wrong/. Some history context: http://llvm.org/viewvc/llvm-project?view=revision&revision=135629 http://llvm.org/viewvc/llvm-project?view=revision&revision=137253 llvm-svn: 209984
* Fix typosAlp Toker2014-05-314-5/+5
| | | | llvm-svn: 209982
* ExecutionEngine: avoid NDEBUG in headersAlp Toker2014-05-312-20/+22
| | | | llvm-svn: 209981
* Update a couple of header inclusion guardsAlp Toker2014-05-312-5/+5
| | | | llvm-svn: 209980
* R600/SI: Remove redundant patternsMatt Arsenault2014-05-311-14/+0
| | | | | | These patterns are already handled in the instruction definition. llvm-svn: 209979
* [SelectionDAG] Force cycle detection in AssignTopologicalOrder before abortingAdam Nemet2014-05-313-11/+21
| | | | | | | | | | | | | | | DAG cycle detection is only enabled with ENABLE_EXPENSIVE_CHECKS. However we can run it just before we would crash in order to provide more informative diagnostics. Now in addition to the "Overran sorted position" message we also get the Node printed if a cycle was detected. Tested by building several configs: Debug+Assert, Debug+Assert+Check (this is ENABLE_EXPENSIVE_CHECKS), Release+Assert and Release. Also tried that the AssignTopologicalOrder assert produces the expected results. llvm-svn: 209977
* [SelectionDAG] Pass DAG to checkForCyclesAdam Nemet2014-05-313-12/+14
| | | | | | | | | Pass the DAG down to checkForCycles from all callers where we have it. This allows target-specific nodes to be printed properly. Also print some missing newlines. llvm-svn: 209976
* [SelectionDAG] Remove duplicate declarationAdam Nemet2014-05-311-1/+0
| | | | | | | Prefer the decl in SelectionDAGNodes.h because it's used there and SelectionDAG.h includes SelectionDAGNodes.h. llvm-svn: 209975
* [Reassociate] Similar to "X + -X" -> "0", added code to handle "X + ~X" -> "-1".Benjamin Kramer2014-05-312-8/+35
| | | | | | | | | | | | Handle "X + ~X" -> "-1" in the function Value *Reassociate::OptimizeAdd(Instruction *I, SmallVectorImpl<ValueEntry> &Ops); This patch implements: TODO: We could handle "X + ~X" -> "-1" if we wanted, since "-X = ~X+1". Patch by Rahul Jain! Differential Revision: http://reviews.llvm.org/D3835 llvm-svn: 209973
* R600/SI: Fix [s|u]int_to_fp for i1Matt Arsenault2014-05-316-29/+146
| | | | llvm-svn: 209971
* Fix typos in tablegen error messagesMatt Arsenault2014-05-311-3/+3
| | | | llvm-svn: 209968
* [yaml2obj] Add new command line option `-docnum`.Simon Atanasyan2014-05-318-15/+187
| | | | | | | | | | Input YAML file might contain multiple object file definitions. New option `-docnum` allows to specify an ordinal number (starting from 1) of definition used for an object file generation. Patch reviewed by Sean Silva. llvm-svn: 209967
* really fix the windows build.Rafael Espindola2014-05-311-2/+2
| | | | llvm-svn: 209964
* Fix windows build.Rafael Espindola2014-05-312-3/+2
| | | | llvm-svn: 209961
* There is no std::errc::success, remove the llvm one.Rafael Espindola2014-05-317-9/+7
| | | | llvm-svn: 209960
* Turn errc and windows_error into enum classes.Rafael Espindola2014-05-314-30/+10
| | | | llvm-svn: 209957
* Use error_code() instead of error_code::succes()Rafael Espindola2014-05-3119-143/+139
| | | | | | | There is no std::error_code::success, so this removes much of the noise in transitioning to std::error_code. llvm-svn: 209952
* Fix the behavior of ExecuteAndWait with a non-zero timeout.Peter Collingbourne2014-05-312-1/+32
| | | | llvm-svn: 209951
* Make blend tests more specificFilipe Cabecinhas2014-05-313-8/+17
| | | | | | | Following the lead set by r209324, I'm making these tests match the whole instruction, so we can be sure we're lowering them correctly. llvm-svn: 209947
* [ASan] Behave the same for functions w/o sanitize_address attribute and ↵Alexey Samsonov2014-05-311-2/+1
| | | | | | blacklisted functions llvm-svn: 209946
* [TSan] Fixup a test case after r209939Alexey Samsonov2014-05-311-3/+3
| | | | llvm-svn: 209945
* [TSan] Behave the same for functions w/o sanitize_thread attribute and ↵Alexey Samsonov2014-05-311-5/+7
| | | | | | blacklisted functions llvm-svn: 209939
* delete dead code.Rafael Espindola2014-05-313-64/+0
| | | | llvm-svn: 209938
* Have the TLOF creation take a Triple rather than needing a subtarget.Eric Christopher2014-05-314-21/+20
| | | | llvm-svn: 209937
* [X86] Add two combine rules to simplify dag nodes introduced during type ↵Andrea Di Biagio2014-05-304-27/+355
| | | | | | | | | | | | | | | | | | | | | | | legalization when promoting nodes with illegal vector type. This patch teaches the backend how to simplify/canonicalize dag node sequences normally introduced by the backend when promoting certain dag nodes with illegal vector type. This patch adds two new combine rules: 1) fold (shuffle (bitcast (BINOP A, B)), Undef, <Mask>) -> (shuffle (BINOP (bitcast A), (bitcast B)), Undef, <Mask>) 2) fold (BINOP (shuffle (A, Undef, <Mask>)), (shuffle (B, Undef, <Mask>))) -> (shuffle (BINOP A, B), Undef, <Mask>). Both rules are only triggered on the type-legalized DAG. In particular, rule 1. is a target specific combine rule that attempts to sink a bitconvert into the operands of a binary operation. Rule 2. is a target independet rule that attempts to move a shuffle immediately after a binary operation. llvm-svn: 209930
* Convert a vselect into a concat_vector if possibleFilipe Cabecinhas2014-05-303-1/+75
| | | | | | | | | | | | | | | | | | | | | Summary: If both vector args to vselect are concat_vectors and the condition is constant and picks half a vector from each argument, convert the vselect into a concat_vectors. Added a test. The ConvertSelectToConcatVector is assuming it doesn't get vselects with arguments of, for example, <undef, undef, true, true>. Those get taken care of in the checks above its call. Reviewers: nadav, delena, grosbach, hfinkel Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D3916 llvm-svn: 209929
* isSVR4ABI() returned !isDarwin() so just move that to the elseEric Christopher2014-05-301-4/+1
| | | | | | block and remove the unreachable code. llvm-svn: 209927
* Rename CreateTLOF->createTLOF to match the rest of the file and theEric Christopher2014-05-301-4/+4
| | | | | | rest of the targets with a similar function name. llvm-svn: 209926
* Separate the check for blend shuffle_vector masksFilipe Cabecinhas2014-05-302-27/+44
| | | | | | | | | | | | | | | | | Summary: Separate the check for blend shuffle_vector masks into isBlendMask. This function will also be used to check if a vector shuffle is legal. No change in functionality was intended, but we ended up improving codegen on two tests, which were being (more) optimized only if the resulting shuffle was legal. Reviewers: nadav, delena, andreadb Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D3964 llvm-svn: 209923
* fixed more typosSanjay Patel2014-05-301-2/+2
| | | | llvm-svn: 209921
* Roll DbgVariable::setMInsn into the constructor. No functional changes.Adrian Prantl2014-05-302-8/+15
| | | | llvm-svn: 209920
* added link to CMake pageSanjay Patel2014-05-301-3/+4
| | | | llvm-svn: 209918
* fixed typoSanjay Patel2014-05-301-1/+1
| | | | llvm-svn: 209916
* Make bitcast, extractelement, and insertelement considered cheap for ↵Matt Arsenault2014-05-302-0/+63
| | | | | | | | | | speculation. This helps more branches into selects. On R600, vectors are cheap and anything that helps remove branches is very good. llvm-svn: 209914
* Fix MIPS exception personality encoding.Logan Chien2014-05-304-9/+46
| | | | | | | | | For MIPS, we have to encode the personality routine with an indirect pointer to absptr; otherwise, some link warning warning will be raised, and the program might crash in some early MIPS Android device. llvm-svn: 209907
* MachO: move test to ARM directory.Tim Northover2014-05-301-0/+0
| | | | | | | This test specifies an ARM triple, so it needs ARM as a registered target. llvm-svn: 209905
* PR19753: Optimize comparisons with "ashr exact" of a constanst.Rafael Espindola2014-05-302-0/+25
| | | | | | Patch by suyog sarda. llvm-svn: 209903
* [pr19636] Fix known bit computation in urem instruction with power of two.Rafael Espindola2014-05-302-2/+19
| | | | | | Patch by Andrey Kuharev. llvm-svn: 209902
* SelectionDAG: skip barriers for unordered atomic operationsTim Northover2014-05-302-14/+27
| | | | | | | | | Unordered is strictly weaker than monotonic, so if the latter doesn't have any barriers then the former certainly shouldn't. rdar://problem/16548260 llvm-svn: 209901
* ARM: use AAPCS-style prologues for embedded MachO.Tim Northover2014-05-305-28/+29
| | | | | | | | | | | | | | | Darwin prologues save their GPRs in two stages: a narrow push of r0-r7 & lr, followed by a wide push of the remaining registers if there are any. AAPCS uses a single push.w instruction. It turns out that, on average, enough registers get pushed that code is smaller in the AAPCS prologue, which is a nice property for M-class programmers. They also have other options available for back-traces, so can hopefully deal with the fact that FP & LR aren't adjacent in memory. rdar://problem/15909583 llvm-svn: 209895
* MachO: support N_INDR aliases in assembly files.Tim Northover2014-05-307-13/+168
| | | | | | | | | This makes LLVM create N_INDR aliases (to be resolved by the linker) when appropriate. rdar://problem/15125513 llvm-svn: 209894
* AArch64 & ARM: disable generic test that relies on no CFG changes.Tim Northover2014-05-301-0/+3
| | | | llvm-svn: 209885
* ARM & AArch64: make use of common cmpxchg idioms after expansionTim Northover2014-05-3059-87/+347
| | | | | | | | | | | | | | | | | | | | | | | | The C and C++ semantics for compare_exchange require it to return a bool indicating success. This gets mapped to LLVM IR which follows each cmpxchg with an icmp of the value loaded against the desired value. When lowered to ldxr/stxr loops, this extra comparison is redundant: its results are implicit in the control-flow of the function. This commit makes two changes: it replaces that icmp with appropriate PHI nodes, and then makes sure earlyCSE is called after expansion to actually make use of the opportunities revealed. I've also added -{arm,aarch64}-enable-atomic-tidy options, so that existing fragile tests aren't perturbed too much by the change. Many of them either rely on undef/unreachable too pervasively to be restored to something well-defined (particularly while making sure they test the same obscure assert from many years ago), or depend on a particular CFG shape, which is disrupted by SimplifyCFG. rdar://problem/16227836 llvm-svn: 209883
* AArch64 & ARM: remove undefined behaviour from some tests.Tim Northover2014-05-3013-62/+66
| | | | llvm-svn: 209880
* Test cases named with dates is a legacy rule not used now. Rename several ↵Hao Liu2014-05-304-0/+0
| | | | | | test cases. llvm-svn: 209877
* Allow vectorization of intrinsics such as powi,cttz and ctlz in Loop and SLP ↵Karthik Bhat2014-05-305-2/+426
| | | | | | | | | | Vectorizer. This patch adds support to vectorize intrinsics such as powi, cttz and ctlz in Vectorizer. These intrinsics are different from other intrinsics as second argument to these function must be same in order to vectorize them and it should be represented as a scalar. Review: http://reviews.llvm.org/D3851#inline-32769 and http://reviews.llvm.org/D3937#inline-32857 llvm-svn: 209873
* Add a trivial ArrayRef helper overload to the SelectionDAG interface.Chandler Carruth2014-05-301-0/+6
| | | | | | | I'm using this pretty frequently in a patch I'm working on and it seems generally useful. llvm-svn: 209872
* Remove use of comma operator.Richard Trieu2014-05-301-2/+5
| | | | llvm-svn: 209871
OpenPOWER on IntegriCloud