- Apr 17, 2017
-
-
David Blaikie authored
Use default ref capture to simplify local lambdas, use a template to avoid std::function overhead, other cleanup llvm-svn: 300461
-
Ahmed Bougacha authored
This reverts commit r299730. It's causing failures on a bot because of missing compiler-rt: http://green.lab.llvm.org/green/job/clang-stage2-cmake-RgSan_check llvm-svn: 300460
-
Ahmed Bougacha authored
This reverts commit r299731. It's causing failures on a bot because of missing compiler-rt: http://green.lab.llvm.org/green/job/clang-stage2-cmake-RgSan_check llvm-svn: 300459
-
Ahmed Bougacha authored
This reverts commit r300228. It's causing failures on a bot because of missing compiler-rt: http://green.lab.llvm.org/green/job/clang-stage2-cmake-RgSan_check llvm-svn: 300458
-
Craig Topper authored
Introduce APInt::isSignBitSet/isSignBitClear. Use in place isSignBitSet in place of isNegative in known bits tracking. This makes statements like KnownZero.isNegative() (which means the value we're tracking is positive) less confusing. llvm-svn: 300457
-
Francis Ricci authored
Summary: This specifically addresses the Mach-O zero page, which we cannot read from. Reviewers: kubamracek, samsonov, alekseyshl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D32044 llvm-svn: 300456
-
Greg Clayton authored
Differential Revision: https://reviews.llvm.org/D32087 llvm-svn: 300455
-
Akira Hatanaka authored
Also, simplify code by calling MakeNaturalAlignAddrLValue. This is a follow-up to r300396. llvm-svn: 300454
-
Matt Arsenault authored
Causes some VGPR usage improvements in shaderdb, but introduces some SGPR spilling regressions due to random scheduling changes later. llvm-svn: 300453
-
Davide Italiano authored
We're gonna skip them anyway, so there's no point in inserting them in the first place. llvm-svn: 300452
-
Marshall Clow authored
llvm-svn: 300451
-
Francis Ricci authored
Summary: libxpc stashes some pointers here. Reviewers: kubamracek, alekseyshl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D32045 llvm-svn: 300450
-
Marshall Clow authored
llvm-svn: 300449
-
Andrey Churbanov authored
Patch by Ni Hui. Differential Revision: https://reviews.llvm.org/D31923 llvm-svn: 300448
-
Amaury Sechet authored
Summary: This seems like an uncontroversial first step toward providing access to the metadata hierarchy that now exists in LLVM. This should allow for good debug info support from C. Future plans are to deprecate API that take mixed bags of values and metadata (mainly the LLVMMDNode family of functions) and migrate the rest toward the use of LLVMMetadataRef. Once this is in place, mapping of DIBuilder will be able to start. Reviewers: mehdi_amini, echristo, whitequark, jketema, Wallbraker Reviewed By: Wallbraker Subscribers: Eugene.Zelenko, axw, mehdi_amini, llvm-commits Differential Revision: https://reviews.llvm.org/D19448 llvm-svn: 300447
-
Max Kazantsev authored
This patch is a generalization of the improvement introduced in rL296898. Previously, we were able to peel one iteration of a loop to get rid of a Phi that becomes an invariant on the 2nd iteration. In more general case, if a Phi becomes invariant after N iterations, we can peel N times and turn it into invariant. In order to do this, we for every Phi in loop's header we define the Invariant Depth value which is calculated as follows: Given %x = phi <Inputs from above the loop>, ..., [%y, %back.edge]. If %y is a loop invariant, then Depth(%x) = 1. If %y is a Phi from the loop header, Depth(%x) = Depth(%y) + 1. Otherwise, Depth(%x) is infinite. Notice that if we peel a loop, all Phis with Depth = 1 become invariants, and all other Phis with finite depth decrease the depth by 1. Thus, peeling N first iterations allows us to turn all Phis with Depth <= N into invariants. Reviewers: reames, apilipenko, mkuper, skatkov, anna, sanjoy Reviewed By: sanjoy Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D31613 llvm-svn: 300446
-
George Rimar authored
This is for --compress-debug-sections (r300444), we have x64 testcase, but did not have i386 one. llvm-svn: 300445
-
George Rimar authored
Patch implements --compress-debug-sections=zlib. In compare with D20211 (a year old patch, abandoned), it implementation uses streaming and fully reimplemented, does not support zlib-gnu for simplification. This is PR32308. Differential revision: https://reviews.llvm.org/D31941 llvm-svn: 300444
-
http://bugs.llvm.org/pr30994Yaron Keren authored
Address http://bugs.llvm.org/pr30994 so that a non-friend can properly replace a friend, and a visible friend can properly replace an invisible friend but not vice verse, and definitions are not replaced. This fixes the two FIXME in SemaTemplate/friend-template.cpp. The code implements Richard Smith suggestion in comment 3 of the PR. reviewer: Vassil Vassilev Differential Revision: https://reviews.llvm.org/D31540 llvm-svn: 300443
-
Serguei Katkov authored
This is non-functional change to re-order if statements to bail out earlier from unreachable and ColdCall heuristics. Reviewers: sanjoy, reames, junbuml, vsk, chandlerc Reviewed By: chandlerc Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D31704 llvm-svn: 300442
-
Max Kazantsev authored
When peeling loops basing on phis becoming invariants, we make a wrong loop size check. UP.Threshold should be compared against the total numbers of instructions after the transformation, which is equal to 2 * LoopSize in case of peeling one iteration. We should also check that the maximum allowed number of peeled iterations is not zero. Reviewers: sanjoy, anna, reames, mkuper Reviewed By: mkuper Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D31753 llvm-svn: 300441
-
Serguei Katkov authored
Metadata potentially is more precise than any heuristics we use, so it makes sense to use first metadata info if it is available. However it makes sense to examine it against other strong heuristics like unreachable one. If edge coming to unreachable block has higher probability then it is expected by unreachable heuristic then we use heuristic and remaining probability is distributed among other reachable blocks equally. An example where metadata might be more strong then unreachable heuristic is as follows: it is possible that there are two branches and for the branch A metadata says that its probability is (0, 2^25). For the branch B the probability is (1, 2^25). So the expectation is that first edge of B is hotter than first edge of A because first edge of A did not executed at least once. If first edge of A points to the unreachable block then using the unreachable heuristics we'll set the probability for A to (1, 2^20) and now edge of A becomes hotter than edge of B. This is unexpected behavior. This fixed the biggest part of https://bugs.llvm.org/show_bug.cgi?id=32214 Reviewers: sanjoy, junbuml, vsk, chandlerc Reviewed By: chandlerc Subscribers: llvm-commits, reames, davidxl Differential Revision: https://reviews.llvm.org/D30631 llvm-svn: 300440
-
Craig Topper authored
llvm-svn: 300439
-
Craig Topper authored
llvm-svn: 300438
-
Craig Topper authored
llvm-svn: 300437
-
Craig Topper authored
[InstCombine] Add missing testcases for srem->urem conversion. The vector version isn't currently supported. NFC llvm-svn: 300436
-
Craig Topper authored
llvm-svn: 300435
-
Craig Topper authored
llvm-svn: 300434
-
Davide Italiano authored
llvm-svn: 300433
-
- Apr 16, 2017
-
-
Craig Topper authored
[InstCombine][ValueTracking] When computing known bits for Srem make sure we don't compute known bits for the LHS twice. If we already called computeKnownBits for the RHS being a constant power of 2, we've already computed everything we can and should just stop. I think previously we would still recurse if we had determined the result was negative or had not determined the sign bit at all. llvm-svn: 300432
-
Davide Italiano authored
Use a SmallSetVector instead. llvm-svn: 300431
-
Craig Topper authored
[InstCombine] In SimplifyDemandedUseBits, don't bother to mask known bits of constants with DemandedMask. Just because we didn't demand them doesn't mean they aren't known. llvm-svn: 300430
-
Benjamin Kramer authored
Our 16 bit support is assembler-only + the terrible hack that is .code16gcc. Simply using 32 bit registers does the right thing for the latter. Fixes PR32681. llvm-svn: 300429
-
Bryant Wong authored
The tracking is unused, since MemoryPhis are not pruned as of r282419. Differential Revision: https://reviews.llvm.org/D32121 llvm-svn: 300428
-
Alexander Shaposhnikov authored
This diff registers isConstexpr matcher. Test plan: make check-all check that "match varDecl(isConstexpr())" works in clang-query Differential revision: https://reviews.llvm.org/D32112 llvm-svn: 300427
-
Sanjay Patel authored
The ConstantInt version has the same assert, and using null/allOnes is likely less efficient. The only advantage of these local variants (and there's probably a better way to achieve this?) is to save typing "ConstantInt::" over and over. llvm-svn: 300426
-
Dimitry Andric authored
llvm-svn: 300425
-
Sanjay Patel authored
llvm-svn: 300424
-
Yaron Keren authored
llvm-svn: 300423
-
Michael Zuckerman authored
This patch adds new optimization (Folding cmp(sub(a,b),0) into cmp(a,b)) to instCombineCall pass and was written specific for X86 CMP intrinsics. Differential Revision: https://reviews.llvm.org/D31398 llvm-svn: 300422
-