summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* ELF can handle some relocations of the form -sym + constant.Rafael Espindola2015-11-023-11/+3
| | | | | | | | Remove code that was assuming that this would never work. Thanks to Colin LeMahie for finding and diagnosing the bug. llvm-svn: 251818
* Convert tabs to spaces.Rafael Espindola2015-11-021-2/+2
| | | | llvm-svn: 251817
* Fix two issues in MergeConsecutiveStores:James Y Knight2015-11-024-13/+72
| | | | | | | | | | | | | | | | | | | | | | 1) PR25154. This is basically a repeat of PR18102, which was fixed in r200201, and broken again by r234430. The latter changed which of the store nodes was merged into from the first to the last. Thus, we now also need to prefer merging a later store at a given address into the target node, instead of an earlier one. 2) While investigating that, I also realized I'd introduced a bug in r236850. There, I removed a check for alignment -- not realizing that nothing except the alignment check was ensuring that none of the stores were overlapping! This is a really bogus way to ensure there's no aliased stores. A better solution to both of these issues is likely to always use the code added in the 'if (UseAA)' branches which rearrange the chain based on a more principled analysis. I'll look into whether that can be used always, but in the interest of getting things back to working, I think a minimal change makes sense. llvm-svn: 251816
* MachO: improve load command tests slightlyTim Northover2015-11-022-4/+22
| | | | llvm-svn: 251815
* WatchOS: update default CPU for triple after t2dsp -> dsp renameTim Northover2015-11-022-2/+6
| | | | llvm-svn: 251814
* Clang format a few prior patches (NFC)Teresa Johnson2015-11-0212-299/+340
| | | | | | | I had clang formatted my earlier patches using the wrong style. Reformatted with the LLVM style. llvm-svn: 251812
* TvOS: add missing support for some libcalls.Tim Northover2015-11-023-32/+44
| | | | llvm-svn: 251811
* Preserve load alignment and dereferenceable metadata during some transformationsArtur Pilipenko2015-11-0216-9/+327
| | | | | | | | Reviewed By: hfinkel Differential Revision: http://reviews.llvm.org/D13953 llvm-svn: 251809
* lit: Add '-a' option to display commands+output of all testsMatthias Braun2015-11-021-4/+9
| | | | | | | The existing -v option only displays commands and outputs for failed tests, the newly introduced -a displays it for all executed tests. llvm-svn: 251806
* Add missing override statements in ScalarEvolution.h. NFCSilviu Baranga2015-11-021-2/+2
| | | | llvm-svn: 251805
* Use static instead of anonymous namespace for helper functions. NFC.Pawel Bylica2015-11-022-9/+4
| | | | llvm-svn: 251801
* [SCEV][LV] Add SCEV Predicates and use them to re-implement stride versioningSilviu Baranga2015-11-027-132/+516
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: SCEV Predicates represent conditions that typically cannot be derived from static analysis, but can be used to reduce SCEV expressions to forms which are usable for different optimizers. ScalarEvolution now has the rewriteUsingPredicate method which can simplify a SCEV expression using a SCEVPredicateSet. The normal workflow of a pass using SCEVPredicates would be to hold a SCEVPredicateSet and every time assumptions need to be made a new SCEV Predicate would be created and added to the set. Each time after calling getSCEV, the user will call the rewriteUsingPredicate method. We add two types of predicates SCEVPredicateSet - implements a set of predicates SCEVEqualPredicate - tests for equality between two SCEV expressions We use the SCEVEqualPredicate to re-implement stride versioning. Every time we version a stride, we will add a SCEVEqualPredicate to the context. Instead of adding specific stride checks, LoopVectorize now adds a more generic SCEV check. We only need to add support for this in the LoopVectorizer since this is the only pass that will do stride versioning. Reviewers: mzolotukhin, anemet, hfinkel, sanjoy Subscribers: sanjoy, hfinkel, rengolin, jmolloy, llvm-commits Differential Revision: http://reviews.llvm.org/D13595 llvm-svn: 251800
* Fix for bootstrap bug introduced in r244921Nemanja Ivanovic2015-11-024-14/+30
| | | | | | | | | | This revision has introduced an issue that only affects bootstrapped compiler when it is printing the ASM. It turns out that the new code path taken due to legalizing a scalar_to_vector of i64 -> v2i64 exposes a missing check in a micro optimization to change a load followed by a scalar_to_vector into a load and splat instruction on PPC. llvm-svn: 251798
* This doesn't need a object::Archive::child_iterator.Rafael Espindola2015-11-021-2/+2
| | | | llvm-svn: 251796
* Avoid implicitly constructing a Archive::child_iterator.Rafael Espindola2015-11-021-10/+10
| | | | llvm-svn: 251794
* [PatternMatch] Switch to use ValueTracking::matchSelectPatternJames Molloy2015-11-021-39/+24
| | | | | | | Instead of rolling our own min/max matching code (which is notoriously hard to get completely right), use ValueTracking's instead. llvm-svn: 251785
* [Support] Extend sys::path with user_cache_directory function.Pawel Bylica2015-11-025-21/+119
| | | | | | | | | | | | | | | | | | | | Summary: The new function sys::path::user_cache_directory tries to discover a directory suitable for cache storage for current system user. On Windows and Darwin it returns a path to system-specific user cache directory. On Linux it follows XDG Base Directory Specification, what is: - use non-empty $XDG_CACHE_HOME env var, - use $HOME/.cache. Reviewers: chapuni, aaron.ballman, rafael Subscribers: rafael, aaron.ballman, llvm-commits Differential Revision: http://reviews.llvm.org/D13801 llvm-svn: 251784
* AVX512: Implemented encoding and intrinsics for VBROADCASTI32x2 and ↵Igor Breger2015-11-028-0/+542
| | | | | | | | VBROADCASTF32x2 instructions. Differential Revision: http://reviews.llvm.org/D14216 llvm-svn: 251781
* [X86] Remove assertions that check for valid scale values on scatter/gather ↵Craig Topper2015-11-021-8/+0
| | | | | | intrinsics. Nothing upstream prevented illegal values from getting here. llvm-svn: 251780
* [X86] Don't pass a scale value of 0 to scatter/gather intrinsics. This ↵Craig Topper2015-11-021-52/+52
| | | | | | causes the code emitter to throw an assertion if we try to encode it. Need to add a check to fail isel for this, but for now avoid testing it. llvm-svn: 251779
* [X86] Fold 'if' followed by just an llvm_unreachable into an assert.Craig Topper2015-11-021-8/+7
| | | | llvm-svn: 251778
* [X86] Use isa instead of dyn_cast in a bool context. NFCCraig Topper2015-11-021-2/+2
| | | | llvm-svn: 251777
* [X86] Remove some llvm_unreachables after switches that already have an ↵Craig Topper2015-11-021-5/+3
| | | | | | unreachable in their default case. llvm-svn: 251776
* [X86] Remove a 'break' after an llvm_unreachable.Craig Topper2015-11-021-3/+1
| | | | llvm-svn: 251775
* [X86] Use cast instead of dyn_cast and a null check marked unreachable.Craig Topper2015-11-021-8/+3
| | | | llvm-svn: 251774
* Fix a -Wpessimizing-move warning.Craig Topper2015-11-021-1/+1
| | | | llvm-svn: 251773
* [X86] Use MVT instead of EVT when the type is known to be simple. NFCCraig Topper2015-11-022-89/+80
| | | | llvm-svn: 251772
* [PGO] Value profiling (index format) code cleanup and testingXinliang David Li2015-11-026-93/+418
| | | | | | | | | | | | | | | | | 1. Added a set of public interfaces in InstrProfRecord class to access (read/write) value profile data. 2. Changed IndexedProfile reader and writer code to use the newly defined interfaces and hide implementation details. 3. Added a couple of unittests for value profiling: - Test new interfaces to get and set value profile data - Test value profile data merging with various scenarios. No functional change is expected. The new interfaces will also make it possible to change on-disk format of value prof data to be more compact (to be submitted). llvm-svn: 251771
* [SCEV] Fix PR25369Sanjoy Das2015-11-022-27/+104
| | | | | | | | | | | | | Have `getConstantEvolutionLoopExitValue` work correctly with multiple entry loops. As far as I can tell, `getConstantEvolutionLoopExitValue` never did the right thing for multiple entry loops; and before r249712 it would silently return an incorrect answer. r249712 changed SCEV to fail an assert on a multiple entry loop, and this change fixes the underlying issue. llvm-svn: 251770
* Untabify.NAKAMURA Takumi2015-11-023-7/+7
| | | | llvm-svn: 251769
* [LibraryInfo] Point to FreeBSD HEAD repo and not to a dolphin branch.Davide Italiano2015-11-011-2/+2
| | | | | | The latter might go away (anytime soon). llvm-svn: 251765
* AVX-512: Optimized SIMD truncate operations for AVX512F set.Elena Demikhovsky2015-11-014-83/+224
| | | | | | | | | | | | Optimized <8 x i32> to <8 x i16> <4 x i64> to < 4 x i32> <16 x i16> to <16 x i8> All these oprtrations use now AVX512F set (KNL). Before this change it was implemented with AVX2 set. Differential Revision: http://reviews.llvm.org/D14108 llvm-svn: 251764
* RuntimeDyld: add COFF i386 supportSaleem Abdulrasool2015-11-013-0/+268
| | | | | | | This adds support for COFF I386. This is sufficient for code execution in a 32-bit JIT, though, imported symbols need to custom lowered for the redirection. llvm-svn: 251761
* Make a few definitions static. NFC.Rafael Espindola2015-11-011-5/+6
| | | | llvm-svn: 251759
* Use Child instead of child_iterator in the archive writer.Rafael Espindola2015-11-013-12/+11
| | | | | | | We never need to pass end(). This will also remove some complication once we start adding error checking. llvm-svn: 251758
* Simplify a check. NFC.Davide Italiano2015-11-011-2/+2
| | | | llvm-svn: 251757
* [SCEV] Don't create SCEV expressions that break LCSSASanjoy Das2015-10-313-0/+62
| | | | | | | | | | | | | Prevent `createNodeFromSelectLikePHI` from creating SCEV expressions that break LCSSA. A better fix for the same issue is to teach SCEVExpander to not break LCSSA by inserting PHI nodes at appropriate places. That's planned for the future. Fixes PR25360. llvm-svn: 251756
* [SCEV] Use auto and range for; NFCSanjoy Das2015-10-311-10/+7
| | | | llvm-svn: 251755
* [SimplifyLibCalls] Factor out other common code.Davide Italiano2015-10-311-21/+10
| | | | llvm-svn: 251754
* This can take a const reference. NFC.Rafael Espindola2015-10-311-1/+1
| | | | llvm-svn: 251753
* SamplePGO - Count sample records in embedded profiles when computing coverage.Diego Novillo2015-10-313-30/+191
| | | | | | | The initial coverage checking code for sample records failed to count records inside inlined profiles. This change fixes the oversight. llvm-svn: 251752
* [X86] Replace getScalarType with getVectorElementType when the type is ↵Craig Topper2015-10-311-29/+29
| | | | | | already known to be a vector. This should result in slightly less code. NFC llvm-svn: 251751
* Don't store a Child to the first regular member.Rafael Espindola2015-10-312-9/+24
| | | | | | | | | | This is a bit ugly, but has a few advantages: * Archive is now easy to copy since there is no Archive -> Child -> Archive loop. * It makes it clear that we already checked for errors when finding the Child data. llvm-svn: 251750
* Delete dead code.Rafael Espindola2015-10-311-8/+0
| | | | llvm-svn: 251749
* Simplify handling of archive Symbol tables.Rafael Espindola2015-10-313-23/+18
| | | | | | We only need to store a StringRef. llvm-svn: 251748
* [SimplifyLibCalls] Add test to ensure transform is not executed if fast-mathDavide Italiano2015-10-311-0/+25
| | | | | | | | | | | | | | | attribute is not present. During my refactor in r251595 I changed the behavior of optimizeSqrt(), skipping the transformation if the function wasn't marked with unsafe-fp-math attribute. This fixed a bug, as confirmed by Sanjay (before the optimization was silently executed anyway), although it wasn't my primary aim. This commit adds a test to ensure the code doesn't break again. Reported by: Marcello Maggioni Discussed with: Sanjay Patel llvm-svn: 251747
* Simplify the handling of the archive string table.Rafael Espindola2015-10-312-13/+11
| | | | | | We only need to store a StringRef llvm-svn: 251746
* [X86] Convert to MVT instead of calling EVT functions since we already know ↵Craig Topper2015-10-311-2/+2
| | | | | | the type is simple. NFC llvm-svn: 251745
* [X86] Call getScalarSizeInBits() instead of ↵Craig Topper2015-10-311-5/+5
| | | | | | getScalarType().getScalarSizeInBits(). NFC llvm-svn: 251744
* [X86] Remove two const references to the return value of a constructor and ↵Craig Topper2015-10-311-2/+2
| | | | | | just use normal object creation syntax. NFC llvm-svn: 251743
OpenPOWER on IntegriCloud