Chris Lattner [Mon, 5 May 2008 20:21:22 +0000 (20:21 +0000)]
Fix a crash when threading a block that includes a MRV call result.
DemoteRegToStack doesn't work with MRVs yet, because it relies on the
ability to load/store things.
This fixes PR2285.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50667
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 5 May 2008 19:44:16 +0000 (19:44 +0000)]
Remove unused function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50664
91177308-0d34-0410-b5e6-
96231b3b80d8
Mon P Wang [Mon, 5 May 2008 19:05:59 +0000 (19:05 +0000)]
Added addition atomic instrinsics and, or, xor, min, and max.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50663
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 5 May 2008 18:43:07 +0000 (18:43 +0000)]
Fix IsLinux being uninitialized on non-Linux targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50660
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 5 May 2008 18:30:58 +0000 (18:30 +0000)]
Fix more -Wshorten-64-to-32 warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50659
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 5 May 2008 18:24:33 +0000 (18:24 +0000)]
no need for eh info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50658
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 5 May 2008 17:41:03 +0000 (17:41 +0000)]
Fix 80 column violations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50655
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Mon, 5 May 2008 17:08:59 +0000 (17:08 +0000)]
Fix 80col violation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50654
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 5 May 2008 16:48:32 +0000 (16:48 +0000)]
Fix a bug in the ELF writer that caused it to produce malformed
ELF headers. The ELF writer still isn't generally usable though.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50652
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 5 May 2008 16:11:31 +0000 (16:11 +0000)]
Use a dedicated IsLinux flag instead of an ELFLinux TargetType.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50649
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 5 May 2008 00:28:39 +0000 (00:28 +0000)]
Add AsmPrinter support for emitting a directive to declare that
the code being generated does not require an executable stack.
Also, add target-specific code to make use of this on Linux
on x86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50634
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sun, 4 May 2008 21:36:32 +0000 (21:36 +0000)]
Add General Dynamic TLS model for X86-64. Some parts looks really ugly (look for tlsaddr pattern),
but should work. Work is in progress, more models will follow
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50630
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Sun, 4 May 2008 21:07:35 +0000 (21:07 +0000)]
Fix PR1098 by correcting the postdominators analysis.
Patch by Florian Brandner.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50628
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 May 2008 18:14:55 +0000 (18:14 +0000)]
remove obsolete method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50622
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 May 2008 17:18:47 +0000 (17:18 +0000)]
regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50621
91177308-0d34-0410-b5e6-
96231b3b80d8
Gordon Henriksen [Sun, 4 May 2008 12:55:34 +0000 (12:55 +0000)]
Use (void) instead of () in C code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50620
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sun, 4 May 2008 09:15:50 +0000 (09:15 +0000)]
Select vector shift with non-immediate i32 shift amount operand by first moving the operand into the right register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50619
91177308-0d34-0410-b5e6-
96231b3b80d8
Torok Edwin [Sun, 4 May 2008 08:51:25 +0000 (08:51 +0000)]
processStore may delete the instruction, avoid
using dyn_cast<> on already freed memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50618
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sun, 4 May 2008 06:23:44 +0000 (06:23 +0000)]
Remove entries from here also
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50616
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sun, 4 May 2008 06:19:55 +0000 (06:19 +0000)]
Drop llvmc also, it will be replaced by shiny new llvmc2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50615
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sun, 4 May 2008 06:16:50 +0000 (06:16 +0000)]
Drop llvm2cpp, it's now a llc target
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50614
91177308-0d34-0410-b5e6-
96231b3b80d8
Torok Edwin [Sat, 3 May 2008 20:25:26 +0000 (20:25 +0000)]
Implement destructor for PostDominatorTree to eliminate a memory leak.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50607
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Sat, 3 May 2008 01:12:15 +0000 (01:12 +0000)]
Handle multiple return values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50604
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Sat, 3 May 2008 01:05:46 +0000 (01:05 +0000)]
Implement operator-> for ImmutableMap iterators.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50603
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 3 May 2008 00:52:09 +0000 (00:52 +0000)]
Add separate intrinsics for MMX / SSE shifts with i32 integer operands. This allow us to simplify the horribly complicated matching code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50601
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Sat, 3 May 2008 00:36:30 +0000 (00:36 +0000)]
Do not sink getresult.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50600
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Fri, 2 May 2008 22:13:33 +0000 (22:13 +0000)]
Add assert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50596
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 2 May 2008 22:07:34 +0000 (22:07 +0000)]
verify builtin optimization works like gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50594
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 2 May 2008 22:05:06 +0000 (22:05 +0000)]
move libcalls to the same place llvm-gcc has it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50593
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 2 May 2008 21:30:02 +0000 (21:30 +0000)]
Fix a mistake in the computation of leading zeros for udiv.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50591
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 2 May 2008 21:15:08 +0000 (21:15 +0000)]
Suppress -Wshorten-64-to-32 warnings for 64-bit hosts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50590
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 2 May 2008 18:43:35 +0000 (18:43 +0000)]
strength reduce exp2 into ldexp, rdar://
5852514
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50586
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 2 May 2008 17:18:31 +0000 (17:18 +0000)]
add a FIXME so we remember to eventually remove this code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50582
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 2 May 2008 17:01:01 +0000 (17:01 +0000)]
Undo r50574. We are already ensuring the folded load address is 16-byte aligned.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50578
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 2 May 2008 15:11:58 +0000 (15:11 +0000)]
specify an arch for non-x86 hosts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50576
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 2 May 2008 07:53:32 +0000 (07:53 +0000)]
80 column violation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50575
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 2 May 2008 07:50:58 +0000 (07:50 +0000)]
Not safe folding a load + FsXORPSrr into FsXORPSrm. It's loading a FR64 value but the load folding variant expects a 16-byte aligned address.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50574
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 2 May 2008 00:43:20 +0000 (00:43 +0000)]
Porting r50563 from Tak to mainline.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50564
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 2 May 2008 00:05:03 +0000 (00:05 +0000)]
Fix a typo in a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50562
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 2 May 2008 00:03:54 +0000 (00:03 +0000)]
Use push_back(...) instead of resize(1, ...), per review feedback.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50561
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 1 May 2008 23:50:07 +0000 (23:50 +0000)]
Update old-style syntax in some "not grep" tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50560
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 1 May 2008 23:40:44 +0000 (23:40 +0000)]
Fix uninitialized uses of the FPC variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50558
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Thu, 1 May 2008 22:50:14 +0000 (22:50 +0000)]
New test for bug fixed in 50545.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50548
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Thu, 1 May 2008 22:27:44 +0000 (22:27 +0000)]
Don't try to create PHIs of struct types. Fallout
from x86-64 calling convention work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50545
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 1 May 2008 19:13:24 +0000 (19:13 +0000)]
Fix an overaggressive SimplifyDemandedBits optimization on urem. This
fixes the 254.gap regression on x86 and the 403.gcc regression on x86-64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50537
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 1 May 2008 18:41:09 +0000 (18:41 +0000)]
Adding testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50536
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 1 May 2008 17:08:00 +0000 (17:08 +0000)]
Initialize a local variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50527
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 1 May 2008 07:26:11 +0000 (07:26 +0000)]
don't randomly miscompile seto/setuo just because we are in
ffastmath mode. This fixes rdar://
5902801, a miscompilation
of gcc.dg/builtins-8.c.
Bill, please pull this into Tak.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50523
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 1 May 2008 06:39:12 +0000 (06:39 +0000)]
1) add '-debug' output
2) Return NULL instead of false in several places for tidiness.
3) fix a bug optimizing sprintf(p, "%c", x)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50521
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 1 May 2008 06:25:24 +0000 (06:25 +0000)]
Delete the IPO simplify-libcalls and completely reimplement it as
a FunctionPass. This makes it simpler, fixes dozens of bugs, adds
a couple of minor features, and shrinks is considerably: from
2214 to 1437 lines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50520
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 1 May 2008 06:16:48 +0000 (06:16 +0000)]
fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50519
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 1 May 2008 06:16:38 +0000 (06:16 +0000)]
instcombine does memset optzns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50518
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 1 May 2008 06:14:24 +0000 (06:14 +0000)]
simplifylibcalls doesn't optimize llvm.memmove, instcombine does.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50517
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 1 May 2008 06:13:48 +0000 (06:13 +0000)]
move some tests from libcall optimizer suite.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50516
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 1 May 2008 05:23:45 +0000 (05:23 +0000)]
Add CreateCall3/CreateCall4 at Eric's request.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50515
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 1 May 2008 05:11:00 +0000 (05:11 +0000)]
Add a spiffy little "CreateCall2" method, which can be used to make
a function call that takes two Value*'s as arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50514
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 30 Apr 2008 15:27:09 +0000 (15:27 +0000)]
fix a bug in my previous patch, a classic =/== bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50483
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Wed, 30 Apr 2008 09:19:47 +0000 (09:19 +0000)]
Really commit the test checking the argument lowering behaviour on x86-64 :).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50478
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Wed, 30 Apr 2008 09:16:33 +0000 (09:16 +0000)]
Tail call optimization improvements:
Move platform independent code (lowering of possibly overwritten
arguments, check for tail call optimization eligibility) from
target X86ISelectionLowering.cpp to TargetLowering.h and
SelectionDAGISel.cpp.
Initial PowerPC tail call implementation:
Support ppc32 implemented and tested (passes my tests and
test-suite llvm-test).
Support ppc64 implemented and half tested (passes my tests).
On ppc tail call optimization is performed if
caller and callee are fastcc
call is a tail call (in tail call position, call followed by ret)
no variable argument lists or byval arguments
option -tailcallopt is enabled
Supported:
* non pic tail calls on linux/darwin
* module-local tail calls on linux(PIC/GOT)/darwin(PIC)
* inter-module tail calls on darwin(PIC)
If constraints are not met a normal call will be emitted.
A test checking the argument lowering behaviour on x86-64 was added.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50477
91177308-0d34-0410-b5e6-
96231b3b80d8
Gabor Greif [Wed, 30 Apr 2008 08:59:22 +0000 (08:59 +0000)]
set ignore property
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50476
91177308-0d34-0410-b5e6-
96231b3b80d8
Gabor Greif [Wed, 30 Apr 2008 08:53:22 +0000 (08:53 +0000)]
fcntl.h is pretty standard on unix (without the sys/)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50475
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 30 Apr 2008 07:17:22 +0000 (07:17 +0000)]
Move this test to LoopDeletion, where it now passes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50474
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 30 Apr 2008 07:16:33 +0000 (07:16 +0000)]
This condition got inverted accidentally.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50473
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 30 Apr 2008 06:39:11 +0000 (06:39 +0000)]
move lowering of llvm.memset -> store from simplify libcalls
to instcombine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50472
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 30 Apr 2008 06:12:15 +0000 (06:12 +0000)]
no reason for simplifylibcalls to simplify intrinsics, instcombine does
a fine job.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50470
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 30 Apr 2008 06:06:37 +0000 (06:06 +0000)]
remove redundant check.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50469
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 30 Apr 2008 04:56:14 +0000 (04:56 +0000)]
add missing #include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50468
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 30 Apr 2008 03:55:40 +0000 (03:55 +0000)]
add a method for comparing to see if a value has a specified name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50465
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 30 Apr 2008 03:07:53 +0000 (03:07 +0000)]
use string length computation to generalize several xforms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50464
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Wed, 30 Apr 2008 00:43:29 +0000 (00:43 +0000)]
Add comments for previous patch as requested.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50463
91177308-0d34-0410-b5e6-
96231b3b80d8
Scott Michel [Wed, 30 Apr 2008 00:30:08 +0000 (00:30 +0000)]
Bug fixes and updates for CellSPU, syncing up with trunk. Most notable
fixes are target-specific lowering of frame indices, fix constants generated
for the FSMBI instruction, and fixing SPUTargetLowering::computeMaskedBitsFor-
TargetNode().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50462
91177308-0d34-0410-b5e6-
96231b3b80d8
Scott Michel [Wed, 30 Apr 2008 00:26:38 +0000 (00:26 +0000)]
Fix custom target lowering for zero/any/sign_extend: make sure that
DAG.UpdateNodeOperands() is called before (not after) the call to
TLI.LowerOperation().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50461
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 29 Apr 2008 22:58:20 +0000 (22:58 +0000)]
Make eh_frame objects by 8-byte aligned on 64-bit
targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50451
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Tue, 29 Apr 2008 22:12:40 +0000 (22:12 +0000)]
Minor spelling and typo fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50448
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 29 Apr 2008 21:51:00 +0000 (21:51 +0000)]
Revert r50441. The original code was correct. Add some more comments so that I don't make the same mistake in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50446
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 29 Apr 2008 21:26:06 +0000 (21:26 +0000)]
Fix a bug in memcpyopt where the memcpy-memcpy transform was never being applied because
we were checking for it in the wrong order. This caused a miscompilation because the
return slot optimization assumes that the call it is dealing with is NOT a memcpy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50444
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 29 Apr 2008 21:02:46 +0000 (21:02 +0000)]
We should be returning true here since we've changed the function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50442
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 29 Apr 2008 20:59:33 +0000 (20:59 +0000)]
A lot of cleanups and documentation improvements, as well as a few corner case fixes. Most
of this was suggested by Chris.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50441
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 29 Apr 2008 20:06:54 +0000 (20:06 +0000)]
Rename DeadLoopElimination to LoopDeletion, part 2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50437
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 29 Apr 2008 19:58:07 +0000 (19:58 +0000)]
Rename DeadLoopElimination to LoopDeletion, part one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50436
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Tue, 29 Apr 2008 18:16:22 +0000 (18:16 +0000)]
Don't do stupid things: doInitialization(Module&) is not applicable to ModulePass :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50433
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 29 Apr 2008 17:28:22 +0000 (17:28 +0000)]
don't eliminate load from volatile value on paths where the load is dead.
This fixes the second half of PR2262
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50430
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 29 Apr 2008 17:25:32 +0000 (17:25 +0000)]
make this test reduced and *valid*
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50429
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 29 Apr 2008 17:13:43 +0000 (17:13 +0000)]
fix a subtle volatile handling bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50428
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Levenstein [Tue, 29 Apr 2008 09:07:59 +0000 (09:07 +0000)]
Use std::set instead of std::priority_queue for the RegReductionPriorityQueue.
This removes the existing bottleneck related to the removal of elements from
the middle of the queue.
Also fixes a subtle bug in ScheduleDAGRRList::CapturePred:
It was updating the state of the SUnit before removing it. As a result, the
comparison operators were working incorrectly and this SUnit could not be removed
from the queue properly.
Reviewed by Evan and Dan. Approved by Dan.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50412
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 29 Apr 2008 06:56:02 +0000 (06:56 +0000)]
Implement more aggressive support for analyzing string length. This
generalizes the previous code to handle the case when the string is not
an immediate to the strlen call (for example, crazy stuff like
strlen(c ? "foo" : "bart"+1) -> 3). This implements
gcc.c-torture/execute/builtins/strlen-2.c. I will generalize other
cases in simplifylibcalls to use the same routine later.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50408
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 29 Apr 2008 06:34:55 +0000 (06:34 +0000)]
Clarify what we mean by a dead loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50406
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 29 Apr 2008 05:53:29 +0000 (05:53 +0000)]
new testcase for PR2094. The inline asms should not pin allocas to the
stack anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50397
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 29 Apr 2008 04:58:38 +0000 (04:58 +0000)]
don't delete the last store to an alloca if the store is volatile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50390
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 29 Apr 2008 04:48:56 +0000 (04:48 +0000)]
make the vector conversion magic handle multiple results.
We now compile test2/test3 to:
_test2:
## InlineAsm Start
set %xmm0, %xmm1
## InlineAsm End
addps %xmm1, %xmm0
ret
_test3:
## InlineAsm Start
set %xmm0, %xmm1
## InlineAsm End
paddd %xmm1, %xmm0
ret
as expected.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50389
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 29 Apr 2008 04:29:54 +0000 (04:29 +0000)]
add support for multiple return values in inline asm. This is a step
towards PR2094. It now compiles the attached .ll file to:
_sad16_sse2:
movslq %ecx, %rax
## InlineAsm Start
%ecx %rdx %rax %rax %r8d %rdx %rsi
## InlineAsm End
## InlineAsm Start
set %eax
## InlineAsm End
ret
which is pretty decent for a 3 output, 4 input asm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50386
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 29 Apr 2008 01:41:44 +0000 (01:41 +0000)]
Another extract_subreg coalescing bug.
e.g.
vr1024<2> extract_subreg vr1025, 2
If vr1024 do not have the same register class as vr1025, it's not safe to coalesce this away. For example, vr1024 might be a GPR32 while vr1025 might be a GPR64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50385
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 29 Apr 2008 00:45:15 +0000 (00:45 +0000)]
Add some more comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50384
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 29 Apr 2008 00:39:24 +0000 (00:39 +0000)]
Remove debugging code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50383
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 29 Apr 2008 00:38:34 +0000 (00:38 +0000)]
Add dead loop elimination, which removes dead loops for which we can compute
the trip count.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50382
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 28 Apr 2008 23:31:41 +0000 (23:31 +0000)]
Add -march=x86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50380
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 28 Apr 2008 23:26:22 +0000 (23:26 +0000)]
Update and_ops.ll according to the recent dagcombiner changes.
Add a new test, and_ops_more.ll, which is XFAIL'd, to
record the parts of and_ops.ll that were affected by this
change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50379
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 28 Apr 2008 22:14:34 +0000 (22:14 +0000)]
Test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50377
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 28 Apr 2008 22:07:13 +0000 (22:07 +0000)]
Fix a bug in RegsForValue::getCopyToRegs() that causes cyclical scheduling units. If it's creating multiple CopyToReg nodes that are "flagged" together, it should not create a TokenFactor for it's chain outputs:
c1, f1 = CopyToReg
c2, f2 = CopyToReg
c3 = TokenFactor c1, c2
...
= user c3, ..., f2
Now that the two CopyToReg's and the user are "flagged" together. They effectively forms a single scheduling unit. The TokenFactor is now both an operand and a successor of the Flagged nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50376
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Mon, 28 Apr 2008 21:48:04 +0000 (21:48 +0000)]
Correct parameter attributes encoding for C bindings.
Patch by Anders Johnsen!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50375
91177308-0d34-0410-b5e6-
96231b3b80d8