This patch series optimizes is_member_object_pointer trait
performance. The first patch implements __is_member_object_pointer
built-in trait. The second patch optimizes is_member_object_pointer
trait performance by using __is_member_object_pointer built-in trait
if available.

The performance improvement is shown in the following benchmark:

https://github.com/ken-matsui/gsoc23/blob/main/is_member_object_pointer_v.md#tue-sep-12-122433-am-pdt-2023

Time: -48.6199% +/- 2.7422%
Peak Memory Usage: -39.3192% +/- 0.00457374%
Total Memory Usage: -41.8478% +/- 0%

Ken Matsui (2):
  c++: Implement __is_member_object_pointer built-in trait
  libstdc++: Optimize is_member_object_pointer trait performance

 gcc/cp/constraint.cc                          |  3 ++
 gcc/cp/cp-trait.def                           |  1 +
 gcc/cp/semantics.cc                           |  4 +++
 gcc/testsuite/g++.dg/ext/has-builtin-1.C      |  3 ++
 .../g++.dg/ext/is_member_object_pointer.C     | 30 +++++++++++++++++++
 libstdc++-v3/include/std/type_traits          | 18 ++++++++++-
 6 files changed, 58 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/g++.dg/ext/is_member_object_pointer.C

-- 
2.42.0

Reply via email to