osprey-gcc-4.2.0/gcc/cp/pt.c File Reference

#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "obstack.h"
#include "tree.h"
#include "pointer-set.h"
#include "flags.h"
#include "c-common.h"
#include "cp-tree.h"
#include "cp-objcp-common.h"
#include "tree-inline.h"
#include "decl.h"
#include "output.h"
#include "except.h"
#include "toplev.h"
#include "rtl.h"
#include "timevar.h"
#include "tree-iterator.h"
#include "vecprim.h"
#include "gt-cp-pt.h"

Include dependency graph for pt.c:

Go to the source code of this file.

Data Types

type  template_parm_data
type  pair_fn_data

Defines

#define UNIFY_ALLOW_NONE   0
#define UNIFY_ALLOW_MORE_CV_QUAL   1
#define UNIFY_ALLOW_LESS_CV_QUAL   2
#define UNIFY_ALLOW_DERIVED   4
#define UNIFY_ALLOW_INTEGER   8
#define UNIFY_ALLOW_OUTER_LEVEL   16
#define UNIFY_ALLOW_OUTER_MORE_CV_QUAL   32
#define UNIFY_ALLOW_OUTER_LESS_CV_QUAL   64
#define ccat(C)   obstack_1grow (&scratch_obstack, (C));
#define cat(S)   obstack_grow (&scratch_obstack, (S), strlen (S))
#define RECUR(t)   tsubst_copy_asm_operands (t, args, complain, in_decl)
#define RECUR(NODE)
#define RECUR(NODE)

Typedefs

typedef int(* tree_fn_t )(tree, void *)

Functions/Subroutines

static GTY (())
static void pop_access_scope (tree t)
tree finish_member_template_decl (tree decl)
int template_class_depth (tree type)
static int inline_needs_template_parms (tree decl)
static void push_inline_template_parms_recursive (tree parmlist, int levels)
void maybe_begin_member_template_processing (tree decl)
void maybe_end_member_template_processing (void)
static tree add_to_template_args (tree args, tree extra_args)
static tree add_outermost_template_args (tree args, tree extra_args)
tree get_innermost_template_args (tree args, int n)
void begin_template_parm_list (void)
static bool check_specialization_scope (void)
bool begin_specialization (void)
void end_specialization (void)
void reset_specialization (void)
static void note_template_header (int specialization)
void begin_explicit_instantiation (void)
void end_explicit_instantiation (void)
static bool check_specialization_namespace (tree tmpl)
static void check_explicit_instantiation_namespace (tree spec)
tree maybe_process_partial_specialization (tree type)
static bool optimize_specialization_lookup_p (tree tmpl)
static tree retrieve_specialization (tree tmpl, tree args, bool class_specializations_p)
static tree retrieve_local_specialization (tree tmpl)
int is_specialization_of (tree decl, tree tmpl)
bool is_specialization_of_friend (tree decl, tree friend)
static tree register_specialization (tree spec, tree tmpl, tree args, bool is_friend)
bool reregister_specialization (tree spec, tree tmpl, tree new_spec)
static int eq_local_specializations (const void *p1, const void *p2)
static hashval_t hash_local_specialization (const void *p1)
static void register_local_specialization (tree spec, tree tmpl)
bool explicit_class_specialization_p (tree type)
void print_candidates (tree fns)
static tree determine_specialization (tree template_id, tree decl, tree *targs_out, int need_member_template, int template_count, tmpl_spec_kind tsk)
static tree copy_default_args_to_explicit_spec_1 (tree spec_types, tree tmpl_types)
static void copy_default_args_to_explicit_spec (tree decl)
tree check_explicit_specialization (tree declarator, tree decl, int template_count, int flags)
int comp_template_parms (tree parms1, tree parms2)
void check_template_shadow (tree decl)
static tree build_template_parm_index (int index, int level, int orig_level, tree decl, tree type)
static tree reduce_template_parm_level (tree index, tree type, int levels)
tree process_template_parm (tree list, tree parm, bool is_non_type)
tree end_template_parm_list (tree parms)
void end_template_decl (void)
static tree current_template_args (void)
static tree build_template_decl (tree decl, tree parms, bool member_template_p)
static int mark_template_parm (tree t, void *data)
static tree process_partial_specialization (tree decl)
static void check_default_tmpl_args (tree decl, tree parms, int is_primary, int is_partial)
static int template_parm_this_level_p (tree t, void *data)
tree push_template_decl_real (tree decl, bool is_friend)
tree push_template_decl (tree decl)
bool redeclare_class_template (tree type, tree parms)
tree fold_non_dependent_expr (tree expr)
static tree fold_decl_constant_value (tree expr)
static tree convert_nontype_argument_function (tree type, tree expr)
static tree convert_nontype_argument (tree type, tree expr)
static int coerce_template_template_parms (tree parm_parms, tree arg_parms, tsubst_flags_t complain, tree in_decl, tree outer_args)
static tree convert_template_argument (tree parm, tree arg, tree args, tsubst_flags_t complain, int i, tree in_decl)
static tree coerce_template_parms (tree parms, tree args, tree in_decl, tsubst_flags_t complain, bool require_all_args, bool use_default_args)
static int template_args_equal (tree ot, tree nt)
int comp_template_args (tree oldargs, tree newargs)
static char * mangle_class_name_for_template (const char *name, tree parms, tree arglist)
static tree classtype_mangled_name (tree t)
static void add_pending_template (tree d)
tree lookup_template_function (tree fns, tree arglist)
tree maybe_get_template_decl_from_type_decl (tree decl)
tree lookup_template_class (tree d1, tree arglist, tree in_decl, tree context, int entering_scope, tsubst_flags_t complain)
static tree for_each_template_parm_r (tree *tp, int *walk_subtrees, void *d)
static int for_each_template_parm (tree t, tree_fn_t fn, void *data, struct pointer_set_t *visited)
int uses_template_parms (tree t)
int uses_template_parms_level (tree t, int level)
static int push_tinst_level (tree d)
static void pop_tinst_level (void)
static void reopen_tinst_level (tree level)
static tree tsubst_friend_function (tree decl, tree args)
static tree tsubst_friend_class (tree friend_tmpl, tree args)
static int can_complete_type_without_circularity (tree type)
tree instantiate_class_template (tree type)
static tree tsubst_template_arg (tree t, tree args, tsubst_flags_t complain, tree in_decl)
static tree tsubst_template_args (tree t, tree args, tsubst_flags_t complain, tree in_decl)
static tree tsubst_template_parms (tree parms, tree args, tsubst_flags_t complain)
static tree tsubst_aggr_type (tree t, tree args, tsubst_flags_t complain, tree in_decl, int entering_scope)
tree tsubst_default_argument (tree fn, tree type, tree arg)
static void tsubst_default_arguments (tree fn)
static tree tsubst_decl (tree t, tree args, tsubst_flags_t complain)
static tree tsubst_arg_types (tree arg_types, tree args, tsubst_flags_t complain, tree in_decl)
static tree tsubst_function_type (tree t, tree args, tsubst_flags_t complain, tree in_decl)
static tree tsubst_exception_specification (tree fntype, tree args, tsubst_flags_t complain, tree in_decl)
static tree tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl)
static tree tsubst_baselink (tree baselink, tree object_type, tree args, tsubst_flags_t complain, tree in_decl)
static tree tsubst_qualified_id (tree qualified_id, tree args, tsubst_flags_t complain, tree in_decl, bool done, bool address_p)
static tree tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
static tree tsubst_omp_clauses (tree clauses, tree args, tsubst_flags_t complain, tree in_decl)
static tree tsubst_copy_asm_operands (tree t, tree args, tsubst_flags_t complain, tree in_decl)
static tree tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl, bool integral_constant_expression_p)
static tree tsubst_non_call_postfix_expression (tree t, tree args, tsubst_flags_t complain, tree in_decl)
tree tsubst_copy_and_build (tree t, tree args, tsubst_flags_t complain, tree in_decl, bool function_p, bool integral_constant_expression_p)
static bool check_instantiated_args (tree tmpl, tree args, tsubst_flags_t complain)
tree instantiate_template (tree tmpl, tree targ_ptr, tsubst_flags_t complain)
int fn_type_unification (tree fn, tree explicit_targs, tree targs, tree args, tree return_type, unification_kind_t strict, int flags)
static int maybe_adjust_types_for_deduction (unification_kind_t strict, tree *parm, tree *arg)
static int type_unification_real (tree tparms, tree targs, tree xparms, tree xargs, int subr, unification_kind_t strict, int flags)
static int resolve_overloaded_unification (tree tparms, tree targs, tree parm, tree arg, unification_kind_t strict, int sub_strict)
static int try_one_overload (tree tparms, tree orig_targs, tree targs, tree parm, tree arg, unification_kind_t strict, int sub_strict, bool addr_p)
static tree try_class_unification (tree tparms, tree targs, tree parm, tree arg)
static tree get_template_base (tree tparms, tree targs, tree parm, tree arg)
static int template_decl_level (tree decl)
static int check_cv_quals_for_unify (int strict, tree arg, tree parm)
static int unify (tree tparms, tree targs, tree parm, tree arg, int strict)
static void mark_definable (tree decl)
void mark_decl_instantiated (tree result, int extern_p)
int more_specialized_fn (tree pat1, tree pat2, int len)
static int more_specialized_class (tree pat1, tree pat2)
static tree get_bindings (tree fn, tree decl, tree explicit_args, bool check_rettype)
static tree get_class_bindings (tree tparms, tree spec_args, tree args)
tree most_specialized_instantiation (tree templates)
tree most_general_template (tree decl)
static tree most_specialized_class (tree type, tree tmpl)
void do_decl_instantiation (tree decl, tree storage)
static void mark_class_instantiated (tree t, int extern_p)
static void bt_instantiate_type_proc (binding_entry entry, void *data)
static void instantiate_class_member (tree decl, int extern_p)
void do_type_instantiation (tree t, tree storage, tsubst_flags_t complain)
static void regenerate_decl_from_template (tree decl, tree tmpl)
tree template_for_substitution (tree decl)
tree instantiate_decl (tree d, int defer_ok, bool expl_inst_class_mem_p)
void instantiate_pending_templates (int retries)
static tree tsubst_initializer_list (tree t, tree argvec)
static void set_current_access_from_decl (tree decl)
static void tsubst_enum (tree tag, tree newtag, tree args)
tree get_mostly_instantiated_function_type (tree decl)
int problematic_instantiation_changed (void)
void record_last_problematic_instantiation (void)
tree current_instantiation (void)
static int invalid_nontype_parm_type_p (tree type, tsubst_flags_t complain)
static bool dependent_type_p_r (tree type)
bool dependent_type_p (tree type)
static bool dependent_scope_ref_p (tree expression, bool criterion(tree))
bool value_dependent_expression_p (tree expression)
bool type_dependent_expression_p (tree expression)
bool any_type_dependent_arguments_p (tree args)
static bool dependent_template_arg_p (tree arg)
bool any_dependent_template_arguments_p (tree args)
bool dependent_template_p (tree tmpl)
bool dependent_template_id_p (tree tmpl, tree args)
tree resolve_typename_type (tree type, bool only_current_p)
tree build_non_dependent_expr (tree expr)
tree build_non_dependent_args (tree args)

