| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
The new bidirectional bundle flags are redundant, so inadvertent bundle
tearing can be detected in the machine code verifier.
llvm-svn: 170463
|
| |
|
|
|
|
|
|
|
|
|
| |
The bundle-related MI flags need to be kept in sync with the neighboring
instructions. Don't allow the bulk flag-setting setFlags() function to
change them.
Also don't copy MI flags when cloning an instruction. The clone's bundle
flags will be set when it is explicitly inserted into a bundle.
llvm-svn: 170459
|
| |
|
|
|
|
|
|
|
|
|
| |
Remove the instr_iterator versions of the splice() functions. It doesn't
seem useful to be able to splice sequences of instructions that don't
consist of full bundles.
The normal splice functions that take MBB::iterator arguments are not
changed, and they can move whole bundles around without any problems.
llvm-svn: 170456
|
| |
|
|
| |
llvm-svn: 170454
|
| |
|
|
| |
llvm-svn: 170453
|
| |
|
|
|
|
| |
some targets.
llvm-svn: 170452
|
| |
|
|
|
|
| |
compute it.
llvm-svn: 170451
|
| |
|
|
| |
llvm-svn: 170450
|
| |
|
|
|
|
| |
scheduling decision.
llvm-svn: 170449
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The normal insert() function takes an MBB::iterator position, and
inserts a stand-alone MachineInstr as before.
The insert() function that takes an MBB::instr_iterator position can
insert instructions inside a bundle, and will now update the bundle
flags correctly when that happens.
When the insert position is between two bundles, it is unclear whether
the instruction should be appended to the previous bundle, prepended to
the next bundle, or stand on its own. The MBB::insert() function doesn't
bundle the instruction in that case, use the MIBundleBuilder class for
that.
llvm-svn: 170437
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A register can be associated with several distinct register classes.
For example, on PPC, the floating point registers are each associated with
both F4RC (which holds f32) and F8RC (which holds f64). As a result, this code
would fail when provided with a floating point register and an f64 operand
because it would happen to find the register in the F4RC class first and
return that. From the F4RC class, SDAG would extract f32 as the register
type and then assert because of the invalid implied conversion between
the f64 value and the f32 register.
Instead, search all register classes. If a register class containing the
the requested register has the requested type, then return that register
class. Otherwise, as before, return the first register class found that
contains the requested register.
llvm-svn: 170436
|