Gabor Greif [Wed, 16 Apr 2008 11:43:47 +0000 (11:43 +0000)]
Merge ... r49785 (from branches/ggreif/use-diet): pass V to dyn_cast by const reference, this avoids copy-constructing and destructing all the time. especially important if these constructors are not accessible
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49787
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 16 Apr 2008 09:46:40 +0000 (09:46 +0000)]
Rewrite LiveVariable liveness computation. The new implementation is much simplified. It eliminated the nasty recursive routines and removed the partial def / use bookkeeping. There is also potential for performance improvement by replacing the conservative handling of partial physical register definitions. The code is currently disabled until live interval analysis is taught of the name scheme.
This patch also fixed a couple of nasty corner cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49784
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 16 Apr 2008 09:41:59 +0000 (09:41 +0000)]
Code clean up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49783
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 16 Apr 2008 04:25:42 +0000 (04:25 +0000)]
XFAIL this test for the moment. The real solution is to prevent ADCE
from transforming loops and adding a separate loop pass for removing
loops with know trip counts. Until that happens, ADCE is miscompiling this code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49769
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 16 Apr 2008 04:21:16 +0000 (04:21 +0000)]
Major repairs to the post-dominators implementation. Patch from Florian Brandner!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49768
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 16 Apr 2008 04:10:37 +0000 (04:10 +0000)]
fix off by one error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49766
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 16 Apr 2008 04:05:02 +0000 (04:05 +0000)]
give smallstring some methods to do 'itoa'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49765
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 16 Apr 2008 02:32:24 +0000 (02:32 +0000)]
Add support for the form of the SSE41 extractps instruction that
puts its result in a 32-bit GPR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49762
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 16 Apr 2008 01:32:32 +0000 (01:32 +0000)]
Recreate the size SDNode instead of reusing the old one in the x86
memcpy lowering code; this ensures that the size node has the desired
result type. This fixes a regression from r49572 with @llvm.memcpy.i64
on x86-32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49761
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 16 Apr 2008 01:22:28 +0000 (01:22 +0000)]
Avoid read after free.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49760
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 16 Apr 2008 00:24:30 +0000 (00:24 +0000)]
Remove X86_64SRet; it isn't used anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49759
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 15 Apr 2008 23:55:07 +0000 (23:55 +0000)]
Add movd instructions to move from MMX registers
to 64-bit GPR registers on x86-64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49757
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 15 Apr 2008 23:19:16 +0000 (23:19 +0000)]
Add an svn:ignore for the test Output directory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49753
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 15 Apr 2008 22:40:14 +0000 (22:40 +0000)]
Fix the new scheduler assertion checks to work when
the scheduler has inserted no-ops. This fixes
the 2006-07-03-schedulers.ll regression on ppc32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49747
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 15 Apr 2008 21:33:52 +0000 (21:33 +0000)]
Apple GCC 4.2 builds things differently. It no longer spawns a bunch of
processes, but requires the project to use -j.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49744
91177308-0d34-0410-b5e6-
96231b3b80d8
Chuck Rose III [Tue, 15 Apr 2008 21:27:11 +0000 (21:27 +0000)]
VisualStudio project files updated. #include <algorithm> added to make VisualStudio happy. Also had to undefine setjmp because of #include <csetjmp> turning setjmp into _setjmp in VisualStudio.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49743
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 15 Apr 2008 18:44:59 +0000 (18:44 +0000)]
Make 64-to-32 bit truncations explicit (prevent warnings).
All values here fit in 32 bits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49736
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 15 Apr 2008 17:41:34 +0000 (17:41 +0000)]
Don't assume a tail call can't reference a byval
argument to the outer function, this isn't correct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49731
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 15 Apr 2008 17:27:05 +0000 (17:27 +0000)]
Use gv's --spartan option, which trades away an extra row of UI buttons
for more space for displaying the graph.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49730
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 15 Apr 2008 16:59:22 +0000 (16:59 +0000)]
A couple minor fixes suggested by Matthijs Kooijman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49729
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolas Geoffray [Tue, 15 Apr 2008 08:08:50 +0000 (08:08 +0000)]
Change Divided flag to Split, as suggested by Evan
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49715
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 15 Apr 2008 07:56:03 +0000 (07:56 +0000)]
Sort sub-registers and super-registers lists according to super-sub register relations. e.g. X86::RAX sub-register list is EAX, AX, AL, AH (order of last two are not guaranteed).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49714
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 15 Apr 2008 07:02:59 +0000 (07:02 +0000)]
Install into the directory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49713
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 15 Apr 2008 01:22:18 +0000 (01:22 +0000)]
Treat EntryToken nodes as "passive" so that they aren't added to the
ScheduleDAG; they don't correspond to any actual instructions so they
don't need to be scheduled.
This fixes a bug where the EntryToken was being scheduled multiple
times in some cases, though it ended up not causing any trouble because
EntryToken doesn't expand into anything. With this fixed the schedulers
reliably schedule the expected number of units, so we can check this
with an assertion.
This requires a tweak to test/CodeGen/X86/loop-hoist.ll because it
ends up getting scheduled differently in a trivial way, though it was
enough to fool the prcontext+grep that the test does.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49701
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Apr 2008 23:15:07 +0000 (23:15 +0000)]
In -view-sunit-dags, display "special" chain dependencies as cyan
instead of blue to distinguish them from regular dependencies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49696
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Apr 2008 20:40:47 +0000 (20:40 +0000)]
Remove unnecessary <sstream> includes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49681
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Apr 2008 18:43:25 +0000 (18:43 +0000)]
Avoid creating MERGE_VALUES nodes for single values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49676
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Apr 2008 18:34:50 +0000 (18:34 +0000)]
Teach AliasSetTracker about VAArgInst.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49674
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Apr 2008 18:26:16 +0000 (18:26 +0000)]
Minor whitespace and comment cleanups.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49671
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Apr 2008 18:23:56 +0000 (18:23 +0000)]
In the special case, call the comparison function instead of
manually performing the comparison. This allows the special
case to work correctly even in the case where someone is
experimenting with a different comparison function :-).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49670
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Apr 2008 18:19:18 +0000 (18:19 +0000)]
Upgrade these tests for the current intrinsic prototypes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49669
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Mon, 14 Apr 2008 17:56:54 +0000 (17:56 +0000)]
Remove -unwind-tables-optional everywhere, since
this is now the default.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49667
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Apr 2008 17:55:48 +0000 (17:55 +0000)]
Fix const-correctness issues with the SrcValue handling in the
memory intrinsic expansion code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49666
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Mon, 14 Apr 2008 17:54:17 +0000 (17:54 +0000)]
Reverse sense of unwind-tables option. This means
stack tracebacks on Darwin x86-64 won't work by default;
nevertheless, everybody but me thinks this is a good idea.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49663
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Apr 2008 17:45:20 +0000 (17:45 +0000)]
Clean up some comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49661
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Mon, 14 Apr 2008 17:38:21 +0000 (17:38 +0000)]
Revert r49614. As Dan pointed out, some of these aren't correct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49657
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolas Geoffray [Mon, 14 Apr 2008 17:17:14 +0000 (17:17 +0000)]
Fix /test/CodeGen/PowerPC/big-endian-actual-args.ll for linux/ppc32
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49652
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 14 Apr 2008 16:44:41 +0000 (16:44 +0000)]
improve diagnostics in call parsing, patch suggested by
Matthijs Kooijman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49648
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 14 Apr 2008 15:07:08 +0000 (15:07 +0000)]
VAArg may trap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49646
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 14 Apr 2008 06:48:48 +0000 (06:48 +0000)]
Initial libcall support for LegalizeTypes. This is
much simpler than in LegalizeDAG because calls are
not yet expanded into call sequences: that happens
after type legalization has finished.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49634
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 13 Apr 2008 19:41:25 +0000 (19:41 +0000)]
add a new CallGraphNode::removeCallEdgeFor method, tidy some comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49617
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 13 Apr 2008 19:40:26 +0000 (19:40 +0000)]
Add support for equality comparison of CallSite's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49616
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Sun, 13 Apr 2008 19:15:17 +0000 (19:15 +0000)]
Replace calls of the form V1->setName(V2->getName()) with V1->takeName(V2),
which is significantly more efficient.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49614
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Sun, 13 Apr 2008 16:04:03 +0000 (16:04 +0000)]
LegalizeTypes can sometimes have deleted nodes
in its maps. Add some sanity checks that catch
this kind of thing. Hopefully these can be
removed one day (once all problems are fixed!)
but for the moment it seems wise to have them in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49612
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolas Geoffray [Sun, 13 Apr 2008 13:40:22 +0000 (13:40 +0000)]
Add a divided flag for the first piece of an argument divided into mulitple parts. Fixes PR1643
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49611
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Sun, 13 Apr 2008 09:51:06 +0000 (09:51 +0000)]
The functionality being tested was removed because it was horribly unsafe.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49610
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 13 Apr 2008 07:04:56 +0000 (07:04 +0000)]
Fix some serious logic errors that broke the jit on darwin/x86-64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49606
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Sun, 13 Apr 2008 06:22:09 +0000 (06:22 +0000)]
Merge LLVMBuilder and FoldingBuilder, calling
the result IRBuilder. Patch by Dominic Hamon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49604
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 13 Apr 2008 00:14:42 +0000 (00:14 +0000)]
Gabor points out that reserveOperandSpace takes # of values,
not # of operands as an input.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49599
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sat, 12 Apr 2008 22:12:22 +0000 (22:12 +0000)]
Provide option for stack alignment override
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49593
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Sat, 12 Apr 2008 18:11:06 +0000 (18:11 +0000)]
This patch corrects the handling of byval arguments for tailcall
optimized x86-64 (and x86) calls so that they work (... at least for
my test cases).
Should fix the following problems:
Problem 1: When i introduced the optimized handling of arguments for
tail called functions (using a sequence of copyto/copyfrom virtual
registers instead of always lowering to top of the stack) i did not
handle byval arguments correctly e.g they did not work at all :).
Problem 2: On x86-64 after the arguments of the tail called function
are moved to their registers (which include ESI/RSI etc), tail call
optimization performs byval lowering which causes xSI,xDI, xCX
registers to be overwritten. This is handled in this patch by moving
the arguments to virtual registers first and after the byval lowering
the arguments are moved from those virtual registers back to
RSI/RDI/RCX.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49584
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Sat, 12 Apr 2008 17:14:18 +0000 (17:14 +0000)]
Factor some libcall code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49583
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Sat, 12 Apr 2008 04:36:06 +0000 (04:36 +0000)]
Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not Legal
on any current target and aren't optimized in DAGCombiner. Instead
of using intermediate nodes, expand the operations, choosing between
simple loads/stores, target-specific code, and library calls,
immediately.
Previously, the code to emit optimized code for these operations
was only used at initial SelectionDAG construction time; now it is
used at all times. This fixes some cases where rep;movs was being
used for small copies where simple loads/stores would be better.
This also cleans up code that checks for alignments less than 4;
let the targets make that decision instead of doing it in
target-independent code. This allows x86 to use rep;movs in
low-alignment cases.
Also, this fixes a bug that resulted in the use of rep;stos for
memsets of 0 with non-constant memory size when the alignment was
at least 4. It's better to use the library in this case, which
can be significantly faster when the size is large.
This also preserves more SourceValue information when memory
intrinsics are lowered into simple loads/stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49572
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Sat, 12 Apr 2008 02:35:39 +0000 (02:35 +0000)]
Fix a bug that prevented x86-64 from using rep.movsq for
8-byte-aligned data.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49571
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Sat, 12 Apr 2008 00:47:57 +0000 (00:47 +0000)]
80 col fix
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49569
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Sat, 12 Apr 2008 00:47:46 +0000 (00:47 +0000)]
Restore code to disable crash catcher on older OS X systems
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49568
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 12 Apr 2008 00:22:01 +0000 (00:22 +0000)]
Add debugging code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49566
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Apr 2008 18:11:56 +0000 (18:11 +0000)]
Reenable JIT symbol table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49548
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 11 Apr 2008 17:55:47 +0000 (17:55 +0000)]
Do not add empty live intervals to handled_. They should never be undone for backtracking.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49544
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 11 Apr 2008 17:54:45 +0000 (17:54 +0000)]
If a PHI node has a single implicit_def source, replace it with an implicit_def instead of a copy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49543
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 11 Apr 2008 17:53:36 +0000 (17:53 +0000)]
Use of implicit_def is not part of live interval. Create empty intervals for the uses when the live interval is being spilled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49542
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Fri, 11 Apr 2008 17:45:39 +0000 (17:45 +0000)]
Change llvm tools install location.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49540
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Apr 2008 16:42:06 +0000 (16:42 +0000)]
improvements for IntrusiveRefCntPtr, patch by Mikhail Glushenkov
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49538
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Fri, 11 Apr 2008 13:24:43 +0000 (13:24 +0000)]
The Ada front-end from the LLVM 2.2 release
cannot be build with GNAT GPL 2006, only with
GNAT GPL 2005.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49529
91177308-0d34-0410-b5e6-
96231b3b80d8
Gabor Greif [Fri, 11 Apr 2008 09:34:57 +0000 (09:34 +0000)]
detabify
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49524
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Fri, 11 Apr 2008 05:13:32 +0000 (05:13 +0000)]
Add testcase for PR2213.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49517
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Fri, 11 Apr 2008 05:11:49 +0000 (05:11 +0000)]
Fix PR2213 by simultaneously making GVN more aggressive with the return values
of calls and less aggressive with non-readnone calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49516
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Apr 2008 23:49:09 +0000 (23:49 +0000)]
New test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49514
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Apr 2008 23:48:35 +0000 (23:48 +0000)]
Remove implicit_def instructions that become dead as result of coalescing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49513
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Apr 2008 23:47:53 +0000 (23:47 +0000)]
Allow registers defined by implicit_def to be clobbered.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49512
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 10 Apr 2008 23:02:38 +0000 (23:02 +0000)]
Fix a typo in a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49504
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 10 Apr 2008 22:27:06 +0000 (22:27 +0000)]
Fix a typo in a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49502
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 10 Apr 2008 22:13:32 +0000 (22:13 +0000)]
Fix for PR2190. Memdep's non-local caching was checking dirtied blocks in the
wrong order.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49499
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 10 Apr 2008 21:11:47 +0000 (21:11 +0000)]
Make several symbols static.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49496
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 10 Apr 2008 18:43:06 +0000 (18:43 +0000)]
Teach InstCombine's ComputeMaskedBits to handle pointer expressions
in addition to integer expressions. Rewrite GetOrEnforceKnownAlignment
as a ComputeMaskedBits problem, moving all of its special alignment
knowledge to ComputeMaskedBits as low-zero-bits knowledge.
Also, teach ComputeMaskedBits a few basic things about Mul and PHI
instructions.
This improves ComputeMaskedBits-based simplifications in a few cases,
but more noticeably it significantly improves instcombine's alignment
detection for loads, stores, and memory intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49492
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Apr 2008 18:38:47 +0000 (18:38 +0000)]
A copy instruction may use a register multiple times on some targets. Change them all.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49491
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Apr 2008 08:03:14 +0000 (08:03 +0000)]
Add comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49469
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Apr 2008 05:54:50 +0000 (05:54 +0000)]
add a note, this is actually not too bad to implement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49466
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Apr 2008 05:37:47 +0000 (05:37 +0000)]
move the x86-32 part of PR2108 here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49465
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Apr 2008 05:13:43 +0000 (05:13 +0000)]
Fix the x86-64 side of PR2108 by adding a v2f64 version of
MOVZQI2PQIrr. This would be better handled as a dag combine
(with the goal of eliminating the bitconvert) but I don't know
how to do that safely. Thoughts welcome.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49463
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Apr 2008 04:48:34 +0000 (04:48 +0000)]
produce an error on invalid input instead of asserting:
def : Pat<((v2f64 (vector_shuffle immAllZerosV_bc,
^
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49462
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Apr 2008 02:32:10 +0000 (02:32 +0000)]
Teach branch folding pass about implicit_def instructions. Unfortunately we can't just eliminate them since register scavenger expects every register use to be defined. However, we can delete them when there are no intra-block uses. Carefully removing some implicit def's which enable more blocks to be optimized away.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49461
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Apr 2008 02:07:51 +0000 (02:07 +0000)]
Disable an xform we've had for a long time, pow(x,0.5) -> sqrt.
This is not safe for all inputs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49458
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Apr 2008 01:33:05 +0000 (01:33 +0000)]
Move memcpy / memset optimization pass after GVN.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49457
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 9 Apr 2008 20:57:25 +0000 (20:57 +0000)]
- More aggressively coalescing away copies whose source is defined by an implicit_def.
- Added insert_subreg coalescing support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49448
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 9 Apr 2008 20:09:42 +0000 (20:09 +0000)]
Make isVectorClearMaskLegal's operand list const.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49446
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 9 Apr 2008 20:08:06 +0000 (20:08 +0000)]
Fix some minor errors in comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49445
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 9 Apr 2008 18:31:41 +0000 (18:31 +0000)]
Add const qualifiers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49443
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 9 Apr 2008 18:24:25 +0000 (18:24 +0000)]
Update comments to use 2.0 syntax type names.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49442
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 9 Apr 2008 17:54:37 +0000 (17:54 +0000)]
Add XMM1 as a second return value register for f32 and f64 on x86-64. This
is needed for the x86-64-ABI handling of structs that contain floating-point
members that are returned by value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49441
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 9 Apr 2008 17:53:38 +0000 (17:53 +0000)]
Add DX as a second return value register for i16 on x86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49440
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 9 Apr 2008 17:48:11 +0000 (17:48 +0000)]
Generalize getUnaryFloatFunction to handle any FP unary function, automatically
figuring out the suffix to use. implement pow(2,x) -> exp2(x).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49437
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 9 Apr 2008 17:46:36 +0000 (17:46 +0000)]
remove capital letter from test name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49436
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 9 Apr 2008 17:17:35 +0000 (17:17 +0000)]
use the new ConstantFP::get method to make this work with
long double and simplify the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49435
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 9 Apr 2008 17:16:28 +0000 (17:16 +0000)]
ConstantFP::get should be static.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49434
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Wed, 9 Apr 2008 16:24:11 +0000 (16:24 +0000)]
Fix a bug where an incorrect bit mask would be generated if a target's last asm
string began at a power of 2 in the string index. For example, if "ret" started
at position 16, the ret instruction would be assigned code 16, but the mask would be AsmChars[] + Code & 15, not Code & 31.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49433
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Wed, 9 Apr 2008 15:58:24 +0000 (15:58 +0000)]
Be conservative if getresult operand is neither call nor invoke.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49430
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 9 Apr 2008 08:23:16 +0000 (08:23 +0000)]
Factor a bunch of functionality related to memcpy and memset transforms out of
GVN and into its own pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49419
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 9 Apr 2008 07:55:01 +0000 (07:55 +0000)]
Remove accidentally duplicated code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49418
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 9 Apr 2008 07:06:01 +0000 (07:06 +0000)]
Unbreak teh build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49417
91177308-0d34-0410-b5e6-
96231b3b80d8