Variables

static int tinst_depth
int max_tinst_depth
static int tinst_level_tick
static int last_template_error_tick


Define Documentation

#define cat ( S   )     obstack_grow (&scratch_obstack, (S), strlen (S))

#define ccat (  )     obstack_1grow (&scratch_obstack, (C));

#define RECUR ( NODE   ) 

Value:

tsubst_copy_and_build (NODE, args, complain, in_decl,   \
       /*function_p=*/false,      \
       integral_constant_expression_p)

#define RECUR ( NODE   ) 

Value:

tsubst_expr ((NODE), args, complain, in_decl, \
         integral_constant_expression_p)

#define RECUR (  )     tsubst_copy_asm_operands (t, args, complain, in_decl)

#define UNIFY_ALLOW_DERIVED   4

#define UNIFY_ALLOW_INTEGER   8

#define UNIFY_ALLOW_LESS_CV_QUAL   2

#define UNIFY_ALLOW_MORE_CV_QUAL   1

#define UNIFY_ALLOW_NONE   0

#define UNIFY_ALLOW_OUTER_LESS_CV_QUAL   64

#define UNIFY_ALLOW_OUTER_LEVEL   16

#define UNIFY_ALLOW_OUTER_MORE_CV_QUAL   32


Typedef Documentation

typedef int(* tree_fn_t)(tree, void *)

Definition at line 56 of file pt.c.


Function Documentation

static tree add_outermost_template_args ( tree  args,
tree  extra_args 
) [static]

Definition at line 460 of file pt.c.

References add_to_template_args(), gcc_assert, TMPL_ARGS_DEPTH, and TREE_VEC_LENGTH.

static void add_pending_template ( tree  d  )  [static]

static tree add_to_template_args ( tree  args,
tree  extra_args 
) [static]

Definition at line 433 of file pt.c.

References i, make_tree_vec, SET_TMPL_ARGS_LEVEL, TMPL_ARGS_DEPTH, and TMPL_ARGS_LEVEL.

bool any_dependent_template_arguments_p ( tree  args  ) 

bool any_type_dependent_arguments_p ( tree  args  ) 

void begin_explicit_instantiation ( void   ) 

Definition at line 625 of file pt.c.

References gcc_assert, and processing_explicit_instantiation.

bool begin_specialization ( void   ) 

void begin_template_parm_list ( void   ) 

static void bt_instantiate_type_proc ( binding_entry  entry,
void data 
) [static]

tree build_non_dependent_args ( tree  args  ) 

tree build_non_dependent_expr ( tree  expr  ) 

static tree build_template_decl ( tree  decl,
tree  parms,
bool  member_template_p 
) [static]

static tree build_template_parm_index ( int  index,
int  level,
int  orig_level,
tree  decl,
tree  type 
) [static]

static int can_complete_type_without_circularity ( tree  type  )  [static]

static int check_cv_quals_for_unify ( int  strict,
tree  arg,
tree  parm 
) [static]

static void check_default_tmpl_args ( tree  decl,
tree  parms,
int  is_primary,
int  is_partial 
) [static]

static void check_explicit_instantiation_namespace ( tree  spec  )  [static]

tree check_explicit_specialization ( tree  declarator,
tree  decl,
int  template_count,
int  flags 
)

Definition at line 1822 of file pt.c.

