Evan Cheng
ab8faba2fb
Unbreak C++ tests on x86 Darwin.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53237 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 16:40:43 +00:00
Owen Anderson
7220b814ed
Global variables beginning with \01 have special meaning on Darwin, so we need to remove
...
the name prefix when we change them from internal to external. This allows bugpointing
of codegen miscompilations to work more reliably on Darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53236 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 16:38:42 +00:00
Duncan Sands
28124ac606
LegalizeTypes support for FP_ROUND and FP_EXTEND
...
soft float.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53231 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 10:50:55 +00:00
Duncan Sands
4a497a2757
Testcase for PR2520.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53230 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 10:11:36 +00:00
Duncan Sands
cfa3c236b2
Add some helpers for manipulating function
...
parameter attributes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53228 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 09:41:30 +00:00
Duncan Sands
1512642973
Pacify gcc-4.3.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53227 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 09:33:14 +00:00
Duncan Sands
0789b8b518
Note that 'nest' only applies to pointers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53226 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 09:27:25 +00:00
Matthijs Kooijman
b3739424da
Add CallSite::getArgumentNo() to be able to translate an operand number into a
...
argument number.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53225 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 08:51:47 +00:00
Matthijs Kooijman
8c174a9b5a
Add CallSite::getArgumentOffset() to hide the differences in operands betwen
...
Call and Invoke in a single method instead of having it hardcoded in multiple
places.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53224 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 08:50:32 +00:00
Duncan Sands
2e033f31dc
Add some convenience methods for manipulating
...
call attributes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53223 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 08:38:44 +00:00
Chris Lattner
155a490258
Fix three bugs:
...
1) evaluate [v]fcmp true/false with undefs to true or false instead
of undef.
2) fix vector comparisons with undef to return a vector result instead
of i1
3) fix vector comparisons with evaluatable results to return vector
true/false instead of i1 true/false (PR2529)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53220 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 05:46:34 +00:00
Chris Lattner
5822e9e57f
clarify :)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53218 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 05:12:37 +00:00
Nick Lewycky
6177fd4fce
Expand SCEVUDiv of power of 2 to a lshr instruction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53217 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 05:05:37 +00:00
Evan Cheng
77c8f7674d
Avoid unnecessary string construction during asm printing.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53215 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-08 00:55:58 +00:00
Nick Kledzik
82eec45b00
add _lto_codegen_debug_options so that linker can use it
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53213 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 23:24:06 +00:00
Dan Gohman
8e5f2c6f65
Pool-allocation for MachineInstrs, MachineBasicBlocks, and
...
MachineMemOperands. The pools are owned by MachineFunctions.
This drastically reduces the number of calls to malloc/free made
during the "Emit" phase of scheduling, as well as later phases
in CodeGen. Combined with other changes, this speeds up the
"instruction selection" phase of CodeGen by 10% in some cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53212 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 23:14:23 +00:00
Dan Gohman
0e5f1306b0
Pool-allocation for SDNodes. The pool is allocated once for each function,
...
and reused across SelectionDAGs.
This drastically reduces the number of calls to malloc/free made during
instruction selection, and improves memory locality.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53211 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 23:02:41 +00:00
Dan Gohman
e14d81deeb
Add some basic Pool-allocation infrastructure. This adds a Recycler class,
...
for handling bookkeeping for deleted objects, as well as the alist class
template, for keeping lists of objects allocated from Recyclers, and some
related utilities.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53210 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 22:58:06 +00:00
Evan Cheng
19d6d424aa
Clean up PPC register specification.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53209 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 22:22:07 +00:00
Evan Cheng
ae270f66aa
ATT asm printer just print register AsmName's instead of calling tolower on each charater of Name. This speeds it up by 10%.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53208 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 22:21:06 +00:00
Evan Cheng
b7c3e867a5
TargetRegisterDesc::Name field is the same as the abstract register name. There is no need for targets to specify register names in addition to their AsmName's.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53207 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 22:19:41 +00:00
Bill Wendling
4925567f85
Use the canonical way to get an empty structure.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53206 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 21:41:57 +00:00
Dan Gohman
95d110920e
Refactor the tablegen DAGISelEmitter code for outputing calls to
...
getTargetNode and SelectNodeTo to reduce duplication, and to
make some of the getTargetNode code available to SelectNodeTo.
Use SelectNodeTo instead of getTargetNode in several new
interesting cases, as it mutates nodes in place instead of
creating new ones.
This triggers some scheduling behavior differences due to nodes
being presented to the scheduler in a different order. Some of the
arbitrary scheduling decisions it makes are now arbitrarily made
differently. This is visible in CodeGen/PowerPC/LargeAbsoluteAddr.ll,
where a trivial scheduling difference led to a trivial register
allocation difference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53203 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 21:00:17 +00:00
Bill Wendling
667a68b96a
Use StringMap for greater justice!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53202 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 20:59:31 +00:00
Dan Gohman
0fe9c6e7ba
Fix SDNode::MorphNodeTo (a function used by by SelectNodeTo) to
...
properly track dead nodes that are on the original SDNode's operand
list but not the new one, and have no other uses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53201 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 20:57:48 +00:00
Dan Gohman
ce42e404a2
Move MachineMemOperand's constructor out of line, to avoid a
...
#include dependency on Support/MathExtras.h in the header file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53200 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 20:32:02 +00:00
Dan Gohman
2d97918ce9
Simplify this use of BuildMI. This is also in preparation for
...
pool-allocating MachineInstrs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53198 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 20:09:12 +00:00
Dan Gohman
fd3ff032b8
Use of operator* is redundant and confusing here.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53197 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 20:08:05 +00:00
Dan Gohman
4542611bb9
Minor const-correctness fixes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53196 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 20:06:06 +00:00
Dan Gohman
35c640aee5
Shrink MachineMemOperand by storing the alignment in log form
...
and rearranging the fields.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53195 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 20:05:04 +00:00
Dan Gohman
03bafaf802
Assert that all MachineInstrs update PhysRegUseDefLists in
...
their cleanup code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53194 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 19:55:35 +00:00
Evan Cheng
1ce75dcbbc
Fix two serious LSR bugs.
...
1. LSR runOnLoop is always returning false regardless if any transformation is made.
2. AddUsersIfInteresting can create new instructions that are added to DeadInsts. But there is a later early exit which prevents them from being freed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53193 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 19:51:32 +00:00
Bruno Cardoso Lopes
85e9212fcd
fixed 32-bit fp_to_sint pattern
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53192 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 19:11:24 +00:00
Dan Gohman
9ff0f0ea39
Make ilist noncopyable too.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53190 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:43:32 +00:00
Dan Gohman
f178700829
Don't use std::advance just to increment or decrement by one.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53189 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:39:33 +00:00
Dan Gohman
7698252750
Make BumpPtrAllocator noncopyable.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53188 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:38:14 +00:00
Dan Gohman
dae6f4cf76
Add a space between * and /* to help simple-minded lexers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53187 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:34:27 +00:00
Dan Gohman
6d9cdd5617
Remove most of the uses of SDOperandPtr, usually replacing it with a
...
simple const SDOperand*, which is what's usually needed.
For AddNodeIDOperands, which is small, just duplicate the function to
accept an SDUse*.
For SelectionDAG::getNode - Add an overload that accepts SDUse* that
copies the operands into a temporary SDOperand array, but also has
special-case checks for 0 through 3 operands to avoid the copy in
the common cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53183 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:26:29 +00:00
Dan Gohman
e4706a0b51
Remove uses of "llvm/Support/Debug.h" from LLVM include files, which
...
all happened be unnecessary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53182 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:14:29 +00:00
Dan Gohman
d24c62c67e
Remove unnecessary static_casts.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53181 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:08:20 +00:00
Dan Gohman
ccd95b5f9c
Remove an unnecessary reinterpret_cast.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53180 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:07:36 +00:00
Dan Gohman
1002c02034
Add explicit keywords.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53179 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:00:37 +00:00
Dan Gohman
eccfb6a165
Use empty() instead of size().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53178 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 17:52:43 +00:00
Dan Gohman
6b345ee9b2
Make DenseMap's insert return a pair, to more closely resemble std::map.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53177 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 17:46:23 +00:00
Ted Kremenek
aa5044d3ce
Removed ImmutableMap::SlimFind and replaced it with ImmutableMap::lookup. The new method does the same thing, except that it returns a pointer to the mapped data type, and not to an internal tree node.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53171 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 16:20:55 +00:00
Evan Cheng
21cacc4de8
LegalizeSetCCOperands should legalize the result of ExpandLibCall. Patch by Richard Osborne.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53169 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 07:18:09 +00:00
Nick Lewycky
01eaf803ca
Handle 'lshr' instruction with SCEVUDiv object.
...
Comment the xor %x, -1 case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53167 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 06:15:49 +00:00
Bill Wendling
8870ce951d
Prevent option name conflict.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53166 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 05:42:27 +00:00
Duncan Sands
990f032907
LegalizeTypes soft-float support for stores of a
...
float value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53165 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 00:08:12 +00:00
Anton Korobeynikov
80585f1daa
Add convenient helper for checking whether global is weak in linker sense
...
having weak or linkonce or common or extweak LLVM linkage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53158 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-05 23:48:30 +00:00