| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 131495
|
|
|
|
| |
llvm-svn: 131469
|
|
|
|
|
|
|
| |
passed as the fifth parameter, insure it's passed correctly (in R9).
rdar://problem/6920088
llvm-svn: 131467
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
small.
The greedy register allocator has live range splitting and register class
inflation, so it can actually fully undo this join, including restoring the
original register classes.
We still don't want to do this for long live ranges, mostly because of the high
register pressure of there are many constrained live ranges overlapping.
llvm-svn: 131466
|
|
|
|
|
|
|
|
|
|
|
|
| |
When instructions are deleted, they leave tombstone SlotIndex entries.
The isZeroLength method should ignore these null indexes.
This causes RABasic to sometimes spill a callee-saved register in the
abi-isel.ll test, so don't run that test with -regalloc=basic. Prioritizing
register allocation according to spill weight can cause more registers to be
used.
llvm-svn: 131436
|
|
|
|
| |
llvm-svn: 131430
|
|
|
|
| |
llvm-svn: 131429
|
|
|
|
| |
llvm-svn: 131428
|
|
|
|
|
|
| |
misses.
llvm-svn: 131426
|
|
|
|
|
|
| |
Radar 9422775.
llvm-svn: 131422
|
|
|
|
| |
llvm-svn: 131420
|
|
|
|
| |
llvm-svn: 131419
|
|
|
|
|
|
| |
clang generates for cases like this, but it should become more useful soon.
llvm-svn: 131417
|
|
|
|
|
|
| |
corrupted when setjmp returns again.
llvm-svn: 131399
|
|
|
|
|
|
| |
intrinsic from the x86 code to the generic code.
llvm-svn: 131332
|
|
|
|
|
|
| |
to fix PR9900. I will keep it open until sable is able to comment on it.
llvm-svn: 131294
|
|
|
|
|
|
| |
simplified version. <rdar://problem/9298790>
llvm-svn: 131274
|
|
|
|
|
|
| |
rdar://problem/9298790
llvm-svn: 131269
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
by non-CMP expressions. The executable test case (129821) would test
this as well, if we had an "-O0 -disable-arm-fast-isel" LLVM-GCC
tester. Alas, the ARM assembly would be very difficult to check with
FileCheck.
The thumb2-cbnz.ll test is affected; it generates larger code (tst.w
vs. cmp #0), but I believe the new version is correct.
rdar://problem/9298790
llvm-svn: 131261
|
|
|
|
| |
llvm-svn: 131258
|
|
|
|
|
|
| |
s/DW_AT_APPLE_objc_class_extension/DW_AT_APPLE_objc_complete_type/g
llvm-svn: 131244
|
|
|
|
|
|
| |
test bug and also taught it to update liveins.
llvm-svn: 131241
|
|
|
|
|
|
| |
an attribute DW_AT_APPLE_objc_class_extension.
llvm-svn: 131238
|
|
|
|
|
|
| |
configuration.
llvm-svn: 131235
|
|
|
|
|
|
|
|
|
| |
markers. In some cases a register def is dead on one path, but not on
another.
This is passing Clang self-hosting.
llvm-svn: 131214
|
|
|
|
|
|
| |
DW_LNS_set_prologue_end line table opcode.
llvm-svn: 131194
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
about to be spilled.
This can only happen when two extra snippet registers are included in the spill,
and there is a copy between them. Hoisting the spill creates problems because
the hoist will mark the copy for later dead code elimination, and spilling the
second register will turn the copy into a spill.
<rdar://problem/9420853>
llvm-svn: 131192
|
|
|
|
|
|
|
|
| |
If there is a store after the load node, then there is a chain, which means
that there is another user. Thus, asking hasOneUser would fail. Instead we
ask hasNUsesOfValue on the 'data' value.
llvm-svn: 131183
|
|
|
|
|
|
| |
to provide a reduced testcase.
llvm-svn: 131176
|
|
|
|
|
|
|
|
| |
intrinsic call. This prevents it from being reordered so that it appears
*before* the setjmp intrinsic (thus making it completely useless).
<rdar://problem/9409683>
llvm-svn: 131174
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
at the start of basic blocks to their common predecessor. It's actually quite
common (e.g. about 50 times in JM/lencod) and has shown to be a nice code size
benefit. e.g.
pushq %rax
testl %edi, %edi
jne LBB0_2
## BB#1:
xorb %al, %al
popq %rdx
ret
LBB0_2:
xorb %al, %al
callq _foo
popq %rdx
ret
=>
pushq %rax
xorb %al, %al
testl %edi, %edi
je LBB0_2
## BB#1:
callq _foo
LBB0_2:
popq %rdx
ret
rdar://9145558
llvm-svn: 131172
|
|
|
|
| |
llvm-svn: 131157
|
|
|
|
|
|
| |
rdar://problem/9413587 .
llvm-svn: 131156
|
|
|
|
|
|
|
| |
test case; I've only seen this on a release branch, and I can't get it
to reproduce on trunk. rdar://problem/7662569
llvm-svn: 131152
|
|
|
|
| |
llvm-svn: 131151
|
|
|
|
|
|
| |
DwarfRequiresRelocationForSectionOffset as this is not specific to StmtList.
llvm-svn: 131148
|
|
|
|
|
|
|
|
|
| |
this clang will use .debug_frame in, for example,
clang -g -c -m32 test.c
This matches gcc's behaviour. It looks like .debug_frame is a bit bigger
than .eh_frame, but has the big advantage of not being allocated.
llvm-svn: 131140
|
|
|
|
|
|
|
|
| |
The previous invalidation missed the alias interference caches.
Also add a stats counter for the number of repaired ranges.
llvm-svn: 131133
|
|
|
|
| |
llvm-svn: 131106
|
|
|
|
|
|
| |
Patch by Evan Cheng.
llvm-svn: 131093
|
|
|
|
| |
llvm-svn: 131082
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It can happen that a live debug variable is the last use of a sub-register, and
the register allocator will pick a larger register class for the virtual
register. If the allocated register doesn't support the sub-register index,
just use %noreg for the debug variables instead of asserting.
In PR9872, a debug variable ends up in the sub_8bit_hi part of a GR32_ABCD
register. The register is split and one part is inflated to GR32 and assigned
%ESI because there are no more normal uses of sub_8bit_hi.
Since %ESI doesn't have that sub-register, substPhysReg asserted. Now it will
simply insert a %noreg instead, and the debug variable will be marked
unavailable in that range.
We don't currently have a way of saying: !"value" is in bits 8-15 of %ESI, I
don't know if DWARF even supports that.
llvm-svn: 131073
|
|
|
|
|
|
|
| |
This can't be just an assertion, users can always write impossible inline
assembly. Such an assembly statement should be included in the error message.
llvm-svn: 131024
|
|
|
|
| |
llvm-svn: 131022
|
|
|
|
| |
llvm-svn: 131015
|
|
|
|
|
|
| |
functionality change.
llvm-svn: 131012
|
|
|
|
| |
llvm-svn: 131008
|
|
|
|
|
|
|
|
| |
safely erased.
This should unbreak dragonegg-i386-linux and build-self-4-mingw32.
llvm-svn: 131007
|
|
|
|
| |
llvm-svn: 131001
|
|
|
|
|
|
|
|
|
|
|
|
| |
After a virtual register is split, update any debug user variables that resided
in the old register. This ensures that the LiveDebugVariables are still correct
after register allocation.
This may create DBG_VALUE instructions that place a user variable in a register
in parts of the function and in a stack slot in other parts. DwarfDebug
currently doesn't support that.
llvm-svn: 130998
|