summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Adding -verify-machineinstrs option to PowerPC testsEhsan Amiri2016-08-03625-943/+943
| | | | | | | | | | | Currently we have a number of tests that fail with -verify-machineinstrs. To detect this cases earlier we add the option to the testcases with the exception of tests that will currently fail with this option. PR 27456 keeps track of this failures. No code review, as discussed with Hal Finkel. llvm-svn: 277624
* [Hexagon-ish] Add function to print cell map contents in bit trackerKrzysztof Parzyszek2016-08-032-5/+10
| | | | llvm-svn: 277622
* [CloneFunction] Don't crash if the value map doesn't hold somethingDavid Majnemer2016-08-031-1/+1
| | | | | | | | | It is possible for the value map to not have an entry for some value that has already been removed. I don't have a testcase, this is fall-out from a buildbot. llvm-svn: 277614
* use local variables; NFCSanjay Patel2016-08-031-29/+23
| | | | llvm-svn: 277612
* [CloneFunction] Don't remove side effecting callsDavid Majnemer2016-08-033-4/+59
| | | | | | | | | | | We were able to figure out that the result of a call is some constant. While propagating that fact, we added the constant to the value map. This is problematic because it results in us losing the call site when processing the value map. This fixes PR28802. llvm-svn: 277611
* [ARM] Constant Materialize: imms with specific value can be encoded into mov.wWeiming Zhao2016-08-032-1/+20
| | | | | | | | | | | | Summary: Thumb2 supports encoding immediates with specific patterns into mov.w by splatting the low 8 bits into other bytes. Reviewers: john.brawn, jmolloy Subscribers: jmolloy, aemerson, rengolin, samparker, llvm-commits Differential Revision: https://reviews.llvm.org/D23090 llvm-svn: 277610
* [msf] Make FPM reader use MappedBlockStream.Zachary Turner2016-08-036-23/+65
| | | | | | | | | | | | | MappedBlockSTream can work with any sequence of block data where the ordering is specified by a list of block numbers. So rather than manually stitch them together in the case of the FPM, reuse this functionality so that we can treat the FPM as if it were contiguous. Reviewed By: ruiu Differential Revision: https://reviews.llvm.org/D23066 llvm-svn: 277609
* Revert "Teach CorrelatedValuePropagation to mark adds as no wrap"Renato Golin2016-08-032-148/+0
| | | | | | This reverts commit r277592, trying to fix the AArch64 42VMA buildbot. llvm-svn: 277607
* Hexagon: Use llvm_unreachable. NFC.Benjamin Kramer2016-08-031-1/+1
| | | | llvm-svn: 277605
* Disable shrinking of SNaN constantsElliot Colp2016-08-032-11/+32
| | | | | | | | | When expanding FP constants, we attempt to shrink doubles to floats and perform an extending load. However, on SystemZ, and possibly on other targets (I've only confirmed the problem on SystemZ), the FP extending load instruction may convert SNaN into QNaN, or may cause an exception. So in the general case, we would still like to shrink FP constants, but SNaNs should be left as doubles. Differential Revision: https://reviews.llvm.org/D22685 llvm-svn: 277602
* [Hexagon] Do not check alignment for unsized types in isLegalAddressingModeKrzysztof Parzyszek2016-08-032-7/+74
| | | | | | | | When the same base address is used to load two different data types, LSR would assume a memory type of "void". This type is not sized and has no alignment information. Checking for it causes a crash. llvm-svn: 277601
* add a vector variant of each testSanjay Patel2016-08-031-0/+172
| | | | llvm-svn: 277598
* [InstCombine] Add select-bitext.ll testsNicolai Haehnle2016-08-031-0/+214
| | | | | | As requested for D22747. llvm-svn: 277596
* [Loop Vectorizer] Move store-predication into its own function, remove ↵Gil Rapaport2016-08-031-12/+18
| | | | | | | | obsolete comment (NFC) Differential Revision: https://reviews.llvm.org/D23013 llvm-svn: 277595
* Teach CorrelatedValuePropagation to mark adds as no wrapArtur Pilipenko2016-08-032-0/+148
| | | | | | | | | | Use LVI to prove that adds do not wrap. The change is motivated by https://llvm.org/bugs/show_bug.cgi?id=28620 bug and it's the first step to fix that problem. Reviewed By: sanjoy Differential Revision: http://reviews.llvm.org/D23059 llvm-svn: 277592
* [AVX512] Add aliases for vcvttss2si{l|q}, vcvttsd2si{l|q}, vcvttss2usi{l|q}, ↵Igor Breger2016-08-032-34/+170
| | | | | | | | vcvttsd2usi{l|q} instructions. Differential Revision: http://reviews.llvm.org/D23111 llvm-svn: 277586
* [PM] Fix a mis-named parameter in parseLoopPass -- the pass manager wasChandler Carruth2016-08-031-6/+6
| | | | | | | called "FPM" instead of "LPM" in a hold-over from when the code was modeled on that used to parse function passes. llvm-svn: 277584
* [PM] Add the explicit copy, move, swap, and assignment boilerplateChandler Carruth2016-08-031-1/+16
| | | | | | | | | | | | required by MSVC 2013. This also makes the repeating pass wrapper assignable. Mildly unfortunate as it means we can't use a const member for the int, but that is a really minor invariant to try to preserve at the cost of loss of regularity of the type. Yet another annoyance of the particular C++ object / move semantic model. llvm-svn: 277582
* [PM] Add a generic 'repeat N times' pass wrapper to the new passChandler Carruth2016-08-033-7/+188
| | | | | | | | | | | | | | | | | | | | | | | | manager. While this has some utility for debugging and testing on its own, it is primarily intended to demonstrate the technique for adding custom wrappers that can provide more interesting interation behavior in a nice, orthogonal, and composable layer. Being able to write these kinds of very dynamic and customized controls for running passes was one of the motivating use cases of the new pass manager design, and this gives a hint at how they might look. The actual logic is tiny here, and most of this is just wiring in the pipeline parsing so that this can be widely used. I'm adding this now to show the wiring without a lot of business logic. This is a precursor patch for showing how a "iterate up to N times as long as we devirtualize a call" utility can be added as a separable and composable component along side the CGSCC pass management. Differential Revision: https://reviews.llvm.org/D22405 llvm-svn: 277581
* [XRay] Make the xray_instr_map section specification more correctDean Michael Berris2016-08-032-4/+25
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: We also add a test to show what currently happens when we create a section per function and emit an xray_instr_map. This illustrates the relationship (or lack thereof) between the per-function section and the xray_instr_map section. We also change the code generation slightly so that we don't always create group sections, but rather only do so if a function where the table is associated with is in a group. Also in this change: - Remove the "merge" flag on the xray_instr_map section. - Test that we're generating the right table for comdat and non-comdat functions. Reviewers: echristo, majnemer Subscribers: llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D23104 llvm-svn: 277580
* [IfConversion] Bugfix: Don't use undef flag while adding use operands.Jonas Paulsson2016-08-031-3/+16
| | | | | | | | | | | | | | | | | IfConversion used to always add the undef flag when adding a use operand on a newly predicated instruction. This would be an operand for the register being conditionally redefined. Due to the undef flag, the liveness of this register prior to the predicated instruction would get lost. This patch changes this so that such use operands are added only when the register is live, without the undef flag. This was reverted but pushed again now, for details follow link below. Reviewed by Quentin Colombet. http://reviews.llvm.org/D209077 llvm-svn: 277571
* [ADCE] Refactor anticipating new functionality (NFC)David Callahan2016-08-031-17/+34
| | | | | | | | | | | | | | | | | Summary: This is the first refactoring before adding new functionality. Add a class wrapper for the functions and container for state associated with the transformation. No functional change Reviewers: majnemer, nadav, mehdi_amini Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D23065 llvm-svn: 277565
* RecordStreamer: handle inline asm "lazy_reference" and mark symbols as "used"Mehdi Amini2016-08-032-0/+17
| | | | llvm-svn: 277564
* [PM] Remove the NDEBUG condition around isModulePassName.Chandler Carruth2016-08-031-2/+0
| | | | | | | | I forgot to do this initially, and added when I saw this fail in a no-asserts build, but managed to loose the diff from the actual patch that got submitted. Very sorry. llvm-svn: 277562
* [PM] Significantly refactor the pass pipeline parsing to be easier toChandler Carruth2016-08-034-255/+310
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | reason about and less error prone. The core idea is to fully parse the text without trying to identify passes or structure. This is done with a single state machine. There were various bugs in the logic around this previously that were repeated and scattered across the code. Having a single routine makes it much easier to fix and get correct. For example, this routine doesn't suffer from PR28577. Then the actual pass construction is handled using *much* easier to read code and simple loops, with particular pass manager construction sunk to live with other pass construction. This is especially nice as the pass managers *are* in fact passes. Finally, the "implicit" pass manager synthesis is done much more simply by forming "pre-parsed" structures rather than having to duplicate tons of logic. One of the bugs fixed by this was evident in the tests where we accepted a pipeline that wasn't really well formed. Another bug is PR28577 for which I have added a test case. The code is less efficient than the previous code but I'm really hoping that's not a priority. ;] Thanks to Sean for the review! Differential Revision: https://reviews.llvm.org/D22724 llvm-svn: 277561
* [MSSA] Fix a caching bug.George Burgess IV2016-08-032-8/+82
| | | | | | | | | | | | | | | This fixes a bug where we'd sometimes cache overly-conservative results with our walker. This bug was made more obvious by r277480, which makes our cache far more spotty than it was. Test case is llvm-unit, because we're likely going to use CachingWalker only for def optimization in the future. The bug stems from that there was a place where the walker assumed that `DefNode.Last` was a valid target to cache to when failing to optimize phis. This is sometimes incorrect if we have a cache hit. The fix is to use the thing we *can* assume is a valid target to cache to. :) llvm-svn: 277559
* [Inliner] clang-format various parts of the inliner prior to changesChandler Carruth2016-08-033-71/+71
| | | | | | here. NFC. llvm-svn: 277557
* Add -lowertypetests-bitsets-level to control bitsets generation.Ivan Krasin2016-08-032-23/+40
| | | | | | | | | | | | | | | Summary: Sometimes, bitsets could get really large (>300k entries) and we might want to drop a check, as it would have a too much cost. Adding a flag to control how much penalty are we willing to pay for bitsets. Reviewers: kcc Differential Revision: https://reviews.llvm.org/D23088 llvm-svn: 277556
* add vector test for icmp+subSanjay Patel2016-08-031-5/+19
| | | | llvm-svn: 277555
* Support for lifetime begin/end markers in the MemorySSA use optimizerDaniel Berlin2016-08-032-1/+68
| | | | | | | | | | | | Summary: Depends on D23072 Reviewers: george.burgess.iv Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D23076 llvm-svn: 277553
* CommandFlags.h/llc: Move StopAfter/StartBefore options to llc.Matthias Braun2016-08-022-9/+8
| | | | | | | | | | | | | | | | | Move those two options to llc: The options in CommandFlags.h are shared by dsymutil, gold, llc, llvm-dwp, llvm-lto, llvm-mc, lto, opt. -stop-after/-start-after only affect codegen passes however only gold and llc actually create codegen passes and I believe these flags to be only useful for users of llc. For the other tools they are just highly confusing: -stop-after claims to "Stop compilation after a specific pass" which is not true in the context of the "opt" tool. Differential Revision: https://reviews.llvm.org/D23050 llvm-svn: 277551
* [Verifier] Add more tests related to non-integral pointersSanjoy Das2016-08-021-1/+16
| | | | | | As suggested by Matt Arsenault in post-commit review. llvm-svn: 277550
* [WebAssembly] Remove unnecessary subtarget checks in peephole passDerek Schuff2016-08-021-22/+13
| | | | | | | Leftover from D22686; the passes can handle all the instructions unconditionally; only isel needs to care whether to generate them. llvm-svn: 277549
* Fix a test for r277545.Rui Ueyama2016-08-021-2/+2
| | | | | | This change should have been submitted with that commit. llvm-svn: 277548
* pdbdump: Do not treat stream 0 pages as allocated pages.Rui Ueyama2016-08-021-6/+8
| | | | | | | | | | I examined a few PDBs and all of them treated pages for stream 0 are unused, thus they were unmarked in their free page bitmap. I think we should do the same thing for compatibility. Differential Revision: https://reviews.llvm.org/D23047 llvm-svn: 277545
* [safestack] Layout large allocas first to reduce fragmentation.Evgeniy Stepanov2016-08-022-0/+47
| | | | llvm-svn: 277544
* [WebAssembly] Initial SIMD128 support.Derek Schuff2016-08-0217-14/+401
| | | | | | | | | | | | | | Kicks off the implementation of wasm SIMD128 support (spec: https://github.com/stoklund/portable-simd/blob/master/portable-simd.md), adding support for add, sub, mul for i8x16, i16x8, i32x4, and f32x4. The spec is WIP, and might change in the near future. Patch by João Porto Differential Revision: https://reviews.llvm.org/D22686 llvm-svn: 277543
* ARM: only form SMMLS when SUBE flags unused.Tim Northover2016-08-022-1/+23
| | | | | | | | In this particular example we wouldn't want the smmls anyway (the value is actually unused), but in general smmls does not provide the required flags register so if that SUBE result is used we can't replace it. llvm-svn: 277541
* More fixes to get good error messages for bad archives.Kevin Enderby2016-08-0211-37/+183
| | | | | | | Fixed the last incorrect uses of llvm_unreachable() in the code which were actually just cases of errors in the input Archives. llvm-svn: 277540
* [InstCombine] replace dyn_casts with matches; NFCISanjay Patel2016-08-022-15/+15
| | | | | | Clean-up before changing this to allow folds for vectors. llvm-svn: 277538
* [sanitizer] Implement a __asan_default_options() equivalent for ScudoKostya Serebryany2016-08-021-3/+26
| | | | | | | | | | | | | | Summary: Currently, the Scudo Hardened Allocator only gets its flags via the SCUDO_OPTIONS environment variable. With this patch, we offer the opportunity for programs to define their own options via __scudo_default_options() which behaves like __asan_default_options() (weak symbol). A relevant test has been added as well, and the documentation updated accordingly. I also used this patch as an opportunity to rename a few variables to comply with the LLVM naming scheme, and replaced a use of Report with dieWithMessage for consistency (and to avoid a callback). Reviewers: llvm-commits, kcc Differential Revision: https://reviews.llvm.org/D23018 llvm-svn: 277536
* AMDGPU: fdiv -1, x -> rcp -xMatt Arsenault2016-08-023-17/+123
| | | | llvm-svn: 277535
* Imported statistics types changesPiotr Padlewski2016-08-022-28/+30
| | | | | | | | | | Reviewers: tejohnson, eraman Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D22980 llvm-svn: 277534
* [CFLAA] Be more conservative with values we haven't seen.George Burgess IV2016-08-021-11/+16
| | | | | | | | | | | | | | There were issues with simply reporting AttrUnknown on previously-unknown values in CFLAnders. So, we now act *entirely* conservatively for values we haven't seen before. As in the prior patch (r277362), writing a lit test for this isn't exactly trivial. If someone wants a test badly, I'm willing to try to write one. Patch by Jia Chen. Differential Revision: https://reviews.llvm.org/D23077 llvm-svn: 277533
* Move to having a single real instructionClobbersQueryDaniel Berlin2016-08-021-88/+94
| | | | | | | | | | | | Summary: We really want to move towards MemoryLocOrCall (or fix AA) everywhere, but for now, this lets us have a single instructionClobbersQuery. Reviewers: george.burgess.iv Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D23072 llvm-svn: 277530
* PDB: Mark extended file pages as free by default.Rui Ueyama2016-08-021-1/+1
| | | | | | | | | BitVector::extend initializes extended bits as true by default. That is not desirable because new pages should be initially free. Differential Revision: https://reviews.llvm.org/D23048 llvm-svn: 277529
* [Hexagon] Recognize vcombine in copy propagationKrzysztof Parzyszek2016-08-022-2/+56
| | | | llvm-svn: 277528
* [LoopUnroll] Fix a PowerPC test broken by r277524.Michael Zolotukhin2016-08-021-1/+1
| | | | llvm-svn: 277527
* [LoopUnroll] Switch the default value of -unroll-runtime-epilog back to its ↵Michael Zolotukhin2016-08-0210-50/+26
| | | | | | | | | | original value. As agreed in post-commit review of r265388, I'm switching the flag to its original value until the 90% runtime performance regression on SingleSource/Benchmarks/Stanford/Bubblesort is addressed. llvm-svn: 277524
* [lli] Add the ability for OrcLazyJIT to accept multiple input modules.Lang Hames2016-08-023-6/+19
| | | | | | | | | | | LLI already supported passing multiple input modules to MCJIT via the -extra-module option. This patch adds the plumbing to pass these modules to the OrcLazy JIT too. This functionality will be used in an upcoming test case for weak symbol handling. llvm-svn: 277521
OpenPOWER on IntegriCloud