1. 25 Feb, 1998 5 commits
    • typeck.c (get_delta_difference): Give hard error for conversion from virtual base. · 32e02ee0
      	* typeck.c (get_delta_difference): Give hard error for conversion
      	from virtual base.
      	* cp-tree.h: Tweak formatting.
      
      From-SVN: r18229
      Jason Merrill committed
    • update · 75cf27d4
      From-SVN: r18228
      Jason Merrill committed
    • Partial implementation of namespaces. · 30394414
      	* decl.c (push_namespace): Handle redeclaration error.
      	* cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
      	(IDENTIFIER_NAMESPACE_BINDINGS): New macro.
      	(NAMESPACE_BINDING): New macro.
      	(IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
      	* *.c: Use them.
      	* pt.c (push_template_decl): Use innermost_args.
      	* decl.c (get_unique_name): Tweak from earlier in the name.
      	* cp-tree.def: Add CPLUS_BINDING node.
      	* cp-tree.h (tree_binding): new struct
      	(BINDING_SCOPE, BINDING_VALUE): new macros
      	(current_namespace, global_namespace): declare extern
      	(struct lang_decl_flags): new field in_namespace
      	(DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): new macros
      	(DECL_NAMESPACE, SET_DECL_NAMESPACE): new macros
      	(TREE_INDIRECT_USING): new macro
      	* decl2.c (current_namespace, global_namespace): Declare.  The
      	value is a NAMESPACE_DECL now, not a TREE_LIST.
      	(is_namespace_ancestor, namespace_ancestor):new static functions.
      	(add_using_namespace, ambiguous_decl): likewise.
      	(lookup_using_namespace): new support function for lookup_name.
      	(qualified_lookup_using_namespace): new support function for
      	do_scoped_id and lookup_namespace_name
      	(get_namespace_id): mark as obsolete.
      	(current_namespace_id): Likewise.
      	(do_namespace_alias): Implement.
      	(do_using_directive): Implement as call to add_using_namespace.
      	* decl.c (binding_for_name): new function.
      	(push_namespace, pop_namespace): implement.
      	(push_decl): don't install a FUNCTION_DECL in the global branch.
      	(lookup_namespace_name): implement using qualified lookup.
      	(lookup_name_real): For global scoping, lookup in
      	global_namespace. For namespace scoping, lookup in given
      	namespace. For unscoped lookup, iterate over namespace,
      	considering using directives.
      	(init_decl_processing): initialize global_namespace.
      	(grokvardecl): Build assembler name as static name for globals.
      	(grokdeclarator): Remove old namespace mangling.
      	(xref_tag): When installing a global binding for the
      	tag, make sure we have an identifier.
      	* method.c (build_overload_nested_name): mangle namespaces.
      	(build_qualified_name): Likewise.
      	(build_decl_overload_real): Likewise.
      	* lex.c (build_lang_decl): set namespace for new declaration to
      	current_namespace.
      	(do_scoped_id): find global names in global or current
      	namespace, or using qualified namespace lookup, depending on
      	context.
      	* init.c (build_member_call): When scope is namespace, use
      	build_x_function_call instead.
      	(build_offset_ref): When scope is namespace, collapse processing
      	to lookup_namespace_name instead.
      	* error.c (dump_decl): Support NAMESPACE_DECL.
      	* decl.c (pushdecl): Bind globals to current namespace.
      	(push_overloaded_decl): Likewise.
      	(lookup_tag): Likewise.
      	(lookup_name_current_level): Likewise.
      	(xref_tag): Likewise.
      	(start_function): Likewise.
      	* lex.c (do_identifier): Likewise.
      	(identifier_typedecl_value): Likewise.
      	(real_yylex): Likewise.
      	* method.c (do_inline_function_hair): Likewise.
      	* parse.y (unscoped): Likewise.
      	* pt.c (check_explicit_specialization): Likewise.
      	(lookup_template_class): Likewise.
      	* rtti.c (call_void_fn): Likewise.
      	* sig.c (build_sigtable): Likewise.
      	* ptree.c (lang_print_xnode): New function.
      
      From-SVN: r18227
      Jason Merrill committed
    • c-parse.y (undeclared variable error): Tweak error message to be clearer. · 8dfafd99
              * c-parse.y (undeclared variable error): Tweak error message
              to be clearer.
      
      From-SVN: r18226
      Jeffrey A Law committed
    • flags.h (g_switch_value, [...]): Declare. · bb8ebb7f
              * flags.h (g_switch_value, g_switch_set): Declare.
              * alpha.c (override_options): Set g_switch_value=8 if not set.
              * alpha/elf.h (CC1_SPEC): New.
              (ASM_SPEC): New.
              (LINK_SPEC): Pass along the -G value we were given.
              (LOCAL_ASM_OP): Remove.
              (ASM_OUTPUT_ALIGNED_LOCAL): Output to .bss or .sbss by size.
              (MAX_OFILE_ALIGNMENT): New.
              (BSS_SECTION_ASM_OP, SBSS_SECTION_ASM_OP, SDATA_SECTION_ASM_OP): New.
              (EXTRA_SECTIONS): Add sbss and sdata.
              (SECTION_FUNCTION_TEMPLATE): New.
              (EXTRA_SECTION_FUNCTIONS): Use it.
              (CTORS_SECTION_FUNCTION, DTORS_SECTION_FUNCTION): Remove.
              (SELECT_SECTION): Use sdata when small enough.
              * alpha/linux.h (ASM_SPEC): Remove.
      
      From-SVN: r18225
      Richard Henderson committed
  2. 24 Feb, 1998 5 commits
  3. 23 Feb, 1998 14 commits
    • Update address. · d7ab2057
      From-SVN: r18211
      Jeff Law committed
    • From Bruno Haible <haible@ilog.fr>: · 8600f904
      	* execute/980223.c: New test.
      
      From-SVN: r18210
      Robert Lipe committed
    • * config.sub (sco5): Fix typo. · 3e07bdbd
      From-SVN: r18209
      Bruno Haible committed
    • tweak · 5633bac1
      From-SVN: r18208
      Jason Merrill committed
    • comment · 2d6df019
      From-SVN: r18207
      Jason Merrill committed
    • t-linux (LIBGCC1, [...]): Add macros and set to empty. · 49f9cda8
      e
      	* config/t-linux (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Add macros and
      	set to empty.
      	* config/t-linux-aout (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Likewise.
      	* config/alpha/t-linux: Remove file.
      	* config/sparc/t-linux: Remove file.
      	* config/m68k/t-linux (LIBGCC1, CROSS_LIBGCC1): Remove.
      	* config/m68k/t-linux-aout (LIBGCC1, CROSS_LIBGCC1): Likewise.
      	* configure.in (alpha*-*-linux-gnulibc1*): Use t-linux instead of alpha/t-linux
      	for tmake_file.
      	(alpha*-*-linux-gnu*): Likewise.
      	(sparc-*-linux-gnulibc1*): Use t-linux instead of sparc/t-linux for tmake_file.
      	(sparc-*-linux-gnu*): Likewise.
      
      From-SVN: r18206
      Manfred Hollstein committed
    • t-linux (LIBGCC1, [...]): Add macros and set to empty. · 65003658
      #
      	* config/t-linux (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Add macros and
      	set to empty.
      	* config/t-linux-aout (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Likewise.
      	* config/alpha/t-linux: Remove file.
      	* config/sparc/t-linux: Remove file.
      	* config/m68k/t-linux (LIBGCC1, CROSS_LIBGCC1): Remove.
      	* config/m68k/t-linux-aout (LIBGCC1, CROSS_LIBGCC1): Likewise.
      	* configure.in (alpha*-*-linux-gnulibc1*): Use t-linux instead of alpha/t-linux
      	for tmake_file.
      	(alpha*-*-linux-gnu*): Likewise.
      	(sparc-*-linux-gnulibc1*): Use t-linux instead of sparc/t-linux for tmake_file.
      	(sparc-*-linux-gnu*): Likewise.
      
      From-SVN: r18205
      Manfred Hollstein committed
    • t-linux (LIBGCC1, [...]): Add macros and set to empty. · 3e88bbdb
      a
      	* config/t-linux (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Add macros and
      	set to empty.
      	* config/t-linux-aout (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Likewise.
      	* config/alpha/t-linux: Remove file.
      	* config/sparc/t-linux: Remove file.
      	* config/m68k/t-linux (LIBGCC1, CROSS_LIBGCC1): Remove.
      	* config/m68k/t-linux-aout (LIBGCC1, CROSS_LIBGCC1): Likewise.
      	* configure.in (alpha*-*-linux-gnulibc1*): Use t-linux instead of alpha/t-linux
      	for tmake_file.
      	(alpha*-*-linux-gnu*): Likewise.
      	(sparc-*-linux-gnulibc1*): Use t-linux instead of sparc/t-linux for tmake_file.
      	(sparc-*-linux-gnu*): Likewise.
      
      From-SVN: r18204
      Manfred Hollstein committed
    • t-linux (LIBGCC1, [...]): Add macros and set to empty. · 9d1ebd25
      d
      	* config/t-linux (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Add macros and
      	set to empty.
      	* config/t-linux-aout (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Likewise.
      	* config/alpha/t-linux: Remove file.
      	* config/sparc/t-linux: Remove file.
      	* config/m68k/t-linux (LIBGCC1, CROSS_LIBGCC1): Remove.
      	* config/m68k/t-linux-aout (LIBGCC1, CROSS_LIBGCC1): Likewise.
      	* configure.in (alpha*-*-linux-gnulibc1*): Use t-linux instead of alpha/t-linux
      	for tmake_file.
      	(alpha*-*-linux-gnu*): Likewise.
      	(sparc-*-linux-gnulibc1*): Use t-linux instead of sparc/t-linux for tmake_file.
      	(sparc-*-linux-gnu*): Likewise.
      
      From-SVN: r18203
      Manfred Hollstein committed
    • collect2.c (ldd_file_name): Bracket declaration with same manifests as use. · 84bc3b4f
              * collect2.c (ldd_file_name): Bracket declaration with same
              manifests as use.
              (full_real_ld_suffix): Deleted.  Variable was calloced and
              written into, but never read.
      
      From-SVN: r18202
      Robert Lipe committed
    • pt.c, [...]: Remove unused NARGS argument to tsubst and friends. · f7d98d58
      	* pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
      	argument to tsubst and friends.
      
      From-SVN: r18201
      Jason Merrill committed
    • * pt.c (tsubst, FUNCTION_DECL): Tidy. · a221d52f
      From-SVN: r18200
      Jason Merrill committed
    • new · 138928a6
      From-SVN: r18199
      Jason Merrill committed
    • Support for friend templates. · f84b4be9
      	* typeck.c (build_x_function_call): Handle static member function
      	templates like non-templates.  Handle friend templates like normal
      	function templates.
      	* pt.c (tsubst, *_PARM): Don't use orig_level.
      	(get_bindings): Don't call add_to_template_args.
      	(instantiate_template): Likewise.
      	(tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
      	* ptree.c (print_lang_type): Print index/level for template parms.
      	* Make-lang.in (cc1plus): Note that cc1plus depends on
      	cp/cp-tree.h and cp/cp-tree.def.
      	* cp-tree.def (TEMPLATE_CONST_PARM): Remove.
      	(TEMPLATE_PARM_INDEX): New tree code, used to indicate a
      	position in a template parameter list.
      	* cp-tree.h (template_parm_index): New structure, used as the tree
      	structure for a TEMPLATE_PARM_INDEX.
      	(TEMPLATE_PARM_IDX): New macro.
      	(TEMPLATE_PARM_LEVEL): Likewise.
      	(TEMPLATE_PARM_DESCENDANTS): Likewise.
      	(TEMPLATE_PARM_ORIG_LEVEL): Likewise.
      	(TEMPLATE_PARM_DECL): Likewise.
      	(TEMPLATE_TYPE_PARM_INDEX): Likewise.
      	(TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
      	(TEMPLATE_TYPE_DECL): Likewise.
      	(TEMPLATE_CONST_IDX): Remove.
      	(TEMPLATE_CONST_LEVEL): Likewise.
      	(TEMPLATE_CONST_SET_INFO): Likewise.
      	(TEMPLATE_TYPE_SET_INFO): Likewise.
      	(TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
      	node.
      	(TEMPLATE_TYPE_LEVEL): Likewise.
      	* decl.c (decls_match): Call comp_template_parms, rather than
      	expanding it inline.
      	(duplicate_decls): If two template declarations are being merged,
      	then their TEMPLATE_INFOs should be merged as well.
      	(grokfndecl): Save template-id information when declaring a friend
      	with explicit template arguments.  Pass arguments to
      	check_explicit_specialization via correct convention; at some
      	point check_explicit_specialization changed, but these call-sites
      	did not.
      	(grokdeclarator): Tidy up slightly.
      	* decl2.c (check_classfn): Tidy up slightly.  Don't assume that
      	two template functions with the same DECL_ASSEMBLER_NAME the same,
      	since the names are not yet mangled.
      	* error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
      	TEMPLATE_CONST_PARM.
      	(dump_expr): Likewise.  Use the TEMPLATE_PARM_DECL to get at the
      	decl for a non-type parameter, rather than printing `<tparm ...>'.
      	* friend.c (is_friend): Handle TEMPLATE_DECL friends.
      	(do_friend): Deal with template friends.
      	* lex.c (do_pending_inlines): Call
      	maybe_begin_member_template_processing, rather than
      	conditionally calling begin_member_template_processing.
      	(process_next_inline): Likewise.  Call
      	maybe_end_member_template_processing, rather than
      	conditionally calling end_member_template_processing.
      	(do_pending_defargs): Likewise.
      	(do_identifier): Use TEMPLATE_PARM_INDEX instead of
      	TEMPLATE_CONST_PARM.
      	* method.c (build_mangled_template_parm_index): New function.
      	(build_overload_value): Use it.
      	(build_overload_name): Likewise.
      	* pt.c (finish_member_template_decl): Allow friend declarations.
      	(template_class_depth): New function.
      	(is_member_template): Rename, and modify, to become...
      	(is_member_or_friend_template): New function.
      	(end_member_template_processing): Rename, and modify, to become...
      	(maybe_end_member_template_processing).
      	(build_template_parm_index): New function.
      	(reduce_template_parm_level): New function.
      	(process_template_parm): Modify to use build_template_parm_index.
      	(current_template_args): Change name to current_template_parms.
      	(push_template_decl): Deal with friend templates.
      	(uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
      	TEMPLATE_CONST_PARM.
      	(tsubst_friend_function): New function.
      	(instantiate_class_template): Generate the DECL_FRIENDLIST
      	for a new instantiation by using tsubst_friend_function rather
      	than just tsubst.
      	(tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
      	Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
      	appropriate new macros.  Use reduce_template_parm_level to
      	generate lower-level template parameters.  Handle tsubst'ing into
      	TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS.  Don't forget
      	to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
      	templates.  Similarly for the template parameters for a new
      	template.
      	(tsubst_copy): Tidy up slightly.  Use TEMPLATE_PARM_INDEX instead
      	of TEMPLATE_CONST_PARM.  Handle TYPE_DECLs by tsubsting into them.
      	(unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.
      	(get_bindings): Call add_to_template_args if necessary.
      	(instantiate_decl): Handle instantiations of friend templates.
      	* search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
      	TEMPLATE_TYPE_PARM as a list of fields; it's not!
      	* spew.c (yylex): Do a little manual constant propogation to
      	clarify the code.
      
      From-SVN: r18198
      Jason Merrill committed
  4. 22 Feb, 1998 16 commits