| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This uses the new layout of the upstream repository, which was recently
migrated to GitHub, and converted into a "monorepo". That is, most of
the earlier separate sub-projects with their own branches and tags were
consolidated into one top-level directory, and are now branched and
tagged together.
Updating the vendor area to match this layout is next.
Notes:
svn path=/head/; revision=355940
|
| |
|
|
|
|
|
| |
release_90 branch r370514, and update version numbers.
Notes:
svn path=/projects/clang900-import/; revision=351722
|
| |
|
|
| |
Notes:
svn path=/projects/clang900-import/; revision=351344
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clarify comments on helpers used by LFTR [NFC]
I'm slowly wrapping my head around this code, and am making comment
improvements where I can.
Pull in r360972 from upstream llvm trunk (by Philip Reames):
[LFTR] Factor out a helper function for readability purpose [NFC]
Pull in r360976 from upstream llvm trunk (by Philip Reames):
[IndVars] Don't reimplement Loop::isLoopInvariant [NFC]
Using dominance vs a set membership check is indistinguishable from a
compile time perspective, and the two queries return equivelent
results. Simplify code by using the existing function.
Pull in r360978 from upstream llvm trunk (by Philip Reames):
[LFTR] Strengthen assertions in genLoopLimit [NFCI]
Pull in r362292 from upstream llvm trunk (by Nikita Popov):
[IndVarSimplify] Fixup nowrap flags during LFTR (PR31181)
Fix for https://bugs.llvm.org/show_bug.cgi?id=31181 and partial fix
for LFTR poison handling issues in general.
When LFTR moves a condition from pre-inc to post-inc, it may now
depend on value that is poison due to nowrap flags. To avoid this, we
clear any nowrap flag that SCEV cannot prove for the post-inc addrec.
Additionally, LFTR may switch to a different IV that is dynamically
dead and as such may be arbitrarily poison. This patch will correct
nowrap flags in some but not all cases where this happens. This is
related to the adoption of IR nowrap flags for the pre-inc addrec.
(See some of the switch_to_different_iv tests, where flags are not
dropped or insufficiently dropped.)
Finally, there are likely similar issues with the handling of GEP
inbounds, but we don't have a test case for this yet.
Differential Revision: https://reviews.llvm.org/D60935
Pull in r362971 from upstream llvm trunk (by Philip Reames):
Prepare for multi-exit LFTR [NFC]
This change does the plumbing to wire an ExitingBB parameter through
the LFTR implementation, and reorganizes the code to work in terms of
a set of individual loop exits. Most of it is fairly obvious, but
there's one key complexity which makes it worthy of consideration.
The actual multi-exit LFTR patch is in D62625 for context.
Specifically, it turns out the existing code uses the backedge taken
count from before a IV is widened. Oddly, we can end up with a
different (more expensive, but semantically equivelent) BE count for
the loop when requerying after widening. For the nestedIV example
from elim-extend, we end up with the following BE counts:
BEFORE: (-2 + (-1 * %innercount) + %limit)
AFTER: (-1 + (sext i32 (-1 + %limit) to i64) + (-1 * (sext i32 %innercount to i64))<nsw>)
This is the only test in tree which seems sensitive to this
difference. The actual result of using the wider BETC on this example
is that we actually produce slightly better code. :)
In review, we decided to accept that test change. This patch is
structured to preserve the old behavior, but a separate change will
immediate follow with the behavior change. (I wanted it separate for
problem attribution purposes.)
Differential Revision: https://reviews.llvm.org/D62880
Pull in r362975 from upstream llvm trunk (by Philip Reames):
[LFTR] Use recomputed BE count
This was discussed as part of D62880. The basic thought is that
computing BE taken count after widening should produce (on average)
an equally good backedge taken count as the one before widening.
Since there's only one test in the suite which is impacted by this
change, and it's essentially equivelent codegen, that seems to be a
reasonable assertion. This change was separated from r362971 so that
if this turns out to be problematic, the triggering piece is obvious
and easily revertable.
For the nestedIV example from elim-extend.ll, we end up with the
following BE counts:
BEFORE: (-2 + (-1 * %innercount) + %limit)
AFTER: (-1 + (sext i32 (-1 + %limit) to i64) + (-1 * (sext i32 %innercount to i64))<nsw>)
Note that before is an i32 type, and the after is an i64. Truncating
the i64 produces the i32.
Pull in r362980 from upstream llvm trunk (by Philip Reames):
Factor out a helper function for readability and reuse in a future
patch [NFC]
Pull in r363613 from upstream llvm trunk (by Philip Reames):
Fix a bug w/inbounds invalidation in LFTR (recommit)
Recommit r363289 with a bug fix for crash identified in pr42279.
Issue was that a loop exit test does not have to be an icmp, leading
to a null dereference crash when new logic was exercised for that
case. Test case previously committed in r363601.
Original commit comment follows:
This contains fixes for two cases where we might invalidate inbounds
and leave it stale in the IR (a miscompile). Case 1 is when switching
to an IV with no dynamically live uses, and case 2 is when doing
pre-to-post conversion on the same pointer type IV.
The basic scheme used is to prove that using the given IV (pre or
post increment forms) would have to already trigger UB on the path to
the test we're modifying. As such, our potential UB triggering use
does not change the semantics of the original program.
As was pointed out in the review thread by Nikita, this is defending
against a separate issue from the hasConcreteDef case. This is about
poison, that's about undef. Unfortunately, the two are different, see
Nikita's comment for a fuller explanation, he explains it well.
(Note: I'm going to address Nikita's last style comment in a separate
commit just to minimize chance of subtle bugs being introduced due to
typos.)
Differential Revision: https://reviews.llvm.org/D62939
Pull in r363875 from upstream llvm trunk (by Philip Reames):
[LFTR] Rename variable to minimize confusion [NFC]
(Recommit of r363293 which was reverted when a dependent patch was.)
As pointed out by Nikita in D62625, BackedgeTakenCount is generally
used to refer to the backedge taken count of the loop. A conditional
backedge taken count - one which only applies if a particular exit is
taken - is called a ExitCount in SCEV code, so be consistent here.
Pull in r363877 from upstream llvm trunk (by Philip Reames):
[LFTR] Stylistic cleanup as suggested in last review comment of
D62939 [NFC]
(Resumbit of r363292 which was reverted along w/an earlier patch)
Pull in r364346 from upstream llvm trunk (by Philip Reames):
[LFTR] Adjust debug output to include extensions (if any)
Pull in r364693 from upstream llvm trunk (by Philip Reames):
[IndVars] Remove a bit of manual constant folding [NFC]
SCEV is more than capable of folding (add x, trunc(0)) to x.
Pull in r364709 from upstream llvm trunk (by Nikita Popov):
[LFTR] Fix post-inc pointer IV with truncated exit count (PR41998)
Fixes https://bugs.llvm.org/show_bug.cgi?id=41998. Usually when we
have a truncated exit count we'll truncate the IV when comparing
against the limit, in which case exit count overflow in post-inc form
doesn't matter. However, for pointer IVs we don't do that, so we have
to be careful about incrementing the IV in the wide type.
I'm fixing this by removing the IVCount variable (which was ExitCount
or ExitCount+1) and replacing it with a UsePostInc flag, and then
moving the actual limit adjustment to the individual cases (which
are: pointer IV where we add to the wide type, integer IV where we
add to the narrow type, and constant integer IV where we add to the
wide type).
Differential Revision: https://reviews.llvm.org/D63686
Together, these should fix a hang when building the textproc/htmldoc
port, due to an incorrect loop optimization.
PR: 237515
MFC after: 1 week
Notes:
svn path=/head/; revision=349583
|
| |
|
|
|
|
|
| |
r354130, resolve conflicts, and bump version numbers.
Notes:
svn path=/projects/clang800-import/; revision=344177
|
| |
|
|
| |
Notes:
svn path=/projects/clang800-import/; revision=343210
|
| |
|
|
|
|
|
|
|
|
| |
r348686 (effectively 7.0.1 rc3), resolve conflicts, and bump version
numbers.
PR: 230240, 230355
Notes:
svn path=/projects/clang700-import/; revision=341763
|
| |
|
|
|
|
|
|
|
|
| |
r346007 (effectively 7.0.1 rc2), resolve conflicts, and bump version
numbers.
PR: 230240, 230355
Notes:
svn path=/projects/clang700-import/; revision=340125
|
| |
|
|
|
|
|
|
|
| |
r339999, resolve conflicts, and bump version numbers.
PR: 230240,230355
Notes:
svn path=/projects/clang700-import/; revision=338014
|
| |
|
|
|
|
|
| |
r339355, resolve conflicts, and bump version numbers.
Notes:
svn path=/projects/clang700-import/; revision=337645
|
| |
|
|
|
|
|
| |
resolve conflicts.
Notes:
svn path=/projects/clang700-import/; revision=337149
|
| |
|
|
| |
Notes:
svn path=/projects/clang700-import/; revision=336916
|
| |
|
|
|
|
|
|
|
|
| |
6.0.1 release (upstream r335540).
Relnotes: yes
MFC after: 2 weeks
Notes:
svn path=/head/; revision=335799
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[ConstantFolding, InstSimplify] Handle more vector GEPs
This patch addresses some additional cases where the compiler crashes
upon encountering vector GEPs. This should fix PR36116.
Differential Revision: https://reviews.llvm.org/D44219
Reference: https://bugs.llvm.org/show_bug.cgi?id=36116
This fixes an assertion when building the emulators/snes9x port.
Reported by: jbeich
PR: 225471
MFC after: 3 months
X-MFC-With: r327952
Notes:
svn path=/head/; revision=331065
|
| |
|
|
|
|
|
|
|
|
|
| |
6.0.0 (branches/release_60 r325932). This corresponds to 6.0.0 rc3.
MFC after: 3 months
X-MFC-With: r327952
PR: 224669
Notes:
svn path=/head/; revision=329983
|
| |
|
|
|
|
|
|
|
|
|
| |
6.0.0 (branches/release_60 r323948).
MFC after: 3 months
X-MFC-With: r327952
PR: 224669
Notes:
svn path=/head/; revision=328753
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[ValueTracking] remove overzealous assert
The test is derived from a failing fuzz test:
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5008
Credit to @rksimon for pointing out the problem.
This should fix "Bad flavor while matching min/max" errors when building
the graphics/libsixel and science/kst2 ports.
Reported by: jbeich
PR: 225268, 225269
Notes:
svn path=/head/; revision=328145
|
| |
|
|
|
|
|
| |
update build glue and version numbers.
Notes:
svn path=/projects/clang600-import/; revision=327657
|
| |
|
|
|
|
|
|
| |
update build glue and version numbers, add new intrinsics headers, and
update OptionalObsoleteFiles.inc.
Notes:
svn path=/projects/clang600-import/; revision=327330
|
| |
|
|
| |
Notes:
svn path=/projects/clang600-import/; revision=327134
|
| |
|
|
| |
Notes:
svn path=/projects/clang600-import/; revision=327023
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
the upstream release_50 branch. This corresponds to 5.0.0 rc4.
As of this version, the cad/stepcode port should now compile in a more
reasonable time on i386 (see bug 221836 for more information).
PR: 221836
MFC after: 2 months
X-MFC-with: r321369
Notes:
svn path=/head/; revision=323112
|
| |
|
|
|
|
|
|
|
|
| |
upstream release_50 branch.
MFC after: 2 months
X-MFC-with: r321369
Notes:
svn path=/head/; revision=322740
|
| |
|
|
|
|
|
|
|
|
| |
upstream release_50 branch.
MFC after: 2 months
X-MFC-with: r321369
Notes:
svn path=/head/; revision=322320
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=321238
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=320970
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=320572
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=320397
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=320041
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=319799
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=319547
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=319479
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=319250
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=319164
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=318681
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=318477
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=318384
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=317969
|
| |
|
|
|
|
|
| |
build glue (preliminary, not all option combinations work yet).
Notes:
svn path=/projects/clang500-import/; revision=317778
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang500-import/; revision=317472
|
| |
|
|
| |
Notes:
svn path=/projects/clang500-import/; revision=317230
|
| |
|
|
| |
Notes:
svn path=/projects/clang500-import/; revision=317029
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[SCEV] limit recursion depth of CompareSCEVComplexity
Summary:
CompareSCEVComplexity goes too deep (50+ on a quite a big unrolled
loop) and runs almost infinite time.
Added cache of "equal" SCEV pairs to earlier cutoff of further
estimation. Recursion depth limit was also introduced as a parameter.
Reviewers: sanjoy
Subscribers: mzolotukhin, tstellarAMD, llvm-commits
Differential Revision: https://reviews.llvm.org/D26389
Pull in r296992 from upstream llvm trunk (by Sanjoy Das):
[SCEV] Decrease the recursion threshold for CompareValueComplexity
Fixes PR32142.
r287232 accidentally increased the recursion threshold for
CompareValueComplexity from 2 to 32. This change reverses that
change by introducing a separate flag for CompareValueComplexity's
threshold.
The latter revision fixes the excessive compile times for skein_block.c.
Notes:
svn path=/head/; revision=314795
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[SCEV] limit recursion depth of CompareSCEVComplexity
Summary:
CompareSCEVComplexity goes too deep (50+ on a quite a big unrolled
loop) and runs almost infinite time.
Added cache of "equal" SCEV pairs to earlier cutoff of further
estimation. Recursion depth limit was also introduced as a parameter.
Reviewers: sanjoy
Subscribers: mzolotukhin, tstellarAMD, llvm-commits
Differential Revision: https://reviews.llvm.org/D26389
This commit is the cause of excessive compile times on skein_block.c
(and possibly other files) during kernel builds on amd64.
We never saw the problematic behavior described in this upstream commit,
so for now it is better to revert it. An upstream bug has been filed
here: https://bugs.llvm.org/show_bug.cgi?id=32142
Reported by: mjg
Notes:
svn path=/head/; revision=314708
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[ValueTracking] avoid crashing from bad assumptions (PR31809)
A program may contain llvm.assume info that disagrees with other
analysis. This may be caused by UB in the program, so we must not
crash because of that.
As noted in the code comments:
https://llvm.org/bugs/show_bug.cgi?id=31809
...we can do better, but this at least avoids the assert/crash in the
bug report.
Differential Revision: https://reviews.llvm.org/D29395
This fixes an assertion when building editors/emacs-devel.
PR: 216614
Notes:
svn path=/projects/clang400-import/; revision=313110
|
| |
|
|
|
|
|
| |
r293443, and update build glue.
Notes:
svn path=/projects/clang400-import/; revision=312967
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang400-import/; revision=312639
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix use-after-free bug in AffectedValueCallbackVH::allUsesReplacedWith
When transferring affected values in the cache from an old value,
identified by the value of the current callback, to the specified new
value we might need to insert a new entry into the DenseMap which
constitutes the cache. Doing so might delete the current callback
object. Move the copying logic into a new function, a member of the
assumption cache itself, so that we don't run into UB should the
callback handle itself be removed mid-copy.
Differential Revision: https://reviews.llvm.org/D28749
This should fix crashes when building lld (as part of the llvmXY ports).
Reported by: jbeich
PR: 216117
Notes:
svn path=/projects/clang400-import/; revision=312308
|
| |
|
|
|
|
|
| |
build glue.
Notes:
svn path=/projects/clang400-import/; revision=312197
|
| |
|
|
| |
Notes:
svn path=/projects/clang400-import/; revision=311833
|