Alkis Evlogimenos [Tue, 30 Mar 2004 22:44:39 +0000 (22:44 +0000)]
Correctly update LiveVariables when an instruction changes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12561
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 22:39:09 +0000 (22:39 +0000)]
Fold comparisons into select instructions, making much better code and
using our broad selection of movcc instructions. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12560
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 22:37:04 +0000 (22:37 +0000)]
Test folding comparisons into select instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12559
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 22:36:52 +0000 (22:36 +0000)]
New testcase. This now codegens to:
max:
mov %EAX, DWORD PTR [%ESP + 4]
mov %ECX, DWORD PTR [%ESP + 8]
cmp %EAX, %ECX
cmovle %EAX, %ECX
ret
Someone should really implement passing arguments through registers for
known-internal functions. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12558
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 21:29:47 +0000 (21:29 +0000)]
Implement spill code folding for all of the conditional move instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12554
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 21:22:00 +0000 (21:22 +0000)]
Add direct support for integer select instructions, though we still don't support
folding compares into the select yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12553
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 21:21:14 +0000 (21:21 +0000)]
New testcase for select instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12552
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 20:58:25 +0000 (20:58 +0000)]
Fix bug: Assembler/2004-03-30-UnclosedFunctionCrash.llx
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12551
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 20:58:00 +0000 (20:58 +0000)]
New testcase that crashes the assembler
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12550
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 20:18:02 +0000 (20:18 +0000)]
Fix some serious bugs in the cmov descriptions, which didn't cause a problem because
we never generated them
Make indentation a bit more consistent
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12549
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Tue, 30 Mar 2004 19:53:46 +0000 (19:53 +0000)]
Start cleaning up this pass so that I can debug it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12548
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 19:45:39 +0000 (19:45 +0000)]
Oops, actually USE the previously computed value
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12547
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 19:45:11 +0000 (19:45 +0000)]
Test general value/value selection which we can do now that we use the
select instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12546
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 19:44:05 +0000 (19:44 +0000)]
Now that all the code generators support the select instruction, and the instcombine
pass can eliminate many nasty cases of them, start generating them in the optimizers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12545
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 19:37:13 +0000 (19:37 +0000)]
Implement select.ll:test[3-6]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12544
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 19:36:54 +0000 (19:36 +0000)]
Add some testcases for select simplification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12543
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 19:10:12 +0000 (19:10 +0000)]
Fix a fairly major performance problem. If a PHI node had a constant as
an incoming value from a block, the selector would evaluate the constant
at the TOP of the block instead of at the end of the block. This made the
live range for the constant span the entire block, increasing register
pressure needlessly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12542
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 18:41:59 +0000 (18:41 +0000)]
Add the select lowering pass to get initial support for select instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12541
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 18:41:10 +0000 (18:41 +0000)]
Add a simple select instruction lowering pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12540
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 30 Mar 2004 00:20:08 +0000 (00:20 +0000)]
Add some new methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12539
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 29 Mar 2004 21:58:41 +0000 (21:58 +0000)]
Don't warn about a null live range if the Value is a ConstantIntegral.
Otherwise, if you're in debugging mode, you get warnings for (apparently)
every immediate constant in the function during reg. allocation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12538
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 29 Mar 2004 21:58:31 +0000 (21:58 +0000)]
Change how the beginnings and ends of MachineFunctions are printed. Get
rid of the funny cast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12537
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 29 Mar 2004 20:42:49 +0000 (20:42 +0000)]
Adjust to new itf
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12534
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 29 Mar 2004 20:42:38 +0000 (20:42 +0000)]
Relax the interface a bit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12533
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Mon, 29 Mar 2004 20:23:11 +0000 (20:23 +0000)]
Merged in RELEASE_12.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12532
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Mon, 29 Mar 2004 20:22:30 +0000 (20:22 +0000)]
Merged in RELEASE_12.
This fixes the zlib linking problems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12531
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 29 Mar 2004 19:51:24 +0000 (19:51 +0000)]
Handle -0.0 correctly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12530
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 29 Mar 2004 19:14:35 +0000 (19:14 +0000)]
Add a faq entry
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12529
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 29 Mar 2004 02:37:53 +0000 (02:37 +0000)]
Add a bunch of methods that should have been added a long time ago.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12526
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 29 Mar 2004 00:29:36 +0000 (00:29 +0000)]
Add another check
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12525
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 29 Mar 2004 00:17:20 +0000 (00:17 +0000)]
Fix an assertion
Contributed by Reid Spencer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12524
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 29 Mar 2004 00:16:01 +0000 (00:16 +0000)]
Make error message a bit nicer.
Contributed by Reid Spencer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12523
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 26 Mar 2004 21:43:22 +0000 (21:43 +0000)]
Add two methods which have been needed for a long time: Type::get(Un)signedVersion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12522
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 26 Mar 2004 17:04:53 +0000 (17:04 +0000)]
Make sure to get the headers from zlib correctly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12521
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 26 Mar 2004 16:11:24 +0000 (16:11 +0000)]
X % -1 == X % 1 == 0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12520
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 25 Mar 2004 22:59:29 +0000 (22:59 +0000)]
Two changes:
#1 is to unconditionally strip constantpointerrefs out of
instruction operands where they are absolutely pointless and inhibit
optimization. GRRR!
#2 is to implement InstCombine/getelementptr_const.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12519
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 25 Mar 2004 22:59:06 +0000 (22:59 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12518
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 25 Mar 2004 22:56:03 +0000 (22:56 +0000)]
Minor efficiency improvement, finegrainify namespacification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12517
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 25 Mar 2004 20:38:40 +0000 (20:38 +0000)]
Add note about setting up linux systems to directly execute LLVM bytecode files
Fixes PR303
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12516
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 Mar 2004 23:34:33 +0000 (23:34 +0000)]
Hrm, we were leaking ~1M of garbage that valgrind never told us about because
it was "reachable". Cute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12515
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 Mar 2004 19:22:28 +0000 (19:22 +0000)]
Add a dose of reality into the release notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12510
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 Mar 2004 06:08:10 +0000 (06:08 +0000)]
Teach the optimizer to delete zero sized alloca's (but not mallocs!)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12507
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 Mar 2004 06:07:43 +0000 (06:07 +0000)]
New testcase, the optimizer can delete zero sized allocas
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12506
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 Mar 2004 04:26:04 +0000 (04:26 +0000)]
Perhaps the last bugfix before the release? HOPEFULLY! :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12505
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 Mar 2004 04:21:43 +0000 (04:21 +0000)]
Fix PR299: [Sparc] Code generator asserts on alloc of zero size type
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12504
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 17:01:26 +0000 (17:01 +0000)]
Malloc doesn't kill a load. This patch need not go into 1.2 though.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12500
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 14:58:55 +0000 (14:58 +0000)]
Fix a minor wording bug in the manual
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12496
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 06:41:59 +0000 (06:41 +0000)]
This is the last remaining bug that I know of in the loop extractor. The loop
extractor has extracted hundreds of loops from the SPEC benchmarks without crashing
and without misoptimizing the programs.
This testcase could be reduced substantially more by hand, but I don't have time
to work on it right now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12495
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 06:29:54 +0000 (06:29 +0000)]
Fix a really nasty bug that was breaking ijpeg in LLC mode. We were incorrectly
folding load instructions into other instructions across free instruction
boundaries. Perhaps this will also fix the other strange failures?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12494
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 05:56:32 +0000 (05:56 +0000)]
Fix bug: CodeExtractor/2004-03-17-MissedLiveIns.ll
With this fix we now successfully extract all 149 loops from 256.bzip2 without
crashing or miscompiling the program!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12493
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 05:55:29 +0000 (05:55 +0000)]
New testcase, reduced from 256.bzip2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12492
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 05:46:10 +0000 (05:46 +0000)]
Add statistics to the loop extractor. The loop extractor has successfully
extracted all 63 loops for Olden/bh without crashing and without
miscompiling the program!!!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12491
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 05:43:18 +0000 (05:43 +0000)]
Fix problem with PHI nodes having multiple predecessors from different
exit nodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12490
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 05:38:31 +0000 (05:38 +0000)]
Fix CodeExtractor/2004-03-17-UpdatePHIsOutsideRegion.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12489
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 05:33:39 +0000 (05:33 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12488
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 05:28:49 +0000 (05:28 +0000)]
Seriously simplify and correct the PHI node handling code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12487
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 04:12:05 +0000 (04:12 +0000)]
Fix CodeExtractor/2004-03-17-OutputMismatch.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12486
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 04:10:02 +0000 (04:10 +0000)]
New testcase that crashes the code extractor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12485
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 03:49:40 +0000 (03:49 +0000)]
Fix several bugs in the extractor:
1. Names were not put on the new arguments created (ok, this just helps sanity :)
2. Fix outgoing pointer values
3. Do not insert stores for values that had not been computed
4. Fix some wierd problems with the outset calculation
This fixes CodeExtractor/2004-03-14-DominanceProblem.ll, making the extractor
work on at least one simple case!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12484
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 03:48:06 +0000 (03:48 +0000)]
The code extractor needs dominator info. Provide it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12483
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 03:47:46 +0000 (03:47 +0000)]
The code extractor needs dominator information, so we provide it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12482
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 03:15:29 +0000 (03:15 +0000)]
Prune #includes, moving the module interface to the front. Note that this
exposed the fact that the header was not self-contained. There is a reason
we do things :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12481
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Mar 2004 03:14:56 +0000 (03:14 +0000)]
Make this header file self-contained
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12480
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 Mar 2004 23:22:04 +0000 (23:22 +0000)]
Fix a HORRIBLY NASTY bug that caused siod to stop working last night.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12479
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 Mar 2004 21:33:32 +0000 (21:33 +0000)]
Fix a tag-o
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12477
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 Mar 2004 21:09:55 +0000 (21:09 +0000)]
Rewrite the second on AnalysisUsage usage. This documents the new
addRequiredTransitive member that Misha added, and explains the whole
concept a lot better. Also, the document used incorrect "subsubsection"
tags instead of "doc_subsubsection" which this fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12474
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 Mar 2004 17:42:09 +0000 (17:42 +0000)]
When loop extraction succeeds, make sure to map the function pointers over
to avoid dangling references.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12470
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 Mar 2004 17:37:18 +0000 (17:37 +0000)]
Fix an inverted condition that causes us to think that loop extraction
accomplished something when it really did not. This does not fix the bigger problem tho.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12469
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 Mar 2004 17:29:08 +0000 (17:29 +0000)]
Fix an iterator invalidation problem in a "buggy" pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12468
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 Mar 2004 03:54:41 +0000 (03:54 +0000)]
update release notes for 1.2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12467
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Wed, 17 Mar 2004 02:31:29 +0000 (02:31 +0000)]
Modify test to use the %t substition (temporary name). This is available
in the QMTest Testrunner tests.
Please note that putting output files in the Output directory no longer
works, as QMTest does not build Output directories anymore (nor does the
test run in a separate subdirectory, anyway).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12466
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 Mar 2004 02:02:47 +0000 (02:02 +0000)]
Fix compilation of mesa, which I broke earlier today
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12465
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 Mar 2004 01:59:27 +0000 (01:59 +0000)]
Be more accurate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12464
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 Mar 2004 01:29:36 +0000 (01:29 +0000)]
cleanup comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12463
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Wed, 17 Mar 2004 00:48:59 +0000 (00:48 +0000)]
Make the set of fixed (preallocated) intervals be a fixed superset of
unhandled + handled. So unhandled is now including all fixed intervals
and fixed intervals never changes when processing a function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12462
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 23:36:49 +0000 (23:36 +0000)]
Fix bug in previous checkin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12458
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 23:29:09 +0000 (23:29 +0000)]
Okay, so there is no reasonable way for tail duplication to update SSA form,
as it is making effectively arbitrary modifications to the CFG and we don't
have a domset/domfrontier implementations that can handle the dynamic updates.
Instead of having a bunch of code that doesn't actually work in practice,
just demote any potentially tricky values to the stack (causing the problem
to go away entirely). Later invocations of mem2reg will rebuild SSA for us.
This fixes all of the major performance regressions with tail duplication
from LLVM 1.1. For example, this loop:
---
int popcount(int x) {
int result = 0;
while (x != 0) {
result = result + (x & 0x1);
x = x >> 1;
}
return result;
}
---
Used to be compiled into:
int %popcount(int %X) {
entry:
br label %loopentry
loopentry: ; preds = %entry, %no_exit
%x.0 = phi int [ %X, %entry ], [ %tmp.9, %no_exit ] ; <int> [#uses=3]
%result.1.0 = phi int [ 0, %entry ], [ %tmp.6, %no_exit ] ; <int> [#uses=2]
%tmp.1 = seteq int %x.0, 0 ; <bool> [#uses=1]
br bool %tmp.1, label %loopexit, label %no_exit
no_exit: ; preds = %loopentry
%tmp.4 = and int %x.0, 1 ; <int> [#uses=1]
%tmp.6 = add int %tmp.4, %result.1.0 ; <int> [#uses=1]
%tmp.9 = shr int %x.0, ubyte 1 ; <int> [#uses=1]
br label %loopentry
loopexit: ; preds = %loopentry
ret int %result.1.0
}
And is now compiled into:
int %popcount(int %X) {
entry:
br label %no_exit
no_exit: ; preds = %entry, %no_exit
%x.0.0 = phi int [ %X, %entry ], [ %tmp.9, %no_exit ] ; <int> [#uses=2]
%result.1.0.0 = phi int [ 0, %entry ], [ %tmp.6, %no_exit ] ; <int> [#uses=1]
%tmp.4 = and int %x.0.0, 1 ; <int> [#uses=1]
%tmp.6 = add int %tmp.4, %result.1.0.0 ; <int> [#uses=2]
%tmp.9 = shr int %x.0.0, ubyte 1 ; <int> [#uses=2]
%tmp.1 = seteq int %tmp.9, 0 ; <bool> [#uses=1]
br bool %tmp.1, label %loopexit, label %no_exit
loopexit: ; preds = %no_exit
ret int %tmp.6
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12457
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 23:23:11 +0000 (23:23 +0000)]
This code was both incredibly complex and incredibly broken. Fix it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12456
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 23:07:52 +0000 (23:07 +0000)]
Another simple testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12455
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Tue, 16 Mar 2004 22:52:04 +0000 (22:52 +0000)]
The .type directive on Solaris uses the # character instead of @.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12454
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Tue, 16 Mar 2004 22:45:42 +0000 (22:45 +0000)]
Fix bug in zero-extending of shorts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12453
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Tue, 16 Mar 2004 22:37:13 +0000 (22:37 +0000)]
Add UMULrr and SMULrr instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12452
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Tue, 16 Mar 2004 22:37:12 +0000 (22:37 +0000)]
Use ! for comment char; it works in both Solaris as and GAS.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12451
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Tue, 16 Mar 2004 22:37:11 +0000 (22:37 +0000)]
Make getClass more robust by adding cLong.
Add handling for Mul instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12450
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 21:55:23 +0000 (21:55 +0000)]
Bug fixed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12449
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 21:52:24 +0000 (21:52 +0000)]
New testcase for PR297
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12448
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Tue, 16 Mar 2004 21:47:20 +0000 (21:47 +0000)]
Add a better head-of-file comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12447
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 21:39:04 +0000 (21:39 +0000)]
Bug not fixed after all
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12446
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 21:10:15 +0000 (21:10 +0000)]
Fix test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12445
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 20:04:55 +0000 (20:04 +0000)]
Fix testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12444
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 19:52:53 +0000 (19:52 +0000)]
Punt if we see gigantic PHI nodes. This improves a huge interpreter loop
testcase from 32.5s in -raise to take .3s
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12443
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 19:49:59 +0000 (19:49 +0000)]
Do not try to optimize PHI nodes with incredibly high degree. This reduces SCCP
time from 615s to 1.49s on a large testcase that has a gigantic switch statement
that all of the blocks in the function go to (an intepreter).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12442
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 19:45:22 +0000 (19:45 +0000)]
Do not copy gigantic switch instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12441
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 09:01:10 +0000 (09:01 +0000)]
Fix bug in bug name. It must be the painkillers that I haven't been taking
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12440
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 08:54:07 +0000 (08:54 +0000)]
Implement a new feature in the CFE, moving a GCC extension from the unsupported
to the supported list
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12439
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 08:49:48 +0000 (08:49 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12437
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 08:40:35 +0000 (08:40 +0000)]
boog fixed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12436
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 08:38:56 +0000 (08:38 +0000)]
Fix PR296: [execution engines] Unhandled cast constant expression
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12435
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 06:00:15 +0000 (06:00 +0000)]
Fix a regression from this patch:
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-
20040308/013095.html
Basically, this patch only updated the immediate dominatees of the header node
to tell them that the preheader also dominated them. In practice, ALL
dominatees of the header node are also dominated by the preheader.
This fixes: LoopSimplify/2004-03-15-IncorrectDomUpdate.
and PR293
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12434
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 Mar 2004 05:44:02 +0000 (05:44 +0000)]
New testcase for PR293
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12433
91177308-0d34-0410-b5e6-
96231b3b80d8