| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Most IMPLICIT_DEF instructions are removed by the ProcessImplicitDefs
pass, and a few are reinserted by PHIElimination when a PHI argument is
<undef>.
RegisterCoalescer was assuming that all IMPLICIT_DEF live ranges look
like those created by PHIElimination, and that their live range never
leaves the basic block.
The PR14732 test case does tricks with PHI nodes that causes a longer
IMPLICIT_DEF live range to appear. This happens very rarely, but
RegisterCoalescer should be able to handle it.
llvm-svn: 171435
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
DAGCombiner::reduceBuildVecConvertToConvertBuildVec() was making two
mistakes:
1. It was checking the legality of scalar INT_TO_FP nodes and then generating
vector nodes.
2. It was passing the result value type to
TargetLoweringInfo::getOperationAction() when it should have been
passing the value type of the first operand.
llvm-svn: 171420
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.
There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.
The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.
I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).
I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.
llvm-svn: 171366
|
| |
|
|
|
|
|
|
|
|
| |
utils/sort_includes.py script.
Most of these are updating the new R600 target and fixing up a few
regressions that have creeped in since the last time I sorted the
includes.
llvm-svn: 171362
|
| |
|
|
|
|
|
|
| |
Fixes pr14751.
Patch by Kai; Thanks!
llvm-svn: 171261
|
| |
|
|
|
|
|
|
|
| |
GEP::accumulateConstantOffset().
The later API is nicer than the former, and is correct regarding wrap-around offsets (if anyone cares).
There are a few more places left with duplicated code, which I'll remove soon.
llvm-svn: 171259
|
| |
|
|
|
|
| |
AttributeSet accessor method.
llvm-svn: 171256
|
| |
|
|
|
|
| |
methods instead.
llvm-svn: 171255
|
| |
|
|
|
|
|
|
|
| |
directly.
This is in preparation for removing the use of the 'Attribute' class as a
collection of attributes. That will shift to the AttributeSet class instead.
llvm-svn: 171253
|
| |
|
|
|
|
|
|
| |
are before or after different runs of DAGCo, with the CombineLevel enum.
Also, added a new API for checking if we are running before or after the LegalizeVectorOps phase.
llvm-svn: 171142
|
| |
|
|
|
|
| |
per compile unit/skeleton compile unit. Update tests accordingly.
llvm-svn: 171133
|
| |
|
|
|
|
|
|
|
| |
These are now generally used for all diagnostics from the backend, not just
for inline assembly, so this drops the "InlineAsm" from the names. No
functional change. (I've left aliases for the old names but only for long
enough to let me switch over clang to use the new ones.)
llvm-svn: 171047
|
| |
|
|
|
|
|
|
|
| |
When the backend is used from clang, it should produce proper diagnostics
instead of just printing messages to errs(). Other clients may also want to
register their own error handlers with the LLVMContext, and the same handler
should work for warnings in the same way as the existing emitError methods.
llvm-svn: 171041
|
| |
|
|
|
|
|
| |
Back when this exception was added, it was skipping a lot more code, but
now it just looks like a premature optimization.
llvm-svn: 170989
|
| |
|
|
|
|
|
| |
The representation of the Operands array is going to change soon so it
can be allocated from a BumpPtrAllocator.
llvm-svn: 170988
|
| |
|
|
| |
llvm-svn: 170902
|
| |
|
|
| |
llvm-svn: 170836
|
| |
|
|
|
|
|
|
|
|
|
| |
Instructions that are inserted in a basic block can still be decorated
with addOperand(MO).
Make the two-argument addOperand() function contain the actual
implementation. This function will now always have a valid MF reference
that it can use for memory allocation.
llvm-svn: 170798
|
| |
|
|
|
|
|
|
|
| |
This function is often used to decorate dangling instructions, so a
context reference is required to allocate memory for the operands.
Also add a corresponding MachineInstrBuilder method.
llvm-svn: 170797
|
| |
|
|
| |
llvm-svn: 170796
|
| |
|
|
| |
llvm-svn: 170771
|
| |
|
|
|
|
| |
into the DwarfUnits class.
llvm-svn: 170770
|
| |
|
|
| |
llvm-svn: 170766
|
| |
|
|
| |
llvm-svn: 170716
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This is supposed to be a mechanical change with no functional effects.
InstrEmitter can generate all types of MachineOperands which revealed
that MachineInstrBuilder was missing a few methods, added by this patch.
Besides providing a context pointer to MI::addOperand(),
MachineInstrBuilder seems like a better fit for this code.
llvm-svn: 170712
|
| |
|
|
|
|
| |
This automatically passes a context pointer to MI->addOperand().
llvm-svn: 170711
|
| |
|
|
|
|
| |
<rdar://problem/12879313>
llvm-svn: 170630
|
| |
|
|
|
|
| |
No testcase because it is apparently not so trivial to construct.
llvm-svn: 170595
|
| |
|
|
|
|
| |
the abbreviations. Part of implementing split dwarf.
llvm-svn: 170589
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Use the version that also takes an MF reference instead.
It would technically be possible to extract an MF reference from the MI
as MI->getParent()->getParent(), but that would not work for MIs that
are not inserted into any basic block.
Given the reasonably small number of places this constructor was used at
all, I preferred the compile time check to a run time assertion.
llvm-svn: 170588
|
| |
|
|
|
|
| |
Accordingly, add MVT::getVT.
llvm-svn: 170550
|
| |
|
|
| |
llvm-svn: 170540
|
| |
|
|
|
|
| |
instead of EVTs.
llvm-svn: 170538
|
| |
|
|
|
|
| |
MVTs, instead of EVTs.
llvm-svn: 170537
|
| |
|
|
|
|
| |
from EVT.
llvm-svn: 170536
|
| |
|
|
|
|
| |
EVTs.
llvm-svn: 170535
|
| |
|
|
|
|
| |
EVTs.
llvm-svn: 170534
|
| |
|
|
|
|
| |
of EVT.
llvm-svn: 170532
|
| |
|
|
|
|
| |
instead of EVTs.
llvm-svn: 170529
|
| |
|
|
| |
llvm-svn: 170524
|
| |
|
|
|
|
| |
EVT.
llvm-svn: 170522
|
| |
|
|
| |
llvm-svn: 170510
|
| |
|
|
| |
llvm-svn: 170506
|
| |
|
|
|
|
|
|
| |
bitwidth op back to the original size. If we reduce ANDs then this can cause
an endless loop. This patch changes the ZEXT to ANY_EXTEND if the demanded bits
are equal or smaller than the size of the reduced operation.
llvm-svn: 170505
|
| |
|
|
|
|
| |
single attribute in the future.
llvm-svn: 170502
|
| |
|
|
| |
llvm-svn: 170497
|
| |
|
|
| |
llvm-svn: 170496
|
| |
|
|
|
|
| |
rewritten as a compare against a constant 0 with the opposite condition.
llvm-svn: 170495
|
| |
|
|
|
|
|
|
|
|
|
| |
The bundle_iterator::operator++ function now doesn't need to dig out the
basic block and check against end(). It can use the isBundledWithSucc()
flag to find the last bundled instruction safely.
Similarly, MachineInstr::isBundled() no longer needs to look at
iterators etc. It only has to look at flags.
llvm-svn: 170473
|
| |
|
|
|
|
|
| |
Now that the bundle flag aware APIs are all in place, it is possible to
continuously verify the flag consistency.
llvm-svn: 170465
|