| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
teach it how to recognize invariant physical registers.
llvm-svn: 83476
|
| |
|
|
|
|
|
|
|
| |
implementations with a new MachineInstr::isInvariantLoad, which uses
MachineMemOperands and is target-independent. This brings MachineLICM
and other functionality to targets which previously lacked an
isInvariantLoad implementation.
llvm-svn: 83475
|
| |
|
|
| |
llvm-svn: 83474
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a virtual register to eliminate a frame index, it can return that register
and the constant stored there to PEI to track. When scavenging to allocate
for those registers, PEI then tracks the last-used register and value, and
if it is still available and matches the value for the next index, reuses
the existing value rather and removes the re-materialization instructions.
Fancier tracking and adjustment of scavenger allocations to keep more
values live for longer is possible, but not yet implemented and would likely
be better done via a different, less special-purpose, approach to the
problem.
eliminateFrameIndex() is modified so the target implementations can return
the registers they wish to be tracked for reuse.
ARM Thumb1 implements and utilizes the new mechanism. All other targets are
simply modified to adjust for the changed eliminateFrameIndex() prototype.
llvm-svn: 83467
|
| |
|
|
| |
llvm-svn: 83437
|
| |
|
|
|
|
| |
This is not yet enabled.
llvm-svn: 83400
|
| |
|
|
|
|
|
|
|
|
| |
verbose-asm mode, print comments instead. This eliminates a non-comment
difference between verbose-asm mode and non-verbose-asm mode.
Also, factor out the relevant code out of all the targets and into
target-independent code.
llvm-svn: 83392
|
| |
|
|
|
|
|
| |
where the element is of a basic builtin type. For example, to get
an i8* use getInt8PtrTy.
llvm-svn: 83379
|
| |
|
|
| |
llvm-svn: 83378
|
| |
|
|
| |
llvm-svn: 83367
|
| |
|
|
|
|
| |
and after printing an instruction.
llvm-svn: 83363
|
| |
|
|
| |
llvm-svn: 83362
|
| |
|
|
|
|
| |
This will be used by processDebugLoc().
llvm-svn: 83361
|
| |
|
|
| |
llvm-svn: 83356
|
| |
|
|
| |
llvm-svn: 83355
|
| |
|
|
|
|
| |
This code is not yet enabled.
llvm-svn: 83349
|
| |
|
|
|
|
| |
check debug info's presence in a module.
llvm-svn: 83348
|
| |
|
|
|
|
| |
This can happen if debug info is processed lazily.
llvm-svn: 83347
|
| |
|
|
|
|
|
| |
void foo() { static int bar = 42; }
Here, foo's DIE is parent of bar's DIE.
llvm-svn: 83344
|
| |
|
|
| |
llvm-svn: 83343
|
| |
|
|
|
|
|
|
| |
spill slot. When frame references are via the frame pointer, they will be
negative, but Thumb1 load/store instructions only allow positive immediate
offsets. Instead, Thumb1 will spill to R12.
llvm-svn: 83336
|
| |
|
|
| |
llvm-svn: 83317
|
| |
|
|
|
|
|
|
| |
the new predicates I added) instead of going through a context and doing a
pointer comparison. Besides being cheaper, this allows a smart compiler
to turn the if sequence into a switch.
llvm-svn: 83297
|
| |
|
|
|
|
| |
which causes dependence info to be linked into lli.
llvm-svn: 83289
|
| |
|
|
| |
llvm-svn: 83285
|
| |
|
|
| |
llvm-svn: 83255
|
| |
|
|
| |
llvm-svn: 83254
|
| |
|
|
|
|
|
| |
MI->addOperand invalidates references to it's operands, avoid touching
the operand after a new one was added.
llvm-svn: 83249
|
| |
|
|
| |
llvm-svn: 83223
|
| |
|
|
|
|
| |
-arm-use-neon-fp to override the default.
llvm-svn: 83218
|
| |
|
|
|
|
| |
specification. Remove -mattr for setting PostRAScheduler enable and instead use CPU string.
llvm-svn: 83215
|
| |
|
|
|
|
|
|
| |
an machine instruction.
This is not yet enabled.
llvm-svn: 83210
|
| |
|
|
|
|
| |
registers are available for anti-dependency breaking. Some cleanup.
llvm-svn: 83208
|
| |
|
|
| |
llvm-svn: 83207
|
| |
|
|
|
|
| |
operands of instructions with these properties while breaking anti-dep.
llvm-svn: 83198
|
| |
|
|
|
|
| |
inlined functions.
llvm-svn: 83190
|
| |
|
|
|
|
| |
slots used by a variable. This info will be used by AsmPrinter to emit debug info for variables.
llvm-svn: 83189
|
| |
|
|
|
|
| |
This will allow processDebugLoc() to handle scopes for DWARF debug info.
llvm-svn: 83183
|
| |
|
|
| |
llvm-svn: 83182
|
| |
|
|
| |
llvm-svn: 83181
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to emit target-specific things at the beginning of the asm output. This
fixes a problem for PPC, where the text sections are not being kept together
as expected. The base class doInitialization code calls DW->BeginModule()
which emits a bunch of DWARF section directives. The PPC doInitialization
code then emits all the TEXT section directives, with the intention that they
will be kept together. But as I understand it, the Darwin assembler treats
the default TEXT section as a special case and moves it to the beginning of
the file, which means that all those DWARF sections are in the middle of
the text. With this change, the EmitStartOfAsmFile hook is called before
the DWARF section directives are emitted, so that all the PPC text section
directives come out right at the beginning of the file.
llvm-svn: 83176
|
| |
|
|
| |
llvm-svn: 83171
|
| |
|
|
| |
llvm-svn: 83164
|
| |
|
|
| |
llvm-svn: 83163
|
| |
|
|
|
|
|
|
|
|
| |
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: 83144
|
| |
|
|
|
|
| |
per customary usage
llvm-svn: 83137
|
| |
|
|
| |
llvm-svn: 83132
|
| |
|
|
| |
llvm-svn: 83123
|
| |
|
|
|
|
| |
post-register-allocation scheduling. By default it is off. For ARM, enable/disable with -mattr=+/-postrasched. Enable by default for cortex-a8.
llvm-svn: 83122
|