summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [PM] Port GCOVProfiler pass to the new pass managerXinliang David Li2016-06-0511-1/+79
| | | | llvm-svn: 271823
* [PM] code refactoring /NFCXinliang David Li2016-06-053-74/+84
| | | | llvm-svn: 271822
* Disable the use of std::call_once on PowerPC due to an apparent bug inChandler Carruth2016-06-051-1/+2
| | | | | | | | | | | | | | | | libstdc++ (or in compilers, or somewhere, I can't track it down) that causes unittests that use INITIALIZE_PASS to crash. The analysis I've been able to do is that inside libstdc++'s implementation of std::call_once, it uses pthread_once, and when that returns an error code it throws std::system_error which then eventually calls std::terminate. Hopefully some of the folks who work on PPC can try to sort out what's going on here. Until then, they'll have to use the fallback implementation. llvm-svn: 271821
* Attempt to fix non-determinism in test.Davide Italiano2016-06-051-0/+1
| | | | | | | Otherwise it could just use a leftover a.out from some other test. llvm-svn: 271820
* Threading.h: Update \param. [-Wdocumentation]NAKAMURA Takumi2016-06-051-1/+1
| | | | llvm-svn: 271819
* check-clang: LTO, aka libLTO.so, was redundant here, since llvm-lto depends ↵NAKAMURA Takumi2016-06-051-4/+0
| | | | | | on it. llvm-svn: 271818
* [InstCombine] less 'CI' confusion; NFCSanjay Patel2016-06-051-26/+26
| | | | | | | | | Change the name of the ICmpInst to 'ICmp' and the Constant (was a ConstantInt) to 'C', so that it's hopefully clearer that 'CI' refers to CastInst in this context. While we're scrubbing, fix the documentation comment and use 'auto' with 'dyn_cast'. llvm-svn: 271817
* [SimplifyCFG] Don't kill empty cleanuppads with multiple usesDavid Majnemer2016-06-042-0/+29
| | | | | | | | | | | | | | | | | A basic block could contain: %cp = cleanuppad [] cleanupret from %cp unwind to caller This basic block is empty and is thus a candidate for removal. However, there can be other uses of %cp outside of this basic block. This is only possible in unreachable blocks. Make our transform more correct by checking that the pad has a single user before removing the BB. This fixes PR28005. llvm-svn: 271816
* Implement gd to ie relaxation for aarch64.Rafael Espindola2016-06-046-1/+91
| | | | llvm-svn: 271815
* Use adjustRelaxExpr for tls relaxations too.Rafael Espindola2016-06-044-30/+28
| | | | | | | This remove some EM_386 specific code from InputSection.cpp and opens the way for more relaxations. llvm-svn: 271814
* Rename TlsGdToLeSkip.Rafael Espindola2016-06-043-4/+4
| | | | | | It will also be used for GT_TO_IE relaxations. llvm-svn: 271813
* Rename adjustRelaxGotExpr.Rafael Espindola2016-06-043-9/+9
| | | | | | It will be used for more than just gots. llvm-svn: 271812
* [DebugInfo, PDB] Use sparse bitfields for the name mapDavid Majnemer2016-06-041-21/+12
| | | | | | | The name map might not be densely packed on disk. Using a sparse map will save memory in such situations. llvm-svn: 271811
* [InstCombine] allow vector constants for cast+icmp foldSanjay Patel2016-06-043-9/+13
| | | | | | | This is step 1 of unknown towards fixing PR28001: https://llvm.org/bugs/show_bug.cgi?id=28001 llvm-svn: 271810
* [X86][XOP] Added VPERMIL2PD/VPERMIL2PS shuffle mask comment decodingSimon Pilgrim2016-06-045-5/+198
| | | | llvm-svn: 271809
* [InstCombine] add test for missing vector optimizationSanjay Patel2016-06-041-2/+15
| | | | llvm-svn: 271808
* clean-up; NFCSanjay Patel2016-06-041-4/+3
| | | | llvm-svn: 271807
* [InstCombine] add test for missing vector optimizationSanjay Patel2016-06-041-2/+16
| | | | llvm-svn: 271806
* [InstCombine] minimize test case and use FileCheckSanjay Patel2016-06-041-27/+13
| | | | llvm-svn: 271805
* fix formatting, punctuation; NFCSanjay Patel2016-06-041-5/+3
| | | | llvm-svn: 271804
* [Analysis] Enabled BITREVERSE as a vectorizable intrinsicSimon Pilgrim2016-06-042-288/+634
| | | | | | Allows XOP to vectorize BITREVERSE - other targets will follow as their costmodels improve. llvm-svn: 271803
* [X86] Add the VR128L/H and VR256L/H to the list of vector register classes ↵Craig Topper2016-06-041-1/+5
| | | | | | for inline asm constraints. Also fix the comment on the function. llvm-svn: 271802
* Add PIE magic for NetBSD. Add tests for the correct flags forJoerg Sonnenberger2016-06-042-9/+46
| | | | | | non-shared, PIE and shared output mode. llvm-svn: 271801
* [LPM] Reinstate r271781 which reinstated r271652 to replace theChandler Carruth2016-06-045-55/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CALL_ONCE_... macro in the legacy pass manager with the new llvm::call_once facility. Nothing changed sicne the last attempt in r271781 which I reverted in r271788. At least one of the failures I saw was spurious, and I want to make sure the other failures are real before I work around them -- they appeared to only effect ppc64le and ppc64be. Original commit message of r271781: ---- [LPM] Reinstate r271652 to replace the CALL_ONCE_... macro in the legacy pass manager with the new llvm::call_once facility. This reverts commit r271657 and re-applies r271652 with a fix to actually work with arguments. In the original version, we just ended up directly calling std::call_once via ADL because of the std::once_flag argument. The llvm::call_once never worked with arguments. Now, llvm::call_once is a variadic template that perfectly forwards everything. As a part of this it had to move to the header and we use a generic functor rather than an explict function pointer. It would be nice to use std::invoke here but we don't have it yet. That means pointer to members won't work here, but that seems a tolerable compromise. I've also tested this by forcing the fallback path, so hopefully it sticks this time. ---- Original commit message of r271652: ---- [LPM] Replace the CALL_ONCE_... macro in the legacy pass manager with the new llvm::call_once facility. This facility matches the standard APIs and when the platform supports it actually directly uses the standard provided functionality. This is both more efficient on some platforms and much more TSan friendly. The only remaining user of the cas_flag and home-rolled atomics is the fallback implementation of call_once. I have a patch that removes them entirely, but it needs a Windows patch to land first. This alone substantially cleans up the macros for the legacy pass manager, and should subsume some of the work Mehdi was doing to clear the path for TSan testing of ThinLTO, a really important step to have reliable upstream testing of ThinLTO in all forms. ---- llvm-svn: 271800
* Add missing REQUIRES.Rafael Espindola2016-06-041-0/+1
| | | | llvm-svn: 271799
* Fix implicit plt creation on aarch64.Rafael Espindola2016-06-045-1/+37
| | | | | | We were not handling page relative relocations. llvm-svn: 271798
* X86: enable TLS on Windows itaniumSaleem Abdulrasool2016-06-042-0/+31
| | | | | | | Windows itanium is nearly identical to windows-msvc (MS ABI for C, itanium for C++). Enable the TLS support for the target similar to the MSVC model. llvm-svn: 271797
* [X86][AVX2] Fix v16i16 SHL lowering (PR27730)Simon Pilgrim2016-06-049-63/+63
| | | | | | | | The AVX2 v16i16 shift lowering works by unpacking to 2 x v8i32, performing the shift and then truncating the result. The unpacking is used to place the values in the upper 16-bits so that we can correctly sign-extend for SRA shifts. Unfortunately we weren't ensuring that the lower 16-bits were zero to ensure that SHL correctly shifts in zero bits. llvm-svn: 271796
* [AVX512] Remove 512-bit andnot tests from the avx512vl test file.Craig Topper2016-06-041-36/+0
| | | | llvm-svn: 271795
* Don't call memmove when there's nothing to move. Fixes PR#27978.Marshall Clow2016-06-041-1/+3
| | | | llvm-svn: 271794
* [AsmPrinter, CodeView] There are some more ways of getting wchar_tDavid Majnemer2016-06-041-3/+5
| | | | | | | | | C++ has a builtin type called wchar_t. Clang also provides a type called __wchar_t in C mode. In C mode, wchar_t can be a typedef to unsigned short. llvm-svn: 271793
* [CodeView] Fix a busted assert in TypeTableBuilder::writeClassDavid Majnemer2016-06-041-1/+1
| | | | | | It was checking for Union when it should have checked for Interface. llvm-svn: 271792
* [CodeView] Validate the vftable offsetDavid Majnemer2016-06-041-1/+10
| | | | llvm-svn: 271791
* [TypeStreamMerger] visitUnknownMember was supposed to be visitUnknownTypeDavid Majnemer2016-06-041-2/+3
| | | | llvm-svn: 271790
* [InstCombine][MMX] Extend SimplifyDemandedUseBits MOVMSK support to MMXSimon Pilgrim2016-06-042-3/+29
| | | | | | | | Add the MMX implementation to the SimplifyDemandedUseBits SSE/AVX MOVMSK support added in D19614 Requires a minor tweak as llvm.x86.mmx.pmovmskb takes a x86_mmx argument - so we have to be explicit about the implied v8i8 vector type. llvm-svn: 271789
* [LPM] Revert r271781 which was a re-commit of r271652.Chandler Carruth2016-06-045-52/+55
| | | | | | | | | | | | There appears to be a strange exception thrown and crash using call_once on a PPC build bot, and a *really* weird windows link error for GCMetadata.obj. Still need to investigate the cause of both problems. Original change summary: [LPM] Reinstate r271652 to replace the CALL_ONCE_... macro in the legacy pass manager with the new llvm::call_once facility. llvm-svn: 271788
* It really helps to not randomly delete one of the closing brackets. =/Chandler Carruth2016-06-041-1/+1
| | | | llvm-svn: 271787
* Ok, now I know why I kept getting confused and not making progressChandler Carruth2016-06-041-2/+8
| | | | | | | | | | | fixing tis test. There are different configurations running, and they have subtly different backtraces. I didn't notice that the configs changed and so I kept occilating between the two. Now I've looked at two different configs at the same time, and so this should be much more likely to work. llvm-svn: 271786
* Fix the test for printing the memory profile. This fuctionality is onlyChandler Carruth2016-06-041-1/+5
| | | | | | | | | | | available along side the leak checking, so use the REQUIRES for that. Also, use %run as other tests do when launching the built binary. This fixes check-asan for me on Linux and looks like it should fix the linux sanitizer bots as well. llvm-svn: 271785
* Update this test yet again, this time based on a nice consecutive pairChandler Carruth2016-06-041-3/+2
| | | | | | | | of lines provided with the filecheck output from the previous run. I'll probably give up after this and get someone with a Windows build to help me out. llvm-svn: 271784
* I didn't actually get this right, but now I have frame #0 and frame #2.Chandler Carruth2016-06-041-2/+3
| | | | | | This should fail on frame #1 and show what that should actually be. llvm-svn: 271783
* Amazingly, my guess was correct for the top two frames here. HopefullyChandler Carruth2016-06-041-8/+0
| | | | | | with this, the Windows sanitizer bot will go green! llvm-svn: 271782
* [LPM] Reinstate r271652 to replace the CALL_ONCE_... macro in the legacyChandler Carruth2016-06-045-55/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pass manager with the new llvm::call_once facility. This reverts commit r271657 and re-applies r271652 with a fix to actually work with arguments. In the original version, we just ended up directly calling std::call_once via ADL because of the std::once_flag argument. The llvm::call_once never worked with arguments. Now, llvm::call_once is a variadic template that perfectly forwards everything. As a part of this it had to move to the header and we use a generic functor rather than an explict function pointer. It would be nice to use std::invoke here but we don't have it yet. That means pointer to members won't work here, but that seems a tolerable compromise. I've also tested this by forcing the fallback path, so hopefully it sticks this time. Original commit message: ---- [LPM] Replace the CALL_ONCE_... macro in the legacy pass manager with the new llvm::call_once facility. This facility matches the standard APIs and when the platform supports it actually directly uses the standard provided functionality. This is both more efficient on some platforms and much more TSan friendly. The only remaining user of the cas_flag and home-rolled atomics is the fallback implementation of call_once. I have a patch that removes them entirely, but it needs a Windows patch to land first. This alone substantially cleans up the macros for the legacy pass manager, and should subsume some of the work Mehdi was doing to clear the path for TSan testing of ThinLTO, a really important step to have reliable upstream testing of ThinLTO in all forms. llvm-svn: 271781
* [NFC] Check that a parameter of ScheduleTreeOptimizer::isMatrMultPattern ↵Roman Gareev2016-06-041-0/+3
| | | | | | contains a correct partial schedule llvm-svn: 271780
* Temporary hack to this test to try and get the sanitizer-windows bot toChandler Carruth2016-06-041-2/+10
| | | | | | show enough information for me to fix the patterns used here. llvm-svn: 271779
* [X86] Use unsigned types for vector arithmetic in intrinsics to avoid ↵Craig Topper2016-06-049-76/+88
| | | | | | | | undefined behavior for signed integer overflow. This is really only needed for addition, subtraction, and multiplication, but I did the bitwise ops too for overall consistency. Clang currently doesn't set NSW for signed vector operations so the undefined behavior shouldn't happen today. llvm-svn: 271778
* [AVX512] Remove space in -1 constants. NFCCraig Topper2016-06-045-16/+16
| | | | llvm-svn: 271777
* [X86] Use smaller types to shrink the intrinsic lowering tables by about 12K.Craig Topper2016-06-041-6/+6
| | | | llvm-svn: 271776
* [X86] Use X86ISD::ABS for lowering pabs SSSE3/AVX intrinsics to match ↵Craig Topper2016-06-042-33/+36
| | | | | | AVX512. Should allow those intrinsics to use the EVEX encoded instructions and get the extra registers when available. llvm-svn: 271775
* Add armv7 compact unwind printing to the compact-unwind-dumper.c toolJason Molenda2016-06-041-0/+199
| | | | | | as a prototype for adding armv7 compact unwind reading to lldb. llvm-svn: 271774
OpenPOWER on IntegriCloud