Eric Botcazou [Mon, 14 Sep 2009 19:27:21 +0000 (19:27 +0000)]
exp_dbug.ads (Packed Array Encoding): Document the new encoding for the unconstrained case.
* exp_dbug.ads (Packed Array Encoding): Document the new encoding for
the unconstrained case.
* gcc-interfaces/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Implement
the encoding. Do not give a name to the pointer type to the XUT type.
* gcc-interfaces/utils.c (gnat_pushdecl): Propagate DECL_ORIGINAL_TYPE
for fat pointer types, if any. Make sure DECL_ARTIFICIAL is cleared
on nodes with DECL_ORIGINAL_TYPE set.
(update_pointer_to): Set DECL_ORIGINAL_TYPE to the original pointer
for fat pointer types. Make sure DECL_ARTIFICIAL is cleared.
gcc/
* config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
(mips_cprestore_address_p): Likewise.
(mips_save_gp_to_cprestore_slot): Likewise.
(mips_restore_gp): Rename to...
(mips_restore_gp_from_cprestore_slot): ...this.
(mips_must_initialize_gp_p): Declare.
(mips_emit_save_slot_move): Likewise.
(mips_output_load_label): Return nothing.
(mips_eh_uses): Declare.
* config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
(TARGET_CPRESTORE_DIRECTIVE): New macro.
(TARGET_ABSOLUTE_JUMPS): Likewise.
(EH_USES): Likewise.
(FIRST_PSEUDO_REGISTER): Update comment.
(MIPS_ABSOLUTE_JUMP): New macro, extracted from...
(MIPS_CALL): ...here.
(REGISTER_NAMES): Add $cprestore.
* config/mips/mips.c (machine_function): Remove has_gp_insn_p.
Add load_label_length, has_inflexible_gp_insn_p,
has_flexible_gp_insn_p, must_initialize_gp_p and
must_restore_gp_when_clobbered_p.
(mips_expand_call): Don't generate split instructions here.
(mips_split_call): Update the call to mips_restore_gp after
the above name change.
(mips16_cfun_returns_in_fpr_p): Move earlier in file.
(mips_find_gp_ref): New function.
(mips_insn_has_inflexible_gp_ref_p): Likewise.
(mips_cfun_has_inflexible_gp_ref_p): Likewise.
(mips_insn_has_flexible_gp_ref_p): Likewise.
(mips_cfun_has_flexible_gp_ref_p): Likewise.
(mips_function_has_gp_insn): Delete.
(mips_global_pointer): Drop the df_regs_ever_live_p check.
Use the new functions above. Only return INVALID_REGNUM
for TARGET_ABSOLUTE_JUMPS.
(mips_must_initialize_gp_p): New function.
(mips_get_cprestore_base_and_offset): New function, extracted from...
(mips_cprestore_slot): ...here. Take a bool parameter.
(mips_cfun_has_cprestore_slot_p): New function.
(mips_cprestore_address_p): Likewise.
(mips_save_gp_to_cprestore_slot): Likewise.
(mips_restore_gp): Rename to...
(mips_restore_gp_from_cprestore_slot): ...this. Assert
epilogue_completed. Update the call to mips_cprestore_slot.
Test cfun->machine->must_restore_gp_when_clobbered_p.
(mips_direct_save_slot_move_p): New function.
(mips_emit_save_slot_move): Likewise.
(mips_output_cplocal): Test mips_must_initialize_gp_p () instead
of cfun->machine->global_pointer.
(mips_output_function_prologue): Check mips_must_initialize_gp_p ().
(mips_save_reg): Use mips_emit_save_slot_move.
(mips_expand_prologue): Set must_initialize_gp_p.
Use mips_cfun_has_cprestore_slot_p. Use gen_potential_cprestore
for all cprestore saves. Emit a use_cprestore instruction after
setting up the cprestore slot.
(mips_restore_reg): Use mips_emit_save_slot_move.
(mips_process_load_label): New function.
(mips_load_label_length): Likewise.
(mips_output_load_label): Don't return asm: output it here instead.
Use mips_process_load_label.
(mips_adjust_insn_length): Adjust the length of branch instructions
that have length MAX_PIC_BRANCH_LENGTH.
(mips_output_conditional_branch): Update the call to
mips_output_load_label. Assume the branch target is OPERANDS[0]
rather than OPERANDS[1]. Use MIPS_ABSOLUTE_JUMP for absolute jumps.
(mips_output_order_conditional_branch): Swap the meaning of
OPERANDS[0] and OPERANDS[1].
(mips_variable_issue): Don't count ghost instructions.
(mips_expand_ghost_gp_insns): New function.
(mips_reorg): Rerun mips_reorg_process_insns if it returns true.
(mips_output_mi_thunk): Set must_initialize_gp_p.
(mips_eh_uses): New function.
* config/mips/predicates.md (cprestore_save_slot_operand)
(cprestore_load_slot_operand): New predicates.
* config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
(UNSPEC_MOVE_GP): Likewise.
(UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
(UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
(CPRESTORE_SLOT_REGNUM): New register.
(MAX_PIC_BRANCH_LENGTH): New constant.
(jal_macro): Use MIPS_ABSOLUTE_JUMPS.
(length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
branches. Fix commentary.
(loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
Change type to "ghost".
(loadgp_absolute_<mode>): Likewise.
(loadgp_rtp_<mode>): Likewise.
(copygp_mips16): Likewise.
(loadgp_blockage): Remove redundant mode attribute.
(potential_cprestore): New instruction.
(cprestore): Turn into an unspec set.
(use_cprestore): New instruction.
(*branch_fp): Swap operands 0 and 1. Remove redundant mode attribute.
(*branch_fp_inverted): Likewise.
(*branch_order<mode>): Likewise.
(*branch_order<mode>_inverted): Likewise.
(*branch_equality<mode>): Likewise.
(*branch_equality<mode>_inverted): Likewise.
(*branch_bit<bbv><mode>): Likewise.
(*branch_bit<bbv><mode>_inverted): Likewise.
(*branch_equality<mode>_mips16): Remove redundant mode.
(jump): Turn into a define_expand.
(*jump_absolute): New instruction.
(*jump_pic): Likewise.
(*jump_mips16): Rename previously-unnamed pattern. Remove
redundant mode attribute.
(restore_gp): Split on epilogue_completed rather than
reload_completed. Change type to "ghost".
(move_gp<mode>): New instruction.
* config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
Remove redundant mode attribute.
* config/mips/mips-ps-3d.md (bc1any4t): Likewise.
(bc1any4f, bc1any2t, bc1any2f): Likewise.
(*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
bfin.c (bfin_expand_builtin, [...]): Force constants to registers for the operands.
gcc/
* config/bfin/bfin.c (bfin_expand_builtin,
case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
operands.
From Jie Zhang <jie.zhang@analog.com>:
* config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
before use in two places.
* config/bfin/bfin.md (AREG): Define mode iterator.
(reload_in, reload_out): Use mode iterator AREG.
gcc/testsuite/
* gcc.target/bfin/20090914-1.c: New test.
* gcc.target/bfin/20090914-2.c: New test.
* gcc.target/bfin/20090914-3.c: New test.
gcc/
From Jie Zhang <jie.zhang@analog.com>:
* config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
save FP and RETS with saveall attribute.
(bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
with saveall attribute.
gcc/testsuite/
From Jie Zhang <jie.zhang@analog.com>:
* gcc.target/bfin/saveall.c: New test.
Richard Guenther [Mon, 14 Sep 2009 09:38:55 +0000 (09:38 +0000)]
re PR bootstrap/41350 (FreeBSD bootstrap failure: unimplemented: Multiple EH personalities are supported only with assemblers supporting .cfi.personality directive)
cp/
* except.c (init_exception_processing): Do not set
lang_eh_runtime_type.
(choose_personality_routine): Do not set eh_personality_decl,
set pragma_java_exceptions.
* cp-lang.c (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
(LANG_HOOKS_EH_PERSONALITY): Likewise.
(cp_eh_personality_decl): New.
(cp_eh_personality): Likewise.
* Make-lang.in (cp-lang.o): Add $(EXPR_H) and $(EXCEPT_H)
dependencies.
java/
* decl.c (do_nothing): Remove.
(java_init_decl_processing): Do not set lang_eh_runtime_type.
* Make-lang.in (lang.o): Add $(EXCEPT_H) dependency.
* lang.c (java_eh_personality): New.
(java_eh_personality_decl): Likewise.
(LANG_HOOKS_EH_PERSONALITY): Define.
ada/
* gcc-interface/misc.c (gnat_init_gcc_eh): Do not set
lang_eh_runtime_type.
(LANG_HOOKS_EH_PERSONALITY): Define.
(gnat_eh_personality_decl): New.
(gnat_eh_personality): Likewise.
* Make-lang.in (misc.o): Add gt-ada-misc.h dependency.
* config-lang.in (gtfiles): Add misc.c.
fortran/
* f95-lang.c (gfc_maybe_initialize_eh): Do not init
eh_personality_libfunc.
Co-Authored-By: Rafael Avila de Espindola <espindola@google.com>
From-SVN: r151676
Kai Tietz [Sun, 13 Sep 2009 13:08:20 +0000 (13:08 +0000)]
Changlog libcpp
2009-09-13 Kai Tietz <kai.tietz@onevision.com>
* configure.ac: Set for i?86-w64-mingw*
need_64bit_hwint to yes.
* configure: Regenerated.
ChangeLog gcc
2009-09-13 Kai Tietz <kai.tietz@onevision.com>
* config.gcc (tm_file): Remove i386/biarch32.h
for i?86-w64-mingw* case.
(i?86-*-mingw* andx86_64-*-mingw*): Add multilib
support.
* config.host: Set for cygwin and x86/x64 mingw the
option use_long_long_for_widest_fast_int to yes.
Eric Botcazou [Sun, 13 Sep 2009 10:46:11 +0000 (10:46 +0000)]
tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
* tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
* dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
(dbxout_begin_function): Likewise.
* final.c (dwarf2_debug_info_emitted_p): New predicate.
(final_start_function): Do not emit debug info if DECL_IGNORED_P is
set on the function.
(final_end_function): Likewise.
(final_scan_insn): Likewise.
(rest_of_handle_final): Likewise.
* varasm.c (assemble_start_function): Likewise.
* config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
predicates.md (symbolic_operand): Require a CONST symbolic operand to be a PLUS expression.
* config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
operand to be a PLUS expression.
* config/pa/pa.c (pa_secondary_reload): Likewise.
config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit to match the system compiler's configuration at...
2009-09-11 Loren J. Rittle <ljrittle@acm.org>
* config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
to match the system compiler's configuration at inflection point.
Add comment to remark a remaining difference with system compiler.
re PR debug/41276 (Segmentation fault in lookup_page_table_entry)
PR debug/41276
PR debug/41307
* cselib.c (cselib_expand_value_rtx_cb): Document callback
interface.
(cselib_expand_value_rtx_1): Use callback for SUBREGs. Adjust
for VALUEs, to implement the documented interface.
* var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
Adjust for VALUEs and anything else, to implement the
documented interface.
Override all per-target *_LINK variables correctly.
boehm-gc/:
* Makefile.am (libgcjgc_la_LINK, gctest_LINK): New.
(gctest_LDADD): Depend on libgcjgc.la instead of ./libgcjgc.la,
so that library dependency resolution works with portable make.
* Makefile.in: Regenerate.
rs6000.h (DATA_ALIGNMENT): Check that we are dealing with actual SPE/paired vector modes before using...
* config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
with actual SPE/paired vector modes before using 64-bit alignment.
Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
Janus Weil [Thu, 10 Sep 2009 22:47:03 +0000 (00:47 +0200)]
re PR fortran/41242 (PPC call rejected (related to user-defined assignment?))
2009-09-11 Janus Weil <janus@gcc.gnu.org>
PR fortran/41242
* resolve.c (resolve_ordinary_assign): Don't call resolve_code,
to avoid that subsequent codes are resolved more than once.
(resolve_code): Make sure that type-bound assignment operators are
resolved correctly.
Steven G. Kargl [Thu, 10 Sep 2009 21:22:08 +0000 (21:22 +0000)]
re PR fortran/31292 (ICE with module procedure interface in a procedure body)
2009-09-10 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/31292
* fortran/decl.c(gfc_match_modproc): Check that module procedures
from a module can USEd in module procedure statements in other
program units. Update locus for better error message display.
Detect intrinsic procedures in module procedure statements.
2009-09-10 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/31292
* gfortran.dg/module_procedure_1.f90: New test.
* gfortran.dg/module_procedure_2.f90: Ditto.
* gfortran.dg/generic_14.f90: Move dg-error to new location.
Richard Guenther [Thu, 10 Sep 2009 11:42:25 +0000 (11:42 +0000)]
re PR middle-end/41257 (Bogus error '*.LTHUNK0' aliased to undefined symbol '_ZN1CD1Ev')
2009-09-10 Richard Guenther <rguenther@suse.de>
PR middle-end/41257
* cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
reachable nodes.
(cgraph_finalize_compilation_unit): Compute reachability
before emitting thunks. Properly process aliases before
possibly removing unreachable nodes.
Richard Guenther [Thu, 10 Sep 2009 08:52:36 +0000 (08:52 +0000)]
re PR middle-end/41254 (crashed compile Qt4 gui library)
2009-09-10 Richard Guenther <rguenther@suse.de>
PR middle-end/41254
* tree.c (struct free_lang_data_d): Add worklist member.
(find_decls_types_r): Push onto the worklist instead of recursing.
Handle TREE_BINFOs properly.
(find_decls_types): New function wrapped around find_decls_types_r
to process the worklist.
(find_decls_types_in_eh_region): Use it.
(find_decls_types_in_node): Likewise.
(find_decls_types_in_var): Likewise.
(free_lang_data_in_cgraph): Likewise. Free the worklist.
* tree.h (RECORD_OR_UNION_TYPE_P): New.
(AGGREGATE_TYPE_P): Adjust.
Kai Tietz [Wed, 9 Sep 2009 19:05:55 +0000 (19:05 +0000)]
i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
2009-09-09 Kai Tietz <kai.tietz@onevision.com>
PR/41315
* config/i386.c (ix86_can_use_return_insn_p): Check for
padding0, too.
(ix86_expand_prologue): Take frame.padding0 into logic of
to_allocate checks.
(ix86_expand_epilogue): Likewise.
Jakub Jelinek [Wed, 9 Sep 2009 18:39:52 +0000 (20:39 +0200)]
t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, [...]): New variables.
* config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
New variables.
(SHLIB_LINK, SHLIB_INSTALL): Use them.
* config/t-slibgcc-libgcc: New file.
* config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
re PR tree-optimization/41101 (ICE in compute_antic, at tree-ssa-pre.c:2419)
2009-09-09 Richard Guenther <rguenther@suse.de>
PR tree-optimization/41101
* tree-ssa-pre.c (maximal_set): Remove.
(compute_antic_aux): Treat the maximal set as implicitly all ones.
Defer all blocks we didn't visit at least one successor.
(add_to_exp_gen): Do not add to the maximal set.
(make_values_for_phi): Likewise.
(compute_avail): Likewise.
(init_pre): Do not allocate the maximal set.
(execute_pre): Do not dump it.
tree.c (free_lang_data_in_type): Do not free the type variant chains.
2009-09-09 Richard Guenther <rguenther@suse.de>
* tree.c (free_lang_data_in_type): Do not free the type variant
chains.
(free_lang_data): Merge char_type_node with its properly signed
variant.
(pass_ipa_free): Collect after freeing language specific data.
Michael Matz [Wed, 9 Sep 2009 00:43:36 +0000 (00:43 +0000)]
re PR middle-end/41268 (bootstrap is broken after r151350 (expand from tuples))
PR middle-end/41268
* cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
* rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
to reflect reality.
Use -fno-merge-debug-string to comply with Darwin
* g++.dg/debug/dwarf2/namespace-1.C: Use -fno-merge-debug-string
and adjust.
* g++.dg/debug/dwarf2/template-func-params-6.C: Likewise.
* g++.dg/debug/dwarf2/template-func-params-7.C: Likewise.
* g++.dg/debug/dwarf2/template-params-6.C: Likewise.
* g++.dg/debug/dwarf2/pubnames-1.C: Likewise. Also, adjust to
take darwin specifics in account.