Owen Anderson
0eb265729a
Fold a lot of code into two cases: binary instructions and ternary instructions.
...
This saves many lines of code duplication. No functionality change.
llvm-svn: 37759
2007-06-27 17:03:03 +00:00
Dan Gohman
3b62d7265d
Rename ("shrinkify") MVT::isExtendedValueType to MVT::isExtendedVT.
...
llvm-svn: 37758
2007-06-27 16:08:04 +00:00
Dan Gohman
1cbdcac409
Remove a redundant newline in the asm output for ELF .rodata sections.
...
llvm-svn: 37756
2007-06-27 15:09:47 +00:00
Dan Gohman
7139a48057
Use getVectorTypeBreakdown in FunctionLoweringInfo::CreateRegForValue
...
to compute the number and type of registers needed for vector values
instead of computing it manually. This fixes PR1529.
llvm-svn: 37755
2007-06-27 14:34:07 +00:00
Dan Gohman
f4e86da3a6
Make the comment for ScalarizeVectorOp mention that it is only for use
...
with single-element vectors.
llvm-svn: 37752
2007-06-27 14:06:22 +00:00
Zhou Sheng
8d438858c8
Fix a bug.
...
llvm-svn: 37751
2007-06-27 09:50:26 +00:00
Duraid Madina
95759c0e78
ok, this is something of a dirty hack, but it seems to work. (fixes e.g.
...
the SPASS miscompilation)
llvm-svn: 37750
2007-06-27 09:01:14 +00:00
Duraid Madina
89183dcc14
ok, this much doesn't seem to bork anything
...
llvm-svn: 37749
2007-06-27 08:31:07 +00:00
Duraid Madina
a415dcaa2a
revert evan's fixes (and my doofusness) since they had a huge code
...
quality hit. will look at this soon.
llvm-svn: 37748
2007-06-27 08:11:59 +00:00
Duraid Madina
540d329542
pull evan's fixes - should help the nightly tester (but there are still
...
some issues)
llvm-svn: 37747
2007-06-27 07:07:13 +00:00
Evan Cheng
e66f822ecc
Replace std::set with SmallPtrSet.
...
llvm-svn: 37746
2007-06-27 05:23:00 +00:00
Owen Anderson
b6a39fcb21
Add support for performing GVNPRE on the three vector-specific operations.
...
llvm-svn: 37745
2007-06-27 04:10:46 +00:00
Evan Cheng
6cf1371456
Fix an obvious bug. Old code only worked for the entry block.
...
llvm-svn: 37743
2007-06-27 01:16:36 +00:00
Owen Anderson
5477c54aa0
1. Correct some comments and clean up some dead code.
...
2. When calculating ANTIC_IN, only iterate the changed blocks. For most average
inputs this is a small speedup, but for cases with unusual CFGs, this can be a significant win.
llvm-svn: 37742
2007-06-26 23:29:41 +00:00
Evan Cheng
4bf87f1f44
Correctly handle implcit def / use operands.
...
llvm-svn: 37740
2007-06-26 21:05:13 +00:00
Evan Cheng
d8417d9199
Properly handle kills of a physical register which has sub-registers that are read by later instructions.
...
llvm-svn: 37739
2007-06-26 21:03:35 +00:00
Evan Cheng
335c65e9a4
Silence a warning.
...
llvm-svn: 37737
2007-06-26 18:31:22 +00:00
Dan Gohman
3176887a73
Use utostr from StringExtras.h instead of ostringstream from <sstream>.
...
llvm-svn: 37731
2007-06-26 15:14:48 +00:00
Dan Gohman
e8c1e428f2
Revert the earlier change that removed the M_REMATERIALIZABLE machine
...
instruction flag, and use the flag along with a virtual member function
hook for targets to override if there are instructions that are only
trivially rematerializable with specific operands (i.e. constant pool
loads).
llvm-svn: 37728
2007-06-26 00:48:07 +00:00
Duraid Madina
f4dc5b26e2
tidy this file up a bit
...
llvm-svn: 37725
2007-06-26 00:21:58 +00:00
Duraid Madina
77416383e8
A bunch of fixes to the BigBlock allocator improve compile-time by ~20%
...
and code quality by ~2% on my tests.
A big thank you to Roman Levenstein for this patch! See
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070618/050717.html
for more details.
llvm-svn: 37724
2007-06-25 23:46:54 +00:00
Chris Lattner
ea5c4bd51c
fix Transforms/Inline/2007-06-25-WeakInline.ll by not inlining functions
...
with weak linkage.
llvm-svn: 37723
2007-06-25 21:50:09 +00:00
Owen Anderson
43ca4b48f1
Use the built-in postorder iterators rather than computing a postorder walk by hand.
...
llvm-svn: 37721
2007-06-25 18:25:31 +00:00
Dan Gohman
a866514528
Generalize MVT::ValueType and associated functions to be able to represent
...
extended vector types. Remove the special SDNode opcodes used for pre-legalize
vector operations, and the special MVT::Vector type used with them. Adjust
lowering and legalize to work with the normal SDNode kinds instead, and to
use the normal MVT functions to work with vector types instead of using the
two special operands that the pre-legalize nodes held.
This allows pre-legalize and post-legalize DAGs, and the code that operates
on them, to be more consistent. Pre-legalize vector operators can be handled
more consistently with scalar operators. And, -view-dag-combine1-dags and
-view-legalize-dags now look prettier for vector code.
llvm-svn: 37719
2007-06-25 16:23:39 +00:00
Dan Gohman
2e84e3f7b7
Make minor adjustments to whitespace and comments to reduce differences
...
between SSE1 instructions and their respective SSE2 analogues.
llvm-svn: 37718
2007-06-25 15:44:19 +00:00
Dan Gohman
33209bd6b8
Fix loadv2i32 to be loadv4i32, though it isn't actually used anywhere yet.
...
llvm-svn: 37717
2007-06-25 15:19:03 +00:00
Dan Gohman
e33c4b739b
Say AT&T instead of Intel in the comments for AT&T support.
...
llvm-svn: 37716
2007-06-25 15:11:25 +00:00
Anton Korobeynikov
ec9038bc69
Provide hook for alloca on VCPP. Patch by Scott Graham
...
llvm-svn: 37715
2007-06-25 07:12:14 +00:00
Owen Anderson
191eb06352
1) Fix an issue with non-deterministic iteration order in phi_translate
...
2) Remove some maximal-set computing code that is no longer used.
3) Use a post-order CFG traversal to compute ANTIC_IN instead of a postdom traversal.
This causes the ANTIC_IN calculation to converge much faster. Thanks to Daniel Berlin for suggesting this.
With this patch, the time to optimize 403.gcc decreased from 17.5s to 7.5s, and Anton's huge
testcase decreased from 62 minutes to 38 seconds.
llvm-svn: 37714
2007-06-25 05:41:12 +00:00
Nick Lewycky
8735f44104
Fix value ranges.
...
llvm-svn: 37713
2007-06-24 20:14:22 +00:00
Owen Anderson
7fb6da8e4d
Fix a silly mistake that was causing failures.
...
llvm-svn: 37712
2007-06-24 08:42:24 +00:00
Nick Lewycky
0f986fdbfa
Remove tabs.
...
llvm-svn: 37710
2007-06-24 04:40:16 +00:00
Nick Lewycky
26e25d340e
Remove use of ETForest. Also cleaned up issues around unreachable basic
...
blocks, and optimizing within one basic block.
llvm-svn: 37709
2007-06-24 04:36:20 +00:00
Owen Anderson
49409f6501
Rework topo_sort so eliminate some behavior that scaled terribly. This reduces the time to optimize 403.gcc from 18.2s to 17.5s,
...
and has an even larger effect on larger testcases.
llvm-svn: 37708
2007-06-22 21:31:16 +00:00
Owen Anderson
21a1131565
Perform fewer set insertions while calculating ANTIC_IN. This reduces the amount of time to optimize 403.gcc from 21.9s to 18.2s.
...
llvm-svn: 37707
2007-06-22 18:27:04 +00:00
Owen Anderson
92c7b22e1a
Remove some code that I was using for collecting performance information that should not have been committed.
...
llvm-svn: 37706
2007-06-22 17:04:40 +00:00
Owen Anderson
0c550df9d2
Fix the build.
...
llvm-svn: 37705
2007-06-22 16:59:54 +00:00
Dan Gohman
309d3d51b3
Move ComputeMaskedBits, MaskedValueIsZero, and ComputeNumSignBits from
...
TargetLowering to SelectionDAG so that they have more convenient
access to the current DAG, in preparation for the ValueType routines
being changed from standalone functions to members of SelectionDAG for
the pre-legalize vector type changes.
llvm-svn: 37704
2007-06-22 14:59:07 +00:00
Duraid Madina
81a752aa95
check in the BigBlock local register allocator
...
llvm-svn: 37703
2007-06-22 08:27:12 +00:00
Owen Anderson
f6e21871ad
Avoid excessive calls to find_leader when calculating AVAIL_OUT. This reduces the time to optimize 403.gcc from 23.5s to 21.9s.
...
llvm-svn: 37702
2007-06-22 03:14:03 +00:00
Evan Cheng
e3c4419953
std::set is really really terrible. Switch to SmallPtrSet to reduce compile time. For Duraid's example. The overall isel time is reduced from 0.6255 sec to 0.1876 sec.
...
llvm-svn: 37701
2007-06-22 01:35:51 +00:00
Dale Johannesen
485531ea9b
Quote complex names for Darwin X86 and ARM.
...
llvm-svn: 37700
2007-06-22 00:54:56 +00:00
Owen Anderson
d50a29d613
Reserve space in vectors before topologically sorting into them. This improves the time to optimize 403.gcc from 28s to 23.5s.
...
llvm-svn: 37699
2007-06-22 00:43:22 +00:00
Owen Anderson
28a2d449fa
Make a bunch of optimizations for compile time to GVNPRE, including smarter set unions, deferring blocks rather than computing maximal sets, and smarter use of sets. With these enhancements, the time to optimize 273.perlbmk goes from 5.3s to 2.7s.
...
llvm-svn: 37698
2007-06-22 00:20:30 +00:00
Owen Anderson
6d7b6f1ab8
Fix a bug in SmallPtrSet that was causing GVNPRE to enter an infinite loop.
...
llvm-svn: 37697
2007-06-22 00:11:18 +00:00
Chris Lattner
836e8f3f39
Two changes:
...
1. Make SmallPtrSet::erase faster in the small case by replacing a memmove
with a pointer copy.
2. Fix a bug where the null terminator at the end of the array in the small
case was not copied
llvm-svn: 37696
2007-06-21 23:23:32 +00:00
Devang Patel
703de8fea8
CallGraphSCCPass manager may require other passes.
...
Use schedulePass() to accomodate these requirement instead of directly
assigning a manager to new CallGraph PassManager.
llvm-svn: 37695
2007-06-21 22:29:02 +00:00
Chris Lattner
fb032b176b
Significantly improve the documentation of the instcombine divide/compare
...
transformation. Also, keep track of which end of the integer interval overflows
occur on. This fixes Transforms/InstCombine/2007-06-21-DivCompareMiscomp.ll
and rdar://5278853, a miscompilation of perl.
llvm-svn: 37692
2007-06-21 18:11:19 +00:00
Owen Anderson
2ff912bf33
Change lots of sets from std::set to SmallPtrSet. This reduces the time required to optimize 253.perlbmk from 10.9s to 5.3s.
...
llvm-svn: 37690
2007-06-21 17:57:53 +00:00
Devang Patel
d5258a23a5
Move code to update dominator information after basic block is split
...
from LoopSimplify.cpp to Dominator.cpp
llvm-svn: 37689
2007-06-21 17:23:45 +00:00
Dan Gohman
8e8d34b220
Tidy up ValueType names in comments.
...
llvm-svn: 37688
2007-06-21 14:48:26 +00:00
Dan Gohman
04deef3a49
Rename TargetLowering::getNumElements and friends to
...
TargetLowering::getNumRegisters and similar, to avoid confusion with
the actual number of elements for vector types.
llvm-svn: 37687
2007-06-21 14:42:22 +00:00
Evan Cheng
aa5f5d960d
Xforms:
...
(add (select cc, 0, c), x) -> (select cc, x, (add, x, c))
(sub x, (select cc, 0, c)) -> (select cc, x, (sub, x, c))
llvm-svn: 37685
2007-06-21 07:39:16 +00:00
Owen Anderson
27876a3ff9
Eliminate a redundant check. This speeds up optimization of 253.perlbmk from 13.5 seconds to 10.9 seconds.
...
llvm-svn: 37683
2007-06-21 01:59:05 +00:00
Owen Anderson
fd5683ad7a
Comment-ize the functions in GVNPRE.
...
llvm-svn: 37681
2007-06-21 00:19:05 +00:00
Chris Lattner
3bbec59e8b
refactor a bunch of code out of visitICmpInstWithInstAndIntCst into its own
...
routine.
llvm-svn: 37679
2007-06-20 23:46:26 +00:00
Owen Anderson
06c1e585c9
Split runOnFunction into many smaller functions. This make it easier to get accurate performance analysis of GVNPRE.
...
llvm-svn: 37678
2007-06-20 22:10:02 +00:00
Owen Anderson
b0714bb7bb
Make GVNPRE accurate report whether it modified the function or not.
...
llvm-svn: 37673
2007-06-20 18:30:20 +00:00
Owen Anderson
7b0fb44ca9
Get rid of an unneeded helper function.
...
llvm-svn: 37670
2007-06-20 00:43:33 +00:00
Evan Cheng
77d61e6f6d
Be more conservative of duplicating blocks.
...
llvm-svn: 37669
2007-06-19 23:55:02 +00:00
Owen Anderson
1ad2c10215
Use a DenseMap instead of an std::map for the value numbering. This reduces the time to optimize lencod on a PPC Debug build from ~300s to ~140s.
...
llvm-svn: 37668
2007-06-19 23:23:54 +00:00
Owen Anderson
2320d430bd
Make dependsOnInvoke much more specific in what it tests, which in turn make it much faster to run. This reduces the time to optimize lencondwith a debug build on PPC from ~450s to ~300s.
...
llvm-svn: 37667
2007-06-19 23:07:16 +00:00
Tanya Lattner
c655839d71
Moved Inliner.h to include/llvm/Transforms/IPO/InlinerPass.h
...
llvm-svn: 37666
2007-06-19 22:31:52 +00:00
Tanya Lattner
ab11b1c702
Inliner pass header file was moved.
...
llvm-svn: 37665
2007-06-19 22:29:50 +00:00
Evan Cheng
a955c02c9b
Avoid if-converting simple block that ends with unconditional branch or fallthrough unless it branches / falls to the 'false' block. Not profitable, may end up increasing code size.
...
llvm-svn: 37660
2007-06-19 21:45:13 +00:00
Evan Cheng
c3c949b473
Allow predicated immediate ARM to ARM calls.
...
llvm-svn: 37659
2007-06-19 21:05:09 +00:00
Dan Gohman
32f53bbd85
Rename ScalarEvolution::deleteInstructionFromRecords to
...
deleteValueFromRecords and loosen the types to all it to accept
Value* instead of just Instruction*, since this is what
ScalarEvolution uses internally anyway. This allows more flexibility
for future uses.
llvm-svn: 37657
2007-06-19 14:28:31 +00:00
Dan Gohman
a7644dd9b9
Pass a SelectionDAG into SDNode::dump everywhere it's used, in prepration
...
for needing the DAG node to print pre-legalize extended value types, and
to get better debug messages with target-specific nodes.
llvm-svn: 37656
2007-06-19 14:13:56 +00:00
Owen Anderson
1370faf889
Handle constants in phi nodes properly. This fixes test/Transforms/GVNPRE/2007-06-18-ConstantInPhi.ll
...
llvm-svn: 37655
2007-06-19 07:35:36 +00:00
Chris Lattner
37228f6ce5
document and hide two options.
...
llvm-svn: 37651
2007-06-19 05:47:49 +00:00
Chris Lattner
7936d91f70
describe an argument, hide it.
...
llvm-svn: 37650
2007-06-19 05:46:06 +00:00
Chris Lattner
09a33a4f64
silence a bogus warning Duraid ran into.
...
llvm-svn: 37649
2007-06-19 05:43:49 +00:00
Owen Anderson
91c54950b3
Be careful to erase values from all of the appropriate sets when they're not needed anymore. This fixes a few more memory-related issues.
...
llvm-svn: 37647
2007-06-19 05:37:32 +00:00
Owen Anderson
b9cbaed623
Remember to clear the maximal sets between functions.
...
Thanks to Nicholas for valgrinding this.
llvm-svn: 37646
2007-06-19 04:32:55 +00:00
Owen Anderson
b56fba0c5a
Refactor GVNPRE to use a much smart method of uniquing value sets, and centralize a lot of the value numbering information. No functionality change.
...
llvm-svn: 37645
2007-06-19 03:31:41 +00:00
Dan Gohman
9e82064924
Replace M_REMATERIALIZIBLE and the newly-added isOtherReMaterializableLoad
...
with a general target hook to identify rematerializable instructions. Some
instructions are only rematerializable with specific operands, such as loads
from constant pools, while others are always rematerializable. This hook
allows both to be identified as being rematerializable with the same
mechanism.
llvm-svn: 37644
2007-06-19 01:48:05 +00:00
Evan Cheng
a7ca624028
Replace TargetInstrInfo::CanBeDuplicated() with a M_NOT_DUPLICABLE bit.
...
llvm-svn: 37643
2007-06-19 01:26:51 +00:00
Chris Lattner
944200be45
If a function is vararg, never pass inreg arguments in registers. Thanks to
...
Anton for half of this patch.
llvm-svn: 37641
2007-06-19 00:13:10 +00:00
Chris Lattner
26be02febf
add isVarArg to CCState
...
llvm-svn: 37640
2007-06-19 00:11:09 +00:00
Evan Cheng
cea02ffd05
Look for VECTOR_SHUFFLE that's identity operation on either LHS or RHS. This can happen before DAGCombiner catches it.
...
llvm-svn: 37636
2007-06-19 00:02:56 +00:00
Evan Cheng
0598b2d5eb
Fix some fragile code wrt CFG edge updating.
...
llvm-svn: 37634
2007-06-18 22:44:57 +00:00
Evan Cheng
2afd702c20
Move CorrectExtraCFGEdges() from BranchFolding.cpp to a MachineBasicBlock method.
...
llvm-svn: 37633
2007-06-18 22:43:58 +00:00
Devang Patel
d56e4919df
Fix quotes in debug messages.
...
llvm-svn: 37630
2007-06-18 21:32:29 +00:00
Chris Lattner
e31adc8ab9
make ComputeTopDownOrdering significantly faster and use less stack space
...
by making it non-recursive
llvm-svn: 37629
2007-06-18 21:28:10 +00:00
Dan Gohman
eed125f315
In SCEVAddExpr::get, skip over any cast operands before looking for nested
...
add operands after constant operands. The recent change to recognize
sign-extend expressions caused this to be exposed more often.
llvm-svn: 37628
2007-06-18 19:30:09 +00:00
Anton Korobeynikov
02b0997b28
Make BasicAliasAnalysis correctly register itself. Patch by Devang
...
llvm-svn: 37627
2007-06-18 17:13:29 +00:00
Dan Gohman
8c7333266c
Make chain dependencies blue, in addition to being dashed.
...
llvm-svn: 37626
2007-06-18 15:30:16 +00:00
Dan Gohman
c98815ba32
Define the pushq instruction for x86-64.
...
llvm-svn: 37625
2007-06-18 14:12:56 +00:00
Evan Cheng
51eb2c3bbe
Properly remove duplicate instructions as result of diamond if-conversion. Other bug fixes.
...
llvm-svn: 37623
2007-06-18 08:37:25 +00:00
Owen Anderson
dd998e1913
Cache the results of dependsOnInvoke()
...
llvm-svn: 37622
2007-06-18 04:42:29 +00:00
Owen Anderson
f1c04e1ddb
Fix indentation.
...
llvm-svn: 37621
2007-06-18 04:31:21 +00:00
Owen Anderson
b364b413af
Don't perform an expensive check if it's not necessary.
...
llvm-svn: 37620
2007-06-18 04:30:44 +00:00
Bill Wendling
094a4e813a
Revert patch. It regresses:
...
define double @test2(i64 %A) {
%B = bitcast i64 %A to double
ret double %B
}
$ llvm-as < t.ll | llc -march=x86-64
before:
.align 4
.globl _test2
_test2:
movd %rdi, %xmm0
ret
after:
_test2:
subq $8, %rsp
movq %rdi, (%rsp)
movsd (%rsp), %xmm0
addq $8, %rsp
ret
llvm-svn: 37617
2007-06-16 23:57:15 +00:00
Evan Cheng
3a51c854d0
Really turn if-converter loose:
...
1. Consider all possible ifcvt cases at once. No longer restricted to bottom
up iterative approach.
2. Sort all possible cases based on a cost function. Perform the most profitable
ones first invalidate others that target the same blocks.
3. Fixed a number of bugs related to block duplication.
llvm-svn: 37613
2007-06-16 09:34:52 +00:00
Bill Wendling
cd9673e565
Fix a failure to bit_convert from integer GPR to MMX register.
...
llvm-svn: 37611
2007-06-16 06:17:31 +00:00
Owen Anderson
658f2c4881
Fix test/Transforms/GVNPRE/2007-06-15-InvokeInst.ll by ignoring all instructions that depend on invokes.
...
llvm-svn: 37610
2007-06-16 00:26:54 +00:00
Tanya Lattner
e199f97fa8
Codegen support (stripped out) for the annotate attribute.
...
llvm-svn: 37608
2007-06-15 22:26:58 +00:00
Evan Cheng
23402fcaef
Not every predicable block can be safely duplicated.
...
llvm-svn: 37607
2007-06-15 21:18:05 +00:00
Evan Cheng
36b1f5476e
Instructions with unique labels or embedded jumptables cannot be duplicated during ifcvt.
...
llvm-svn: 37606
2007-06-15 21:15:00 +00:00
Dan Gohman
00cb117b07
Fold a binary operator with constant operands when expanding code for a SCEV.
...
llvm-svn: 37602
2007-06-15 19:21:55 +00:00
Chris Lattner
f852e339b6
Fix CodeGen/X86/inline-asm-x-scalar.ll:test4, by retaining regclass info
...
for tied register constraints.
llvm-svn: 37601
2007-06-15 19:11:01 +00:00
Evan Cheng
234a90e83e
MachineInstr::isPredicable() is no longer needed.
...
llvm-svn: 37599
2007-06-15 19:06:07 +00:00
Duncan Sands
92bf2c628c
Workaround for PR1508.
...
llvm-svn: 37597
2007-06-15 19:04:19 +00:00
Dan Gohman
203a035251
Use SCEVConstant::get instead of SCEVUnknown::get to create an
...
integer constant SCEV.
llvm-svn: 37596
2007-06-15 18:00:55 +00:00
Owen Anderson
acaed06827
Fix test/Transforms/GVNPRE/2007-06-15-Looping.ll
...
llvm-svn: 37595
2007-06-15 17:55:15 +00:00
Evan Cheng
cd5f5e3ecd
Extra edges are deleted later if needed.
...
llvm-svn: 37593
2007-06-15 17:34:48 +00:00
Dan Gohman
cb9e09ad57
Add a SCEV class and supporting code for sign-extend expressions.
...
This created an ambiguity for expandInTy to decide when to use
sign-extension or zero-extension, but it turns out that most of its callers
don't actually need a type conversion, now that LLVM types don't have
explicit signedness. Drop expandInTy in favor of plain expand, and change
the few places that actually need a type conversion to do it themselves.
llvm-svn: 37591
2007-06-15 14:38:12 +00:00
Evan Cheng
92fb5453c3
Allow small blocks to be duplicated to enable if-conversion.
...
llvm-svn: 37590
2007-06-15 07:36:12 +00:00
Chris Lattner
373389260f
Generalize many transforms to work on ~ of vectors in addition to ~ of
...
integer ops. This implements Transforms/InstCombine/and-or-not.ll
test3/test4, and finishes off PR1510
llvm-svn: 37589
2007-06-15 06:23:19 +00:00
Chris Lattner
72e3958003
add a Constant::getAllOnesValue helper function, which works on integers
...
AND vectors.
llvm-svn: 37586
2007-06-15 06:10:53 +00:00
Chris Lattner
1edec381a5
Enhance BinaryOperator::isNot to support vector not.
...
llvm-svn: 37585
2007-06-15 06:04:24 +00:00
Chris Lattner
481e28b1f5
Implement two xforms:
...
1. ~(~X | Y) === (X & ~Y)
2. (A|B) & ~(A&B) -> A^B
This allows us to transform ~(~(a|b) | (a&b)) -> a^b.
This implements PR1510 for scalar values.
llvm-svn: 37584
2007-06-15 05:58:24 +00:00
Chris Lattner
f14e5175ed
delete some obviously dead vector operations, which deletes a few thousand
...
operations from Duraids example.
llvm-svn: 37582
2007-06-15 05:26:55 +00:00
Evan Cheng
add977670f
No really, clear predcessors states.
...
llvm-svn: 37581
2007-06-14 23:34:09 +00:00
Evan Cheng
9fc56c079d
If BB is predicated, invalidate its predecessor(s) which would if-convert it. It needs to be re-analyzed.
...
llvm-svn: 37580
2007-06-14 23:13:19 +00:00
Dan Gohman
5c4413120f
Rename MVT::getVectorBaseType to MVT::getVectorElementType.
...
llvm-svn: 37579
2007-06-14 22:58:02 +00:00
Dale Johannesen
616627b002
Do not treat FP_REG_KILL as terminator in branch analysis (X86).
...
llvm-svn: 37578
2007-06-14 22:03:45 +00:00
Evan Cheng
e08f0eefa6
Fix typo.
...
llvm-svn: 37577
2007-06-14 21:26:08 +00:00
Dan Gohman
4a4a8eb00e
Add a target hook to allow loads from constant pools to be rematerialized, and an
...
implementation for x86.
llvm-svn: 37576
2007-06-14 20:50:44 +00:00
Evan Cheng
1e6f08b2a2
Fix some stupid bugs that have effectively disabled if-conversion.
...
llvm-svn: 37575
2007-06-14 20:28:52 +00:00
Dan Gohman
3a8e2a8b2f
Eliminate some redundant newlines in asm output.
...
llvm-svn: 37574
2007-06-14 15:00:27 +00:00
Christopher Lamb
f274efef9f
Add support to tablegen for specifying subregister classes on a per register class basis.
...
llvm-svn: 37572
2007-06-13 22:20:15 +00:00
Dale Johannesen
c68554683d
Handle blocks with 2 unconditional branches in AnalyzeBranch.
...
llvm-svn: 37571
2007-06-13 17:59:52 +00:00
Duncan Sands
7413736a7e
Only correctly lower exception handing intrinsics if exception handling is
...
turned on. Likewise for scanning of invokes to mark landing pads.
llvm-svn: 37570
2007-06-13 16:53:21 +00:00
Dan Gohman
26455c4ae0
Introduce new SelectionDAG node opcodes VEXTRACT_SUBVECTOR and
...
VCONCAT_VECTORS. Use these for CopyToReg and CopyFromReg legalizing in
the case that the full register is to be split into subvectors instead
of scalars. This replaces uses of VBIT_CONVERT to present values as
vector-of-vector types in order to make whole subvectors accessible via
BUILD_VECTOR and EXTRACT_VECTOR_ELT.
This is in preparation for adding extended ValueType values, where
having vector-of-vector types is undesirable.
llvm-svn: 37569
2007-06-13 15:12:02 +00:00
Dan Gohman
cbd51c8b60
When creating CopyFromReg nodes, always use legal types. And use the
...
correct types for the result vector, even though it is currently bitcasted
to a different type immediately.
llvm-svn: 37568
2007-06-13 14:55:16 +00:00
Duncan Sands
97f7236e70
The fix that was applied for PR1224 stops the compiler
...
crashing but breaks exception handling. The problem
described in PR1224 is that invoke is a terminator that
can produce a value. The value may be needed in other
blocks. The code that writes to registers values needed
in other blocks runs before terminators are lowered (in
this case invoke) so asserted because the value was not
yet available. The fix that was applied was to do invoke
lowering earlier, before writing values to registers.
The problem this causes is that the code to copy values
to registers can be output after the invoke call. If
an exception is raised and control is passed to the
landing pad then this copy-code will never execute. If
the value is needed in some code path reached via the
landing pad then that code will get something bogus.
So revert the original fix and simply skip invoke values
in the general copying to registers code. Instead copy
the invoke value to a register in the invoke lowering code.
llvm-svn: 37567
2007-06-13 05:51:31 +00:00
Evan Cheng
cbaaff58bf
Typo
...
llvm-svn: 37566
2007-06-13 00:04:00 +00:00
Evan Cheng
9acfa7b063
Now if-converting all 4 variants of triangles.
...
llvm-svn: 37565
2007-06-12 23:54:05 +00:00
Owen Anderson
4036ad485f
Fix test/Transforms/GVNPRE/2007-06-12-PhiTranslate.ll
...
llvm-svn: 37564
2007-06-12 22:43:57 +00:00
Devang Patel
149a7616dc
isReachableFromEntry() is not suitable for post dominator.
...
llvm-svn: 37562
2007-06-12 17:50:25 +00:00
Devang Patel
47419ee142
Remove redundant check.
...
llvm-svn: 37561
2007-06-12 17:35:20 +00:00
Devang Patel
dcf0c03ff7
Check A dominates B and vise versa first while searching for nearest
...
common dominator.
llvm-svn: 37559
2007-06-12 17:17:57 +00:00
Owen Anderson
4276984012
Refactor some code, and fix test/Transforms/GVNPRE/2007-06-12-NoExit.ll by being more careful when using
...
post-dominator information.
llvm-svn: 37556
2007-06-12 16:57:50 +00:00
Dale Johannesen
edfec0b515
Sink CmpInst's to their uses to reduce register pressure.
...
llvm-svn: 37554
2007-06-12 16:50:17 +00:00
Devang Patel
a6ff5bf9ba
Break DominatorTree from ETNode.
...
Remove unused PostETForest.
llvm-svn: 37551
2007-06-12 00:54:38 +00:00
Owen Anderson
a75dd4dc56
Fix a few more bugs, including an instance of walking in reverse topological rather than topological order. This
...
fixes a testcase extracted from llvm-test.
llvm-svn: 37550
2007-06-12 00:50:47 +00:00
Devang Patel
d324360352
Use SmallPtrSet instaed of std::set
...
llvm-svn: 37548
2007-06-12 00:40:51 +00:00
Devang Patel
9576fac800
Check immediate dominators first while searching for nearset common dominator.
...
Fix 80 col violations.
llvm-svn: 37547
2007-06-12 00:35:38 +00:00
Devang Patel
88ea2dbc68
Maintain DFS number in DomTreeNode itself.
...
This means now ETNodes are not useful anymore.
llvm-svn: 37546
2007-06-12 00:14:41 +00:00
Devang Patel
78b9c68164
Add and use DominatorTreeBase::findNearestCommonDominator().
...
llvm-svn: 37545
2007-06-11 23:31:22 +00:00
Lauro Ramos Venancio
4c2f003971
Fix a typo in bswap lowering.
...
llvm-svn: 37544
2007-06-11 23:16:16 +00:00
Evan Cheng
4dd31a7b1b
Restructure code to reduce ifcvt compile time cost.
...
llvm-svn: 37543
2007-06-11 22:26:22 +00:00
Devang Patel
536ac4dca7
Simplify.
...
llvm-svn: 37542
2007-06-11 21:45:31 +00:00
Devang Patel
d18054afcf
simplify
...
llvm-svn: 37541
2007-06-11 21:25:31 +00:00
Devang Patel
ab2eee89a4
Simplify. Dominator Tree is required so always available.
...
llvm-svn: 37540
2007-06-11 21:18:00 +00:00
Owen Anderson
d184c18074
Handle functions with multiple exit blocks properly.
...
llvm-svn: 37539
2007-06-11 16:25:17 +00:00
Devang Patel
c43f32b935
Use DominatorTree instead of ETForest.
...
llvm-svn: 37538
2007-06-11 15:40:48 +00:00
Reid Spencer
14b62a553e
Fix the build.
...
llvm-svn: 37537
2007-06-10 00:19:17 +00:00
Owen Anderson
223718c40e
Perform PRE of comparison operators.
...
llvm-svn: 37536
2007-06-09 18:35:31 +00:00
Chris Lattner
75372ad603
fix x86-64 mmx calling convention for real, which passes in integer gprs.
...
llvm-svn: 37534
2007-06-09 05:08:10 +00:00
Chris Lattner
a4a49e37ab
fix mmx handling bug
...
llvm-svn: 37533
2007-06-09 05:01:50 +00:00
Nick Lewycky
d18b16034a
Fix edge case.
...
llvm-svn: 37532
2007-06-09 04:20:33 +00:00
Evan Cheng
2117d1f20e
Don't change CFG during analysis stage. Do so during ifcvt and invalidate predecessors accordingly.
...
llvm-svn: 37531
2007-06-09 01:03:43 +00:00
Owen Anderson
7d76b2a774
Collect statistics from GVN-PRE.
...
llvm-svn: 37530
2007-06-08 22:02:36 +00:00
Evan Cheng
288f1545a6
Carefully remove extraneous CFG edges after each ifcvt.
...
llvm-svn: 37529
2007-06-08 22:01:07 +00:00
Evan Cheng
5514bbef46
Add a utility routine to check for unpredicated terminator instruction.
...
llvm-svn: 37528
2007-06-08 21:59:56 +00:00
Lauro Ramos Venancio
c7ebbaa10e
Define AsmTransCBE for ARM.
...
llvm-svn: 37527
2007-06-08 21:06:23 +00:00
Owen Anderson
b232efaf48
Fix typo in a comment.
...
llvm-svn: 37526
2007-06-08 20:57:08 +00:00
Owen Anderson
55994f2453
Fix a bug that was causing the elimination phase not to replace values when it should be.
...
With this patch, GVN-PRE now correctly optimizes the example from the thesis.
Many thanks to Daniel Berlin for helping me find errors in this.
llvm-svn: 37525
2007-06-08 20:44:02 +00:00
Evan Cheng
df1a42935b
Correct transfer predicate information.
...
llvm-svn: 37524
2007-06-08 19:17:12 +00:00
Evan Cheng
e93ccc013f
Hidden options to help debugging ifcvt issues.
...
llvm-svn: 37523
2007-06-08 19:10:51 +00:00
David Greene
02f6e9b621
Factor live variable analysis so it does not do register coalescing
...
simultaneously. Move that pass to SimpleRegisterCoalescing.
This makes it easier to implement alternative register allocation and
coalescing strategies while maintaining reuse of the existing live
interval analysis.
llvm-svn: 37520
2007-06-08 17:18:56 +00:00
Evan Cheng
7783f82e21
Allow more cmp / bcc to be predicated; clean up triangle ifcvt checking code.
...
llvm-svn: 37518
2007-06-08 09:36:04 +00:00
Evan Cheng
6740da9407
Fix ARM condition code subsumission check.
...
llvm-svn: 37517
2007-06-08 09:14:47 +00:00
Evan Cheng
f62a5afb98
tBcc is not a barrier.
...
llvm-svn: 37516
2007-06-08 09:13:23 +00:00
Duncan Sands
dc8fc1550e
Use more realistically sized vectors. Reserve capacity if we know in advance
...
how much will be used.
llvm-svn: 37515
2007-06-08 08:59:11 +00:00
Owen Anderson
2e5efc30c2
Small bugfix, and const-ify some methods (Thanks, Bill).
...
llvm-svn: 37513
2007-06-08 01:52:45 +00:00
Devang Patel
becc466451
Update LoopSimplify to require and preserve DominatorTree only.
...
Now LoopSimplify does not require nor preserve ETForest.
llvm-svn: 37512
2007-06-08 01:50:32 +00:00
Dale Johannesen
86798e5e11
Make throttle a hidden parameter, per review.
...
llvm-svn: 37511
2007-06-08 01:08:52 +00:00
Owen Anderson
be80240b29
Add partial redundancy elimination.
...
llvm-svn: 37510
2007-06-08 01:03:01 +00:00
Dale Johannesen
52fcf022f7
Throttle tail merging; handling blocks with large numbers of predecessors
...
is too slow.
llvm-svn: 37509
2007-06-08 00:34:27 +00:00
Devang Patel
aee309e353
Use DominatorTree instead of ETForest.
...
llvm-svn: 37507
2007-06-08 00:17:13 +00:00
Devang Patel
8ecffa996a
Do not preserve ETForest.
...
llvm-svn: 37506
2007-06-08 00:02:08 +00:00
Devang Patel
31257adce9
Use DominatorTree instead of ETForest.
...
llvm-svn: 37505
2007-06-07 23:53:38 +00:00
Devang Patel
46d92cae96
Add instruction level dominates(A,B) interface.
...
llvm-svn: 37504
2007-06-07 23:52:40 +00:00
Evan Cheng
1236ef7bcc
Only remove the edge from entry to false if false block is merged.
...
llvm-svn: 37503
2007-06-07 22:31:28 +00:00
Devang Patel
3f4c6fe7e8
Do not require ETForest. Now it is unused by LICM.
...
llvm-svn: 37502
2007-06-07 22:21:15 +00:00
Devang Patel
cf470e5255
Do not use ETForest as well as DomiantorTree. DominatorTree is sufficient.
...
llvm-svn: 37501
2007-06-07 22:17:16 +00:00
Devang Patel
fc7fdef7d2
Use DominatorTree instead of ETForest.
...
This allows faster immediate domiantor walk.
llvm-svn: 37500
2007-06-07 21:57:03 +00:00
Devang Patel
df6355ccf8
Use DominatorTree instead of ETForest.
...
llvm-svn: 37499
2007-06-07 21:42:15 +00:00
Devang Patel
fb582f8dda
Use DominatorTree instead of ETForest.
...
llvm-svn: 37498
2007-06-07 21:35:27 +00:00
Dale Johannesen
9a4d987a5f
Do not change the size of function arguments. PR 1489.
...
llvm-svn: 37496
2007-06-07 21:07:15 +00:00
Devang Patel
5b8a5516e4
Use DominatorTree instead of ETForest.
...
llvm-svn: 37495
2007-06-07 18:45:06 +00:00
Devang Patel
593e766fb5
Use DominatorTree instead of ETForest.
...
llvm-svn: 37494
2007-06-07 18:40:55 +00:00
Devang Patel
af41e4a192
Maintain ETNode as part of DomTreeNode.
...
This adds redundancy for now.
llvm-svn: 37492
2007-06-07 17:47:21 +00:00
Tanya Lattner
5801c23e05
Formating fixes.
...
llvm-svn: 37491
2007-06-07 17:12:16 +00:00
Evan Cheng
d3f3f0adad
ifcvt a triangle: don't merge ifcvt block with rejoin block if it can fall through to it. If merged, the resulting block is not a candidate for iterative ifcvting since it contains both predicated and non-predicated code.
...
llvm-svn: 37487
2007-06-07 08:13:00 +00:00
Zhou Sheng
0ae22e99c8
Add assert to check if the attributes ZExt/SExt, NoAlias are apply to the
...
correct type of parameters.
llvm-svn: 37486
2007-06-07 06:12:03 +00:00
Evan Cheng
be9859eea2
Lots of bug fixes. Now finally in a reasonable state.
...
llvm-svn: 37485
2007-06-07 02:12:15 +00:00
Evan Cheng
842be09d86
Stupid cut-n-paste bug caused me soooo much grief. Why wasn't there a compilation warning? I blame it on the FE folks.
...
llvm-svn: 37484
2007-06-07 01:37:54 +00:00
Lauro Ramos Venancio
85703e3796
Propagate alignment, section name and visibility when linking "appending
...
global values".
Fix noinline linkage.
llvm-svn: 37482
2007-06-06 22:01:12 +00:00
Tanya Lattner
cb90f1d881
Instruct the inliner to obey the noinline attribute. Add test case.
...
llvm-svn: 37481
2007-06-06 21:59:26 +00:00
Chris Lattner
34404e3247
simplify this code and fix PR1493, now that llvm-gcc3 is dead.
...
llvm-svn: 37478
2007-06-06 20:51:41 +00:00
Devang Patel
def2d9790a
Add new dominator tree node into dominator tree node map.
...
llvm-svn: 37475
2007-06-06 20:08:11 +00:00
Lauro Ramos Venancio
368e8872db
Fix PR1499.
...
llvm-svn: 37472
2007-06-06 17:08:48 +00:00
Owen Anderson
cfb6f40424
Quick patch to fix the build, based on what it appears Evan meant to write.
...
Evan, please check that this is in fact correct.
llvm-svn: 37471
2007-06-06 16:22:00 +00:00
Duncan Sands
29d1dc6f1a
Fold the exception actions table harder: if two typeid lists start the
...
same, only output one copy of the common part.
llvm-svn: 37470
2007-06-06 15:37:31 +00:00
Nick Lewycky
df543f4b84
Optimize this test. Firstly, only Instructions may use other Instructions.
...
Secondly, checking whether removal succeeded tells you whether it was in
the map to begin with.
llvm-svn: 37469
2007-06-06 11:26:20 +00:00
Evan Cheng
e8c3cbf971
Mark these instructions clobbersPred. They modify the condition code register.
...
llvm-svn: 37468
2007-06-06 10:17:05 +00:00
Evan Cheng
9030b98aca
Lots of bug fixes.
...
llvm-svn: 37467
2007-06-06 10:16:17 +00:00
Evan Cheng
d04409154f
Added clobbersPred.
...
llvm-svn: 37466
2007-06-06 10:15:28 +00:00
Duncan Sands
61166501a1
Additional fix for PR1422: make sure the landing pad label is placed in the
...
correct machine basic block - do not rely on the eh.exception intrinsic
being in the landing pad: the loop optimizers can move it out.
llvm-svn: 37463
2007-06-06 10:05:18 +00:00
Bruno Cardoso Lopes
35e43c49b0
Initial Mips support, here we go! =)
...
- Modifications from the last patch included
(issues pointed by Evan Cheng are now fixed).
- Added more MipsI instructions.
- Added more patterns to match branch instructions.
llvm-svn: 37461
2007-06-06 07:42:06 +00:00
Nick Lewycky
3e84212897
Fix PR1487 and Transforms/IndVar/2007-06-06-DeleteDanglesPtr.ll
...
llvm-svn: 37459
2007-06-06 04:12:20 +00:00
Nick Lewycky
91ed6efc24
Inform ScalarEvolutions that we're deleting Values.
...
This is the obviously correct part of the fix for PR1487.
llvm-svn: 37457
2007-06-06 03:51:56 +00:00
Evan Cheng
e4ec918be0
If a unconditional branch is added to branch to the false path during ifcvt, the predicated block cannot be iteratively ifcvted.
...
llvm-svn: 37456
2007-06-06 02:08:52 +00:00
Owen Anderson
634a063c1d
Add simple full redundancy elimination.
...
llvm-svn: 37455
2007-06-06 01:27:49 +00:00
Chris Lattner
1b7b6e76ec
Fix PR1495 and CodeGen/X86/2007-06-05-LSR-Dominator.ll
...
llvm-svn: 37454
2007-06-06 01:23:55 +00:00
Evan Cheng
b30a89457c
Minor statistics counting bug.
...
llvm-svn: 37451
2007-06-06 01:12:44 +00:00
Evan Cheng
30565998bb
Fix a couple of typos and be smarter about order of blocks when ifcvt a diamond.
...
llvm-svn: 37449
2007-06-06 00:57:55 +00:00
Devang Patel
506310d3dd
Avoid non-trivial loop unswitching while optimizing for size.
...
llvm-svn: 37446
2007-06-06 00:21:03 +00:00
Chris Lattner
31f82dff21
Fix a user-reported error building with GCC 3.4.4 on Cygwin.
...
llvm-svn: 37445
2007-06-05 23:49:06 +00:00
Evan Cheng
7948422b78
Fix diamond shape ifcvt bugs.
...
llvm-svn: 37444
2007-06-05 23:46:14 +00:00
Owen Anderson
ddbe430732
Fix a misunderstanding of the algorithm. Really, we should be tracking values
...
and expression separately. We can get around this, however, by only keeping
opaque values in TMP_GEN.
llvm-svn: 37443
2007-06-05 23:46:12 +00:00
Owen Anderson
c84720913a
Don't leak memory.
...
llvm-svn: 37442
2007-06-05 22:11:49 +00:00
Evan Cheng
c1a0b8ce1d
ReplaceUsesOfBlockWith() can modify the predecessors list.
...
llvm-svn: 37441
2007-06-05 22:03:53 +00:00
Evan Cheng
3e5bf0827c
Do not ifcvt if either true / false path is a backedge. Not profitable in almost all cases.
...
llvm-svn: 37440
2007-06-05 20:38:42 +00:00
Devang Patel
3e6519e9fa
Fix PR 1497
...
Use separate pass id for CFGOnlyPrinter.
llvm-svn: 37439
2007-06-05 20:24:36 +00:00
Evan Cheng
5c48958a61
Print predicate of the second instruction of the two-piece constant MI.
...
llvm-svn: 37437
2007-06-05 18:55:18 +00:00
Owen Anderson
9b89e4b561
Fix a small bug, some 80 cols violations, and add some more debugging output.
...
llvm-svn: 37436
2007-06-05 17:31:23 +00:00
Dan Gohman
151169df1e
Allow insertelement, extractelement, and shufflevector to be hoisted/sunk
...
by LICM.
llvm-svn: 37435
2007-06-05 16:05:55 +00:00
Evan Cheng
252695f0f6
PIC label asm printing cosmetic changes.
...
llvm-svn: 37434
2007-06-05 07:36:38 +00:00
Evan Cheng
2c1acd6d9e
I had a senior moment.
...
llvm-svn: 37433
2007-06-05 07:05:25 +00:00
Zhou Sheng
2444a9adeb
Commit first round work of PR1373. "noalias" is now fully supported in
...
VMCore, BitCode, and Assembly. Documentation and test case paramattrs.ll
updated also.
llvm-svn: 37432
2007-06-05 05:28:26 +00:00
Evan Cheng
6e4babe8cc
If the predicated block requires an early exit, end the block there and add a unconditional branch to false block. AnalyzeBranch() does not understand early exits.
...
llvm-svn: 37430
2007-06-05 01:31:40 +00:00
Evan Cheng
17aad8164e
Fix some subtle bugs: bug during succeessor copying; incorrectly updating states of ifcvted blocks.
...
llvm-svn: 37429
2007-06-05 00:07:37 +00:00
Bill Wendling
6357bf20fa
Patches by Chuck Rose to unbreak V Studio builds.
...
Thanks Chuck!
llvm-svn: 37428
2007-06-04 23:52:59 +00:00
Dale Johannesen
0558dda319
Tail merging wasn't working for predecessors of landing pads. PR 1496.
...
llvm-svn: 37427
2007-06-04 23:52:54 +00:00
Devang Patel
b3adb9876a
s/ETNode::getChildren/ETNode::getETNodeChildren/g
...
llvm-svn: 37426
2007-06-04 23:45:02 +00:00
Owen Anderson
3c9d8eef21
Don't use std::set_difference when the two sets are sorted differently. Compute
...
the difference manually instead.
This allows GVNPRE to produce correct analysis for the example in the GVNPRE
paper.
llvm-svn: 37425
2007-06-04 23:34:56 +00:00
Owen Anderson
3df5299f94
Fix a bunch of small bugs, and improve the debugging output significantly.
...
llvm-svn: 37424
2007-06-04 23:28:33 +00:00
Chris Lattner
d7897d40b6
When rebuilding constant structs, make sure to honor the isPacked bit.
...
This fixes PR1491 and GlobalOpt/2007-06-04-PackedStruct.ll
llvm-svn: 37423
2007-06-04 22:23:42 +00:00
Evan Cheng
53ce7de03b
Global ctors / dtors alignment shouldn't be hard-coded at 4. e.g. It could be 8 for 64-bit targets.
...
llvm-svn: 37421
2007-06-04 20:39:18 +00:00
Evan Cheng
91233153bf
Forgot to check for if iterator reached the end.
...
llvm-svn: 37420
2007-06-04 20:33:36 +00:00
Evan Cheng
59ca6a846f
Misuse of hasExternalLinkage(), should be checking isDeclaration().
...
llvm-svn: 37419
2007-06-04 18:54:57 +00:00
Owen Anderson
38b6b22a41
Make phi_translate correct.
...
llvm-svn: 37418
2007-06-04 18:05:26 +00:00
Devang Patel
4a7c2830d4
Add FIXMEs.
...
llvm-svn: 37417
2007-06-04 17:38:00 +00:00
Devang Patel
ebc5b96735
s/DominatorTree::createNewNode/DominatorTree::addNewBlock/g
...
llvm-svn: 37415
2007-06-04 16:43:25 +00:00
Devang Patel
a89566aefd
Add basic block level interface to change immediate dominator
...
and create new node.
llvm-svn: 37414
2007-06-04 16:22:33 +00:00
Dan Gohman
b4c2690446
Pass the DAG to SDNode::dump to let it do more detailed dumps in some cases.
...
llvm-svn: 37413
2007-06-04 16:17:33 +00:00
Dan Gohman
92a7f3a65e
Resolve implicit alignment before computing the FoldingSet information so
...
that the CSE map always contains explicit alignment information. This allows
more loads to be CSE'd when there is a mix of explicit-alignment loads and
implicit-alignment loads.
Also, in SelectionDAG::FindModifiedNodeSlot, add the operands to the
FoldingSetNodeID before the load/store information instead of after, so
that it matches what is done elsewhere.
llvm-svn: 37411
2007-06-04 15:49:41 +00:00
Devang Patel
d609374ab3
Fix LLVM build on NetBSD. Patch by Neil Booth.
...
llvm-svn: 37410
2007-06-04 15:28:57 +00:00
Evan Cheng
312b723af2
Let IfConverter loose. Allow more aggressive subsumptions; reorder basic blocks to expose more ifcvt opportunities; code clean up and fixes.
...
llvm-svn: 37409
2007-06-04 06:47:22 +00:00
Evan Cheng
df75785594
Move ReplaceUsesOfBlockWith() out of BranchFolding into a MachineBasicBlock general facility.
...
llvm-svn: 37408
2007-06-04 06:44:01 +00:00
Devang Patel
bdd1aaef10
s/llvm::DominatorTreeBase::DomTreeNode/llvm::DomTreeNode/g
...
llvm-svn: 37407
2007-06-04 00:32:22 +00:00
Owen Anderson
0eca9aad10
Don't use the custom comparator where it's not necessary.
...
llvm-svn: 37406
2007-06-03 22:02:14 +00:00
Anton Korobeynikov
b781886de7
Add comments to fallsthrough cases. Also, this fixes PR1492
...
llvm-svn: 37405
2007-06-03 19:20:49 +00:00
Anton Korobeynikov
8c32c1114f
Check arguments & return types of main(). Abort in case of no match.
...
llvm-svn: 37404
2007-06-03 19:17:35 +00:00
Devang Patel
0e8aa7b69a
s/DominatorTreeBase::Node/DominatorTreeBase:DomTreeNode/g
...
llvm-svn: 37403
2007-06-03 06:26:14 +00:00