Alan Modra [Fri, 31 Mar 2006 00:27:51 +0000 (00:27 +0000)]
rs6000.c (rs6000_explicit_options): Add ieee.
* config/rs6000/rs6000.c (rs6000_explicit_options): Add ieee.
(rs6000_override_options): Use it.
(rs6000_handle_option): Set it. Set rs6000_explicit_options.abi
only for -mabi=spe/no-spe and -mabi=altivec.
Roger Sayle [Thu, 30 Mar 2006 22:37:55 +0000 (22:37 +0000)]
re PR middle-end/22375 (fold_builtins creates mis-matched types)
PR middle-end/22375
* trans.c (gfc_trans_runtime_check): Promote the arguments of
__builtin_expect to the correct types, and the result back to
boolean_type_node.
Roger Sayle [Thu, 30 Mar 2006 17:47:48 +0000 (17:47 +0000)]
re PR target/17959 (-mpowerpc64 can cause worse code than without it)
PR target/17959
* expr.c (emit_group_store): Optimize group stores into a pseudo
register by using a paradoxical subreg to initialize the destination
if the first or last member of the group specifies a "low part".
Thomas Koenig [Thu, 30 Mar 2006 16:30:26 +0000 (16:30 +0000)]
re PR fortran/25031 ([4.1 only] Allocatable array can be reallocated.)
2006-03-30 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/25031
* runtime/memory.c (allocate_array): If stat is present and
the variable is already allocated, free the variable, do
the allocation and set stat.
(allocate_array_64): Likewise. Whitespace fix.
2006-03-30 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/25031
* gfortran.dg/multiple_allocation_1.f90: Check that the
size has changed after a re-allocation with stat.
Maxim Kuvyrkov [Thu, 30 Mar 2006 15:41:00 +0000 (15:41 +0000)]
re PR target/26734 (GCC cannot bootstrap on IA64 HP-UX)
2006-03-30 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
PR target/26734
* rtl.def (DEPS_LIST): Change type of the second operand to 'int'.
* target.h (struct gcc_target.speculate_insn): Change type of the
second parameter to 'int'.
* lists.c (alloc_DEPS_LIST): Change signature. Update reference to
the second operand of the DEPS_LIST.
(copy_DEPS_LIST_list): Update reference to the second operand of the
DEPS_LIST.
* rtl.h (alloc_DEPS_LIST): Update signature.
* sched-int.h (ds_t): Change typedef to 'int'.
(DEP_STATUS, BITS_PER_DEP_STATUS): Update.
Maxim Kuvyrkov [Thu, 30 Mar 2006 15:33:18 +0000 (15:33 +0000)]
haifa-sched.c (try_ready): Change condition to restore non-speculative pattern of the instruction.
2006-03-30 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
* haifa-sched.c (try_ready): Change condition to restore
non-speculative pattern of the instruction.
(process_insn_depend_be_in_spec): Code to keep probability of the
speculative dependence non-decreasing.
Paolo Bonzini [Thu, 30 Mar 2006 14:31:13 +0000 (14:31 +0000)]
re PR tree-optimization/26830 (Repeated SSA update during loop header copying)
2006-03-30 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/26830
* tree-ssa-copy.c (copy_prop_visit_assignment): Do not check loop depth.
(copy_prop_visit_stmt): Remove write-only variable ann.
(init_copy_prop): Check variable loop depth here. Do not simulate
memory-tag and virtual operand PHIs except for store copy prop.
Roger Sayle [Wed, 29 Mar 2006 22:40:17 +0000 (22:40 +0000)]
stor-layout.c (mode_for_size_tree): Remove restiction on type sizes by correctly testing whether the size fits a...
* stor-layout.c (mode_for_size_tree): Remove restiction on type
sizes by correctly testing whether the size fits a host integer.
(initialize_sizetypes): Use set_min_and_max_values_for_integral_type
to correctly set TYPE_MIN_VALUE and TYPE_MAX_VALUE to the full
SImode range for the default sizetype and bitsizetype.
Roger Sayle [Wed, 29 Mar 2006 21:55:34 +0000 (21:55 +0000)]
convert.c (convert_to_pointer): Preserve the TREE_OVERFLOW and TREE_CONSTANT_OVERFLOW bits of the argument.
* convert.c (convert_to_pointer): Preserve the TREE_OVERFLOW
and TREE_CONSTANT_OVERFLOW bits of the argument. Return
quickly if the argument is already of the correct type.
Call fold_build1 instead of build1. Tidy up blank lines.
David Edelsohn [Wed, 29 Mar 2006 21:07:12 +0000 (21:07 +0000)]
genemit.c (main): Add tm-constrs.h to included headers.
* genemit.c (main): Add tm-constrs.h to included headers.
* genoutput.c (output_prologue): Add tm-constrs.h to included headers.
* genpeep.c (main): Add tm-constrs.h to included headers.
* genpreds.c (write_satisfies_constraint_fns): Rename to ...
(write_tm_constrs_h): this and write complete file.
(write_tm_preds_h): Do not emit satisfies_constraint fns.
(write_insn_preds_c): Add tm-constrs.h to included headers.
(gen_constrs): New variable.
(parse_option): Parse "-c".
(main): Invoke write_tm_constrs_h.
* genrecog.c (write_header): Add tm-constrs.h to included headers.
* Makefile.in (STAGECOPYSTUFF): Add tm-constrs.h.
(object_out_file): Add tm-constrs.h dependency.
(insn-emit.o): Same.
(insn-output.o): Same.
(insn-peep.o): Same.
(insn-preds.o): Same.
(insn-recog.o): Same.
(tm-constsr.h): New target.
(s-constrs-h): New target.
* config/rs6000/constraints.md: New file.
* config/rs6000/rs6000.c: Include tm-constrs.h.
(num_insn_constant_wide): Convert to satisfies_constraint.
(rs6000_rtx_costs): Convert to satisfies_constraint.
* config/rs6000/rs6000.h (REG_CLASS_FROM_LETTER): Delete.
(CONST_OK_FOR_LETTER_P): Delete.
(CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
(EXTRA_CONSTRAINT): Delete.
(EXTRA_MEMORY_CONSTRAINT): Delete.
(EXTRA_ADDRESS_CONSTRAINT): Delete.
* config/rs6000/predicates.md: Convert to satisfies_constraint.
* config/rs6000/rs6000.md: Include constraints.md. Convert to
satisfies_constraint.
Sebastian Pop [Wed, 29 Mar 2006 17:20:24 +0000 (19:20 +0200)]
re PR tree-optimization/26859 (ICE Segmentation Fault)
PR tree-optimization/26859
* tree-ssa-loop-niter.c (infer_loop_bounds_from_undefined): Avoid
division by zero.
(convert_step): Remove TREE_OVERFLOW and TREE_CONSTANT_OVERFLOW flags
for the step after fold_convert.
Zdenek Dvorak [Wed, 29 Mar 2006 01:41:27 +0000 (03:41 +0200)]
re PR tree-optimization/25985 (with optimization integer math fails)
PR tree-optimization/25985
* tree-ssa-loop-niter.c (number_of_iterations_le,
number_of_iterations_ne): Make comments more precise.
(number_of_iterations_cond): Add only_exit argument. Use the
fact that signed variables do not overflow only when only_exit
is true.
(loop_only_exit_p): New.
(number_of_iterations_exit): Pass result of loop_only_exit_p to
number_of_iterations_cond.
Roger Sayle [Tue, 28 Mar 2006 17:55:26 +0000 (17:55 +0000)]
fold-const.c (fold_binary): Fold (X & Y) ^ Y as the equivalent ~X & Y, and the symmetry related transformations.
* fold-const.c (fold_binary) <BIT_XOR_EXPR>: Fold (X & Y) ^ Y as
the equivalent ~X & Y, and the symmetry related transformations.
(fold_binary) <BIT_AND_EXPR>: Similarly, fold (X ^ Y) & Y as
~X & Y, and symmetry related transforms.
* gcc.dg/fold-andxor-1.c: New test case.
* gcc.dg/fold-xorand-1.c: Likewise.
Roger Sayle [Tue, 28 Mar 2006 17:06:19 +0000 (17:06 +0000)]
fold-const.c (fold_unary): Fold (T1)(~(T2)X) as ~(T1)X...
* fold-const.c (fold_unary) <NOP_EXPR>: Fold (T1)(~(T2)X) as
~(T1)X, when T1 and T2 are integer types of the same precision
and (T2)X isn't an extension.
Jeff Law [Tue, 28 Mar 2006 15:35:47 +0000 (08:35 -0700)]
re PR tree-optimization/26796 (ACATS ICE c34002a c52005 spurious storage_error)
PR tree-optimization/26796
* tree-ssa-dom.c (propagate_rhs_into_lhs): Queue blocks which
need EH edge cleanups rather than purging them immediately.
(eliminate_degenerate_phis): Handle queued EH cleanups.
Maxim Kuvyrkov [Mon, 27 Mar 2006 22:59:07 +0000 (22:59 +0000)]
rtl.def (Copyright): Update date.
2006-03-27 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
* rtl.def (Copyright): Update date.
(DEPS_LIST): Change type of the second operand to 'int'.
* target.h (Copyright): Update date.
(struct gcc_target.speculate_insn): Change type of the second parameter
to 'int'.
* lists.c (Copyright): Update date.
(alloc_DEPS_LIST): Change signature. Update reference to the second
operand of the DEPS_LIST.
(copy_DEPS_LIST_list): Update reference to the second operand of the
DEPS_LIST.
* rtl.h (Copyright): Update date.
(alloc_DEPS_LIST): Update signature.
* sched-int.h (Copyright): Update date.
(ds_t): Change typedef to 'int'.
(DEP_STATUS, BITS_PER_DEP_STATUS): Update.
Maxim Kuvyrkov [Mon, 27 Mar 2006 22:38:06 +0000 (22:38 +0000)]
haifa-sched.c (Copyright): Update date.
2006-03-27 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
* haifa-sched.c (Copyright): Update date.
(try_ready): Change condition to restore non-speculative pattern
of the instruction.
(process_insn_depend_be_in_spec): Code to keep probability of the
speculative dependence non-decreasing.
J"orn Rennecke [Mon, 27 Mar 2006 15:59:27 +0000 (15:59 +0000)]
t-sh ($(T)libic_invalidate_array_4-100.a): Fix rule to use lib prefix for target.
* config/sh/t-sh ($(T)libic_invalidate_array_4-100.a): Fix rule
to use lib prefix for target.
($(T)libic_invalidate_array_4-200.a): Likewise.
($(T)libic_invalidate_array_4a.a): Likewise.
* sh.opt (mpretend-cmove): New option.
* sh.h (OPERRIDE_OPTIONS): Switch it off if not TARGET_SH1.
* sh.md (movsicc_t_false, movsicc_t_tru): New patterns.
(movsicc): Add TARGET_PRETEND_CMOVE code.
Andreas Krebbel [Mon, 27 Mar 2006 13:15:46 +0000 (13:15 +0000)]
s390-protos.h (s390_hard_regno_mode_ok, [...]): New function prototypes.
2006-03-27 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390-protos.h (s390_hard_regno_mode_ok,
s390_class_max_nregs): New function prototypes.
* config/s390/s390.c (REGNO_PAIR_OK): New macro.
(s390_hard_regno_mode_ok, s390_class_max_nregs): New functions.
* config/s390/s390.h (HARD_REGNO_NREGS, HARD_REGNO_MODE_OK,
CLASS_MAX_NREGS): Macro bodies replaced by function calls.
Geoffrey Keating [Mon, 27 Mar 2006 06:09:48 +0000 (06:09 +0000)]
dwarf2out.c (add_location_or_const_value_attribute): Call tree_add_const_value_attribute if nothing else works.
* dwarf2out.c (add_location_or_const_value_attribute): Call
tree_add_const_value_attribute if nothing else works.
(reference_to_unused): New.
(rtl_for_decl_init): Use reference_to_unused to decide whether
to output an initializer.
Sebastian Pop [Sun, 26 Mar 2006 20:48:05 +0000 (22:48 +0200)]
tree-data-ref.c: Rename DDR_SIZE_VECT to DDR_NB_LOOPS.
* tree-data-ref.c: Rename DDR_SIZE_VECT to DDR_NB_LOOPS.
(subscript_dependence_tester_1): Declared.
(print_dir_vectors, print_dist_vectors): New.
(debug_data_dependence_relation): New.
(dump_data_dependence_relation): Print more details.
(initialize_data_dependence_relation): Initialize DDR_LOOP_NEST.
(analyze_subscript_affine_affine): Don't ICE when gcd_alpha_beta is 0.
(save_dist_v, save_dir_v, add_outer_distances,
build_classic_dist_vector_1): New.
(build_classic_dist_vector): Rewrite to work on DDR_LOOP_NEST.
Don't test for lambda_vector_lexico_pos.
(same_access_functions, add_multivariate_self_dist,
add_other_self_distances, dir_from_dist): New.
(build_classic_dir_vector): Replace implementation almost identical to
build_classic_dist_vector with a walk of DDR_DIST_VECTS with a call to
dir_from_dist.
(subscript_dependence_tester_1): New.
(subscript_dependence_tester): Handle the lexicographically negative
distance vectors by recomputing the dependence relation.
(compute_affine_dependence): Remove parameter loop_nest_depth.
(compute_self_dependence): Don't call compute_subscript_distance.
(compute_all_dependences): Remove parameters nb_loops, loop_nest_depth.
Add a parameter for the loop_nest.
(find_loop_nest_1, find_loop_nest): New.
(compute_data_dependences_for_loop): Compute the loop nest, and give
up if the nest is not well formed.
* tree-data-ref.h (loop_p): New.
(struct data_dependence_relation): Replace size_vect field with
loop_nest, a vec of loops.
(DDR_SIZE_VECT): Renamed DDR_NB_LOOPS.
(DDR_LOOP_NEST): New.
(print_dir_vectors, print_dist_vectors,
debug_data_dependence_relation): Declared.
(index_in_loop_nest): New.
* tree-vect-analyze.c (vect_analyze_data_ref_dependence): Use
DDR_LOOP_NEST and index_in_loop_nest to determine the dependence
distance.
Jerry DeLisle [Sun, 26 Mar 2006 02:15:44 +0000 (02:15 +0000)]
re PR libfortran/26661 (Sequential formatted read goes too far)
2006-03-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/26661
* io/io.h: Add read_sf so it can be used by read_x.
* io/transfer.c (read_sf): Pass no_error flag to read_sf. Use it to
break out rather than error on EOF or EOR conditions.
(read_block): Update call to read_sf.
(read_block_direct): Ditto.
* io/read.c (read_x): Use the modified read_sf instead of read_block.
Thomas Koenig [Sat, 25 Mar 2006 21:31:48 +0000 (21:31 +0000)]
re PR libfortran/26735 ([4.1 only] -fconvert=swap and implied open)
2006-03-25 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/26735
* io/transfer.c (data_transfer_init): Set u_flags.convert
on an unopened unit if specified by environment variable
(via get_unformatted_convert) or by compile-time option.
2006-03-25 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/26735
* gfortran.dg/convert_implied_open.f90: New test case.
Thomas Koenig [Sat, 25 Mar 2006 21:15:48 +0000 (21:15 +0000)]
re PR fortran/26769 (Implement transpose() and reshape() for real instead of using integer)
2006-03-25 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/26769
* iresolve.c (gfc_resolve_reshape): Remove doubling of
kind for complex. For real(kind=10), call reshape_r10.
(gfc_resolve_transpose): For real(kind=10), call
transpose_r10.
2006-03-25 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/26769
* Makefile.am: Add transpose_r10.c and reshape_r10.c.
* aclocal.m4: Regenerate using aclocal 1.9.3.
* Makefile.in: Regenerate using automake 1.9.3.
* m4/iparm.m4 (rtype_ccode): If rtype_letter is `i',
evaluate to rtype_kind, otherwise to rtype_code.
* generated/transpose_r10.c: Add.
* generated/reshape_r10.c: Add.
2006-03-25 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/26769
* gfortran.dg/transpose_reshape_r10.f90: New test case.
Uros Bizjak [Sat, 25 Mar 2006 17:32:34 +0000 (18:32 +0100)]
re PR middle-end/26717 (complex/complex gives a REAL_CST)
PR middle-end/26717
* fold-const.c (fold_binary) [RDIV_EXPR]: Do not optimize A / A
to 1.0 for non-real operands. Implement A / A optimization for
complex operands.
Co-Authored-By: Roger Sayle <roger@eyesopen.com>
From-SVN: r112379
Roger Sayle [Sat, 25 Mar 2006 15:01:42 +0000 (15:01 +0000)]
dependency.c (gfc_check_dependency): Improve handling of pointers...
* dependency.c (gfc_check_dependency): Improve handling of pointers;
Two variables of different types can't have a dependency, and two
variables with the same symbol are equal, even if pointers.
Roger Sayle [Sat, 25 Mar 2006 01:28:11 +0000 (01:28 +0000)]
gfortran.h (gfc_symbol): Add a new "forall_index" bit field.
* gfortran.h (gfc_symbol): Add a new "forall_index" bit field.
* match.c (match_forall_iterator): Set forall_index field on
the iteration variable's symbol.
* dependency.c (contains_forall_index_p): New function to
traverse a gfc_expr to check whether it contains a variable
with forall_index set in it's symbol.
(gfc_check_element_vs_element): Return GFC_DEP_EQUAL for scalar
constant expressions that don't variables used as FORALL indices.
* gfortran.dg/dependency_9.f90: New (resurected) test case.
Geoffrey Keating [Sat, 25 Mar 2006 00:54:40 +0000 (00:54 +0000)]
dwarf2out.c (is_c_family): Understand new DWARF3 language types.
2006-03-24 Geoffrey Keating <geoffk@apple.com>
* dwarf2out.c (is_c_family): Understand new DWARF3 language types.
(is_cxx): Likewise.
(gen_compile_unit_die): Use new language types for Objective-C and
Objective-C++.
(dwarf2out_decl): Use is_cxx rather than testing explicitly against
DW_LANG_C_plus_plus.
Geoffrey Keating [Fri, 24 Mar 2006 21:59:48 +0000 (21:59 +0000)]
[multiple changes]
2006-03-23 Geoffrey Keating <geoffk@apple.com>
PR 26793
* config/t-darwin (crt3.o): Work around bug 26840.
* config/darwin-crt3.c: Rewrite.
* config/darwin.h (STARTFILE_SPEC): Don't use -l for crt3.o.