summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* [opaque pointer types] Add an explicit value type to GlobalObjectDavid Blaikie2015-09-143-12/+10
| | | | | | | | | This is needed by all GlobalObjects (GlobalAlias, Function, GlobalVariable), see the GlobalObject::getValueType which is used in many places. If at some point that can be removed, then we can remove this member. llvm-svn: 247621
* RegisterPressure: constify getRegSetPressureAtPos()Matthias Braun2015-09-141-1/+3
| | | | llvm-svn: 247616
* [opaque pointer types] Switch a few cases of getElementType over, since I ↵David Blaikie2015-09-145-26/+21
| | | | | | had them lying around anyway llvm-svn: 247610
* Make AsmPrinter::EmitJumpTableInfo virtualDan Gohman2015-09-141-1/+1
| | | | | | | | | | | Targets that have non-traditional jump table mechanisms may need to do something substantially different for jump tables than what AsmPrinter::EmitJumpTableInfo does. This patch makes that function virtual so that targets can override it. Differential Revision: http://reviews.llvm.org/D12786 llvm-svn: 247604
* [CMake] Add llvm-ar subdirectory explicitly.Chris Bieneman2015-09-141-2/+3
| | | | | | This is required because ExternalProject_Add requires all targets specified in the DEPENDS argument must exist before calling ExternalProject_Add. llvm-svn: 247592
* RegisterPressure: Simplify close{Top|Bottom}()Matthias Braun2015-09-141-12/+2
| | | | | | | | | | | - There are no duplicate registers in LiveRegs list we are copying from and so we do not need to sort the registers. - Simply use SmallVector::apend instead of a loop between begin() and end() with push_back(). Differential Revision: http://reviews.llvm.org/D12813 llvm-svn: 247588
* [InstCombineCalls] Use isKnownNonNullAt() to check nullness of passing ↵Chen Li2015-09-143-2/+26
| | | | | | | | | | | | | | arguments at callsite Summary: This patch replaces isKnownNonNull() with isKnownNonNullAt() when checking nullness of passing arguments at callsite. In this way it can handle cases where the argument does not have nonnull attribute but has a dominating null check from the CFG. It also adds assertions in isKnownNonNull() and isKnownNonNullFromDominatingCondition() to make sure the value checked is pointer type (as defined in LLVM document). These assertions might trip failures in things which are not covered under llvm/test, but fixes should be pretty obvious. Reviewers: reames Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D12779 llvm-svn: 247587
* Revert "[opaque pointer type] Pass GlobalAlias the actual pointer type ↵David Blaikie2015-09-1411-43/+59
| | | | | | | | | | | | | | | | | rather than decomposing it into pointee type + address space" This was a flawed change - it just caused the getElementType call to be deferred until later, when we really need to remove it. Now that the IR for GlobalAliases has been updated, the root cause is addressed that way instead and this change is no longer needed (and in fact gets in the way - because we want to pass the pointee type directly down further). Follow up patches to push this through GlobalValue, bitcode format, etc, will come along soon. This reverts commit 236160. llvm-svn: 247585
* [llvm-mc] Better error handling in ENOENT case + test.Davide Italiano2015-09-142-6/+3
| | | | | | | | | | | | | This is a follow up to r247518. As a general note, I think we could do a much better job testing for error conditions in tools. I already anticipated in a previous mail, but while implementing this I noticed that the code coverage we have for error checking is pretty low. I can arbitrarily remove checks from several tools and the suite still passes. Differential Revision: http://reviews.llvm.org/D12846 llvm-svn: 247582
* dsymutil: Factor out the DIE cloning into a DIECloner class. (NFC)Adrian Prantl2015-09-141-161/+169
| | | | llvm-svn: 247577
* Improve ISel using across lane min/max reductionJun Bum Lim2015-09-143-61/+485
| | | | | | | | | | | | | | | | | | | | In vectorized integer min/max reduction code, the final "reduce" step is sub-optimal. In AArch64, this change wll combine : %svn0 = vector_shuffle %0, undef<2,3,u,u> %smax0 = smax %0, svn0 %svn3 = vector_shuffle %smax0, undef<1,u,u,u> %sc = setcc %smax0, %svn3, gt %n0 = extract_vector_elt %sc, #0 %n1 = extract_vector_elt %smax0, #0 %n2 = extract_vector_elt $smax0, #1 %result = select %n0, %n1, n2 becomes : %1 = smaxv %0 %result = extract_vector_elt %1, 0 This change extends r246790. llvm-svn: 247575
* [mips] Unified the MipsMemSimm9GPRAsmOperand and MipsMemSimm9AsmOperand ↵Daniel Sanders2015-09-143-24/+10
| | | | | | | | | | | | | | | | | | | operands, NFC. Summary: These operands had the same purpose, however the MipsMemSimm9GPRAsmOperand operand was only for micromips32r6 and the MipsMemSimm9AsmOperand did not have a ParserMatchClass. Patch by Scott Egerton Reviewers: vkalintiris, dsanders Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D12730 llvm-svn: 247573
* [MergeFuncs] Fix bug in merging GetElementPointersJF Bastien2015-09-142-2/+48
| | | | | | | | | | | | | | | | GetElementPointers must have the first argument's type compared for structural equivalence. Previously the code erroneously compared the pointer's type, but this code was dead because all pointer types (of the same address space) are the same. The pointee must be compared instead (using the type stored in the GEP, not from the pointer type which will be erased anyway). Author: jrkoenig Reviewers: dschuff, nlewycky, jfb Subscribers: nlewycky, llvm-commits Differential revision: http://reviews.llvm.org/D12820 llvm-svn: 247570
* [ARM] Extract shifts out of multiply-by-constantJohn Brawn2015-09-142-50/+293
| | | | | | | | | | | | | | | Turning (op x (mul y k)) into (op x (lsl (mul y k>>n) n)) is beneficial when we can do the lsl as a shifted operand and the resulting multiply constant is simpler to generate. Do this by doing the transformation when trying to select a shifted operand, as that ensures that it actually turns out better (the alternative would be to do it in PreprocessISelDAG, but we don't know for sure there if extracting the shift would allow a shifted operand to be used). Differential Revision: http://reviews.llvm.org/D12196 llvm-svn: 247569
* Reformat partially.NAKAMURA Takumi2015-09-144-42/+28
| | | | llvm-svn: 247557
* Reformat blank lines.NAKAMURA Takumi2015-09-146-12/+17
| | | | llvm-svn: 247556
* Revert part of r247553, "[CMake] Reformat CLANG_TEST_DEPS." It was ↵NAKAMURA Takumi2015-09-141-0/+1
| | | | | | accidental commit. llvm-svn: 247555
* [CMake] Reformat CLANG_TEST_DEPS.NAKAMURA Takumi2015-09-141-1/+0
| | | | llvm-svn: 247553
* [mips] Remove redundant nested-name-specifier. NFCSimon Atanasyan2015-09-141-25/+12
| | | | llvm-svn: 247547
* [mips] Save a copy of MipsABIInfo in the MipsTargetStreamer to escape a ↵Simon Atanasyan2015-09-141-3/+4
| | | | | | | | | | | | | dangling pointer The MipsTargetELFStreamer can receive ABI info from many sources. For example, from the MipsAsmParser instance. Lifetime of the MipsAsmParser can be shorter than MipsTargetELFStreamer's lifetime. In that case we get a dangling pointer to MipsABIInfo. Differential Revision: http://reviews.llvm.org/D12805 llvm-svn: 247546
* Whitespace.NAKAMURA Takumi2015-09-148-57/+57
| | | | llvm-svn: 247543
* GlobalsAAResult: Try to fix crash.NAKAMURA Takumi2015-09-142-12/+18
| | | | | | | | | | | | DeletionCallbackHandle holds GAR in its creation. It assumes; - It is registered as CallbackVH. It should not be moved in its life. - Its parent, GAR, may be moved. To move list<DeletionCallbackHandle> GlobalsAAResult::Handles, GAR must be updated with the destination in GlobalsAAResult(&&). llvm-svn: 247534
* [TableGen] Use range-based for loops and make a helper function static. NFCCraig Topper2015-09-131-46/+39
| | | | llvm-svn: 247529
* [TableGen] Simplify some code by using StringRef::find instead of std::find. NFCCraig Topper2015-09-131-3/+3
| | | | llvm-svn: 247528
* [TableGen] Use 'size_t' instead of 'unsigned' to better match the argument ↵Craig Topper2015-09-131-2/+2
| | | | | | types of addAsmOperand. NFC llvm-svn: 247527
* [X86][MMX] Added shuffle decodes for MMX/3DNow! shuffles.Simon Pilgrim2015-09-135-101/+273
| | | | | | | Added shuffle decodes for MMX PUNPCK + PSHUFW shuffles. Added shuffle decodes for 3DNow! PSWAPD shuffles. llvm-svn: 247526
* [FunctionAttrs] Move the malloc-like test to a static helper functionChandler Carruth2015-09-131-4/+3
| | | | | | | that could be used from a new pass manager. This one makes particular sense as a static helper as it doesn't even need TLI. llvm-svn: 247525
* [FunctionAttrs] Factor the logic to test for a known non-null return outChandler Carruth2015-09-131-7/+10
| | | | | | | | | | of a method and into a re-usable static helper. We can potentially use this function from the implementation of a new pass manager oriented version of the pass. Also add some better documentation of exactly what the semantic model of this routine is (it isn't trivial) and use a more modern naming convention for it. llvm-svn: 247524
* AVX-512: Fixed a bug in OR/XOR operations for 512-bit FP values on KNL.Elena Demikhovsky2015-09-132-2/+26
| | | | | | | | | | | KNL does not have VXORPS, VORPS for 512-bit values. I use integer VPXOR, VPOR that actually do the same. X86ISD::FXOR/FOR are generated as a result of FSUB combining. Differential Revision: http://reviews.llvm.org/D12753 llvm-svn: 247523
* [FunctionAttrs] Make the per-function attribute inference a boringChandler Carruth2015-09-131-4/+3
| | | | | | | | | static function rather than a method. It just needed access to TargetLibraryInfo, and this way it can be easily reused between the current FunctionAttrs implementation and any port for the new pass manager. llvm-svn: 247522
* [FunctionAttrs] Collect utility functions as static helpers rather thanChandler Carruth2015-09-131-57/+52
| | | | | | | | methods. They don't need anything from the class anyways. Also, collect the declarations into the private section of the pass. llvm-svn: 247521
* Clean up doxygen comments in FunctionAttrs, promoting some non-doxygenChandler Carruth2015-09-131-34/+21
| | | | | | | | comments, deleting duplicate comments, moving comments to consistently live on the definition since these are all really internal routines, etc. NFC. llvm-svn: 247520
* Do some spring cleaning on FunctionAttrs.cpp with clang-format prior toChandler Carruth2015-09-131-340/+299
| | | | | | other refactorings and cleanups here. llvm-svn: 247519
* [llvm-mc] More meaningful error if input file doesn't exist.Davide Italiano2015-09-131-0/+5
| | | | | | | | | Before we just printed on stderr the program name. Now at least we print the name of the file that doesn't exist. There's probably room for improvement of error handling in llvm-mc (and the tools in general), but still this is a step forward. llvm-svn: 247518
* [x86] enable machine combiner reassociations for 128-bit vector logical ↵Sanjay Patel2015-09-123-11/+81
| | | | | | | | | | integer insts (2nd try) The changes in: test/CodeGen/X86/machine-cp.ll are just due to scheduling differences after some logic instructions were reassociated. llvm-svn: 247516
* [CodeGen] Fix AtomicExpand invalidation issue caused by r247429.Ahmed Bougacha2015-09-121-2/+4
| | | | llvm-svn: 247514
* [X86] Renamed lowerVectorShuffleAsUnpack NFCI.Simon Pilgrim2015-09-121-9/+10
| | | | | | Renamed to lowerVectorShuffleAsPermuteAndUnpack to make it clear that it lowers to more than just a UNPCK instruction. llvm-svn: 247513
* Don't use bashism/kshism of test ==. From Kamil Rytarowski.Joerg Sonnenberger2015-09-122-2/+2
| | | | | | Differential Revision: http://reviews.llvm.org/D12642 llvm-svn: 247512
* [X86] Moved lowerVectorShuffleWithUNPCK earlier to make reuse easier. NFCI.Simon Pilgrim2015-09-121-63/+59
| | | | llvm-svn: 247511
* [X86] Added i1 vector sextload testsSimon Pilgrim2015-09-121-0/+1257
| | | | llvm-svn: 247509
* [X86][FMA] Refreshed fma testsSimon Pilgrim2015-09-122-152/+228
| | | | llvm-svn: 247508
* revert r247506; need to verify changes in existing testsSanjay Patel2015-09-122-74/+0
| | | | llvm-svn: 247507
* [x86] enable machine combiner reassociations for 128-bit vector logical ↵Sanjay Patel2015-09-122-0/+74
| | | | | | integer insts llvm-svn: 247506
* Fixed unused variable warning.Simon Pilgrim2015-09-121-2/+2
| | | | llvm-svn: 247505
* [InstCombine] CVTPH2PS Vector Demanded Elements + Constant FoldingSimon Pilgrim2015-09-122-0/+108
| | | | | | | | | | | | Improved InstCombine support for CVTPH2PS (F16C half 2 float conversion): <4 x float> @llvm.x86.vcvtph2ps.128(<8 x i16>) - only uses the bottom 4 i16 elements for the conversion. Added constant folding support. Differential Revision: http://reviews.llvm.org/D12731 llvm-svn: 247504
* [X86][SSE] Use general sext IR for (v)pmovsx stack folding testsSimon Pilgrim2015-09-122-37/+37
| | | | llvm-svn: 247502
* [PM] Port SROA to the new pass manager.Chandler Carruth2015-09-128-410/+477
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In some ways this is a very boring port to the new pass manager as there are no interesting analyses or dependencies or other oddities. However, this does introduce the first good example of a transformation pass with non-trivial state porting to the new pass manager. I've tried to carve out patterns here to replicate elsewhere, and would appreciate comments on whether folks like these patterns: - A common need in the new pass manager is to effectively lift the pass class and some of its state into a public header file. Prior to this, LLVM used anonymous namespaces to provide "module private" types and utilities, but that doesn't scale to cases where a public header file is needed and the new pass manager will exacerbate that. The pattern I've adopted here is to use the namespace-cased-name of the core pass (what would be a module if we had them) as a module-private namespace. Then utility and other code can be declared and defined in this namespace. At some point in the future, we could even have (conditionally compiled) code that used modules features when available to do the same basic thing. - I've split the actual pass run method in two in order to expose a private method usable by the old pass manager to wrap the new class with a minimum of duplicated code. I actually looked at a bunch of ways to automate or generate these, but they are all quite terrible IMO. The fundamental need is to extract the set of analyses which need to cross this interface boundary, and that will end up being too unpredictable to effectively encapsulate IMO. This is also a relatively small amount of boiler plate that will live a relatively short time, so I'm not too worried about the fact that it is boiler plate. The rest of the patch is totally boring but results in a massive diff (sorry). It just moves code around and removes or adds qualifiers to reflect the new name and nesting structure. Differential Revision: http://reviews.llvm.org/D12773 llvm-svn: 247501
* Clean up: Refactoring the hardcoded value of 6 for ↵Larisse Voufo2015-09-124-11/+27
| | | | | | FindAvailableLoadedValue()'s parameter MaxInstsToScan. llvm-svn: 247497
* Fix typos.Bruce Mitchener2015-09-1215-47/+47
| | | | | | | | | | Summary: This fixes a variety of typos in docs, code and headers. Subscribers: jholewinski, sanjoy, arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D12626 llvm-svn: 247495
* Move asserts from PHINode::addIncoming to PHINode::setIncoming*Hal Finkel2015-09-121-4/+4
| | | | | | | | | | We had asserts in PHINode::addIncoming to check that the value types matched the type of the PHI, and that the associated BB was not null. These did not catch, however, later uses of setIncomingValue and setIncomingBlock (which are called by addIncoming as well). Moving the asserts to PHINode::setIncoming* provides better coverage. NFC. llvm-svn: 247492
OpenPOWER on IntegriCloud