| Commit message (Collapse) | Author | Age | Files | Lines | 
| ... |  | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This is another step towards implementing register classes with
parametrized register/spill sizes and value types.
This is an updated version of r298652. The difference is that MCRegister-
Class still contains register size, available as getPhysRegSize(). The
old function getSize was retained as a temporary measure to avoid build
breakage for out-of-tree targets.
llvm-svn: 298739
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
If the branch condition for a loop was a phi which itself
was fed from a phi from a loop, it isn't safe to try
to delete the phi until after the loop is handled.
llvm-svn: 298737
 | 
| | 
| 
| 
|  | 
llvm-svn: 298736
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Reason: breaks linking Chromium with LLD + ThinLTO (a pass crashes)
LLVM bug: https://bugs.llvm.org//show_bug.cgi?id=32413
Original change description:
[LV] Vectorize GEPs
This patch adds support for vectorizing GEPs. Previously, we only generated
vector GEPs on-demand when creating gather or scatter operations. All GEPs from
the original loop were scalarized by default, and if a pointer was to be stored
to memory, we would have to build up the pointer vector with insertelement
instructions.
With this patch, we will vectorize all GEPs that haven't already been marked
for scalarization.
The patch refines collectLoopScalars to more exactly identify the scalar GEPs.
The function now more closely resembles collectLoopUniforms. And the patch
moves vector GEP creation out of vectorizeMemoryInstruction and into the main
vectorization loop. The vector GEPs needed for gather and scatter operations
will have already been generated before vectoring the memory accesses.
Original Differential Revision: https://reviews.llvm.org/D30710
llvm-svn: 298735
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
AArch64 doesn't require -mno-red-zone; stack fixups are sufficient here. This was
unnecessarily copied over from the X86 target.
(You can now outline with red zones! Yay!)
Removing the requirement passes all Single/MultiSource tests.
llvm-svn: 298734
 | 
| | 
| 
| 
|  | 
llvm-svn: 298733
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
Create the constructor in the module pass.
This in needed for the GC-friendly globals change, where the constructor can be
put in a comdat  in some cases, but we don't know about that in the function
pass.
llvm-svn: 298731
 | 
| | 
| 
| 
|  | 
llvm-svn: 298730
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
StructurizeCFG can't handle cases with multiple
returns creating regions with multiple exits.
Create a copy of UnifyFunctionExitNodes that only
unifies exit nodes that skips exit nodes
with uniform branch sources.
llvm-svn: 298729
 | 
| | 
| 
| 
|  | 
llvm-svn: 298727
 | 
| | 
| 
| 
|  | 
llvm-svn: 298726
 | 
| | 
| 
| 
|  | 
llvm-svn: 298725
 | 
| | 
| 
| 
| 
| 
|  | 
All this did before was assert in EarlyCSE.
llvm-svn: 298724
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Such instructions sometimes appear after lowering and folding.
Differential Revision: https://reviews.llvm.org/D31318
llvm-svn: 298723
 | 
| | 
| 
| 
|  | 
llvm-svn: 298722
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Previously it was added only to the BE.
Differential Revision: https://reviews.llvm.org/D31323
llvm-svn: 298721
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Summary: Declarations need to be filtered out when counting functions.
Reviewers: eraman
Subscribers: Prazek, llvm-commits
Differential Revision: https://reviews.llvm.org/D31336
llvm-svn: 298720
 | 
| | 
| 
| 
| 
| 
|  | 
around that don't have a constexpr std::pair.
llvm-svn: 298719
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Patch by Axel Davy (axel.davy@normalesup.org)
Differential revision: https://reviews.llvm.org/D30382
llvm-svn: 298718
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Summary: MSVC does this when producing a PDB.
Reviewers: ruiu
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31316
llvm-svn: 298717
 | 
| | 
| 
| 
| 
| 
|  | 
Test cases showing cases where we're missing an opportunity to lshr a value with an extended sign to avoid loading a mask
llvm-svn: 298716
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
SimplifyDemandedUseBits without recursing into ComputeKnownBits
SimplifyDemandedUseBits for Add/Sub already recursed down LHS and RHS for simplifying bits. If that didn't provide any simplifications we fall back to calling computeKnownBits which will recurse again. Instead just take the known bits for LHS and RHS we already have and call into a new function in ValueTracking that can calculate the known bits given the LHS/RHS bits.
llvm-svn: 298711
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Patch by Axel Davy (axel.davy@normalesup.org)
Differential revision: https://reviews.llvm.org/D30149
llvm-svn: 298710
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Patch by Axel Davy (axel.davy@normalesup.org)
Differential revision: https://reviews.llvm.org/D30146
llvm-svn: 298708
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Summary:
This script will automatically create a new stable merge request bug in
bugzilla for the given svn revision and release number.
Reviewers: hans
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D30905
llvm-svn: 298705
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
bits' result, not just comparisons.
Added vector compare opcodes to X86TargetLowering::ComputeNumSignBitsForTargetNode
Covered by existing tests added for D22814.
llvm-svn: 298704
 | 
