2011-05-04 Sriraman Tallam <tmsriram@google.com>
commit93b9683d59106b6f6620cc4369bf251c09d13800
authortmsriram <tmsriram@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 4 May 2011 22:15:16 +0000 (4 22:15 +0000)
committertmsriram <tmsriram@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 4 May 2011 22:15:16 +0000 (4 22:15 +0000)
tree6e5d3dffea9063042ffd2ecb86e9ceafa78b1952
parentd625402031145e9cfe1dd3f6b0140d7adfb57ed1
2011-05-04  Sriraman Tallam  <tmsriram@google.com>

* tree-pass.h (pass_tree_convert_builtin_dispatch): New pass.
(pass_ipa_multiversion_dispatch): New pass.
* builtin-types.def (BT_PTR_FN_INT): New pointer type.
(BT_FN_INT_PTR_FN_INT_PTR_PTR_VAR): New function type for __builtin_dispatch.
* builtins.def (BUILT_IN_DISPATCH): New builtin to
support multi-version calls.
* mversn-dispatch.c: New file.
* timevar.def (TV_MVERSN_DISPATCH): New time var.
* common.opt (fclone-hot-version-paths): New flag.
* Makefile.in (mversn-dispatch.o): New rule.
* passes.c (init_optimization_passes): Add the new
multi-version and dispatch passes to the pass list.
* params.def (PARAM_NUMBER_OF_MVERSN_CLONES): Define.
(PARAM_MVERSN_CLONE_CGRAPH_DEPTH): Define.
* doc/invoke.texi (mversn-clone-depth): Document.
(num-mversn-clones): Document.
(fclone-hot-version-paths): Document.
* c-family/c-common.c (handle_version_selector_attribute): New function.
(c_common_attribute_table): New attribute "version_selector".
* testsuite/gcc.dg/mversn7.c: New test.
* testsuite/gcc.dg/mversn4.c: New test.
* testsuite/gcc.dg/mversn4.h: New test.
* testsuite/gcc.dg/mversn4a.c: New test.
* testsuite/gcc.dg/torture/mversn1.c: New test.
* testsuite/gcc.dg/mversn2.c: New test.
* testsuite/gcc.dg/mversn6.c: New test.
* testsuite/gcc.dg/mversn3.c: New test.
* testsuite/g++.dg/mversn8.C: New test.
* testsuite/g++.dg/mversn10a.C: New test.
* testsuite/g++.dg/mversn14a.C: New test.
* testsuite/g++.dg/tree-prof/mversn13.C: New test.
* testsuite/g++.dg/tree-prof/mversn15.C: New test.
* testsuite/g++.dg/tree-prof/mversn15a.C: New test.
* testsuite/g++.dg/mversn9.C: New test.
* testsuite/g++.dg/mversn10.C: New test.
* testsuite/g++.dg/mversn12.C: New test.
* testsuite/g++.dg/mversn14.C: New test.
* testsuite/g++.dg/mversn16.C: New test.
* testsuite/g++.dg/torture/mversn11.C: New test.
* testsuite/g++.dg/torture/mversn5.C: New test.
* testsuite/g++.dg/torture/mversn5.h: New test.
* testsuite/g++.dg/torture/mversn5a.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/google@173398 138bc75d-0d04-0410-961f-82ee72b054a4
37 files changed:
main/gcc/ChangeLog.google-main
main/gcc/Makefile.in
main/gcc/builtin-types.def
main/gcc/builtins.def
main/gcc/c-family/ChangeLog.google-main
main/gcc/c-family/c-common.c
main/gcc/common.opt
main/gcc/doc/invoke.texi
main/gcc/mversn-dispatch.c [new file with mode: 0644]
main/gcc/params.def
main/gcc/passes.c
main/gcc/testsuite/ChangeLog.google-main
main/gcc/testsuite/g++.dg/mversn10.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/mversn10a.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/mversn12.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/mversn14.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/mversn14a.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/mversn16.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/mversn8.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/mversn9.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/torture/mversn11.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/torture/mversn5.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/torture/mversn5.h [new file with mode: 0644]
main/gcc/testsuite/g++.dg/torture/mversn5a.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/tree-prof/mversn13.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/tree-prof/mversn15.C [new file with mode: 0644]
main/gcc/testsuite/g++.dg/tree-prof/mversn15a.C [new file with mode: 0644]
main/gcc/testsuite/gcc.dg/mversn2.c [new file with mode: 0644]
main/gcc/testsuite/gcc.dg/mversn3.c [new file with mode: 0644]
main/gcc/testsuite/gcc.dg/mversn4.c [new file with mode: 0644]
main/gcc/testsuite/gcc.dg/mversn4.h [new file with mode: 0644]
main/gcc/testsuite/gcc.dg/mversn4a.c [new file with mode: 0644]
main/gcc/testsuite/gcc.dg/mversn6.c [new file with mode: 0644]
main/gcc/testsuite/gcc.dg/mversn7.c [new file with mode: 0644]
main/gcc/testsuite/gcc.dg/torture/mversn1.c [new file with mode: 0644]
main/gcc/timevar.def
main/gcc/tree-pass.h