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 <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Felix Imendörffer; HRB 247165 (AG München)