summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add subtarget caches to aarch64, arm, ppc, and x86.Eric Christopher2014-10-068-4/+148
| | | | | | | | | These will make it easier to test further changes to the code generation and optimization pipelines as those are moved to subtargets initialized with target feature and target cpu. llvm-svn: 219106
* Resolve ambiguity between llvm::make_unique and std::make_unique.Yaron Keren2014-10-061-2/+3
| | | | | | | Intorduced in r219098. llvm-svn: 219105
* Add FIXME/notes to the future.David Blaikie2014-10-061-0/+5
| | | | llvm-svn: 219104
* DebugInfo: Sink constructImportedEntityDIE down into DwarfUnit from DwarfDebug.David Blaikie2014-10-064-36/+34
| | | | | | | | It was just calling a bunch of DwarfUnit functions anyway, as can be seen by the simplification of removing "TheCU" from all the function calls in the implementation. llvm-svn: 219103
* Call SBDebugger::Initialize/Terminate from within Create/Destroy.Matthew Gardiner2014-10-061-0/+4
| | | | | | | The above change permits developers using the lldb C++ API to code applications in a more logical manner. llvm-svn: 219102
* DebugInfo: Don't include implicit special members in the list of class membersDavid Blaikie2014-10-062-24/+24
| | | | | | | | By leaving these members out of the member list, we avoid them being emitted into type unit definitions - while still allowing the definition/declaration to be injected into the compile unit as expected. llvm-svn: 219101
* DebugInfo: Don't include member function template specializations in the ↵David Blaikie2014-10-062-12/+7
| | | | | | | | | | list of class members By leaving these members out of the member list, we avoid them being emitted into type unit definitions - while still allowing the definition/declaration to be injected into the compile unit as expected. llvm-svn: 219100
* [dwarfdump] Print the name for referenced specification of abstract_origin DIEs.Frederic Riss2014-10-0617-53/+67
| | | | | | | | | | Reviewers: dblaikie, samsonov, echristo, aprantl Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D5466 llvm-svn: 219099
* Factor the Unit section parsing into the DWARFUnitSection class.Frederic Riss2014-10-063-62/+50
| | | | | | | | | | | | Summary: No functional change. Reviewers: dblaikie, samsonov Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D5522 llvm-svn: 219098
* [PM] Remove an unused and rather expensive mapping from an analysisChandler Carruth2014-10-062-10/+0
| | | | | | | | group's interface to all of the implementations of that analysis group. The groups themselves can and do manage this anyways, the pass registry needn't involve itself. llvm-svn: 219097
* [PM] Remove the (deeply misguided) 'unregister' functionality from theChandler Carruth2014-10-062-14/+0
| | | | | | | | | | | | pass registry. This style of registry is somewhat questionable, but it being non-monotonic is crazy. No one is (or should be) unloading DSOs with passes and unregistering them here. I've checked with a few folks and I don't know of anyone using this functionality or any important use case where it is necessary. llvm-svn: 219096
* [cleanup] Switch to using range-based for loops in two very obviousChandler Carruth2014-10-061-6/+4
| | | | | | places. llvm-svn: 219095
* [cleanup] Fix up trailing whitespace and formatting in the pass regitsryChandler Carruth2014-10-052-44/+44
| | | | | | code prior to hacking on it more significantly. llvm-svn: 219094
* PE/COFF: add a check to ensure that we dont mix up architecturesSaleem Abdulrasool2014-10-0510-33/+128
| | | | | | | | | | | | | | | | Previously, we would not check the target machine type and the module (object) machine type. Add a check to ensure that we do not attempt to use an object file with a different target architecture. This change identified a couple of tests which were incorrectly mixing up architecture types, using x86 input for a x64 target. Adjust the tests appropriately. The renaming of the input and the architectures covers the changes to the existing tests. One significant change to the existing tests is that the newly added test input for x64 uses the correct user label prefix for X64. llvm-svn: 219093
* Give the Reassociate pass a bit more flexibility and autonomy when ↵Owen Anderson2014-10-052-2/+27
| | | | | | | | | | optimizing expressions. Particularly, it addresses cases where Reassociate breaks Subtracts but then fails to optimize combinations like I1 + -I2 where I1 and I2 have the same rank and are identical. Patch by Dmitri Shtilman. llvm-svn: 219092
* [clang-tidy] Allow space between "TODO" and "(user)"Alexander Kornienko2014-10-052-1/+3
| | | | llvm-svn: 219091
* [x86] Remove the 2-addr-to-3-addr "optimization" from shufps to pshufd.Chandler Carruth2014-10-057-54/+30
| | | | | | | | | | | | | | | This trades a (register-renamer-friendly) movaps for a floating point / integer domain cross. That is a very bad trade, even on architectures where domain crossing is relatively fast. On any chip where there is even a cycle stall, this is a Very Bad Idea. It doesn't even seem likely to cause a spill to be introduced because the reason for the copy is to destructively shuffle in place. Thanks to Ben Kramer for fixing a bug in this code that my new shuffle lowering exposed and highlighting that perhaps it should just go away. =] llvm-svn: 219090
* Core: switch error mapping to switchesSaleem Abdulrasool2014-10-051-19/+32
| | | | | | | | | | Rather than a series of cascading ifs, use a switch statement to convert the error code to a string. This has the benefit of allowing the compiler to inform us if we ever add a new error code but fail to update the string representation. Add in stringified versions for a couple of missing InputGraphErrors. llvm-svn: 219089
* PE/COFF: remove another use of PECOFFLinkingContext::is64bitSaleem Abdulrasool2014-10-051-20/+37
| | | | | | | | | | | | | In order to support more than x86/x86_64, we need to change the behaviour to use the actual machine type rather than checking the bitness and assuming that we are on X86. This replaces the use of is64bit in applyAllRelocations with a check on the machine type. This will enable adding support for handling ARM relocations. Rename the existing applyRelocation methods to be similarly named and to make it clear the types of relocations they will process. llvm-svn: 219088
* Implement fmodJan Vesely2014-10-055-0/+17
| | | | | | | Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Tom Stellard <tom@stellard.net> Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 219087
* [x86, dag] Teach the DAG combiner to prune inputs toa vector_shuffleChandler Carruth2014-10-053-15/+164
| | | | | | | | | | | | | | | that are unused. This allows the combiner to delete math feeding shuffles where the math isn't actually necessary. This improves some of the vperm2x128 tests that regressed when the vector shuffle lowering started actually generating vperm instructions rather than forcibly decomposing them. Sadly, this isn't enough to get this *really* right because we still form a completely unnecessary permutation. To fix that, we also need to fold shuffles which just rearrange concatenated or inserted subvectors. llvm-svn: 219086
* Remove unused mapDavid Blaikie2014-10-052-6/+0
| | | | | | This became unnecessary/unused in r208636 llvm-svn: 219085
* X86: Don't drop half of the mask when converting 2-address shufps into ↵Benjamin Kramer2014-10-052-1/+12
| | | | | | | | | 3-address pshufd. It's debatable whether this transform is useful at all, but for now make sure we don't generate invalid asm. llvm-svn: 219084
* AVX-512-SKX: Added instruction VPMOVM2B/W/D/Q.Elena Demikhovsky2014-10-053-2/+79
| | | | | | This instruction allows to broadacst mask vector to data vector. llvm-svn: 219083
* Simplify code. No functionality change.Benjamin Kramer2014-10-051-4/+2
| | | | llvm-svn: 219082
* [x86] Fix PR21139, one of the last remaining regressions found in theChandler Carruth2014-10-053-16/+37
| | | | | | | | | | | | | new vector shuffle lowering. This is loosely based on a patch by Marius Wachtler to the PR (thanks!). I refactored it a bi to use std::count_if and a mutable array ref but the core idea was exactly right. I also added some direct testing of this case. I believe PR21137 is now the only remaining regression. llvm-svn: 219081
* Try to unbreak the polly build.Benjamin Kramer2014-10-051-3/+4
| | | | llvm-svn: 219080
* [x86] Teach the new vector shuffle lowering how to lower 128-bitChandler Carruth2014-10-055-247/+218
| | | | | | | | | | | | | | | | | | | | | | shuffles using AVX and AVX2 instructions. This fixes PR21138, one of the few remaining regressions impacting benchmarks from the new vector shuffle lowering. You may note that it "regresses" many of the vperm2x128 test cases -- these were actually "improved" by the naive lowering that the new shuffle lowering previously did. This regression gave me fits. I had this patch ready-to-go about an hour after flipping the switch but wasn't sure how to have the best of both worlds here and thought the correct solution might be a completely different approach to lowering these vector shuffles. I'm now convinced this is the correct lowering and the missed optimizations shown in vperm2x128 are actually due to missing target-independent DAG combines. I've even written most of the needed DAG combine and will submit it shortly, but this part is ready and should help some real-world benchmarks out. llvm-svn: 219079
* Allow multidimensional accesses in the IslExprBuilder.Johannes Doerfert2014-10-055-19/+123
| | | | | | | | | This resolved the issues with delinearized accesses that might alias, thus delinearization doesn't deactivate runtime alias checks anymore. Differential Revision: http://reviews.llvm.org/D5614 llvm-svn: 219078
* Introduce the ScopArrayInfo class.Johannes Doerfert2014-10-0512-46/+287
| | | | | | | | | | | | | | | | | | | This class allows to store information about the arrays in the SCoP. For each base pointer in the SCoP one object is created storing the type and dimension sizes of the array. The objects can be obtained via the SCoP, a MemoryAccess or the isl_id associated with the output dimension of a MemoryAccess (the description of what is accessed). So far we use the information in the IslExprBuilder to create the right base type before indexing into the base array. This fixes the bug http://llvm.org/bugs/show_bug.cgi?id=21113 (both test cases are included). On top of that we can now build runtime alias checks for delinearized arrays as the dimension sizes are also part of the ScopArrayInfo objects. Differential Revision: http://reviews.llvm.org/D5613 llvm-svn: 219077
* MS ABI: Make comment more accurateDavid Majnemer2014-10-051-1/+1
| | | | | | The ABI for function-scope statics changed in VS "14", not MSVC 2013. llvm-svn: 219076
* MS ABI: Use '1' (instead of '0') relative scope discriminatorsDavid Majnemer2014-10-055-10/+10
| | | | | | | | This changes the scope discriminator's behavior to start at '1' instead of '0'. Symbol table diffing, for ABI compatibility testing, kept finding these as false positives. llvm-svn: 219075
* MS ABI: Implement thread_local for global variablesDavid Majnemer2014-10-059-98/+222
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: This add support for the C++11 feature, thread_local global variables. The ABI Clang implements is an improvement of the MSVC ABI. Sadly, further improvements could be made but not without sacrificing ABI compatibility. The feature is implemented as follows: - All thread_local initialization routines are pointed to from the .CRT$XDU section. - All non-weak thread_local variables have their initialization routines call from a single function instead of getting their own .CRT$XDU section entry. This is done to open up optimization opportunities to the compiler. - All weak thread_local variables have their own .CRT$XDU section entry. This entry is in a COMDAT with the global variable it is initializing; this ensures that we will initialize the global exactly once. - Destructors are registered in the initialization function using __tlregdtor. Differential Revision: http://reviews.llvm.org/D5597 llvm-svn: 219074
* HexagonMCCodeEmitter.cpp: Prune 2nd redundant \brief. [-Wdocumentation]NAKAMURA Takumi2014-10-051-1/+1
| | | | llvm-svn: 219073
* [CMake] HexagonTests: Update LINK_COMPONENTS.NAKAMURA Takumi2014-10-051-0/+4
| | | | llvm-svn: 219072
* HexagonDesc: Update LLVMBuild.txt.NAKAMURA Takumi2014-10-051-1/+1
| | | | llvm-svn: 219071
* [InstCombine] Simplify the logic from r219067 using ValueTrackingHal Finkel2014-10-051-12/+4
| | | | | | | | | | | | Joerg suggested on IRC that I look at generalizing the logic from r219067 to handle more general redundancies (like removing an assume(x > 3) dominated by an assume(x > 5)). The way to do this would be to ask ValueTracking to determine the value of the i1 argument. It turns out that ValueTracking is not very good at this right now (although it does get the trivial redundancy case) because it does not understand ICmps. Nevertheless, the resulting code in InstCombine is simpler than r219067, so we might as well do it now. llvm-svn: 219070
* [SystemZ] Make operator bool explicit. NFC.Benjamin Kramer2014-10-042-2/+2
| | | | llvm-svn: 219069
* Make AAMDNodes ctor and operator bool (!!!) explicit, mop up bugs and ↵Benjamin Kramer2014-10-048-31/+24
| | | | | | weirdness exposed by it. llvm-svn: 219068
* [InstCombine] Remove redundant @llvm.assume intrinsicsHal Finkel2014-10-042-0/+72
| | | | | | | | | For any @llvm.assume intrinsic, if there is another which dominates it and uses the same condition, then it is redundant and can be removed. While this does not alter the semantics of the @llvm.assume intrinsics, it makes subsequent handling more efficient (and the resulting IR easier to read). llvm-svn: 219067
* Try harder to fix ARM/Linux after r219040.Bob Wilson2014-10-041-1/+6
| | | | llvm-svn: 219066
* Solve Visual C++ warning C4805 on getAsInteger<bool>.Yaron Keren2014-10-041-1/+4
| | | | | | | | | | | Fix http://llvm.org/PR21158 by adding a cast to unsigned long long, so the comparison would be between two unsigned long longs instead of bool and unsigned long long. if (getAsUnsignedInteger(*this, Radix, ULLVal) || static_cast<unsigned long long>(static_cast<T>(ULLVal)) != ULLVal) llvm-svn: 219065
* Attempt to fix ARM/Linux after r219040.Bob Wilson2014-10-041-1/+1
| | | | llvm-svn: 219064
* [clang-modernize] Update for API change.Benjamin Kramer2014-10-041-6/+6
| | | | | | NFC. llvm-svn: 219063
* Return a reference instead of vector copy for parentmap queries.Benjamin Kramer2014-10-043-34/+32
| | | | | | | The map is immutable until the whole ASTContext dies. While there movify a couple of copies in ASTMatchFinder away. NFC. llvm-svn: 219062
* Remove unnecessary copying or replace it with moves in a bunch of places.Benjamin Kramer2014-10-0415-72/+76
| | | | | | NFC. llvm-svn: 219061
* Sink DwarfDebug::updateSubprogramScopeDIE into DwarfCompileUnitDavid Blaikie2014-10-044-33/+41
| | | | | | | | | | | | | This requires exposing some of the current function state from DwarfDebug. I hope there's not too much of that to expose as I go through all the functions, but it still seems nicer to expose singular data down to multiple consumers, than have consumers expose raw mapping data structures up to DwarfDebug for building subprograms. Part of a series of refactoring to allow subprograms in both the skeleton and dwo CUs under Fission. llvm-svn: 219060
* Reformatting accidentally left out of r219057David Blaikie2014-10-041-1/+2
| | | | llvm-svn: 219059
* Sink DwarfDebug::attachLowHighPC into DwarfCompileUnitDavid Blaikie2014-10-044-20/+20
| | | | | | | One of many things to sink down into DwarfCompileUnit to allow handling of subprograms in both the skeleton and dwo CU under Fission. llvm-svn: 219058
* Move DwarfCompileUnit from DwarfUnit.h to its own header (DwarfCompileUnit.h)David Blaikie2014-10-047-300/+352
| | | | | | | | | | | | In preparation for sinking all the subprogram emission code down from DwarfDebug into DwarfCompileUnit, this will avoid bloating DwarfUnit.h/cpp greatly and make concerns a bit more clear/isolated. (sinking this handling down is part of the work to handle emitting minimal subprograms for -gmlt-like data into the skeleton CU under fission) llvm-svn: 219057
OpenPOWER on IntegriCloud