| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
Added checks for regs which should not be 15.
rdar://problem/9237734
llvm-svn: 128945
|
|
|
|
|
|
| |
still used by RegionInfo :(
llvm-svn: 128943
|
|
|
|
|
|
|
|
|
| |
For register-controlled shifts, we should check that the encoding constraint
Inst{7} = 0 and Inst{4} = 1 is satisfied.
rdar://problem/9237693
llvm-svn: 128941
|
|
|
|
|
|
| |
doing the expansion earlier (using a custom inserter) to allow for the chance of predicating these instructions.
llvm-svn: 128940
|
|
|
|
| |
llvm-svn: 128935
|
|
|
|
| |
llvm-svn: 128929
|
|
|
|
|
|
| |
of a basic block.
llvm-svn: 128925
|
|
|
|
| |
llvm-svn: 128924
|
|
|
|
|
|
|
|
| |
Modify DisassembleCoprocessor() of ARMDisassemblerCore.cpp to react to the change.
rdar://problem/9236873
llvm-svn: 128922
|
|
|
|
| |
llvm-svn: 128920
|
|
|
|
|
|
|
|
| |
def into the remaining use.
Rematerialization can leave single-use loads behind that we might as well fold whenever possible.
llvm-svn: 128918
|
|
|
|
| |
llvm-svn: 128914
|
|
|
|
| |
llvm-svn: 128913
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
developers can see if their driver changed any cl::Option's. The
current implementation isn't perfect but handles most kinds of
options. This is nice to have when decomposing the stages of
compilation and moving between different drivers. It's also a good
sanity check when comparing results produced by different command line
invocations that are expected to produce the comparable results.
Note: This is not an attempt to prolong the life of cl::Option. On the
contrary, it's a placeholder for a feature that must exist when
cl::Option is replaced by a more appropriate framework. A new
framework needs: a central option registry, dynamic name lookup,
non-global containers of option values (e.g. per-module,
per-function), *and* the ability to print options values and their defaults at
any point during compilation.
llvm-svn: 128910
|
|
|
|
|
|
|
|
|
|
| |
getEDInfo(), in which case this code would dereference
NULL. EDInst can already handle NULL info, so avoid
the dereference and pass NULL through.
Reviewed by Sean Callanan
llvm-svn: 128904
|
|
|
|
|
|
| |
Finish what r128736 started.
llvm-svn: 128903
|
|
|
|
|
|
|
|
|
|
| |
An alternative syntax is available for a modified immediate constant that permits the programmer to specify
the encoding directly. In this syntax, #<const> is instead written as #<byte>,#<rot>, where:
<byte> is the numeric value of abcdefgh, in the range 0-255
<rot> is twice the numeric value of rotation, an even number in the range 0-30.
llvm-svn: 128897
|
|
|
|
|
|
|
|
|
| |
if dLo == 15 || dHi == 15 || n == 15 || m == 15 then UNPREDICTABLE;
if dHi == dLo then UNPREDICTABLE;
rdar://problem/9230202
llvm-svn: 128895
|
|
|
|
|
|
| |
ADC/ABC with the appropriate S-bit input value.
llvm-svn: 128892
|
|
|
|
|
|
|
|
|
|
|
|
| |
addRegisterDead().
There can be multiple defs for a single virtual register when they are defining
sub-registers.
The missing <dead> flag was stopping the inline spiller from eliminating dead
code after rematerialization.
llvm-svn: 128888
|
|
|
|
| |
llvm-svn: 128887
|
|
|
|
|
|
|
|
|
|
|
| |
UseSlots.
This allows us to always keep the smaller slot for an instruction which is what
we want when a register has early clobber defines.
Drop the UsingInstrs set and the UsingBlocks map. They are no longer needed.
llvm-svn: 128886
|
|
|
|
|
|
|
| |
space info. We crash with an assert in this case. This change checks that the
address space of the bitcasted pointer is the same as the gep ptr.
llvm-svn: 128884
|
|
|
|
| |
llvm-svn: 128875
|
|
|
|
|
|
|
|
|
| |
inlined path for the common case.
Most basic blocks don't contain a call that may throw, so the last split point
os simply the first terminator.
llvm-svn: 128874
|
|
|
|
|
|
|
|
|
|
|
|
| |
It needed to be moved closer to the setjmp statement, because the code directly
after the setjmp needs to know about values that are on the stack. Also, the
'bitcast' of the function context was causing a dead load. This wouldn't be too
horrible, except that at -O0 it wasn't optimized out, and because it wasn't
using the correct base pointer (if there is a VLA), it would try to access a
value from a garbage address.
<rdar://problem/9130540>
llvm-svn: 128873
|
|
|
|
|
|
| |
Fixes rdar://9184526
llvm-svn: 128869
|
|
|
|
| |
llvm-svn: 128868
|
|
|
|
|
|
|
|
|
| |
rdar://problem/9230801 ARM disassembler discrepancy: erroneously accepting SRS
Plus add invalid-RFEorLDMIA-arm.txt test which should have been checked in with
http://llvm.org/viewvc/llvm-project?view=rev&revision=128859.
llvm-svn: 128864
|
|
|
|
|
|
|
|
| |
Inst{15-12} should be specified as 0b0000.
rdar://problem/9231168 ARM disassembler discrepancy: erroneously accepting MUL
llvm-svn: 128862
|
|
|
|
|
|
|
|
|
| |
rdar://problem/9229922 ARM disassembler discrepancy: erroneously accepting RFE
Also LDC/STC instructions are predicated while LDC2/STC2 instructions are not, fixed while
doing regression testings.
llvm-svn: 128859
|
|
|
|
| |
llvm-svn: 128856
|
|
|
|
|
|
|
|
|
|
|
| |
The JITMemory manager references LLVM IR constructs directly, while the
runtime Dyld works at a lower level and can handle objects which may not
originate from LLVM IR. Introduce a new layer for the memory manager to
handle the interface between them. For the MCJIT, this layer will be almost
entirely simply a call-through w/ translation between the IR objects and
symbol names.
llvm-svn: 128851
|
|
|
|
| |
llvm-svn: 128847
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a virtual register has a single value that is defined as a copy of a
reserved register, permit that copy to be joined. These virtual register are
usually copies of the stack pointer:
%vreg75<def> = COPY %ESP; GR32:%vreg75
MOV32mr %vreg75, 1, %noreg, 0, %noreg, %vreg74<kill>
MOV32mi %vreg75, 1, %noreg, 8, %noreg, 0
MOV32mi %vreg75<kill>, 1, %noreg, 4, %noreg, 0
CALLpcrel32 ...
Coalescing these virtual registers early decreases register pressure.
Previously, they were coalesced by RALinScan::attemptTrivialCoalescing after
register allocation was completed.
The lower register pressure causes the mcinst-lowering-cmp0.ll test case to fail
because it depends on linear scan spilling a particular register.
I am deleting 2008-08-05-SpillerBug.ll because it is counting the number of
instructions emitted, and its revision history shows the 'correct' count being
edited many times.
llvm-svn: 128845
|
|
|
|
| |
llvm-svn: 128844
|
|
|
|
|
|
| |
rdar://problem/9225433
llvm-svn: 128841
|
|
|
|
|
|
|
| |
This causes defs to dominate uses, no instructions after terminators, and other
goodness.
llvm-svn: 128836
|
|
|
|
|
|
|
|
|
|
| |
also fix the encoding of the later.
- Add a new encoding bit to describe the index mode used in AM3.
- Teach printAddrMode3Operand to check by the addressing mode which
index mode to print.
- Testcases.
llvm-svn: 128832
|
|
|
|
|
|
| |
selection to Legalize phase.
llvm-svn: 128830
|
|
|
|
| |
llvm-svn: 128829
|
|
|
|
|
|
| |
The 32-bit R0 cannot be used where a 64-bit register is expected.
llvm-svn: 128828
|
|
|
|
| |
llvm-svn: 128826
|
|
|
|
|
|
|
|
| |
Define most shift masks incrementally to reduce the redundant
hard-coding. Introduce new shift for the VEX flags to replace the
magic constant 32 in various places.
llvm-svn: 128822
|
|
|
|
| |
llvm-svn: 128821
|
|
|
|
| |
llvm-svn: 128820
|
|
|
|
|
|
|
| |
returning a scalar value in a function whose return type is a single-
element structure or array.
llvm-svn: 128810
|
|
|
|
|
|
| |
Contributed by: etherzhhb@gmail.com
llvm-svn: 128808
|
|
|
|
|
|
|
| |
llvm-commits. (Not sure why it only breaks on Windows; maybe it has
something to do with the iterator representation...)
llvm-svn: 128802
|
|
|
|
|
|
| |
separate executable.
llvm-svn: 128801
|