summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Revert r208025, which made buildbots unhappy for unknown reasons.Richard Smith2014-05-064-15/+17
| | | | llvm-svn: 208030
* Fix i128 div/mod on mingw64Reid Kleckner2014-05-062-0/+72
| | | | | | | | | | The Win64 docs are very clear that anything larger than 8 bytes is passed by reference, and GCC MinGW64 honors that for __modti3 and friends. Patch by Jameson Nash! llvm-svn: 208029
* [Support/MemoryBuffer] Rename IsVolatile -> IsVolatileSize and add a comment ↵Argyrios Kyrtzidis2014-05-061-22/+23
| | | | | | about the use case for the new parameter. llvm-svn: 208026
* Add llvm::function_ref (and a couple of uses of it), representing a ↵Richard Smith2014-05-064-17/+15
| | | | | | type-erased reference to a callable object. llvm-svn: 208025
* Include intrin.h before windows.h as a workaround for the x64 self-hostReid Kleckner2014-05-061-0/+1
| | | | | | | | | On x64, windows.h doesn't include intrin.h for intrinsics. It just declares them in the global namespace and uses them, expecting the compiler to lower it as a builtin. We basically need to do this in clang, eventually. llvm-svn: 208023
* [Support/MemoryBuffer] Move the IsVolatile check inside shouldUseMmap() and ↵Argyrios Kyrtzidis2014-05-061-7/+13
| | | | | | | | make sure to zero-initialize the rest of the buffer if we unexpectedly reach end-of-file while reading. llvm-svn: 208021
* Detabify.Nick Lewycky2014-05-061-2/+2
| | | | llvm-svn: 208019
* Improve 'tail' call marking in TRE. A bootstrap of clang goes from 375k ↵Nick Lewycky2014-05-051-73/+241
| | | | | | | | | | calls marked tail in the IR to 470k, however this improvement does not carry into an improvement of the call/jmp ratio on x86. The most common pattern is a tail call + br to a block with nothing but a 'ret'. The number of tail call to loop conversions remains the same (1618 by my count). The new algorithm does a local scan over the use-def chains to identify local "alloca-derived" values, as well as points where the alloca could escape. Then, a visit over the CFG marks blocks as being before or after the allocas have escaped, and annotates the calls accordingly. llvm-svn: 208017
* Walk back commits for unused function parameters - they're still beingEric Christopher2014-05-051-5/+19
| | | | | | used via dragonegg for now. llvm-svn: 208016
* Reapply: Add slp vectorization to LTO passes. The bug it exposed has been ↵Yi Jiang2014-05-051-0/+3
| | | | | | fixed by r207983. <radar://16641956> llvm-svn: 208013
* Remove a now unnecessary function since all calls have one versionEric Christopher2014-05-051-17/+4
| | | | | | and inline it into its caller. llvm-svn: 208012
* Remove a call to std::exit in a library. Make "Help" returnEric Christopher2014-05-051-5/+7
| | | | | | a 0 as a default answer. llvm-svn: 208009
* [Support/MemoryBuffer] Introduce a boolean parameter (false by default) ↵Argyrios Kyrtzidis2014-05-051-18/+32
| | | | | | | | 'IsVolatile' for the open file functions. This provides a hint that the file may be changing often so mmap is avoided. llvm-svn: 208007
* Fix typo.Eric Christopher2014-05-051-1/+1
| | | | llvm-svn: 208006
* R600: Expand i64 ISD:SUBTom Stellard2014-05-051-0/+1
| | | | llvm-svn: 208005
* Remove unused argument from AddFeature.Eric Christopher2014-05-051-3/+2
| | | | llvm-svn: 208002
* Use a range loop.Rafael Espindola2014-05-051-3/+1
| | | | llvm-svn: 207996
* Revert "Optimize shufflevector that copies an i64/f64 and zeros the rest."Filipe Cabecinhas2014-05-051-21/+12
| | | | | | This reverts commit 207992. I misread the phab number on the LGTM. llvm-svn: 207993
* Optimize shufflevector that copies an i64/f64 and zeros the rest.Filipe Cabecinhas2014-05-051-12/+21
| | | | | | | | | | | | | | Summary: Also ran clang-format on the function. The code added is the last else if block. Reviewers: nadav, craig.topper Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D3518 llvm-svn: 207992
* R600/SI: allow 5 more input SGPRs to a shaderMarek Olsak2014-05-051-1/+1
| | | | | | | Our OpenGL driver needs 22 SGPRs (16 user SGPRs + 6 streamout non-user SGPRs). Signed-off-by: Marek Olšák <marek.olsak@amd.com> llvm-svn: 207990
* Always set alignment of vectorized LD/ST in SLP-Vectorizer. ↵Yi Jiang2014-05-051-0/+4
| | | | | | <rdar://problem/16812145> llvm-svn: 207983
* LTO: -internalize sets visibility to defaultDuncan P. N. Exon Smith2014-05-051-0/+3
| | | | | | | | | Visibility is meaningless when the linkage is local. Change `-internalize` to reset the visibility to `default`. <rdar://problem/16141113> llvm-svn: 207979
* Select bdver2 instead of bdver1 if TBM support is present on models < 0x10.Kaelyn Takata2014-05-051-1/+2
| | | | | | | | | | Tested that the right -target-cpu is set in the clang -cc1 command line when running "clang -march=native -E -v - </dev/null" on both an FX-8150 and an FX-8350. Both are family 15h; the FX-8150 (Bulldozer processor) reports a model number of 1, and the FX-8350 (Piledriver processor) reports a model number of 2. llvm-svn: 207973
* [ASan/Win] Fix issue 305 -- don't instrument .CRT initializer/terminator ↵Timur Iskhodzhanov2014-05-051-4/+14
| | | | | | | | | callbacks See https://code.google.com/p/address-sanitizer/issues/detail?id=305 Reviewed at http://reviews.llvm.org/D3607 llvm-svn: 207968
* Trivial simplification. No functionality change.Rafael Espindola2014-05-051-1/+1
| | | | llvm-svn: 207967
* CodeGen: correct memset emittance for WoASaleem Abdulrasool2014-05-041-1/+2
| | | | | | | | Windows on ARM does not conform to AEABI. However, memset would be emitted using the AEABI signature, resulting in inverted parameters. Handle this special case appropriately. llvm-svn: 207943
* MC: support FK_SecRel_4 for Windows on ARMSaleem Abdulrasool2014-05-042-0/+7
| | | | | | | | | Add handling for FK_SecRel_4 (4-byte section relative relocations). These are used by the generation of DWARF debug information (the abbrevations use section relative relocations). This will also be used in generation of CodeView line tables. llvm-svn: 207941
* LoopUnroll: If we're doing partial unrolling, use the PartialThreshold to ↵Benjamin Kramer2014-05-041-3/+6
| | | | | | | | | | | limit unrolling. Otherwise we use the same threshold as for complete unrolling, which is way too high. This made us unroll any loop smaller than 150 instructions by 8 times, but only if someone specified -march=core2 or better, which happens to be the default on darwin. llvm-svn: 207940
* SLPVectorizer: Bring back the insertelement patch (r205965) with fixesArnold Schwaighofer2014-05-041-30/+71
| | | | | | | | | | | | | | | | When can't assume a vectorized tree is rooted in an instruction. The IRBuilder could have constant folded it. When we rebuild the build_vector (the series of InsertElement instructions) use the last original InsertElement instruction. The vectorized tree root is guaranteed to be before it. Also, we can't assume that the n-th InsertElement inserts the n-th element into a vector. This reverts r207746 which reverted the revert of the revert of r205018 or so. Fixes the test case in PR19621. llvm-svn: 207939
* AVX-512: minor change in rndscale intrinsicElena Demikhovsky2014-05-041-2/+11
| | | | llvm-svn: 207937
* [LCG] Add the last (and most complex) of the edge insertion mutationChandler Carruth2014-05-041-0/+119
| | | | | | | | | | | | | operations on the call graph. This one forms a cycle, and while not as complex as removing an internal edge from an SCC, it involves a reasonable amount of work to find all of the nodes newly connected in a cycle. Also somewhat alarming is the worst case complexity here: it might have to walk roughly the entire SCC inverse DAG to insert a single edge. This is carefully documented in the API (I hope). llvm-svn: 207935
* X86: further range-loopify AsmPrinterSaleem Abdulrasool2014-05-041-18/+16
| | | | | | Use more range loops in the X86AsmPrinter. NFC. llvm-svn: 207928
* X86: remove X86COFFMachineModuleInfoSaleem Abdulrasool2014-05-044-82/+0
| | | | | | Remove dead code. This is vestigial after r98384. llvm-svn: 207927
* X86: repair export compatibility with MinGW/cygwinSaleem Abdulrasool2014-05-041-1/+6
| | | | | | | | | | | | | | Both MinGW and cygwin (i686) construct export directives without the global leader prefix. This is mostly due to the fact that they use GNU ld which does not correctly handle the export directive. This apparently has been been broken for a while. However, this was recently reported as being broken by mingwandroid and diorcety of the msys2 project. Remove the global leader prefix if targeting MinGW or cygwin, otherwise, retain the global leader prefix. Add an explicit test for cygwin's behaviour of export directives. llvm-svn: 207926
* X86: refactor export directive generationSaleem Abdulrasool2014-05-042-22/+27
| | | | | | | | | Create a helper function to generate the export directive. This was previously duplicated inline to handle export directives for variables and functions. This also enables the use of range-based iterators for the generation of the directive rather than the traditional loops. NFC. llvm-svn: 207925
* IR: Cleanup AttributeSet::get for AttrBuilderDavid Majnemer2014-05-031-4/+5
| | | | | | | We don't modify the AttrBuilder in AttributeSet::get, make the reference argument const. llvm-svn: 207924
* [TBAA] Fix handling of mixed TBAA (path-aware and non-path-aware TBAA).Juergen Ributzka2014-05-031-2/+7
| | | | | | | | | | | | | | This fix simply ensures that both metadata nodes are path-aware before performing path-aware alias analysis. This issue isn't normally triggered in LLVM, because we perform an autoupgrade of the TBAA metadata to the new format when reading in LL or BC files. This issue only appears when a client creates the IR manually and mixes old and new TBAA metadata format. This fixes <rdar://problem/16760860>. llvm-svn: 207923
* Fix pr19645.Rafael Espindola2014-05-039-53/+47
| | | | | | | | | | | | | | | | The fix itself is fairly simple: move getAccessVariant to MCValue so that we replace the old weak expression evaluation with the far more general EvaluateAsRelocatable. This then requires that EvaluateAsRelocatable stop when it finds a non trivial reference kind. And that in turn requires the ELF writer to look harder for weak references. Last but not least, this found a case where we were being bug by bug compatible with gas and accepting an invalid input. I reported pr19647 to track it. llvm-svn: 207920
* [ARM64] Correctly select ANDWri in FastISel.Joey Gouly2014-05-031-6/+13
| | | | | | http://reviews.llvm.org/D3598 llvm-svn: 207917
* SLPVectorizer: Lazily allocate the map for block numbering.Benjamin Kramer2014-05-032-27/+26
| | | | | | | | There is no point in creating it if we're not going to vectorize anything. Creating the map is expensive as it creates large values. No functionality change. llvm-svn: 207916
* Rename member variable to try to fix the bots.Rafael Espindola2014-05-031-7/+7
| | | | llvm-svn: 207915
* [ELFYAML] Group ELF header falgs to target specific blocks. Handle flagsSimon Atanasyan2014-05-031-36/+45
| | | | | | | | which are corresponding to the current target read from the ELF file. This fix cannot be tested until obj2yaml does not support ELF format. llvm-svn: 207905
* [ELFYAML] Add more SHT_xxx flags to the YAML section type mapping.Simon Atanasyan2014-05-031-0/+17
| | | | llvm-svn: 207904
* Vectorize intrinsic math function calls in SLPVectorizer.Karthik Bhat2014-05-032-143/+22
| | | | | | | This patch adds support to recognize and vectorize intrinsic math functions in SLPVectorizer. Review: http://reviews.llvm.org/D3560 and http://reviews.llvm.org/D3559 llvm-svn: 207901
* Try simplifying LexicalScopes ownership again.David Blaikie2014-05-021-28/+32
| | | | | | | | | | | | | | Committed initially in r207724-r207726 and reverted due to compiler-rt crashes in r207732. Instead, fix this harder with unordered_map and store the LexicalScopes by value in the map. This did necessitate moving the definition of LexicalScope above the definition of LexicalScopes. Let's see how the buildbots/compilers tolerate unordered_map::emplace + std::piecewise_construct + std::forward_as_tuple... llvm-svn: 207876
* Satisfy GCC's urgent need for parentheses around ‘&&’ within ‘||’.Benjamin Kramer2014-05-021-2/+2
| | | | llvm-svn: 207871
* Aliases are always definitions. Delete dead code.Rafael Espindola2014-05-021-6/+2
| | | | llvm-svn: 207869
* Clean up constructor logic and member access for LoopVectorizeHints.Eric Christopher2014-05-021-34/+39
| | | | | | | | | There are public functions that mutate various members as well as another private member already, so make all the members private to avoid the discontinuity and add accessors for the values. Should be no functional change. llvm-svn: 207868
* llvm-cov: Fix handling of line zero appearing in a line tableJustin Bogner2014-05-021-6/+18
| | | | | | | | | | | | | Reading line tables in llvm-cov was pretty broken, but would happen to work as long as no line in the table was 0. It's not clear to me whether a line of zero *should* show up in these tables, but deciding to read a string in the middle of the line table is certainly the wrong thing to do if it does. I've also added some comments, as trying to figure out what this block of code was doing was fairly unpleasant. llvm-svn: 207866
* Teach GlobalDCE how to remove empty global_ctor entries.Nico Weber2014-05-024-158/+204
| | | | | | | | | | | | | | | | | This moves most of GlobalOpt's constructor optimization code out of GlobalOpt into Transforms/Utils/CDtorUtils.{h,cpp}. The public interface is a single function OptimizeGlobalCtorsList() that takes a predicate returning which constructors to remove. GlobalOpt calls this with a function that statically evaluates all constructors, just like it did before. This part of the change is behavior-preserving. Also add a call to this from GlobalDCE with a filter that removes global constructors that contain a "ret" instruction and nothing else – this fixes PR19590. llvm-svn: 207856
OpenPOWER on IntegriCloud