| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 294061
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D29474
llvm-svn: 294055
|
| |
|
|
|
|
| |
This is preparation to reduce MCExpr.h dependencies.
llvm-svn: 294053
|
| |
|
|
|
|
| |
This is preparation to reduce MCExpr.h dependencies.
llvm-svn: 294052
|
| |
|
|
|
|
| |
This is preparation to reduce MCExpr.h dependencies.
llvm-svn: 294051
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The code comments didn't match the code logic, and we didn't actually distinguish the fake unary (not/neg/fneg)
operators from arguments. Adding another level to the weighting scheme provides more structure and can help
simplify the pattern matching in InstCombine and other places.
I fixed regressions that would have shown up from this change in:
rL290067
rL290127
But that doesn't mean there are no pattern-matching logic holes left; some combines may just be missing regression tests.
Should fix:
https://llvm.org/bugs/show_bug.cgi?id=28296
Differential Revision: https://reviews.llvm.org/D27933
llvm-svn: 294049
|
| |
|
|
| |
llvm-svn: 294047
|
| |
|
|
| |
llvm-svn: 294046
|
| |
|
|
| |
llvm-svn: 294040
|
| |
|
|
|
|
| |
Use typedef, remove unnecessary enum, line wraps.
llvm-svn: 294039
|
| |
|
|
| |
llvm-svn: 294038
|
| |
|
|
|
|
|
|
| |
Reviewers: kcc
Differential Revision: https://reviews.llvm.org/D29502
llvm-svn: 294035
|
| |
|
|
| |
llvm-svn: 294034
|
| |
|
|
|
|
|
|
|
|
|
| |
This has quite positive performance impact according to measurements.
Before previous fixes to limit the optimization that was too high
and blowed compile time and scratch usage, but now this is gone and
we can bump the threshold.
Differential Revision: https://reviews.llvm.org/D29505
llvm-svn: 294032
|
| |
|
|
| |
llvm-svn: 294031
|
| |
|
|
|
|
|
| |
This won't be elimnated, so this will just bloat code
if/when these are ever used/supported.
llvm-svn: 294030
|
| |
|
|
| |
llvm-svn: 294029
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This re-applies commit r292189, reverted in r292191.
SelectionDAGBuilder recognizes libfuncs using some homegrown
parameter type-checking.
Use TLI instead, removing another heap of redundant code.
This isn't strictly NFC, as the SDAG code was too lax.
Concretely, this means changes are required to a few tests:
- calling a non-variadic function via a variadic prototype isn't OK;
it just happens to work on x86_64 (but not on, e.g., aarch64).
- mempcpy has a size_t parameter; the SDAG code accepts any integer
type, which meant using i32 on x86_64 worked.
- a handful of SystemZ tests check the SDAG support for lax prototype
checking: Ulrich agrees on removing them.
I don't think it's worth supporting any of these (IMO) invalid
testcases. Instead, fix them to be more meaningful.
llvm-svn: 294028
|
| |
|
|
|
|
|
|
|
|
| |
This generalizes memory access sorting to use differences between SCEVs,
instead of relying on constant offsets. That allows us to properly do
SLP vectorization of non-sequentially ordered loads within loops bodies.
Differential Revision: https://reviews.llvm.org/D29425
llvm-svn: 294027
|
| |
|
|
| |
llvm-svn: 294022
|
| |
|
|
|
|
|
|
| |
which caused a hang on a malformed binary with bad bind info.
rdar://29672108
llvm-svn: 294021
|
| |
|
|
|
|
|
|
| |
into a target shuffle.
Correctly flagging upper elements as undef.
llvm-svn: 294020
|
| |
|
|
|
|
| |
Make it clear these tests sign-extend the comparison result. Some patterns zero-extend to a bool result that we still need to handle.
llvm-svn: 294018
|
| |
|
|
| |
llvm-svn: 294017
|
| |
|
|
|
|
|
|
|
| |
Currently these flags are always the inverse of each other, so there is
no need to keep them separate.
Differential Revision: https://reviews.llvm.org/D29471
llvm-svn: 294016
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D29470
llvm-svn: 294015
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The importer was previously using ModuleLinker in a sort of "IRMover mode". Use
IRMover directly instead in order to remove a level of indirection.
I will remove all importing support from ModuleLinker in a separate
change.
Differential Revision: https://reviews.llvm.org/D29468
llvm-svn: 294014
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D29482
llvm-svn: 294013
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The .end <symbol> directive for MIPS marks the end of a symbol and sets the
symbol's size. Previously, the corresponding emitDirective handler asserted
that a function's size could be evaluated to an absolute value at that point
in time.
This cannot be done with when directives like .align have been encountered,
instead set the function's size to the corresponding symbolic expression and
let ELFObjectWriter resolve the expression to an absolute value. This avoids
a redundant call to evaluateAsAbsolute.
llvm-svn: 294012
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: tra
Subscribers: jholewinski, llvm-commits
Differential Revision: https://reviews.llvm.org/D29477
llvm-svn: 294011
|
| |
|
|
| |
llvm-svn: 294010
|
| |
|
|
|
|
| |
The instruction selector has been emitting the register bank information too.
llvm-svn: 294007
|
| |
|
|
|
|
| |
Issue occurs when assembling "ds_ordered_count v0, v0 gds".
llvm-svn: 294004
|
| |
|
|
|
|
|
|
|
|
|
|
| |
ISD::DELETED_NODE && "NodeToMatch was removed partway through
selection"' failed.
NodeToMatch can be modified during matching, but code does not handle
this situation.
Differential Revision: https://reviews.llvm.org/D29292
llvm-svn: 294003
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The tail call optimisation is performed before register allocation, so
at that point we don't know if LR is being spilt or not. If LR was spilt
to the stack, then we cannot do a tail call optimisation. That would
involve popping back into LR which is not possible in Thumb1 code.
Reviewers: rengolin, jmolloy, rovka, olista01
Reviewed By: olista01
Subscribers: llvm-commits, aemerson
Differential Revision: https://reviews.llvm.org/D29020
llvm-svn: 294000
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
llc would hit a fatal error for errors in inline assembly. The
diagnostics message is now printed.
Reviewers: rengolin, MatzeB, javed.absar, anemet
Reviewed By: anemet
Subscribers: jyknight, nemanjai, llvm-commits
Differential Revision: https://reviews.llvm.org/D29408
llvm-svn: 293999
|
| |
|
|
|
|
| |
Testing commit access.
llvm-svn: 293998
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently LLVM supports vectorization of horizontal reduction
instructions with initial value set to 0. Patch supports vectorization
of reduction with non-zero initial values. Also it supports a
vectorization of instructions with some extra arguments, like:
float f(float x[], int a, int b) {
float p = a % b;
p += x[0] + 3;
for (int i = 1; i < 32; i++)
p += x[i];
return p;
}
Patch allows vectorization of this kind of horizontal reductions.
Differential Revision: https://reviews.llvm.org/D28961
llvm-svn: 293994
|
| |
|
|
|
|
|
|
|
| |
This reverts commit r293970.
After more discussion, this belongs to the linker side and
there is no added value to do it at this level.
llvm-svn: 293993
|
| |
|
|
|
|
|
|
|
|
|
| |
Exit loop analysis early if suitable private access found.
Do not account for GEPs which are invariant to loop induction variable.
Do not account for Allocas which are too big to fit into register file anyway.
Add option for tuning: -amdgpu-unroll-threshold-private.
Differential Revision: https://reviews.llvm.org/D29473
llvm-svn: 293991
|
| |
|
|
|
|
|
| |
If LLVM was configured with an x86_64-apple-macosx host triple, this
test would fail, as the API works but the triple isn't in the whitelist.
llvm-svn: 293990
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Windows, the symbols "___stop___sancov_guards" and "___start___sancov_guards"
are not defined automatically. So, we need to take a different approach.
We define 3 sections:
Section ".SCOV$A" will only hold a variable ___start___sancov_guard.
Section ".SCOV$M" will hold the main data.
Section ".SCOV$Z" will only hold a variable ___stop___sancov_guards.
When linking, they will be merged sorted by the characters after the $, so we
can use the pointers of the variables ___[start|stop]___sancov_guard to know the
actual range of addresses of that section.
In this diff, I updated instrumentation to include all the guard arrays in
section ".SCOV$M".
Differential Revision: https://reviews.llvm.org/D28434
llvm-svn: 293987
|
| |
|
|
| |
llvm-svn: 293972
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
even when they are only present in type units
While looking to add support for placing singular types (types that will
only be emitted in one place (such as attached to a strong vtable or
explicit template instantiation definition)) not in type units (since
type units have overhead) I stumbled across that change causing an
increase in pubtypes.
Turns out we were missing some types from type units if they were only
referenced from other type units and not from the debug_info section.
This fixes that, following GCC's line of describing the offset of such
entities as the CU die (since there's no compile unit-relative offset
that would describe such an entity - they aren't in the CU). Also like
GCC, this change prefers to describe the type stub within the CU rather
than the "just use the CU offset" fallback where possible. This may give
the DWARF consumer some opportunity to find the extra info in the type
stub - though I'm not sure GDB does anything with this currently.
The size of the pubnames/pubtypes sections now match exactly with or
without type units enabled.
This nearly triples (+189%) the pubtypes section for a clang self-host
and grows pubnames by 0.07% (without compression). For a total of 8%
increase in debug info sections of the objects of a Split DWARF build
when using type units.
llvm-svn: 293971
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a symbol is not exported outside of the
DSO, it is can be hidden. Usually we try to internalize
as much as possible, but it is not always possible, for
instance a symbol can be referenced outside of the LTO
unit, or there can be cross-module reference in ThinLTO.
This is a recommit of r293912 after fixing build failures,
and a recommit of r293918 after fixing LLD tests.
Differential Revision: https://reviews.llvm.org/D28978
llvm-svn: 293970
|
| |
|
|
|
|
| |
remove the custom lowering.
llvm-svn: 293969
|
| |
|
|
| |
llvm-svn: 293968
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D29131
llvm-svn: 293964
|
| |
|
|
|
|
| |
In multi-use cases this can save a few instructions.
llvm-svn: 293962
|
| |
|
|
|
|
| |
This reverts commit r293918, one lld test does not pass.
llvm-svn: 293961
|