aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-decl.c
AgeCommit message (Collapse)AuthorFilesLines
2004-08-06tree.c (handle_dll_attribute): Move here from i383/winnt.c.Mark Mitchell1-0/+9
* tree.c (handle_dll_attribute): Move here from i383/winnt.c. Replace use of DECL_INLINE with DECL_DECLARED_INLINE_P. Set DECL_VISIBLITY. Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if. * tree.h (handle_dll_attribute): Declare. Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if. * c-common.h (c_determine_visibility): Declare. * c-common.c (c_determine_visibility): New function. * c-decl.c (finish_decl): Use it. (finish_function): Likewise. * defaults.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define it to zero, by default. Use #if, not #ifdef, to test it. * config/arm/arm.c (arm_attribute_table): Use handle_dll_attribute. Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if. * config/arm/pe.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define to 1. * config/i386/cygming.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define to 1. * config/i386/i386-protos.h (ix86_handle_dll_attribute): Remove. * config/i386/i386.c (ix86_attribute_table): Use handle_dll_attribute for dllimport/dllexport. Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if. * config/i386/winnt.c (ix86_handle_dll_attribute): Remove. * config/mcore/mcore.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define it to 1. * config/mcore/mcore.c (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Test it with #if. * config/sh/symbian-pre.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define it to 1. * doc/extend.texi (dllexport): Clarify and correct documentation. (dllimport): Likewise. * doc/tm.texi (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Mention handle_dll_attribute. * decl.c (start_preparsed_function): Move determine_visibility call. * decl2.c (determine_visibility): Incorporate dllexport testing. * g++.dg/ext/visibility/assign1.C: Use scan-hidden and dg-require-visiblity. * g++.dg/ext/visibility/fvisibility-inlines-hidden.C: Likewise. * g++.dg/ext/visibility/fvisibility.C: Likewise. * g++.dg/ext/visibility/memfuncts.C: Likewise. * g++.dg/ext/visibility/new1.C: Likewise. * g++.dg/ext/visibility/pragma.C: Likewise. * g++.dg/ext/visibility/staticmemfuncts.C: Likewise. * g++.dg/ext/visibility/virtual.C: Likewise. * g++/dg/ext/visibility/visibility-1.C: Likewise. * g++/dg/ext/visibility/visibility-2.C: Likewise. * g++/dg/ext/visibility/visibility-3.C: Likewise. * g++/dg/ext/visibility/visibility-4.C: Likewise. * g++/dg/ext/visibility/visibility-5.C: Likewise. * g++/dg/ext/visibility/visibility-6.C: Likewise. * g++/dg/ext/visibility/visibility-7.C: Likewise. * g++/dg/ext/visibility/visibility-8.C: New test. * gcc.c-torture/compile/dll.x: Remove. * gcc.dg/dll-2.c: Use dg-require-dll * gcc.dg/visibility-10.c: New test. * lib/gcc-dg.exp (dg-require-dll): Add Symbian to list of targets supporting DLLs. * testsuite/lib/scanasm.exp (scan_hidden): New function. (scan_not_hidden): Likewise. From-SVN: r85621
2004-08-05re PR c/14516 (-fleading-underscore does not work correctly for file static ↵Geoffrey Keating1-71/+61
variables) 2004-08-04 Geoffrey Keating <geoffk@apple.com> PR 14516 * c-common.c (c_expand_decl): Don't special-case static VAR_DECLs. * c-common.h (make_rtl_for_local_static): Delete. * c-decl.c (shadow_tag_warned): Clean up comment. (finish_decl): Clean up spacing. Use set_user_assembler_name when appropriate. Don't pass asmspec to rest_of_decl_compilation. * c-semantics.c (make_rtl_for_local_static): Delete. * expr.c (init_block_move_fn): Use set_user_assembler_name. (init_block_clear_fn): Likewise. * passes.c (rest_of_decl_compilation): Remove asmspec parameter, expect it to be in DECL_ASSEMBLER_NAME. Update callers in many files. * toplev.h (rest_of_decl_compilation): Remove asmspec parameter. * tree.h (make_decl_rtl): Remove second parameter. (set_user_assembler_name): New. * varasm.c (set_user_assembler_name): New. (make_decl_rtl): Remove second parameter. Update callers in many files. Index: cp/ChangeLog 2004-08-04 Geoffrey Keating <geoffk@apple.com> * decl.c (make_rtl_for_nonlocal_decl): Set DECL_ASSEMBLER_NAME rather than passing it as a parameter to rest_of_decl_compilation. * decl2.c (grokfield): Use set_user_assembler_name. From-SVN: r85593
2004-08-04re PR target/14680 (reload_cse_simplify_operands triggers internal error on ↵Zack Weinberg1-2/+5
sparc64 when compiling netpbm) PR 14680 * c-decl.c (record_builtin_type): Call debug_hooks->type_decl on the new decl. From-SVN: r85545
2004-08-03c-decl.c (implicitly_declare): Diagnose incompatible implicit declarations.Joseph Myers1-0/+17
* c-decl.c (implicitly_declare): Diagnose incompatible implicit declarations. testsuite: * gcc.dg/redecl-5.c: New test. * gcc.dg/format/attr-6.c: Expect warning for implicit declaration of scanf. From-SVN: r85509
2004-07-31c-decl.c (diagnose_mismatched_decls): Give error for external redeclaration ↵Joseph Myers1-6/+10
of identifier declared with no linkage... * c-decl.c (diagnose_mismatched_decls): Give error for external redeclaration of identifier declared with no linkage, not just warning with -Wtraditional. Do not check DECL_CONTEXT to give error for redeclaration with no linkage. testsuite: * gcc.dg/redecl-2.c: New test. From-SVN: r85386
2004-07-29c-decl.c (complete_array_type): Don't gratuitously copy maxindex.Nathan Sidwell1-2/+1
* c-decl.c (complete_array_type): Don't gratuitously copy maxindex. Check it always has a type. From-SVN: r85288
2004-07-26c-common.c (disable_builtin_function): Rename variable n to ↵Bernardo Innocenti1-17/+21
new_disabled_builtin. * c-common.c (disable_builtin_function): Rename variable n to new_disabled_builtin. * c-decl.c (duplicate_decls): Rename parameter decl to new_decl. Rename local variable old to old_decl. * gensupport.c (shift_output_template): Rename parameter old to src. * simplify-rtx.c (simplify_replace_rtx): Rename parameter oldx to old_rtx and newx to new_rtx. From-SVN: r85175
2004-07-25re PR c++/9283 (__attribute__((visibility ("hidden"))) not supported for ↵Niall Douglas1-6/+8
class/struct) PR c++/9283 PR c++/15000 * c-common.c (c_common_attribute_table): Allow handle_visibility_attribute to be called for types. (handle_visibility_attribute) When given a type, set the visibility bits on the TYPE_NAME. When given a decl, don't set no_add_attrs so that we can check later whether the attribute was present. Added warning if attribute applied to non class type. * c-decl.c (diagnose_mismatched_decls): Updated rules for merging decls and checking that they are consistent. * common.opt: Added -fvisibility. * c.opt, c-opts.c: Added -fvisibility-inlines-hidden. * c-pragma.h, c-pragma.c: Added handle_pragma_visibility(). * flags.h, tree.h: Added assorted support defines for overall patch * opts.c: Added parsing support for -fvisibility. * tree.c (build_decl): Set visibility for all decls to be whatever is in force at that time. * varasm.c (default_binds_local_p_1): Reworked logic determining when to make a symbol locally bound. * doc/invoke.texi: Added documentation for -fvisibility and -fvisibility-inlines-hidden. PR c++/15000 PR c++/9283 * class.c (check_field_decls): Apply hidden visibility if -fvisibility-inlines-hidden and inlined unless otherwise specified (build_vtable): Set vtable visibility to class visibility. (check_field_decls): Default static member visibility to class visibility. (check_methods): Default method visibility to class visibility. * cp-tree.h: Added CLASSTYPE_VISIBILITY and CLASSTYPE_VISIBILITY_SPECIFIED macro. * decl.c (duplicate_decls): New logic for merging definition decls with declaration decls. Added ignore & warning when non default applied to global operator new or delete. * method.c, optimize.c, rtti.c: Added setting of VISIBILITY_SPECIFIED wherever VISIBILITY was changed * rtti.c (get_tinfo_decl): Set typeinfo visibility to class visibility. (tinfo_base_init): Set typeinfo name visibility to class visibility. PR c++/9283 PR c++/15000 * gcc.dg/visibility-9.c, gcc.dg/visibility-a.c: New tests. * g++.dg/ext/visibility/: New directory. * g++.dg/ext/visibility-1.C, g++.dg/ext/visibility-2.C g++.dg/ext/visibility-3.C, g++.dg/ext/visibility-4.C, g++.dg/ext/visibility-5.C, g++.dg/ext/visibility-6.C, g++.dg/ext/visibility-7.C: Move to g++.dg/ext/visibility/. * g++.dg/ext/visibility/fvisibility.C, g++.dg/ext/visibility/fvisibility-inlines-hidden.C, g++.dg/ext/visibility/fvisibility-override1.C g++.dg/ext/visibility/fvisibility-override2.C g++.dg/ext/visibility/memfuncts.C g++.dg/ext/visibility/noPLT.C g++.dg/ext/visibility/pragma.C g++.dg/ext/visibility/pragma-override1.C g++.dg/ext/visibility/pragma-override2.C g++.dg/ext/visibility/staticmemfuncts.C g++.dg/ext/visibility/virtual.C: New tests. Co-Authored-By: Brian Ryner <bryner@brianryner.com> From-SVN: r85167
2004-07-26basic-block.h (reorder_block_def): Rename to reorder_block_def_p.Bernardo Innocenti1-1/+1
* basic-block.h (reorder_block_def): Rename to reorder_block_def_p. * c-common.c: Add missing casts from void * to other types. * c-decl.c: Likewise. * c-format.c: Likewise. * c-lex.c: Likewise. * c-pragma.c: Likewise. * c-typeck.c: Likewise. * defaults.h: Likewise. * genconstants.c: Likewise. * gengtype-lex.l: Likewise. * genmodes.c: Likewise. * read-rtl.c: Likewise. * rtl.c: Likewise. From-SVN: r85166
2004-07-25bitmap.c: Use type-safe memory allocation macros from libiberty.Bernardo Innocenti1-10/+11
* bitmap.c: Use type-safe memory allocation macros from libiberty. * c-common.c: Likewise. * c-decl.c: Likewise. * c-lang.c: Likewise. * c-lex.c: Likewise. * c-opts.c: Likewise. * c-parse.in: Likewise. * c-typeck.c: Likewise. * genconditions.c: Likewise. * gengtype-lex.l: Likewise. * gengtype-yacc.y: Likewise. * gengtype.c: Likewise. * genmodes.c: Likewise. * gensupport.c: Likewise. * read-rtl.c: Likewise. * read-rtl.c (read_constants): Use INSERT instead of TRUE in call to htab_find_slot(). From-SVN: r85163
2004-07-25c-decl.c (groktypename, [...]): Rename variable typename to type_name.Bernardo Innocenti1-12/+12
* c-decl.c (groktypename, groktypename_in_param_context): Rename variable typename to type_name. * c-lex.c (interpret_float): Likewise. From-SVN: r85161
2004-07-25c-common.c: Rename all identifiers named `new'.Bernardo Innocenti1-11/+11
* c-common.c: Rename all identifiers named `new'. * c-decl.c: Likewise. * gensupport.c: Likewise. * simplify-rtx.c: Likewise. From-SVN: r85159
2004-07-25re PR c/15360 (c99: extern w/initializer; extern w/internal linkage)Joseph Myers1-2/+7
PR c/15360 * c-decl.c (start_decl): Do not set DECL_EXTERNAL for initialized declarations until after calling pushdecl. (grokdeclarator): Set DECL_EXTERNAL for variables based on use of "extern" and not on whether the declaration is initialized. testsuite: * gcc.dg/pr15360-1.c: New test. From-SVN: r85156
2004-07-25c-common.c: Rename all identifiers named `class' to `cl'.Bernardo Innocenti1-3/+3
* c-common.c: Rename all identifiers named `class' to `cl'. * c-decl.c: Likewise. * c-common.h: Likewise. * c-parse.in: Likewise. * c-typeck.c: Likewise. * genmodes.c: Likewise. * real.c: Likewise. * real.h: Likewise. * recog.c: Likewise. * recog.h: Likewise. * regrename.c: Likewise. * tree.h: Likewise. From-SVN: r85153
2004-07-25c-decl.c (start_function): Set DECL_ARTIFICIAL and DECL_IGNORED_P on the ↵Richard Henderson1-3/+6
RESULT_DECL. * c-decl.c (start_function): Set DECL_ARTIFICIAL and DECL_IGNORED_P on the RESULT_DECL. * cgraphunit.c (cgraph_build_static_cdtor): Likewise. * integrate.c (copy_decl_for_inlining): Copy DECL_ARTIFICIAL and DECL_IGNORED_P to new decl. ada/ * utils.c (create_subprog_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P on RESULT_DECL. cp/ * decl.c (start_preparsed_function): Set DECL_ARTIFICIAL and DECL_IGNORED_P on RESULT_DECL. * semantics.c (finalize_nrv): Copy them too. fortran/ * trans-decl.c (gfc_build_function_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P on RESULT_DECL. (gfc_generate_constructors): Likewise. java/ * decl.c (build_result_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P. From-SVN: r85145
2004-07-25Zack Weinberg <zack@codesourcery.comZack Weinberg1-0/+5
2004-07-24 Alexander Kabaev <kan@freebsd.org> Zack Weinberg <zack@codesourcery.com PR 16684 * c-decl.c (diagnose_mismatched_decls): Don't issue a redundant-declaration warning the first time a builtin is declared explicitly. testsuite: * gcc.dg/Wredundant-decls-1.c: New test case. From-SVN: r85140
2004-07-25c-common.c: Convert ATTRIBUTE_UNUSED to ARG_UNUSED in parameter lists.Bernardo Innocenti1-1/+1
* c-common.c: Convert ATTRIBUTE_UNUSED to ARG_UNUSED in parameter lists. * c-decl.c: Likewise. * c-format.c: Likewise. * c-lex.c: Likewise. * c-opts.c: Likewise. * c-pragma.c: Likewise. * c-typeck.c: Likewise. * gencheck.c: Likewise. * genconditions.c: Likewise. * genconfig.c: Likewise. * genflags.c: Likewise. * gengtype.c: Likewise. * gensupport.c: Likewise. * ggc-none.c: Likewise. * langhooks.c: Likewise. * statistics.h: Likewise. * stub-objc.c: Likewise. * java/decl.c: Likewise. From-SVN: r85128
2004-07-23c-decl.c (start_function): Form composite type of function types rather than ↵Joseph Myers1-1/+2
copying type from previous... * c-decl.c (start_function): Form composite type of function types rather than copying type from previous prototype declaration. testsuite: * gcc.dg/comp-return-1.c: New test From-SVN: r85093
2004-07-22re PR c/15052 (gcc frontend accepts mismatched function declaration/defintion)Joseph Myers1-18/+12
PR c/15052 * c-decl.c (grokdeclarator): Only pedwarn for qualified void return type on function definitions. Move other warnings for qualified return type to -Wreturn-type. Do not condition any such warnings on -pedantic. Update comments. (start_function): Only copy function type from previous prototype declaration if return types are compatible. * c-typeck.c (function_types_compatible_p): Don't condition warning for incompatibility of volatile qualifiers on the return type on -pedantic. Update comment. * doc/invoke.texi (-Wreturn-type, -Wextra): Update. testsuite: * gcc.dg/noreturn-5.c: Test qualifiers on function type instead of on return type. * gcc.dg/qual-return-1.c: Use -Wreturn-type. Update expected messages. * gcc.dg/qual-return-2.c: Update expected messages. * gcc.dg/qual-return-3.c, gcc.dg/qual-return-4.c: New tests. From-SVN: r85024
2004-07-21builtins.c (expand_builtin_setjmp_receiver): Fix comment for code removal.Eric Christopher1-5/+3
2004-07-21 Eric Christopher <echristo@redhat.com> * builtins.c (expand_builtin_setjmp_receiver): Fix comment for code removal. * c-decl.c (pop_scope): Ditto. * calls.c (expand_call): Remove call to current_nesting_level, update comment accordingly. Remove calls to expand_start_target_temps and expand_end_target_temps. * cfgexpand.c (construct_init_block): Remove call to expand_start_bindings_and_block. (construct_exit_block): Remove call to expand_end_bindings. * expr.c (safe_from_p): Remove BIND_EXPR handling. (expand_expr_real_1): Ditto. Fix formatting. (expand_vars): Delete. * stmt.c (POPSTACK): Remove block_stack. (stmt_status): Remove x_block_stack. (block_stack): Delete. (expand_start_bindings_and_block): Ditto. (expand_start_target_temps): Ditto. (expand_end_target_temps): Ditto. (current_nesting_level): Ditto. (warn_about_unused_variables): Ditto. (expand_end_bindings): Ditto. * tree.h: Remove declarations for above. 2004-07-21 Eric Christopher <echristo@redhat.com> * decl.c (poplevel): Inline unused variable checking. Change formatting. From-SVN: r85019
2004-07-15* Fix for g++/15861Frank Ch. Eigler1-1/+1
2004-07-15 Frank Ch. Eigler <fche@redhat.com> g++/15861 * cgraphunit.c (cgraph_build_static_cdtor): Add priority argument. * cgraph.h: Update declaration. * c-decl.c (build_cdtor): Update call with default priority. * coverage.c (create_coverage): Ditto. * tree-mudflap.c (mf_init_fndecl): New tree. (mudflap_init): Set it. (mudflap_register_call): Arrange to call __mf_init before the first __mf_register call. (mudflap_finish_file): Mark the mudflap static initializer as extra high priority, to beat all C++ static constructors. 2004-07-15 Frank Ch. Eigler <fche@redhat.com> g++/15861 * jcf-parse.c (java_emit_static_constructor): Specify default priority. From-SVN: r84760
2004-07-09c-opts.c (c_common_post_options): Force unit-at-a-time mode on when we have ↵Zack Weinberg1-20/+43
more than one input file. 2004-07-09 Zack Weinberg <zack@codesourcery.com> Andrew Pinski <apinski@apple.com> * c-opts.c (c_common_post_options): Force unit-at-a-time mode on when we have more than one input file. (c_common_parse_file): Restore loop over all input files. Clarify diagnostic for -dy when YYDEBUG wasn't defined. * c-decl.c (set_type_context): New function. (pop_scope): Use it to set context of types. When we encounter a TYPE_DECL, set the context of the attached type too. (pop_file_scope): Don't call cpp_undef_all here. (diagnose_mismatched_decls): Do not complain about a second definition of an 'extern inline' function if it's not in the same translation unit. Do not complain about inline declaration after use if the use was in a different translation unit. (merge_decls): Don't clobber olddecl's DECL_CONTEXT. (pushdecl): Do not put DECL_EXTERNAL, !TREE_PUBLIC decls in the external scope. (pushdecl_top_level): Likewise. (grokdeclarator): Clarify what is going on with setting DECL_EXTERNAL on function types, a little. (c_write_global_declarations): Don't do anything if -fsyntax-only or errors have been encountered. testsuite: * gcc.dg/noncompile/init-4.c: Remove bogus dg-error marker. From-SVN: r84402
2004-07-08c-decl.c (static_ctors, [...]): Make static.Zack Weinberg1-15/+55
* c-decl.c (static_ctors, static_dtors): Make static. (pop_file_scope): Call c_common_write_pch and cgraph_finalize_compilation_unit here. (build_cdtor): Moved here from c-objc-common.c; simplify. (c_write_global_declarations_1): Clarify comment. (c_write_global_declarations): Close the external scope before doing anything else. Call build_cdtor, cgraph_optimize, and mudflap_finish_file here. * c-lang.c (finish_file): Don't call c_objc_common_finish_file. Clarify comment. * c-objc-common.c: No need to include cgraph.h. (build_cdtor): Moved to c-decl.c. (c_objc_common_finish_file): Delete. * c-tree.h: Update to match. * objc/objc-act.c (finish_file): Don't call c_objc_common_finish_file. (generate_static_references): Set TREE_USED before calling finish_decl. Eliminate unnecessary dummy declaration. Call rest_of_decl_compilation on the static_instances_decl. From-SVN: r84307
2004-07-08c-decl.c (pop_scope): Do not set DECL_CONTEXT on file-scope decls when...Zack Weinberg1-4/+6
* c-decl.c (pop_scope): Do not set DECL_CONTEXT on file-scope decls when there is only one input translation unit. * langhooks.c (lhd_set_decl_assembler_name): Partially revert change of 2004-07-05; do not treat declarations with DECL_CONTEXT a TRANSLATION_UNIT_DECL specially. * opts.c (cur_in_fname): Delete. * opts.h: Likewise. * tree.c: Revert changes of 2004-07-05; no special treatment for TRANSLATION_UNIT_DECLs. * Makefile.in (tree.o): Update dependencies. From-SVN: r84306
2004-07-08re PR c/2511 (-pedantic not warning about bitfield overflow)Joseph Myers1-8/+17
2004-07-08 Joseph S. Myers <jsm@polyomino.org.uk> Neil Booth <neil@daikokuya.co.uk> PR c/2511 PR c/3325 * c-decl.c (finish_struct): Ensure bit-fields are given the correct type. * c-common.c (c_common_signed_or_unsigned_type): For C, require the precision to match as well as the mode. * expr.c (reduce_to_bit_field_precision): New function. (expand_expr_real_1): Reduce expressions of bit-field type to proper precision. * langhooks.h (reduce_bit_field_operations): New hook. * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define. * c-lang.c, objc/objc-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define. * objc/objc-act.c (check_ivars): Convert types to bit-field types before checking. * tree.c (build_nonstandard_integer_type): New function. * tree.h (build_nonstandard_integer_type): New prototype. * tree-ssa.c (tree_ssa_useless_type_conversion_1): Don't treat conversions between integer and boolean types as useless. testsuite: * gcc.c-torture/execute/bitfld-1.x: Remove. * gcc.c-torture/execute/bitfld-3.c: New test. * gcc.dg/bitfld-2.c: Remove XFAILs. Co-Authored-By: Neil Booth <neil@daikokuya.co.uk> From-SVN: r84279
2004-07-05langhooks-def.h (LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P): Extra arg.Richard Kenner1-1/+1
* langhooks-def.h (LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P): Extra arg. * langhooks.h (var_mod_type_p): Likewise. * c-decl.c (finish_decl): Add extra arg to variably_modified_type_p. * expr.c (count_type_elements): Properly handle return from array_type_nelts and properly test for overflow. * gimplify.c (gimplify_init_constructor): Properly handle return from array_type_nelts. (gimplify_addr_expr): Remove redundant clear of TREE_SIDE_EFFECTS. * integrate.c (copy_decl_for_inlining): Correct comments. * tree-inline.c (remap_decl): Update comments, remove dead code, and copy DECL_FIELD_OFFSET and DECL_QUALIFIER, if they exist. (remap_type): Only remap if variably modified by vars in function being inlined. (copy_body_r): Use compatible_type langhooks to see when can fold. (setup_one_parameter): Don't remap type. (inline_forbidden_p_1): Add arg to variably_modified_type_p. * tree.c (recompute_tree_invarant_for_addr_expr): Properly compute TREE_INVARIANT for decl case. (find_var_from_fn): New function. (variably_modified_type_p): Add arg and call new function. * tree.h (variably_modified_type_p): Add extra arg. * cp/cp-lang.c (cp_var_mod_type_p): Add extra arg. * cp/decl.c (grokdeclarator): Extra arg to variably_modified_type_p. * cp/pt.c (check_instantiated_args, unify): Likewise. From-SVN: r84144
2004-07-05c-decl.c, [...]: Don't check TARGET_MEM_FUNCTIONS.Joseph Myers1-7/+0
* c-decl.c, config/m32r/m32r.c, expr.c, optabs.c: Don't check TARGET_MEM_FUNCTIONS. * system.h: Poison TARGET_MEM_FUNCTIONS. * libfuncs.h (LTI_bcopy, LTI_bcmp, LTI_bzero, bcopy_libfunc, bcmp_libfunc, bzero_libfunc): Remove. * optabs.c (init_obtabs): Don't set bcopy_libfunc, bcmp_libfunc or bzero_libfunc. * doc/tm.texi (TARGET_MEM_FUNCTIONS): Remove. * doc/standards.texi: Don't mention calling BSD string functions. * doc/invoke.texi: Likewise. Mention that memmove may be called. * config/vax/t-memfuncs: New. * config/memcmp.c, config/memcpy.c, config/memmove.c, config/memset.c: New. * config/pdp11/t-pdp11 (LIB2FUNCS_EXTRA): Use these files. * config.gcc (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*): Use vax/t-memfuncs. * config/alpha/alpha.h, config/arc/arc.h, config/arm/arm.h, config/avr/avr.h, config/c4x/c4x.h, config/cris/aout.h, config/elfos.h, config/gnu.h, config/h8300/h8300.h, config/i386/gas.h, config/ia64/ia64.h, config/interix.h, config/ip2k/ip2k.h, config/lynx-ng.h, config/m32r/m32r.h, config/mcore/mcore.h, config/mips/mips.h, config/mmix/mmix.h, config/netbsd.h, config/openbsd.h, config/pa/pa.h, config/rs6000/rs6000.h, config/rtems.h, config/s390/s390.h, config/sh/sh.h, config/sparc/sparc.h, config/stormy16/stormy16.h, config/svr3.h: Don't define TARGET_MEM_FUNCTIONS. From-SVN: r84130
2004-07-05langhooks.c: Don't include gt-langhooks.h.Zack Weinberg1-16/+0
* langhooks.c: Don't include gt-langhooks.h. (var_labelno): Delete. (lhd_set_decl_assembler_name): Do not append a distinguishing number to file-scope internal-linkage declarations for the first input file, even if they have DECL_CONTEXT set. Use DECL_UID of the declaration itself (if at block scope), or its containing TRANSLATION_UNIT_DECL (if at file scope) for the distinguishing number. * opts.c (cur_in_fname): New global. * opts.h: Declare it. * tree.c: Include opts.h. (make_node_stat): If creating a TRANSLATION_UNIT_DECL, give it DECL_UID equal to cur_in_fname. (copy_node_stat): Do not change DECL_UID when copying a TRANSLATION_UNIT_DECL. (build_common_tree_nodes): Adjust next_decl_uid to reserve the range 0 .. num_in_fnames-1 for TRANSLATION_UNIT_DECLs. * c-decl.c (c_static_assembler_name): Delete. * c-tree.h (c_static_assembler_name): Delete prototype. * c-lang.c, objc/objc-lang.c: Don't override LANG_HOOKS_SET_DECL_ASSEMBLER_NAME. * Makefile.in (tree.o): Update dependencies. (GTFILES): Remove langhooks.c. cp: * decl.c (cxx_init_decl_processing): Call build_common_tree_nodes before creating the global NAMESPACE_DECL. From-SVN: r84123
2004-07-03c-decl.c (struct c_binding): Remove contour field; add depth, invisible, ↵Zack Weinberg1-82/+156
nested fields. * c-decl.c (struct c_binding): Remove contour field; add depth, invisible, nested fields. (B_IN_SCOPE, B_IN_CURRENT_SCOPE, B_IN_FILE_SCOPE) (B_IN_EXTERNAL_SCOPE): New convenience macros. (bind): Add invisible and nested arguments. Initialize new fields of struct c_binding; adjust loop scanning for insertion point. (free_binding_and_advance): Clear structure with memset. (pop_scope): Adjust to match. Set DECL_CONTEXT on everything in file scope, even if it's in external scope too. (pushdecl): Adjust to match. Create invisible file-scope declarations for block-scope forward declarations of static functions. (pushtag, warn_if_shadowing, pushdecl_top_level, implicitly_declare) (undeclared_variable, lookup_label, declare_label, define_label) (lookup_tag, lookup_name, lookup_name_in_scope, builtin_function) (c_make_fname_decl, store_parm_decls_newstyle, identifier_global_value) (store_parm_decls_oldstyle): Adjust to match. (diagnose_mismatched_decls): Correct handling of linkage clashes. (merge_decls): No need to copy C_DECL_IN_EXTERNAL_SCOPE. * c-tree.h (C_DECL_IN_EXTERNAL_SCOPE): Delete. (C_DECL_DECLARED_BUILTIN, C_DECL_REGISTER): Slide down one. From-SVN: r84046
2004-07-02c-decl.c (grokdeclarator): Don't frob current_function_decl around ↵Richard Henderson1-57/+9
variable_size. * c-decl.c (grokdeclarator): Don't frob current_function_decl around variable_size. (set_decl_nonlocal): Remove. (store_parm_decls): Add stmts for pending sizes. * calls.c (calls_function, calls_function_1): Remove. (precompute_arguments): Don't call it. * cfgexpand.c (set_save_expr_context): Remove. (tree_expand_cfg): Don't call it. * dwarf2out.c (add_bound_info): Don't handle SAVE_EXPR. (dwarf2out_finish): Likewise. * expr.c (emit_block_move): Adjust addresses to BLKmode. (store_constructor): Don't pre-evaluate SAVE_EXPR. (safe_from_p): Don't queue SAVE_EXPRs. (expand_expr_real_1 <case SAVE_EXPR>): Rewrite to expect, or build plain VAR_DECLs. * fold-const.c (twoval_comparison_p): Don't look at SAVE_EXPR_RTL. (fold): Likewise. (fold_checksum_tree): Don't special-case SAVE_EXPR. * function.c (free_after_compilation): Don't clear x_save_expr_regs. (put_var_into_stack): Don't handle SAVE_EXPR. (gen_mem_addressof): Likewise. * function.h (struct function): Remove x_save_expr_regs. (save_expr_regs): Remove. * gengtype.c (adjust_field_tree_exp): Don't special-case SAVE_EXPR. * print-tree.c (print_node): Don't dump SAVE_EXPR_NOPLACEHOLDER. * stor-layout.c (variable_size): Don't set it. (force_type_save_exprs, force_type_save_exprs_1): Remove. * tree-inline.c (remap_save_expr): Remove fn argument. Update all callers. Don't set SAVE_EXPR_CONTEXT. * tree-inline.h (remap_save_expr): Update decl. * tree.c (save_expr): Update build size. (first_rtl_op): Don't handle SAVE_EXPR. (unsave_expr_1, contains_placeholder_p): Likewise. (decl_function_context): Likewise. * tree.def (SAVE_EXPR): Remove args 1 and 2. * tree.h (SAVE_EXPR_CONTEXT, SAVE_EXPR_RTL): Remove. (SAVE_EXPR_NOPLACEHOLDER, SAVE_EXPR_PERSISTENT_P): Remove. cp/ * tree.c (cp_unsave_r): Update remap_save_expr call. java/ * jcf-write.c (generate_bytecode_insns <case SAVE_EXPR>): Rewrite. From-SVN: r84036
2004-06-30function.h (struct function): Remove x_whole_function_mode_p.Richard Henderson1-3/+0
* function.h (struct function): Remove x_whole_function_mode_p. * c-decl.c (store_parm_decls): Don't set it. * tree-optimize.c (tree_rest_of_compilation): Likewise. * passes.c (rest_of_compilation): Don't check it. * stmt.c (expand_fixup): Likewise. * function.c (fixup_var_refs_insn): Remove unused variable. fortran/ * trans-decl.c (gfc_generate_function_code): Don't set x_whole_function_mode_p. (gfc_generate_constructors): Likewise. From-SVN: r83947
2004-06-30tree.h (immediate_size_expand): Delete.Richard Henderson1-18/+1
* tree.h (immediate_size_expand): Delete. * stor-layout.c (immediate_size_expand): Delete. (variable_size): Don't look at it. * c-decl.c (push_parm_decl): Don't frob immediate_size_expand. (start_function): Likewise. * cfgexpand.c (construct_exit_block): Likewise. * function.c (init_function_start, expand_function_end): Likewise. * tree-optimize.c (tree_rest_of_compilation): Likewise. cp/ * decl.c (start_preparsed_function): Don't set immediate_size_expand. * method.c (use_thunk): Likewise. fortran/ * trans-decl.c (gfc_generate_function_code): Don't set immediate_size_expand. (gfc_generate_constructors): Likewise. From-SVN: r83946
2004-06-30Conditionally compile support for --enable-mapped_location.Per Bothner1-6/+10
* basic-block.h (struct edge_def): Use new source_locus typedef. * c-common.c (fname_decl): Update save/clear/store of input_location. (c_do_switch_warnings): Update for USE_MAPPED_LOCATION case. * c-decl.c: Likewise. * c-dump.c (dump_stmt): Likewise. * c-gimplify.c (c-gimplify.c): Generalize using SET_EXPR_LOCATION. * c-lex.c (cb_line_change): If USE_MAPPED_LOCATION use token's src_loc to set input_location direction, rather than using linemap_lookup. (fe_file_change, cb_def_pragma): Again use source_location directly. * c-opts.c (saved_lineno): Remove static variable. (c_common_post_options, c_common_init): Don't bothner to save, clear and restore input_Location - now handled by lang_dependent_init. * function.c (init_function_start): Use new DECL_IS_BUILTIN macro. * xcoffout.c (xcoff_assign_fundamental_type_number): Likewise. From-SVN: r83919
2004-06-27re PR c/14963 (Unknown types cause ICE in function declarations)Andrew Pinski1-1/+1
2004-06-27 Andrew Pinski <pinskia@physics.uc.edu> PR c/14963 * c-decl.c (start_decl): Check for null types. From-SVN: r83744
2004-06-26c-common.c (c_safe_from_p, [...]): Deleted.Richard Kenner1-4/+4
2004-06-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> * c-common.c (c_safe_from_p, c_walk_subtrees): Deleted. * c-common.def (DECL_STMT): Remove. * c-common.h (DECL_STMT_DECL): Deleted. (COMPOUNT_LITERAL_EXPR_DECL): Use DECL_EXPR_DECL. (c_safe_from_p, c_walk_subtrees): Deleted. * c-decl.c, c-parse.in, c-pretty-print.c: DECL_STMT now DECL_EXPR. * c-dump.c (c_dump_tree, case DECL_STMT): Deleted. * c-gimplify.c (gimplify_decl_stmt): Deleted. (gimplify_compound_literal_expr): Use DECL_EXPR_DECL and gimplify_and_add. (c_gimplify_expr, case DECL_EXPR): New case. (c_gimplify_expr, case DECL_STMT): Deleted. * c-lang.c (LANG_HOOKS_SAFE_FROM_P): Likewise. (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise. * expr.c (safe_from_p, case 's'): New case. * gimplify.c (gimplify_decl_expr): New function. (gimplify_expr, case DECL_EXPR): New case. * tree-inline.c (walk_tree): Walk into all fields of a type and decl only if they are in a DECL_EXPR. (mark_local_for_remap_r): Minor code cleanup. * tree-outof-ssa.c (discover_nonconstant_array_refs_r): Add else. * tree.c (has_cleanups, case DECL_EXPR): New case. * tree.def (DECL_EXPR): New code. * tree.h (DECL_EXPR_DECL): New macro. * objc/objc-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted. From-SVN: r83721
2004-06-24c-decl.c (c_in_iteration_stmt, [...]): Remove.Richard Henderson1-8/+14
* c-decl.c (c_in_iteration_stmt, c_in_case_stmt): Remove. (c_break_label, c_cont_label): New. (start_function): Update initializations. (c_push_function_context): Update saves. (c_pop_function_context): Update restores. * c-parse.in: Update expected conflicts. (stmt_count, compstmt_count): Remove. Remove all updates. (if_prefix, simple_if, do_stmt_start): Remove. (lineno_labeled_stmt): Remove. (lineno_labels): New. (c99_block_lineno_labeled_stmt): Use it. (lineno_stmt, lineno_label): Don't clear EXPR_LOCUS before calling annotate_with_locus. (select_or_iter_stmt): Replace by ... (condition, if_statement_1, if_statement_2, if_statement, start_break, start_continue, while_statement, do_statement, for_cond_expr, for_incr_expr, for_statement, switch_statement): New. (stmt): Split out ... (stmt_nocomp): ... this. Use c_finish_bc_stmt, c_finish_goto_label, c_finish_goto_ptr. * c-semantics.c (add_stmt): Don't add line numbers to labels. * c-tree.h: Update prototypes. (struct language_function): Remove x_in_iteration_stmt, x_in_case_stmt; add x_break_label, x_cont_label, x_switch_stack. (c_switch_stack): Declare. * c-typeck.c (c_finish_goto_label, c_finish_goto_ptr): New. (c_finish_return): Return the statement. (c_switch_stack): Rename from switch_stack; export. (if_elt, if_stack, if_stack_space, if_stack_pointer): Remove. (c_begin_if_stmt, c_finish_if_cond, c_finish_then, c_begin_else, c_finish_else): Remove. (c_finish_if_stmt): Rewrite to perform the entire operation. (c_begin_while_stmt, c_finish_while_stmt_cond, c_finish_while_stmt, c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond, c_finish_for_stmt_incr, c_finish_for_stmt): Remove. (c_finish_loop): New. (c_finish_bc_stmt): New. (c_finish_expr_stmt): Return the statement. Split out... (c_process_expr_stmt): ... this. Don't add locus to error marks. * gimplify.c (gimplify_cond_expr): Accept NULL type statements. * tree-gimple.c (is_gimple_stmt): Likewise. * tree-pretty-print.c (dump_generic_node <COND_EXPR>): Likewise. (print_struct_decl): Delete empty compound statement. * objc/objc-act.c (objc_build_throw_stmt): Return the statement. * objc/objc-act.h: Update decl. From-SVN: r83620
2004-06-24c-decl.c (finish_function): Do not check for DEFAULT_MAIN_RETURN.Ulrich Weigand1-5/+0
* c-decl.c (finish_function): Do not check for DEFAULT_MAIN_RETURN. * system.h (DEFAULT_MAIN_RETURN): Poison. * doc/tm.texi (DEFAULT_MAIN_RETURN): Remove documentation. From-SVN: r83592
2004-06-22Radar #: 3701874Andrew Pinski1-0/+3
2004-06-21 Andrew Pinski <apinski@apple.com> Radar #: 3701874 * c-decl.c (push_file_scope): Return early if we already have a file scope. 2004-06-21 Andrew Pinski <apinski@apple.com> * gcc.dg/pch/struct-1.c: New. * gcc.dg/pch/struct-1.hs: New. From-SVN: r83483
2004-06-21alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset.Richard Kenner1-1/+1
* alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset. * c-decl.c (build_array_declarator): Add news args for ARRAY_REF. * c-gimplify.c (gimplify_expr_stmt): Use alloc_stmt_list. (gimplify_decl_stmt): Call gimplify_type_sizes for type. For decl, call gimplify_one_sizepos and use statement list. (gimplify_compound_literal_expr): New arg PRE_P. Add statement to PRE_P list and return DECL. (c_gimplify_expr, case COMPOUND_LITERAL_EXPR): Add arg to gimplify_compound_literal_expr. * c-tree.h (getdecls): Deleted. * c-typeck.c (build_component_ref): Add operand for COMPONENT_REF. (build_array_ref): Add two operands for ARRAY_REF. (build_unary_op): Set TREE_INVARIANT and TREE_CONSTANT for COMPOUND_LITERAL_EXPR. * coverage.c (tree_coverage_counter_ref): Add new operands for ARRAY_REF. * emit-rtl.c (component_ref_for_mem_expr): Add new operand for COMPONENT_REF. (set_mem_attributes_minus_bitpos): Use array_ref_low_bound and array_ref_element_size. (widen_memory_access):Use component_ref_field_offset. * explow.c (update_nonlocal_goto_save_area): Add two operands for ARRAY_REF. * expr.c (array_ref_element_size, array_ref_low_bound): New functions. (component_ref_field_offset): Likewise. (get_inner_reference): Use them. (expand_expr_real_1, case ARRAY_REF): Use array_ref_low_bound. * fold-const.c (fold, case EQ_EXPR): Properly handle DECL_SIZE. (fold_read_from_constant_string): Use array_ref_low_bound. Verify that result is a character type. (build_fold_indirect_ref): Add two operands for ARRAY_REF. * function.c (expand_function_start): Likewise. * gimple-low.c (expand_var_p): Delete duplicated line. * gimplify.c: Add static decls for local functions. (cgraph.h): Now included. (create_tmp_var): Remove check for ARRAY_TYPE. (copy_if_shared_r): Look at bounds and sizes of types. (build_and_jump): Return alloc_stmt_list instead of build_empty_stmt. (gimplify_exit_expr, shortcut_cond_expr): Likewise. (gimplify_save_expr, gimple_push_cleanup): Likewise. (gimplify_init_constructor): Likewise. WANT_VALUE now bool. If empty list with no result wanted, return GS_UNHANDLED. Add additional operands for ARRAY_REF and COMPONENT_REF. (canonicalize_component_ref): Convert to &array[L]. (gimplify_array_ref_to_plus): Use array_ref_element_size and array_ref_lower_bound. (build_addr_expr_with_type, build_addr_expr): New functions. (gimplify_compound_lval): WANT_LVALUE now bool. Major rework to allow handle_component_p and initialize and gimplify new operands for ARRAY_REF, ARRAY_RANGE_REF, and COMPONENT_REF. (gimplify_array_ref): Deleted. (gimplify_self_mod_expr): WANT_VALUE now bool. (gimplify_modify_expr): Gimplify to_p and from_p later. Factor out code into gimplify_modify_expr_rhs and call twice. Move variable-size code earlier and handle PLACEHOLDER_EXPR. (gimplify_modify_expr_rhs, gimplify_variable_sized_compare): New fns. (gimplify_addr_expr, case VIEW_CONVERT_EXPR): New case. (gimplify_expr, case ARRAY_REF): Delete special case. Instead handle like COMPONENT_REF; also do ARRAY_RANGE_REF, IMAGPART, and REALPART the same way. (gimplify_expr, case VIEW_CONVERT_EXPR): New case. (gimplify_expr): Call gimplify_variable_sized_compare if applicable. Call alloc_stmt_list instead of build_empty_stmt. Deal with _REF that's volatile. (gimplify_type_sizes, gimplify_one_sizepos): New functions. (unshare_body, unvisit_body): New functions. (gimplify_body): Call them. * stmt.c (expand_stack_alloc): Don't expand TYPE_MAX_VALUE. * stor-layout.c (get_pending_sizes): Don't change SAVE_EXPR_CONTEXT. * tree-alias-common.c (get_alias_var): Also skip ARRAY_RANGE_REF. * tree-cfg.c (tree_node_can_be_shared): Treat ARRAY_RANGE_REF like ARRAY_REF. (verify_expr, case ADDR_EXPR): Use handled_component_p. * tree-dfa.c (get_virtual_var): Likewise. * tree-dump.c (dequeue_and_dump, case COMPONENT_REF, ARRAY_REF): New cases to dump new operands; likewise for ARRAY_RANGE_REF. * tree-eh.c (tree_could_trap, case ARRAY_RANGE_REF): Like ARRAY_REF. * tree-gimple.c (is_gimple_addr_expr_arg): Add ARRAY_RANGE_REF and INDIRECT_REF. (get_base_address): Use handled_component_p. * tree-gimple.h (gimplify_type_sizes, gimplify_one_sizepos): New. * tree-line.c (walk_tree): Walk more things for types and decls. * tree-mudflap.c (mf_build_check_statement_for): Add new operands for ARRAY_REF and COMPONENT_REF. (mx_xform_derefs_1): Clean up usage of decl sizes. * tree-nested.c (build_addr): Use handled_component_p. (walk_stmts, case CATCH_EXPR): Add missing "break". (get_static_chain, get_frame_field): Add new operand for COMPONENT_REF. (finalize_nesting_tree_1): Likewise. (convert_nonlocal_reference, case ARRAY_RANGE_REF): Like ARRAY_REF and process additional operands. (convert_local_reference): Likewise. * tree-outof-ssa.c (discover_nonconstant_array_refs_r): Treat ARRAY_RANGE_REF similarly to ARRAY_REF. * tree-pretty-print.c (dump_generic_node, case QUAL_UNION_TYPE): Handle like RECORD_TYPE. (dump_generic_node, case COMPONENT_REF): Print offset operand. (dump_generic_node, case ARRAY_RANGE_REF): Treat like ARRAY_REF and print lower bound and element size for both. (op_prio, case ARRAY_RANGE_REF): Like ARRAY_REF. * tree-sra.c (csc_build_component_ref): Add new operand. (scalarize_call_expr): Use get_base_address. * tree-ssa-ccp.c (widen_bitfield): Clean up size handling. (maybe_fold_offset_to_array_ref): Rework to handle input having an ARRAY_REF, refine handling of lower bound, and add new operands for ARRAY_REF. (maybe_fold_to_component_ref): Add new operand for COMPONENT_REF. (maybe_fold_stmt_indirect): Only fold *&B to B if types match. (maybe_fold_stmt_addition): Only handle constant lower bound. * tree-ssa-operands.c (get_expr_operands): Minor rearrangements. Treat ARRAY_REF and ARRAY_RANGE_REF the same; look at extra operands. Look at new offset operand of COMPONENT_REF. * tree-ssa.c (set_is_used): Use handled_component_p. * tree.c (substitute_in_expr, case COMPONENT_REF): Add new operand. (stabilize_reference, case COMPONENT_REF): Likewise. (stabilize_reference, case ARRAY_RANGE_REF, ARRAY_REF): Similarly. (recompute_tree_invariant_for_addr_expr): Completely rework to be more precise. Also set TREE_SIDE_EFFECTS. (build1_stat, case ARRAY_EXPR): Don't handle TREE_SIDE_EFFECTS here. (build2_stat, build3_stat, build4_stat): For references, propagate TREE_THIS_VOLATILE. (get_unwidened): Add new operand for COMPONENT_REF. (get_narrower): Likewise; use host_integerp for DECL_SIZE. * tree.def (COMPONENT_REF): Add new operand. (ARRAY_REF, ARRAY_RANGE_REF): Add two new operands. * tree.h (array_ref_element_size, array_ref_low_bound): New decls. (component_ref_field_offset): Likewise. * config/alpha/alpha.c (alpha_va_start): Add new op for COMPONENT_REF. (alpha_gimplify_va_arg): Likewise. * config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise. * config/i860/i860.c (i860_va_start, i860_va_arg): Likewise. * config/iq2000/iq2000.c (iq2000_va_arg): Likewise. * config/mips/mips.c (mips_va_start, mips_va_arg): Likewise. * config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg): Likewise. * config/s390/s390.c (s390_va_start, s390_gimplify_va_arg): Likewise. * config/sh/sh.c (sh_va_start, sh_va_arg): Likewise. * config/stormy16/stormy16.c (xstormy1_expand_builin_va_start): Likewise. (xstormy16_expand_builtin_va_arg): Likewise. * config/xtensa/xtensa.c (xtensa_va_start, xtensa_va_arg): Likewise. * cp/call.c (build_vfield_ref): Add new operand for COMPONENT_REF. (build_new_method_call): Likewise. * cp/decl.c (local_variable_p_walkfn): Don't walk into types. * cp/decl2.c (grok_array_decl): Add new operands for ARRAY_REF. (build_anon_union_vars): Add new operand for COMPONENT_REF. * cp/init.c (buld_new): Add new operand for ARRAY_REF. * cp/method.c (do_build_copy_constructor): New op for COMPONENT_REF. (do_build_assign_ref): Likewise. * cp/parser.c (cp_parser_direct_new_declarator): Add new operands for ARRAY_REF. (cp_parser_direct_declarator): Likewise. * cp/pt.c (tsubst): Likewise. (tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand for COMPONENT_REF. * cp/semantics.c (finish_non_static_data_member): Add new operand for COMPONENT_REF. * cp/typeck.c (build_class_member_access_expr): Likewise. (build_class_member_access_expr, finish_class_member_access_expr): Likewise. (build_ptrmemfunc_access_expr): Likewise. (build_array_ref): Add new operands for ARRAY_REF. * cp/typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too. * cp/tree.c (count_trees_r, no_linkage_helper): Don't walk in types. * fortran/f95-lang.c (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Deleted. * fortran/trans-array.c (gfc_conv_descriptor_data): Add operand for COMPONENT_REF. (gfc_conv_descriptor_offset, gfc_conv_descriptor_dtype): Likewise. (gfc_conv_descriptor_dimension, gfc_conv_descriptor_stride): Likewise. (gfc_conv_descriptor_lbound, gfc_conv_descriptor_ubound): Likewise. * fortran/trans-common.c (create_common): Likewise. * fortran/trans-expr.c (gfc_conv_component_ref): Likewise. * fortran/trans-io.c (set_parameter_value): Likewise. (set_parameter_ref, set_string, set_flag, io_result): Likewise. (transfer_expr): Likewise. * fortran/trans-decl.c (gfc_trans_auto_character_variable): Set up to get DECL_SIZE and DECL_SIZE_UNIT gimplified. (gfc_simplify_function): New function. (gfc_generate_function-code): Properly handle nested functions. * fortran/trans.c (gfc_build_array_ref): Add two new operands for ARRAY_REF. * java/class.c (build_class_ref): Add new operand for COMPONENT_REF. (build_static_field_ref): Likewise and add new operands for ARRAY_REF. * java/constants.c (build_ref_from_constant_pool): Likewise. * java/expr.c (build_java_array_length_access): Likewise. (build_get_class, build_field_ref, build_known_method_ref): Likewise. (invoke_build_dtable, build_invokevirtual): Likewise. (build_invokeinterface, java_expand_expr): Likewise. (emit_init_test_initialization): Likewise. * java/java-gimplify.c (java_gimplify_new_array_init): Likewise. * java/parse.y (make_qualifed_name, build_array_ref): Likewise. * objc/ojbc-act.c (generate_static_references): Add additional operands to ARRAY_REF. (generate_strings, build_method_prototype_list_template): Likewise. (generate_protocol_list): Likewise. From-SVN: r83474
2004-06-21c-common.def (RETURN_STMT): Remove.Richard Henderson1-1/+1
* c-common.def (RETURN_STMT): Remove. * c-common.h (RETURN_STMT_EXPR): Remove. (c_expand_return, build_return_stmt): Remove. (c_common_stmt_codes): Remove RETURN_STMT. * c-dump.c (dump_next_stmt): Remove. (c_dump_tree): Remove RETURN_STMT. * c-decl.c (finish_function): Use c_finish_return. * c-parse.in (stmt): Likewise. * c-gimplify.c (gimplify_return_stmt): Remove. (c_gimplify_expr): Remove RETURN_STMT. * c-pretty-print.c (pp_c_statement): Likewise. * c-semantics.c (build_return_stmt): Remove. * c-tree.h (c_finish_return): Declare. * c-typeck.c (c_finish_return): Rename from c_expand_return. Return void. Build RETURN_EXPR directly. * tree-dump.h (dump_next_stmt): Remove. cp/ * dump.c (cp_dump_tree): Don't use dump_next_stmt. * parser.c (cp_parser_jump_statement): Update commentary. * pt.c (tsubst_expr): Use RETURN_EXPR. * semantics.c (finish_return_stmt): Likewise. (finalize_nrv_r): Likewise. * typeck.c, typeck2.c: Update file start commentary. From-SVN: r83461
2004-06-21c-decl.c (start_function): Don't call make_decl_rtl.Zack Weinberg1-7/+0
* c-decl.c (start_function): Don't call make_decl_rtl. Don't look at TREE_ADDRESSABLE of symbol name. From-SVN: r83460
2004-06-20c-common.h (add_decl_stmt): Move to cp-tree.h.Richard Henderson1-2/+2
* c-common.h (add_decl_stmt): Move to cp-tree.h. * c-decl.c (finish_decl): Don't use add_decl_stmt. * c-parse.in: Likewise. * c-gimplify.c (gimplify_expr_stmt): Don't build CLEANUP_POINT_EXPR. (gimplify_c_loop, gimplify_return_stmt, gimplify_decl_stmt): Likewise. * c-semantics.c (add_decl_stmt): Move to cp/semantics.c. cp/ * cp-tree.h (add_decl_stmt): Declare. * pt.c (tsubst_copy): Abort for CLEANUP_POINT_EXPR. * semantics.c (maybe_cleanup_point_expr): New. (add_decl_stmt, finish_expr_stmt, finish_return_stmt, finish_for_expr, finish_switch_cond): Use it. (finalize_nrv_r): Don't build an EXPR_STMT. Don't frob TREE_CHAIN. From-SVN: r83409
2004-06-20c-common.h (has_c_linkage): New interface.Zack Weinberg1-1/+0
* c-common.h (has_c_linkage): New interface. * c-cppbuiltin.c: Include target.h. (c_cpp_builtins): Define __PRAGMA_REDEFINE_EXTNAME and __PRAGMA_EXTERN_PREFIX when appropriate. * c-pragma.c: Include target.h. Document clarified semantics of symbol-renaming #pragmas. (handle_pragma_redefine_extname, handle_pragma_extern_prefix) (maybe_apply_renaming_pragma): Rewrite according to clarified semantics. Always recognize, but do not necessarily execute. (init_pragma): Unconditionally register symbol-renaming pragmas. * system.h: Poison HANDLE_PRAGMA_REDEFINE_EXTNAME and HANDLE_PRAGMA_EXTERN_PREFIX. * target.h (struct gcc_target): Add handle_pragma_redefine_extname and handle_pragma_extern_prefix flags. * target-def.h: Add defaults for TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME and TARGET_HANDLE_PRAGMA_EXTERN_PREFIX. * Makefile.in (c-pragma.o, c-cppbuiltin.o): Update dependencies. * config/sol2.h: Define TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME, not HANDLE_PRAGMA_REDEFINE_EXTNAME. (TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_REDEFINE_EXTNAME. (TRANSFER_FROM_TRAMPOLINE): Prototype mprotect. * config/alpha/osf.h: Define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX, not HANDLE_PRAGMA_EXTERN_PREFIX. (TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_EXTERN_PREFIX. * doc/extend.texi (Solaris Pragmas, Tru64 Pragmas): Combine into one section "Symbol-Renaming Pragmas"; clarify; document adjusted semantics. * builtins.c (expand_builtin): Do not issue error for a builtin with no special case code and no DECL_ASSEMBLER_NAME; just do the library call. * c-decl.c (builtin_function): Don't call make_decl_rtl. * c-objc-common.c (has_c_linkage): Stub implementation. * cgraphunit.c (cgraph_expand_function) (cgraph_remove_unreachable_nodes): Don't clear DECL_ARGUMENTS. cp: * cp-lang.c (has_c_linkage): Implement. * cp-tree.h (set_mangled_name_for_decl): Don't prototype. * decl.c (duplicate_decls): Use COPY_DECL_RTL. (builtin_function_1): Don't call make_decl_rtl. (build_cp_library_fn): Don't call set_mangled_name_for_decl. (grokvardecl): Don't call mangle_decl. * except.c (nothrow_libfn_p): Look at DECL_NAME, not DECL_ASSEMBLER_NAME. * method.c (set_mangled_name_for_decl): Delete. * name-lookup.c (pushdecl): When a local extern shadows a file-scope declaration of the same object, give both DECLs the same DECL_UID. * typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE on DECL_ASSEMBLER_NAME. testsuite: * g++.dg/expr/enum1.C, g++.dg/opt/const3.C: Declare abort with extern "C". * g++.dg/other/pragma-re-1.C: Add comments. From-SVN: r83405
2004-06-17c-common.c (flag_objc_sjlj_exceptions): New.Richard Henderson1-5/+6
* c-common.c (flag_objc_sjlj_exceptions): New. * c-common.h (flag_objc_sjlj_exceptions): Declare. * c-opts.c (c_common_handle_option): Set it. (c_common_post_options): Handle interation of different objective-c exception and runtime switches. * c-decl.c (c_eh_initialized_p): New. (finish_decl): Use it instead of local eh_initialized_p. * c-parse.in (nested_function, notype_nested_function): Record the result of compstmt. (compstmt_or_error): Likewise. (compstmt): Don't add_stmt the result. (stmt): Don't return anything. Rewrite objc try and sync rules. (objc_try_stmt, objc_catch_list): Remove. (objc_catch_block, objc_finally_block): Remove. (objc_catch_prefix, objc_catch_clause, objc_opt_catch_list): New. (objc_try_catch_clause, objc_finally_clause): New. (objc_try_catch_stmt): Rewrite. * c-tree.h (c_eh_initialized_p): Declare. * c-opt (fobjc-sjlj-exceptions): New. * except.c (output_function_exception_table): Don't call cgraph on non-decls. * objc/objc-act.c (UTAG_EXCDATA_VAR, UTAG_CAUGHTEXC_VAR, UTAG_RETHROWEXC_VAR, UTAG_EVALONCE_VAR, struct val_stack, catch_count_stack, exc_binding_stack, if_nesting_count, blk_nesting_count, objc_enter_block, objc_exit_block, objc_declare_variable, val_stack_push, val_stack_pop, objc_build_try_enter_fragment, objc_build_extract_expr, objc_build_try_exit_fragment, objc_build_extract_fragment, objc_build_try_prologue, objc_build_try_epilogue, objc_build_catch_stmt, objc_build_catch_epilogue, objc_build_finally_prologue, objc_build_finally_epilogue, objc_build_try_catch_finally_stmt, objc_build_synchronized_prologue, objc_build_synchronized_epilogue): Remove. (objc_create_temporary_var, struct objc_try_context, cur_try_context, objc_eh_runtime_type, objc_init_exceptions, objc_build_exc_ptr, next_sjlj_build_try_exit, next_sjlj_build_enter_and_setjmp, next_sjlj_build_exc_extract, next_sjlj_build_catch_list, next_sjlj_build_try_catch_finally, objc_begin_try_stmt, objc_begin_catch_clause, objc_finish_catch_clause, objc_build_finally_clause, objc_finish_try_stmt, objc_build_synchronized): New. (objc_is_object_id, objc_is_class_id): New. (objc_comptypes): Use them. (build_next_objc_exception_stuff): Break NeXT sjlj out from build_objc_exception_stuff. (synth_module_prologue): Update to match. (objc_build_throw_stmt): Use cur_try_context to decide if we're in a @catch. * objc/objc-act.h: Update prototypes. (OCTI_EXCEPTION_BLK_STACK, objc_exception_block_stack): Remove. testsuite/ * objc.dg/sync-1.m: New. * objc.dg/try-catch-1.m: Don't force next runtime. * objc.dg/try-catch-3.m, objc.dg/try-catch-4.m: Likewise. * objc.dg/try-catch-2.m: Likewise. Enable everywhere. Remove shadowed catch clause. * objc.dg/try-catch-5.m: New. From-SVN: r83332
2004-06-15c-common.c (lang_gimplify_stmt): Remove next_p argument.Richard Henderson1-49/+6
* c-common.c (lang_gimplify_stmt): Remove next_p argument. (if_elt, if_stack, if_stack_space, c_expand_start_cond, c_finish_then, c_expand_end_cond, c_expand_start_else, c_finish_else, c_begin_if_stmt, c_begin_while_stmt, c_finish_while_stmt_cond): Move to c-typeck.c. (finish_fname_decls, fname_decl): Use statement_lists. (c_expand_expr_stmt): Don't set last_expr_type. (c_type_hash): Fix indentation. (c_safe_from_p): Don't follow TREE_CHAIN. (c_tree_chain_matters_p): Remove. * c-common.def (SCOPE_STMT): Remove. (CLEANUP_STMT): Redefine to contain its own body. * c-common.h (struct stmt_tree_s): Remove x_last_stmt, x_last_expr_type, x_last_expr_filename, x_scope_stmt_stack. Add x_cur_stmt_list. (last_tree, last_expr_type, last_expr_filename, RECHAIN_STMTS): Remove. (cur_stmt_list): New. (STATEMENT_LIST_STMT_EXPR): New. (SCOPE_BEGIN_P, SCOPE_END_P, SCOPE_STMT_BLOCK, SCOPE_NULLIFIED_P, SCOPE_NO_CLEANUPS_P, SCOPE_PARTIAL_P, NEW_FOR_SCOPE_P): Remove. (CLEANUP_BODY): New. (CLEANUP_DECL): Move to operand 2. (c_common_stmt_codes): Remove SCOPE_STMT. (COMPOUND_STMT_NO_SCOPE, COMPOUND_STMT_BODY_BLOCK): Remove. * c-decl.c (c_scope_stmt_stack, current_scope_stmt_stack): Remove. (c_push_function_context, c_pop_function_context): Don't save it. (finish_decl): Set TREE_USED on the decl for a cleanup. Use push_cleanup. (store_parm_decls): Use statement lists. (finish_function): Remove compstmt rule workaround. Use statement lists. Call finish_fname_decls after finalizing the body. (c_begin_compound_stmt): Move to c-typeck.c. * c-dump.c (c_dump_tree): Remove SCOPE_STMT. * c-gimplify.c (gimplify_cleanup_stmt, gimplify_cleanup_stmts): New. (c_genericize): Invoke them. (c_gimplify_stmt): Don't look through TREE_CHAIN. Kill SCOPE_STMT. (c_build_bind_expr): Export. (gimplify_block, gimplify_cleanup): Remove. (gimplify_condition): Use gimplify_stmt. (gimplify_for_stmt): Remove FOR_INIT_STMT chaining hack. (gimplify_if_stmt): Remove recursion hack. (c_gimplify_expr): Remove STMT_EXPR handling. (stmt_expr_last_stmt, gimplify_stmt_expr): Remove. (is_last_stmt_of_scope): Remove. * c-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove. * c-mudflap.c (mflang_flush_calls): Use c_begin_compound_stmt, c_end_compound_stmt. * c-objc-common.c (build_cdtor): Likewise. * c-parse.in (primary): Use c_finish_stmt_expr. (push_scope, pop_scope): Remove. (c99_block_start, compstmt_start): Use c_begin_compound_stmt. (c99_block_end, compstmt): Use c_end_compound_stmt. (c99_block_lineno_labeled_stmt): Likewise. (compstmt_primary_start): Use c_begin_stmt_expr. (simple_if, select_or_iter_stmt): Update calls to stmt builders. (do_stmt_start): Fill in body directly. (lineno_stmt): Avoid setting lineno on constants. * c-pretty-print.c (pp_c_statement): Handle STATEMENT_LIST. Remove SCOPE_STMT. * c-semantics.c (begin_stmt_tree): Remove. (push_stmt_list, re_push_stmt_list, pop_stmt_list): New. (add_stmt): Use statement lists. (add_scope_stmt, finish_stmt_tree): Remove. (push_cleanup): New. * c-tree.h: Move some decls from c-common.h. * c-typeck.c (c_tree_expr_nonnegative_p): Simplify for statement lists. (do_case, c_finish_case): Likewise. (c_finish_then): Take body for then as argument. (c_finish_else): Similarly. (c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond, c_finish_for_stmt_incr, c_finish_for_stmt): New. (c_begin_stmt_expr, c_finish_stmt_expr): New. (c_begin_compound_stmt): Do scope management. (c_end_compound_stmt): New. * fold-const.c (tree_expr_nonnegative_p): Fix BIND_EXPR. * gimplify.c (voidify_wrapper_expr): Accept temporary argument. Look through exception handling constructs. (gimplify_bind_expr): Accept temporary argument. (gimplify_target_expr): Special case BIND_EXPR bodies. (gimplify_expr): Handle fallback == fb_none like a statement. * langhooks-def.h (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Kill. * langhooks.c (lhd_tree_inlining_tree_chain_matters_p): Remove. * langhooks.h (tree_chain_matters_p): Remove. * stub-objc.c (objc_clear_super_receiver): New. * tree-gimple.h (voidify_wrapper_expr): Update decl. (append_to_statement_list, append_to_statement_list_force): Move to tree-iterator.h. * tree-inline.c (expand_call_inline): Update call. (clone_body): Use statement lists. (walk_tree): Don't check tree_chain_matters_p. (copy_tree_r): Likewise. * tree-iterator.c (alloc_stmt_list): Clear lang bits. (tsi_link_before, tsi_link_after): Set TREE_SIDE_EFFECTS properly. * tree-iterator.h (append_to_statement_list, append_to_statement_list_force): Moved from tree-gimple.h. * tree-pretty-print.c (dump_generic_node): Clean up TARGET_EXPR dump. * objc/objc-act.c (build_module_descriptor): Use c_begin_compound_stmt. (objc_enter_block): Likewise. (objc_exit_block): Use c_end_compound_stmt. (objc_build_try_enter_fragment): Add #error and comment for rewriting for OBJCPLUS. (objc_build_extract_fragment, objc_build_try_epilogue, objc_build_catch_stmt, objc_build_finally_prologue, objc_build_finally_epilogue): Update for C statement builders. * objc/objc-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove. cp/ * call.c (initialize_reference): Don't build CLEANUP_STMT here. * cp-gimplify.c (cp_gimplify_stmt): Remove next_p argument. (genericize_try_block): Use gimplify_stmt. (genericize_catch_block, genericize_eh_spec_block): Likewise. (cp_gimplify_init_expr): Remove STMT_EXPR special case. (gimplify_must_not_throw_expr): Update voidify_wrapper_expr call. * cp-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove. (cp_tree_chain_matters_p): Remove. * cp-tree.h (COMPOUND_STMT_TRY_BLOCK): New. (COMPOUND_STMT_BODY_BLOCK): New. (STATEMENT_LIST_NO_SCOPE, STATEMENT_LIST_TRY_BLOCK): New. (EXPR_STMT_STMT_EXPR_RESULT): New. (building_stmt_tree): Check cur_stmt_list. (tf_stmt_expr_cmpd, tf_stmt_expr_body): Remove. (BCS_NO_SCOPE, BCS_TRY_BLOCK, BCS_FN_BODY): New. * decl.c (poplevel): Use pop_stmt_list for minding cleanups. (cp_finish_decl): Use push_cleanup. (start_function, finish_function): Use statement lists. (finish_stmt): Do nothing. * except.c (begin_eh_spec_block): Use statement lists. (check_handlers_1, check_handlers): Likewise. * init.c (construct_virtual_base): Don't add extra compound stmts. (build_vec_init): Likewise. * name-lookup.c (maybe_push_cleanup_level): Use statement lists. * name-lookup.h (struct cp_binding_level): Add statement_list. * parser.c (cp_parser_statement): Take the STMT_EXPR node, not a bool. (cp_parser_labeled_statement, cp_parser_expression_statement, cp_parser_statement_seq_opt): Likewise. (cp_parser_compound_statement): Likewise. Take bool for try block. (cp_parser_selection_statement): Tidy if processing. (cp_parser_already_scoped_statement): Rewrite to do what it says. * pt.c (tsubst_copy): Move STMT_EXPR to tsubst_expr. (tsubst_expr): Rewrite STMT_EXPR processing. Handle STATEMENT_LIST. Mind COMPOUND_STMT_TRY_BLOCK, EXPR_STMT_STMT_EXPR_RESULT. * semantics.c (do_poplevel, do_pushlevel): Use statement lists. (finish_cond): New, rewritten from FINISH_COND. (simplify_loop_decl_cond): New. (finish_expr_stmt): Avoid nested EXPR_STMTs. (begin_if_stmt, finish_if_stmt_cond, finish_then_clause, begin_else_clause, finish_else_clause, finish_if_stmt, begin_while_stmt, finish_while_stmt_cond, finish_while_stmt, begin_do_stmt, finish_do_body, begin_for_stmt, finish_for_init_stmt, finish_for_cond, finish_for_stmt, begin_switch_stmt, finish_switch_cond, finish_switch_stmt, begin_try_block, finish_try_block, finish_cleanup_try_block, finish_function_try_block, finish_handler_sequence, finish_function_handler_sequence, begin_handler, finish_handler_parms, finish_handler, begin_stmt_expr, finish_stmt_expr_expr, finish_stmt_expr): Rewrite using statement lists. (begin_compound_stmt): Replace has_no_scope argument with flags. Update all callers. Use statement lists. (finish_compound_stmt): Likewise. (finish_decl_cleanup, finish_eh_cleanup): Use push_cleanup. (current_scope_stmt_stack): Remove. (simplify_aggr_init_expr): Don't muck with TREE_CHAIN. * typeck2.c (split_nonconstant_init_1, split_nonconstant_init): Rewrite with statement lists. testsuite/ * g++.dg/ext/stmtexpr1.C: XFAIL. * gcc.dg/20030612-1.c: XFAIL. From-SVN: r83221
2004-06-13c-typeck.c (comptypes, [...]): Remove flags parameter.Joseph Myers1-6/+5
* c-typeck.c (comptypes, tagged_types_tu_compatible_p, function_types_compatible_p, type_lists_compatible_p): Remove flags parameter. * c-tree.h (comptypes): Likewise. (COMPARE_STRICT): Remove. * c-decl.c, c-lang.c, c-parse.in, c-typeck.c, objc/objc-act.c: All callers changed. From-SVN: r83061
2004-06-13c-decl.c (diagnose_mismatched_decls): Improve error message.Eric Christopher1-35/+16
2004-06-13 Eric Christopher <echristo@redhat.com> * c-decl.c (diagnose_mismatched_decls): Improve error message. Remove unused code. * c-typeck.c (comptypes): Add location in standard we're checking. 2004-06-13 Eric Christopher <echristo@redhat.com> * gcc.dg/noncompile/redecl-1.c: Fix error message. From-SVN: r83060
2004-06-07re PR middle-end/15666 ([unit-at-a-time] Gcc abort on valid code)Alexandre Oliva1-1/+1
PR middle-end/15666 * c-decl.c (finish_decl): Use change_decl_assembler_name for the builtin decl as well. From-SVN: r82706
2004-06-06re PR c/13519 (typeof(nonconst+const) is const)Joseph Myers1-1/+1
PR c/13519 * c-typeck.c (composite_type, common_pointer_type): New functions. (common_type): Split parts into composite_type and common_pointer_type. Ensure that arithmetic operations return unqualified types without attributes. Don't make composite type of signed enum and compatible integer be unsigned. (build_conditional_expr, build_binary_op): Use common_pointer_type. * c-decl.c (merge_decls): Use composite_type. * c-tree.h (composite_type): Declare. testsuite: * gcc.c-torture/enum-3.c, gcc.dg/pr13519-1.c: New tests. From-SVN: r82671
2004-05-31re PR c/15749 (--pedantic-errors behaves differently from --pedantic with ↵Joseph Myers1-2/+2
C-compiler on Linux) PR c/15749 * c-decl.c (grokdeclarator, finish_struct): Don't pedwarn for misuses of structures with flexible array members if in_system_header. testsuite: * gcc.dg/pr15749-1.c, gcc.dg/pr15749-1.h: New test. From-SVN: r82506