summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Revert "[NewGVN] Replace predicate info leftovers."Davide Italiano2017-05-162-28/+0
| | | | | | It's breaking the bots. llvm-svn: 303142
* [NewGVN] Replace predicate info leftovers.Davide Italiano2017-05-162-0/+28
| | | | | | | | Fixes PR32945. Differential Revision: https://reviews.llvm.org/D33226 llvm-svn: 303141
* Revert "[clang-tidy] modernize-use-emplace: Remove unnecessary make_tuple calls"Jakub Kuderski2017-05-165-207/+29
| | | | | | This reverts commit r303139. The commit made docs build emit a warning. llvm-svn: 303140
* [clang-tidy] modernize-use-emplace: Remove unnecessary make_tuple callsJakub Kuderski2017-05-165-29/+207
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch makes modernize-use-emplace remove unnecessary make_ calls from push_back calls and turn them into emplace_back -- the same way make_pair calls are handled. Custom make_ calls can be removed for custom tuple-like types -- two new options that control that are `TupleTypes` and `TupleMakeFunctions`. By default, the check removes calls to `std::make_pair` and `std::make_tuple`. Eq. ``` std::vector<std::tuple<int, char, bool>> v; v.push_back(std::make_tuple(1, 'A', true)); // --> v.emplace_back(1, 'A', true); ``` Reviewers: alexfh, aaron.ballman, Prazek, hokein Reviewed By: Prazek Subscribers: JDevlieghere, xazax.hun, JonasToth, cfe-commits Tags: #clang-tools-extra Differential Revision: https://reviews.llvm.org/D32690 llvm-svn: 303139
* builtins: use reserved spelling (NFC)Saleem Abdulrasool2017-05-161-1/+1
| | | | llvm-svn: 303138
* AMDGPUCodeGen: Fix warnings in r303111. [-Wunused-variable]NAKAMURA Takumi2017-05-162-2/+4
| | | | llvm-svn: 303137
* [tsan] Update tsan test for r303084Vitaly Buka2017-05-161-1/+1
| | | | | | | Tail duplication changed number of pop instruction, but TSAN performance was not affected. llvm-svn: 303136
* Merge a test YAML file and a test file.Rui Ueyama2017-05-162-84/+84
| | | | llvm-svn: 303135
* IR: Give function GlobalValue::getRealLinkageName() a less misleading name: ↵Peter Collingbourne2017-05-1612-24/+28
| | | | | | | | | | | | dropLLVMManglingEscape(). This function gives the wrong answer on some non-ELF platforms in some cases. The function that does the right thing lives in Mangler.h. To try to discourage people from using this function, give it a different name. Differential Revision: https://reviews.llvm.org/D33162 llvm-svn: 303134
* [InstCombine] add tests for PR32791; NFCSanjay Patel2017-05-151-0/+70
| | | | llvm-svn: 303133
* [asan] make asan under sandboxes more robustKostya Serebryany2017-05-152-2/+32
| | | | llvm-svn: 303132
* Fix executable stack directive on Linux.Manoj Gupta2017-05-151-1/+2
| | | | | | | | | | | | | | Summary: Use __linux__ to check for Linux and bring back the check for __GNU__. Reviewers: echristo, krytarowski, compnerd, rengolin Reviewed By: krytarowski Subscribers: phosek, llvm-commits, srhines Differential Revision: https://reviews.llvm.org/D33219 llvm-svn: 303131
* [ShrinkWrapping] Handle restores on no-return pathsFrancis Visoiu Mistrih2017-05-153-5/+60
| | | | | | | | | | | | | | | | | | | Shrink-wrapping uses post-dominators to find a restore point that post-dominates all the uses of CSR / stack. The way dominator trees are modeled in LLVM today is that unreachable blocks are not present in a generic dominator tree, so, an unreachable node is dominated by anything: include/llvm/Support/GenericDomTree.h:467. Since for post-dominators, a no-return block is considered "unreachable", calling findNearestCommonDominator on an unreachable node A and a non-unreachable node B, will return B, which can be false. If we find such node, we bail out since there is no good restore point available. rdar://problem/30186931 llvm-svn: 303130
* [lsan] Report the missing linker only when the linker is actually missing.Alex Shlyapnikov2017-05-151-2/+4
| | | | | | | | | | Reviewers: eugenis Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D33218 llvm-svn: 303129
* [libFuzzer] fix tests on WindowsKostya Serebryany2017-05-151-0/+1
| | | | llvm-svn: 303128
* [InstSimplify] add tests for unnecessary mask of shifted values; NFCSanjay Patel2017-05-151-0/+67
| | | | llvm-svn: 303127
* Fix memory leakXinliang David Li2017-05-151-0/+4
| | | | llvm-svn: 303126
* [libFuzzer] improve the afl driver and it's tests. Make it possible to run ↵Kostya Serebryany2017-05-153-13/+77
| | | | | | individual inputs with afl driver llvm-svn: 303125
* Fix git command line in the Getting Started guide.Rui Ueyama2017-05-151-1/+1
| | | | | | | By default, git creates "llvm-project-20170507" directory, but we want to create "llvm-project" directory. llvm-svn: 303124
* Add "REQUIRES:" to the last few tests that use target specific intrinsicsJustin Bogner2017-05-152-0/+2
| | | | llvm-svn: 303123
* [AMDGPU] Kill now unused phiInfoElementGetDebugLoc(). NFCI.Davide Italiano2017-05-151-5/+0
| | | | llvm-svn: 303122
* [Sema] Use CK_NoOp instead CK_Invalid in tryGCCVectorConvertAndSplatVitaly Buka2017-05-151-2/+2
| | | | | | | | | | | | This fix UBSAN bots after r302935. Storing non-defined values in enum is undefined behavior. Other places, where "if (ScalarCast != CK_Invalid)" is used, never get to the "if" with CK_Invalid. tryGCCVectorConvertAndSplat can get to the "if" with CK_Invalid and it looks like expected case. So we have to use something other than CK_Invalid, e.g. CK_NoOp. llvm-svn: 303121
* [APInt] Simplify a for loop initialization based on the fact that 'n' is ↵Craig Topper2017-05-151-1/+1
| | | | | | known to be 1 by an earlier 'if'. llvm-svn: 303120
* [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC).Eugene Zelenko2017-05-158-109/+188
| | | | llvm-svn: 303119
* AArch64: use linker-private symbols for globals in MachO.Tim Northover2017-05-154-2/+30
| | | | | | | | We don't use section-relative relocations on AArch64, so all symbols must be at least visible to the linker (i.e. properly global or l_whatever, but not L_whatever). llvm-svn: 303118
* PR32288: Describe a bool parameter's DWARF location with a simple registerDavid Blaikie2017-05-152-62/+99
| | | | | | | | | | | There's no need (& a bit incorrect) to mask off the high bits of the register reference when describing a simple bool value. Reviewers: aprantl Differential Revision: https://reviews.llvm.org/D31062 llvm-svn: 303117
* [SLP] Enable 64-bit wide vectorization on AArch64Adam Nemet2017-05-158-1/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ARM Neon has native support for half-sized vector registers (64 bits). This is beneficial for example for 2D and 3D graphics. This patch adds the option to lower MinVecRegSize from 128 via a TTI in the SLP Vectorizer. *** Performance Analysis This change was motivated by some internal benchmarks but it is also beneficial on SPEC and the LLVM testsuite. The results are with -O3 and PGO. A negative percentage is an improvement. The testsuite was run with a sample size of 4. ** SPEC * CFP2006/482.sphinx3 -3.34% A pretty hot loop is SLP vectorized resulting in nice instruction reduction. This used to be a +22% regression before rL299482. * CFP2000/177.mesa -3.34% * CINT2000/256.bzip2 +6.97% My current plan is to extend the fix in rL299482 to i16 which brings the regression down to +2.5%. There are also other problems with the codegen in this loop so there is further room for improvement. ** LLVM testsuite * SingleSource/Benchmarks/Misc/ReedSolomon -10.75% There are multiple small SLP vectorizations outside the hot code. It's a bit surprising that it adds up to 10%. Some of this may be code-layout noise. * MultiSource/Benchmarks/VersaBench/beamformer/beamformer -8.40% The opt-viewer screenshot can be seen at F3218284. We start at a colder store but the tree leads us into the hottest loop. * MultiSource/Applications/lambda-0.1.3/lambda -2.68% * MultiSource/Benchmarks/Bullet/bullet -2.18% This is using 3D vectors. * SingleSource/Benchmarks/Shootout-C++/Shootout-C++-lists +6.67% Noise, binary is unchanged. * MultiSource/Benchmarks/Ptrdist/anagram/anagram +4.90% There is an additional SLP in the cold code. The test runs for ~1sec and prints out over 2000 lines. This is most likely noise. * MultiSource/Applications/aha/aha +1.63% * MultiSource/Applications/JM/lencod/lencod +1.41% * SingleSource/Benchmarks/Misc/richards_benchmark +1.15% Differential Revision: https://reviews.llvm.org/D31965 llvm-svn: 303116
* Revert r302678 "[AArch64] Enable use of reduction intrinsics."Hans Wennborg2017-05-159-213/+750
| | | | | | | | | | | | | | | | | | This caused PR33053. Original commit message: > The new experimental reduction intrinsics can now be used, so I'm enabling this > for AArch64. We will need this for SVE anyway, so it makes sense to do this for > NEON reductions as well. > > The existing code to match shufflevector patterns are replaced with a direct > lowering of the reductions to AArch64-specific nodes. Tests updated with the > new, simpler, representation. > > Differential Revision: https://reviews.llvm.org/D32247 llvm-svn: 303115
* [asan] One more test for -fsanitize-address-globals-dead-stripping.Evgeniy Stepanov2017-05-151-0/+11
| | | | llvm-svn: 303114
* [asan] Better workaround for gold PR19002.Evgeniy Stepanov2017-05-151-2/+11
| | | | | | See the comment for more details. Test in a follow-up CFE commit. llvm-svn: 303113
* [builtins] Fix a check from __GNU__ to __GNUC__ for disabling executable stack.Manoj Gupta2017-05-151-1/+1
| | | | | | | | | | | | | Summary: Neither GCC nor Clang define __GNU__. Instead use __GNUC__ for the check. Reviewers: echristo, rengolin, compnerd Subscribers: srhines, krytarowski, llvm-commits Differential Revision: https://reviews.llvm.org/D33211 llvm-svn: 303112
* Re-submit AMDGPUMachineCFGStructurizer.Jan Sjodin2017-05-157-12/+3245
| | | | | | Differential Revision: https://reviews.llvm.org/D23209 llvm-svn: 303111
* [TypeSystem] Fix inspection of Objective-C object typesSean Callanan2017-05-154-4/+98
| | | | | | | | | | | | | | ptr_refs exposed a problem in ClangASTContext's implementation: it uses an accessor to downcast a QualType to an ObjCObjectPointerType, but the accessor is not fully general. getAs() is the safer way to go. I've added a test case that uses ptr_refs in a way that would crash before the fix. <rdar://problem/31363513> llvm-svn: 303110
* AArch64: diagnose unrecognized features in .cpu directive.Tim Northover2017-05-152-2/+26
| | | | | | | We were silently ignoring any features we couldn't match up, which led to errors in an inline asm block missing the conventional "\n\t". llvm-svn: 303108
* [NewGVN] Remove unused setDefiningExpr(). NFCI.Davide Italiano2017-05-151-1/+0
| | | | llvm-svn: 303107
* clang-format: [JS] for async loops.Martin Probst2017-05-153-3/+23
| | | | | | | | | | | | | | | Summary: JavaScript supports asynchronous loop iteration in async functions: for async (const x of y) ... Reviewers: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D33193 llvm-svn: 303106
* [InstCombine] restrict icmp fold with 2 sdiv exact operands (PR32949)Sanjay Patel2017-05-152-4/+13
| | | | | | | | | | | | | | | | This is the InstCombine counterpart to D32954. I added some comments about the code duplication in: rL302436 Alive-based verification: http://rise4fun.com/Alive/dPw This is a 2nd fix for the problem reported in: https://bugs.llvm.org/show_bug.cgi?id=32949 Differential Revision: https://reviews.llvm.org/D32970 llvm-svn: 303105
* [InstSimplify] restrict icmp fold with 2 sdiv exact operands (PR32949)Sanjay Patel2017-05-152-4/+16
| | | | | | | | | | | | | | | | | | | | These folds were introduced with https://reviews.llvm.org/rL127064 as part of solving: https://bugs.llvm.org/show_bug.cgi?id=9343 As shown here: http://rise4fun.com/Alive/C8 ...however, the sdiv exact case needs a stronger predicate. I opted for duplicated code instead of adding another fallthrough because I think that's easier to read (and edit in case we need/want to restrict/loosen the predicates any more). This should fix: https://bugs.llvm.org/show_bug.cgi?id=32949 https://bugs.llvm.org/show_bug.cgi?id=32948 Differential Revision: https://reviews.llvm.org/D32954 llvm-svn: 303104
* builtins: fix filtering aliased targetsSaleem Abdulrasool2017-05-151-1/+8
| | | | | | | | | Some build targets (e.g. i686) have aliased names (e.g. i386). We would get multiple definitions previously and have the linker arbitrarily select a definition on those aliased targets. Make this more deterministic by checking those aliases. llvm-svn: 303103
* The patch adds CTLZ idiom recognition.Evgeny Stupachenko2017-05-153-1/+664
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The following loops should be recognized: i = 0; while (n) { n = n >> 1; i++; body(); } use(i); And replaced with builtin_ctlz(n) if body() is empty or for CPUs that have CTLZ instruction converted to countable: for (j = 0; j < builtin_ctlz(n); j++) { n = n >> 1; i++; body(); } use(builtin_ctlz(n)); Reviewers: rengolin, joerg Differential Revision: http://reviews.llvm.org/D32605 From: Evgeny Stupachenko <evstupac@gmail.com> llvm-svn: 303102
* Fix for KMP_AFFINITY=respect with multiple processor groupsJonathan Peyton2017-05-151-3/+2
| | | | | | | | | An assert() was being tripped when KMP_AFFINITY=respect + Multiple Processor Groups. Let __kmp_affinity_create_proc_group_map() function be able to create address2os object which contains a single group by deleting restriction that process affinity mask must span multiple groups. llvm-svn: 303101
* [NewGVN] Fix verification of MemoryPhis in verifyMemoryCongruency().Davide Italiano2017-05-152-0/+42
| | | | | | | | | | | | verifyMemoryCongruency() filters out trivially dead MemoryDef(s), as we find them immediately dead, before moving from TOP to a new congruence class. This fixes the same problem for PHI(s) skipping MemoryPhis if all the operands are dead. Differential Revision: https://reviews.llvm.org/D33044 llvm-svn: 303100
* [AArch64][Falkor] Fix sched details for FMOVGeoff Berry2017-05-152-4/+6
| | | | llvm-svn: 303099
* Revert 303091.Jan Sjodin2017-05-157-3380/+12
| | | | llvm-svn: 303098
* Disable threads in a few tests.Rafael Espindola2017-05-152-3/+6
| | | | | | They are too slow otherwise. We track the issue in pr32942. llvm-svn: 303097
* Add support for handling ifuncs to GlobalValue::getBaseObjectTeresa Johnson2017-05-153-2/+17
| | | | | | | | | | | | | | | | | Summary: All GlobalIndirectSymbol types (not just GlobalAlias) should return their base object. Without this patch LTO would warn "Unable to determine comdat of alias!" for an ifunc. Reviewers: pcc Subscribers: mehdi_amini, inglorion, llvm-commits Differential Revision: https://reviews.llvm.org/D33202 llvm-svn: 303096
* [clang-tidy] Fix a typo: dequeue => dequeHaojian Wu2017-05-151-1/+1
| | | | llvm-svn: 303095
* Revert "[ClangD] Refactor clangd into separate components"Adam Nemet2017-05-1520-1199/+737
| | | | | | | | | | This reverts commit r303067. Caused http://green.lab.llvm.org/green/job/clang-stage1-configure-RA/34305/ And even after Simon's fix there is still a test failure. llvm-svn: 303094
* Revert "Fix windows buildbots - missing include and namespace"Adam Nemet2017-05-153-3/+2
| | | | | | | | | This reverts commit r303078. One test is still failing even after this: http://green.lab.llvm.org/green/job/clang-stage1-configure-RA_check/31374/consoleFull#18373900728254eaf0-7326-4999-85b0-388101f2d404 llvm-svn: 303093
* [SCEV] Use copy initialization of APInts instead of direct initialization.Craig Topper2017-05-151-6/+6
| | | | | | This is based on post commit feed back from r302769. llvm-svn: 303092
OpenPOWER on IntegriCloud