| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
the return value of an sret-demoted call, it needs to use possibly illegal types that match the declared Type of the callee.
llvm-svn: 93667
|
|
|
|
|
|
|
|
|
|
|
| |
print/dumpWithDepth allows one to dump a DAG up to N levels deep.
dump/printWithFullDepth prints the whole DAG, subject to a depth limit
on 100 in the default case (to prevent infinite recursion).
Have CannotYetSelect to a dumpWithFullDepth so it is clearer exactly
what the non-matching DAG looks like.
llvm-svn: 93538
|
|
|
|
|
|
|
|
|
| |
its first argument, via function-local metadata (instead of via a bitcast).
This patch also cleans up code that expects there to be a bitcast in the first argument and testcases that call llvm.dbg.declare.
It also strips old llvm.dbg.declare intrinsics that did not pass metadata as the first argument.
llvm-svn: 93531
|
|
|
|
|
|
| |
auto-upgraded
llvm-svn: 93515
|
|
|
|
|
|
|
|
| |
its first argument, via function-local metadata (instead of via a bitcast).
This patch also cleans up code that expects there to be a bitcast in the first argument and testcases that call llvm.dbg.declare.
llvm-svn: 93504
|
|
|
|
| |
llvm-svn: 93487
|
|
|
|
| |
llvm-svn: 93417
|
|
|
|
| |
llvm-svn: 93228
|
|
|
|
| |
llvm-svn: 93227
|
|
|
|
|
|
|
|
| |
BRCOND was constant folded.
This fixes PR5980.
llvm-svn: 93184
|
|
|
|
|
|
|
|
| |
then a load if the
loads are not in the default address space because the transformation discards src value info.
llvm-svn: 93180
|
|
|
|
|
|
|
|
|
|
| |
really does need to be a vector type, because
TargetLowering::getOperationAction for SIGN_EXTEND_INREG uses that type,
and it needs to be able to distinguish between vectors and scalars.
Also, fix some more issues with legalization of vector casts.
llvm-svn: 93043
|
|
|
|
|
|
| |
ISD::DELETED_NODE is not safe. Use a DAGUpdateListener to remove dead nodes from work list instead.
llvm-svn: 93031
|
|
|
|
|
|
| |
replaced. Do not delete dead nodes again.
llvm-svn: 92988
|
|
|
|
|
|
|
|
|
|
| |
When folding a and(any_ext(load)) both the any_ext and the
load have to have only a single use.
This removes the anyext-uses.ll testcase which started failing
because it is unreduced and unclear what it is testing.
llvm-svn: 92950
|
|
|
|
|
|
| |
time, no functionality change.
llvm-svn: 92948
|
|
|
|
| |
llvm-svn: 92943
|
|
|
|
| |
llvm-svn: 92918
|
|
|
|
| |
llvm-svn: 92850
|
|
|
|
|
|
|
|
|
|
| |
(OP (trunc x), (trunc y)) -> (trunc (OP x, y))
Unfortunately this simple change causes dag combine to infinite looping. The problem is the shrink demanded ops optimization tend to canonicalize expressions in the opposite manner. That is badness. This patch disable those optimizations in dag combine but instead it is done as a late pass in sdisel.
This also exposes some deficiencies in dag combine and x86 setcc / brcond lowering. Teach them to look pass ISD::TRUNCATE in various places.
llvm-svn: 92849
|
|
|
|
|
|
| |
order.
llvm-svn: 92810
|
|
|
|
| |
llvm-svn: 92807
|
|
|
|
|
|
| |
bottom-up scheduler. We prefer the lower order number.
llvm-svn: 92806
|
|
|
|
|
|
| |
result in illegal types for the SHL operator.
llvm-svn: 92797
|
|
|
|
|
|
|
| |
uses several kinds of opcode values which are not declared within
that enum. This fixes PR5946.
llvm-svn: 92794
|
|
|
|
|
|
| |
dereference the type pointer.
llvm-svn: 92726
|
|
|
|
|
|
|
|
|
| |
Intrinsic::dbg_stoppoint
Intrinsic::dbg_region_start
Intrinsic::dbg_region_end
Intrinsic::dbg_func_start
llvm-svn: 92672
|
|
|
|
| |
llvm-svn: 92597
|
|
|
|
| |
llvm-svn: 92581
|
|
|
|
| |
llvm-svn: 92580
|
|
|
|
| |
llvm-svn: 92579
|
|
|
|
| |
llvm-svn: 92578
|
|
|
|
| |
llvm-svn: 92577
|
|
|
|
| |
llvm-svn: 92576
|
|
|
|
| |
llvm-svn: 92575
|
|
|
|
| |
llvm-svn: 92574
|
|
|
|
| |
llvm-svn: 92573
|
|
|
|
| |
llvm-svn: 92572
|
|
|
|
| |
llvm-svn: 92571
|
|
|
|
| |
llvm-svn: 92570
|
|
|
|
| |
llvm-svn: 92569
|
|
|
|
| |
llvm-svn: 92568
|
|
|
|
|
|
|
|
|
| |
clear what information these functions are actually using.
This is also a micro-optimization, as passing a SDNode * around is
simpler than passing a { SDNode *, int } by value or reference.
llvm-svn: 92564
|
|
|
|
|
|
| |
in an inline asm.
llvm-svn: 92512
|
|
|
|
|
|
|
|
|
|
|
| |
(X != null) | (Y != null) --> (X|Y) != 0
(X == null) & (Y == null) --> (X|Y) == 0
so that instcombine can stop doing this for pointers. This is part of PR3351,
which is a case where instcombine doing this for pointers (inserting ptrtoint)
is pessimizing code.
llvm-svn: 92406
|
|
|
|
| |
llvm-svn: 92404
|
|
|
|
|
|
|
| |
SelectionDAGBuilder.cpp:4294: warning: suggest explicit braces to avoid
ambiguous ‘else’
llvm-svn: 92395
|
|
|
|
| |
llvm-svn: 92394
|
|
|
|
|
|
|
|
|
|
| |
multiply sequence when the power is a constant integer. Before, our
codegen for std::pow(.., int) always turned into a libcall, which was
really inefficient.
This should also make many gfortran programs happier I'd imagine.
llvm-svn: 92388
|
|
|
|
| |
llvm-svn: 92263
|