summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [IR] Share implementation for pairs of const and non-const methods using ↵Craig Topper2017-03-274-12/+12
| | | | | | const_cast. NFCI llvm-svn: 298830
* Sort.Rui Ueyama2017-03-271-5/+5
| | | | llvm-svn: 298829
* Simplify. NFC.Rui Ueyama2017-03-271-3/+3
| | | | | | | | This patch calls getAddend on a relocation only when the relocation is RELA. That doesn't really improve runtime performance but should improve readability as the code now matches the function description. llvm-svn: 298828
* [IR] Share implementation of pairs of const and non-const methods in ↵Craig Topper2017-03-272-63/+75
| | | | | | | | | | | | | | | | | | | BasicBlock using the const version instead of the non-const version Summary: During post-commit review of a previous change I made it was pointed out that const casting 'this' is technically a bad practice. This patch re-implements all of the methods in BasicBlock that do this to use the const BasicBlock version and const_cast the return value instead. I think there are still many other classes that do similar things. I may look at more in the future. Reviewers: dblaikie Reviewed By: dblaikie Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D31377 llvm-svn: 298827
* [IR] Make Instruction::isAssociative method inline. Add LLVM_READONLY to the ↵Craig Topper2017-03-262-13/+5
| | | | | | static version. llvm-svn: 298826
* [Target] Remove some code probably copy/pasted from another backend.Davide Italiano2017-03-261-4/+0
| | | | llvm-svn: 298825
* Revert r298742 "[ODRHash] Add error messages for mismatched parameters in ↵Vassil Vassilev2017-03-264-239/+3
| | | | | | | | methods." I failed to revert this in r298816. llvm-svn: 298824
* [MachineScheduler] Reference the correct header.Davide Italiano2017-03-261-1/+1
| | | | llvm-svn: 298823
* [asan] Remove column numbers from test expectations in invalid-pointer-pairs.ccKuba Mracek2017-03-261-3/+3
| | | | | | | | This is failing on some of our internal bots because we're using different symbolizers. It doesn't seem important and we never test for column numbers in any other tests, so let's just remove it. Differential Revision: https://reviews.llvm.org/D30122 llvm-svn: 298822
* Factor out code to add a GOT entry.Rui Ueyama2017-03-261-22/+28
| | | | llvm-svn: 298821
* [tsan] Only Acquire/Release GCD queues if they're not NULLKuba Mracek2017-03-262-8/+32
| | | | | | | | While it's usually a bug to call GCD APIs, such as dispatch_after, with NULL as a queue, this often "somehow" works and TSan should maintain binary compatibility with existing code. This patch makes sure we don't try to call Acquire and Release on NULL queues, and add one such testcase for dispatch_after. Differential Revision: https://reviews.llvm.org/D31355 llvm-svn: 298820
* Fix typo in comment; NFCSanjoy Das2017-03-261-1/+1
| | | | llvm-svn: 298819
* Factor out common code.Rui Ueyama2017-03-261-13/+15
| | | | llvm-svn: 298818
* Remove MIPS-specific code from computeAddend.Rui Ueyama2017-03-261-51/+56
| | | | | | | | | Previously, computeAddend had many parameters but most of them were used only for MIPS. The MIPS ABI is too odd that I don't want to mix it into the regular code path. Splitting the function into non-MIPS and MIPS parts makes the regular code path easy to follow. llvm-svn: 298817
* Revert 298754 and 298742.Vassil Vassilev2017-03-264-151/+129
| | | | | | They broke llvm modules builds and our internal modules infrastructure. llvm-svn: 298816
* Do not use assert to report broken input files.Rui Ueyama2017-03-261-1/+5
| | | | llvm-svn: 298815
* Update comments.Rui Ueyama2017-03-261-1/+4
| | | | llvm-svn: 298814
* Fix signed/unsigned comparison warnings.Simon Pilgrim2017-03-261-1/+1
| | | | llvm-svn: 298813
* [llvm-readobj] Prefer ILT to IAT for reading COFF importsShoaib Meenai2017-03-261-6/+12
| | | | | | | | | | | | | | | | | | | | | | | We're seeing binutils ld produce binaries where the import address table's NameRVA entry is actually a VA instead (i.e. it's already base relocated), which llvm-readobj then chokes on. Both dumpbin and the Windows loader are able to handle these binaries correctly, however, and we can make llvm-readobj handle them correctly too by iterating the import lookup table (which doesn't have a relocated NameRVA) rather than the import address table. The import lookup table and the import address table are supposed to be identical on disk, and prior to r277298 the import lookup table would be used by `llvm-readobj -coff-imports` anyway, so this shouldn't have any functional change (except in the case of our malformed binaries). The import lookup table can apparently be missing when using old Borland linkers, so fall back to the import address table in that case. Resolves PR31766. Differential Revision: https://reviews.llvm.org/D31362 llvm-svn: 298812
* [LoopUnroll] Remap references in peeled iterationSerge Pavlov2017-03-262-4/+66
| | | | | | | | | References in cloned blocks must be remapped prior to dominator calculation. Differential Revision: https://reviews.llvm.org/D31281 llvm-svn: 298811
* [LLDB] OpenBSD supportKamil Rytarowski2017-03-2625-9/+990
| | | | | | | | | | | | | | | | | | | | Summary: Add basic OpenBSD support. This is enough to be able to analyze core dumps for OpenBSD/amd64, OpenBSD/arm, OpenBSD/arm64 and OpenBSD/i386. Note that part of the changes to source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp fix a bug that probably affects other platforms as well. The GetProgramHeaderByIndex() interface use 1-based indices, but in some case when looping over the headers the, the loop starts at 0 and misses the last header. This caused problems on OpenBSD since OpenBSD core dumps have the PT_NOTE segment as the last program header. Reviewers: joerg, labath, krytarowski Reviewed By: krytarowski Subscribers: aemerson, emaste, rengolin, srhines, krytarowski, mgorny, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D31131 llvm-svn: 298810
* tsan: add new mutex annotationsDmitry Vyukov2017-03-2622-113/+651
| | | | | | | | | | | | | | There are several problems with the current annotations (AnnotateRWLockCreate and friends): - they don't fully support deadlock detection (we need a hook _before_ mutex lock) - they don't support insertion of random artificial delays to perturb execution (again we need a hook _before_ mutex lock) - they don't support setting extended mutex attributes like read/write reentrancy (only "linker init" was bolted on) - they don't support setting mutex attributes if a mutex don't have a "constructor" (e.g. static, Java, Go mutexes) - they don't ignore synchronization inside of lock/unlock operations which leads to slowdown and false negatives The new annotations solve of the above problems. See tsan_interface.h for the interface specification and comments. Reviewed in https://reviews.llvm.org/D31093 llvm-svn: 298809
* [IR] Switch to more normal template parameter names ending in `T`Chandler Carruth2017-03-261-10/+10
| | | | | | | | | instead of `Ty`. The `Ty` suffix is much more commonly used for LLVM `Type` variable names, so this seemed like a particularly confusing collision. llvm-svn: 298808
* Fix signed/unsigned comparison warnings.Simon Pilgrim2017-03-261-2/+2
| | | | llvm-svn: 298807
* [X86][SSE] Add computeKnownBitsForTargetNode support for (V)PSLL/(V)PSRL ↵Simon Pilgrim2017-03-262-2/+26
| | | | | | instructions llvm-svn: 298806
* [X86][AVX512F] Fix reg class for VMOVSSZrr/VMOVSSZrrk and VMOVSDZrr/VMOVSDZrrkSimon Pilgrim2017-03-262-17/+16
| | | | | | | | | | Fixed -verify-machineinstrs errors in fast-isel-select-sse.ll (one of many in PR27481) The VMOVSSZrr/VMOVSSZrrk and VMOVSDZrr/VMOVSDZrrk instructions were assuming both source registers were V128X when the second is actually supposed to be FR32X/FR64X Differential Revision: https://reviews.llvm.org/D31200 llvm-svn: 298805
* Fix MSVC signed/unsigned comparison warnings.Simon Pilgrim2017-03-261-6/+9
| | | | llvm-svn: 298804
* Regenerate testSimon Pilgrim2017-03-261-1/+1
| | | | llvm-svn: 298803
* Regenerate testSimon Pilgrim2017-03-261-7/+7
| | | | | | The CHECK-DAG aren't necessary and get in the way of automated checks llvm-svn: 298802
* Regenerate tests to remove duplicated checksSimon Pilgrim2017-03-261-241/+118
| | | | llvm-svn: 298801
* [GlobalISel][X86] support G_FRAME_INDEX instruction selection.Igor Breger2017-03-267-5/+110
| | | | | | | | | | | | | | | Summary: Support G_FRAME_INDEX instruction selection. Reviewers: zvi, rovka, ab, qcolombet Reviewed By: ab Subscribers: llvm-commits, dberris, kristof.beyls, eladcohen, guyblank Differential Revision: https://reviews.llvm.org/D30980 llvm-svn: 298800
* Split the SimplifyCFG pass into two variants.Joerg Sonnenberger2017-03-2617-39/+114
| | | | | | | | | | | | | | | | | | | | | | | The first variant contains all current transformations except transforming switches into lookup tables. The second variant contains all current transformations. The switch-to-lookup-table conversion results in code that is more difficult to analyze and optimize by other passes. Most importantly, it can inhibit Dead Code Elimination. As such it is often beneficial to only apply this transformation very late. A common example is inlining, which can often result in range restrictions for the switch expression. Changes in execution time according to LNT: SingleSource/Benchmarks/Misc/fp-convert +3.03% MultiSource/Benchmarks/ASC_Sequoia/CrystalMk/CrystalMk -11.20% MultiSource/Benchmarks/Olden/perimeter/perimeter -10.43% and a couple of smaller changes. For perimeter it also results 2.6% a smaller binary. Differential Revision: https://reviews.llvm.org/D30333 llvm-svn: 298799
* Add check for BSD when setting LIB_NAMES for GNU ldAndrew Wilkins2017-03-261-1/+1
| | | | | | | | Patch by Koop Mast and Alex Arslan! Differential Revision: https://reviews.llvm.org/D28215 llvm-svn: 298798
* Sort. NFC.Rui Ueyama2017-03-262-94/+95
| | | | llvm-svn: 298797
* Remove a redundant local variable.Rui Ueyama2017-03-262-3/+7
| | | | llvm-svn: 298796
* Add a comment.Rui Ueyama2017-03-261-0/+1
| | | | llvm-svn: 298795
* Inline a function that is used only once.Rui Ueyama2017-03-261-6/+5
| | | | llvm-svn: 298794
* De-template a few functions in which ELFT is not needed.Rui Ueyama2017-03-261-32/+31
| | | | llvm-svn: 298793
* Add comments and return early.Rui Ueyama2017-03-261-9/+19
| | | | llvm-svn: 298792
* [IR] Make SwitchInst::CaseIt almost a normal iterator.Chandler Carruth2017-03-266-50/+58
| | | | | | | | | | | | | | | | | | | | | | | | | This moves it to the iterator facade utilities giving it full random access semantics, etc. It can also now be used with standard algorithms like std::all_of and std::any_of and range adaptors like llvm::reverse. Also make the semantics of iterating match what every other iterator uses and forbid decrementing past the begin iterator. This was used as a hacky way to work around iterator invalidation. However, every instance trying to do this failed to actually avoid touching invalid iterators despite the clear documentation that the removed and all subsequent iterators become invalid including the end iterator. So I've added a return of the next iterator to removeCase and rewritten the loops that were doing this to correctly follow the iterator pattern of either incremneting or removing and assigning fresh values to the iterator and the end. In one case we were trying to go backwards to make this cleaner but it doesn't actually work. I've made that code match the code we use everywhere else to remove cases as we iterate. This changes the order of cases in one test output and I moved that test to CHECK-DAG so it wouldn't care -- the order isn't semantically meaningful anyways. llvm-svn: 298791
* Remove unused parameter.Rui Ueyama2017-03-261-8/+8
| | | | llvm-svn: 298790
* Remove redundant local variables.Rui Ueyama2017-03-261-5/+3
| | | | llvm-svn: 298789
* Remove a parameter from adjustExpr. NFC.Rui Ueyama2017-03-261-8/+4
| | | | llvm-svn: 298788
* Inline a small lambda.Rui Ueyama2017-03-261-9/+8
| | | | llvm-svn: 298787
* Rename C -> Sec and RI -> Rel.Rui Ueyama2017-03-261-26/+26
| | | | | | | C is short for Chunk, but we are no longer using that term. RI is probably short for relocation iterator, but this is not an interator. llvm-svn: 298786
* Simplify relocation offset adjustment.Rui Ueyama2017-03-261-25/+50
| | | | | | | | Previously, relocation offsets are recalculated for .eh_frame sections inside the main loop, and that messed up the main loop. This patch separates that logic into a dedicated class. llvm-svn: 298785
* [coroutines] Add codegen for await and yield expressionsGor Nishanov2017-03-266-9/+420
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Details: Emit suspend expression which roughly looks like: auto && x = CommonExpr(); if (!x.await_ready()) { llvm_coro_save(); x.await_suspend(...); (*) llvm_coro_suspend(); (**) } x.await_resume(); where the result of the entire expression is the result of x.await_resume() (*) If x.await_suspend return type is bool, it allows to veto a suspend: if (x.await_suspend(...)) llvm_coro_suspend(); (**) llvm_coro_suspend() encodes three possible continuations as a switch instruction: %where-to = call i8 @llvm.coro.suspend(...) switch i8 %where-to, label %coro.ret [ ; jump to epilogue to suspend i8 0, label %yield.ready ; go here when resumed i8 1, label %yield.cleanup ; go here when destroyed ] llvm-svn: 298784
* [X86] Pull out repeated ScalarValueSizeInBits code. NFCI.Simon Pilgrim2017-03-251-6/+4
| | | | llvm-svn: 298783
* [X86][SSE] Combine (VSRLI (VSRAI X, Y), (NumSignBits-1)) -> (VSRLI X, ↵Simon Pilgrim2017-03-252-2/+9
| | | | | | | | | | (NumSignBits-1)) Part 3 of 3. Differential Revision: https://reviews.llvm.org/D31347 llvm-svn: 298782
* Change the default attributes for llvm.prefetch to inaccessiblemem_or_argmemonlyEric Christopher2017-03-258-25/+65
| | | | | | | | so that we can perform some optimizations across it. Fixes PR32365 llvm-svn: 298781
OpenPOWER on IntegriCloud