OSDN Git Service

Bring from lto-branch:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 28 Mar 2009 11:10:06 +0000 (11:10 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 28 Mar 2009 11:10:06 +0000 (11:10 +0000)
2008-09-03  Doug Kwan  <dougkwan@google.com>

* cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
enums instead of reason strings.
* cgraph.c (cgraph_create_edge): Same.
(cgraph_inline_failed_string): New function.
* cgraph.h (cgraph_inline_failed_t): New enum type.
(cgraph_inline_failed_string): New prototype.
(struct cgraph_edge): Change type of INLINED_FAILED from constant
char pointer to cgraph_inline_failed_t.
(cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
(cgraph_default_inline_p): Ditto.
* gcc/cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
to cgraph_inline_failed_t pointer.
* cif-code.def: New file.
* ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
reason string.
(cgraph_check_inline_limits): Change type of REASON to pointer to
cgraph_inline_failed_t.  Replace reason strings with enums.
(cgraph_default_inline_p): Ditto.
(cgraph_recursive_inlining_p): Ditto.
(update_caller_keys): Change type of FAILED_REASON to
cgraph_inline_failed_t.
(cgraph_set_inline_failed): Change type of REASON to pointer to
cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
convert enums to strings for text output.
(cgraph_decide_inlining_of_small_function): Change FAILED_REASON
to be of type cgraph_inline_failed_t.  Replace reason strings with
enums.  Call cgraph_inline_failed_string to covert enums
to strings for text output.
(cgraph_decide_inlining): Replace reason strings with enums.
(cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
for text output.
* tree-inline.c (expand_call_inline): Change type of REASON
to cgraph_inline_failed_t.  Replace reason strings with enums.
Call cgraph_inline_failed_string for text output.
* Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
(cgraph.o): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145177 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cif-code.def [new file with mode: 0644]

diff --git a/gcc/cif-code.def b/gcc/cif-code.def
new file mode 100644 (file)
index 0000000..48dbabf
--- /dev/null
@@ -0,0 +1,86 @@
+/* This file contains the definitions of the cgraph_inline_failed_t
+   enums used in GCC.
+
+   Copyright (C) 2008 Free Software Foundation, Inc.
+   Contributed by Doug Kwan <dougkwan@google.com>
+
+This file is part of GCC.
+
+GCC is free software you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* The format of this file is
+   DEFCIFCODE(code, string).
+
+   Where symbol is the enumeration name without the ``''.
+   The argument STRING is a explain the failure.  Except for OK,
+   which is a NULL pointer.  */
+
+/* Inlining successful.  This must be the first code.  */
+DEFCIFCODE(OK , NULL)
+
+/* Inlining failed for an unspecified reason.  */
+DEFCIFCODE(UNSPECIFIED , "")
+
+/* Function has not be considered for inlining.  This is the code for
+   functions that have not been rejected for inlining yet.  */
+DEFCIFCODE(FUNCTION_NOT_CONSIDERED,
+          N_("function not considered for inlining"))
+
+/* Inlining failed owing to unavailable function body.  */
+DEFCIFCODE(BODY_NOT_AVAILABLE, N_("function body not available"))
+
+DEFCIFCODE(REDEFINED_EXTERN_INLINE,
+           N_("redefined extern inline functions are not considered for "
+              "inlining"))
+
+/* Function is not inlinable.  */
+DEFCIFCODE(FUNCTION_NOT_INLINABLE, N_("function not inlinable"))
+
+/* Function is not an inlining candidate.  */
+DEFCIFCODE(FUNCTION_NOT_INLINE_CANDIDATE, N_("function not inline candidate"))
+
+/* Inlining failed because of various limit parameters.  */
+DEFCIFCODE(LARGE_FUNCTION_GROWTH_LIMIT,
+          N_("--param large-function-growth limit reached"))
+DEFCIFCODE(LARGE_STACK_FRAME_GROWTH_LIMIT,
+          N_("--param large-stack-frame-growth limit reached"))
+DEFCIFCODE(MAX_INLINE_INSNS_SINGLE_LIMIT,
+          N_("--param max-inline-insns-single limit reached"))
+DEFCIFCODE(MAX_INLINE_INSNS_AUTO_LIMIT,
+          N_("--param max-inline-insns-auto limit reached"))
+DEFCIFCODE(INLINE_UNIT_GROWTH_LIMIT,
+          N_("--param inline-unit-growth limit reached")) 
+
+/* Recursive inlining.  */
+DEFCIFCODE(RECURSIVE_INLINING, N_("recursive inlining"))
+
+/* Call is unlikely.  */
+DEFCIFCODE(UNLIKELY_CALL, N_("call is unlikely and code size would grow"))
+
+/* Function is not declared as an inline.  */
+DEFCIFCODE(NOT_DECLARED_INLINED,
+          N_("function not declared inline and code size would grow"))
+
+/* Inlining suppressed due to size optimization.  */
+DEFCIFCODE(OPTIMIZING_FOR_SIZE,
+          N_("optimizing for size and code size would grow"))
+
+/* Inlining failed because of mismatched options or arguments.  */
+DEFCIFCODE(TARGET_OPTION_MISMATCH, N_("target specific option mismatch"))
+DEFCIFCODE(MISMATCHED_ARGUMENTS, N_("mismatched arguments"))
+
+/* Call was originally indirect.  */
+DEFCIFCODE(ORIGINALLY_INDIRECT_CALL,
+          N_("originally indirect function call not considered for inlining"))