summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* use range-based for-loops; NFCISanjay Patel2015-05-211-6/+2
| | | | llvm-svn: 237917
* Fix warning on builds without asserts.Rafael Espindola2015-05-211-0/+1
| | | | llvm-svn: 237915
* use range-based for-loopSanjay Patel2015-05-211-3/+2
| | | | llvm-svn: 237914
* Avoid unnecessary section switching. NFC.Rafael Espindola2015-05-213-5/+4
| | | | llvm-svn: 237913
* Remove yet another method of creating begin and end symbol for sections.Rafael Espindola2015-05-216-49/+36
| | | | | | I missed this one when first unifying how we handle begin and end symbols. llvm-svn: 237912
* don't repeat function names in comments; NFCSanjay Patel2015-05-211-158/+134
| | | | llvm-svn: 237911
* Size enum so we can store it as 16-bits and avoid casts. NFCPete Cooper2015-05-211-3/+3
| | | | llvm-svn: 237910
* Use existing helper for adding a section. NFC.Rafael Espindola2015-05-212-4/+2
| | | | llvm-svn: 237909
* use range-based for-loop; NFCISanjay Patel2015-05-211-4/+1
| | | | llvm-svn: 237908
* std::sort must be called with a strict weak ordering.Manuel Klimek2015-05-211-4/+4
| | | | | | Found by a debug enabled stl. llvm-svn: 237906
* AVX-512: Enabled SSE intrinsics on AVX-512.Elena Demikhovsky2015-05-215-16/+38
| | | | | | | | | Predicate UseAVX depricates pattern selection on AVX-512. This predicate is necessary for DAG selection to select EVEX form. But mapping SSE intrinsics to AVX-512 instructions is not ready yet. So I replaced UseAVX with HasAVX for intrinsics patterns. llvm-svn: 237903
* Make Triple::parseARMArch use ARMTargetParserRenato Golin2015-05-214-50/+174
| | | | | | | | | | | Simplifying Triple::parseARMArch, leaving all the parsing to ARMTargetParser. This commit also adds AArch64 detection to ARMTargetParser canonicalization, and a two RedHat arch names (v{6,7}hl, meaning hard-float / little-endian). Adding enough unit tests to cover the basics. Clang checks fine. llvm-svn: 237902
* [RewriteStatepointsForGC] Fix debug assertion during derivable pointer ↵Igor Laevsky2015-05-211-6/+6
| | | | | | | | | | rematerialization Correct assertion would be that there is no other uses from chain we are currently cloning. It is ok to have other uses of values not from this chain. Differential Revision: http://reviews.llvm.org/D9882 llvm-svn: 237899
* Fix memory-dereferenceable.ll testArtur Pilipenko2015-05-211-3/+3
| | | | | | | | | | One of the testcases introduced by D9365 had incorrect !dereferenceable metadata on load. It must fail but it doesn't due to incorrect order of CHECK/CHECK-NOT commands in test. Fixed both. Reviewed By: sanjoy Differential Revision: http://reviews.llvm.org/D9877 llvm-svn: 237897
* Test commit. Fix typo in MemDerefPrinter.cpp comment.Artur Pilipenko2015-05-211-1/+1
| | | | llvm-svn: 237893
* Remove unnecessary FIXME commentRenato Golin2015-05-211-2/+0
| | | | | | It has been fixed by commit r237797. llvm-svn: 237890
* Fixed unused variable warning in non-assert builds from rL237885Simon Pilgrim2015-05-211-2/+1
| | | | llvm-svn: 237889
* [X86][SSE] Improve support for 128-bit vector sign extensionSimon Pilgrim2015-05-217-300/+298
| | | | | | | | | | This patch improves support for sign extension of the lower lanes of vectors of integers by making use of the SSE41 pmovsx* sign extension instructions where possible, and optimizing the sign extension by shifts on pre-SSE41 targets (avoiding the use of i64 arithmetic shifts which require scalarization). It converts SIGN_EXTEND nodes to SIGN_EXTEND_VECTOR_INREG where necessary, that more closely matches the pmovsx* instruction than the default approach of using SIGN_EXTEND_INREG which splits the operation (into an ANY_EXTEND lowered to a shuffle followed by shifts) making instruction matching difficult during lowering. Necessary support for SIGN_EXTEND_VECTOR_INREG has been added to the DAGCombiner. Differential Revision: http://reviews.llvm.org/D9848 llvm-svn: 237885
* [mips] [IAS] Add 2 missing CHECK directives for fixups in mips-expansions.s.Toma Tabacu2015-05-211-2/+2
| | | | llvm-svn: 237884
* [TableGen] Resolve complex def names inside multiclassesHal Finkel2015-05-213-6/+86
| | | | | | | | | We had not been trying hard enough to resolve def names inside multiclasses that had complex concatenations, etc. Now we'll try harder. Patch by Amaury Sechet! llvm-svn: 237877
* AsmPrinter: Compute absolute label difference directlyDuncan P. N. Exon Smith2015-05-214-0/+47
| | | | | | | | | | | | | | | | | | Create a low-overhead path for `EmitLabelDifference()` that emits a emits an absolute number when (1) the output is an object stream and (2) the two symbols are in the same data fragment. This drops memory usage on Mach-O from 975 MB down to 919 MB (5.8%). The only call is when `!doesDwarfUseRelocationsAcrossSections()` -- i.e., on Mach-O -- since otherwise an absolute offset from the start of the section needs a relocation. (`EmitLabelDifference()` is cheaper on ELF anyway, since it creates 1 fewer temp symbol, and it gets called far less often. It's not clear to me if this is even a bottleneck there.) (I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`; see r236629 for details.) llvm-svn: 237876
* MC: Initialize MCSymbolData::Offset directlyDuncan P. N. Exon Smith2015-05-211-1/+3
| | | | | | | Try to fix miscompile after r237873. Looks like this union initialization isn't legal (or at least not supported). llvm-svn: 237875
* [MemCpyOpt] Do move the memset, but look at its dest's dependencies.Ahmed Bougacha2015-05-212-2/+29
| | | | | | | | | In effect a partial revert of r237858, which was a dumb shortcut. Looking at the dependencies of the destination should be the proper fix: if the new memset would depend on anything other than itself, the transformation isn't correct. llvm-svn: 237874
* MC: Simplify MCSymbolData initialization and remove MCSymbol pointerDuncan P. N. Exon Smith2015-05-213-42/+17
| | | | | | | | | | | | | | | | | | | Finally remove the `MCSymbolData::Symbol` pointer. It was still being used to track whether `MCSymbolData` had been initialized, but this is better tracked by the bitfield in `MCSymbol`. The only caller of `MCSymbolData::initialize()` was `MCAssembler`, which (other than `Symbol`) passed in all-0 values. Replace all that indirection with a default constructor. The main point is a cleanup (and there's more cleanup to do), but there are also some small memory savings. I measured ~989 MB down to ~975 MB, cutting a little over 1% off the top of `llc`. (I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`; see r236629 for details.) llvm-svn: 237873
* Document the CoreCLR GC StrategySwaroop Sridhar2015-05-211-0/+23
| | | | | | | Add notead about the CoreCLR GC Strategy to the Garbage Collection document. llvm-svn: 237869
* MC: Make MCSymbolData::Symbol privateDuncan P. N. Exon Smith2015-05-211-2/+0
| | | | | | | | | Make the back-pointer from `MCSymbolData` to `MCSymbol` private, preparing to remove the back pointer entirely. I've already updated all the users, although for now it's still used to indicate whether `MCSymbol::Data` has been initialized. llvm-svn: 237868
* MC: Remove last use of MCSymbolData::getSymbol(), NFCDuncan P. N. Exon Smith2015-05-211-3/+3
| | | | | | | | | | | | | | Remove the last use of `MCSymbolData::getSymbol()`. There's some *really* hairy stuff going on in `MachObjectWriter::WriteNList()` that I want to come back to. In particular, it updates `Symbol` to point at its aliasee (if any), but leaves `Data` behind, and it's not clear whether everything makes sense there. For now I've left the logic unchanged by adding `OrigSymbol` and moving the FIXME from r237750 up a bit higher. I've filed PR23598 to track looking into this. llvm-svn: 237867
* [MemCpyOpt] Pass Instruction to IRBuilder, no need for NextNode. NFC.Ahmed Bougacha2015-05-211-2/+2
| | | | | | We're erasing the instructions anyway. llvm-svn: 237861
* [opaque pointer type] Pass explicit pointee type in another case of GEP ↵David Blaikie2015-05-211-1/+1
| | | | | | constant folding llvm-svn: 237860
* Fix build errorAndrew Kaylor2015-05-201-1/+1
| | | | llvm-svn: 237859
* [MemCpyOpt] Don't move the memset when optimizing memset+memcpy.Ahmed Bougacha2015-05-202-7/+7
| | | | | | | | | | | | Fixes PR23599, another miscompile introduced by r235232: when there is another dependency on the destination of the created memset (i.e., the part of the original destination that the memcpy doesn't depend on) between the memcpy and the original memset, we would insert the created memset after the memcpy, and thus after the other dependency. Instead, insert the created memset right after the old one. llvm-svn: 237858
* Fix build warningAndrew Kaylor2015-05-201-1/+1
| | | | llvm-svn: 237855
* [WinEH] C++ EH state numbering fixesAndrew Kaylor2015-05-209-167/+426
| | | | | | Differential Revision: http://reviews.llvm.org/D9787 llvm-svn: 237854
* [WinEH] Store pointers to the LSDA in the exception registration objectReid Kleckner2015-05-206-13/+115
| | | | | | | We aren't yet emitting the LSDA yet, so this will still fail to assemble. llvm-svn: 237852
* Don't generate comments in the DebugLocStream unless required. NFC.Pete Cooper2015-05-203-10/+22
| | | | | | | | | | | | The ByteStreamer here wasn't taking account of whether the asm streamer was text based and verbose. Only with that combination should we emit comments. This change makes sure that we only actually convert a Twine to a string using Twine::str() if we need the comment. This saves about 10000 small allocations on a test case involving the verify-use_list-order bitcode going through llc with debug info. Note, this is NFC as the comments would ultimately never be emitted unless required. Reviewed by Duncan Exon Smith and David Blaikie. llvm-svn: 237851
* Revert "Add bool to DebugLocDwarfExpression to control emitting comments."Pete Cooper2015-05-204-17/+6
| | | | | | | | This reverts commit 0037b6bcbc874aa1b93d7ce3ad8dba3753ee2d9d (r237827). David Blaikie suggested some alternatives to this which are better. Reverting to apply a better solution later. llvm-svn: 237849
* Revert r237828 "[X86] Remove unused node after morphing it from shr to and."Hans Wennborg2015-05-202-18/+0
| | | | | | This caused assertions during DAG combine: PR23601. llvm-svn: 237843
* [doc] Update Lexicon with C++ unwinder acronymsNick Kledzik2015-05-201-0/+21
| | | | llvm-svn: 237840
* [opaque pointer type] Pass explicit type to Load instruction creation in ↵David Blaikie2015-05-205-13/+24
| | | | | | AutoUpgrade llvm-svn: 237838
* [Target/ARM] Only enable OptimizeBarrierPass at -O1 and above.Davide Italiano2015-05-203-2/+20
| | | | | | | | | | Ideally this is going to be and LLVM IR pass (shared, among others with AArch64), but for the time being just enable it if consumers ask us for optimization and not unconditionally. Discussed with Tim Northover on IRC. llvm-svn: 237837
* [lib/Fuzzer] more docsKostya Serebryany2015-05-201-2/+25
| | | | llvm-svn: 237836
* AsmParser: Require a terminating null character when creating memory buffer.Alex Lorenz2015-05-206-3/+76
| | | | | | | | | | | | | | | This commit modifies the memory buffer creation in the AsmParser library so that it requires a terminating null character. The LLLexer in the AsmParser library checks for EOF only when it sees a null character, thus it would be best to require it when creating a memory buffer so that the memory buffer constructor can verify that a terminating null character is indeed present. Reviewers: Duncan P. N. Exon Smith, Matthias Braun Differential Revision: http://reviews.llvm.org/D9883 llvm-svn: 237833
* [opaque pointer type] LoadInst: assert that the explicit type matches the ↵David Blaikie2015-05-201-0/+1
| | | | | | implicit one llvm-svn: 237830
* MC: Remove most remaining uses of MCSymbolData::getSymbol(), NFCDuncan P. N. Exon Smith2015-05-202-11/+9
| | | | | | | Remove most remaining calls to `MCSymbolData::getSymbol()`, instead using the already available `MCSymbol` directly. llvm-svn: 237829
* [X86] Remove unused node after morphing it from shr to and.Benjamin Kramer2015-05-202-0/+18
| | | | | | | | | In some cases it won't get cleaned up properly leading to crashes downstream. PR23353. Based on a patch by Davide Italiano. llvm-svn: 237828
* Add bool to DebugLocDwarfExpression to control emitting comments.Pete Cooper2015-05-204-6/+17
| | | | | | | | | | | DebugLocDwarfExpression::EmitOp was creating temporary strings by concatenating Twine's. When emitting to object files, these comments are thrown away. This commit adds a boolean to the constructor of the DwarfExpression to control whether it will actually emit any comments. This prevents it from even generating the temporary comments which would have been thrown away anyway. llvm-svn: 237827
* MC: Stop using MCSymbolData::getSymbol() in WinCOFF, NFCDuncan P. N. Exon Smith2015-05-201-26/+23
| | | | | | Move APIs over from `MCSymbolData` to `MCSymbol`. llvm-svn: 237826
* Use a SmallString buffer instead of a std::string for debug info path ↵Pete Cooper2015-05-201-1/+3
| | | | | | | | | | | | lookup. NFC. This code appends the filename to the directory then looks that up in a StringMap. We should be using the existing Twine::toStringRef method instead of Twine::str() as most times we'll succeed in the lookup. Its possible that we should also consider allowing StringMap to lookup a key using a Twine in addition to a StringRef but that would complicate the code with little known benefit above and beyond this change. This saves 170k temporary allocations when running llc on the verify_use_list_order bitcode with debug info for x86. llvm-svn: 237823
* DAGCombiner: Continue combining if FoldConstantArithmetic() fails.Matthias Braun2015-05-202-74/+106
| | | | | | | | | | | | DAG.FoldConstantArithmetic() can fail even though both operands are Constants if OpaqueConstants are involved. Continue trying other combine possibilities in tis case. Differential Revision: http://reviews.llvm.org/D6946 Somewhat related to PR21801 / rdar://19211454 llvm-svn: 237822
* Reapply r237539 with a fix for the Chromium build.James Molloy2015-05-207-9/+184
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure if we're truncating a constant that would then be sign extended that the sign extension of the truncated constant is the same as the original constant. > Canonicalize min/max expressions correctly. > > This patch introduces a canonical form for min/max idioms where one operand > is extended or truncated. This often happens when the other operand is a > constant. For example: > > %1 = icmp slt i32 %a, i32 0 > %2 = sext i32 %a to i64 > %3 = select i1 %1, i64 %2, i64 0 > > Would now be canonicalized into: > > %1 = icmp slt i32 %a, i32 0 > %2 = select i1 %1, i32 %a, i32 0 > %3 = sext i32 %2 to i64 > > This builds upon a patch posted by David Majenemer > (https://www.marc.info/?l=llvm-commits&m=143008038714141&w=2). That pass > passively stopped instcombine from ruining canonical patterns. This > patch additionally actively makes instcombine canonicalize too. > > Canonicalization of expressions involving a change in type from int->fp > or fp->int are not yet implemented. llvm-svn: 237821
OpenPOWER on IntegriCloud