https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94364
--- Comment #5 from Martin Liška <marxin at gcc dot gnu.org> --- With something like: diff --git a/benchspec/CPU/505.mcf_r/src/spec_qsort/spec_qsort.c b/benchspec/CPU/505.mcf_r/src/spec_qsort/spec_qsort.c index 05cad501..ad79ddae 100755 --- a/benchspec/CPU/505.mcf_r/src/spec_qsort/spec_qsort.c +++ b/benchspec/CPU/505.mcf_r/src/spec_qsort/spec_qsort.c @@ -112,6 +112,7 @@ med3(char *a, char *b, char *c, cmp_t *cmp) } void +__attribute__((optimize("-fno-strict-aliasing"))) spec_qsort(void *a, size_t n, size_t es, cmp_t *cmp) { char *pa, *pb, *pc, *pd, *pl, *pm, *pn; diff --git a/benchspec/CPU/505.mcf_r/src/spec_qsort/spec_qsort.h b/benchspec/CPU/505.mcf_r/src/spec_qsort/spec_qsort.h index 0519f867..c25a1159 100755 --- a/benchspec/CPU/505.mcf_r/src/spec_qsort/spec_qsort.h +++ b/benchspec/CPU/505.mcf_r/src/spec_qsort/spec_qsort.h @@ -6,5 +6,7 @@ #ifdef __cplusplus extern "C" #endif -void spec_qsort(void *array, size_t nitems, size_t size, int (*cmp)(const void*,const void*)); +void +__attribute__((optimize("-fno-strict-aliasing"))) +spec_qsort(void *array, size_t nitems, size_t size, int (*cmp)(const void*,const void*)); #endif and -Ofast -march=znver2 I get: 21.95% mcf_r_peak.gcc7 mcf_r_peak.gcc7-m64 [.] cost_compare 19.95% mcf_r_peak.gcc7 mcf_r_peak.gcc7-m64 [.] spec_qsort 19.63% mcf_r_peak.gcc7 mcf_r_peak.gcc7-m64 [.] primal_bea_mpp 14.20% mcf_r_peak.gcc7 mcf_r_peak.gcc7-m64 [.] replace_weaker_arc 9.17% mcf_r_peak.gcc7 mcf_r_peak.gcc7-m64 [.] arc_compare 8.47% mcf_r_peak.gcc7 mcf_r_peak.gcc7-m64 [.] price_out_impl 1.37% mcf_r_peak.gcc7 mcf_r_peak.gcc7-m64 [.] update_tree 0.97% mcf_r_peak.gcc7 mcf_r_peak.gcc7-m64 [.] switch_arcs.constprop.0 0.83% mcf_r_peak.gcc7 mcf_r_peak.gcc7-m64 [.] suspend_impl 0.69% mcf_r_peak.gcc7 mcf_r_peak.gcc7-m64 [.] primal_iminus