Mark Mitchell [Mon, 19 Jan 1998 22:41:40 +0000 (22:41 +0000)]
decl.c (start_decl): Don't allow duplicate definitions of static data members.
* decl.c (start_decl): Don't allow duplicate definitions of static
data members.
* call.c (build_user_type_conversion_1): Handle user-defined
template conversion operators correctly.
* decl2.c (build_expr_from_tree): Issue an error message if the
object in a COMPONENT_REF is a TEMPLATE_DECL.
* typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
* class.c (is_local_class): New function.
* cp-tree.h (is_local_class): Declare it.
(last_tree): Likewise.
(begin_tree): Likewise.
(end_tree): Likewise.
(lookup_template_class): Change prototype.
* decl.c (cp_finish_decl): Check for NULL where necesary.
Consider FUNCTION_DECLS to declare objects with top-level binding,
when calling make_decl_rtl.
(grokdeclarator): Give members of local classes internal linkage.
(start_function): Remove declaration of last_tree.
(finish_function): Set flag_keep_inline_functions around call to
rest_of_compilation if we are processing a member function in a
local class.
(start_method): Call push_template_decl for member functions of
local classes in template functions.
* decl2.c (import_export_decl): Don't give external linkage to
instantiations of templates with internal linkage.
* parse.y (last_tree): Remove declaration.
(template_type): Pass extra parameter to lookup_template_class.
(self_template_type): Likewise.
(structsp): Move call to reset_specialization into left_curly.
(left_curly): Call reset_specialization, and begin_tree.
* pt.c (saved_trees): New variable.
(mangle_class_name_for_template): Change prototype. Use
additional function context to name local classes in templates
correctly.
(classtype_mangled_name): Pass the context.
(push_template_decl): Handle local classes and templates, and
member functions for such classes.
(convert_nontype_parameter): Fix handling of pointer-to-member
constants.
(lookup_template_class): Handle local classes in templates.
(tsubst): Likewise. Don't assume that template instantiations
have external linkage; pay attention to the template declaration.
(mark_decl_instantiated): Likewise.
(begin_tree): New function.
(end_tree): Likewise.
* decl.c (xref_basetypes): Don't call complete_type for basetypes
that involve template parameters; that can lead to infinite
recursion unnecessarily.
* pt.c (register_specialization): Do not register specializations
that aren't ready to be registered yet.
(check_explicit_specialization): Handle explicit specialization of
constructors and destructors.
(build_template_decl): New function.
(push_template_delc): Handle out-of-class specializations of
member templates.
* pt.c (check_explicit_specialization): Set up the template
information before registering the specialization.
(coerce_template_parms): Fix thinko.
(tsubst): Handle specializations of member templates correctly.
* class.c (finish_struct_methods): Remove calls to
check_explicit_specialization from here.
(finish_struct): And insert them here.
* cp-tree.h (perform_qualification_conversions): New function.
(perform_array_to_pointer_conversion): Likewise.
(begin_explicit_instantiation): Likewise.
(end_explicit_instantiation): Likewise.
(determine_specialization): Renamed from
determine_explicit_specialization.
(comp_template_parms): New function.
(processing_explicit_instantiation): New variable.
* cvt.c (perform_qualification_conversions): New function.
(perform_array_to_pointer_conversion): Likewise.
* decl.c (duplicate_decls): Don't consider template functions
alike unless they have the same parameters. Refine handling of
instantiation/specialization mismatches.
(start_decl): Don't call pushdecl for template specializations,
since they don't affect overloading.
(start_function): Likewise
(grokfndecl): Call check_explicit_specialization a little later.
Don't call duplicate_decls for memberm template specializations.
(grokdeclarator): Don't update template_count for classes that are
themselves specializations. Remove use of `2' as parameter to
grokfndecl since that value isn't used.
* lex.c (cons_up_default_function): Save and restore
processing_explicit_instantiation around calls to grokfield.
* parse.y (finish_member_template_decl): New function.
(component_decl_1): Use it.
(fn.def2): Likewise.
(template_arg_list_opt): New nonterminal.
(template_type): Use it.
(self_template_type): Likewise.
(template_id): Likewise.
(object_template_id): Likewise.
(notype_template_declarator): Likwise.
(begin_explicit_instantiation): Likewise.
(end_explicit_instantiation): Likewise.
(explicit_instantiation): Use them.
* pt.c (coerce_template_parms): Add parameters.
(processing_explicit_instantiation): New variable.
(convert_nontype_parameter): New function.
(determine_overloaded_function): Likewise.
(begin_explicit_instantiation): Likewise.
(end_explicit_instantiation): Likewise.
(retrieve_specialization): Likewise.
(register_specialization): Likewise.
(processing_explicit_specialization): Removed.
(determine_specialization): Handle specializations of member
functions of template class instantiations.
(check_explicit_specialization): Refine to conform to standard.
(comp_template_parms): New function.
(coerce_template_parms): Call convert_nontype_parameter.
(tsubst): Refine handling of member templates. Use
register_specialization.
(instantiate_template): Use retrieve_specialization.
(do_decl_instantiation): Likewise.
(instantiate_decl): Likewise.
(type_unification): Improve handling of explict template
arguments.
* tree.c (mapcar): Return error_mark_node, rather than aborting,
on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
* typeck.c (build_unary_op): Call determine_specialization, rather
than determine_explicit_specialization.
Jim Wilson [Mon, 19 Jan 1998 13:57:04 +0000 (13:57 +0000)]
Fix build/host/target configure in settting of thread_file.
* configure.in (thread_file): Rename uses before main loop to
target_thread_file. Initialize to empty in main loop. Set thread_file
to target_thread_file after main loop if not set.
* configure: Rebuild.
Jeff Law [Sun, 18 Jan 1998 00:01:22 +0000 (17:01 -0700)]
emit_rtl.c (init_emit_once): Ensure that potential aliasing between frame_pointer_rtx...
* emit_rtl.c (init_emit_once): Ensure that potential aliasing
between frame_pointer_rtx, hard_frame_pointer_rtx, and
arg_pointer_rtx is respected in initialization.
(init_emit_once): Use gen_rtx_raw_REG() to create
return_address_pointer_rtx.
* rtl.h: Fix typo.
David S. Miller [Sat, 17 Jan 1998 23:08:03 +0000 (23:08 +0000)]
combine.c (force_to_mode, [...]): Correctly optimize constant offset computations from objects with known...
* combine.c (force_to_mode, nonzero_bits): Correctly optimize
constant offset computations from objects with known alignment in
the presence of STACK_BIAS.
David S. Miller [Sat, 17 Jan 1998 22:50:40 +0000 (22:50 +0000)]
varasm.c (immed_double_const): Add casts to HOST_WIDE_INT where necessary.
* varasm.c (immed_double_const): Add casts to HOST_WIDE_INT where
necessary.
(const_hash): Hash val is unsigned long.
(SYMHASH): Likewise.
* tree.c (TYPE_HASH): Type of hash val is unsigned long.
* print-tree.c (print_node_brief): HOST_PTR_PRINTF format wants a
char pointer, not HOST_WIDE_INT.
(print_node): Likewise. Also hash is unsigned long not
HOST_WIDE_INT.
* cse.c (canon_hash): Hash is unsigned long not HOST_WIDE_INT.
David S. Miller [Sat, 17 Jan 1998 22:39:10 +0000 (22:39 +0000)]
explow.c (optimize_save_area_alloca): New function for targets where SETJMP_VIA_SAVE_AREA is true.
* explow.c (optimize_save_area_alloca): New function for targets
where SETJMP_VIA_SAVE_AREA is true.
(allocate_dynamic_stack_space): On SETJMP_VIA_SAVE_AREA targets,
compute the amount of stack space needed should we find later that
setjmp is never called by this function, stuff rtl for this inside
a REG_NOTE of the final SET of stack_pointer_rtx.
* toplev.c (rest_of_compilation): If SETJMP_VIA_SAVE_AREA and
current_function_calls_alloca, call optimize_save_area_alloca.
CVS ----------------------------------------------------------------------
Mumit Khan [Sat, 17 Jan 1998 21:37:48 +0000 (21:37 +0000)]
configure.in (NON_UNIX_STDIO): Define if MINGW32.
* configure.in (NON_UNIX_STDIO): Define if MINGW32.
(NON_ANSI_RW_MODE): Do not define for CYGWIN32 or MINGW32.
* libI77/rawio.h: Don't providing conflicting declarations for
read() and write(). MINGW32 header files use "const" quals.
* libF77/s_paus.c: _WIN32 does not have pause().
Mumit Khan [Sat, 17 Jan 1998 21:33:56 +0000 (21:33 +0000)]
pexecute.c (pexecute): New function for mingw32.
* pexecute.c (pexecute): New function for mingw32. Supports pipes.
(pwait): New function for mingw32.
* gcc.c (execute): Mingw32 pexecute() supports pipes, but cygwin32
pipe support is broken for now.
Mumit Khan [Sat, 17 Jan 1998 21:30:39 +0000 (21:30 +0000)]
Add mingw32 support.
* pexecute.c (pexecute): New function for mingw32. Supports pipes.
(pwait): New function for mingw32.
* config.table (i[3456]86-*-mingw32*): Support for i386-mingw32.
* config/mt-mingw32: New file.
* xmalloc.c (first_break): Not used for mingw32.
(xmalloc_set_program_name): Don't use sbrk on mingw32.
(xmalloc): Likewise.
(xrealloc): Likewise.
Pieter Nagel [Sat, 17 Jan 1998 20:28:11 +0000 (22:28 +0200)]
Makefile.in (FLAGS_TO_PASS): Pass down gcc_include_dir and local_prefix to sub-make invocations.
Sat Jan 17 21:28:08 1998 Pieter Nagel <pnagel@epiuse.co.za>
* Makefile.in (FLAGS_TO_PASS): Pass down gcc_include_dir and
local_prefix to sub-make invocations.
Kaveh R. Ghazi [Sat, 17 Jan 1998 20:09:09 +0000 (20:09 +0000)]
gengenrtl.c (type_from_format): De-ANSIfy function signature.
* gengenrtl.c (type_from_format): De-ANSIfy function signature.
(accessor_from_format): Likewise.
(xmalloc): New function for use when linking with alloca.o.
Mumit Khan [Tue, 13 Jan 1998 20:58:47 +0000 (20:58 +0000)]
cygwin32.h (STRIP_NAME_ENCODING): Define for Win32 to strip off the trailing @[NUM] added by ENCODE_SECTION_INFO.
* i386/cygwin32.h (STRIP_NAME_ENCODING): Define for Win32 to strip
off the trailing @[NUM] added by ENCODE_SECTION_INFO.
Also update copyright forgotten in last change.
H.J. Lu [Tue, 13 Jan 1998 20:28:27 +0000 (20:28 +0000)]
configure.in (CHECK_SUBDIRS): Set to testsuite only if ${srcdir}/../gcc exists.
* configure.in (CHECK_SUBDIRS): Set to testsuite only if
${srcdir}/../gcc exists.
(configdirs): Include testsuite only if ${srcdir}/../gcc exists.
* tests/Makefile.in (check): Depend on $(CHECK).
* tests/configure.in (CHECK): Set to "check-iostream
check-stdio" if ${srcdir}/../../gcc doesn't exists.
H.J. Lu [Tue, 13 Jan 1998 20:24:06 +0000 (20:24 +0000)]
configure.in (configdirs): Include testsuite only if ${srcdir}/../gcc exists.
�
* configure.in (configdirs): Include testsuite only if
${srcdir}/../gcc exists.
* tests/configure.in (check): Set to ${CHECK} if
${srcdir}/../../gcc doesn't exists.
Jeff Law [Tue, 13 Jan 1998 20:24:04 +0000 (13:24 -0700)]
configure.in (configdirs): Include testsuite only if ${srcdir}/../gcc exists.
�
* configure.in (configdirs): Include testsuite only if
${srcdir}/../gcc exists.
* tests/configure.in (check): Set to ${CHECK} if
${srcdir}/../../gcc doesn't exists.
Mumit Khan [Mon, 12 Jan 1998 23:49:57 +0000 (23:49 +0000)]
mingw32.h (INCOMING_RETURN_ADDR_RTX): Delete.
* i386/mingw32.h (INCOMING_RETURN_ADDR_RTX): Delete. Use the value
of DWARF2_UNWIND_INFO, if any, from i386/cygwin32.h instead.
(STANDARD_INCLUDE_DIR): Change to /usr/local/i386-mingw32/include.