This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[profile-stdlib][patch] Stdlib advisory tool implemetation


Note: This patch was originally sent on Aug 15th but failed, so send again.

Description:
This patch has implemented an tool to advise programmers to use
standard c++ library efficiently. The patch includes instrumentation
in standard c++ library, profiling runtime library and wrapper of
profile mode. The patch also includes modification in GCC driver to
turn on
tool with option -fprofile-stdlib. Current version contains four
diagnostics: HASHTABLE_TOO_SMALL, HASHTABLE_TOO_LARGE,
VECTOR_TOO_SMALL and VECTOR_TOO_LARGE.

The details can be referred to the design document of profile mode in
manual.
Changelog:
src/gcc/ChangeLog.profile-stdlib
2008-08-15 ?Lixia Liu ?<liulixia@purdue.edu>
? ?* gcc.c (main): Invoke external script when -fprofile-stdlib-use is
? ? ? ?enabled.
? ?* c-cppbuiltin.c (c_cpp_builtins): Enable -D_GLIBCXX_PROFILE when
? ? ? ?-fprofile-stdlib is on.
? ?* cp/g++spec.c (lang_specific_driver): Link profiling runtime library
? ? ? ?"libprofc++.a" when profiling is enabled.
? ?* opts.c (common_handle_option): Handle profiling options
? ?* common.opt: Add options for profile-stdlib-use and profile-stdlib
? ?* ChangLog.profile-stdlib: New file. Change log for directory src/gcc.

src/libstdc++/ChangeLog.profile-stdlib
2008-08-15 ?Lixia Liu ?<liulixia@purdue.edu>
? ?* configure: Add directory libprofc++ for profiling runtime library.
? ?* Makefile.in: Add directory libprofc++.
? ?* Makefile.am: Ditto.
? ?* acinclude.m4: Ditto.
? ?* libprofc++/Makefile.in: New makefile.
? ?* libprofc++/Makefile.am: New makefile.
? ?* libprofc++/profiler.h: New public header file for runtime library.
? ?* libprofc++/profiler_trace.h: New file.
? ?* libprofc++/profiler_state.h: New file.
? ?* libprofc++/profiler_node.h: New file.
? ?* libprofc++/profiler_container_size.h: New file.
? ?* libprofc++/profiler_trace.cc: New file.
? ?* libprofc++/profiler_state.cc: New file.
? ?* libprofc++/profiler_node.cc: New file.
? ?* libprofc++/profiler_container_size.cc: New file.
? ?* libprofc++/profiler_vector_size.cc: New file.
? ?* libprofc++/profiler_hashtable_size.cc: New file.
? ?* src/Makefile.in: Add new library.
? ?* src/Makefile.am: Add new library.
? ?* include/Makefile.in: Add new instrumented header files.
? ?* include/Makefile.am: Add new instrumented header files.
? ?* include/tr1_impl/hashtable (_Hashtable): Expose insert_return_type.
? ?* include/std/vector: Include profile/vector guided by _GLIBCXX_PROFILE.
? ?* include/std/deque: Likewise.
? ?* include/std/list: Likewise.
? ?* include/std/map: Likewise.
? ?* include/std/unordered_map: Likewise.
? ?* include/std/bitset: Likewise.
? ?* include/std/set: Likewise.
? ?* include/std/unordered_set: Likewise.
? ?* include/profile/base.h: New file.
? ?* include/profile/set.h: New file for instrumented container set.
? ?* include/profile/unordered_set: Likewise.
? ?* include/profile/vector: Likewise.
? ?* include/profile/deque: Likewise.
? ?* include/profile/map.h: Likewise.
? ?* include/profile/multimap.h: Likewise.
? ?* include/profile/hashtable.h: Likewise.
? ?* include/bits/c++config: Define profile namespace.
? ?* include/backward/hash_map: New file for instrumented hash_map
? ?* include/backward/hash_set: Likewise.
? ?* testsuite/Makefile.in: Add check-profile.
? ?* testsuite/Makefile.am: Ditto.
? ?* testsuite/23_containers/vector/resize/moveable.cc: Aware profile mode.
? ?* testsuite/31_profile/hash_map.cc: New testcase for profile mode.
? ?* testsuite/31_profile/vector.cc: ?New testcase for profile mode.
? ?* testsuite/31_profile/unordered.cc: New testcase for profile mode.
? ?* ChangeLog.profile-stdlib: New changelog for branch profile-stdlib.

Patch: see the attachment.

Test result:
? ? ? ? ? ? ? ?=== libstdc++ Summary ===

# of expected passes ? ? ? ? ? ?5247
# of unexpected failures ? ? ? ?9
# of expected failures ? ? ? ? ?79
# of unsupported tests ? ? ? ? ?335

Is it okay to submit?

Thanks.

Lixia Liu < liulixia@purdue.edu>

Attachment: patch_profile.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]