References abort, CLASSTYPE_DESTRUCTORS, CLASSTYPE_FIRST_CONVERSION_SLOT, CLASSTYPE_METHOD_VEC, CLASSTYPE_TEMPLATE_INSTANTIATION, clone_function_decl(), constructor_name_p(), copy_default_args_to_explicit_spec(), CP_DECL_CONTEXT, ctor_identifier, current_lang_name, current_namespace, current_tmpl_spec_kind(), DECL_ARGUMENTS, DECL_CLASS_CONTEXT, DECL_CONSTRUCTOR_P, DECL_CONTEXT, DECL_CONV_FN_P, DECL_DESTRUCTOR_P, DECL_INITIAL, DECL_NAME, DECL_NAMESPACE_SCOPE_P, DECL_NONSTATIC_MEMBER_FUNCTION_P, DECL_SOURCE_LOCATION, DECL_STATIC_FUNCTION_P, DECL_TEMPLATE_INFO, DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT, determine_specialization(), dtor_identifier, error(), error_mark_node, gcc_assert, gcc_unreachable, i, IDENTIFIER_NAMESPACE_VALUE, idx, instantiate_template(), is_associated_namespace(), is_friend(), is_overloaded_fn(), lang_name_c, last_function_parms, lookup_fnfields_1(), lookup_qualified_name(), lookup_template_function(), make_tree_vec, most_general_template(), my_friendly_assert, NULL_TREE, ovl_cons(), OVL_CURRENT, OVL_NEXT, pedantic, pedwarn(), processing_specialization, register_specialization(), revert_static_member_fn(), SET_DECL_IMPLICIT_INSTANTIATION, SET_DECL_TEMPLATE_SPECIALIZATION, tf_error, TMPL_ARGS_DEPTH, TMPL_PARMS_DEPTH, TREE_CHAIN, TREE_CODE, tree_cons, TREE_OPERAND, TREE_PRIVATE, TREE_PROTECTED, TREE_PURPOSE, TREE_TYPE, TREE_VEC_ELT, TREE_VEC_LENGTH, tsk_excessive_parms, tsk_expl_inst, tsk_expl_spec, tsk_insufficient_parms, tsk_invalid_expl_inst, tsk_invalid_member_spec, tsk_none, tsk_template, TYPE_ARG_TYPES, TYPE_BEING_DEFINED, TYPE_HAS_CONSTRUCTOR, TYPE_HAS_DESTRUCTOR, uses_template_parms(), VEC, VEC_index, and VEC_iterate.

static bool check_instantiated_args ( tree  tmpl,
tree  args,
tsubst_flags_t  complain 
) [static]

static bool check_specialization_namespace ( tree  tmpl  )  [static]

static bool check_specialization_scope ( void   )  [static]

Definition at line 546 of file pt.c.

References current_scope(), current_template_parms, error(), and TREE_CODE.

void check_template_shadow ( tree  decl  ) 

static tree classtype_mangled_name ( tree  t  )  [static]

static tree coerce_template_parms ( tree  parms,
tree  args,
tree  in_decl,
tsubst_flags_t  complain,
bool  require_all_args,
bool  use_default_args 
) [static]

static int coerce_template_template_parms ( tree  parm_parms,
tree  arg_parms,
tsubst_flags_t  complain,
tree  in_decl,
tree  outer_args 
) [static]

int comp_template_args ( tree  oldargs,
tree  newargs 
)

Definition at line 4253 of file pt.c.

References i, template_args_equal(), TREE_VEC_ELT, and TREE_VEC_LENGTH.

int comp_template_parms ( tree  parms1,
tree  parms2 
)

static tree convert_nontype_argument ( tree  type,
tree  expr 
) [static]

static tree convert_nontype_argument_function ( tree  type,
tree  expr 
) [static]

static tree convert_template_argument ( tree  parm,
tree  arg,
tree  args,
tsubst_flags_t  complain,
int  i,
tree  in_decl 
) [static]

static void copy_default_args_to_explicit_spec ( tree  decl  )  [static]

static tree copy_default_args_to_explicit_spec_1 ( tree  spec_types,
tree  tmpl_types 
) [static]

tree current_instantiation ( void   ) 

Definition at line 12647 of file pt.c.

static tree current_template_args ( void   )  [static]

static bool dependent_scope_ref_p ( tree  expression,
bool   criteriontree 
) [static]

static bool dependent_template_arg_p ( tree  arg  )  [static]

bool dependent_template_id_p ( tree  tmpl,
tree  args 
)

bool dependent_template_p ( tree  tmpl  ) 

bool dependent_type_p ( tree  type  ) 

static bool dependent_type_p_r ( tree  type  )  [static]

static tree determine_specialization ( tree  template_id,
tree  decl,
tree targs_out,
int  need_member_template,
int  template_count,
tmpl_spec_kind  tsk 
) [static]

void do_decl_instantiation ( tree  decl,
tree  storage 
)

void do_type_instantiation ( tree  t,
tree  storage,
tsubst_flags_t  complain 
)

void end_explicit_instantiation ( void   ) 

Definition at line 633 of file pt.c.

References gcc_assert, my_friendly_assert, and processing_explicit_instantiation.

void end_specialization ( void   ) 

Definition at line 596 of file pt.c.

References finish_scope(), and reset_specialization().

void end_template_decl ( void   ) 

tree end_template_parm_list ( tree  parms  ) 

static int eq_local_specializations ( const void p1,
const void p2 
) [static]

Definition at line 1297 of file pt.c.

References TREE_VALUE.

bool explicit_class_specialization_p ( tree  type  ) 

tree finish_member_template_decl ( tree  decl  ) 

int fn_type_unification ( tree  fn,
tree  explicit_targs,
tree  targs,
tree  args,
tree  return_type,
unification_kind_t  strict,
int  flags 
)

static tree fold_decl_constant_value ( tree  expr  )  [static]

Definition at line 3481 of file pt.c.

References fold_non_dependent_expr(), and integral_constant_value().

tree fold_non_dependent_expr ( tree  expr  ) 

static int for_each_template_parm ( tree  t,
tree_fn_t  fn,
void data,
struct pointer_set_t visited 
) [static]

static tree for_each_template_parm_r ( tree tp,
int *  walk_subtrees,
void d 
) [static]

static tree get_bindings ( tree  fn,
tree  decl,
tree  explicit_args,
bool  check_rettype 
) [static]

static tree get_class_bindings ( tree  tparms,
tree  spec_args,
tree  args 
) [static]

tree get_innermost_template_args ( tree  args,
int  n 
)

tree get_mostly_instantiated_function_type ( tree  decl  ) 

static tree get_template_base ( tree  tparms,
tree  targs,
tree  parm,
tree  arg 
) [static]

static GTY ( ()   )  [static]

Definition at line 64 of file pt.c.

static hashval_t hash_local_specialization ( const void p1  )  [static]

Definition at line 1305 of file pt.c.

References htab_hash_pointer, and TREE_VALUE.

static int inline_needs_template_parms ( tree  decl  )  [static]

static void instantiate_class_member ( tree  decl,
int  extern_p 
) [static]

Definition at line 11735 of file pt.c.

References instantiate_decl(), and mark_decl_instantiated().

tree instantiate_class_template ( tree  type  ) 

Definition at line 5681 of file pt.c.

