forked from OSchip/llvm-project
parent
e28886a913
commit
643dce1146
|
@ -631,6 +631,25 @@ implementations of ceil/floor/rint.
|
||||||
|
|
||||||
//===---------------------------------------------------------------------===//
|
//===---------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
This GCC bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34043
|
||||||
|
contains a testcase that compiles down to:
|
||||||
|
|
||||||
|
%struct.XMM128 = type { <4 x float> }
|
||||||
|
..
|
||||||
|
%src = alloca %struct.XMM128
|
||||||
|
..
|
||||||
|
%tmp6263 = bitcast %struct.XMM128* %src to <2 x i64>*
|
||||||
|
%tmp65 = getelementptr %struct.XMM128* %src, i32 0, i32 0
|
||||||
|
store <2 x i64> %tmp5899, <2 x i64>* %tmp6263, align 16
|
||||||
|
%tmp66 = load <4 x float>* %tmp65, align 16
|
||||||
|
%tmp71 = add <4 x float> %tmp66, %tmp66
|
||||||
|
|
||||||
|
If the mid-level optimizer turned the bitcast of pointer + store of tmp5899
|
||||||
|
into a bitcast of the vector value and a store to the pointer, then the
|
||||||
|
store->load could be easily removed.
|
||||||
|
|
||||||
|
//===---------------------------------------------------------------------===//
|
||||||
|
|
||||||
Consider:
|
Consider:
|
||||||
|
|
||||||
int test() {
|
int test() {
|
||||||
|
|
Loading…
Reference in New Issue