- Sep 12, 2007
-
-
Evan Cheng authored
same time. Do not mark the "smaller" def as dead. llvm-svn: 41871
-
- Sep 11, 2007
-
-
Dale Johannesen authored
access to bits). Use them in place of float and double interfaces where appropriate. First bits of x86 long double constants handling (untested, probably does not work). llvm-svn: 41858
-
Bill Wendling authored
information for EH. llvm-svn: 41852
-
Duncan Sands authored
init_trampoline. There is now only one trampoline intrinsic. llvm-svn: 41841
-
Bill Wendling authored
that global stub instead of doing the ".set" thingy we were doing before. llvm-svn: 41838
-
Evan Cheng authored
llvm-svn: 41809
-
- Sep 10, 2007
-
-
Chris Lattner authored
cmpl %eax, %ecx setae %al movzbl %al, %eax instead of: cmpl %eax, %ecx setb %al xorb $1, %al movzbl %al, %eax when using logical not of a C comparison. llvm-svn: 41807
-
Chris Lattner authored
2. Lower calls to fabs and friends to FABS nodes etc unless the function has internal linkage. Before we wouldn't lower if it had a definition, which is incorrect. This allows us to compile: define double @fabs(double %f) { %tmp2 = tail call double @fabs( double %f ) ret double %tmp2 } into: _fabs: fabs f1, f1 blr llvm-svn: 41805
-
- Sep 08, 2007
-
-
Dale Johannesen authored
llvm-svn: 41786
-
- Sep 07, 2007
-
-
Rafael Espindola authored
The x86-64 ABI states that objects passed on the stack have 8 byte alignment. Implement that. llvm-svn: 41768
-
Anton Korobeynikov authored
Split eh.select / eh.typeid.for intrinsics into i32/i64 versions. This is needed, because they just "mark" register liveins and we let frontend solve type issue, not lowering code :) llvm-svn: 41763
-
Owen Anderson authored
Patch by Sterling Stein! llvm-svn: 41758
-
- Sep 06, 2007
-
-
David Greene authored
Constify to catch bugs. llvm-svn: 41751
-
Dale Johannesen authored
Use APFloat in UpgradeParser and AsmParser. Change all references to ConstantFP to use the APFloat interface rather than double. Remove the ConstantFP double interfaces. Use APFloat functions for constant folding arithmetic and comparisons. (There are still way too many places APFloat is just a wrapper around host float/double, but we're getting there.) llvm-svn: 41747
-
Anton Korobeynikov authored
Also, fix a case, when target doesn't have weak symbols supported. llvm-svn: 41746
-
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
-