[PATCH, ARM] Misaligned access support for ARM Neon
Richard Guenther
richard.guenther@gmail.com
Thu Dec 3 16:57:00 GMT 2009
On Thu, Dec 3, 2009 at 4:09 PM, Plotnikov Dmitry <dplotnikov@ispras.ru> wrote:
>> Other failures are due to things like vectorizing *more* loops than
>> expected in several tests, and (as written before) missing parts in the
>> NEON support. I don't think there's anything which indicates actual
>> breakage.
>
> There seems to be a problem though: building libevas with
> this patch causes miscompile.
>
> Sometimes SLP pass somehow brokes data dependencies and causes
> "dirty = list_zeroed" initialization to be removed by DCE pass on rtl
> in the sample code below:
>
> #include <stdlib.h>
> #include <assert.h>
> struct list {
> int *head;
> int *tail;
> };
>
> typedef struct list list_t;
> static const list_t list_zeroed = { NULL, NULL };
>
> int seg(list_t *arg){
> if (arg->tail) {
> return 1;
> }
> return 0;
> }
>
> int main(int argc, char* argv[]){
> list_t dirty = list_zeroed;
> assert(seg(&dirty)==0);
> return 0;
> }
>
> We used GCC 4.5 snapshot from November 12, 2009 with options:
> "-ftree-vectorize -mfpu=neon -mfloat-abi=softfp -O2 -fno-inline"
>
> With -fno-tree-slp-vectorize option it works well.
That sounds more like an alias bug of either the vectorizer or
the alias-export code. Can you re-check with a more recent
snapshot and file a bugreport?
Thanks,
Richard.
More information about the Gcc-patches
mailing list