summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix a coverage reading bug Xinliang David Li2016-01-191-1/+3
| | | | | | | | | function record pointer is not advanced when duplicate entry is found. Test case to be added. llvm-svn: 258188
* [Orc] Refactor ObjectLinkingLayer::addObjectSet to defer loading objects untilLang Hames2016-01-191-7/+17
| | | | | | | | | | | | | | | | they're needed. Prior to this patch objects were loaded (via RuntimeDyld::loadObject) when they were added to the ObjectLinkingLayer, but were not relocated and finalized until a symbol address was requested. In the interim, another object could be loaded and finalized with the same memory manager, causing relocation/finalization of the first object to fail (as the first finalization call may have marked the allocated memory for the first object read-only). By deferring the loadObject call (and subsequent memory allocations) until an object file is needed we can avoid prematurely finalizing memory. llvm-svn: 258185
* [SCEV] Fix PR26207Sanjoy Das2016-01-191-0/+8
| | | | | | | | | | | | | | | | | | | | | | | In some cases, the max backedge taken count can be more conservative than the exact backedge taken count (for instance, because ScalarEvolution::getRange is not control-flow sensitive whereas computeExitLimitFromICmp can be). In these cases, computeExitLimitFromCond (specifically the bit that deals with `and` and `or` instructions) can create an ExitLimit instance with a `SCEVCouldNotCompute` max backedge count expression, but a computable exact backedge count expression. This violates an implicit SCEV assumption: a computable exact BE count should imply a computable max BE count. This change - Makes the above implicit invariant explicit by adding an assert to ExitLimit's constructor - Changes `computeExitLimitFromCond` to be more robust around conservative max backedge counts llvm-svn: 258184
* [SCEV] Use range-for; NFCSanjoy Das2016-01-191-5/+4
| | | | llvm-svn: 258183
* WebAssembly: mark known failure caused by r258125JF Bastien2016-01-191-0/+3
| | | | | | | The following test program triggers the assertion: https://github.com/gcc-mirror/gcc/blob/master/gcc/testsuite/gcc.c-torture/execute/20030916-1.c llvm-svn: 258182
* [libFuzzer] use std::mt19937 for generating random numbers by default. Fix ↵Kostya Serebryany2016-01-195-8/+43
| | | | | | MyStoll to handle negative values. Use std::any_of instead of std::find_if llvm-svn: 258178
* getParent()->getParent() == getModule() ; NFCSanjay Patel2016-01-191-15/+15
| | | | llvm-svn: 258176
* function names start with a lowercase letter; NFCSanjay Patel2016-01-192-73/+73
| | | | | | | | Note: There are no uses of these functions outside of SimplifyLibCalls, so they could be static functions in that file. llvm-svn: 258172
* fix formatting; NFCSanjay Patel2016-01-191-3/+4
| | | | llvm-svn: 258167
* don't repeat documentation comments in implementation file; NFCSanjay Patel2016-01-191-36/+0
| | | | llvm-svn: 258166
* Move part of an if condition into an assertion. NFC.Manuel Jacob2016-01-191-2/+2
| | | | llvm-svn: 258163
* [AVX512] Adding VPERMT2B and VPERMI2B instruction .Michael Zuckerman2016-01-191-12/+22
| | | | | | Differential Revision: http://reviews.llvm.org/D16297 llvm-svn: 258161
* Revert 258157Philip Reames2016-01-192-8/+0
| | | | | | According the build bots, clang is using the Registry class somewhere as well. Will reapply with appropriate clang changes at a later point. llvm-svn: 258159
* [LibCallSimplifier] use instruction-level fast-math-flags to shrink callsSanjay Patel2016-01-191-19/+2
| | | | | | | This is a continuation of adding FMF to call instructions: http://reviews.llvm.org/rL255555 llvm-svn: 258158
* [GC] Registry initialization and linkage interactionsPhilip Reames2016-01-192-0/+8
| | | | | | | | | | | | | | The Registry class constructs a linked list of nodes whose storage is inside static variables and nodes are added via static initializers. The trick is that those static initializers are in both the LLVM code base, and some random plugin that might get loaded in at runtime. The existing code tries to use C++ templates and their ODR rules to get a single definition of the registry for each type, but, experimentally, this doesn't quite work as designed. (Well, the entire structure doesn't. It might not actually be an ODR problem.) Previously, when I tried moving the GCStrategy class (along with it's registry) from CodeGen to IR, I ran into a problem where asking the GCStrategyRegistry a question would return inconsistent results depending on whether you asked from CodeGen (where the static initializers still were) or Transforms. My best guess is that this is a result of either a) an order of initialization error, or b) we ended up with two copies of the registry being created. I remember at the time having convinced myself it was probably (b), but I don't have any of my notes around from that investigation any more. See http://reviews.llvm.org/rL226311 for the original patch in question. This patch tries to remove the possibility of (b) above. (a) was already fixed in change 258109. Differential Revision: http://reviews.llvm.org/D16170 llvm-svn: 258157
* [PGO] Create the profile data variable before the loweringRong Xu2016-01-191-3/+12
| | | | | | | | | | This patch creates the profile data variable before lowering the profile intrinsics. Reviewers: davidxl, silvas Differential Revision: http://reviews.llvm.org/D16015 llvm-svn: 258156
* [LibCallSimplifier] use instruction-level fast-math-flags to transform ↵Sanjay Patel2016-01-191-4/+3
| | | | | | | | | | | | | | | | | | pow(x, [small integer]) calls This is a continuation of adding FMF to call instructions: http://reviews.llvm.org/rL255555 As with D15937, the intent of the patch is to preserve the current behavior of the transform except that we use the pow call's 'fast' attribute as a trigger rather than a function-level attribute. The TODO comment notes a potential follow-on patch that would propagate FMF to the new instructions. Differential Revision: http://reviews.llvm.org/D16122 llvm-svn: 258153
* NFC Test Commit whitespace change in a commentChris Ray2016-01-191-1/+1
| | | | | | Changed whitespace so comments line up. llvm-svn: 258151
* Use larger write sizes for MCFillFragment.Rafael Espindola2016-01-191-3/+14
| | | | | | | This brings the pr26208 testcase down to 3.2 seconds. Not checking it in since it does create a 4GB .o file. llvm-svn: 258149
* remove outdated comment; NFCSanjay Patel2016-01-191-4/+0
| | | | llvm-svn: 258147
* [opaque pointer types] [NFC] GEP: replace get(Pointer)ElementType uses with ↵Eduard Burtescu2016-01-1920-79/+72
| | | | | | | | | | | | | | | | | | get{Source,Result}ElementType. Summary: GEPOperator: provide getResultElementType alongside getSourceElementType. This is made possible by adding a result element type field to GetElementPtrConstantExpr, which GetElementPtrInst already has. GEP: replace get(Pointer)ElementType uses with get{Source,Result}ElementType. Reviewers: mjacob, dblaikie Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D16275 llvm-svn: 258145
* [AVX512] Adding VPERMB instructionMichael Zuckerman2016-01-192-2/+19
| | | | | | Differential Revision: http://reviews.llvm.org/D16294 llvm-svn: 258144
* [WebAssembly] Rematerialize constants rather than hold them live in registers.Dan Gohman2016-01-194-40/+77
| | | | | | | | | Teach the register stackifier to rematerialize constants that have multiple uses instead of leaving them in registers. In the WebAssembly encoding, it's the same code size to materialize most constants as it is to read a value from a register. llvm-svn: 258142
* Simplify MCFillFragment.Rafael Espindola2016-01-195-19/+8
| | | | | | | | | The value size was always 1 or 0, so we don't need to store it. In a no asserts build this takes the testcase of pr26208 from 11 to 10 seconds. llvm-svn: 258141
* Typo.Chad Rosier2016-01-191-1/+1
| | | | llvm-svn: 258137
* [X86] Add support for "xlat m8"Marina Yatsina2016-01-191-0/+11
| | | | | | | | According to x86 spec "xlat m8" is a legal instruction and it is equivalent to "xlatb". Differential Revision: http://reviews.llvm.org/D15150 llvm-svn: 258135
* Fix constant folding of constant vector GEPs with undef or null as pointer ↵Manuel Jacob2016-01-191-9/+13
| | | | | | | | | | | | argument. Reviewers: eddyb Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D16321 llvm-svn: 258134
* [X86] Adding support for missing variations of X86 string related instructionsMarina Yatsina2016-01-192-75/+203
| | | | | | | | | | | | | | | The following are legal according to X86 spec: ins mem, DX outs DX, mem lods mem stos mem scas mem cmps mem, mem movs mem, mem Differential Revision: http://reviews.llvm.org/D14827 llvm-svn: 258132
* Rename Variable `Ptr` to `PtrTy`. NFC.Manuel Jacob2016-01-191-6/+6
| | | | llvm-svn: 258130
* Handle 64 bit offsets.Rafael Espindola2016-01-191-1/+1
| | | | | | | | | No tests since llvm-mc takes 14 seconds on it. I will try to improve it and then test. Part of pr26208. llvm-svn: 258129
* [WebAssembly] Disable some WebAssembly-specific optimization passes at -O0.Dan Gohman2016-01-191-3/+6
| | | | llvm-svn: 258127
* [WebAssembly] Use the templated form of MachineFunction::getSubtarget(). NFC.Dan Gohman2016-01-192-5/+4
| | | | llvm-svn: 258126
* [WebAssembly] Re-enable loop idiom recognition for memcpy et al.Dan Gohman2016-01-191-3/+1
| | | | llvm-svn: 258125
* [X86][AVX512]fix dag & add intrinsics for fixupimmAsaf Badouh2016-01-195-17/+179
| | | | | | | | cover all width and types (pd/ps/sd/ss) of fixupimm instruction and inrtinsics Differential Revision: http://reviews.llvm.org/D16313 llvm-svn: 258124
* [GC] Lower vectors-of-pointers directly by defaultPhilip Reames2016-01-191-1/+1
| | | | | | This commit changes the default on our lowering of vectors-of-pointers from splitting in RS4GC to reporting them in the final stack map. All of the changes to do so are already in place and tested. Assuming no problems are unearthed in the next week, we will be deleting the old code entirely next Monday. llvm-svn: 258111
* [GC] Consolidate all built in GCs into a single file [NFC]Philip Reames2016-01-198-252/+145
| | | | | | Combine a bunch of small files into a single, still rather small, file. The primary purpose of this is to get all of the static initializers into a single file so as to have a well defined order of initialization. llvm-svn: 258109
* parseArch() supports more variations of arch names for PowerPC buildsKelvin Li2016-01-191-4/+4
| | | | llvm-svn: 258103
* Add a change accidentally left out from r258100Tobias Edler von Koch2016-01-181-0/+0
| | | | | | Also remove an executable bit introduced by r258083. llvm-svn: 258101
* [LTO] Restore original linkage of externals prior to splittingTobias Edler von Koch2016-01-181-1/+41
| | | | | | | | | | | | | | | | | | | | | | | Summary: This is a companion patch for http://reviews.llvm.org/D16124. Internalized symbols increase the size of strongly-connected components in SCC-based module splitting and thus reduce the amount of parallelism. This patch records the original linkage of non-local symbols prior to internalization and then restores it just before splitting/CodeGen. This is also useful for cases where the linker requires symbols to remain external, for instance, so they can be placed according to linker script rules. It's currently under its own flag (-restore-globals) but should eventually share a common flag with D16124. Reviewers: joker.eph, pcc Subscribers: slarin, llvm-commits, joker.eph Differential Revision: http://reviews.llvm.org/D16229 llvm-svn: 258100
* Fixed MSVC warning that not all control paths return a value.Simon Pilgrim2016-01-181-0/+1
| | | | llvm-svn: 258099
* AMDGPU: Reduce 64-bit SRAsMatt Arsenault2016-01-182-0/+62
| | | | llvm-svn: 258096
* AMDGPU: Split 64-bit and of constant upMatt Arsenault2016-01-183-2/+70
| | | | | | | | | | This breaks the tests that were meant for testing 64-bit inline immediates, so move those to shl where they won't be broken up. This should be repeated for the other related bit ops. llvm-svn: 258095
* [AArch64] Remove unused arguments. NFC.Chad Rosier2016-01-181-7/+7
| | | | | | AFAICT, these have been unused since the initial backend import. llvm-svn: 258093
* AMDGPU: Generalize shl combineMatt Arsenault2016-01-181-8/+14
| | | | | | | Reduce 64-bit shl with constant > 32. We already special cased this for the == 32 case, but this also works for any >= 32 constant. llvm-svn: 258092
* AMDGPU: Reduce 64-bit lshr by constant to 32-bitMatt Arsenault2016-01-182-0/+45
| | | | | | 64-bit shifts are very slow on some subtargets. llvm-svn: 258090
* [LAA] Include function name in debug outputAdam Nemet2016-01-181-3/+4
| | | | llvm-svn: 258088
* AMDGPU: Add subtarget feature for instruction ratesMatt Arsenault2016-01-184-9/+23
| | | | llvm-svn: 258085
* Fixed MSVC Win64 warning of implicit conversion of 32-bit shift to 64-bits.Simon Pilgrim2016-01-181-1/+1
| | | | llvm-svn: 258084
* Add to the split module utility an SCC based method which allows not to ↵Sergei Larin2016-01-182-21/+191
| | | | | | | | | | | | | | | | | | globalize any local variables. Summary: Currently llvm::SplitModule as the first step globalizes all local objects, which might not be desirable in some scenarios. This change adds a new flag to llvm::SplitModule that uses SCC approach to search for a balanced partition without the need to externalize symbols. Such partition might not be possible or fully balanced for a given number of partitions, and is a function of the module properties (global/local dependencies within the module). Joint development Tobias Edler von Koch (tobias@codeaurora.org) and Sergei Larin (slarin@codeaurora.org) Subscribers: llvm-commits, joker.eph Differential Revision: http://reviews.llvm.org/D16124 llvm-svn: 258083
* [X86][AVX2] Broadcast subvectorsSimon Pilgrim2016-01-181-3/+21
| | | | | | | | AVX2 can only broadcast from the zero'th element of a vector, but if the broadcastable element is the zero'th element of a 128-bit subvector its advantageous to extract the subvector, broadcast from that and avoid the loading of shuffle mask data that would be needed for VPERMPS/VPERMD. The only exception being when the source type is 4f64 or 4i64 which can directly use the immediate shuffle VPERMPD/VPERMQ directly. Differential Revision: http://reviews.llvm.org/D16050 llvm-svn: 258081
OpenPOWER on IntegriCloud