summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [AArch64][FastISel] Don't even try to select vector icmps.Ahmed Bougacha2015-11-062-0/+104
| | | | | | | | | | | | We used to try to constant-fold them to i32 immediates. Given that fast-isel doesn't otherwise support vNi1, when selecting the result users, we'd fallback to SDAG anyway. However, if the users were in another block, we'd insert broken cross-class copies (GPR32 to FPR64). Give up, let SDAG agree with itself on a vNi1 legalization strategy. llvm-svn: 252364
* [X86] Fold (trunc (i32 (zextload i16))) into vbroadcast.Ahmed Bougacha2015-11-063-12/+10
| | | | | | | | | | | When matching non-LSB-extracting truncating broadcasts, we now insert the necessary SRL. If the scalar resulted from a load, the SRL will be folded into it, creating a narrower, offset, load. However, i16 loads aren't Desirable, so we get i16->i32 zextloads. We already catch i16 aextloads; catch these as well. llvm-svn: 252363
* [X86] SRL non-LSB extracts when folding to truncating broadcasts.Ahmed Bougacha2015-11-065-62/+119
| | | | | | | | | | | | Now that we recognize this, we can support it instead of bailing out. That is, we can fold: (v8i16 (shufflevector (v8i16 (bitcast (v4i32 (build_vector X, Y, ...)))), <1,1,...,1>)) into: (v8i16 (vbroadcast (i16 (trunc (srl Y, 16))))) llvm-svn: 252362
* [X86] Don't fold non-LSB extracts into truncating broadcasts.Ahmed Bougacha2015-11-065-12/+448
| | | | | | | | | | | | | | | We used to incorrectly assume that the offset we're extracting from was a multiple of the element size. So, we'd fold: (v8i16 (shufflevector (v8i16 (bitcast (v4i32 (build_vector X, Y, ...)))), <1,1,...,1>)) into: (v8i16 (vbroadcast (i16 (trunc Y)))) whereas we should have extracted the higher bits from X. Instead, bail out if the assumption doesn't hold. llvm-svn: 252361
* StaticAnalyzer: Remove implicit ilist iterator conversions, NFCDuncan P. N. Exon Smith2015-11-061-6/+6
| | | | | | Remove implicit ilist iterator conversions from clangStaticAnalyzer. llvm-svn: 252360
* [ASan] Add two new functions to DLL thunk.Alexey Samsonov2015-11-061-0/+3
| | | | llvm-svn: 252359
* CodeGen: Remove implicit ilist iterator conversions, NFCDuncan P. N. Exon Smith2015-11-0611-28/+30
| | | | | | | Make ilist iterator conversions explicit in clangCodeGen. Eventually I'll remove them everywhere. llvm-svn: 252358
* polly/ADT: Remove implicit ilist iterator conversions, NFCDuncan P. N. Exon Smith2015-11-068-52/+54
| | | | | | | | | | | | | Remove all the implicit ilist iterator conversions from polly, in preparation for making them illegal in ADT. There was one oddity I came across: at line 95 of lib/CodeGen/LoopGenerators.cpp, there was a post-increment `Builder.GetInsertPoint()++`. Since it was a no-op, I removed it, but I admit I wonder if it might be a bug (both before and after this change)? Perhaps it should be a pre-increment? llvm-svn: 252357
* Make the language specifier to "break set" actually filter the names by ↵Jim Ingham2015-11-0615-47/+278
| | | | | | | | | | | | | their language. So for instance: break set -l c++ -r Name will only break on C++ symbols that match Name, not ObjC or plain C symbols. This also works for "break set -n" and there are SB API's to pass this as well. llvm-svn: 252356
* Another optimization to keep down gdb-remote traffic. If we have suspended ↵Jim Ingham2015-11-063-6/+31
| | | | | | | | a thread while running, don't request the thread status when deciding why we stopped. llvm-svn: 252355
* Fixed another issue with wrong case in #import.Sean Callanan2015-11-061-1/+1
| | | | llvm-svn: 252354
* Fix Linux tests after r252348.Chaoren Lin2015-11-061-0/+1
| | | | llvm-svn: 252353
* Round up the memsize of PT_TLS.Rafael Espindola2015-11-065-11/+31
| | | | | | | | This is cleaner than computing relocations as if we had done it. While at it, keep a single Phdr variable instead of multiple fields of it. llvm-svn: 252352
* Fixed a problem where a test case referred to aSean Callanan2015-11-061-1/+1
| | | | | | wrongly-capitalized header. llvm-svn: 252351
* Allow deque to handle incomplete types.Evgeniy Stepanov2015-11-063-12/+77
| | | | | | | | Allow deque and deque::iterator instantiation with incomplete element type. This is an ABI breaking change, and it is only enabled if LIBCXX_ABI_VERSION >= 2 or LIBCXX_ABI_UNSTABLE=ON. llvm-svn: 252350
* DAGCombiner: Check shouldReduceLoadWidth before combining (and (load), x) -> ↵Tom Stellard2015-11-064-11/+34
| | | | | | | | | | | | extload Reviewers: resistor, arsenm Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D13805 llvm-svn: 252349
* Python 3 - Port use of string.maketrans and don't use sets.Set.Zachary Turner2015-11-062-4/+5
| | | | | | | | | | `sets.Set` has been deprecated in favor of `set` since 2.6, and `string.maketrans` has to be special cased. In Python 3 there is `str.maketrans`, `bytes.maketrans`, and `bytearray.maketrans` and you have to choose the correct one. So we need to introduce a runtime version check at this site. llvm-svn: 252348
* Python 3 - Use the exec function, not the exec statement.Zachary Turner2015-11-062-2/+4
| | | | | | exec statement is gone in Python 3, this version works in both. llvm-svn: 252347
* Python 3 - Fix some issues with class / instance variables in unittest2.Zachary Turner2015-11-063-37/+16
| | | | | | | | | | | | | | | | | | | | | | | | Explanation from a Python wizard (not me) about why this exhibited different behavior under Python 2 and Python 3. `cmp` is a builtin_function_or_method in Python 2.7, which doesn't have a __get__ and doesn't qualify as a "descriptor". Your lambda is a regular function which qualifies as a descriptor whose __get__ method returns a bound instance. His suggested fix was to write sortTestMethodsUsing = staticmethod(cmp_) However, I don't think `sortTestMethodsUsing` (or any of the other fields of `TestLoader`) should be class attributes anyway. They are all accessed through self, so they should be instance attributes. So the fix employed here is to convert them to instance attributes. Differential Revision: http://reviews.llvm.org/D14453 Reviewed By: Todd Fiala llvm-svn: 252346
* [WebAssembly] Use more explicit types in testcases.Dan Gohman2015-11-0610-114/+114
| | | | llvm-svn: 252345
* [WebAssembly] Add more explicit pushes to the tests.Dan Gohman2015-11-0619-169/+169
| | | | llvm-svn: 252344
* [InstCombine] Don't RAUW tokens with undefDavid Majnemer2015-11-062-2/+24
| | | | | | Let SimplifyCFG remove unreachable BBs which define token instructions. llvm-svn: 252343
* [SimplifyLibCalls] Don't hardcode the function name.Davide Italiano2015-11-061-1/+2
| | | | llvm-svn: 252342
* [ShrinkWrapping] Teach shrink-wrapping how to analyze RegMask.Quentin Colombet2015-11-062-8/+97
| | | | | | | Previously we were conservatively assuming that RegMask operands clobber callee saved registers. llvm-svn: 252341
* MachineScheduler: Add regpressure information to debug dumpMatthias Braun2015-11-063-9/+36
| | | | llvm-svn: 252340
* AMDGPU/SI: Refactor VOP[12C] tablegen definitionsTom Stellard2015-11-062-97/+75
| | | | | | | | | | | | | | Summary: Pass the VOPProfile object all the through to *_m multiclasses. This will allow us to do more simplifications in the future. Reviewers: arsenm Subscribers: arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D13437 llvm-svn: 252339
* Fix for zero chunk sizeJonathan Peyton2015-11-062-0/+42
| | | | | | | | Setting dynamic schedule with chunk size 0 via omp_set_schedule(dynamic,0) and then using "schedule (runtime)" causes infinite loop because for the chunked dynamic schedule we didn't correct zero chunk to the default (1). llvm-svn: 252338
* Fix SLPVectorizer commutativity reorderingMehdi Amini2015-11-062-76/+147
| | | | | | | | | | | | | | | | | | | The SLPVectorizer had a very crude way of trying to benefit from associativity: it tried to optimize for splat/broadcast or in order to have the same operator on the same side. This is benefitial to the cost model and allows more vectorization to occur. This patch improve the logic and make the detection optimal (locally, we don't look at the full tree but only at the immediate children). Should fix https://llvm.org/bugs/show_bug.cgi?id=25247 Reviewers: mzolotukhin Differential Revision: http://reviews.llvm.org/D13996 From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 252337
* Fix a few windows only tests.Rafael Espindola2015-11-061-1/+3
| | | | | | This argument must be non-null. llvm-svn: 252336
* Improved the operands commute transformation for X86-FMA3 instructions.Andrew Kaylor2015-11-065-92/+926
| | | | | | | | | | | | All 3 operands of FMA3 instructions are commutable now. Patch by Slava Klochkov Reviewers: Quentin Colombet(qcolombet), Ahmed Bougacha(ab). Differential Revision: http://reviews.llvm.org/D13269 llvm-svn: 252335
* [WebAssembly] Make expression-stack pushing explicitDan Gohman2015-11-0616-198/+210
| | | | | | | | | Modelling of the expression stack is evolving. This patch takes another step by making pushes explicit. Differential Revision: http://reviews.llvm.org/D14338 llvm-svn: 252334
* [ValueTracking] Add parameters to isImpliedCondition; NFCSanjoy Das2015-11-065-14/+33
| | | | | | | | | | | | | | | | Summary: This change makes the `isImpliedCondition` interface similar to the rest of the functions in ValueTracking (in that it takes a DataLayout, AssumptionCache etc.). This is an NFC, intended to make a later diff less noisy. Depends on D14369 Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14391 llvm-svn: 252333
* [ValueTracking] De-pessimize isImpliedCondition around unsigned comparesSanjoy Das2015-11-062-5/+16
| | | | | | | | | | | | | | | Summary: Currently `isImpliedCondition` will optimize "I +_nuw C < L ==> I < L" only if C is positive. This is an unnecessary restriction -- the implication holds even if `C` is negative. Reviewers: reames, majnemer Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14369 llvm-svn: 252332
* [ValueTracking] Add a framework for encoding implication rulesSanjoy Das2015-11-062-21/+91
| | | | | | | | | | | | | | | | | | | | | Summary: This change adds a framework for adding more smarts to `isImpliedCondition` around inequalities. Informally, `isImpliedCondition` will now try to prove "A < B ==> C < D" by proving "C <= A && B <= D", since then it follows "C <= A < B <= D". While this change is in principle NFC, I could not think of a way to not handle cases like "i +_nsw 1 < L ==> i < L +_nsw 1" (that ValueTracking did not handle before) while keeping the change understandable. I've added tests for these cases. Reviewers: reames, majnemer, hfinkel Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14368 llvm-svn: 252331
* [swig] Remove check_lldb_swig_executable_file_exists.Bruce Mitchener2015-11-062-169/+22
| | | | | | | | | | | | | | | | | Summary: Code that tried to find swig and then split the path into a separate path and filename is being removed. The invoking build system always provides the location of swig and we don't need to split it into 2 pieces only to recombine it a short time later. Reviewers: zturner, domipheus Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D14415 llvm-svn: 252330
* [Docs] Change ARM build info to CMakeRenato Golin2015-11-061-20/+36
| | | | llvm-svn: 252329
* AMDGPU: Cleanup includesMatt Arsenault2015-11-062-6/+4
| | | | llvm-svn: 252328
* AMDGPU: Create emergency stack slots during frame loweringMatt Arsenault2015-11-069-15/+576
| | | | | | Test has a bogus verifier error which will be fixed by later commits. llvm-svn: 252327
* Don't use module internal implementation details in our decorators.Zachary Turner2015-11-061-8/+4
| | | | | | | | | | | | | | | | | We tried implementing something akin to a conditionalExpectedFailure decorator for unittest2. We did this by making use of some implementation details of the unittest2 module. In an effort to make this work with unittest, this patch removes the reliance on the implementation details. I have a hard time wrapping my head around how this all works with the deeply nested decorators, but the spirit of the patch here is to do do the following: If the condition function is true, use the original unittest2.expectedFailure decorator. Otherwise don't use any decorator, just call the test function. Differential Revision: http://reviews.llvm.org/D14406 Reviewed By: tberghammer, labath llvm-svn: 252326
* Make Windows always use multiprocessing-pool.Zachary Turner2015-11-061-5/+4
| | | | | | | | | We still see "Too many file handles" errors on Windows even with lower numbers of cores. It's not clear what the right balance is, and the bar seems to move as more tests get added. So just use the strategy that works until we can investigate more deeply. llvm-svn: 252325
* AMDGPU: Remove unused scratch resource operandsMatt Arsenault2015-11-062-75/+131
| | | | | | The SGPR spill pseudos don't actually use them. llvm-svn: 252324
* AMDGPU: Add pass to detect used kernel featuresMatt Arsenault2015-11-065-0/+331
| | | | | | | | | | | Mark kernels that use certain features that require user SGPRs to support with kernel attributes. We need to know before instruction selection begins because it impacts the kernel calling convention lowering. For now this only detects the workitem intrinsics. llvm-svn: 252323
* AMDGPU: Fix hardcoded alignment of spill.Matt Arsenault2015-11-062-13/+12
| | | | | | | Instead of forcing 4 alignment when spilled, set register class alignments. llvm-svn: 252322
* AMDGPU: Hack for VS_32 register pressureMatt Arsenault2015-11-064-15/+28
| | | | | | | | | | | | | For some reason VS_32 ends up factoring into the pressure heuristics even though we should never see a virtual register with this class. When SGPRs are reserved for register spilling, this for some reason triggers reg-crit scheduling. Setting isAllocatable = 0 may help with this since that seems to remove it from the default implementation's generated table. llvm-svn: 252321
* Restore "Move metadata linking after lazy global materialization/linking."Teresa Johnson2015-11-064-6/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This reverts commit r251965. Restore "Move metadata linking after lazy global materialization/linking." This restores commit r251926, with fixes for the LTO bootstrapping bot failure. The bot failure was caused by references from debug metadata to otherwise unreferenced globals. Previously, this caused the lazy linking to link in their defs, which is unnecessary. With this patch, because lazy linking is complete when we encounter the metadata reference, the materializer created a declaration. For definitions such as aliases and comdats, it is illegal to have a declaration. Furthermore, metadata linking should not change code generation. Therefore, when linking of global value bodies is complete, the materializer will simply return nullptr as the new reference for the linked metadata. This change required fixing a different test to ensure there was a real reference to a linkonce global that was only being reference from metadata. Note that the new changes to the only-needed-named-metadata.ll test illustrate an issue with llvm-link -only-needed handling of comdat groups, whereby it may result in an incomplete comdat group. I note this in the test comments, but the issue is orthogonal to this patch (it can be reproduced without any metadata at head). Reviewers: dexonsmith, rafael, tra Subscribers: tobiasvk, joker.eph, llvm-commits Differential Revision: http://reviews.llvm.org/D14447 llvm-svn: 252320
* Restore "Move metadata linking after lazy global materialization/linking."Teresa Johnson2015-11-063-9/+34
| | | | | | This reverts commit r251965. llvm-svn: 252319
* [WinEH] Mark funclet entries and exits as clobbering all registersReid Kleckner2015-11-069-5/+223
| | | | | | | | | | | | | | | | | Summary: In this implementation, LiveIntervalAnalysis invents a few register masks on basic block boundaries that preserve no registers. The nice thing about this is that it prevents the prologue inserter from thinking it needs to spill all XMM CSRs, because it doesn't see any explicit physreg defs in the MI. Reviewers: MatzeB, qcolombet, JosephTremoulet, majnemer Subscribers: MatzeB, llvm-commits Differential Revision: http://reviews.llvm.org/D14407 llvm-svn: 252318
* [LIR] Simplify code by making DataLayout globally accessible. NFC.Chad Rosier2015-11-061-11/+10
| | | | llvm-svn: 252317
* [AArch64]Enable the narrow ld promotion only on profitable microarchitecturesJun Bum Lim2015-11-063-56/+69
| | | | | | | | | The benefit from converting narrow loads into a wider load (r251438) could be micro-architecturally dependent, as it assumes that a single load with two bitfield extracts is cheaper than two narrow loads. Currently, this conversion is enabled only in cortex-a57 on which performance benefits were verified. llvm-svn: 252316
* Allow the alias to be of a different type.Angel Garcia Gomez2015-11-062-13/+38
| | | | | | | | | | | | Summary: Consider a declaration an alias even if it doesn't have the same unqualified type than the container element, as long as one can be converted to the other using only implicit casts. Reviewers: klimek Subscribers: alexfh, cfe-commits Differential Revision: http://reviews.llvm.org/D14442 llvm-svn: 252315
OpenPOWER on IntegriCloud