| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
This is not yet enabled.
llvm-svn: 83400
|
| |
|
|
|
|
| |
This code is not yet enabled.
llvm-svn: 83349
|
| |
|
|
|
|
| |
slots used by a variable. This info will be used by AsmPrinter to emit debug info for variables.
llvm-svn: 83189
|
| |
|
|
| |
llvm-svn: 83182
|
| |
|
|
| |
llvm-svn: 83164
|
| |
|
|
|
|
|
|
|
|
| |
basic blocks that are so long that their size overflows a short.
Also assert that overflow does not happen in the future, as requested by Evan.
This fixes PR4401.
llvm-svn: 83159
|
| |
|
|
| |
llvm-svn: 83100
|
| |
|
|
| |
llvm-svn: 83019
|
| |
|
|
| |
llvm-svn: 83016
|
| |
|
|
| |
llvm-svn: 82995
|
| |
|
|
|
|
| |
where FCMP_OEQ is not legal and FCMP_OGE is, such as x86.
llvm-svn: 82861
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
This eliminates MachineInstr's std::list member and allows the data to be
created by isel and live for the remainder of codegen, avoiding a lot of
copying and unnecessary translation. This also shrinks MemSDNode.
- Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
fields for MachineMemOperands.
- Change MemSDNode to have a MachineMemOperand member instead of its own
fields with the same information. This introduces some redundancy, but
it's more consistent with what MachineInstr will eventually want.
- Ignore alignment when searching for redundant loads for CSE, but remember
the greatest alignment.
Target-specific code which previously used MemOperandSDNodes with generic
SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
so that the SelectionDAG framework knows that MachineMemOperand information
is available.
llvm-svn: 82794
|
| |
|
|
|
|
|
|
| |
naming scheme used in SelectionDAG, where there are multiple kinds
of "target" nodes, but "machine" nodes are nodes which represent
a MachineInstr.
llvm-svn: 82790
|
| |
|
|
|
|
|
| |
before producing FSIN, FCOS, FSQRT. If they aren't
so marked we have to assume they might set errno.
llvm-svn: 82781
|
| |
|
|
|
|
|
|
|
|
|
|
| |
allows appropriate backends to generate a sqrt instruction.
On x86, this isn't done at -O0 because we go through
FastISel instead. This is a behavior change from before
this series of sqrt patches started. I think this is OK
considering that compile speed is most important at -O0, but
could be convinced otherwise.
llvm-svn: 82778
|
| |
|
|
|
|
|
| |
Previously, it treated GV+28 GV+0 as different bases, and assumed they could
not alias.
llvm-svn: 82753
|
| |
|
|
| |
llvm-svn: 82742
|
| |
|
|
| |
llvm-svn: 82656
|
| |
|
|
|
|
|
| |
is also the name of their type, as declarations like "EVT EVT" look
really odd.
llvm-svn: 82654
|
| |
|
|
|
|
|
|
|
|
|
|
| |
two different places for printing MachineMemOperands.
Drop the virtual from Value::dump and instead give Value a
protected virtual hook that can be overridden by subclasses
to implement custom printing. This lets printing be more
consistent, and simplifies printing of PseudoSourceValue
values.
llvm-svn: 82599
|
| |
|
|
|
|
|
| |
the base pointer, without the offset. This matches MemSDNode's
new alignment behavior, and holds more interesting information.
llvm-svn: 82473
|
| |
|
|
| |
llvm-svn: 82397
|
| |
|
|
| |
llvm-svn: 82355
|
| |
|
|
|
|
| |
blocks and update CFG, it should also inform sdisel of the changes so the phi source operands will come from the right basic blocks.
llvm-svn: 82311
|
| |
|
|
|
|
|
|
| |
sdisel will use to properly complete phi nodes.
Not functionality change yet.
llvm-svn: 82273
|
| |
|
|
| |
llvm-svn: 82245
|
| |
|
|
| |
llvm-svn: 82215
|
| |
|
|
|
|
|
|
| |
switch successor blocks, it can introduce multiple phi operands of the same value from different blocks (and may not be on the predecessor list).
This can be seen on CodeGen/Generic/2006-09-06-SwitchLowering.ll. But it's not known to cause any real regression (but I have added an assertion for it now).
llvm-svn: 82214
|
| |
|
|
|
|
| |
64-bit systems.
llvm-svn: 82180
|
| |
|
|
| |
llvm-svn: 82080
|
| |
|
|
| |
llvm-svn: 82077
|
| |
|
|
|
|
|
|
| |
cannot have different
SVOffsets.
llvm-svn: 81937
|
| |
|
|
|
|
|
|
| |
the current alignment based
on the source value offset. This avoids increasing the size of mem nodes.
llvm-svn: 81897
|
| |
|
|
| |
llvm-svn: 81819
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Switch from an std::set to a SmallPtrSet for visited chain nodes.
2. Do not force the recursive flattening of token factor nodes, regardless of
use count.
3. Immediately process newly created TokenFactor nodes.
Also, improve combiner-aa by teaching it that loads to non-overlapping offsets
of relatively aligned objects cannot alias.
These changes result in a >5x speedup for combiner-aa on most testcases.
llvm-svn: 81816
|
| |
|
|
|
|
| |
it splits them.
llvm-svn: 81815
|
| |
|
|
|
|
|
| |
DAG Combiner to disambiguate chains for loads and stores of types which are
broken up by the Legalizer into smaller pieces.
llvm-svn: 81813
|
| |
|
|
| |
llvm-svn: 81727
|
| |
|
|
| |
llvm-svn: 81493
|
| |
|
|
|
|
| |
isn't legal.
llvm-svn: 81492
|
| |
|
|
|
|
| |
post-decrement load/store.
llvm-svn: 81464
|
| |
|
|
| |
llvm-svn: 81415
|
| |
|
|
| |
llvm-svn: 81343
|
| |
|
|
|
|
|
|
| |
to instructions instead of zero extended ones. This makes the asmprinter
print signed values more consistently. This apparently only really affects
the X86 backend.
llvm-svn: 81265
|
| |
|
|
|
|
|
| |
null in the case of an empty struct, so don't try to call getNumValues
on it.
llvm-svn: 81180
|
| |
|
|
|
|
|
|
|
| |
from floating-point to integer first, and bitcast the result
back to floating-point. Previously, this test was passing by
falling back to SelectionDAG lowering. The resulting code isn't
as nice, but it's correct and CodeGen now stays on the fast path.
llvm-svn: 81171
|
| |
|
|
| |
llvm-svn: 81124
|
| |
|
|
|
|
| |
about by icc (#593, partial). Patch by Erick Tryzelaar.
llvm-svn: 81115
|
| |
|
|
|
|
| |
icc (#177, partial). Patch by Erick Tryzelaar.
llvm-svn: 81106
|
| |
|
|
|
|
| |
Do not use DenseMap operator[] because it inserts new entry if lookup fails. Use find() to check an entry in a DenseMap first.
llvm-svn: 81058
|