| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 131189
|
| |
|
|
| |
llvm-svn: 131187
|
| |
|
|
|
|
|
|
|
| |
This change allows bugpoint to pinpoint the "opt" pass and bitcode
segment responsible for a crash caused by miscompilation. At least it
works well for me now, without having to create any custom execution
wrappers.
llvm-svn: 131186
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
splat vector.
llvm-svn: 131179
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
Next up: xor and and.
Part of rdar://8470697
llvm-svn: 131171
|
| |
|
|
| |
llvm-svn: 131164
|
| |
|
|
| |
llvm-svn: 131162
|
| |
|
|
| |
llvm-svn: 131161
|
| |
|
|
| |
llvm-svn: 131160
|
| |
|
|
|
|
| |
headers.
llvm-svn: 131159
|
| |
|
|
| |
llvm-svn: 131157
|
| |
|
|
|
|
| |
rdar://problem/9413587 .
llvm-svn: 131156
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
standard set of passes used by front ends can now be modified by LLVM plugins, without needing to modify any front ends.
Still to do:
- Allow replacing / removing passes (infrastructure there, just needs an infrastructure exposed)
- Defining sets of passes to be added or removed as a group
- Extending the support to allow user-defined groups of optimisations
- Allow plugins to be specified for loading automatically (e.g. from plugins.conf or some similar mechanism)
Reviewed by Nick Lewycky.
llvm-svn: 131155
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 131149
|
| |
|
|
|
|
| |
DwarfRequiresRelocationForSectionOffset as this is not specific to StmtList.
llvm-svn: 131148
|
| |
|
|
| |
llvm-svn: 131146
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
cut and paste.
llvm-svn: 131139
|
| |
|
|
|
|
|
| |
DWARF stuff also gets fixed up by ELFARMAsmBackend::ApplyFixup(),
but the offset is not guaranteed to be mod 4 == 0 as in text/data.
llvm-svn: 131137
|
| |
|
|
|
|
|
|
| |
The previous invalidation missed the alias interference caches.
Also add a stats counter for the number of repaired ranges.
llvm-svn: 131133
|
| |
|
|
| |
llvm-svn: 131129
|
| |
|
|
|
|
| |
one of the sections is created.
llvm-svn: 131124
|
| |
|
|
|
|
| |
Patch by Wei-Ren Chen
llvm-svn: 131123
|
| |
|
|
| |
llvm-svn: 131121
|
| |
|
|
| |
llvm-svn: 131120
|
| |
|
|
| |
llvm-svn: 131119
|
| |
|
|
| |
llvm-svn: 131118
|
| |
|
|
| |
llvm-svn: 131117
|
| |
|
|
| |
llvm-svn: 131112
|
| |
|
|
| |
llvm-svn: 131106
|
| |
|
|
|
|
| |
Patch by Evan Cheng.
llvm-svn: 131093
|
| |
|
|
| |
llvm-svn: 131088
|
| |
|
|
|
|
| |
Patch by Liu <proljc@gmail.com>!
llvm-svn: 131086
|
| |
|
|
|
|
| |
lane) for size 32
llvm-svn: 131085
|
| |
|
|
| |
llvm-svn: 131082
|
| |
|
|
| |
llvm-svn: 131078
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"b + ((a < b) ? 1 : 0)" compiles into
cmpl %esi, %edi
adcl $0, %esi
instead of
cmpl %esi, %edi
sbbl %eax, %eax
andl $1, %eax
addl %esi, %eax
This saves a register, a false dependency on %eax
(Intel's CPUs still don't ignore it) and it's shorter.
llvm-svn: 131070
|
| |
|
|
|
|
|
| |
the smaller encoding and this cuts 270336 bytes from a release version of
clang and 1246272 bytes from a debug build.
llvm-svn: 131067
|
| |
|
|
|
|
|
| |
Tablegen will invent its own names for these indexes, and the register file is a
bit simpler.
llvm-svn: 131059
|
| |
|
|
|
|
|
| |
often expressed as "x >= y ? x : y", there is a good chance we can extract
the existing "x >= y" from it and use that as a replacement for "max(x,y)==x".
llvm-svn: 131049
|
| |
|
|
|
|
| |
Patch by Stephen Hines.
llvm-svn: 131045
|