Commit Graph

1678 Commits

Author SHA1 Message Date
Andrew Pinski
e5b44dfb3e re PR c++/30225 (builtins's decl is copied in some cases where it is not needed to be copied)
2006-12-21  Andrew Pinski  <pinskia@gmail.com>

        PR C++/30225
        * decl.c (cxx_builtin_function): Only copy the decl if adding
        it to the std namespace

From-SVN: r120145
2006-12-22 00:31:03 -08:00
Kazu Hirata
48c9a7f0db * decl.c: Fix a coment typo.
From-SVN: r120136
2006-12-22 01:10:59 +00:00
Ian Lance Taylor
dfdec7a705 c.opt (Wmissing-declarations): Add C++ and ObjC++.
./:	* c.opt (Wmissing-declarations): Add C++ and ObjC++.
	* doc/invoke.texi (Warning Options): -Wmissing-declarations now
	works for C++.
cp/:
	* decl.c (start_preparsed_function): Add support for
	-Wmissing-declarations.
testsuite:
	* g++.dg/warn/Wmissing-declarations-1.C: New test.

From-SVN: r120012
2006-12-18 19:56:58 +00:00
Manuel López-Ibáñez
253e0d15a5 decl.c (build_enumerator): Update error message to match C front-end.
2006-12-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* decl.c (build_enumerator): Update error message to match C
	front-end.

From-SVN: r119770
2006-12-12 10:40:39 +00:00
Mark Mitchell
762397797c re PR c++/29728 (ICE on invalid initializer in template function)
PR c++/29728
	* decl.c (check_array_designated_initializer): New function.
	(maybe_deduce_size_from_array_init): Use it.
	(reshape_init_array): Likewise.
	PR c++/29728
	* g++.dg/template/crash62.C: New test.

From-SVN: r119558
2006-12-05 21:33:20 +00:00
Andrew Pinski
54e67af0ad re PR c++/30033 (ICE on valid with --std=c++0x (static_assert))
2006-12-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR C++/30033
        * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.

2006-12-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR C++/30033
        *  g++.dg/cpp0x/static_assert4.C: New testcase.

From-SVN: r119449
2006-12-02 09:01:04 -08:00
Geoffrey Keating
72c4a4ca45 decl.c (poplevel): Check DECL_INITIAL invariant.
* decl.c (poplevel): Check DECL_INITIAL invariant.
	(duplicate_decls): Preserve DECL_INITIAL when eliminating
	a new definition in favour of an old declaration.
	(start_preparsed_function): Define and document value of
	DECL_INITIAL before and after routine.
	(finish_function): Check DECL_INITIAL invariant.
	* parser.c 
	(cp_parser_function_definition_from_specifiers_and_declarator): 
	Skip duplicate function definitions.

From-SVN: r119427
2006-12-01 23:01:05 +00:00
Dirk Mueller
1891dec445 re PR c++/18313 (Missing warning for superfluous const's in return types)
2006-12-01  Dirk Mueller  <dmueller@suse.de>

        PR c++/18313
        * decl.c (grokdeclarator): Warn for type qualifiers on return
        type for non-dependent types.
        * pt.c (tsubst_function_type): Warn for type qualifiers on
        return type for dependent types.

        * g++.dg/warn/Wreturn-type-4.C: New testcase.

From-SVN: r119382
2006-11-30 23:08:27 +00:00
Jakub Jelinek
da33778420 re PR c++/29735 (ICE on "main" returning vector)
PR c++/29735
	* decl.c (grokfndecl): Check main's type after applying
	attributes, not before.

	* g++.dg/warn/main-3.C: New test.

From-SVN: r119287
2006-11-28 13:56:53 +01:00
Jakub Jelinek
fd5b5108b0 re PR c++/29570 (ICE with brace-enclosed initializer)
PR c++/29570
	* decl.c (cp_finish_decl): Check for value dependent brace enclosed
	scalar initializer.

	* g++.dg/template/static29.C: New test.

From-SVN: r119045
2006-11-21 10:43:16 +01:00
Simon Martin
02022f3a70 re PR c++/29475 (incomplete template diagnostics.)
PR c++/29475
	* cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
	extra argument that represents the declaration to use to print
	potential error messages.
	* init.c (build_offset_ref): Adjusted the call to
	perform_or_defer_access_check.
	* class.c (alter_access, resolve_address_of_overloaded_function):
	Likewise.
	* decl.c (make_typename_type, make_unbound_class_template): Likewise. 
	* search.c (lookup_member): Likewise.
	* friend.c (add_friend): Likewise.
	* parser.c (cp_parser_template_id,
	cp_parser_pre_parsed_nested_name_specifier): Likewise.
	* semantics.c (finish_non_static_data_member,
	check_accessibility_of_qualified_id, finish_id_expression): Likewise.
	(pop_to_parent_deferring_access_checks, perform_access_checks,
	perform_or_defer_access_check): Adjusted the call to enforce_access.
	* call.c (enforce_access): Use the new extra argument to build the
	error message.
	(build_op_delete_call): Adjusted the call to
	perform_or_defer_access_check.
	(build_over_call): Likewise.

	PR c++/29475
	* g++.dg/template/access19.C: New test.
	* g++.old-deja/g++.other/access11.C: Adjusted the line where the
	error is reported.

From-SVN: r119027
2006-11-20 21:15:44 +00:00
Danny Smith
97388150b4 target.h (targetm.cxx.use_atexit_for_cxa_atexit): New target hook.
* target.h (targetm.cxx.use_atexit_for_cxa_atexit): New target
	hook.
	* target-def.h: (TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT): Define
	default.
	* config/i386/mingw32.h (TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT):
	Override default.
	* doc/tm.texi (TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT): Document.
	* configure.ac (use_cxa_atexit): As a special case, don't test
	for libc definition of __cxa_atexit on mingw32
	* configure: Regenerate.
	* config.gcc (i[34567]86-pc-mingw32): Default to
	enable__cxa_atexit=yes.

cp

	* decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
	if targetm.cxx.use_atexit_for cxa_atexit.
	(start_cleanup_fn): Likewise.
	(register_dtor_fn): Likewise.

From-SVN: r118371
2006-11-01 06:23:12 +00:00
Dirk Mueller
f88d05c05f * decl.c (grokdeclarator): Fix line-wrapping.
From-SVN: r118210
2006-10-30 23:56:15 +00:00
Dirk Mueller
32b1d579ae fix typo
From-SVN: r118209
2006-10-30 23:41:07 +00:00
Dirk Mueller
ebbc3ce18e re PR c++/28704 (%s substituted with "static member"/"free" can't be properly translated)
2006-10-30  Dirk Mueller  <dmueller@suse.de>

       PR c++/28704
       * decl.c (grokdeclarator): Duplicate diagnostic message
       for easier translation.

From-SVN: r118208
2006-10-30 23:32:29 +00:00
Dirk Mueller
a1e45ff04c re PR c++/6321 (no warning for bad main function declaration)
2006-10-30  Dirk Mueller  <dmueller@suse.de>

        PR c++/6321
        * cp/decl.c (grokfndecl): Use check_main_parameter_types.

        * c-common.h (strict_aliasing_warning): Fix whitespace.
        * c-decl (start_function): Move code for main decl warning ..
        * c-common.c (check_main_parameter_types): .. here.
        * c-common.h (check_main_parameter_types): Declare.

From-SVN: r118206
2006-10-30 23:15:42 +00:00
Dirk Mueller
e7c41c9948 re PR c++/28669 (%s substituted with static/non- can't be properly translated)
2006-10-30  Dirk Mueller  <dmueller@suse.de>

       PR c++/28669
       * decl.c (grokfndecl): Duplicate warning message for
       easier translation.

From-SVN: r118205
2006-10-30 23:08:59 +00:00
Kazu Hirata
bd6f7848ee * decl.c: Fix a comment typo.
From-SVN: r118130
2006-10-29 04:38:03 +00:00
Rafael Ávila de Espíndola
c79efc4d2a decl.c: Include langhooks.h.
* gcc/java/decl.c: Include langhooks.h.
       (builtin_function): Remove.
       (java_init_decl_processing): Replace calls to builtin_function
       with add_builtin_function.

       * gcc/java/Make-lang.in (jc1$(exeext)): Depend on and link with
       attribs.o.
       (java/decl.o): Depend on langhooks.h.

       * gcc/java/java-tree.h (builtin_function): Remove.

       * gcc/tree.c (local_define_builtin): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/objc/objc-act.c (synth_module_prologue): Replace calls to
       builtin_function with add_builtin_function.
       (build_next_objc_exception_stuff): Replace calls to
       builtin_function with add_builtin_function.
       (build_objc_exception_stuff): Replace calls to
       builtin_function with add_builtin_function.

       * gcc/objcp/objcp-decl.h (objcp_builtin_function): Remove.

       * gcc/cp/decl.c (builtin_function_1): Move common code to
       add_builtin_function.
       (builtin_function): Rename to cxx_builtin_function.
       Change the signature.

       * gcc/cp/call.c: Include langhooks.h.
       (build_java_interface_fn_ref):  Replace calls to
       builtin_function with add_builtin_function.

       * gcc/cp/Make-lang.in (cp/call.o): Depend on langhooks.h.

       * gcc/cp/cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
       cxx_builtin_function.

       * gcc/cp/cp-tree.h (builtin_function): Rename to cxx_builtin_function.
       Change the signature.

       * gcc/c-objc-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
       c_builtin_function.

       * gcc/c-tree.h (builtin_function): Rename to c_builtin_function. Change
       the signature.

       * gcc/ada/utils.c (builtin_function): Rename to gnat_builtin_function.
       Move common code to add_builtin_function.

       * gcc/ada/misc.c (LANG_HOOKS_BUILTIN_FUNCTION): Define as
       gnat_builtin_function.

       * gcc/ada/gigi.h (builtin_function): Rename to gnat_builtin_function.
       Change the signature.

       * gcc/c-decl.c (builtin_function): Rename to c_builtin_function. Move
       common code to add_builtin_function.

       * gcc/fortran/Make-lang.in (f951$(exeext)): Depend on and link with
       attribs.o.

       * gcc/fortran/trans.h (builtin_function): Rename to
       gfc_builtin_function. Change the signature.

       * gcc/fortran/f95-lang.c (LANG_HOOKS_BUILTIN_FUNCTION): Define as
       gfc_builtin_function.
       (builtin_function): Rename to gfc_builtin_function. Move common
       code to builtin_function.
       (gfc_define_builtin): Replace calls to builtin_function with
       gfc_define_builtin.

       * gcc/langhooks.c (add_builtin_function): New function.
       (lhd_builtin_function): New function.

       * gcc/langhooks.h (struct lang_hooks): Change the signature of
       builtin_function.
       (add_builtin_function): New function.

       * gcc/treelang/treetree.c (builtin_function): Remove.

       * gcc/tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Replace
       calls to lang_hooks.builtin_function with add_builtin_function.

       * gcc/c-common.c (decl_builtin_1): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/config/alpha/alpha.c (alpha_init_builtins): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/config/frv/frv.c (def_builtin): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/config/s390/s390.c (s390_init_builtins): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/config/sparc/sparc.c (def_builtin): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/config/i386/i386.c (def_builtin): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.
       (def_builtin): Replace calls to lang_hooks.builtin_function with
       add_builtin_function.

       * gcc/config/sh/sh.c (sh_media_init_builtins): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/config/c4x/c4x.c (c4x_init_builtins): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/config/stormy16/stormy16.c (xstormy16_init_builtins):
       Replace calls to lang_hooks.builtin_function with
       add_builtin_function.

       * gcc/config/iq2000/iq2000.c (def_builtin):
       Replace calls to lang_hooks.builtin_function with
       add_builtin_function.

       * gcc/config/ia64/ia64.c (def_builtin): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/config/rs6000/rs6000.c (def_builtin): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.
       (altivec_init_builtins): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/config/arm/arm.c (def_mbuiltin): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.
       (arm_init_tls_builtins): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/config/mips/mips.c (mips_init_builtins): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/config/bfin/bfin.c (def_builtin): Replace calls to
       lang_hooks.builtin_function with add_builtin_function.

       * gcc/langhooks-def.h (lhd_builtin_function): New function.
       (LANG_HOOKS_BUILTIN_FUNCTION): Define as lhd_builtin_function.

From-SVN: r117981
2006-10-23 19:47:58 +00:00
Lee Millward
72f8fc592b re PR c++/27952 (ICE with invalid virtual inheritance)
PR c++/27952
        * cp-tree.h (xref_basetypes): Return bool instead of void.
        * decl.c (xref_basetypes): Adjust definition. Return false
        if the class bases are invalid.
        * parser.c (cp_parser_class_head): Check the return value
        from xref_basetypes.

        * g++.dg/inherit/virtual1.C: New test.

From-SVN: r117839
2006-10-17 23:22:14 +00:00
Mark Mitchell
05b22df961 re PR c++/27270 (ICE in process_init_constructor_array, at cp/typeck2.c:788)
PR c++/27270
	* decl.c (reshape_init_class): Move check for designated
	to ...
	* parser.c (cp_parser_initializer_list): ... here.
	* pt.c (tsubst_copy_and_build): Use finish_compound_literal.
	PR c++/27270
	* g++.dg/ext/complit8.C: Tweak error markers.
	* g++.dg/template/complit1.C: Add error marker.

From-SVN: r117832
2006-10-17 22:25:35 +00:00
Lee Millward
650fcd0729 re PR c++/27961 (ICE on invalid template declaration)
PR c++/27961
       * decl.c (start_decl): Return error_mark_node if a
       function is initialized like a variable.
       (check_var_type): If a variable of field is declared void,
       set the type to error_mark_node.
       (grokdeclarator): Check the return type of check_var_type.
       * class.c (finish_struct_1): Robustify.

       * g++.dg/template/crash60.C: New test.
       * g++.dg/other/large-size-array.C: Adjust error markers.
       * g++.dg/parse/crash27.C: Likewise.
       * g++.dg/template/crash1.C: Likewise.

From-SVN: r117671
2006-10-12 20:02:53 +00:00
Mark Mitchell
f724eac4c5 re PR c++/29175 (ICE on invalid C++ variable length array)
PR c++/29175
	* decl.c (check_initializer): Issue errors about trying to
	initialize arrays whose elements have variable size.
	PR c++/29175
	* g++.dg/init/array24.C: New test.

From-SVN: r117658
2006-10-12 04:35:56 +00:00
Lee Millward
2610654299 re PR c++/29024 (storage class specifier accepted for typedef (clause 7.1.1 ; 1))
PR c++/29024
        * cp-tree (struct cp_decl_specifier_seq): Rename to 
        conflicting_specifiers_p
        * parser.c (cp_parser_set_storage_class): Set
        conflicting_specifiers_p for the input decl specifier 
        if a typedef specifier is present. Rename uses of
        multiple_specifiers_p to conflicting_specifiers_p.
        (cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage 
        class specifier has already been set for this declaration, 
        set conflicting_specifiers_p to true on the decl_specs.
        * decl.c (grokdeclarator): Rename uses of
        multiple_specifiers_p to conflicting_specifiers_p.

        * g++.dg/parse/typedef8.C: New test.
        * g++.dg/other/mult-stor1.C: Adjust error markers.

From-SVN: r117641
2006-10-11 19:31:33 +00:00
Richard Guenther
be0436d7d9 re PR rtl-optimization/29323 (set_nothrow_function_flags does invalid analysis on weak functions)
2006-10-10  Richard Guenther  <rguenther@suse.de>

	PR rtl-optimization/29323
	* except.c (set_nothrow_function_flags): For functions
	that do not bind local bail out early.

	* decl.c (finish_function): Set TREE_NOTHROW only for
	functions that bind local.

From-SVN: r117598
2006-10-10 08:27:02 +00:00
Richard Henderson
a98d4769d5 Revert emutls patch.
From-SVN: r117578
2006-10-09 09:27:14 -07:00
Richard Henderson
e701a32a98 Makefile.in (libgcc.mk, [...]): Add emutls.c.
gcc/
        * Makefile.in (libgcc.mk, LIBGCC_DEPS): Add emutls.c.
        * builtin-types.def (BT_WORD): Make unsigned.
        (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
        * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
        (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
        * c-decl.c (grokdeclarator): Don't error if !have_tls.
        * c-parser.c (c_parser_omp_threadprivate): Likewise.
        * cgraph.c (decide_is_variable_needed): Look at force_output.
        Recurse for emulated tls.
        * cgraphunit.c (cgraph_varpool_remove_unreferenced_decls): Remove
        checks redundant with decide_is_variable_needed.
        (cgraph_build_static_cdtor): Do cgraph_varpool_assemble_pending_decls.
        * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
        emulated tls.
        * expr.c (emutls_var_address): New.
        (expand_expr_real_1): Expand emulated tls.
        (expand_expr_addr_expr_1): Likewise.
        * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
        * output.h (emutls_finish): Declare.
        * toplev.c (compile_file): Call it.
        * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
        address before wrapping in CONST.
        * varasm.c (emutls_htab, emutls_object_type): New.
        (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
        (get_emutls_object_name, get_emutls_object_type): New.
        (get_emutls_init_templ_addr, emutls_decl): New.
        (emutls_common_1, emutls_finish): New.
        (assemble_variable): When emulating tls, swap decls; generate
        constructor for the emutls objects.
        (do_assemble_alias): When emulating tls, swap decl and target name.
        (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
        for emulated tls.
        * emutls.c: New file.
        * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
        tls_object for real tls.

gcc/cp/
        * decl.c (grokvardecl): Don't error if !have_tls.
        (grokdeclarator): Likewise.
        * parser.c (cp_parser_omp_threadprivate): Likewise.

gcc/fortran/
        * f95-lang.c (gfc_init_builtin_functions): Add __emutls_get_address
        and __emutls_register_common.
        * openmp.c (gfc_match_omp_threadprivate): Don't error if !have_tls.
        * trans-common.c (build_common_decl): Don't check have_tls.
        * trans-decl.c (gfc_finish_var_decl): Likewise.
        * types.def (BT_WORD, BT_FN_PTR_PTR): New.
        (BT_FN_VOID_PTR_WORD_WORD_PTR): New.

gcc/testsuite/
        * lib/target-supports.exp (check_effective_target_tls): Redefine
        to mean non-emulated tls.
        * gcc.dg/tls/alias-1.c: Remove tls requirement.
        * gcc.dg/tls/asm-1.c, gcc.dg/tls/debug-1.c, gcc.dg/tls/diag-1.c,
        gcc.dg/tls/diag-2.c, gcc.dg/tls/diag-3.c, gcc.dg/tls/diag-4.c,
        gcc.dg/tls/diag-5.c, gcc.dg/tls/init-1.c, gcc.dg/tls/nonpic-1.c,
        gcc.dg/tls/opt-10.c, gcc.dg/tls/opt-5.c, gcc.dg/tls/opt-6.c,
        gcc.dg/tls/opt-8.c, gcc.dg/tls/opt-9.c, gcc.dg/tls/pic-1.c,
        gcc.dg/tls/struct-1.c, gcc.dg/tls/trivial.c: Likewise.

From-SVN: r117440
2006-10-04 14:09:20 -07:00
Lee Millward
60feef2c2d re PR c++/27329 (ICE with misplaced expression)
PR c++/27329
        PR c++/26938
        * cp-tree.h (redeclare_class_template): Adjust declaration
        to return bool instead of void.
        * pt.c (redeclare_class_template): Update definition. Return
        false on error.
        * decl.c (xref_tag): Return error_mark_node if redeclare_class_template
        returned false.

        * g++.dg/template/crash58.C: New test.
        * g++.dg/template/crash59.C: New test.
        * g++.dg/parse/crash28.C: Adjust error markers.
        * g++.dg/template/crash34.C: Likewise.
        * g++.dg/template/friend31.C: Likewise.
        * g++.dg/template/crash32.C: Likewise.

From-SVN: r117205
2006-09-25 19:45:34 +00:00
Lee Millward
32273f9fa6 re PR c++/28303 (ICE on invalid typedef)
PR c++/28303
        * decl.c (grokdeclarator): Return error_mark_node on
        declaration with two or more data types.

        * g++.dg/template/typedef6.C: New test.
        * g++.dg/init/error1.C: Adjust error markers.
        * g++.dg/parse/crash9.C: Likewise.
        * g++.dg/template/crash55.C: Likewise.

From-SVN: r117118
2006-09-21 18:33:49 +00:00
Lee Millward
d2a8ac2cf2 re PR c++/28861 (ICE on invalid in-class specialization)
PR c++/28861
        * decl.c (shadow_tag): Return error_mark_node
        if maybe_process_partial_specialization failed.

        * g++.dg/template/spec32.C: New test.
        * g++.dg/parse/crash9.C: Adjust error markers.

From-SVN: r117117
2006-09-21 18:22:11 +00:00
Zak Kipling
c533e34d79 re PR c++/26195 (pragma interface no longer handles explicit names)
PR c++/26195
        * decl.c (make_rtl_for_nonlocal_decl),
        (start_preparsed_function): Don't use lbasename on
        input_filename when calling get_fileinfo.
        * semantics.c (begin_class_definition): Likewise.
        * lex.c (cxx_make_type): Likewise.
        (handle_pragma_interface): Call get_fileinfo on input_filename,
        not on the parameter to the directive.

From-SVN: r116740
2006-09-07 02:53:21 -04:00
Jason Merrill
ccbe00a43a re PR c++/26696 (ICE with statement forming unused static member function reference)
PR c++/26696
        * cvt.c (convert_to_void): Replace a subexpression with no side
        effects with void_zero_node.
        * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
        (get_first_fn): Ditto.
        * decl.c (grokdeclarator): No need to look through COMPONENT_REF.

From-SVN: r116724
2006-09-06 13:06:00 -04:00
Volker Reichelt
398cd19904 re PR c++/28852 (ICE on invalid conversion operator)
PR c++/28852
	* cp-tree.h (grok_op_properties): Return bool instead of void.
	* decl.c (grokfndecl): Discard invalid operator declarations.
	(copy_fn_p): Revert change for PR 27547.
	(grok_op_properties): Return error status (true on success).
	* pt.c (tsubst_decl): Discard invalid operator declarations.

	* g++.dg/other/operator1.C: Add error-marker.
	* g++.dg/other/operator2.C: New test.

From-SVN: r116463
2006-08-26 00:25:59 +00:00
Mark Mitchell
2884e22c4b re PR c++/28056 (enum accepted as scope)
PR c++/28056
	* decl.c (grokdeclarator): Disallow declarations with qualified
	names in local scopes.
	PR c++/28056
	* g++.dg/parse/local1.C: New test.

From-SVN: r116410
2006-08-25 17:03:50 +00:00
Nathan Sidwell
7d3bec9db5 re PR c++/27787 (Qualified lookup fails to find inherited class template)
cp/
	PR c++/27787
	* decl.c (make_typename_type): Only try and resolve it when
	context is not dependent.  Refactor.
	* decl2.c (check_classfn): Push to class scope before looking for
	the function.
testsuite/
	PR c++/27787
	* g++.dg/template/typename10.C: New.
	* g++.dg/template/lookup4.C: Remove bogus error marker.

From-SVN: r116409
2006-08-25 16:56:07 +00:00
Lee Millward
dc5395cc64 Fix typo from a previous commit
From-SVN: r116305
2006-08-21 18:43:36 +00:00
Lee Millward
623c65f173 re PR c++/28505 (ICE with invalid constructors)
PR c++/28505
        * decl.c (grokdeclarator): Return early after
        issuing diagnostic about an incomplete type.

        * g++.dg/parse/ctor7.C: New test.
        * g++.dg/parse/ctor8.C: Likewise.

From-SVN: r116302
2006-08-21 17:34:44 +00:00
Lee Millward
18ff35c669 re PR c++/26269 (Declaring a variable too late yields bogus error message)
PR c++/26269
        * decl.c (duplicate_decls): Return early if either
        newdecl or olddecl is error_mark_node.

        * g++.dg/other/error14.C: New test.

From-SVN: r116301
2006-08-21 17:27:48 +00:00
Volker Reichelt
b646edb85c re PR c++/28710 (ICE redeclaring template as non-template)
PR c++/28710
	* decl.c (xref_tag): Improve error message.  Return early on error.

	* g++.dg/template/redecl4.C: New test.

From-SVN: r116211
2006-08-17 08:06:27 +00:00
Lee Millward
cc011e7f12 re PR c++/28347 (ICE on typedef with initialization)
PR c++/28347
        * decl.c (start_decl): Return error_mark_node if a 
        diagnostic was issed for an invalid typedef initialization.

        * g++.dg/ext/typedef-init.C: Add new test for 
        typedef initialization inside templates. Adjust
        existing error markers

From-SVN: r115931
2006-08-04 18:08:14 +00:00
Volker Reichelt
4a2f6dc05b re PR c++/28274 (Redeclaration with extra default argument doesn't work)
PR c++/28274
	* decl.c (duplicate_decls): Call check_default_args here.
	(start_preparsed_function): Do not call check_default_args.
	* name-lookup.c (pushdecl_maybe_friend): Only call
	check_default_args if duplicate_decls got bypassed.

	* g++.dg/other/default5.C: New test.

From-SVN: r115893
2006-08-03 02:30:49 +00:00
Steve Ellcey
f47165c975 re PR c++/28256 (ICE with empty initializer)
PR c++/28256
	* decl.c (check_initializer): Check for 1 initializer on scalar types.
	* g++.dg/init/brace2.C: Change expected error message, add empty init.

From-SVN: r115856
2006-08-01 16:31:40 +00:00
Volker Reichelt
5d48268fad re PR c++/6634 (wrong parsing of "long long double")
PR c++/6634
	* decl.c (grokdeclarator): Check whether "long" or "short" was
	specified for non-integral types.

	* g++.dg/parse/long1.C: Add more tests.

From-SVN: r115843
2006-07-31 22:52:20 +00:00
Volker Reichelt
709f9dcf15 re PR c++/27572 (ICE on typedef in parameter declaration)
PR c++/27572
	* decl.c (grokdeclarator): Return error_mark_node after invalid
	typedef.

	* g++.dg/other/typedef1.C: New test.
	* g++.dg/template/typedef4.C: New test.
	* g++.dg/template/typedef5.C: New test.

From-SVN: r115729
2006-07-25 00:57:10 +00:00
Daniel Jacobowitz
74b0d490fa re PR c++/28460 (g++ emits bogus namespace DIE)
PR c++/28460
	* decl.c (grokvardecl): Use FROB_CONTEXT.
	* pt.c (register_specialization): Likewise.

From-SVN: r115703
2006-07-24 02:58:08 +00:00
Mark Mitchell
105d72c595 re PR c++/28025 (multiple template friend compile error)
PR c++/28025
	* cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
	* name-lookup.c (unqualified_namespace_lookup): There is no way to
	have a hidden name in non-namespace scopes.
	* pt.c (tsubst_friend_class): Look for hidden names.
	* decl.c (lookup_and_check_tag): Fix typo in comment.
	* semantics.c (finish_compound_literal): Fix typo in comment.
	PR c++/28025
	* g++.dg/template/friend45.C: New test.

From-SVN: r115687
2006-07-23 20:28:26 +00:00
Jason Merrill
b70f0f48c7 re PR c++/28407 (Issue with anonymous namespace)
PR c++/28407
        * cp/decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
        const variables with implicit internal linkage.
        * cp/tree.c (decl_linkage): Only return lk_external if it's set.

        PR c++/28409
        * cp/decl2.c (constrain_visibility): Ignore the anonymous namespace 
        for extern C decls.
        (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.

        Don't override explicit visibility.
        * cp/decl2.c (constrain_visibility): Remove specified and reason
        parameters.  Don't touch decls that already have explicit visibility.
        (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
        template.
        (determine_visibility_from_class): Reverse sense of
        DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
        (constrain_class_visibility): Only complain about member visibility
        if the member type is another class.  Don't change visibility of the
        current class.
        * tree.c (remove_attribute): New fn.
        * tree.h: Declare it.

From-SVN: r115622
2006-07-20 12:02:57 -04:00
Mark Mitchell
d23f3d6092 re PR c++/28338 (ICE/rejects-valid with references)
PR c++/28338
	* decl.c (layout_var_decl): Don't call push_local_name here.
	(initialize_artificial_var): Assert artificiality.
	(cp_finish_decl): Call push_local_name here.
	PR c++/28338
	* g++.dg/init/ref13.C: New test.

From-SVN: r115600
2006-07-19 22:49:20 +00:00
Lee Millward
492b73bda9 re PR c++/28258 (ICE with invalid constructor)
PR c++/28258
	* method.c (locate_copy): Check for non_reference
	returning error_mark_node.

        PR c++/28260
	* decl.c (duplicate_decls): Return error_mark_node
	on ambiguous declaration.

	PR c++/28258
	* g++/dg/other/error13.C: New test.

	PR c++/28260
	* g++.dg/template/friend44.C: New test.

From-SVN: r115561
2006-07-18 17:22:39 +00:00
Steve Ellcey
77bffd4cee re PR c++/28291 (ICE on invalid designated initializer)
PR c++/28291
	* decl.c (reshape_init_class): Return error_mark_node on error.

From-SVN: r115523
2006-07-17 15:28:17 +00:00