| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
SelectionDAG do those. This fixes PR3955.
llvm-svn: 68546
|
| |
|
|
|
|
|
|
|
|
| |
When compiling in Thumb mode, only the low (R0-R7) registers are available
for most instructions. Breaking the low registers into a new register class
handles this. Uses of R12, SP, etc, are handled explicitly where needed
with copies inserted to move results into low registers where the rest of
the code generator can deal with them.
llvm-svn: 68545
|
| |
|
|
| |
llvm-svn: 68542
|
| |
|
|
|
|
| |
Types can have references to eachother, so we can't just call destroy on them.
llvm-svn: 68523
|
| |
|
|
| |
llvm-svn: 68500
|
| |
|
|
| |
llvm-svn: 68485
|
| |
|
|
|
|
| |
Patch by Richard Pennington.
llvm-svn: 68464
|
| |
|
|
| |
llvm-svn: 68459
|
| |
|
|
| |
llvm-svn: 68458
|
| |
|
|
| |
llvm-svn: 68457
|
| |
|
|
|
|
|
|
|
| |
instead of the place where it started to perform the string copy.
- PR3661
- Patch by Benjamin Kramer!
llvm-svn: 68443
|
| |
|
|
|
|
| |
accessed based on an external symbol defining the location of temporary data for a function. For example: we have spill slots addressed as foo.tmp + 0, foo.tmp + 1 etc.
llvm-svn: 68442
|
| |
|
|
| |
llvm-svn: 68421
|
| |
|
|
|
|
|
|
| |
Constant, MDString and MDNode which can only be used by globals with a name
that starts with "llvm." or as arguments to a function with the same naming
restriction.
llvm-svn: 68420
|
| |
|
|
| |
llvm-svn: 68405
|
| |
|
|
| |
llvm-svn: 68404
|
| |
|
|
|
|
| |
loads when an input node has multiple uses.
llvm-svn: 68398
|
| |
|
|
| |
llvm-svn: 68384
|
| |
|
|
| |
llvm-svn: 68383
|
| |
|
|
| |
llvm-svn: 68382
|
| |
|
|
| |
llvm-svn: 68381
|
| |
|
|
| |
llvm-svn: 68380
|
| |
|
|
|
|
| |
movq for v2i64 on x86-32.
llvm-svn: 68368
|
| |
|
|
|
|
|
| |
Note that these are distinct from TargetInstrInfo::INSERT_SUBREG
and TargetInstrInfo::EXTRACT_SUBREG, which are used.
llvm-svn: 68355
|
| |
|
|
| |
llvm-svn: 68351
|
| |
|
|
| |
llvm-svn: 68333
|
| |
|
|
|
|
| |
to have access to the line number field. So we convert that info as an operand by custom handling DBG_STOPPOINT in legalize.
llvm-svn: 68329
|
| |
|
|
|
|
| |
onto the callee's stack directly and the callee loads the argvals from its own stack. Clang generated frameindexes validatd by recalculating the stack as if all frameindexes represent 1-byte slots.
llvm-svn: 68327
|
| |
|
|
| |
llvm-svn: 68269
|
| |
|
|
| |
llvm-svn: 68262
|
| |
|
|
| |
llvm-svn: 68254
|
| |
|
|
| |
llvm-svn: 68253
|
| |
|
|
|
|
|
|
|
|
| |
- The code is silly, I'm just amusing myself. Rewrite to be efficient
if you like. :)
Also, if you wish to debate the proper names of the triple components
I'm all ears.
llvm-svn: 68252
|
| |
|
|
|
|
|
| |
is appropriate. This helps visually differentiate host-oriented
calculations from target-oriented calculations.
llvm-svn: 68227
|
| |
|
|
|
|
| |
less ambiguous and less C-specific.
llvm-svn: 68219
|
| |
|
|
|
|
| |
assembly.
llvm-svn: 68218
|
| |
|
|
|
|
|
|
| |
Applications/Burg/burg
Applications/ClamAV/clamscan
and many other tests.
llvm-svn: 68211
|
| |
|
|
| |
llvm-svn: 68175
|
| |
|
|
| |
llvm-svn: 68173
|
| |
|
|
| |
llvm-svn: 68172
|
| |
|
|
|
|
| |
* Simplified if statement
llvm-svn: 68163
|
| |
|
|
|
|
| |
it be an LLVM IR User object.
llvm-svn: 68156
|
| |
|
|
|
|
| |
if it dangles.
llvm-svn: 68150
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
which are effectively smart pointers to Value*'s. They are both very light
weight and simple, and react to values being destroyed or being RAUW'd.
WeakVN does a best effort to follow a value around, including through RAUW
operations and will get nulled out of the value is destroyed. This is useful
for the eventual "metadata that references a value" work, because it is a
reference to a value that does not show up on its use_* list.
AssertingVH is a pointer that compiles down to a dumb raw pointer when
assertions are disabled. When enabled, it emits an assertion if the
pointed-to value is destroyed while it is still being referenced. This
is very useful for Maps and other things, and should have caught the recent
bugs in CallGraph and Reassociate, for example.
llvm-svn: 68149
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
not generate selects of two constants unless they are selects of 0 and 1.
e.g.
define i32 @t1(i32 %c, i32 %x) nounwind {
%t1 = icmp eq i32 %c, 0
%t2 = lshr i32 %x, 18
%t3 = select i1 %t1, i32 %t2, i32 %x
ret i32 %t3
}
was turned into
define i32 @t2(i32 %c, i32 %x) nounwind {
%t1 = icmp eq i32 %c, 0
%t2 = select i1 %t1, i32 18, i32 0
%t3 = lshr i32 %x, %t2
ret i32 %t3
}
For most targets, that means materializing two constants and then a select. e.g. On x86-64
movl %esi, %eax
shrl $18, %eax
testl %edi, %edi
cmovne %esi, %eax
ret
=>
xorl %eax, %eax
testl %edi, %edi
movl $18, %ecx
cmovne %eax, %ecx
movl %esi, %eax
shrl %cl, %eax
ret
Also, the optimizer and codegen can reason about shl / and / add, etc. by a constant. This optimization will hinder optimizations using ComputeMaskedBits.
llvm-svn: 68142
|
| |
|
|
| |
llvm-svn: 68134
|
| |
|
|
| |
llvm-svn: 68133
|
| |
|
|
|
|
|
|
| |
entered via fall-through. Don't miss fallthroughs from blocks
terminated by conditional branches. Also, move
isOnlyReachableByFallthrough out of line.
llvm-svn: 68129
|
| |
|
|
|
|
| |
Patch by Jay Foad.
llvm-svn: 68120
|
| |
|
|
|
|
|
|
|
|
|
| |
llvm::sys::getOS{Name,Version}.
Right now the implementation just derives from LLVM_HOSTTRIPLE (which
is wrong, but it doesn't look like we have a define for the target
triple). Ideally this routine would actually be able to compute the
triple for targets we care about.
llvm-svn: 68118
|