* expr.c (expand_assignment): Reenable bitfield += optimizations.
Use alias set 0 for memory, do proper mode calculations and adjust
address for memories.
* gcc.c-torture/execute/20040709-1.c: New test.
* gcc.c-torture/execute/20040709-2.c: New test.
Per Bothner [Thu, 15 Jul 2004 00:02:30 +0000 (17:02 -0700)]
input.h: If USE_MAPPED_LOCATION...
* input.h: If USE_MAPPED_LOCATION, define separate expanded_location
structure with extra column field.
* tree.c (expand_location): Also fill in column field.
* gengtype-lex.l: Ignore expanded_location typedef, sinze gengtype
gets confused by the two conditionally-compiled definitions.
Andreas Tobler [Wed, 14 Jul 2004 20:45:55 +0000 (22:45 +0200)]
jacks.exp (gcj_jacks_write): Add deprecation flag to the gcj_setup.
2004-07-14 Andreas Tobler <a.tobler@schweiz.ch>
* testsuite/libjava.jacks/jacks.exp (gcj_jacks_write): Add deprecation
flag to the gcj_setup.
(gcj_jacks_run): Check tclsh version and launch jacks directly with
the tclsh.
* testsuite/libjava.jacks/jacks.xfail: Update fails to reflect the
deprecation flag change. 58 XFAILS removed.
Bob Wilson [Wed, 14 Jul 2004 19:52:46 +0000 (19:52 +0000)]
xtensa.c (function_arg_advance): Check for args that must be passed in the stack.
* config/xtensa/xtensa.c (function_arg_advance): Check for args
that must be passed in the stack.
(xtensa_gimplify_va_arg_expr): Skip special-case padding for small
arguments if the size is not a constant.
Per Bothner [Wed, 14 Jul 2004 18:47:14 +0000 (11:47 -0700)]
c-typeck.c (emit_side_effect_warnings): Use EXPR_HAS_LOCATION instead of EXPR_LOCUS in a boolean context...
* c-typeck.c (emit_side_effect_warnings): Use EXPR_HAS_LOCATION
instead of EXPR_LOCUS in a boolean context, which is always true
if --enable-mapped-location.
* stmt.c (warn_if_unused_value): Likewise. Also use EXPR_LOCATION.
* dominance.c (struct dom_info): Add fake_exit_edge.
(init_dom_info): Allocate it.
(free_dom_info): Free it.
(calc_dfs_tree): Set it. Handle noreturn and infinite loops
in two passes.
(calc_idoms): Honor fake_exit_edge.
Jason Merrill [Wed, 14 Jul 2004 18:16:48 +0000 (14:16 -0400)]
tree-gimple.c (is_gimple_reg_rhs, [...]): New fns.
* tree-gimple.c (is_gimple_reg_rhs, is_gimple_mem_rhs): New fns.
(rhs_test_for): New fn.
(is_gimple_tmp_rhs): Rename from is_gimple_rhs.
* tree-gimple.h: Declare them.
* gimplify.c (gimplify_modify_expr): Use the new fns.
pa.c (fix_range): New function to mark a range(s) of registers as fixed registers.
* pa.c (fix_range): New function to mark a range(s) of registers as
fixed registers.
(override_options): Call fix_range if the -mfixed-range option string
is not empty.
* pa.h (TARGET_OPTIONS): Add -mfixed-range option.
* doc/invoke.texi (-mfixed-range): Document new option.
Roger Sayle [Wed, 14 Jul 2004 13:50:39 +0000 (13:50 +0000)]
expmed.c (expand_sdiv_pow2): New function to expand signed division by a positive power of two...
* expmed.c (expand_sdiv_pow2): New function to expand signed division
by a positive power of two, split out from expand_divmod. Provide
an alternate implementation when shifts are expensive. Lower the
threshold for using a branchless implementation to BRANCH_COST >= 2.
(expand_divmod): Call expand_sdiv_pow2 for suitable divisions.
s390.md ("udivsi3"): Ensure trap is generated for division by zero.
gcc/ChangeLog:
* config/s390/s390.md ("udivsi3"): Ensure trap is generated
for division by zero.
("umodsi3"): Likewise.
libjava/ChangeLog:
* configure.host (DIVIDESPEC) [s390*-*-*]: Set to
-fno-use-divide-subroutine.
* include/s390-signal.h: Include <ucontext.h> and <limits.h>.
(HANDLE_FPE): Define.
(SIGNAL_HANDLER): Change third argument to ucontext_t *.
(struct old_s390_kernel_sigaction): Likewise for k_sa_handler.
(HANDLE_DIVIDE_OVERFLOW): Define.
mips.c (mips_output_move): When generating mips16 code, force loads of negative constants to be split.
* config/mips/mips.c (mips_output_move): When generating mips16 code,
force loads of negative constants to be split.
* config/mips/mips.md (*movhi_mips16, *movqi_mips16): Likewise.
Generalize SImode li/neg splitter to cope with other modes.
2004-07-13 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* decl.c: (gnat_to_gnu_entity, object case): Convert initializer to
object type.
(gnat_to_gnu_entity, case E_Record_Subtype): Properly set
TYPE_STUB_DECL.
* misc.c (gnat_types_compatible_p): New function.
(LANG_HOOKS_TYPES_COMPATIBLE_P): New hook, to use it.
(LANG_HOOKS_TYPE_MAX_SIZE, gnat_type_max_size): New.
* trans.c (gigi): Move processing of main N_Compilation_Unit here.
(gnat_to_gnu, case N_Compilation_Unit): Just handle nested case here.
(add_stmt): Force walking of sizes and DECL_INITIAL for DECL_EXPR.
(mark_visited): Don't mark dummy type.
(tree_transform <N_Procedure_Call_Statement>): Unless this is an In
parameter, we must remove any LJM building from GNU_NAME.
(gnat_to_gnu, case N_String_Literal): Fill in indices in CONSTRUCTOR.
(pos_to_constructor): Use int_const_binop.
(gnat_to_gnu, case N_Identifier): Don't reference DECL_INITIAL of
PARM_DECL.
* utils.c (gnat_init_decl_processing): Don't make two "void" decls.
(gnat_pushlevel): Set TREE_USE on BLOCK node.
(gnat_install_builtins): Add __builtin_memset.
* decl.c (gnat_to_gnu_entity <E_Variable>): If we are making a pointer
for a renaming, stabilize the initialization expression if we are at a
local level. At the local level, uses of the renaming may be performed
by a direct dereference of the initializing expression, and we don't
want possible variables there to be evaluated for every use.
* trans.c (gnat_stabilize_reference, gnat_stabilize_reference_1):
Propagate TREE_SIDE_EFFECTS and TREE_THIS_VOLATILE to avoid loosing
them on the way. Account for the fact that we may introduce side
effects in the process.
Diego Novillo [Tue, 13 Jul 2004 20:51:02 +0000 (20:51 +0000)]
re PR tree-optimization/16443 (ICE during linux kernel compilation)
PR tree-optimization/16443
* tree-ssa-alias.c: Add more description for
CALL_CLOBBERED_VARS and ADDRESSABLE_VARS.
* tree-ssa-operands.c (get_asm_expr_operands): Re-order the
clobbering of call-clobbered and addressable variables. If
there are any before aliases have been computed, add them.
testsuite/ChangeLog
PR tree-optimization/16443
* gcc.dg/tree-ssa/20040713-1.c: New test.
Mark Mitchell [Tue, 13 Jul 2004 16:22:06 +0000 (16:22 +0000)]
cp-tree.h (lang_identifier): Remove class_value.
* cp-tree.h (lang_identifier): Remove class_value.
(IDENTIFIER_CLASS_VALUE): Remove.
(pop_class_decls): Likewise.
(init_search_processing): Likewise.
* class.c (handle_using_decl): Use lookup_member, not
IDENTIFIER_CLASS_VALUE.
(restore_class_cache): New function, split out from ...
(pushclass): ... here. Do not call clear_identifier_class_values.
(invalidate_class_lookup_cache): Do not clear
IDENTIFIER_CLASS_VALUE.
(popclass): Do not call pop_class_decls.
(maybe_note_name_used_in_class): Do not save names looked up after
the class is complete. Use lookup_member, not
IDENTIFIER_CLASS_VALUE.
* config-lang.in (gtfiles): Add $(srcdir)/cp/search.c.
* decl.c (cxx_init_decl_processing): Do not call
init_search_processing.
* method.c (do_build_copy_constructor): Remove unnecessary code.
(do_build_assign_ref): Likewise.
* name-lookup.c (pushdecl): Use lookup_member, not
IDENTIFIER_CLASS_VALUE.
(set_identifier_type_value_with_scope): Set TREE_TYPE on the
type_shadowed list.
(poplevel_class): Do not restore IDENTIFIER_CLASS_VALUE.
(push_class_binding): Do not set it.
(clear_identifier_class_values): Remove.
(push_class_level_binding): Do not set IDENTIFIER_CLASS_VALUE.
(store_binding): Do not save it.
(pop_from_top_level): Do not restore it.
* name-lookup.h (cxx_saved_binding): Remove class_value.
(clear_identifier_class_values): Remove.
* ptree.c (cxx_print_identifier): Do not print
IDENTIFIER_CLASS_VALUE.
* search.c (search_obstack): Remove.
(push_stack_level): Remove.
(pop_stack_level): Remove.
(search_level): Remove.
(search_stack): Remove.
(lookup_member): Don't check IDENTIFIER_CLASS_VALUE.
(setup_class_bindings): Use IDENTIFIER_MARKED, not
IDENTIFIER_CLASS_VALUE.
(marked_identifiers): New variable.
(push_class_decls): Clear IDENTIFIER_MARKED.
(pop_class_decls): Don't call pop_search_level.
(init_search_processing): Remove.
Eric Botcazou [Tue, 13 Jul 2004 13:14:06 +0000 (15:14 +0200)]
re PR target/13926 (GCC generates jumps that are too large to fit in word displacement field)
PR target/13926
* config/sparc/sparc-protos.h (output_ubranch): New prototype.
* config/sparc/sparc.c (output_ubranch): New function.
* config/sparc/sparc.md (jump pattern): Use it.
Eric Botcazou [Tue, 13 Jul 2004 12:08:56 +0000 (14:08 +0200)]
re PR target/16494 ([3.3.2/3.4/3.5] Pessimization with FP conditional branches)
PR target/16494
* config/sparc/sparc.c (output_cbranch): Properly guard
the code handling far branches with TARGET_V9.
* config/sparc/sparc.md (length attribute): Document the
side-effect of having a length greater or equal to 3.
Paolo Carlini [Tue, 13 Jul 2004 09:08:21 +0000 (09:08 +0000)]
12658_thread.cc: Move/rename to 12658_thread-1.cc and xfail.
2004-07-13 Paolo Carlini <pcarlini@suse.de>
* testsuite/22_locale/locale/cons/12658_thread.cc: Move/rename
to 12658_thread-1.cc and xfail.
* testsuite/22_locale/locale/cons/12658_thread-2.c: New, much
simpler version of 12658_thread-1.cc, still failing on 3_3 and
not failing on 3_4/mainline - both on single processor and
multiprocessor machines.
builtins.c (std_gimplify_va_arg_expr): Handle types passed by reference.
* builtins.c (std_gimplify_va_arg_expr): Handle types passed
by reference.
(ind_gimplify_va_arg_expr): Remove.
* tree.h (ind_gimplify_va_arg_expr): Remove.
* config/pa/pa.c (hppa_gimplify_va_arg_expr): Don't use it.
* config/mmix/mmix.c (mmix_function_arg_pass_by_reference): Allow
argsp to be null.
2004-07-13 David Billinghurst (David.Billinghurst@riotinto.com)
Copy files from g77.f-torture/compile.
Add "{ dg-do compile}". Other changes as noted
* gfortran.dg/g77/19990905-0.f: XFAIL PR 16511
* gfortran.dg/g77/20010519-1.f: Add dg-warning as required
* gfortran.dg/g77/20030115-1.f: Add dg-warning as required
* gfortran.dg/g77/20030326-1.f: XFAIL PR 16511
* gfortran.dg/g77/970125-0.f: Add dg-excess-errors.
* gfortran.dg/g77/980519-2.f: Declare hd_S,hd_Z,hd_T
* gfortran.dg/g77/990115-1.f: Declare RANK as INTEGER
* gfortran.dg/g77/alpha1.f: Separate declaration and DATA
statement to conform to standard. Append alpha1.x for reference.
* gfortran.dg/g77/xformat.f: Add dg-warning
James E Wilson [Tue, 13 Jul 2004 02:21:30 +0000 (02:21 +0000)]
Fix NM/AR propagation from toplevel for recursive makes.
* Makefile.in (AR): Use @AR@ not ar.
(NM): New.
(AR_FOR_TARGET): Use $(AR) not ar for native.
(NM_FOR_TARGET): Use $(NM) not nm for native.
* configure.ac: Add AC_CHECK_PROG calls for NM and AR.
* configure: Regenerate.
re PR libgcj/15713 (compile interpret.cc with -fno-strict-aliasing)
2004-07-12 Bryce McKinlay <mckinlay@redhat.com>
PR libgcj/15713
* include/jvm.h (_Jv_value): New union type.
* gcj/field.h (_Jv_Field): Add new _addr union field variants
* interperet.cc (run): Use _Jv_value union type and *_addr _Jv_Field
union members.
Steve Ellcey [Mon, 12 Jul 2004 22:45:14 +0000 (22:45 +0000)]
function.c (expand_function_start): Ensure r_save is in Pmode.
* function.c (expand_function_start): Ensure r_save is in Pmode.
* calls.c (prepare_call_address): Ensure static_chain_value is
in Pmode.
* builtins.c (expand_builtin_nonlocal_goto): Ensure r_label and
r_save_area are in Pmode.
* config/ia64/ia64.c (ia64_initialize_trampoline): Ensure addr,
fnaddr, and static_chain are in Pmode.
Andrew Pinski [Mon, 12 Jul 2004 22:28:54 +0000 (22:28 +0000)]
re PR c++/16475 (FAIL: g++.dg/rtti/tinfo1.C scan-assembler _ZTIP9CTemplateIhE:)
2004-07-12 Andrew Pinski <apinski@apple.com>
PR c++/16475
Revert:
2004-07-07 H.J. Lu <hongjiu.lu@intel.com>
PR c++/16276
* rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
is not public.
* global.c (recog.h): Add the include-clause.
(bb_info): New member earlyclobber.
(allocate_bb_info, free_bb_info): Initialize/finish the new
member.
(earlyclobber_regclass, earlyclobber_regclass_length): The new
global variables.
(check_earlyclobber, regclass_intersect,
mark_reg_use_for_earlyclobber, mark_reg_use_for_earlyclobber_1):
New functions.
(calculate_local_reg_bb_info): Calculate value of earlyclobber.
(make_accurate_live_analysis): Modify pavin.
call.c (build_user_type_conversion_1, [...]): Pass type directly to lookup_fnfields & build_special_member_call.
* call.c (build_user_type_conversion_1, build_new_op,
check_constructor_callable, build_temp,
perform_direct_initialization_of_possible): Pass type directly to
lookup_fnfields & build_special_member_call.
(build_special_member_call): Accept a type, and complete it.
* class.c (finish_stuct_bits): Copy the BINFOs here.
* cvt.c (ocp_convert): Pass type directly to
build_special_member_call.
* decl.c (build_ptrmemfunc_type): Call xref_bastypes here.
(xref_basetypes): Allocate the binfo here. Adjust.
* init.c (build_init, build_new_1): Pass type directly to
build_special_member_call.
* lex.c (cxx_make_type): Do not allocate binfo here.
* name-lookup.c (arg_assoc_class): Incomplete types have no binfo.
* parser.c (cp_parser_class_head): Always call xref_basetypes.
* pt.c (instantiate_class_template): Likewise. Inhibit access
checking for template friends.
* ptree.c (cxx_print_type): Adjust record printing.
* search.c (lookup_base): When taking a type, complete it before
looking for a binfo.
(lookup_member): Delay completing a type.
(push_class_decls): Don't walk an incomplete type.
(lookup_conversions): Likewise.
* semantics.c (finish_stmt_expr_expr): Pass type directly to
build_special_member_call.
* tree.c (copy_base_binfos): Adjust.
(make_binfo): Likewise.
* typeck.c (build_modify_expr): Pass type directly to
build_special_member_call.
* typeck2.c (process_init_constructor): Check a binfo exists.
(build_m_component_ref): Allow accessing an incomplete type.
(build_functional_cast): Pass type directly to
build_special_member_call.
Roger Sayle [Mon, 12 Jul 2004 13:42:28 +0000 (13:42 +0000)]
rs6000.c (rs6000_rtx_costs): Indicate that the rs6000 doesn't have shift-and-add or shift-and-sub...
* config/rs6000/rs6000.c (rs6000_rtx_costs): Indicate that the
rs6000 doesn't have shift-and-add or shift-and-sub instructions
by returning the cost of a multiplication plus an addition.
Giovanni Bajo [Mon, 12 Jul 2004 10:07:30 +0000 (10:07 +0000)]
re PR c++/2204 (G++ doesn't check (member) function parameter for abstract-ness.)
PR c++/2204
* config-lang.in (gtfiles): Add typeck2.c.
* Make-lang.in: Tweak typeck2.c dependencies, and add rule for
gt-cp-typeck2.h.
* cp-tree.h: Declare complete_type_check_abstract.
* typeck2.c (pat_calc_hash, pat_compare,
complete_type_check_abstract): New functions.
(abstract_virtuals_error): If the type is abstract, register the
declaration within abstract_pending_vars for further checks.
Inspect also dependent types. Handle IDENTIFIER_NODEs as decl.
* decl.c (cp_finish_decl): Do not strip array types.
(create_array_type_for_decl): Check for abstractness of the element
type.
(complete_vars): Call complete_type_check_abstract.
* class.c (finish_struct): Prepare a list of virtual functions for
template types, and call complete_vars on it to check for abstractness.
Nick Clifton [Mon, 12 Jul 2004 08:45:00 +0000 (08:45 +0000)]
config.gcc: Add sh-*-symbianelf target.
* config.gcc: Add sh-*-symbianelf target.
* config/sh/sh.c: Add new target macros:
TARGET_ENCODE_SECTION_INFO, TARGET_STRIP_NAME_ENCODING,
TARGET_CXX_IMPORT_EXPORT_CLASS.
(sh_file_start): Create a definition of the .directive section.
(sh_attribute): Add dllimport and dllexport attributes.
* config/sh/symbian-pre.h: New file.
* config/sh/symbian-post.h: New file.
* config/sh/symbian.c: New file. Contains Symbian specific functions.
* config/sh/sh-protos.h: Add prototypes for new functions provided by symbian.c.
* config/sh/t-symbian: New file.
* doc/extend.texi: Document support for dllimport and dllexport attributes by
the sh-symbianelf target.
Paolo Bonzini [Mon, 12 Jul 2004 06:56:45 +0000 (06:56 +0000)]
re PR tree-optimization/14107 (Return warnings don't work without optimizations enabled)
gcc/ChangeLog:
2004-06-29 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/14107
* gimplify.c (gimplify_return_expr): Accept a
RETURN_EXPR with an error argument.
* tree-optimize.c (init_tree_optimization_passes):
Run pass_warn_function_return at -O0.
gcc/cp/ChangeLog:
2004-06-29 Paolo Bonzini <bonzini@gnu.org>