Commit Graph

32725 Commits

Author SHA1 Message Date
Dale Johannesen
63d49a09aa Fix CorrectExtraCFGEdges to allow for multiple LandingPad targets.
llvm-svn: 37394
2007-06-02 00:08:15 +00:00
Dale Johannesen
071dbb1f87 Fancier algorithm in tail-merge comment implemented, so remove comment.
llvm-svn: 37393
2007-06-01 23:04:28 +00:00
Dale Johannesen
fd7f1ad2f7 Implement smarter algorithm for choosing which blocks to tail-merge.
See test/CodeGen/X86/test-pic-jtbl.ll for a case where it works well;
shaves another 10K off our favorite benchmark.  I was hesitant about
this because of compile speed, but seems to do OK on a bootstrap.

llvm-svn: 37392
2007-06-01 23:02:45 +00:00
Reid Spencer
9baf82d943 For PR1486:
Avoid overwriting the APInt instance with 0 bytes which causes the bitwidth
to be set to 0 (illegal) producing a subsequent assert.

llvm-svn: 37391
2007-06-01 22:23:29 +00:00
Devang Patel
bdacf6c9c9 Insert new instructions in AliasSet.
llvm-svn: 37390
2007-06-01 22:15:31 +00:00
Owen Anderson
fadd9e4a7a clean() needs to process things in topological order.
llvm-svn: 37389
2007-06-01 22:00:37 +00:00
Evan Cheng
8a52b80cdf Opcode modifier s comes after condition code. e.g. addlts, not addslt.
llvm-svn: 37388
2007-06-01 20:51:29 +00:00
Evan Cheng
d7793e4561 Correctly mark early-exit on the false path.
llvm-svn: 37387
2007-06-01 20:29:21 +00:00
Owen Anderson
da27462cea Fix Expression comparison, which in turn fixes a value numbering error.
llvm-svn: 37386
2007-06-01 17:34:47 +00:00
Evan Cheng
8589b95a33 Set ARM ifcvt duplication limit to 3 for now.
llvm-svn: 37385
2007-06-01 08:28:59 +00:00
Evan Cheng
0dc7a8cac6 Target specific ifcvt code duplication limit.
llvm-svn: 37384
2007-06-01 08:25:24 +00:00
Duncan Sands
b1cc3f9881 Since TypeInfos are passed as i8 pointers, a NULL TypeInfo should be passed
as a null i8 pointer not as a 0 i32.

llvm-svn: 37383
2007-06-01 08:18:30 +00:00
Evan Cheng
ce6bae7667 Ifcvt triangle: don't ifcvt 'true' BB if it has other predecessors; don't merge 'false' BB if it has other predecessors.
llvm-svn: 37382
2007-06-01 07:41:07 +00:00
Evan Cheng
c2fec89f4a Make jumptable non-predicable for now.
llvm-svn: 37381
2007-06-01 00:56:15 +00:00
Evan Cheng
8e188afada Remove a bogus check. Even terminators in a ifcvt need to be predicated. Unconditional branches can usually be converted to conditional ones.
llvm-svn: 37380
2007-06-01 00:55:26 +00:00
Evan Cheng
7c081d0d02 Allow multiple ifcvt candidates to share children blocks; add some debugging code.
llvm-svn: 37379
2007-06-01 00:12:12 +00:00
Owen Anderson
6e39e65e7f Add a topological sort function.
llvm-svn: 37376
2007-05-31 22:44:11 +00:00
Dale Johannesen
4ca6f07cf0 Arrange for only 1 of multiple branches to landing pad to be kept.
Do not remove empty landing pads (EH table needs to be updated)

llvm-svn: 37375
2007-05-31 21:54:00 +00:00
Evan Cheng
7a6edf8eab Fix a typo.
llvm-svn: 37374
2007-05-31 20:53:33 +00:00
Chris Lattner
72e07238ba Fix the asmprinter so that a globalvalue can specify an explicit alignment
smaller than the preferred alignment, but so that the target can actually
specify a minimum alignment if needed.  This fixes some objc protocol
failures Devang tracked down.

llvm-svn: 37373
2007-05-31 18:57:45 +00:00
Lauro Ramos Venancio
afcdd2546e Add a test for PR1424.
llvm-svn: 37372
2007-05-31 18:36:07 +00:00
Lauro Ramos Venancio
b5186a0078 Fix PR1424.
When a function has FP, the register scavenging spill slot offset already
was calculated.