References access, access_private_node, access_private_virtual_node, access_protected_node, access_protected_virtual_node, access_public_node, access_public_virtual_node, add_friend(), ANON_AGGR_TYPE_P, args, base, BINFO_BASE_ACCESS, BINFO_BASE_ITERATE, BINFO_N_BASE_BINFOS, BINFO_TYPE, BINFO_VIRTUAL_P, bitsize_zero_node, can_complete_type_without_circularity(), check_static_variable_definition(), CLASSTYPE_DECL_LIST, CLASSTYPE_GOT_SEMICOLON, CLASSTYPE_INTERFACE_ONLY, CLASSTYPE_INTERFACE_UNKNOWN, CLASSTYPE_IS_TEMPLATE, CLASSTYPE_KEY_METHOD, CLASSTYPE_NESTED_UDTS, CLASSTYPE_TI_ARGS, CLASSTYPE_TI_TEMPLATE, CLASSTYPE_USE_TEMPLATE, CLASSTYPE_VBASECLASSES, CLASSTYPE_VISIBILITY, CLASSTYPE_VISIBILITY_SPECIFIED, complete_type(), COMPLETE_TYPE_P, copy_node, cp_error_at(), cxx_incomplete_type_error, DECL_ARTIFICIAL, DECL_CLASS_SCOPE_P, DECL_CLASS_TEMPLATE_P, DECL_FUNCTION_TEMPLATE_P, DECL_IN_SYSTEM_HEADER, DECL_INITIAL, DECL_INITIALIZED_IN_CLASS_P, decl_namespace_context(), DECL_SOURCE_FILE, DECL_SOURCE_LINE, DECL_SOURCE_LOCATION, DECL_TEMPLATE_INFO, DECL_TEMPLATE_SPECIALIZATIONS, dependent_type_p(), dk_no_check, dk_no_deferred, error(), error_mark_node, finish_member_declaration(), finish_static_data_member_decl(), finish_struct_1(), flag_alt_external_templates, flag_external_templates, gcc_assert, get_class_bindings(), global_namespace, grok_special_member_properties(), hidden_name_p(), i, in_system_header, input_filename, input_location, integer_type_node, interface_only, interface_unknown, keyed_classes, lineno, make_friend_class(), maybe_push_to_top_level(), member(), most_general_template(), most_specialized_class(), my_friendly_assert, nreverse(), NULL_TREE, PARTIAL_INSTANTIATION_P, pattern, pedantic, pop_deferring_access_checks(), pop_from_top_level(), pop_nested_namespace(), pop_scope(), pop_tinst_level(), popclass(), PRIMARY_TEMPLATE_P, processing_template_decl, push_deferring_access_checks(), push_nested_namespace(), push_scope(), push_tinst_level(), push_to_top_level(), pushclass(), pushtag(), r, repo_template_used(), SET_ANON_AGGR_TYPE_P, SET_CLASSTYPE_INTERFACE_UNKNOWN, SET_CLASSTYPE_INTERFACE_UNKNOWN_X, set_current_access_from_decl(), SET_IDENTIFIER_TYPE_VALUE, SET_TMPL_ARGS_LEVEL, str, tag, tf_error, tf_warning, tf_warning_or_error, TMPL_ARGS_DEPTH, TMPL_ARGS_HAVE_MULTIPLE_LEVELS, TREE_CHAIN, TREE_CODE, tree_cons, TREE_PURPOSE, TREE_TYPE, TREE_VALUE, TREE_VEC_ELT, TREE_VEC_LENGTH, TREE_VIA_PROTECTED, TREE_VIA_PUBLIC, TREE_VIA_VIRTUAL, ts_current, tsubst(), tsubst_default_arguments(), tsubst_expr(), tsubst_friend_class(), tsubst_friend_function(), TYPE_ALIGN, TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_BEING_DEFINED, TYPE_BINFO, TYPE_BINFO_BASETYPES, TYPE_CONTAINS_VPTR_P, TYPE_CONTEXT, TYPE_FIELDS, TYPE_FOR_JAVA, TYPE_GETS_DELETE, TYPE_HAS_ABSTRACT_ASSIGN_REF, TYPE_HAS_ARRAY_NEW_OPERATOR, TYPE_HAS_ASSIGN_REF, TYPE_HAS_CONST_ASSIGN_REF, TYPE_HAS_CONST_INIT_REF, TYPE_HAS_CONSTRUCTOR, TYPE_HAS_CONVERSION, TYPE_HAS_DEFAULT_CONSTRUCTOR, TYPE_HAS_DESTRUCTOR, TYPE_HAS_INIT_REF, TYPE_HAS_NEW_OPERATOR, TYPE_IDENTIFIER, TYPE_LANG_SPECIFIC, TYPE_MAIN_DECL, TYPE_METHODS, TYPE_NAME, TYPE_OVERLOADS_ARRAY_REF, TYPE_OVERLOADS_ARROW, TYPE_OVERLOADS_CALL_EXPR, TYPE_P, TYPE_PACKED, TYPE_SIZE, TYPE_USER_ALIGN, TYPE_USES_MULTIPLE_INHERITANCE, TYPE_USES_VIRTUAL_BASECLASSES, unreverse_member_declarations(), uses_template_parms(), xref_basetypes(), and xref_tag_from_type().

tree instantiate_decl ( tree  d,
int  defer_ok,
bool  expl_inst_class_mem_p 
)

Definition at line 12038 of file pt.c.

References add_pending_template(), args, at_eof, cfun, cp_finish_decl(), DECL_ARGUMENTS, DECL_CLONED_FUNCTION, DECL_CLONED_FUNCTION_P, DECL_CONTEXT, DECL_DECLARED_INLINE_P, DECL_EXPLICIT_INSTANTIATION, DECL_EXTERNAL, DECL_IN_AGGR_P, DECL_IN_SYSTEM_HEADER, DECL_INITIAL, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P, DECL_INITIALIZED_IN_CLASS_P, DECL_INITIALIZED_P, DECL_INLINE, DECL_INTERFACE_KNOWN, decl_namespace_context(), DECL_NAMESPACE_SCOPE_P, DECL_NONSTATIC_MEMBER_FUNCTION_P, DECL_NOT_REALLY_EXTERN, DECL_REALLY_EXTERN, DECL_SAVED_TREE, DECL_SOURCE_LOCATION, DECL_TEMPLATE_INFO, DECL_TEMPLATE_INSTANTIATED, DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT, DECL_TEMPLATE_SPECIALIZATION, DECL_TI_ARGS, DECL_TI_TEMPLATE, dk_no_deferred, eq_local_specializations(), expand_or_defer_fn(), finish_decl(), finish_function(), flag_inline_trees, gcc_assert, get_innermost_template_args(), global_bindings_p(), hash_local_specialization(), htab_create(), htab_delete(), in_system_header, input_location, LOOKUP_ONLYCONVERTING, mark_definable(), most_general_template(), NULL, NULL_RTX, NULL_TREE, out, pch_file, pedwarn(), pop_access_scope(), pop_deferring_access_checks(), pop_from_top_level(), pop_nested_class(), pop_nested_namespace(), pop_tinst_level(), push_access_scope(), push_deferring_access_checks(), push_nested_class(), push_nested_namespace(), push_tinst_level(), push_to_top_level(), regenerate_decl_from_template(), register_local_specialization(), repo_emit_p(), retrieve_specialization(), SET_DECL_IMPLICIT_INSTANTIATION, SET_DECL_RTL, SF_PRE_PARSED, skip_artificial_parms_for(), start_preparsed_function(), template_for_substitution(), tf_error, tf_warning, tf_warning_or_error, TI_PENDING_TEMPLATE_FLAG, timevar_pop, timevar_push, TMPL_PARMS_DEPTH, TREE_CHAIN, TREE_CODE, TREE_PUBLIC, TREE_TYPE, tsubst(), tsubst_expr(), and TYPE_RAISES_EXCEPTIONS.

void instantiate_pending_templates ( int  retries  ) 

tree instantiate_template ( tree  tmpl,
tree  targ_ptr,
tsubst_flags_t  complain 
)

static int invalid_nontype_parm_type_p ( tree  type,
tsubst_flags_t  complain 
) [static]

Definition at line 12657 of file pt.c.

References error(), INTEGRAL_TYPE_P, POINTER_TYPE_P, tf_error, TREE_CODE, and TYPE_PTR_TO_MEMBER_P.

int is_specialization_of ( tree  decl,
tree  tmpl 
)

bool is_specialization_of_friend ( tree  decl,
tree  friend 
)

tree lookup_template_class ( tree  d1,
tree  arglist,
tree  in_decl,
tree  context,
int  entering_scope,
tsubst_flags_t  complain 
)

