summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [AArch64][InstructionSelector] Refactor the handling of copies.Quentin Colombet2016-10-122-31/+90
| | | | | | | | | | | | | | Although Copies are not specific to preISel, we still have to assign them a proper register class. However, given they are not constrained to anything we do not have to handle the source register at the copy. It will be properly mapped when reaching the related definition. In the process, the handlong of G_ANYEXT is slightly modified as those end up being selected as copy. The difference is that when register size do not match on both sides, we need to insert SUBREG_TO_REG operation, otherwise the post RA copy expansion will not be happy! llvm-svn: 283972
* [AArch64][InstructionSelector] Fix typos in the related mir file. NFC.Quentin Colombet2016-10-121-3/+4
| | | | llvm-svn: 283971
* [AArch64][MachineLegalizer] Mark more bitcasts as legal.Quentin Colombet2016-10-122-0/+13
| | | | | | Those are copies, we do not have to do any legalization action for them. llvm-svn: 283970
* Add an arm64 unit test where the function saves x20 in theJason Molenda2016-10-121-1/+101
| | | | | | | | | prologue, then loads & stores x20 on the stack from a different location in the middle of the function, and then restores the reg in the epilogue. The saving/restoring of x20 in the middle of the function should be ignored. llvm-svn: 283969
* [lit] Run unit tests as part of lit test suiteBrian Gesiak2016-10-122-108/+112
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: The Python file `utils/lit/lit/ShUtil.py` contains: 1. Logic used by lit itself 2. A set of unit tests for that logic, which can be run by invoking `python utils/lit/lit/ShUtil.py` Move these unit tests to a `tests/unit` subdirectory of lit, and run the tests as part of lit's test suite. This ensures that, should the lit test suite be included in LLVM's own regression test suite, these unit tests will also be run. (Instructions on how to run lit's test suite can be found in `utils/lit/README.txt`.) Reviewers: ddunbar, echristo, delcypher, beanz Subscribers: mehdi_amini, llvm-commits Differential Revision: https://reviews.llvm.org/D25411 llvm-svn: 283968
* Memory-SSA cleanup of clobbers interface, NFCSebastian Pop2016-10-123-23/+30
| | | | | | | | | This implements the cleanup that Danny asked to commit separately from the previous fix to GVN-hoist in https://reviews.llvm.org/D25476#inline-219818 Tested with ninja check on x86_64-linux. llvm-svn: 283967
* Add a simple frameless function test case to the arm64 unwind unit testsJason Molenda2016-10-122-11/+107
| | | | | | with return statements in the body of the function. llvm-svn: 283966
* GVN-hoist: fix store past load dependence analysis (PR30216, PR30499)Sebastian Pop2016-10-125-81/+174
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a refreshed version of a patch that was reverted: it fixes the problems reported in both PR30216 and PR30499, and contains all the test-cases from both bugs. To hoist stores past loads, we used to search for potential conflicting loads on the hoisting path by following a MemorySSA def-def link from the store to be hoisted to the previous defining memory access, and from there we followed the def-use chains to all the uses that occur on the hoisting path. The problem is that the def-def link may point to a store that does not alias with the store to be hoisted, and so the loads that are walked may not alias with the store to be hoisted, and even as in the testcase of PR30216, the loads that may alias with the store to be hoisted are not visited. The current patch visits all loads on the path from the store to be hoisted to the hoisting position and uses the alias analysis to ask whether the store may alias the load. I was not able to use the MemorySSA functionality to ask for whether load and store are clobbered: I'm not sure which function to call, so I used a call to AA->isNoAlias(). Store past store is still working as before using a MemorySSA query: I added an extra test to pr30216.ll to make sure store past store does not regress. Tested on x86_64-linux with check and a test-suite run. Differential Revision: https://reviews.llvm.org/D25476 llvm-svn: 283965
* Added REQUIRED triples to the test that fails on some ARM buildbots.Artem Belevich2016-10-121-0/+3
| | | | llvm-svn: 283964
* [CUDA] Make touching a kernel from a __host__ __device__ function a deferred ↵Justin Lebar2016-10-124-21/+38
| | | | | | | | | | | | | | | | error. Previously, this was an immediate, don't pass go, don't collect $200 error. But this precludes us from writing code like __host__ __device__ void launch_kernel() { kernel<<<...>>>(); } Such code isn't wrong, following our notions of right and wrong in CUDA, unless it's codegen'ed. llvm-svn: 283963
* Fix libc++abi test config after recent libc++ changesEric Fiselier2016-10-121-0/+4
| | | | llvm-svn: 283962
* [PPCMIPeephole] Fix splat eliminationTim Shen2016-10-122-3/+29
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: In PPCMIPeephole, when we see two splat instructions, we can't simply do the following transformation: B = Splat A C = Splat B => C = Splat A because B may still be used between these two instructions. Instead, we should make the second Splat a PPC::COPY and let later passes decide whether to remove it or not: B = Splat A C = Splat B => B = Splat A C = COPY B Fixes PR30663. Reviewers: echristo, iteratee, kbarton, nemanjai Subscribers: mehdi_amini, llvm-commits Differential Revision: https://reviews.llvm.org/D25493 llvm-svn: 283961
* Add mork workarounds for running the test suite against libstdc++Eric Fiselier2016-10-123-2/+10
| | | | llvm-svn: 283960
* This test now passes.Jim Ingham2016-10-121-2/+0
| | | | llvm-svn: 283959
* Make it easier to run the libc++ test suite against libstdc++Eric Fiselier2016-10-123-19/+60
| | | | llvm-svn: 283958
* This was skipped due to a clang PR that has been fixed.Jim Ingham2016-10-111-1/+0
| | | | llvm-svn: 283957
* Added a radar on our end for this test's failure.Jim Ingham2016-10-111-1/+1
| | | | llvm-svn: 283956
* Fix _recalloc redefinition link error in ASan RTLReid Kleckner2016-10-111-0/+6
| | | | | | | | Fixes PR30329 Patch by Hans-Bernhard Broeker! llvm-svn: 283955
* Fix the stage2 MSVC 2013 build with less constexpr in RNGReid Kleckner2016-10-111-2/+13
| | | | llvm-svn: 283954
* [DAG] Fix crash in build_vector -> vector_shuffle combineMichael Kuperstein2016-10-112-0/+50
| | | | | | | | Fixes a crash in the build_vector -> vector_shuffle combine when the first vector input is twice as wide as the output, and the second input vector is even wider. llvm-svn: 283953
* GlobalISel: support same-size casts on AArch64.Tim Northover2016-10-113-0/+106
| | | | | | | Mostly Ahmed's work again, I'm just sprucing things up slightly before committing. llvm-svn: 283952
* Fix LWG2683 - filesystem::copy() should always clear the user-provided ↵Eric Fiselier2016-10-113-12/+30
| | | | | | error_code llvm-svn: 283951
* Revert - When optimizing for size, enable loop rerolling by defaultMike Edwards2016-10-112-15/+1
| | | | | | This reverts r283685 as it is causing test failures on Green Dragon. llvm-svn: 283950
* [Profile] Update testcase for r283948 (NFC)Vedant Kumar2016-10-111-1/+1
| | | | | | | | | | | Old: "__DATA,__llvm_prf_data" New: "__DATA,__llvm_prf_data,regular,live_support" This should fix the following bot failure: http://bb.pgr.jp/builders/cmake-clang-x86_64-linux/builds/55158 llvm-svn: 283949
* [profile] Add test for dead_strip+live_support functionalityVedant Kumar2016-10-112-2/+69
| | | | | | Differential Revision: https://reviews.llvm.org/D25457 llvm-svn: 283948
* [InstrProf] Add support for dead_strip+live_support functionalityVedant Kumar2016-10-114-6/+7
| | | | | | | | | | | | | | | | | | | On Darwin, marking a section as "regular,live_support" means that a symbol in the section should only be kept live if it has a reference to something that is live. Otherwise, the linker is free to dead-strip it. Turn this functionality on for the __llvm_prf_data section. This means that counters and data associated with dead functions will be removed from dead-stripped binaries. This will result in smaller profiles and binaries, and should speed up profile collection. Tested with check-profile, llvm-lit test/tools/llvm-{cov,profdata}, and check-llvm. Differential Revision: https://reviews.llvm.org/D25456 llvm-svn: 283947
* [libFuzzer] refactoring to speed things up, NFCKostya Serebryany2016-10-112-35/+20
| | | | llvm-svn: 283946
* Remove extraneous 'const' in the implementation of is_move_assignable. ↵Marshall Clow2016-10-111-1/+1
| | | | | | Howard pleads temporary insanity about this. Discussed at http://stackoverflow.com/questions/39986185 llvm-svn: 283945
* Fix std::pair on FreeBSDEric Fiselier2016-10-112-37/+122
| | | | | | | | | | | | | | | | Summary: FreeBSD ships an old ABI for std::pair which requires that it have non-trivial copy/move constructors. Currently the non-trivial copy/move is achieved by providing explicit definitions of the constructors. This is problematic because it means the constructors don't SFINAE properly. In order to SFINAE copy/move constructors they have to be explicitly defaulted and hense non-trivial. This patch attempts to provide SFINAE'ing copy/move constructors for std::pair while still making them non-trivial. It does this by adding a base class with a non-trivial copy constructor and then allowing pair's constructors to be generated by the compiler. This also allows the constructors to be constexpr. Reviewers: emaste, theraven, rsmith, dim Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D25389 llvm-svn: 283944
* Module: for ObjectiveC, be consistent when checking hidden decls.Manman Ren2016-10-116-2/+34
| | | | | | | | | In MatchAllMethodDeclarations, when checking a hidden decl, be sure to allow hidden when searching for methods. rdar://28699972 llvm-svn: 283943
* Re-land "[Thumb] Save/restore high registers in Thumb1 pro/epilogues"Reid Kleckner2016-10-116-36/+627
| | | | | | | | | Reverts r283938 to reinstate r283867 with a fix. The original change had an ArrayRef referring to a destroyed temporary initializer list. Use plain C arrays instead. llvm-svn: 283942
* Fix incorrect exception handling behavior in the uninitialized algorithmsEric Fiselier2016-10-116-63/+114
| | | | llvm-svn: 283941
* Add the radar number on our end.Jim Ingham2016-10-111-1/+1
| | | | llvm-svn: 283940
* Next set of additional error checks for invalid Mach-O files for theKevin Enderby2016-10-114-0/+42
| | | | | | | | | load commands that uses the MachO::linker_option_command type but not used in llvm libObject code but used in llvm tool code. This includes just LC_LINKER_OPTION load command. llvm-svn: 283939
* Revert "[Thumb] Save/restore high registers in Thumb1 pro/epilogues"Reid Kleckner2016-10-116-621/+36
| | | | | | | | | | | | | | | | | | This reverts r283867. This appears to be an infinite loop: while (HiRegToSave != AllHighRegs.end() && CopyReg != AllCopyRegs.end()) { if (HiRegsToSave.count(*HiRegToSave)) { ... CopyReg = findNextOrderedReg(++CopyReg, CopyRegs, AllCopyRegs.end()); HiRegToSave = findNextOrderedReg(++HiRegToSave, HiRegsToSave, AllHighRegs.end()); } } llvm-svn: 283938
* GlobalISel: support selection of extend operations.Tim Northover2016-10-112-0/+203
| | | | | | Patch mostly by Ahmed Bougaca. llvm-svn: 283937
* MIRParser: allow types on registers with a RegBank.Tim Northover2016-10-111-1/+2
| | | | | | This fixes some GlobalISel regression tests. llvm-svn: 283936
* Re-apply "Disallow ArrayRef assignment from temporaries."Jordan Rose2016-10-112-0/+44
| | | | | | | | | | This re-applies r283798, disabled in r283803, with the static_assert tests disabled under MSVC. The deleted functions still seem to catch mistakes in MSVC, so it's not a significant loss. Part of rdar://problem/16375365 llvm-svn: 283935
* Codegen: Tail-duplicate during placement.Kyle Butt2016-10-1125-95/+952
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The tail duplication pass uses an assumed layout when making duplication decisions. This is fine, but passes up duplication opportunities that may arise when blocks are outlined. Because we want the updated CFG to affect subsequent placement decisions, this change must occur during placement. In order to achieve this goal, TailDuplicationPass is split into a utility class, TailDuplicator, and the pass itself. The pass delegates nearly everything to the TailDuplicator object, except for looping over the blocks in a function. This allows the same code to be used for tail duplication in both places. This change, in concert with outlining optional branches, allows triangle shaped code to perform much better, esepecially when the taken/untaken branches are correlated, as it creates a second spine when the tests are small enough. Issue from previous rollback fixed, and a new test was added for that case as well. Issue was worklist/scheduling/taildup issue in layout. Issue from 2nd rollback fixed, with 2 additional tests. Issue was tail merging/loop info/tail-duplication causing issue with loops that share a header block. Issue with early tail-duplication of blocks that branch to a fallthrough predecessor fixed with test case: tail-dup-branch-to-fallthrough.ll Differential revision: https://reviews.llvm.org/D18226 llvm-svn: 283934
* Swift Calling Convention: Parameters are allowed after theArnold Schwaighofer2016-10-113-20/+8
| | | | | | | | | | | swift_error/swift_context parameter We need to be able to decelare witness functions which append the self type and the self witness tables at the end of the parameter list. rdar://28720996 llvm-svn: 283933
* Pass the end of a component to SwiftAggLowering's enumerateComponents callbackArnold Schwaighofer2016-10-112-2/+2
| | | | | | This is usefull for determining whether components overlap. llvm-svn: 283932
* Fix a test to pacify llvm-clang-lld-x86_64-scei-ps4-windows10pro bot.Rui Ueyama2016-10-111-8/+8
| | | | | | | | | I don't really understand why we get a larger .rodata section only on this bot. I guess it may be picking up a library which contains a .rodata. I removed the specific values since their values are not important for this test case. llvm-svn: 283931
* [x86] add tests for negate boolSanjay Patel2016-10-111-0/+101
| | | | llvm-svn: 283930
* This test now passes.Jim Ingham2016-10-111-1/+0
| | | | llvm-svn: 283929
* Avoid braced initialization for default member initializers for MSVC 2013Reid Kleckner2016-10-112-3/+2
| | | | llvm-svn: 283928
* Silence -Wunused-but-set-variable warningArnold Schwaighofer2016-10-111-0/+1
| | | | llvm-svn: 283927
* Re-submit r283825: Add section header stream to PDB.Rui Ueyama2016-10-116-19/+64
| | | | | | | It was reverted because the change that depends on was reverted. Now it was submitted as r283925, so we can submit this as well. llvm-svn: 283926
* Re-submit r283823: Define DbiStreamBuilder::addDbgStream to add stream.Rui Ueyama2016-10-113-2/+42
| | | | | | | The previous commit was failing because we filled empty slots of the debug stream index with kInvalidStreamIndex. It should've been 0. llvm-svn: 283925
* [sanitizer-coverage] use private linkage for coverage guards, delete old ↵Kostya Serebryany2016-10-112-13/+5
| | | | | | commented-out code. llvm-svn: 283924
* Added a bugreport tracking the failure to get float return valuesJim Ingham2016-10-111-5/+6
| | | | | | on i386. llvm-svn: 283923
OpenPOWER on IntegriCloud