- Sep 06, 2007
-
-
David Greene authored
Add instruction dump output. This helps find bugs. llvm-svn: 41744
-
David Greene authored
Pluggable coalescers inplementation. llvm-svn: 41743
-
Evan Cheng authored
llvm-svn: 41739
-
- Sep 05, 2007
-
-
Evan Cheng authored
Use pool allocator for all the VNInfo's to improve memory access locality. This reduces coalescing time on siod Mac OS X PPC by 35%. Also remove the back ptr from VNInfo to LiveInterval and other tweaks. llvm-svn: 41729
-
Duncan Sands authored
may be the same as the first label for the following invoke. Remove a micro-optimization which was wrong in this case. llvm-svn: 41720
-
Duncan Sands authored
labels are generated bracketing each call (not just invokes). This is used to generate entries in the exception table required by the C++ personality. However it gets in the way of tail-merging. This patch solves the problem by no longer placing labels around ordinary calls. Instead we generate entries in the exception table that cover every instruction in the function that wasn't covered by an invoke range (the range given by the labels around the invoke). As an optimization, such entries are only generated for parts of the function that contain a call, since for the moment those are the only instructions that can throw an exception [1]. As a happy consequence, we now get a smaller exception table, since the same region can cover many calls. While there, I also implemented folding of invoke ranges - successive ranges are merged when safe to do so. Finally, if a selector contains only a cleanup, there's a special shorthand for it - place a 0 in the call-site entry. I implemented this while there. As a result, the exception table output (excluding filters) is now optimal - it cannot be made smaller [2]. The problem with throw filters is that folding them optimally is hard, and the benefit of folding them is minimal. [1] I tested that having trapping instructions (eg divide by zero) in such a region doesn't cause trouble. [2] It could be made smaller with the help of higher layers, eg by having branch folding reorder basic blocks ending in invokes with the same landing pad so they follow each other. I don't know if this is worth doing. llvm-svn: 41718
-
- Sep 04, 2007
-
-
Evan Cheng authored
llvm-svn: 41712
-
- Sep 03, 2007
-
-
Anton Korobeynikov authored
llvm-svn: 41676
-
Anton Korobeynikov authored
Emit proper "secrel" directive, where possible. This fixes invalid asm syntax of debug info on mingw32. Also, cleanup some stuff. llvm-svn: 41675
-
- Sep 01, 2007
-
-
Evan Cheng authored
llvm-svn: 41669
-
Dale Johannesen authored
Implement some constant folding in SelectionDAG and DAGCombiner using APFloat. Remove double versions of constructor and getValue from ConstantFPSDNode. llvm-svn: 41664
-
- Aug 31, 2007
-
-
Evan Cheng authored
llvm-svn: 41650
-
Dale Johannesen authored
llvm-svn: 41645
-
Evan Cheng authored
llvm-svn: 41641
-
Evan Cheng authored
Use std::map instead of a (potentially very sparse) array to track val# defined by copy from the other live range. Minor compile time win when number of val# is large. llvm-svn: 41640
-
Dale Johannesen authored
Use APFloat interfaces for more references, mostly of ConstantFPSDNode. llvm-svn: 41632
-
- Aug 30, 2007
-
-
Evan Cheng authored
llvm-svn: 41598
-
Dale Johannesen authored
Add APFloat interfaces to ConstantFP, SelectionDAG. Fix integer bit in double->APFloat conversion. Convert LegalizeDAG to use APFloat interface in ConstantFPSDNode uses. llvm-svn: 41587
-
Anton Korobeynikov authored
llvm-svn: 41584
-
- Aug 29, 2007
-
-
Evan Cheng authored
Changes related modules so VNInfo's are not copied. This decrease copy coalescing time by 45% and overall compilation time by 10% on siod. llvm-svn: 41579
-
Anton Korobeynikov authored
llvm-svn: 41578
-
- Aug 28, 2007
-
-
Dan Gohman authored
scheduling. llvm-svn: 41556
-
Evan Cheng authored
1. Eliminate the costly live interval "swapping". 2. Change ValueNumberInfo container from SmallVector to std::vector. The former performs slowly when the vector size is very large. llvm-svn: 41536
-
- Aug 27, 2007
-
-
Dan Gohman authored
where both pointers have non-zero offsets. llvm-svn: 41491
-
Dan Gohman authored
to not alias each other, it can be translated as an llvm.memcpy. llvm-svn: 41489
-
Duncan Sands authored
gcc exception handling: if an exception unwinds through an invoke, then execution must branch to the invoke's unwind target. We previously tried to enforce this by appending a cleanup action to every selector, however this does not always work correctly due to an optimization in the C++ unwinding runtime: if only cleanups would be run while unwinding an exception, then the program just terminates without actually executing the cleanups, as invoke semantics would require. I was hoping this wouldn't be a problem, but in fact it turns out to be the cause of all the remaining failures in the LLVM testsuite (these also fail with -enable-correct-eh-support, so turning on -enable-eh didn't make things worse!). Instead we need to append a full-blown catch-all to the end of each selector. The correct way of doing this depends on the personality function, i.e. it is language dependent, so can only be done by gcc. Thus this patch which generalizes the eh.selector intrinsic so that it can handle all possible kinds of action table entries (before it didn't accomodate cleanups): now 0 indicates a cleanup, and filters have to be specified using the number of type infos plus one rather than the number of type infos. Related gcc patches will cause Ada to pass a cleanup (0) to force the selector to always fire, while C++ will use a C++ catch-all (null). llvm-svn: 41484
-
Dan Gohman authored
llvm-svn: 41482
-
- Aug 26, 2007
-
-
Dale Johannesen authored
llvm-svn: 41409
-
Dale Johannesen authored
over uses in DAGCombiner. Fix interfaces to work with APFloats. llvm-svn: 41407
-
- Aug 25, 2007
-
-
Chris Lattner authored
know how to handle them. This fixes test/CodeGen/Generic/asm-large-immediate.ll llvm-svn: 41388
-
Chris Lattner authored
llvm-svn: 41386
-
Bill Wendling authored
.set Lset0,___gxx_personality_v0-. .long Lset0 on some targets. Make it so! llvm-svn: 41385
-
Chris Lattner authored
changing the interface to allow for future changes. llvm-svn: 41384
-
Dale Johannesen authored
This means backing out the preceding change to Constants.cpp, alas. llvm-svn: 41378
-
- Aug 24, 2007
-
-
Dale Johannesen authored
llvm-svn: 41372
-
- Aug 23, 2007
-
-
Anton Korobeynikov authored
llvm-svn: 41316
-
- Aug 22, 2007
-
-
Andrew Lenharth authored
llvm-svn: 41286
-
- Aug 20, 2007
-
-
Dan Gohman authored
scheduler implementations. llvm-svn: 41191
-
Rafael Espindola authored
*) The needed information is propagated to the DAG *) The X86-64 backend detects it and aborts llvm-svn: 41179
-
- Aug 18, 2007
-
-
Evan Cheng authored
llvm-svn: 41163
-