On Tue, 8 Oct 2019, Andre Vieira (lists) wrote:
> Hi Richard,
>
> As I mentioned in the IRC channel, I managed to get "most" of the regression
> testsuite working for x86_64 (avx512) and aarch64.
>
> On x86_64 I get a failure that I can't explain, was hoping you might be able
> to have a look with me:
> "PASS->FAIL: gcc.target/i386/vect-perm-odd-1.c execution test"
>
> vect-perm-odd-1.exe segfaults and when I gdb it seems to be the first
> iteration of the main loop. The tree dumps look alright, but I do notice the
> stack usage seems to change between --param vect-epilogue-nomask={0,1}.
So the issue is that we have
=> 0x0000000000400778 <+72>: vmovdqa64 %zmm1,-0x40(%rax)
but the memory accessed is not appropriately aligned. The vectorizer
sets DECL_USER_ALIGN on the stack local but somehow later it downs
it to 256:
Old value = 640
New value = 576
ensure_base_align (dr_info=0x526f788) at
/tmp/trunk/gcc/tree-vect-stmts.c:6294
6294 DECL_USER_ALIGN (base_decl) = 1;
(gdb) l
6289 if (decl_in_symtab_p (base_decl))
6290 symtab_node::get (base_decl)->increase_alignment
(align_base_to);
6291 else
6292 {
6293 SET_DECL_ALIGN (base_decl, align_base_to);
6294 DECL_USER_ALIGN (base_decl) = 1;
6295 }
this means vectorizing the epilogue modifies the DRs, in particular
the base alignment?
> Am I missing to update some field that may later lead to the amount of stack
> being used? I am confused, it could very well be that I am missing something
> obvious, I am not too familiar with x86's ISA. I will try to investigate
> further.
>
> This patch needs further clean-up and more comments (or comment updates), but
> I thought I'd share current state to see if you can help me unblock.
>
> Cheers,
> Andre
>
--
Richard Biener <[email protected]>
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 247165 (AG München)