summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Update llvm-readobj -coff-resources to display tree structure.Eric Beckmann2017-05-089-28/+357
| | | | | | | | | | | | Summary: Continue making updates to llvm-readobj to display resource sections. This is necessary for testing the up and coming cvtres tool. Reviewers: zturner Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D32609 llvm-svn: 302399
* [SCEV] Have getRangeForAffineARHelper take StartRange by const reference to ↵Craig Topper2017-05-081-1/+1
| | | | | | avoid a copy in many of the cases. llvm-svn: 302398
* Revert "Hopefully one last commit to fix this patch, addresses string reference"Eric Beckmann2017-05-0810-358/+28
| | | | | | | | | | | | | | | | | | | | | Summary: This reverts commit 56beec1b1cfc6d263e5eddb7efff06117c0724d2. Revert "Quick fix to D32609, it seems .o files are not transferred in all cases." This reverts commit 7652eecd29cfdeeab7f76f687586607a99ff4e36. Revert "Update llvm-readobj -coff-resources to display tree structure." This reverts commit 422b62c4d302cfc92401418c2acd165056081ed7. Reviewers: zturner Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D32958 llvm-svn: 302397
* Hopefully one last commit to fix this patch, addresses string referenceEric Beckmann2017-05-083-11/+12
| | | | | | issues. llvm-svn: 302395
* Quick fix to D32609, it seems .o files are not transferred in all cases.Eric Beckmann2017-05-072-1/+1
| | | | | | Therefore the .o file in question is renamed to .obj.coff. llvm-svn: 302388
* Update llvm-readobj -coff-resources to display tree structure.Eric Beckmann2017-05-079-28/+357
| | | | | | | | | | | | Summary: Continue making updates to llvm-readobj to display resource sections. This is necessary for testing the up and coming cvtres tool. Reviewers: zturner Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D32609 llvm-svn: 302386
* [ConstantRange][SimplifyCFG] Add a helper method to allow SimplifyCFG to ↵Craig Topper2017-05-073-1/+15
| | | | | | | | | | determine if a ConstantRange has more than 8 elements without requiring an allocation if the ConstantRange is 64-bits wide. Previously SimplifyCFG used getSetSize which returns an APInt that is 1 bit wider than the ConstantRange's bit width. In the reasonably common case that the ConstantRange is 64-bits wide, this requires returning a 65-bit APInt. APInt's can only store 64-bits without a memory allocation so this is inefficient. The new method takes the 8 as an input and tells if the range contains more than that many elements without requiring any wider math. llvm-svn: 302385
* [ConstantRange] Remove 'Of' from name of ↵Craig Topper2017-05-072-10/+10
| | | | | | ConstantRange::isSizeStrictlySmallerThanOf so that it reads better. NFC llvm-svn: 302383
* [X86][AVX1] Improve 256-bit vector costs for integer unary intrinsics.Simon Pilgrim2017-05-073-40/+40
| | | | | | Account for subvector extraction/insertion, helps prevent the vectorizers from selecting 256-bit vectors that will have to be split anyhow on AVX1 targets. llvm-svn: 302378
* [Orc] Remove trailing whitespace.Lang Hames2017-05-071-2/+2
| | | | llvm-svn: 302377
* [InstSimplify] add tests for PR32949 miscompile; NFCSanjay Patel2017-05-071-2/+27
| | | | llvm-svn: 302374
* InstructionSimplify: Relanding r301766Zvi Rackover2017-05-072-20/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Re-applying r301766 with a fix to a typo and a regression test. The log message for r301766 was: ================================================================================== InstructionSimplify: Canonicalize shuffle operands. NFC-ish. Summary: Apply canonicalization rules: 1. Input vectors with no elements selected from can be replaced with undef. 2. If only one input vector is constant it shall be the second one. This allows constant-folding to cover more ad-hoc simplifications that were in place and avoid duplication for RHS and LHS checks. There are more rules we may want to add in the future when we see a justification. e.g. mask elements that select undef elements can be replaced with undef. ================================================================================== Reviewers: spatel, RKSimon Reviewed By: spatel Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D32863 llvm-svn: 302373
* Make llvm-rtdlyd -check preserve automatic address mappings made by RuntimeDyld.Lang Hames2017-05-074-13/+32
| | | | | | | | | | | | | | | | | Currently llvm-rtdyld in -check mode will map sections to back-to-back 4k aligned slabs starting at 0x1000. Automatically remapping sections by default is helpful because it quickly exposes relocation bugs due to use of local addresses rather than load addresses (these would silently pass if the load address was not remapped). These mappings can be explicitly overridden on a per-section basis using llvm-rtdlyd's -map-section option. This patch extends this scheme to also preserve any mappings made by RuntimeDyld itself. Preserving RuntimeDyld's automatic mappings allows us to write test cases to verify that these automatic mappings have been applied. This will allow the fix in https://reviews.llvm.org/D32899 to be tested with llvm-rtdyld -check. llvm-svn: 302372
* [SCEV] Use move semantics in ScalarEvolution::setRangeCraig Topper2017-05-072-6/+6
| | | | | | | | | | | | | | Summary: This makes setRange take ConstantRange by rvalue reference since most callers were passing an unnamed temporary ConstantRange. We can then move that ConstantRange into the DenseMap caches. For the callers that weren't passing a temporary, I've added std::move to to the local variable being passed. Reviewers: sanjoy, mzolotukhin, efriedma Reviewed By: sanjoy Subscribers: takuto.ikuta, llvm-commits Differential Revision: https://reviews.llvm.org/D32943 llvm-svn: 302371
* [InstSimplify] use ConstantRange to simplify or-of-icmpsSanjay Patel2017-05-076-522/+176
| | | | | | | | | | | | | We can simplify (or (icmp X, C1), (icmp X, C2)) to 'true' or one of the icmps in many cases. I had to check some of these with Alive to prove to myself it's right, but everything seems to check out. Eg, the deleted code in instcombine was completely ignoring predicates with mismatched signedness. This is a follow-up to: https://reviews.llvm.org/rL301260 https://reviews.llvm.org/D32143 llvm-svn: 302370
* [Kaleidoscope] toy.cpp use after move fixPeter Szecsi2017-05-076-6/+6
| | | | | | | | | | The variable Proto is moved at the beginning of the codegen() function. According to the comment above, the pointed object should be used due the reference P. Differential Revision: https://reviews.llvm.org/D32939 llvm-svn: 302369
* Remove unnecessary const_castSanjoy Das2017-05-072-8/+5
| | | | llvm-svn: 302368
* Use array_pod_sort instead of std::sortSanjoy Das2017-05-071-1/+1
| | | | llvm-svn: 302367
* Fix comment.Lang Hames2017-05-071-1/+1
| | | | llvm-svn: 302366
* COFF: add ARM64 relocation typesSaleem Abdulrasool2017-05-061-0/+20
| | | | | | | Add the ARM64 COFF relocation types. This will be needed to add support for the AArch64 Windows object file emission support. llvm-svn: 302365
* [X86][AVX512] Relax assertion and just exit combine for unsupported types ↵Simon Pilgrim2017-05-062-1/+57
| | | | | | (PR32907) llvm-svn: 302361
* [X86][AVX512] Move v2i64/v4i64 VPABS lowering to tablegenSimon Pilgrim2017-05-063-14/+44
| | | | | | Extend NoVLX targets to use the 512-bit versions llvm-svn: 302359
* [X86] Reduce code for setting operations actions by merging into loops ↵Simon Pilgrim2017-05-061-37/+21
| | | | | | across multiple types/ops. NFCI. llvm-svn: 302357
* [NVPTX] Add support for ISD::ABS loweringSimon Pilgrim2017-05-062-7826/+7826
| | | | | | | | Use the ISD::ABS opcode directly Differential Revision: https://reviews.llvm.org/D32944 llvm-svn: 302356
* [X86][SSE] Break register dependencies on v16i8/v8i16 BUILD_VECTOR on SSE41Simon Pilgrim2017-05-063-65/+38
| | | | | | rL294581 broke unnecessary register dependencies on partial v16i8/v8i16 BUILD_VECTORs, but on SSE41 we (currently) use insertion for full BUILD_VECTORs as well. By allowing full insertion to occur on SSE41 targets we can break register dependencies here as well. llvm-svn: 302355
* [Analysis] Print out unreachable loopsBrian Gesiak2017-05-061-4/+12
| | | | | | | | | | | | | | | | | | | | | | | Summary: When writing a loop pass I made a mistake and hit the assertion "Unreachable block in loop". Later, I hit an assertion when I called `BasicBlock::eraseFromParent()` incorrectly: "Use still stuck around after Def is destroyed". This latter assertion, however, printed out exactly which value is being deleted and what uses remain, which helped me debug the issue. To help people debugging their loop passes in the future, print out exactly which basic block is unreachable in a loop. Reviewers: sanjoy, hfinkel, mehdi_amini Reviewed By: mehdi_amini Subscribers: mzolotukhin Differential Revision: https://reviews.llvm.org/D32878 llvm-svn: 302354
* [X86][AVX2] Add scheduling latency/throughput tests for some AVX2 instructionsSimon Pilgrim2017-05-061-0/+338
| | | | | | Many more to come... llvm-svn: 302338
* [DAGCombiner] If ISD::ABS is legal/custom, use it directly instead of ↵Simon Pilgrim2017-05-062-4/+7
| | | | | | | | | | canonicalizing first. Remove an extra canonicalization step if ISD::ABS is going to be used anyway. Updated x86 abs combine to check that we are lowering from both canonicalizations. llvm-svn: 302337
* [SCEV] Remove extra APInt copies from getRangeForAffineARHelper.Craig Topper2017-05-061-13/+10
| | | | | | This changes one parameter to be a const APInt& since we only read from it. Use std::move on local APInts once they are no longer needed so we can reuse their allocations. Lastly, use operator+=(uint64_t) instead of adding 1 to an APInt twice creating a new APInt each time. llvm-svn: 302335
* [SCEV] Use std::move to avoid some APInt copies.Craig Topper2017-05-061-5/+5
| | | | llvm-svn: 302334
* [SCEV] Use APInt's uint64_t operations instead of creating a temporary APInt ↵Craig Topper2017-05-061-3/+2
| | | | | | to hold 1. llvm-svn: 302333
* [SCEV] Avoid a couple APInt copies by capturing by reference since the ↵Craig Topper2017-05-061-2/+2
| | | | | | method returns a reference. llvm-svn: 302332
* [LazyValueInfo] Avoid unnecessary copies of ConstantRangesCraig Topper2017-05-061-7/+7
| | | | | | | | | | | | | | | | | | | | | Summary: ConstantRange contains two APInts which can allocate memory if their width is larger than 64-bits. So we shouldn't copy it when we can avoid it. This changes LVILatticeVal::getConstantRange() to return its internal ConstantRange by reference. This allows many places that just need a ConstantRange reference to avoid making a copy. Several places now capture the return value of getConstantRange() by reference so they can call methods on it that don't need a new object. Lastly it adds std::move in one place to capture to move a local ConstantRange into an LVILatticeVal. Reviewers: reames, dberlin, sanjoy, anna Reviewed By: reames Subscribers: grandinj, llvm-commits Differential Revision: https://reviews.llvm.org/D32884 llvm-svn: 302331
* Note addition of NetBSD support in googletestKamil Rytarowski2017-05-061-1/+1
| | | | | | Recreated patch for __NetBSD__ has been pushed upstream to Google. llvm-svn: 302329
* [sanitizer-coverage] implement -fsanitize-coverage=no-prune,... instead of a ↵Kostya Serebryany2017-05-052-4/+8
| | | | | | hidden -mllvm flag. llvm part. llvm-svn: 302319
* [RegisterBankInfo] Uniquely allocate instruction mapping.Quentin Colombet2017-05-0512-134/+213
| | | | | | | | | | This is a step toward having statically allocated instruciton mapping. We are going to tablegen them eventually, so let us reflect that in the API. NFC. llvm-svn: 302316
* [BitVector] Improve the description of the BitVector::clear to say it ↵Craig Topper2017-05-051-1/+1
| | | | | | removes the bits rather than clearing since clearing could be interpreted as just zeroing. NFC llvm-svn: 302315
* Fix spelling error in command line option description. NFCCraig Topper2017-05-051-2/+2
| | | | llvm-svn: 302311
* [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC).Eugene Zelenko2017-05-0513-152/+182
| | | | llvm-svn: 302310
* Override invalidate of ProfileSummaryInfo to return false.Easwaran Raman2017-05-051-0/+12
| | | | | | Differential revision: https://reviews.llvm.org/D32775 llvm-svn: 302308
* [Hexagon] Disable predicated calls by defaultKrzysztof Parzyszek2017-05-053-1/+18
| | | | llvm-svn: 302307
* [Hexagon] Remove C6 and C7 as separate registersKrzysztof Parzyszek2017-05-053-20/+6
| | | | | | | These are M0 and M1. Removing duplicated registers reduces the number of explicit register aliasing. llvm-svn: 302306
* [RDF] Remove covered parts of reached uses for phi and use in same blockKrzysztof Parzyszek2017-05-054-13/+74
| | | | llvm-svn: 302305
* ARM: Compute MaxCallFrame size earlyMatthias Braun2017-05-0510-12/+89
| | | | | | | | | | | | | | | | | This exposes a method in MachineFrameInfo that calculates MaxCallFrameSize and calls it after instruction selection in the ARM target. This avoids ARMBaseRegisterInfo::canRealignStack()/ARMFrameLowering::hasReservedCallFrame() giving different answers in early/late phases of codegen. The testcase shows a particular nasty example result of that where we would fail to properly align an alloca. Differential Revision: https://reviews.llvm.org/D32622 llvm-svn: 302303
* [CodeView] Reserve TypeDatabase records up front.Zachary Turner2017-05-056-9/+14
| | | | | | | | | | | | | Most of the time we know exactly how many type records we have in a list, and we want to use the visitor to deserialize them into actual records in a database. Previously we were just using push_back() every time without reserving the space up front in the vector. This is obviously terrible from a performance standpoint, and it's not uncommon to have PDB files with half a million type records, where the performance degredation was quite noticeable. llvm-svn: 302302
* Add missing target triple to testMatthias Braun2017-05-051-1/+1
| | | | llvm-svn: 302301
* Fix -Wreorder warning.Zachary Turner2017-05-051-2/+4
| | | | llvm-svn: 302294
* [StreamArray] Pipe the Offset through the constructor.Zachary Turner2017-05-051-3/+3
| | | | | | | | When randomly accessing an element by offset, we weren't passing the offset through so if you called .offset() it would return a value of 0. llvm-svn: 302292
* [AMDGPU] In the new waitcnt insertion pass, use getHeader Kannan Narayanan2017-05-052-5/+151
| | | | | | | | instead of getTopBlock to find the loop header. Differential Revision: https://reviews.llvm.org/D32831 llvm-svn: 302290
* MIParser/MIRPrinter: Compute block successors if not explicitely specifiedMatthias Braun2017-05-0533-255/+203
| | | | | | | | | | | | | | | | | - MIParser: If the successor list is not specified successors will be added based on basic block operands in the block and possible fallthrough. - MIRPrinter: Adds a new `simplify-mir` option, with that option set: Skip printing of block successor lists in cases where the parser is guaranteed to reconstruct it. This means we still print the list if some successor cannot be determined (happens for example for jump tables), if the successor order changes or branch probabilities being unequal. Differential Revision: https://reviews.llvm.org/D31262 llvm-svn: 302289
OpenPOWER on IntegriCloud