Definition at line 4499 of file pt.c.

References a, add_outermost_template_args(), add_pending_template(), add_to_template_args(), bind_template_template_parm(), check_instantiated_args(), CLASSTYPE_DECLARED_CLASS, CLASSTYPE_GOT_SEMICOLON, CLASSTYPE_INTERFACE_KNOWN, CLASSTYPE_INTERFACE_ONLY, classtype_mangled_name(), CLASSTYPE_TEMPLATE_INFO, CLASSTYPE_TEMPLATE_SPECIALIZATION, CLASSTYPE_TI_TEMPLATE, CLASSTYPE_VISIBILITY, CLASSTYPE_VISIBILITY_SPECIFIED, coerce_template_parms(), comp_template_args(), CP_DECL_CONTEXT, cp_error_at(), create_implicit_typedef(), current_class_type, current_function_decl, current_template_args(), current_template_parms, DECL_CONTEXT, DECL_IGNORED_P, DECL_IN_SYSTEM_HEADER, DECL_INNERMOST_TEMPLATE_PARMS, DECL_NAME, DECL_SOURCE_LOCATION, DECL_TEMPLATE_INSTANTIATIONS, DECL_TEMPLATE_PARM_P, DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT, DECL_TEMPLATE_TEMPLATE_PARM_P, DECL_VISIBILITY, DECL_VISIBILITY_SPECIFIED, determine_visibility(), error(), error_mark_node, flag_external_templates, FROB_CONTEXT, gcc_assert, global_namespace, i, IDENTIFIER_VALUE, innermost_non_namespace_value(), INNERMOST_TEMPLATE_ARGS, INNERMOST_TEMPLATE_PARMS, IS_AGGR_TYPE, lookup_name(), make_aggr_type(), make_node, make_tree_vec, maybe_get_template_decl_from_type_decl(), most_general_template(), my_friendly_assert, NULL_TREE, pop_decl_namespace(), POP_TIMEVAR_AND_RETURN, PRIMARY_TEMPLATE_P, push_decl_namespace(), pushtag(), retrieve_specialization(), same_type_p, SET_CLASSTYPE_IMPLICIT_INSTANTIATION, set_current_access_from_decl(), SET_TMPL_ARGS_LEVEL, SET_TYPE_TEMPLATE_INFO, start_enum(), tf_error, tf_user, timevar_pop, timevar_push, TMPL_ARGS_DEPTH, TMPL_PARMS_DEPTH, TREE_CHAIN, TREE_CODE, tree_cons, TREE_PRIVATE, TREE_PROTECTED, TREE_PUBLIC, TREE_PURPOSE, TREE_TYPE, TREE_VALUE, TREE_VEC_LENGTH, ts_current, ts_global, tsubst(), tsubst_enum(), TYPE_CONTEXT, TYPE_FOR_JAVA, TYPE_IDENTIFIER, TYPE_NAME, TYPE_P, TYPE_STUB_DECL, TYPE_TI_ARGS, TYPE_TI_TEMPLATE, uses_template_parms(), and xref_tag_from_type().

tree lookup_template_function ( tree  fns,
tree  arglist 
)

static char* mangle_class_name_for_template ( const char *  name,
tree  parms,
tree  arglist 
) [static]

static void mark_class_instantiated ( tree  t,
int  extern_p 
) [static]

void mark_decl_instantiated ( tree  result,
int  extern_p 
)

static void mark_definable ( tree  decl  )  [static]

Definition at line 10978 of file pt.c.

References DECL_NOT_REALLY_EXTERN, and FOR_EACH_CLONE.

static int mark_template_parm ( tree  t,
void data 
) [static]

static int maybe_adjust_types_for_deduction ( unification_kind_t  strict,
tree parm,
tree arg 
) [static]

void maybe_begin_member_template_processing ( tree  decl  ) 

void maybe_end_member_template_processing ( void   ) 

tree maybe_get_template_decl_from_type_decl ( tree  decl  ) 

tree maybe_process_partial_specialization ( tree  type  ) 

static int more_specialized_class ( tree  pat1,
tree  pat2 
) [static]

int more_specialized_fn ( tree  pat1,
tree  pat2,
int  len 
)

tree most_general_template ( tree  decl  ) 

static tree most_specialized_class ( tree  type,
tree  tmpl 
) [static]

tree most_specialized_instantiation ( tree  templates  ) 

static void note_template_header ( int  specialization  )  [static]

Definition at line 616 of file pt.c.

References processing_specialization.

static bool optimize_specialization_lookup_p ( tree  tmpl  )  [inline, static]

static void pop_access_scope ( tree  t  )  [static]

static void pop_tinst_level ( void   )  [static]

void print_candidates ( tree  fns  ) 

Definition at line 1337 of file pt.c.

References cp_error_at(), error(), f, NULL_TREE, OVL_CURRENT, OVL_NEXT, str, TREE_CHAIN, and TREE_VALUE.

int problematic_instantiation_changed ( void   ) 

Definition at line 12634 of file pt.c.

static tree process_partial_specialization ( tree  decl  )  [static]

tree process_template_parm ( tree  list,
tree  parm,
bool  is_non_type 
)

static void push_inline_template_parms_recursive ( tree  parmlist,
int  levels 
) [static]

tree push_template_decl ( tree  decl  ) 

Definition at line 3334 of file pt.c.

References push_template_decl_real().

tree push_template_decl_real ( tree  decl,
bool  is_friend 
)

Definition at line 3029 of file pt.c.

References a, add_outermost_template_args(), ANON_AGGRNAME_P, args, build_template_decl(), check_default_tmpl_args(), CLASS_TYPE_P, classtype_mangled_name(), CLASSTYPE_TEMPLATE_SPECIALIZATION, CP_DECL_CONTEXT, current_class_type, current_lang_name, current_namespace, current_scope(), current_template_args(), current_template_parms, DECL_ANTICIPATED, DECL_CLASS_SCOPE_P, DECL_CONTEXT, DECL_CONV_FN_P, DECL_DESTRUCTOR_P, DECL_FRIEND_P, DECL_FUNCTION_TEMPLATE_P, DECL_IMPLICIT_TYPEDEF_P, DECL_LANG_SPECIFIC, DECL_MEMBER_TEMPLATE_P, DECL_NAME, DECL_PRIMARY_TEMPLATE, DECL_TEMPLATE_CONV_FN_P, DECL_TEMPLATE_INFO, DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT, DECL_TEMPLATE_SPECIALIZATION, DECL_TI_ARGS, DECL_TI_TEMPLATE, error(), error_mark_node, for_each_template_parm(), FROB_CONTEXT, i, IDENTIFIER_TEMPLATE, info, INNERMOST_TEMPLATE_PARMS, IS_AGGR_TYPE_CODE, is_member_template(), lang_name_c, most_general_template(), NEW_DELETE_OPNAME_P, NULL, NULL_TREE, template_parm_data::parms, process_partial_specialization(), pushdecl_namespace_level(), redeclare_class_template(), register_specialization(), SET_DECL_TEMPLATE_SPECIALIZATION, SET_TYPE_TEMPLATE_INFO, template_class_depth(), template_parm_scope_p(), template_parm_this_level_p(), TMPL_ARGS_DEPTH, TMPL_ARGS_LEVEL, TMPL_PARMS_DEPTH, TREE_CHAIN, TREE_CODE, tree_cons, TREE_TYPE, TREE_VEC_LENGTH, TYPE_ARG_TYPES, TYPE_BEING_DEFINED, TYPE_CONTEXT, TYPE_TEMPLATE_INFO, TYPE_TI_TEMPLATE, uses_template_parms_level(), and void_list_node.

static int push_tinst_level ( tree  d  )  [static]

void record_last_problematic_instantiation ( void   ) 

Definition at line 12641 of file pt.c.

bool redeclare_class_template ( tree  type,
tree  parms 
)

static tree reduce_template_parm_level ( tree  index,
tree  type,
int  levels 
) [static]

static void regenerate_decl_from_template ( tree  decl,
tree  tmpl 
) [static]

static void register_local_specialization ( tree  spec,
tree  tmpl 
) [static]

Definition at line 1314 of file pt.c.

References build_tree_list, htab_find_slot_with_hash(), htab_hash_pointer, and INSERT.

static tree register_specialization ( tree  spec,
tree  tmpl,
tree  args,
bool  is_friend 
) [static]

static void reopen_tinst_level ( tree  level  )  [static]

Definition at line 5288 of file pt.c.

References pop_tinst_level(), and TREE_CHAIN.

bool reregister_specialization ( tree  spec,
tree  tmpl,
tree  new_spec 
)

Definition at line 1273 of file pt.c.

References DECL_TEMPLATE_SPECIALIZATIONS, NULL_TREE, s, TREE_CHAIN, and TREE_VALUE.

void reset_specialization ( void   ) 

Definition at line 606 of file pt.c.

References processing_specialization.

static int resolve_overloaded_unification ( tree  tparms,
tree  targs,
tree  parm,
tree  arg,
unification_kind_t  strict,
int  sub_strict 
) [static]

tree resolve_typename_type ( tree  type,
bool  only_current_p 
)

static tree retrieve_local_specialization ( tree  tmpl  )  [static]

Definition at line 927 of file pt.c.

References htab_find_with_hash(), htab_hash_pointer, NULL_TREE, and TREE_PURPOSE.

static tree retrieve_specialization ( tree  tmpl,
tree  args,
bool  class_specializations_p 
) [static]

static void set_current_access_from_decl ( tree  decl  )  [static]

static int template_args_equal ( tree  ot,
tree  nt 
) [static]

Definition at line 4233 of file pt.c.

References comp_template_args(), cp_tree_equal(), same_type_p, TREE_CODE, and TYPE_P.

int template_class_depth ( tree  type  ) 

static int template_decl_level ( tree  decl  )  [static]

tree template_for_substitution ( tree  decl  ) 

static int template_parm_this_level_p ( tree  t,
void data 
) [static]

Definition at line 3009 of file pt.c.

References template_parm_data::level, TEMPLATE_PARM_LEVEL, TEMPLATE_TYPE_LEVEL, and TREE_CODE.

static tree try_class_unification ( tree  tparms,
tree  targs,
tree  parm,
tree  arg 
) [static]

static int try_one_overload ( tree  tparms,
tree  orig_targs,
tree  targs,
tree  parm,
tree  arg,
unification_kind_t  strict,
int  sub_strict,
bool  addr_p 
) [static]

static tree tsubst ( tree  t,
tree  args,
tsubst_flags_t  complain,
tree  in_decl 
) [static]

Definition at line 7250 of file pt.c.

References at_function_scope_p(), build_cplus_array_type(), build_exception_variant(), build_method_type_directly(), build_nt(), build_pointer_type(), build_ptrmem_type(), build_ptrmemfunc_type(), build_qualified_name(), build_reference_type(), char_type_node, CLASS_TYPE_P, CLASSTYPE_PURE_VIRTUALS, complete_type(), COMPLETE_TYPE_P, COMPLEX_TYPE, compute_array_index_type(), copy_type, cp_build_qualified_type, cp_build_qualified_type_real(), cp_type_quals(), cxx_incomplete_type_error, DECL_CONTEXT, DECL_P, DECL_TEMPLATE_PARMS, error(), error_mark_node, f, finish_typeof(), fold_build1, fold_build2, fold_decl_constant_value(), gcc_assert, gcc_unreachable, hash_tree_cons(), IDENTIFIER_TYPE_VALUE, idx, input_filename, input_line, input_location, INT_CST_LT, integer_type_node, integer_zero_node, integer_zerop(), IS_AGGR_TYPE, last_loc, layout_type(), lookup_template_class(), make_typename_type(), make_unbound_class_template(), max, NULL_TREE, QUALIFIED_NAME_IS_TEMPLATE, r, reduce_template_parm_level(), sorry(), specs, TEMPLATE_PARM_IDX, TEMPLATE_PARM_LEVEL, TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO, TEMPLATE_TYPE_DECL, TEMPLATE_TYPE_IDX, TEMPLATE_TYPE_LEVEL, TEMPLATE_TYPE_PARM_INDEX, tf_error, tf_ignore_bad_quals, tf_keep_type_decl, TMPL_ARG, TMPL_ARGS_DEPTH, TREE_CHAIN, TREE_CODE, tree_code_name, tree_cons, TREE_OPERAND, TREE_PURPOSE, TREE_TYPE, TREE_VALUE, TREE_VEC_LENGTH, tsubst(), tsubst_aggr_type(), tsubst_copy(), tsubst_decl(), tsubst_exception_specification(), tsubst_expr(), tsubst_function_type(), tsubst_template_args(), tsubst_template_parms(), TYPE_ARG_TYPES, TYPE_BEING_DEFINED, TYPE_CONTEXT, TYPE_DOMAIN, TYPE_IDENTIFIER, TYPE_MAIN_VARIANT, TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_NAME, TYPE_OFFSET_BASETYPE, TYPE_P, TYPE_POINTER_TO, TYPE_QUALS, TYPE_REFERENCE_TO, TYPE_STUB_DECL, TYPE_TI_ARGS, TYPE_TI_TEMPLATE, TYPENAME_IS_CLASS_P, TYPENAME_IS_ENUM_P, typename_type, TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR, unknown_type_node, uses_template_parms(), void_list_node, and void_type_node.

static tree tsubst_aggr_type ( tree  t,
tree  args,
tsubst_flags_t  complain,
tree  in_decl,
int  entering_scope 
) [static]

static tree tsubst_arg_types ( tree  arg_types,
tree  args,
tsubst_flags_t  complain,
tree  in_decl 
) [static]

static tree tsubst_baselink ( tree  baselink,
tree  object_type,
tree  args,
tsubst_flags_t  complain,
tree  in_decl 
) [static]

static tree tsubst_copy ( tree  t,
tree  args,
tsubst_flags_t  complain,
tree  in_decl 
) [static]

tree tsubst_copy_and_build ( tree  t,
tree  args,
tsubst_flags_t  complain,
tree  in_decl,
bool  function_p,
bool  integral_constant_expression_p 
)

Definition at line 8874 of file pt.c.

