Bernd Schmidt [Mon, 29 May 2006 14:11:07 +0000 (14:11 +0000)]
bfin.opt (mfdpic): New option.
* config/bfin/bfin.opt (mfdpic): New option.
* config/bfin/t-bfin-elf (EXTRA_PARTS): Add crtbeginS.o and crtendS.o.
(EXTRA_MULTILIB_PARTS): Likewise.
(CRTSTUFF_T_CFLAGS, TARGET_LIBGCC2_CFLAGS): Use -fpic.
(MULTILIB_OPTIONS, MULTILIB_EXCEPTIONS): Build one extra -mfdpic
multilib.
* config/bfin/elf.h (STARTFILE_SPEC): Don't link in crt0.o if -shared.
(CRT_CALL_STATIC_FUNCTION): New.
* config/bfin/uclinux.h (STARTFILE_SPEC): Don't link in crt0.o if
-shared.
(CRT_CALL_STATIC_FUNCTION): New.
* config/bfin/bfin.c (legitimize_pic_address): Now static. Handle
FD-PIC moves.
(n_pregs_to_save): PIC register doesn't need to be saved with FD-PIC.
(print_operand): Handle UNSPEC_MOVE_FDPIC and UNSPEC_FUNCDESC_GOT17M4.
(initialize_trampoline): Changed to handle FD-PIC code generation.
(expand_move): If TARGET_FDPIC, use emit_pic_move as needed.
(bfin_expand_call): Generate FD-PIC calls if TARGET_FDPIC.
(override_options): Disallow -mid-shared-library -mfdpic combination.
Can't do unaligned ops if FD-PIC.
Turn off flag_pic if trying to generate non-id-shared-library
non-fdpic code, since it's not supported.
(bfin_assemble_integer): New function.
(TARGET_ASM_INTEGER): Define.
* config/bfin/crti.s (__init, __fini): Save P3 on the stack if
__BFIN_FDPIC__.
* config/bfin/crtn.s: Restore them.
* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __BFIN_FDPIC__
if TARGET_FDPIC.
(DRIVER_SELF_SPECS, SUBTARGET_DRIVER_SELF_SPECS,
LINK_GCC_C_SEQUENCE_SPEC, ASM_SPEC, LINK_SPEC): New macros.
(FDPIC_FPTR_REGNO, FDPIC_REGNO, OUR_FDPIC_REG): New macros.
(TRAMPOLINE_SIZE, TRAMPOLINE_TEMPLATE): Adjust for FD-PIC.
(CONDITIONAL_REGISTER_USAGE): If TARGET_FDPIC, FDPIC_REGNO is
call-used.
(enum reg_class, REG_CLASS_CONTENTS, REG_CLASS_NAMES): Add
FDPIC_REGS and FDPIC_FPTR_REGS.
(REG_CLASS_FROM_LETTER): Use 'Z' and 'Y' for them.
* config/bfin/bfin.md (UNSPEC_MOVE_FDPIC, UNSPEC_FUNCDESC_GOT17M4,
UNSPEC_VOLATILE_LOAD_FUNCDESC): New constants.
(load_funcdescsi): New pattern.
(call_symbol_fdpic, sibcall_symbol_fdpic, call_value_symbol_fdpic,
sibcall_value_symbol_fdpic, call_insn_fdpic, sibcall_insn_fdpic,
call_value_insn_fdpic, sibcall_value_insn_fdpic): New patterns.
re PR libfortran/27524 (-fbounds-check interacts with array function)
PR fortran/27524
* trans-array.c (gfc_trans_dummy_array_bias): Don't use stride as
a temporary variable when -fbounds-check is enabled, since its
value will be needed later.
Ulrich Weigand [Fri, 26 May 2006 20:21:53 +0000 (20:21 +0000)]
re PR rtl-optimization/27661 (ICE in subst_reloads)
PR rtl-optimization/27661
* reload.c (find_reloads): When reloading a VOIDmode constant
as address due to an EXTRA_MEMORY_CONSTRAINT or 'o' constraint,
use Pmode as mode of the reload register.
PR rtl-optimization/27661
* gcc.dg/pr27661.c: New test case.
Paul Thomas [Fri, 26 May 2006 05:09:18 +0000 (05:09 +0000)]
re PR fortran/27709 (Using size of array pointer component as dimension of function result causes gfortran internal error.)
2006-05-26 Paul Thomas <pault@gcc.gnu.org>
PR fortran/27709
* resolve.c (find_array_spec): Add gfc_symbol, derived, and
use to track repeated component references.
PR fortran/27155
PR fortran/27449
* trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): Use
se->string_length throughout and use memcpy to populate the
expression returned to the scalarizer.
(gfc_size_in_bytes): New function.
2006-05-26 Paul Thomas <pault@gcc.gnu.org>
PR fortran/27709
* gfortran.dg/spec_expr_4.f90: New test.
PR fortran/27155
* gfortran.dg/transfer_array_intrinsic_4.f90: New test.
configure.ac: Add sys/rw_lock.h to AC_CHECK_HEADERS.
* configure.ac: Add sys/rw_lock.h to AC_CHECK_HEADERS.
* configure: Rebuilt.
* include/config.h.in: Likewise.
* include/posix.h: If HAVE_SYS_RW_LOCK_H is defined, include
<sys/rw_lock.h>.
Mark Mitchell [Thu, 25 May 2006 20:18:26 +0000 (20:18 +0000)]
re PR c++/20103 (ICE in create_tmp_var with C99 style struct initializer)
PR c++/20103
* gimplify.c (gimplify_decl_expr): Do not call gimple_add_tmp_var
for anonymous variables explicitly declared by front ends.
PR c++/20103
* decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
error_mark_node to indicate an initialization is OK.
(start_decl): Likewise. Adjust call to start_decl_1.
(start_decl_1): Add initialized parameter. Simplify.
* except.c (initialize_handler_parm): Adjust call to
setart_decl_1.
(expand_start_catch_block): Let cp_finish_decl initialize catch
parameters.
* cp-tree.h (start_decl_1): Adjust prototype.
* pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
(instantiate_decl): Let cp_finish_decl handle initialization.
* semantics.c (finish_compound_literal): Create a temporary
variable for the literal.
* typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
cases.
* decl2.c (finish_static_data_member_decl): Don't set
DECL_INITIAL.
(grokfield): Do not try to initialize functions.
PR c++/20103
* g++.dg/ext/complit6.C: New test.
* g++.dg/ext/complit3.C: Adjust error markers.
* g++.dg/init/const3.C: New test.
Eric Botcazou [Thu, 25 May 2006 14:11:36 +0000 (14:11 +0000)]
tree-ssa-structalias.h (PTR_IS_REF_ALL): New macro.
* tree-ssa-structalias.h (PTR_IS_REF_ALL): New macro.
(struct alias_info): Add new field ref_all_symbol_mem_tag.
* tree-ssa-alias.c (compute_may_aliases): If the program contains
ref-all pointers, run a finalization pass for them.
(compute_flow_insensitive_aliasing): Skip ref-all pointers.
(finalize_ref_all_pointers): New function.
(is_escape_site): Return ESCAPE_BAD_CAST for conversion from a
regular pointer type to a ref-all pointer type.
(get_tmt_for): Return the special memory tag for ref-all pointers.
re PR target/27627 (__builtin_nanf("") doesn't return a _quiet_ nan on parisc)
PR target/27627
* pa/pa-modes.def: Use mips_single_format, mips_double_format and
mips_quad_format formats instead of ieee_single_format,
ieee_double_format and ieee_quad_format formats, respectively.
Zdenek Dvorak [Wed, 24 May 2006 22:55:15 +0000 (22:55 +0000)]
re PR tree-optimization/27639 (VRP miscompilation of simple loop)
PR tree-optimization/27639
PR tree-optimization/26719
* tree-vrp.c (adjust_range_with_scev): Use scev_direction and adjust
call to scev_probably_wraps_p.
* tree-ssa-loop-niter.c (compare_trees, convert_step_widening,
used_in_pointer_arithmetic_p, convert_step): Removed.
(nowrap_type_p): New function.
(scev_probably_wraps_p): Rewritten.
* tree-scalar-evolution.c (instantiate_parameters_1): Do not call
chrec_convert if chrec_convert_aggressive might have been used.
* tree-chrec.c (convert_affine_scev, chrec_convert_1,
scev_direction): New functions.
(chrec_convert): Changed to a wrapper over chrec_convert_1.
* tree-ssa-loop-ivopts.c (idx_find_step): Use convert_affine_scev
instead of convert_step.
* tree-flow.h (scev_probably_wraps_p): Declaration changed.
(convert_step): Declaration removed.
(convert_affine_scev, nowrap_type_p, scev_direction): Declare.
* gcc.dg/pr27639.c: New test.
* gcc.dg/pr26719.c: New test.
* gcc.dg/tree-ssa/scev-cast.c: New test.
Tom Tromey [Wed, 24 May 2006 19:38:05 +0000 (19:38 +0000)]
sources.am, [...]: Rebuilt.
* sources.am, Makefile.in: Rebuilt.
* scripts/makemake.tcl: Accept -verbose command-line option.
(is_verbose): New global.
(verbose): Use it.
(classify_source_file): Don't special case '.' for 'package'
type.
libgcc2.c (LIBGCC2_MAX_UNITS_PER_WORD): New macro.
* libgcc2.c (LIBGCC2_MAX_UNITS_PER_WORD): New macro.
(LIBGCC2_UNITS_PER_WORD): Use LIBGCC2_MAX_UNITS_PER_WORD rather than
MIN_UNITS_PER_WORD to set the default. Also use it in the guard.
re PR middle-end/27736 (unwind-dw2-fde.c:833: fatal error: internal consistency failure)
PR rtl-optimization/27736
* combine.c (replaced_rhs_value): New variable.
(combine_instructions): Set it.
(distribute_notes): When distributing a note in replaced_rhs_insn,
check whether the value was used in replaced_rhs_value.
Andrew MacLeod [Tue, 23 May 2006 14:07:21 +0000 (14:07 +0000)]
re PR c++/26757 (C++ front-end producing two DECLs with the same UID)
2006-05-23 Andrew MacLeod <amacleod@redhat.com>
PR c++/26757
* tree-ssa-loop-im.c (determine_invariantness_stmt): Use
add_referenced_var instead of add_referenced_tmp_var.
* tree-complex.c (create_one_component_var): Use add_referenced_var.
* tree-ssa-loop-manip.c (create_iv, tree_unroll_loop): Use
add_referenced_var.
* tree-tailcall.c (adjust_accumulator_values, adjust_return_value,
tree_optimize_tail_calls_1): Use add_referenced_var.
* tree-ssa-loop-ivopts.c (create_new_iv): Use add_referenced_var.
* tree-ssa-alias.c (create_memory_tag, create_global_var, create_sft):
Use add_referenced_var.
* tree-if-conv.c (ifc_temp_var): Use add_referenced_var.
* gimplify.c (force_gimple_operand): Use add_referenced_var.
* tree-ssa-phiopt.c (conditional_replacement, abs_replacement):
Use add_referenced_var.
* tree-dfa.c (struct walk_state): Remove.
(find_referenced_vars): Remove walk state and vars_found hash table.
(make_rename_temp): Use add_referenced_var.
(find_vars_r): Pass less parameters to add_referenced_var.
(referenced_var_p): New. Is var in referenced_var hash table.
(referenced_var_insert): Assert var isn't already in hash table.
(add_referenced_var): Don't need walk_state parameter. Add var if it
isn't already in the hash table.
(add_referenced_tmp_var): Remove.
(find_new_referenced_vars_1): Use add_referenced_var.
* tree-ssa-pre.c (create_expression_by_pieces,
insert_into_preds_of_block, insert_extra_phis, realify_fake_stores):
Use add_referenced_var.
* tree-vect-patterns.c (vect_pattern_recog_1): Use add_referenced_var.
* lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
lambda_loopnest_to_gcc_loopnest, perfect_nestify): Use
add_referenced_var.
* tree-vect-transform.c (vect_create_addr_base_for_vector_ref,
vect_create_data_ref_ptr, vect_create_destination_var,
vect_init_vector, vect_build_loop_niters,
vect_generate_tmps_on_preheader, vect_update_ivs_after_vectorizer,
vect_gen_niters_for_prolog_loop, vect_create_cond_for_align_checks):
Use add_referenced_var.
* tree-outof-ssa.c (create_temp): Use add_referenced_var.
* tree-flow.h (add_referenced_tmp_var): Remove prototype
(add_referenced_var): Add prototype.
* tree-ssa-structalias.c (get_constraint_for,
intra_create_variable_infos): Use add_referenced_var.
Alexandre Oliva [Tue, 23 May 2006 05:35:21 +0000 (05:35 +0000)]
simplify-rtx.c (simplify_subreg): Adjust REG_OFFSET for big-endian paradoxical subregs.
* simplify-rtx.c (simplify_subreg): Adjust REG_OFFSET for
big-endian paradoxical subregs.
* var-tracking.c (struct micro_operation_def): Document that,
for modify micro operations, insn is the subsequent instruction.
(var_reg_delete_and_set, var_mem_delete_and_set): Split into...
(var_reg_set, var_mem_set): ... new functions.
(add_stores): Record subsequent insn.
(compute_bb_dataflow): Use new functions for MO_USE.
(emit_notes_in_bb): Use new functions for MO_USE. Emit use
notes after the insn, and modify notes before the insn known
to be the subsequent one.
(vt_initialize): Invert sorting of MO_CLOBBERs and MO_SETs.
PR rtl-optimization/26375
PR rtl-optimization/26855
* df-problems (df_ru_bb_local_compute_process_def): Removed update
to gen set.
(df_ru_bb_local_compute): Reversed statements and removed bogus
comment explaining why they should be in wrong order.
(df_ru_dump, df_rd_dump): Enhanced debug info.
* modulo-sched.c (sms_schedule, tree_opt_pass pass_sms): Enhanced
debug info.
* ddg.c (add_deps_for_def): Converted use of reaching defs to
reaching uses and fixed space problem.