summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* LoadStoreVectorizer: if one element of a vector is integer, default toMatt Arsenault2016-07-012-3/+19
| | | | | | | | | | | | integer. Fixes issues on some architectures where we use arithmetic ops to build vectors, which can cause bad things to happen for loads/stores of mixed types. Patch by Fiona Glaser llvm-svn: 274307
* LoadStoreVectorizer: Fix crashes on sub-byte typesMatt Arsenault2016-07-012-2/+213
| | | | llvm-svn: 274306
* code hoisting pass based on GVNSebastian Pop2016-07-0110-4/+1418
| | | | | | | | | | | | | This pass hoists duplicated computations in the program. The primary goal of gvn-hoist is to reduce the size of functions before inline heuristics to reduce the total cost of function inlining. Pass written by Sebastian Pop, Aditya Kumar, Xiaoyu Hu, and Brian Rzycki. Important algorithmic contributions by Daniel Berlin under the form of reviews. Differential Revision: http://reviews.llvm.org/D19338 llvm-svn: 274305
* Target: Remove unused arguments from overrideSchedPolicy, NFCDuncan P. N. Exon Smith2016-07-019-16/+3
| | | | | | | | | | TargetSubtargetInfo::overrideSchedPolicy takes two MachineInstr* arguments (begin and end) that invite implicit conversions from MachineInstrBundleIterator. One option would be to change their type to an iterator, but since they don't seem to have been used since the API was added in 2010, I'm deleting the dead code. llvm-svn: 274304
* CodeGen: Use MachineInstr& in MachineSink, NFCDuncan P. N. Exon Smith2016-07-011-52/+49
| | | | | | | Use MachineInstr& instead of MachineInstr* in MachineSinker to help avoid implicit conversions from iterator to pointer. llvm-svn: 274303
* [LAA] Fix alphabetical sorting of headers. NFCAdam Nemet2016-07-011-1/+1
| | | | llvm-svn: 274302
* CodeGen: Use MachineInstr& more in MachineTraceMetrics, NFCDuncan P. N. Exon Smith2016-07-011-20/+20
| | | | | | | | Push MachineInstr& through helper APIs for consistency. This doesn't remove any more implicit conversions, but it's a nice cleanup after r274300. llvm-svn: 274301
* CodeGen: Use MachineInstr& in MachineTraceMetrics, NFCDuncan P. N. Exon Smith2016-06-301-14/+14
| | | | | | This avoids an implicit conversion from iterator to pointer. llvm-svn: 274300
* LoadStoreVectorizer: Check skipFunction first.Matt Arsenault2016-06-302-4/+14
| | | | | | Also add test I forgot to add to r274296. llvm-svn: 274299
* CodeGen: Use MachineInstr& in LocalStackSlotAllocation, NFCDuncan P. N. Exon Smith2016-06-301-35/+29
| | | | | | | Avoid a number of implicit conversions from iterator to pointer by using range-based for and MachineInstr&. llvm-svn: 274298
* CodeGen: Use range-based for in LiveVariables, NFCDuncan P. N. Exon Smith2016-06-301-6/+4
| | | | | | | Avoid an implicit iterator to pointer conversion in LiveVariables::runOnBlock by switching to a range-based for. llvm-svn: 274297
* LoadStoreVectorizer: Skip optnone functionsMatt Arsenault2016-06-302-1/+13
| | | | llvm-svn: 274296
* CodeGen: Use MachineInstr& in HoistSpillHelper, NFCDuncan P. N. Exon Smith2016-06-301-14/+15
| | | | | | Avoid another few implicit conversions from iterator to pointer. llvm-svn: 274295
* CodeGen: Use MachineInstr& in LDVImpl::handleDebugValue, NFCDuncan P. N. Exon Smith2016-06-301-14/+13
| | | | | | Avoid another implicit conversion from iterator to pointer. llvm-svn: 274294
* Add LoadStoreVectorizer passMatt Arsenault2016-06-3013-1/+1825
| | | | | | | This was contributed by Apple, and I've been working on minimal cleanups and generalizing it. llvm-svn: 274293
* CodeGen: Use MachineInstr& in ExpandISelPseudos, NFCDuncan P. N. Exon Smith2016-06-301-3/+3
| | | | | | | Avoid another implicit conversion from MachineInstrBundleIterator to MachineInstr* by using MachineInstr&. llvm-svn: 274292
* [Sema] Implement C++14's DR1579: Prefer returning by converting move constructorErik Pilkington2016-06-305-50/+114
| | | | | | | | Fixes PR28096. Differential Revision: http://reviews.llvm.org/D21619 llvm-svn: 274291
* CodeGen: Use MachineInstr& in IfConversion, NFCDuncan P. N. Exon Smith2016-06-301-9/+9
| | | | | | | | Switch to a range-based for in IfConverter::PredicateBlock and take MachineInstr& in MaySpeculate to avoid an implicit conversion from MachineBasicBlock::iterator to MachineInstr*. llvm-svn: 274290
* Remove non-ASCII characters (silly smart quotes). Thanks to Hal forChandler Carruth2016-06-302-7/+7
| | | | | | noticing. llvm-svn: 274289
* [TableGen] Use a SmallVector for Record::Values to avoid debug iteratorsReid Kleckner2016-06-301-3/+3
| | | | | | | | | | | | | Debug iterators are valuable so we don't want to turn them off completely. However, llvm-tblgen is critical to build speed, so we can skip them here. Regenerating X86GenSubtargetInfo.inc in a clang-cl self-host debug build now takes 39s instead of 1m29s. Helps PR28222 llvm-svn: 274288
* CodeGen: Use MachineInstr& in TargetLowering, NFCDuncan P. N. Exon Smith2016-06-3036-1257/+1338
| | | | | | | | | | | | | This is a mechanical change to make TargetLowering API take MachineInstr& (instead of MachineInstr*), since the argument is expected to be a valid MachineInstr. In one case, changed a parameter from MachineInstr* to MachineBasicBlock::iterator, since it was used as an insertion point. As a side effect, this removes a bunch of MachineInstr* to MachineBasicBlock::iterator implicit conversions, a necessary step toward fixing PR26753. llvm-svn: 274287
* Replace __make_tuple_indices implementation with superior implementation.Eric Fiselier2016-06-302-77/+81
| | | | | | | | | | | | | | | | | The previous __make_tuple_indices implementation caused O(N) instantiations and was pretty inefficient. The C++14 __make_integer_sequence implementation is much better, since it either uses a builtin to generate the sequence or a very nice Log8(N) implementation provided by richard smith. This patch moves the __make_integer_sequence implementation into __tuple and uses it to implement __make_tuple_indices. Since libc++ can't expose the name 'integer_sequence' in C++11 this patch also introduces a dummy type '__integer_sequence' which is used when generating the sequence. One the sequence is generated '__integer_sequence' can be converted into the required type; either '__tuple_indices' or 'integer_sequence'. llvm-svn: 274286
* Fix static assert problem on gcc; remove XFAILs that I put in in r274250Marshall Clow2016-06-308-18/+6
| | | | llvm-svn: 274285
* Test commit.David L Kreitzer2016-06-301-1/+1
| | | | llvm-svn: 274284
* [OpenMP] Use fopenmp prefix for all options introduced by the offloading ↵Samuel Antao2016-06-3023-411/+411
| | | | | | | | | | | | | | implementation. Summary: This patch changes the options used by offloading to start with -fopenmp instead of -fomp. This makes the option naming more consistent and materializes a suggestion by Richard Smith in http://reviews.llvm.org/D9888. Reviewers: hfinkel, carlo.bertolli, arpith-jacob, ABataev Subscribers: kkwli0, cfe-commits, caomhin Differential Revision: http://reviews.llvm.org/D21841 llvm-svn: 274283
* Don't use unchecked dyn_castMatt Arsenault2016-06-301-1/+1
| | | | llvm-svn: 274282
* SLPVectorizer: Move propagateMetadata to VectorUtilsMatt Arsenault2016-06-305-69/+83
| | | | | | | | This will be re-used by the LoadStoreVectorizer. Fix handling of range metadata and testcase by Justin Lebar. llvm-svn: 274281
* fix typo; NFCSanjay Patel2016-06-301-1/+1
| | | | llvm-svn: 274278
* Fix for Windows builds.Adrian McCarthy2016-06-301-0/+6
| | | | llvm-svn: 274277
* ScopInfo: Add array_begin() and array_end() iteratorsTobias Grosser2016-06-301-2/+16
| | | | | | | | These iterators are provided to complete the interface with non-range iterators and are useful for external users of ScopInfo. To ensure they are tested we use them to implement the existing range iterators. llvm-svn: 274276
* AMDGPU: Add m0 vgpr load loop block as successorMatt Arsenault2016-06-301-0/+1
| | | | | | | This shows up as a verifier error when I move this earlier, not sure why it didn't before. llvm-svn: 274275
* Fix C++03 build.Eric Fiselier2016-06-305-1/+16
| | | | llvm-svn: 274274
* [libFuzzer] Let user specify extra stats file.Mike Aizatsky2016-06-303-4/+208
| | | | | | | | | | | | Summary: If AFL_DRIVER_EXTRA_STATS_FILENAME is set and valid, write to it peak_rss_mb and slowest_unit_time_sec. These are both stats that libFuzzer can print but afl cannot. Reviewers: kcc, aizatsky, metzman Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D21742 llvm-svn: 274273
* Propagate on-error statusTobias Grosser2016-06-302-2/+5
| | | | | | | | | | | | | | | | This ensures that the error status set with -polly-on-isl-error-abort is maintained even after running DependenceInfo and ScheduleOptimizer. Both passes temporarily set the error status to CONTINUE as the dependence analysis uses a compute-out and the scheduler may not be able to derive a schedule. In both cases we want to not abort, but to handle the error gracefully. Before this commit, we always set the error reporting to ABORT after these passes. After this commit, we use the error reporting mode that was active earlier. This comes without a test case as this would require us to introduce (memory) errors which would trigger the isl errors. llvm-svn: 274272
* Simplify: get isl_ctx only once [NFC]Tobias Grosser2016-06-301-10/+11
| | | | | | ... instead of call S.getIslCtx() many times. llvm-svn: 274271
* [CMake] Module builds depend on target intrinsics_gen to be built first.Vassil Vassilev2016-06-301-0/+9
| | | | | | | | | | | | | | When compiling with modules, header A and B can be in the same module M. B depends on intrinsics_gen and A doesn't. Compiling a source file #include-ing header A, we implicitly request module M to be built. It puts header A and B in the same TU and tries to build them. Since B depends on intrinsics_gen (which might not be built yet) we run into build failures. This should fix our modules buildbot. Patch reviewed by Chris Bieneman. llvm-svn: 274270
* Fix ASTMatchersNodeTest to work on Windows.Justin Lebar2016-06-301-7/+5
| | | | | | | | | | | It was failing because it had an explicit check for whether we're on Windows. There are a few other similar explicit checks in this file which I didn't remove because they serve as reasonable documentation that the test doesn't work with a Windows triple. llvm-svn: 274269
* Introduce a *draft* of a code of conduct for the LLVM community and theChandler Carruth2016-06-303-0/+256
| | | | | | | | | | | | | | | | | | | | | | | | | | | associated reporting guide. I want to emphasize that at this point these are just drafts! This is the result of very extended discussion on the mailing lists on several different threads: http://lists.llvm.org/pipermail/llvm-dev/2015-October/091218.html http://lists.llvm.org/pipermail/llvm-dev/2016-May/099120.html http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20151019/307070.html The reporting guide in particular I anticipate will be shaped somewhat by the advisory committee when they are selected. But hopefully this serves as a good starting point and good guidance while the advisory committee is being sorted out. I'd like to thank all the folks who contributed to this. Many, *many* people worked to help with drafting, wording, suggestions, and edits. Also, this is based on widely used existing codes of coduct as mentioned in the text, and the original authors of those deserve many thanks as well. Differential Revision: http://reviews.llvm.org/D13741 llvm-svn: 274268
* Fix typo-correction crash if a typo occurs within the operand of aRichard Smith2016-06-304-5/+16
| | | | | | | | | function-style cast to a non-dependent type which is then used in an invalid way. We'd lose the "type dependent" bit here, and downstream Sema processing would then discard the expression if it was used in a context where its type rendered it invalid. llvm-svn: 274267
* [compiler-rt] Re-active unittest previously broken on windows.Etienne Bergeron2016-06-301-4/+0
| | | | | | | | | | | | Summary: These tests are working fine. Reviewers: rnk Subscribers: kubabrecka, wang0109, llvm-commits, chrisha Differential Revision: http://reviews.llvm.org/D21905 llvm-svn: 274265
* [compiler-rt] Fix TLS resource leaking in unittestEtienne Bergeron2016-06-301-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The thread specific key wasn't not released. Running the unittest in loop will fail after 1024 iteraions. ``` ./projects/compiler-rt/lib/sanitizer_common/tests/Sanitizer-i386-Test --gtest_filter=SanitizerCommon.PthreadDestructorIterations --gtest_repeat=2000 --gtest_break_on_failure ``` ``` Repeating all tests (iteration 1023) . . . Note: Google Test filter = SanitizerCommon.PthreadDestructorIterations [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from SanitizerCommon [ RUN ] SanitizerCommon.PthreadDestructorIterations /usr/local/google/home/etienneb/llvm/llvm/projects/compiler-rt/lib/sanitizer_common/tests/sanitizer_posix_test.cc:54: Failure Value of: pthread_key_create(&key, &destructor) Actual: 11 Expected: 0 Aborted (core dumped) ``` Reviewers: rnk Subscribers: kubabrecka, llvm-commits, chrisha Differential Revision: http://reviews.llvm.org/D21902 llvm-svn: 274264
* Add an artificial line-0 debug location when the compiler emits a call toYunzhong Gao2016-06-302-0/+26
| | | | | | | | __stack_chk_fail(). This avoids a compiler crash. Differential Revision: http://reviews.llvm.org/D21818 llvm-svn: 274263
* Refine the set of UniformAfterVectorization instructions.Wei Mi2016-06-302-26/+121
| | | | | | | | | | Except the seed uniform instructions (conditional branch and consecutive ptr instructions), dependencies to be added into uniform set should only be used by existing uniform instructions or intructions outside of current loop. Differential Revision: http://reviews.llvm.org/D21755 llvm-svn: 274262
* [CUDA] Give templated device functions internal linkage, templated kernels ↵Justin Lebar2016-06-302-5/+14
| | | | | | | | | | | | | | | | | external linkage. Summary: This lets LLVM perform IPO over these functions. In particular, it allows LLVM to emit ld.global.nc for loads to __restrict pointers in kernels that are never written to. Reviewers: rsmith Subscribers: cfe-commits, tra Differential Revision: http://reviews.llvm.org/D21337 llvm-svn: 274261
* PR28373: fix crash-on-invalid if the condition of an if-statement fails ↵Richard Smith2016-06-302-1/+10
| | | | | | typo-correction. llvm-svn: 274260
* CodeGen: Add the other BuildMI overload for MachineInstr&Justin Bogner2016-06-301-7/+11
| | | | | | The change in r274193 missed this variant. llvm-svn: 274259
* Delete MCCodeGenInfo.Rafael Espindola2016-06-3023-354/+59
| | | | | | | MC doesn't really care about CodeGen stuff, so this was just complicating target initialization. llvm-svn: 274258
* Don't instantiate a full host toolchain in ASTMatchersTest.Justin Lebar2016-06-301-15/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This test was stat()'ing large swaths of /usr/lib hundreds of times, as every invocation of matchesConditionally*() created a new Linux toolchain. In addition to being slow, perf indicated this was causing substantial contention in the kernel. Something is...interesting in the kernel, as without this patch I sometimes see ~11m spent in the kernel, and sometimes ~5m. This corresponds to bimodal ninja check-clang times of ~30s and ~20s. It's not clear to me exactly what causes the bimodality. In any case, this change makes this test run in 2.5s, down from 17s, and it seems to cause us to get the 20s ninja check-clang time unconditionally. Reviewers: chandlerc Subscribers: cfe-commits, klimek Differential Revision: http://reviews.llvm.org/D21810 llvm-svn: 274257
* Improve ADB utilization within Android platform.Oleksiy Vyalov2016-06-305-188/+242
| | | | | | http://reviews.llvm.org/D21770 llvm-svn: 274256
* Mark issues 2550, 2551, 2555, 2685, 2698 as complete. These issues are ↵Marshall Clow2016-06-301-7/+7
| | | | | | wording clarifications; no code changes required. llvm-svn: 274255
OpenPOWER on IntegriCloud