| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 51191
|
|
|
|
| |
llvm-svn: 51181
|
|
|
|
| |
llvm-svn: 51180
|
|
|
|
| |
llvm-svn: 51178
|
|
|
|
| |
llvm-svn: 51176
|
|
|
|
|
|
|
|
|
|
| |
is bitcast to return a floating point value. The result of the instruction may
not be used by the program afterwards, and LLVM will happily remove all
instructions except the call. But, on some platforms, if a value is returned as
a floating point, it may need to be removed from the stack (like x87). Thus, we
can't get rid of the bitcast even if there isn't a use of the value.
llvm-svn: 51134
|
|
|
|
|
|
| |
Patch by Matthijs Kooijman!
llvm-svn: 51114
|
|
|
|
| |
llvm-svn: 51063
|
|
|
|
| |
llvm-svn: 51025
|
|
|
|
| |
llvm-svn: 50951
|
|
|
|
|
|
|
| |
~x < ~y --> y < x
-x == -y --> x == y
llvm-svn: 50882
|
|
|
|
|
|
|
| |
also need to be checked for memory modifying instructions before we
can sink them. THis fixes the second half of PR2297.
llvm-svn: 50860
|
|
|
|
|
|
|
|
|
|
|
|
| |
delete the first store in:
store x -> p
load p
store y -> p
This is for PR2297.
llvm-svn: 50859
|
|
|
|
| |
llvm-svn: 50793
|
|
|
|
| |
llvm-svn: 50771
|
|
|
|
|
|
| |
ComputeMaskedBits.
llvm-svn: 50692
|
|
|
|
|
|
|
|
|
| |
DemoteRegToStack doesn't work with MRVs yet, because it relies on the
ability to load/store things.
This fixes PR2285.
llvm-svn: 50667
|
|
|
|
| |
llvm-svn: 50591
|
|
|
|
| |
llvm-svn: 50586
|
|
|
|
| |
llvm-svn: 50560
|
|
|
|
| |
llvm-svn: 50548
|
|
|
|
|
|
| |
fixes the 254.gap regression on x86 and the 403.gcc regression on x86-64.
llvm-svn: 50537
|
|
|
|
| |
llvm-svn: 50519
|
|
|
|
| |
llvm-svn: 50518
|
|
|
|
| |
llvm-svn: 50517
|
|
|
|
| |
llvm-svn: 50516
|
|
|
|
| |
llvm-svn: 50474
|
|
|
|
|
|
| |
to instcombine.
llvm-svn: 50472
|
|
|
|
|
|
| |
a fine job.
llvm-svn: 50470
|
|
|
|
| |
llvm-svn: 50469
|
|
|
|
|
|
|
|
|
| |
applied because
we were checking for it in the wrong order. This caused a miscompilation because the
return slot optimization assumes that the call it is dealing with is NOT a memcpy.
llvm-svn: 50444
|
|
|
|
|
|
| |
This fixes the second half of PR2262
llvm-svn: 50430
|
|
|
|
| |
llvm-svn: 50429
|
|
|
|
| |
llvm-svn: 50428
|
|
|
|
| |
llvm-svn: 50390
|
|
|
|
| |
llvm-svn: 50370
|
|
|
|
|
|
|
|
|
|
|
| |
ComputeMaskedBits knows about cttz, ctlz, and ctpop. Teach
SelectionDAG's ComputeMaskedBits what InstCombine's knows
about SRem. And teach them both some things about high bits
in Mul, UDiv, URem, and Sub. This allows instcombine and
dagcombine to eliminate sign-extension operations in
several new cases.
llvm-svn: 50358
|
|
|
|
|
|
|
|
| |
multiple return values.
Bill, please pull this into Tak.
llvm-svn: 50332
|
|
|
|
|
|
|
|
|
| |
appropriate alignment. This fixes a miscompilation of 252.eon on
x86-64 (rdar://5891920).
Bill, please pull this into Tak.
llvm-svn: 50308
|
|
|
|
|
|
| |
r48047 r48084 r48085 r48086 r48088 r48096 r48099 r48109 and r48123.
llvm-svn: 50265
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
goes back to the block, e.g.:
Threading edge through bool from 'bb37.us.thread3829' to 'bb37.us' with cost: 1, across block:
bb37.us: ; preds = %bb37.us.thread3829, %bb37.us, %bb33
%D1361.1.us = phi i32 [ %tmp36, %bb33 ], [ %D1361.1.us, %bb37.us ], [ 0, %bb37.us.thread3829 ] ; <i32> [#uses=2]
%tmp39.us = icmp eq i32 %D1361.1.us, 0 ; <i1> [#uses=1]
br i1 %tmp39.us, label %bb37.us, label %bb42.us
llvm-svn: 50251
|
|
|
|
|
|
|
| |
Fix said code to handle merging return instructions together correctly
when handling multiple return values.
llvm-svn: 50199
|
|
|
|
|
|
|
| |
would turn every getresult instruction into undef. This helps with
rdar://5778210
llvm-svn: 50140
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 50128
|
|
|
|
| |
llvm-svn: 50125
|
|
|
|
| |
llvm-svn: 50123
|
|
|
|
|
|
| |
uses of the shift result.
llvm-svn: 50118
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 50106
|