llvm-svn: 37371
2007-05-31 18:27:58 +00:00
Bill Wendling
8f5b1e28c3 Alphabetize Bruno's entry.
llvm-svn: 37368
2007-05-31 04:14:28 +00:00
Bruno Cardoso Lopes
ec36b67065 New contributor added!
llvm-svn: 37367
2007-05-31 03:25:10 +00:00
Owen Anderson
919ee81e51 Attempt to fix up phi_translate.
llvm-svn: 37366
2007-05-31 00:42:15 +00:00
Evan Cheng
c9c6bbd273 Change traversal order to bottom up in preparation for more aggressive if-conversion.
llvm-svn: 37365
2007-05-30 19:49:19 +00:00
Chris Lattner
14bcacb40b Fix CodeGen/PowerPC/2007-05-30-dagcombine-miscomp.ll, and PR1473.
llvm-svn: 37362
2007-05-30 16:30:06 +00:00
Chris Lattner
932fba07e5 new testcase for PR1473
llvm-svn: 37361
2007-05-30 16:29:20 +00:00
Devang Patel
044601033f Fix typo.
llvm-svn: 37360
2007-05-30 15:29:37 +00:00
Duncan Sands
ede6e9e542 Testcase for
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070528/050047.html

llvm-svn: 37359
2007-05-30 10:16:19 +00:00
Chris Lattner
fd963f9138 Fix Transforms/ScalarRepl/2007-05-29-MemcpyPreserve.ll and the second
half of PR1421, by not decimating structs with holes that are the source and
destination of a memcpy.

llvm-svn: 37358
2007-05-30 06:11:23 +00:00
Chris Lattner
282776d211 Testcase for PR1421
llvm-svn: 37357
2007-05-30 06:10:46 +00:00
Chris Lattner
3fdd243182 new testcase for PR1421
llvm-svn: 37356
2007-05-30 05:37:18 +00:00
Dale Johannesen
b306dfb861 Changed per review comment.
llvm-svn: 37355
2007-05-30 00:32:01 +00:00
Dale Johannesen
1ba04f7d87 Make stable_sort in tail merging actually be stable (it never was, but didn't
matter until my last change).  Reenable tail merging by default.

llvm-svn: 37354
2007-05-29 23:47:50 +00:00
Evan Cheng
a1300649ba Don't merge in tail block of a diamond if it has more than one predecessors after if-conversion.
llvm-svn: 37353
2007-05-29 23:37:20 +00:00
Owen Anderson
d765ae21f7 Put GVN-PRE in all the right places.
llvm-svn: 37352
2007-05-29 23:36:32 +00:00
Evan Cheng
3672d15956 For VFP2 fldm, fstm instructions, the condition code is printed after the address mode and size specifier. e.g. fstmiaseq, not fstmeqias.
llvm-svn: 37351
2007-05-29 23:34:19 +00:00
Owen Anderson
328c980fad Fix a typo
llvm-svn: 37350
2007-05-29 23:34:14 +00:00
Evan Cheng
5df14b3451 For ldrb, strh, etc., the condition code is before the width specifier. e.g. streqh, not strheq.
llvm-svn: 37349
2007-05-29 23:32:06 +00:00
Owen Anderson
0f46c29ffd Re-fix a bug, where I was now being too aggressive.
llvm-svn: 37348
2007-05-29 23:26:30 +00:00
Owen Anderson
cfeeaac401 Use proper debugging facilities so other people don't have to look at my commented-out
debugging lines.

llvm-svn: 37347
2007-05-29 23:15:21 +00:00
Owen Anderson
1e1d693893 Comment debug code out that I accidentally uncommented last time.
llvm-svn: 37346
2007-05-29 22:43:03 +00:00
Owen Anderson
707e37c6a6 Add a place where I missed using the maximal set. Note that using the maximal
set this way is _SLOW_.  Somewhere down the line, I'll look at speeding it up.

llvm-svn: 37345
2007-05-29 22:35:41 +00:00
Evan Cheng
b1ba206831 If there is an empty block between a source and its successor block, it still requires a unconditional branch.
llvm-svn: 37344
2007-05-29 22:31:16 +00:00
Owen Anderson
83bd7bcf6c Very first part of a GVN-PRE implementation. It currently performs a bunch of analysis, and nothing more. It is also quite slow for the moment. However,
it should give a sense of what's going on.

llvm-svn: 37343
2007-05-29 21:53:49 +00:00
Evan Cheng
ff31eed2be Add missing const qualifiers.
llvm-svn: 37342
2007-05-29 18:42:18 +00:00
Evan Cheng
d8b25a2091 Add missing const qualifiers.
llvm-svn: 37341
2007-05-29 18:35:22 +00:00
Nicolas Geoffray
fff14eecb5 Implementation of compilation callback in PPC ELF32
llvm-svn: 37340
2007-05-29 16:33:18 +00:00
Chris Lattner
dc15e2779b more fixes to C code.
llvm-svn: 37339
2007-05-29 15:43:56 +00:00