Commit b7551676 by Doug Kwan Committed by Jan Hubicka

Bring from lto-branch:

	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.

From-SVN: r145177
parent 61a05df1
/* 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"))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment