https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83201
--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> --- Likely invalid. spec_qsort is full of alias violations. We sort typedef struct basket { arc_t *a; cost_t cost; cost_t abs_cost; LONG number; } BASKET; and spec_qsort does stuff like if (n < 7) { for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es) for (pl = pm; pl > (char *)a && cmp(pl - es, pl) > 0; pl -= es) swap(pl, pl - es); return; with #define swap(a, b) \ if (swaptype_long == 0) { \ long t = *(long *)(a); \ *(long *)(a) = *(long *)(b); \ *(long *)(b) = t; \ } else if (swaptype_int == 0) { \ int t = *(int *)(a); \ *(int *)(a) = *(int *)(b); \ *(int *)(b) = t; \ } else \ swapfunc((char *)a, (char *)b, es, swaptype_long, swaptype_int) eh... (no, swapfunc isn't any better). Anybody up to reporting this to SPEC?