| | 
| 
| 
| 
| 
|  | 
StringLiteral.
llvm-svn: 298703
 | 
| | 
| 
| 
|  | 
llvm-svn: 298702
 | 
| | 
| 
| 
| 
| 
|  | 
NFC.
llvm-svn: 298701
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Summary:
I discovered accidentally that the operator== for TargetOptions
is stale - it is missing many fields that have been added over
the recent years. It isn't used, so remove it. Ditto for the
comparator in MCTargetOptions, which doesn't seem stale yet but is
unused.
Reviewers: echristo
Subscribers: llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D31301
llvm-svn: 298700
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
This reverts commit rL298690
Causes failures on clang.
llvm-svn: 298693
 | 
| | 
| 
| 
| 
| 
|  | 
them easier to understand.
llvm-svn: 298692
 | 
| | 
| 
| 
| 
| 
|  | 
create two expressions in symbolic store evaluation.
llvm-svn: 298691
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
The patch rL298481 was reverted due to crash on clang-with-lto-ubuntu build.
The reason of the crash was type mismatch between either a or b and RHS in the following situation:
  LHS = sext(a +nsw b) > RHS.
This is quite rare, but still possible situation. Normally we need to cast all {a, b, RHS} to their widest type.
But we try to avoid creation of new SCEV that are not constants to avoid initiating recursive analysis that
can take a lot of time and/or cache a bad value for iterations number. To deal with this, in this patch we
reject this case and will not try to analyze it if the type of sum doesn't match with the type of RHS. In this
situation we don't need to create any non-constant SCEVs.
This patch also adds an assertion to the method IsProvedViaContext so that we could fail on it and not
go further into range analysis etc (because in some situations these analyzes succeed even when the passed
arguments have wrong types, what should not normally happen).
The patch also contains a fix for a problem with too narrow scope of the analysis caused by wrong
usage of predicates in recursive invocations.
The regression test on the said failure: test/Analysis/ScalarEvolution/implied-via-addition.ll
llvm-svn: 298690
 | 
| | 
| 
| 
| 
| 
|  | 
of a creating a temporary APInt. NFC
llvm-svn: 298688
 | 
| | 
| 
| 
| 
| 
| 
|  | 
due to LLVM's view of phi nodes.  It would cause NewGVN not to fixpoint
in some interesting edge cases.
llvm-svn: 298687
 | 
| | 
| 
| 
| 
| 
|  | 
setHighBits/setLowBits/setSignBit. NFCI
llvm-svn: 298683
 | 
| | 
| 
| 
|  | 
llvm-svn: 298680
 | 
| | 
| 
| 
|  | 
llvm-svn: 298679
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This change allows cross-compiling compiler-rt builtins for
multiple targets as part of runtimes on Darwin. This functionality
is already supported on other platforms.
Differential Revision: https://reviews.llvm.org/D30957
llvm-svn: 298678
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
r298178 capitalized the fields in `ArgListEntry`.  All the official
targets were updated accordingly, but as an experimental target AVR
was missed.
llvm-svn: 298677
 | 
| | 
| 
| 
|  | 
llvm-svn: 298673
 | 
| | 
| 
| 
| 
| 
|  | 
that size. This will potentially make libFuzzer more sensitive on targets with lots of signals
llvm-svn: 298671
 | 
| | 
| 
| 
|  | 
llvm-svn: 298666
 | 
| | 
| 
| 
|  | 
llvm-svn: 298665
 | 
| | 
| 
| 
| 
| 
| 
|  | 
While fixing a malformed testcase, I discovered that the code
exercised by it was wrong, too.
llvm-svn: 298664
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This prevents crashes when attempting to instrument functions containing
C++ try.
Sanitizer coverage will still fail at runtime when an exception is
thrown through a sancov instrumented function, but that seems marginally
better than what we have now. The full solution is to color the blocks
in LLVM IR and only instrument blocks that have an unambiguous color,
using the appropriate token.
llvm-svn: 298662
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Summary:
For the following CFG:
A->B
B->C
A->C
If there is another edge B->D, then ABC should not be considered as triangle.
Reviewers: davidxl, iteratee
Reviewed By: iteratee
Subscribers: nemanjai, llvm-commits
Differential Revision: https://reviews.llvm.org/D31310
llvm-svn: 298661
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Summary: In DeadArgumentElimination, the call instructions will be replaced. We also need to set the prof weights so that function inlining can find the correct profile.
Reviewers: eraman
Reviewed By: eraman
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31143
llvm-svn: 298660
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Library functions can have specific semantics that affect the behavior of
certain passes. DSE, for instance, gives special treatment to malloc-ed pointers
but not to pointers returned from an equivalently typed (but differently named)
function.
MetaRenamer ought not to alter program semantics, so library functions must
remain untouched.
Reviewers: mehdi_amini, majnemer, chandlerc, davide
Reviewed By: davide
Subscribers: davide, llvm-commits
Differential Revision: https://reviews.llvm.org/D31304
llvm-svn: 298659
 |