This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, ARM] Misaligned access support for ARM Neon


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]