- Apr 23, 2008
-
-
Anton Korobeynikov authored
llvm-svn: 50164
-
Anton Korobeynikov authored
llvm-svn: 50163
-
Anton Korobeynikov authored
llvm-svn: 50162
-
Anton Korobeynikov authored
Eastimate required stack alignment early, so we can decide, whether we will need frame pointer or not llvm-svn: 50161
-
Anton Korobeynikov authored
llvm-svn: 50160
-
Anton Korobeynikov authored
llvm-svn: 50159
-
Anton Korobeynikov authored
llvm-svn: 50158
-
Anton Korobeynikov authored
llvm-svn: 50157
-
Anton Korobeynikov authored
llvm-svn: 50156
-
Anton Korobeynikov authored
llvm-svn: 50155
-
Anton Korobeynikov authored
llvm-svn: 50154
-
Anton Korobeynikov authored
llvm-svn: 50153
-
Anton Korobeynikov authored
llvm-svn: 50152
-
Dan Gohman authored
llvm-svn: 50151
-
Bill Wendling authored
have public constructors. This should fix PR2246. llvm-svn: 50145
-
Chris Lattner authored
callees. llvm-svn: 50142
-
Chris Lattner authored
fix read after free bug (PR2238). llvm-svn: 50141
-
Chris Lattner authored
would turn every getresult instruction into undef. This helps with rdar://5778210 llvm-svn: 50140
-
Chris Lattner authored
llvm-svn: 50139
-
Chris Lattner authored
logic with vmcore. llvm-svn: 50138
-
Chris Lattner authored
llvm-svn: 50137
-
Chris Lattner authored
of -std-compile-opts and is now failing because other passes are generating IR that looks different to input of loop rotate. Devang, please introduce a testcase that only runs loop rotate. llvm-svn: 50136
-
Chris Lattner authored
llvm-svn: 50135
-
Chris Lattner authored
values. Clarify that it is impossible to 'multiply return' a struct with zero elements. llvm-svn: 50131
-
Chris Lattner authored
llvm-svn: 50130
-
Chris Lattner authored
call/invoke or undef. llvm-svn: 50129
-
Chris Lattner authored
llvm-svn: 50128
-
Chris Lattner authored
llvm-svn: 50125
-
Dale Johannesen authored
llvm-svn: 50123
-
Dale Johannesen authored
type of a different size. llvm-svn: 50121
-
Evan Cheng authored
Don't do: "(X & 4) >> 1 == 2 --> (X & 4) == 4" if there are more than one uses of the shift result. llvm-svn: 50118
-
- Apr 22, 2008
-
-
Chris Lattner authored
where a comparison has a phi input and that phi is a constant. For example, stuff like: Threading edge through bool from 'bb2149' to 'bb2231' with cost: 1, across block: bb2237: ; preds = %bb2231, %bb2149 %tmp2328.rle = phi i32 [ %tmp2232, %bb2231 ], [ %tmp2232439, %bb2149 ] ; <i32> [#uses=2] %done.0 = phi i32 [ %done.2, %bb2231 ], [ 0, %bb2149 ] ; <i32> [#uses=1] %tmp2239 = icmp eq i32 %done.0, 0 ; <i1> [#uses=1] br i1 %tmp2239, label %bb2231, label %bb2327 or bb38.i298: ; preds = %bb33.i295, %bb1693 %tmp39.i296.rle = phi %struct.ibox* [ null, %bb1693 ], [ %tmp39.i296.rle1109, %bb33.i295 ] ; <%struct.ibox*> [#uses=2] %minspan.1.i291.reg2mem.1 = phi i32 [ 32000, %bb1693 ], [ %minspan.0.i288, %bb33.i295 ] ; <i32> [#uses=1] %tmp40.i297 = icmp eq %struct.ibox* %tmp39.i296.rle, null ; <i1> [#uses=1] br i1 %tmp40.i297, label %implfeeds.exit311, label %bb43.i301 This triggers thousands of times in spec. llvm-svn: 50110
-
Chris Lattner authored
llvm-svn: 50106
-
Owen Anderson authored
llvm-svn: 50097
-
Chris Lattner authored
br (and X, phi(Y, Z, false)), label L1, label L2 This triggers once on 252.eon and 6 times on 176.gcc. Blocks in question often look like this: bb262: ; preds = %bb261, %bb248 %iftmp.251.0 = phi i1 [ true, %bb261 ], [ false, %bb248 ] ; <i1> [#uses=4] %tmp270 = icmp eq %struct.rtx_def* %tmp.0.i, null ; <i1> [#uses=1] %bothcond = or i1 %iftmp.251.0, %tmp270 ; <i1> [#uses=1] br i1 %bothcond, label %bb288, label %bb273 In this case, it is clear that it doesn't matter if tmp.0.i is null when coming from bb261. When coming from bb248, it is all that matters. Another random example: check_asm_operands.exit: ; preds = %check_asm_operands.exit.thr_comm, %bb30.i, %bb12.i, %bb6.i413 %tmp.0.i420 = phi i1 [ true, %bb6.i413 ], [ true, %bb12.i ], [ true, %bb30.i ], [ false, %check_asm_operands.exit.thr_comm ; <i1> [#uses=1] call void @llvm.stackrestore( i8* %savedstack ) nounwind %tmp4389 = icmp eq i32 %added_sets_1.0, 0 ; <i1> [#uses=1] %tmp4394 = icmp eq i32 %added_sets_2.0, 0 ; <i1> [#uses=1] %bothcond80 = and i1 %tmp4389, %tmp4394 ; <i1> [#uses=1] %bothcond81 = and i1 %bothcond80, %tmp.0.i420 ; <i1> [#uses=1] br i1 %bothcond81, label %bb4398, label %bb4397 Here is the case from 252.eon: bb290.i.i: ; preds = %bb23.i57.i.i, %bb8.i39.i.i, %bb100.i.i, %bb100.i.i, %bb85.i.i110 %myEOF.1.i.i = phi i1 [ true, %bb100.i.i ], [ true, %bb100.i.i ], [ true, %bb85.i.i110 ], [ true, %bb8.i39.i.i ], [ false, %bb23.i57.i.i ] ; <i1> [#uses=2] %i.4.i.i = phi i32 [ %i.1.i.i, %bb85.i.i110 ], [ %i.0.i.i, %bb100.i.i ], [ %i.0.i.i, %bb100.i.i ], [ %i.3.i.i, %bb8.i39.i.i ], [ %i.3.i.i, %bb23.i57.i.i ] ; <i32> [#uses=3] %tmp292.i.i = load i8* %tmp16.i.i100, align 1 ; <i8> [#uses=1] %tmp293.not.i.i = icmp ne i8 %tmp292.i.i, 0 ; <i1> [#uses=1] %bothcond.i.i = and i1 %tmp293.not.i.i, %myEOF.1.i.i ; <i1> [#uses=1] br i1 %bothcond.i.i, label %bb202.i.i, label %bb301.i.i Factoring out 3 common predecessors. On the path from any blocks other than bb23.i57.i.i, the load and compare are dead. llvm-svn: 50096
-
Evan Cheng authored
llvm-svn: 50095
-
Chris Lattner authored
llvm-svn: 50094
-
Chris Lattner authored
llvm-svn: 50093
-
Nick Lewycky authored
llvm-svn: 50088
-
Nick Lewycky authored
llvm-svn: 50087
-