References adjust_result_of_qualified_name_lookup(), BASELINK_BINFO, baselink_for_fns(), BASELINK_FUNCTIONS, BASELINK_P, BASELINK_QUALIFIED_P, begin_stmt_expr(), BINFO_TYPE, build3, build_const_cast(), build_constructor(), build_dynamic_cast(), build_functional_cast(), build_new(), build_new_method_call(), build_nop(), build_nt(), build_offset_ref_call_from_tree(), build_reinterpret_cast(), build_static_cast(), build_throw(), build_typeid(), build_x_arrow(), build_x_binary_op(), build_x_compound_expr(), build_x_conditional_expr(), build_x_indirect_ref(), build_x_modify_expr(), build_x_unary_op(), build_x_va_arg(), cast_valid_in_integral_constant_expression_p(), CLASS_TYPE_P, constructor_elt, CONSTRUCTOR_ELTS, convert_from_reference(), cxx_sizeof_or_alignof_expr(), cxx_sizeof_or_alignof_type(), DECL_FUNCTION_MEMBER_P, DECL_INITIAL, DECL_NAME, DECL_P, DELETE_EXPR_USE_GLOBAL, DELETE_EXPR_USE_VEC, delete_sanity(), error(), error_mark_node, finish_call_expr(), finish_class_member_access_expr(), finish_compound_literal(), finish_id_expression(), finish_label_address_expr(), finish_non_static_data_member(), finish_offsetof(), finish_pseudo_destructor_expr(), finish_stmt_expr(), function, gcc_unreachable, get_first_fn(), get_typeid(), HOST_WIDE_INT, IDENTIFIER_TYPENAME_P, idx, IS_AGGR_TYPE, is_overloaded_fn(), KOENIG_LOOKUP_P, lookup_name(), LOOKUP_NONVIRTUAL, LOOKUP_NORMAL, lookup_qualified_name(), lookup_template_function(), mangle_conv_op_name_for_type(), mark_used(), member(), n, NEW_EXPR_USE_GLOBAL, non_reference(), NULL, NULL_TREE, objcp_tsubst_copy_and_build(), perform_koenig_lookup(), qualified_name_lookup_error(), r, RECUR, REFERENCE_REF_P, skip_evaluation, STMT_EXPR_STMT, subst(), tf_error, TREE_CHAIN, TREE_CODE, tree_cons, TREE_HAS_CONSTRUCTOR, TREE_NO_WARNING, TREE_OPERAND, TREE_PURPOSE, TREE_TYPE, TREE_VALUE, tsubst(), tsubst_baselink(), tsubst_copy(), tsubst_copy_and_build(), tsubst_expr(), tsubst_non_call_postfix_expression(), tsubst_qualified_id(), tsubst_template_args(), TYPE_P, TYPE_PTRMEMFUNC_P, unqualified_name_lookup_error(), used_types_insert(), VEC, VEC_copy, VEC_iterate, void_list_node, and void_type_node.

static tree tsubst_copy_asm_operands ( tree  t,
tree  args,
tsubst_flags_t  complain,
tree  in_decl 
) [static]

static tree tsubst_decl ( tree  t,
tree  args,
tsubst_flags_t  complain 
) [static]

Definition at line 6422 of file pt.c.

References build_decl, build_tree_list, check_var_type(), CLASSTYPE_TI_ARGS, CLASSTYPE_TI_TEMPLATE, clone_function_decl(), CODE_CONTAINS_STRUCT, complete_type(), constructor_name(), copy_decl(), copy_node, cp_apply_type_quals_to_decl(), cp_type_quals(), DECL_ARG_TYPE, DECL_ARGUMENTS, DECL_ATTRIBUTES, DECL_BEFRIENDING_CLASSES, DECL_CLASS_SCOPE_P, DECL_CLASS_TEMPLATE_P, DECL_CLONED_FUNCTION, DECL_CONSTRUCTOR_P, DECL_CONTEXT, DECL_CONV_FN_P, DECL_DEAD_FOR_LOCAL, DECL_DEFER_OUTPUT, DECL_DEPENDENT_P, DECL_DESTRUCTOR_P, DECL_EXTERNAL, DECL_FRIEND_CONTEXT, DECL_FRIEND_P, DECL_HAS_VALUE_EXPR_P, DECL_INITIAL, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P, DECL_INITIALIZED_P, DECL_INTERFACE_KNOWN, DECL_LANG_SPECIFIC, DECL_NAME, DECL_NAMESPACE_SCOPE_P, DECL_PENDING_INLINE_INFO, DECL_PENDING_INLINE_P, DECL_PRIMARY_TEMPLATE, DECL_RESULT, DECL_SAVED_TREE, DECL_SELF_REFERENCE_P, DECL_SIZE, DECL_SIZE_UNIT, DECL_SOURCE_LOCATION, DECL_TEMPLATE_INFO, DECL_TEMPLATE_INSTANTIATED, DECL_TEMPLATE_INSTANTIATIONS, DECL_TEMPLATE_PARM_P, DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT, DECL_TEMPLATE_SPECIALIZATION, DECL_TEMPLATE_SPECIALIZATIONS, DECL_TEMPLATE_TEMPLATE_PARM_P, DECL_TI_ARGS, DECL_TI_TEMPLATE, DECL_USE_TEMPLATE, DECL_VALUE_EXPR, DECL_VISIBILITY, DECL_VISIBILITY_SPECIFIED, determine_visibility(), do_class_using_decl(), error(), error_mark_node, gcc_assert, gcc_unreachable, get_innermost_template_args(), grok_ctor_properties(), grok_op_properties(), IDENTIFIER_OPNAME_P, input_location, layout_decl(), mangle_conv_op_name_for_type(), maybe_retrofit_in_chrg(), member(), most_general_template(), NULL_RTX, NULL_TREE, PRIMARY_TEMPLATE_P, processing_template_decl, r, register_local_specialization(), register_specialization(), remove_attribute(), retrieve_local_specialization(), retrieve_specialization(), SET_DECL_ASSEMBLER_NAME, SET_DECL_FRIEND_CONTEXT, SET_DECL_IMPLICIT_INSTANTIATION, SET_DECL_RTL, SET_DECL_SELF_REFERENCE_P, SET_DECL_TEMPLATE_PARM_P, SET_DECL_VALUE_EXPR, tf_error, TMPL_ARGS_DEPTH, TMPL_PARMS_DEPTH, TREE_CHAIN, TREE_CODE, tree_cons, TREE_PUBLIC, TREE_STATIC, TREE_TYPE, TREE_USED, TREE_VALUE, tsubst(), tsubst_aggr_type(), tsubst_copy(), tsubst_default_arguments(), tsubst_expr(), tsubst_template_args(), tsubst_template_parms(), TYPE_CONTEXT, type_decays_to(), TYPE_MAIN_DECL, TYPE_NAME, type_passed_as(), uses_template_parms(), USING_DECL_SCOPE, value_dependent_expression_p(), VISIBILITY_DEFAULT, and VOID_TYPE_P.

tree tsubst_default_argument ( tree  fn,
tree  type,
tree  arg 
)

static void tsubst_default_arguments ( tree  fn  )  [static]

static void tsubst_enum ( tree  tag,
tree  newtag,
tree  args 
) [static]

static tree tsubst_exception_specification ( tree  fntype,
tree  args,
tsubst_flags_t  complain,
tree  in_decl 
) [static]

static tree tsubst_expr ( tree  t,
tree  args,
tsubst_flags_t  complain,
tree  in_decl,
bool  integral_constant_expression_p 
) [static]

Definition at line 8483 of file pt.c.

