- Nov 10, 2009
-
-
Duncan Sands authored
just throw them away. llvm-svn: 86678
-
Victor Hernandez authored
Update computeArraySize() to use ComputeMultiple() to determine the array size associated with a malloc; also extend PerformHeapAllocSRoA() to check if the optimized malloc's arg had its highest bit set, so that it is safe for ComputeMultiple() to look through sext instructions while determining the optimized malloc's array size llvm-svn: 86676
-
Victor Hernandez authored
Add ComputeMultiple() analysis function that recursively determines if a Value V is a multiple of unsigned Base llvm-svn: 86675
-
Chris Lattner authored
of a computation. This fixes some infinite loops when dealing with TD that has no native types. llvm-svn: 86670
-
Nick Lewycky authored
llvm-svn: 86668
-
Nick Lewycky authored
memory just like a store" with bug fixed (partial-overwrite.ll is the regression test). llvm-svn: 86667
-
Chris Lattner authored
llvm-svn: 86666
-
Oscar Fuentes authored
llvm-svn: 86656
-
Bruno Cardoso Lopes authored
llvm-svn: 86651
-
Chris Lattner authored
llvm-svn: 86648
-
Chris Lattner authored
just one level deep. On the testcase we go from getting this: F1: ; preds = %T2 %F = and i1 true, %cond ; <i1> [#uses=1] br i1 %F, label %X, label %Y to a fully threaded: F1: ; preds = %T2 br label %Y This changes gets us to the point where we're forming (too many) switch instructions on doug's strswitch testcase. llvm-svn: 86646
-
Chris Lattner authored
llvm-svn: 86645
-
Dan Gohman authored
llvm-svn: 86642
-
Dan Gohman authored
llvm-svn: 86641
-
Chris Lattner authored
llvm-svn: 86639
-
Chris Lattner authored
except that the result may not be a constant. Switch jump threading to use it so that it gets things like (X & 0) -> 0, which occur when phi preds are deleted and the remaining phi pred was a zero. llvm-svn: 86637
-
Jeffrey Yasskin authored
This patch forbids implicit conversion of DenseMap::const_iterator to DenseMap::iterator which was possible because DenseMapIterator inherited (publicly) from DenseMapConstIterator. Conversion the other way around is now allowed as one may expect. The template DenseMapConstIterator is removed and the template parameter IsConst which specifies whether the iterator is constant is added to DenseMapIterator. Actually IsConst parameter is not necessary since the constness can be determined from KeyT but this is not relevant to the fix and can be addressed later. Patch by Victor Zverovich! llvm-svn: 86636
-
Chris Lattner authored
llvm-svn: 86635
-
David Goodwin authored
llvm-svn: 86634
-
Daniel Dunbar authored
Also, Stringrefify some more MemoryBuffer functions, and add two performance FIXMEs. llvm-svn: 86630
-
David Goodwin authored
Allow targets to specify register classes whose member registers should not be renamed to break anti-dependencies. llvm-svn: 86628
-
Chris Lattner authored
simplification, this handles the foldable fcmp x,x cases among many others. llvm-svn: 86627
-
Dan Gohman authored
and ConstantFoldCompareInstOperands. llvm-svn: 86626
-
Chris Lattner authored
llvm-svn: 86625
-
Chris Lattner authored
Simplify[IF]Cmp pieces. Add some predicates to CmpInst to determine whether a predicate is fp or int. llvm-svn: 86624
-
Jim Grosbach authored
not necessary. llvm-svn: 86621
-
Chris Lattner authored
individual operands instead of taking a temporary array llvm-svn: 86619
-
Chris Lattner authored
llvm-svn: 86616
-
- Nov 09, 2009
-
-
Chris Lattner authored
takes decimated instructions and applies identities to them. This is pretty minimal at this point, but I plan to pull some instcombine logic out into these and similar routines. llvm-svn: 86613
-
Jeffrey Yasskin authored
llvm-svn: 86606
-
Jim Grosbach authored
llvm-svn: 86604
-
Chris Lattner authored
simplifies instruction users of PHIs when the phi is eliminated. This will be moved to transforms/utils after some other refactoring. llvm-svn: 86603
-
Jim Grosbach authored
llvm-svn: 86602
-
Dan Gohman authored
llvm-svn: 86601
-
Mike Stump authored
llvm-svn: 86600
-
Bill Wendling authored
llvm-svn: 86592
-
Bill Wendling authored
was generated. This caused code like this: ## The asm code for the function .section __TEXT,__const .align 2 lJTI11_0: LJTI11_0: .long LBB11_16 .long LBB11_4 .long LBB11_5 .long LBB11_6 .long LBB11_7 .long LBB11_8 .long LBB11_9 .long LBB11_10 .long LBB11_11 .long LBB11_12 .long LBB11_13 .long LBB11_14 Leh_func_end11: ## <---now in the wrong section! The `Leh_func_end11' would then end up in the wrong section, causing the resulting EH frame information to be wrong: __ZL11CheckRightsjPKcbRbRP6NSData.eh: .set Lset500eh,Leh_frame_end11-Leh_frame_begin11 .long Lset500eh ; Length of Frame Information Entry Leh_frame_begin11: .long Leh_frame_begin11-Leh_frame_common .long Leh_func_begin11-. .set Lset501eh,Leh_func_end11-Leh_func_begin11 .long Lset501eh ; FDE address range `Lset501eh' is now something huge instead of the real value. The X86 back-end generates the jump table after the EH information is emitted. Do the same here. llvm-svn: 86588
-
Dan Gohman authored
instructions. This makes CodeGen dumps significantly less noisy. Example before: BL <ga:@bar>, %R0<imp-def>, %R1<imp-def,dead>, %R2<imp-def,dead>, %R3<imp-def,dead>, %R12<imp-def,dead>, %LR<imp-def,dead>, %D0<imp-def,dead>, %D1<imp-def,dead>, %D2<imp-def,dead>, %D3<imp-def,dead>, %D4<imp-def,dead>, %D5<imp-def,dead>, %D6<imp-def,dead>, %D7<imp-def,dead>, %D16<imp-def,dead>, %D17<imp-def,dead>, %D18<imp-def,dead>, %D19<imp-def,dead>, %D20<imp-def,dead>, %D21<imp-def,dead>, %D22<imp-def,dead>, %D23<imp-def,dead>, %D24<imp-def,dead>, %D25<imp-def,dead>, %D26<imp-def,dead>, %D27<imp-def,dead>, %D28<imp-def,dead>, %D29<imp-def,dead>, %D30<imp-def,dead>, %D31<imp-def,dead>, %CPSR<imp-def,dead>, %FPSCR<imp-def,dead> Same example after: BL <ga:@bar>, %R0<imp-def>, %R1<imp-def,dead>, %LR<imp-def,dead>, %CPSR<imp-def,dead>, ... llvm-svn: 86583
-
Dan Gohman authored
GVN to be more aggressive. Patch by Hans Wennborg! (with a comment added by me) llvm-svn: 86582
-
David Goodwin authored
Fix dependencies added to model memory aliasing for post-RA scheduling. The dependencies were overly conservative for memory access that are known not to alias. llvm-svn: 86580
-