-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Description
I'm seeing segfaults in the test suite which appear to be coming from this section (specific the load from *fromi).
Lines 233 to 244 in 3ca1202
| { | |
| uint64_t *fromi = (uint64_t *)from; | |
| uint64_t *toi = (uint64_t *)to; | |
| while (next_condition >= 8) { | |
| uint64_t w = *fromi ^ 0x0a0a0a0a0a0a0a0aUL; | |
| if (haszero(w)) | |
| break; | |
| *toi++ = *fromi++; | |
| next_condition -= 8; | |
| } | |
| } |
It looks like my compiler (GCC 15.1.0) has vectorised that while loop and is using vmovdqa for that load:
=> 0x000000000047b937 <+823>: vmovdqa (%r11,%rcx,1),%ymm4
However that pointer is not aligned suitably for that:
(gdb) print $r11
$13 = 4914885
I suspect the pointer types here need to be replaced with their corresponding __attribute__((aligned(1))) types, and indeed this replacement allows those tests to complete.
(There's also a couple other occurrences of uint*_t in ALLOC_UAC blocks in that file that might need to be replaced with the corresponding _u type.)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels