| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 41725
|
| |
|
|
|
|
| |
Studio 2k5 was getting confused and was unable to compile it. Suspected compiler error.
llvm-svn: 41721
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 41717
|
| |
|
|
| |
llvm-svn: 41713
|
| |
|
|
| |
llvm-svn: 41712
|
| |
|
|
| |
llvm-svn: 41711
|
| |
|
|
| |
llvm-svn: 41706
|
| |
|
|
| |
llvm-svn: 41700
|
| |
|
|
|
|
| |
GLIBCXX_DEBUG issues.
llvm-svn: 41697
|
| |
|
|
| |
llvm-svn: 41680
|
| |
|
|
| |
llvm-svn: 41676
|
| |
|
|
|
|
|
|
| |
syntax of debug info on mingw32. Also, cleanup
some stuff.
llvm-svn: 41675
|
| |
|
|
| |
llvm-svn: 41669
|
| |
|
|
| |
llvm-svn: 41668
|
| |
|
|
| |
llvm-svn: 41665
|
| |
|
|
|
|
|
|
| |
Implement some constant folding in SelectionDAG and
DAGCombiner using APFloat. Remove double versions
of constructor and getValue from ConstantFPSDNode.
llvm-svn: 41664
|
| |
|
|
| |
llvm-svn: 41650
|
| |
|
|
| |
llvm-svn: 41645
|
| |
|
|
| |
llvm-svn: 41643
|
| |
|
|
|
|
|
| |
This is mandated table 3.1 at
http://www.x86-64.org/documentation/abi.pdf
llvm-svn: 41642
|
| |
|
|
| |
llvm-svn: 41641
|
| |
|
|
|
|
| |
defined by copy from the other live range. Minor compile time win when number of val# is large.
llvm-svn: 41640
|
| |
|
|
|
|
|
| |
Use APFloat interfaces for more references, mostly
of ConstantFPSDNode.
llvm-svn: 41632
|
| |
|
|
| |
llvm-svn: 41629
|
| |
|
|
| |
llvm-svn: 41628
|
| |
|
|
|
|
| |
still necessary to model PUWLSH bits more clearly.
llvm-svn: 41627
|
| |
|
|
|
|
| |
multiply instruction of V5TE.
llvm-svn: 41626
|
| |
|
|
|
|
| |
stub.
llvm-svn: 41625
|
| |
|
|
|
|
| |
rematerialized loads to be folded into their uses.
llvm-svn: 41599
|
| |
|
|
| |
llvm-svn: 41598
|
| |
|
|
|
|
| |
store from / to stack slots.
llvm-svn: 41597
|
| |
|
|
| |
llvm-svn: 41595
|
| |
|
|
| |
llvm-svn: 41590
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 41584
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 41578
|
| |
|
|
|
|
|
|
| |
in the trampoline lowering. Lookup the jump and
mov opcodes for the trampoline rather than hard
coding them.
llvm-svn: 41577
|
| |
|
|
| |
llvm-svn: 41565
|
| |
|
|
|
|
| |
scheduling.
llvm-svn: 41556
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
Changed the stack frame layout, StackGrowsUp fits better to Mips strange stack.
Stack offset calculation bug fixed!
llvm-svn: 41529
|
| |
|
|
|
|
|
| |
Added comments about new stack allocation.
Expand SelectCC for i32 results
llvm-svn: 41527
|
| |
|
|
|
|
| |
Comments for Mips directives added.
llvm-svn: 41526
|
| |
|
|
| |
llvm-svn: 41525
|
| |
|
|
| |
llvm-svn: 41522
|
| |
|
|
| |
llvm-svn: 41516
|
| |
|
|
| |
llvm-svn: 41506
|