References add_stmt(), ANON_AGGR_TYPE_P, ASM_CLOBBERS, ASM_INPUT_P, ASM_INPUTS, ASM_OUTPUTS, ASM_STRING, ASM_VOLATILE_P, BCS_TRY_BLOCK, begin_compound_stmt(), begin_do_stmt(), begin_else_clause(), begin_for_stmt(), begin_function_body(), begin_function_try_block(), begin_handler(), begin_if_stmt(), begin_omp_parallel(), begin_omp_structured_block(), begin_switch_stmt(), begin_try_block(), begin_while_stmt(), BIND_EXPR_BODY, BIND_EXPR_BODY_BLOCK, BIND_EXPR_TRY_BLOCK, CASE_HIGH, CASE_LOW, CLEANUP_P, cond, copy_node, cp_fname_init(), current_function_decl, current_stmt_tree(), cxx_printable_name(), DECL_EXPR_DECL, DECL_INITIAL, DECL_NAME, DECL_PRETTY_FUNCTION_P, DECL_TEMPLATE_INSTANTIATED, DO_BODY, DO_COND, do_local_using_decl(), do_using_directive(), ELSE_CLAUSE, error_mark_node, EXPR_HAS_LOCATION, EXPR_LOCATION, EXPR_STMT_EXPR, EXPR_STMT_STMT_EXPR_RESULT, finish_anon_union(), finish_asm_stmt(), finish_break_stmt(), finish_case_label(), finish_cleanup(), finish_cleanup_try_block(), finish_compound_stmt(), finish_continue_stmt(), finish_decl(), finish_do_body(), finish_do_stmt(), finish_else_clause(), finish_expr_stmt(), finish_for_cond(), finish_for_expr(), finish_for_init_stmt(), finish_for_stmt(), finish_function_body(), finish_function_handler_sequence(), finish_function_try_block(), finish_goto_stmt(), finish_handler(), finish_handler_parms(), finish_handler_sequence(), finish_if_stmt(), finish_if_stmt_cond(), finish_label_decl(), finish_label_stmt(), finish_mem_initializers(), finish_omp_atomic(), finish_omp_for(), finish_omp_parallel(), finish_omp_structured_block(), finish_return_stmt(), finish_stmt_expr_expr(), finish_switch_cond(), finish_switch_stmt(), finish_then_clause(), finish_try_block(), finish_while_stmt(), finish_while_stmt_cond(), FN_TRY_BLOCK_P, FOR_BODY, FOR_COND, FOR_EXPR, FOR_INIT_STMT, gcc_assert, GOTO_DESTINATION, HANDLER_BODY, HANDLER_PARMS, i, IF_COND, input_location, LABEL_EXPR_LABEL, lookup_qualified_name(), maybe_push_decl(), NULL_TREE, OMP_ATOMIC_CODE, OMP_BODY, OMP_CLAUSES, OMP_FOR_BODY, OMP_FOR_CLAUSES, OMP_FOR_COND, OMP_FOR_INCR, OMP_FOR_INIT, OMP_FOR_PRE_BODY, OMP_PARALLEL_BODY, OMP_PARALLEL_CLAUSES, OMP_PARALLEL_COMBINED, pop_stmt_list(), push_stmt_list(), qualified_name_lookup_error(), RECUR, STATEMENT_CODE_P, STMT_IS_FULL_EXPR_P, SWITCH_STMT_BODY, SWITCH_STMT_COND, THEN_CLAUSE, tmp, TREE_CODE, TREE_OPERAND, TREE_TYPE, TRY_HANDLERS, TRY_STMTS, tsi_end_p(), tsi_next(), tsi_start(), tsi_stmt(), tsubst(), tsubst_copy_and_build(), tsubst_copy_asm_operands(), tsubst_initializer_list(), tsubst_omp_clauses(), USING_DECL_SCOPE, USING_STMT_NAMESPACE, WHILE_BODY, and WHILE_COND.

static tree tsubst_friend_class ( tree  friend_tmpl,
tree  args 
) [static]

static tree tsubst_friend_function ( tree  decl,
tree  args 
) [static]

static tree tsubst_function_type ( tree  t,
tree  args,
tsubst_flags_t  complain,
tree  in_decl 
) [static]

static tree tsubst_initializer_list ( tree  t,
tree  argvec 
) [static]

static tree tsubst_non_call_postfix_expression ( tree  t,
tree  args,
tsubst_flags_t  complain,
tree  in_decl 
) [static]

Definition at line 8855 of file pt.c.

References TREE_CODE, tsubst_copy_and_build(), and tsubst_qualified_id().

static tree tsubst_omp_clauses ( tree  clauses,
tree  args,
tsubst_flags_t  complain,
tree  in_decl 
) [static]

static tree tsubst_qualified_id ( tree  qualified_id,
tree  args,
tsubst_flags_t  complain,
tree  in_decl,
bool  done,
bool  address_p 
) [static]

static tree tsubst_template_arg ( tree  t,
tree  args,
tsubst_flags_t  complain,
tree  in_decl 
) [static]

Definition at line 6137 of file pt.c.

References fold_non_dependent_expr(), r, tsubst(), tsubst_expr(), and TYPE_P.

static tree tsubst_template_args ( tree  t,
tree  args,
tsubst_flags_t  complain,
tree  in_decl 
) [static]

static tree tsubst_template_parms ( tree  parms,
tree  args,
tsubst_flags_t  complain 
) [static]

bool type_dependent_expression_p ( tree  expression  ) 

static int type_unification_real ( tree  tparms,
tree  targs,
tree  xparms,
tree  xargs,
int  subr,
unification_kind_t  strict,
int  flags 
) [static]

static int unify ( tree  tparms,
tree  targs,
tree  parm,
tree  arg,
int  strict 
) [static]

Definition at line 10396 of file pt.c.

References build_function_type(), build_nop(), build_qualified_type(), check_cv_quals_for_unify(), CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P, CLASSTYPE_TEMPLATE_INFO, CLASSTYPE_TI_ARGS, CLASSTYPE_TI_TEMPLATE, coerce_template_parms(), COMPLEX_TYPE, cp_build_qualified_type_real(), cp_tree_equal(), CP_TYPE_CONST_P, cp_type_quals(), DECL_INITIAL, DECL_INNERMOST_TEMPLATE_PARMS, DECL_TEMPLATE_PARM_P, DEDUCE_EXACT, error_mark_node, EXPR_P, fold(), fold_build2, gcc_assert, get_template_base(), i, idx, INNERMOST_TEMPLATE_ARGS, integer_one_node, integer_type_node, integral_constant_value(), LOOKUP_NORMAL, NULL_TREE, PTRMEM_CST_MEMBER, same_type_ignoring_top_level_qualifiers_p, same_type_p, template_args_equal(), template_decl_level(), TEMPLATE_PARM_IDX, TEMPLATE_PARM_LEVEL, TEMPLATE_TYPE_IDX, TEMPLATE_TYPE_LEVEL, tf_none, tparm(), TREE_CHAIN, TREE_CODE, tree_int_cst_equal(), TREE_OPERAND, TREE_TYPE, TREE_VALUE, TREE_VEC_ELT, TREE_VEC_LENGTH, try_class_unification(), tsubst(), TYPE_ARG_TYPES, TYPE_DOMAIN, TYPE_MAX_VALUE, TYPE_OFFSET_BASETYPE, TYPE_P, TYPE_PTRMEMFUNC_FN_TYPE, TYPE_PTRMEMFUNC_OBJECT_TYPE, TYPE_PTRMEMFUNC_P, TYPE_TI_ARGS, TYPE_TI_TEMPLATE, type_unification_real(), unify(), UNIFY_ALLOW_DERIVED, UNIFY_ALLOW_INTEGER, UNIFY_ALLOW_LESS_CV_QUAL, UNIFY_ALLOW_MORE_CV_QUAL, UNIFY_ALLOW_NONE, UNIFY_ALLOW_OUTER_LESS_CV_QUAL, UNIFY_ALLOW_OUTER_LEVEL, UNIFY_ALLOW_OUTER_MORE_CV_QUAL, unknown_type_node, uses_template_parms(), and variably_modified_type_p().

int uses_template_parms ( tree  t  ) 

int uses_template_parms_level ( tree  t,
int  level 
)

bool value_dependent_expression_p ( tree  expression  ) 


Variable Documentation

Definition at line 5221 of file pt.c.

Definition at line 664 of file c-common.c.

Referenced by c_common_decode_option(), and c_common_handle_option().

int tinst_depth [static]

Definition at line 5215 of file pt.c.

int tinst_level_tick [static]

Definition at line 5220 of file pt.c.


Generated on Wed Apr 8 15:29:34 2009 for Open64 by  doxygen 1.5.6