| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
Also, switch to using functions from LiveIntervalAnalysis to update
live intervals, instead of performing the updates manually.
Re-committing r272045.
llvm-svn: 272135
|
|
|
|
|
|
|
|
| |
As suggested by clang-tidy's performance-unnecessary-copy-initialization.
This can easily hit lifetime issues, so I audited every change and ran the
tests under asan, which came back clean.
llvm-svn: 272126
|
|
|
|
| |
llvm-svn: 272048
|
|
|
|
|
|
|
| |
Also, switch to using functions from LiveIntervalAnalysis to update
live intervals, instead of performing the updates manually.
llvm-svn: 272045
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
subclasses. These are not passes proper. We don't support registering
them, they can't be constructed with default arguments, and the ID is
actually in a base class.
Only these two targets even had any boiler plate to try to do this, and
it had to be munged out of the INITIALIZE_PASS macros to work. What's
worse, the boiler plate has rotted and the "name" of the pass is
actually the description string now!!! =/ All of this is completely
unnecessary. No other target bothers, and nothing breaks if you don't
initialize them because CodeGen has an entirely separate initialization
path that is somewhat more durable than relying on the implicit
initialization the way the 'opt' tool does for registered passes.
llvm-svn: 271650
|
|
|
|
|
|
| |
entirely correct) version of its contents.
llvm-svn: 271649
|
|
|
|
|
|
|
|
| |
Handle it locally instead of having the target-independent pass deal
with it. The generic pass does not preserve implicit uses, which may
be necessary.
llvm-svn: 271520
|
|
|
|
| |
llvm-svn: 271519
|
|
|
|
|
|
|
| |
The code in HexagonExpandCondsets.cpp does not handle those cases at the
moment.
llvm-svn: 271281
|
|
|
|
| |
llvm-svn: 271088
|
|
|
|
|
|
|
|
| |
Composing subreg_loreg with subreg_oveflow leads to strange results with
lane masks for register classes with subreg_loreg. In particular, dead
lane detection generates incorrect code.
llvm-svn: 271087
|
|
|
|
| |
llvm-svn: 271045
|
|
|
|
|
|
|
| |
When running mir tests, a pass created in that constructor would not be
freed, leading to memory leaks.
llvm-svn: 271043
|
|
|
|
|
|
|
| |
clang-tidy's performance-unnecessary-copy-initialization with some manual
fixes. No functional changes intended.
llvm-svn: 270988
|
|
|
|
|
|
|
| |
Also fold conditions into assert(0) where it makes sense. No functional
change intended.
llvm-svn: 270982
|
|
|
|
|
|
| |
No functional change intended.
llvm-svn: 270980
|
|
|
|
|
|
|
|
|
| |
The aggressive anti-dependency breaker can rename the restored callee-
saved registers. To prevent this, mark these registers are live on all
paths to the return/tail-call instructions, and add implicit use operands
for them to these instructions.
llvm-svn: 270898
|
|
|
|
| |
llvm-svn: 270857
|
|
|
|
| |
llvm-svn: 270459
|
|
|
|
| |
llvm-svn: 270118
|
|
|
|
| |
llvm-svn: 270111
|
|
|
|
|
|
|
| |
Problem Was exposed by -Wstring-conversion
llvm-svn: 270087
|
|
|
|
|
|
|
|
|
|
|
|
| |
Having an enum member named Default is quite confusing: Is it distinct
from the others?
This patch removes that member and instead uses Optional<Reloc> in
places where we have a user input that still hasn't been maped to the
default value, which is now clear has no be one of the remaining 3
options.
llvm-svn: 269988
|
|
|
|
| |
llvm-svn: 269933
|
|
|
|
| |
llvm-svn: 269674
|
|
|
|
|
|
|
| |
Remove all the checks for constant extenders from isPredicable. The users
of it should be the ones checking cost/profitability.
llvm-svn: 269664
|
|
|
|
|
|
|
|
| |
Recent changes to the instruction selection code exposed a problem where
a dead node was not removed on time. This node had both input and output
chains, which lead to an apparent cycle.
llvm-svn: 269458
|
|
|
|
|
|
|
|
| |
Patch by Apelete Seketeli.
Differential Revision: http://reviews.llvm.org/D19900
llvm-svn: 269415
|
|
|
|
| |
llvm-svn: 269414
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Where we were returning a node before, call ReplaceNode instead.
- Where we had already replaced all uses and we returned a node, just
remove the dead node instead.
- Where we would return null to fall back to another selector, rename
the method to try* and return a bool for success.
Part of llvm.org/pr26808.
llvm-svn: 269358
|
|
|
|
|
|
|
|
|
| |
When we convert to the void Select interface, leaving unreferenced
nodes around won't be allowed anymore.
Part of llvm.org/pr26808.
llvm-svn: 269355
|
|
|
|
| |
llvm-svn: 269328
|
|
|
|
| |
llvm-svn: 269312
|
|
|
|
| |
llvm-svn: 269192
|
|
|
|
|
|
|
|
| |
When generating .cfi_offset instructions, make sure that the offset is
calculated with respect to the register used to define the CFA (which is
currently always FP+8).
llvm-svn: 269191
|
|
|
|
|
|
|
|
|
|
| |
This is a bit of a spot fix for now. I'll try to fix this up more
comprehensively soon.
This is part of the work to have Select return void instead of an
SDNode *, which is in turn part of llvm.org/pr26808.
llvm-svn: 269112
|
|
|
|
|
|
|
|
| |
Many files include Passes.h but only a fraction needs to know about the
TargetPassConfig class. Move it into an own header. Also rename
Passes.cpp to TargetPassConfig.cpp while we are at it.
llvm-svn: 269011
|
|
|
|
| |
llvm-svn: 268946
|
|
|
|
|
|
|
|
|
|
|
| |
In a case like
J2_callr <ga:@foo>, %R0<imp-use>, ...
R0<def> = ...
the anti-dependency on R0 cannot be ignored and the two instructions
cannot be packetized together, since if they were, the assignment to
R0 would take place before the call.
llvm-svn: 268776
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a step towards removing the rampant undefined behaviour in
SelectionDAG, which is a part of llvm.org/PR26808.
We rename SelectionDAGISel::Select to SelectImpl and update targets to
match, and then change Select to return void and consolidate the
sketchy behaviour we're trying to get away from there.
Next, we'll update backends to implement `void Select(...)` instead of
SelectImpl and eventually drop the base Select implementation.
llvm-svn: 268693
|
|
|
|
|
|
|
|
| |
Patch by Apelete Seketeli.
Differential Revision: http://reviews.llvm.org/D19968
llvm-svn: 268691
|
|
|
|
| |
llvm-svn: 268690
|
|
|
|
|
|
|
| |
complains of missing HexagonAlias.td on ninja.
FIXME: TableGen.cmake globs *.td(s) with wildcards for deps. It is not good.
llvm-svn: 268666
|
|
|
|
|
|
| |
The mem(r0) instructions are treated as mem(r0+#0).
llvm-svn: 268661
|
|
|
|
| |
llvm-svn: 268641
|
|
|
|
|
|
|
|
|
|
| |
The instruction A2_tfrpi has a 64-bit operand, while the corresponding
intrinsic takes a 32-bit value. The actual value has only 8 significant
bits, so the difference is only in the type used to represent it.
In order to map the intrinsic to the instruction, the operand needs to
be extended to the correct type.
llvm-svn: 268635
|
|
|
|
| |
llvm-svn: 268057
|
|
|
|
|
|
| |
Patch by Jyotsna Verma.
llvm-svn: 268051
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the cmake build to enable them.
Summary:
Historically, we had a switch in the Makefiles for turning on "expensive
checks". This has never been ported to the cmake build, but the
(dead-ish) code is still around.
This will also make it easier to turn it on in buildbots.
Reviewers: chandlerc
Subscribers: jyknight, mzolotukhin, RKSimon, gberry, llvm-commits
Differential Revision: http://reviews.llvm.org/D19723
llvm-svn: 268050
|
|
|
|
| |
llvm-svn: 267939
|