Message ID | 1a53e1ef-3fec-d1c7-4c9d-42fe4542da44@suse.cz |
---|---|
State | New |
Headers | show |
Series | Remove not needed __builtin_expect due to malloc predictor. | expand |
On 10/08/18 12:32 +0200, Martin Liška wrote: >Hi. > >After we introduced new non-NULL malloc predictor, we can remove these __builtin_expects. >Predictors will change in following way: > >Before: > >Predictions for bb 5 > first match heuristics: 10.00% > combined heuristics: 10.00% > __builtin_expect heuristics of edge 5->6: 10.00% > call heuristics of edge 5->6 (ignored): 33.00% > loop exit heuristics of edge 5->9 (ignored): 5.50% > >After: > >Predictions for bb 5 > first match heuristics: 0.04% > combined heuristics: 0.04% > pointer (on trees) heuristics of edge 5->6 (ignored): 30.00% > malloc returned non-NULL heuristics of edge 5->6: 0.04% > call heuristics of edge 5->6 (ignored): 33.00% > loop exit heuristics of edge 5->9 (ignored): 5.50% > > >Maybe there are similar allocation-related expects, but I haven't found them. >Ready after it survives regression tests? OK for trunk - thanks! >Martin > >libstdc++-v3/ChangeLog: > >2018-08-10 Martin Liska <mliska@suse.cz> > > * libsupc++/new_op.cc (new): Remove __builtin_expect as malloc > predictor can handle that. > * libsupc++/new_opa.cc: Likewise. > * libsupc++/new_opnt.cc (new): Likewise. >--- > libstdc++-v3/libsupc++/new_op.cc | 2 +- > libstdc++-v3/libsupc++/new_opa.cc | 2 +- > libstdc++-v3/libsupc++/new_opnt.cc | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > >diff --git a/libstdc++-v3/libsupc++/new_op.cc b/libstdc++-v3/libsupc++/new_op.cc >index 3a1e38d9df7..3caa0bab2ea 100644 >--- a/libstdc++-v3/libsupc++/new_op.cc >+++ b/libstdc++-v3/libsupc++/new_op.cc >@@ -47,7 +47,7 @@ operator new (std::size_t sz) _GLIBCXX_THROW (std::bad_alloc) > if (sz == 0) > sz = 1; > >- while (__builtin_expect ((p = malloc (sz)) == 0, false)) >+ while ((p = malloc (sz)) == 0) > { > new_handler handler = std::get_new_handler (); > if (! handler) >diff --git a/libstdc++-v3/libsupc++/new_opa.cc b/libstdc++-v3/libsupc++/new_opa.cc >index 68eac5b8ceb..a27ff843ca1 100644 >--- a/libstdc++-v3/libsupc++/new_opa.cc >+++ b/libstdc++-v3/libsupc++/new_opa.cc >@@ -126,7 +126,7 @@ operator new (std::size_t sz, std::align_val_t al) > #endif > > using __gnu_cxx::aligned_alloc; >- while (__builtin_expect ((p = aligned_alloc (align, sz)) == 0, false)) >+ while ((p = aligned_alloc (align, sz)) == 0) > { > new_handler handler = std::get_new_handler (); > if (! handler) >diff --git a/libstdc++-v3/libsupc++/new_opnt.cc b/libstdc++-v3/libsupc++/new_opnt.cc >index a2dc33ad4d3..faab44e66c2 100644 >--- a/libstdc++-v3/libsupc++/new_opnt.cc >+++ b/libstdc++-v3/libsupc++/new_opnt.cc >@@ -40,7 +40,7 @@ operator new (std::size_t sz, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT > if (sz == 0) > sz = 1; > >- while (__builtin_expect ((p = malloc (sz)) == 0, false)) >+ while ((p = malloc (sz)) == 0) > { > new_handler handler = std::get_new_handler (); > if (! handler) >
diff --git a/libstdc++-v3/libsupc++/new_op.cc b/libstdc++-v3/libsupc++/new_op.cc index 3a1e38d9df7..3caa0bab2ea 100644 --- a/libstdc++-v3/libsupc++/new_op.cc +++ b/libstdc++-v3/libsupc++/new_op.cc @@ -47,7 +47,7 @@ operator new (std::size_t sz) _GLIBCXX_THROW (std::bad_alloc) if (sz == 0) sz = 1; - while (__builtin_expect ((p = malloc (sz)) == 0, false)) + while ((p = malloc (sz)) == 0) { new_handler handler = std::get_new_handler (); if (! handler) diff --git a/libstdc++-v3/libsupc++/new_opa.cc b/libstdc++-v3/libsupc++/new_opa.cc index 68eac5b8ceb..a27ff843ca1 100644 --- a/libstdc++-v3/libsupc++/new_opa.cc +++ b/libstdc++-v3/libsupc++/new_opa.cc @@ -126,7 +126,7 @@ operator new (std::size_t sz, std::align_val_t al) #endif using __gnu_cxx::aligned_alloc; - while (__builtin_expect ((p = aligned_alloc (align, sz)) == 0, false)) + while ((p = aligned_alloc (align, sz)) == 0) { new_handler handler = std::get_new_handler (); if (! handler) diff --git a/libstdc++-v3/libsupc++/new_opnt.cc b/libstdc++-v3/libsupc++/new_opnt.cc index a2dc33ad4d3..faab44e66c2 100644 --- a/libstdc++-v3/libsupc++/new_opnt.cc +++ b/libstdc++-v3/libsupc++/new_opnt.cc @@ -40,7 +40,7 @@ operator new (std::size_t sz, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT if (sz == 0) sz = 1; - while (__builtin_expect ((p = malloc (sz)) == 0, false)) + while ((p = malloc (sz)) == 0) { new_handler handler = std::get_new_handler (); if (! handler)