Owen Anderson [Tue, 8 Jul 2008 23:36:37 +0000 (23:36 +0000)]
Fix the build. Apparently MachineInstr& is no longer implicitly convertable to MachineBasicBlock::iterator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53260
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 8 Jul 2008 23:33:46 +0000 (23:33 +0000)]
The graph name really does matter for configurations that use gv.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53259
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 8 Jul 2008 22:24:50 +0000 (22:24 +0000)]
Make the local register allocator compute (purely local) liveness information for itself
rather than depending on LiveVariables. This decreases compile time from:
0.5909s (LV + Regalloc) to 0.421s (just regalloc).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53256
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 8 Jul 2008 21:57:56 +0000 (21:57 +0000)]
Testcase for debug info from data-only files.
This one is x86-32-Darwin specific.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53255
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 8 Jul 2008 21:56:22 +0000 (21:56 +0000)]
Make debug info come out in data-only files.
This is a question of the debugging setup code not
being called at the right time, and it's called from
target-dependent code for some reason. I have only
attempted to fix Darwin, but I'm pretty sure it's
broken elsewhere; I'll leave that to people who can
test it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53254
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 8 Jul 2008 21:53:43 +0000 (21:53 +0000)]
Remove some dead code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53253
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Kledzik [Tue, 8 Jul 2008 21:14:10 +0000 (21:14 +0000)]
fix dangling pointer and argv off by one errors. Add support for --disable-inlining
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53249
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 8 Jul 2008 20:06:39 +0000 (20:06 +0000)]
Do not CSE DEBUG_LOC, DBG_LABEL, DBG_STOPPOINT, DECLARE, and EH_LABEL SDNode's. This improves compile time slightly at -O0 -g.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53246
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 8 Jul 2008 20:03:24 +0000 (20:03 +0000)]
Remove custom expansion from LegalizeTypes when doing
soft float: experiments show that targets aren't
expecting this for results or for operands. Add
support select/select_cc result soft float and
correct operand soft float for these.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53245
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 8 Jul 2008 20:00:05 +0000 (20:00 +0000)]
Add missing select_cc libcall line, somehow omitted
in LegalizeTypes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53244
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jul 2008 18:47:38 +0000 (18:47 +0000)]
improve comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53243
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jul 2008 18:33:33 +0000 (18:33 +0000)]
'Optimize' test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53242
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jul 2008 17:25:49 +0000 (17:25 +0000)]
Add a new hidden option to the interpreter to cause it to print
out every volatile load and store. This is useful for tracking
down insane volatile memory bugs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53241
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jul 2008 17:18:32 +0000 (17:18 +0000)]
Fix PR2496, a really nasty bug which involved sinking volatile loads
into phis. This is actually the same bug as PR2262 /
2008-04-29-VolatileLoadDontMerge.ll, but I missed checking the first
predecessor for multiple successors. Testcase here:
InstCombine/2008-07-08-VolatileLoadMerge.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53240
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jul 2008 17:18:05 +0000 (17:18 +0000)]
new testcase for PR2496
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53239
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 8 Jul 2008 16:40:43 +0000 (16:40 +0000)]
Unbreak C++ tests on x86 Darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53237
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 8 Jul 2008 16:38:42 +0000 (16:38 +0000)]
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
Duncan Sands [Tue, 8 Jul 2008 10:50:55 +0000 (10:50 +0000)]
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
Duncan Sands [Tue, 8 Jul 2008 10:11:36 +0000 (10:11 +0000)]
Testcase for PR2520.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53230
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 8 Jul 2008 09:41:30 +0000 (09:41 +0000)]
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
Duncan Sands [Tue, 8 Jul 2008 09:33:14 +0000 (09:33 +0000)]
Pacify gcc-4.3.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53227
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 8 Jul 2008 09:27:25 +0000 (09:27 +0000)]
Note that 'nest' only applies to pointers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53226
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthijs Kooijman [Tue, 8 Jul 2008 08:51:47 +0000 (08:51 +0000)]
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
Matthijs Kooijman [Tue, 8 Jul 2008 08:50:32 +0000 (08:50 +0000)]
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
Duncan Sands [Tue, 8 Jul 2008 08:38:44 +0000 (08:38 +0000)]
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
Chris Lattner [Tue, 8 Jul 2008 05:46:34 +0000 (05:46 +0000)]
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
Chris Lattner [Tue, 8 Jul 2008 05:12:37 +0000 (05:12 +0000)]
clarify :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53218
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 8 Jul 2008 05:05:37 +0000 (05:05 +0000)]
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
Evan Cheng [Tue, 8 Jul 2008 00:55:58 +0000 (00:55 +0000)]
Avoid unnecessary string construction during asm printing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53215
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Kledzik [Mon, 7 Jul 2008 23:24:06 +0000 (23:24 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 23:14:23 +0000 (23:14 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 23:02:41 +0000 (23:02 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 22:58:06 +0000 (22:58 +0000)]
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
Evan Cheng [Mon, 7 Jul 2008 22:22:07 +0000 (22:22 +0000)]
Clean up PPC register specification.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53209
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 7 Jul 2008 22:21:06 +0000 (22:21 +0000)]
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
Evan Cheng [Mon, 7 Jul 2008 22:19:41 +0000 (22:19 +0000)]
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
Bill Wendling [Mon, 7 Jul 2008 21:41:57 +0000 (21:41 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 21:00:17 +0000 (21:00 +0000)]
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
Bill Wendling [Mon, 7 Jul 2008 20:59:31 +0000 (20:59 +0000)]
Use StringMap for greater justice!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53202
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 7 Jul 2008 20:57:48 +0000 (20:57 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 20:32:02 +0000 (20:32 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 20:09:12 +0000 (20:09 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 20:08:05 +0000 (20:08 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 20:06:06 +0000 (20:06 +0000)]
Minor const-correctness fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53196
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 7 Jul 2008 20:05:04 +0000 (20:05 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 19:55:35 +0000 (19:55 +0000)]
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
Evan Cheng [Mon, 7 Jul 2008 19:51:32 +0000 (19:51 +0000)]
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
Bruno Cardoso Lopes [Mon, 7 Jul 2008 19:11:24 +0000 (19:11 +0000)]
fixed 32-bit fp_to_sint pattern
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53192
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 7 Jul 2008 18:43:32 +0000 (18:43 +0000)]
Make ilist noncopyable too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53190
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 7 Jul 2008 18:39:33 +0000 (18:39 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 18:38:14 +0000 (18:38 +0000)]
Make BumpPtrAllocator noncopyable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53188
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 7 Jul 2008 18:34:27 +0000 (18:34 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 18:26:29 +0000 (18:26 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 18:14:29 +0000 (18:14 +0000)]
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
Dan Gohman [Mon, 7 Jul 2008 18:08:20 +0000 (18:08 +0000)]
Remove unnecessary static_casts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53181
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 7 Jul 2008 18:07:36 +0000 (18:07 +0000)]
Remove an unnecessary reinterpret_cast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53180
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 7 Jul 2008 18:00:37 +0000 (18:00 +0000)]
Add explicit keywords.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53179
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 7 Jul 2008 17:52:43 +0000 (17:52 +0000)]
Use empty() instead of size().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53178
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 7 Jul 2008 17:46:23 +0000 (17:46 +0000)]
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
Ted Kremenek [Mon, 7 Jul 2008 16:20:55 +0000 (16:20 +0000)]
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
Evan Cheng [Mon, 7 Jul 2008 07:18:09 +0000 (07:18 +0000)]
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
Nick Lewycky [Mon, 7 Jul 2008 06:15:49 +0000 (06:15 +0000)]
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
Bill Wendling [Mon, 7 Jul 2008 05:42:27 +0000 (05:42 +0000)]
Prevent option name conflict.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53166
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 7 Jul 2008 00:08:12 +0000 (00:08 +0000)]
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
Anton Korobeynikov [Sat, 5 Jul 2008 23:48:30 +0000 (23:48 +0000)]
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
Anton Korobeynikov [Sat, 5 Jul 2008 23:33:40 +0000 (23:33 +0000)]
Testcase for PR2463
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53157
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sat, 5 Jul 2008 23:33:22 +0000 (23:33 +0000)]
Override weak stuff during linking of aliases. This fixes PR2463.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53156
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sat, 5 Jul 2008 23:03:46 +0000 (23:03 +0000)]
Testcase for PR2146
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53155
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sat, 5 Jul 2008 23:03:21 +0000 (23:03 +0000)]
Properly link alias and function decls. This fixes PR2146
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53154
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sat, 5 Jul 2008 22:41:37 +0000 (22:41 +0000)]
80col
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53153
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sat, 5 Jul 2008 21:19:34 +0000 (21:19 +0000)]
Fix missed optimization opportunity when analyzing cast of mul and select.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53151
91177308-0d34-0410-b5e6-
96231b3b80d8
Mon P Wang [Sat, 5 Jul 2008 20:40:31 +0000 (20:40 +0000)]
Fixed generating incorrect aligned stores that I backout of r53031
that fixed problems in EmitStackConvert where the source and target type
have different alignment by creating a stack slot with the max
alignment of source and target type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53150
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Sat, 5 Jul 2008 19:05:21 +0000 (19:05 +0000)]
Several changes to Mips backend, experimental fp support being the most
important.
- Cleanup in the Subtarget info with addition of new features, not all support
yet, but they allow the future inclusion of features easier. Among new features,
we have : Arch family info (mips1, mips2, ...), ABI info (o32, eabi), 64-bit
integer
and float registers, allegrex vector FPU (VFPU), single float only support.
- TargetMachine now detects allegrex core.
- Added allegrex (Mips32r2) sext_inreg instructions.
- *Added Float Point Instructions*, handling single float only, and
aliased accesses for 32-bit FPUs.
- Some cleanup in FP instruction formats and FP register classes.
- Calling conventions improved to support mips 32-bit EABI.
- Added Asm Printer support for fp cond codes.
- Added support for sret copy to a return register.
- EABI support added into LowerCALL and FORMAL_ARGS.
- MipsFunctionInfo now keeps a virtual register per function to track the
sret on function entry until function ret.
- MipsInstrInfo FP support into methods (isMoveInstr, isLoadFromStackSlot, ...),
FP cond codes mapping and initial FP Branch Analysis.
- Two new Mips SDNode to handle fp branch and compare instructions : FPBrcond,
FPCmp
- MipsTargetLowering : handling different FP classes, Allegrex support, sret
return copy, no homing location within EABI, non 32-bit stack objects
arguments, and asm constraint for float.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53146
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Fri, 4 Jul 2008 11:47:58 +0000 (11:47 +0000)]
Rather than having a different custom legalization
hook for each way in which a result type can be
legalized (promotion, expansion, softening etc),
just use one: ReplaceNodeResults, which returns
a node with exactly the same result types as the
node passed to it, but presumably with a bunch of
custom code behind the scenes. No change if the
new LegalizeTypes infrastructure is not turned on.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53137
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Fri, 4 Jul 2008 09:55:48 +0000 (09:55 +0000)]
Linux also does not require exception handling
moves in order to get correct debug info. Since
I can't imagine how any target could possibly
be any different, I've just stripped out the
option: now all the world's like Darwin!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53134
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 3 Jul 2008 23:13:02 +0000 (23:13 +0000)]
Don't return std::vector by value, but pass it in by reference to be filled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53123
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 3 Jul 2008 22:53:42 +0000 (22:53 +0000)]
Revert my previous check-in that split up MachineModuleInfo. It turns out to
slow the compiler down at -O0 some 30% or more. Ooops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53120
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 3 Jul 2008 22:53:14 +0000 (22:53 +0000)]
Provide a hook to set the code generation debug options to investigate lto failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53119
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 3 Jul 2008 18:20:14 +0000 (18:20 +0000)]
Backed out 53031.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53110
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 3 Jul 2008 18:11:29 +0000 (18:11 +0000)]
Back out 53091 for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53109
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 3 Jul 2008 17:44:33 +0000 (17:44 +0000)]
Use information already present in the ValueTable to fast-fail when we know there won't be a value number match. This speeds up GVN on a case where there are very few redundancies by ~25%.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53108
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 3 Jul 2008 17:37:52 +0000 (17:37 +0000)]
Do not try to update dominator info while manipulating CFG. This code does not handle all cases and keeps invalid dom info around some cases, which misleads other passes down stream.
Right now, dom info is recaluclated in the end if the loop is switched.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53106
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 3 Jul 2008 17:21:41 +0000 (17:21 +0000)]
Remove the ability for ADCE to remove unreachable blocks in loop nests, because, as Eli pointed out, SimplifyCFG already does this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53104
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 3 Jul 2008 09:09:37 +0000 (09:09 +0000)]
- Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc.
- Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53097
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 3 Jul 2008 08:39:51 +0000 (08:39 +0000)]
isel load folding is disabled at -fast. Now hoist the check up to the top level to save some time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53096
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthijs Kooijman [Thu, 3 Jul 2008 07:46:41 +0000 (07:46 +0000)]
Add newline at the end of Constants.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53092
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Thu, 3 Jul 2008 07:43:14 +0000 (07:43 +0000)]
llvm-gcc sometimes marks external declarations hidden, because intializers are
processed separately. Honour such situation and emit PIC relocations properly
in such case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53091
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 3 Jul 2008 07:10:03 +0000 (07:10 +0000)]
Remove unused function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53090
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 3 Jul 2008 07:04:22 +0000 (07:04 +0000)]
Preserve dom info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53089
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 3 Jul 2008 07:02:30 +0000 (07:02 +0000)]
Keep track of inherited analysis (e.g. dominator tree).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53088
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 3 Jul 2008 06:50:04 +0000 (06:50 +0000)]
Remove extra FIXME
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53087
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 3 Jul 2008 06:48:21 +0000 (06:48 +0000)]
Reconstruct dom info, if loop is unswitched.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53086
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 3 Jul 2008 05:55:03 +0000 (05:55 +0000)]
LoopUnswitch does not preserve dominator info in all cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53085
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 3 Jul 2008 01:18:51 +0000 (01:18 +0000)]
Reapply r52988, "Simplify addRegisterKilled and addRegisterDead." The
254.gap failure was not due to this mod.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53068
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 3 Jul 2008 00:59:36 +0000 (00:59 +0000)]
Use operator new instead of new char[].
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53067
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 3 Jul 2008 00:53:09 +0000 (00:53 +0000)]
Use operator new instead of new char[].
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53066
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 3 Jul 2008 00:52:03 +0000 (00:52 +0000)]
Avoid unnecessarily copying APInt objects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53065
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 3 Jul 2008 00:51:05 +0000 (00:51 +0000)]
Correct a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53064
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 3 Jul 2008 00:28:27 +0000 (00:28 +0000)]
Use std::replace instead of std::find and push_back.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53063
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 3 Jul 2008 00:08:13 +0000 (00:08 +0000)]
Undo previous patch. It is not that simple to fix dom info here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53062
91177308-0d34-0410-b5e6-
96231b3b80d8