[PATCH] Vectorizing Global Structures - Take 2

Arnold Schwaighofer aschwaighofer at apple.com
Thu Feb 14 22:23:04 PST 2013


On Feb 14, 2013, at 11:49 PM, Arnold Schwaighofer <aschwaighofer at apple.com> wrote:
> 
>> In the case of pointer loops that iterate over your example type, it will properly discover that it overruns into the next field, and properly mark it as pointing-to that field as well.
> 
> 
> So for the following example it will conservatively say arrayidx and arrayidx2 alias?

may-alias to be precise. :)

> 
> %struct.anon = type { [256 x i64], i64, [256 x i64] }
> 
> define void @foo(i32 %x, i32 %y) {
>   %arrayidx = getelementptr inbounds %struct.anon* @Foo, i32 0, i32 0, i32 %x
>   %0 = store i64* %arrayidx, align 8
>   %arrayidx2 = getelementptr inbounds %struct.anon* @Foo, i32 0, i32 2, i32 %y
>   %1 = store i64* %arrayidx2, align 8
> }




More information about the llvm-commits mailing list