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

Reply via email to