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.
Andreas Krebbel [Fri, 24 Mar 2006 19:09:11 +0000 (19:09 +0000)]
s390.c (s390_decompose_address): Allow SImode for index and base register.
2006-03-24 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.c (s390_decompose_address): Allow SImode for
index and base register.
(s390_expand_plug_operand, legitimate_address_p, preferred_la_operand_p,
print_operand_address, print_operand): Replaced REG_OK_FOR_BASE_STRICT_P
with REGNO_OK_FOR_BASE_P and REG_OK_FOR_INDEX_STRICT_P with
REGNO_OK_FOR_INDEX_P.
* config/s390/s390.h (REGNO_OK_FOR_INDEX_P): Replaced check with
ADDR_REGNO_P.
(REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P,
REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P, REG_OK_FOR_INDEX_P,
REG_OK_FOR_BASE_P): Definitions removed.
Jakub Jelinek [Fri, 24 Mar 2006 16:14:40 +0000 (17:14 +0100)]
re PR middle-end/26611 (openmp gomp ICE at gimplify.c:4257)
PR middle-end/26611
* gimplify.c (gimplify_bind_expr): Only call omp_add_variable on
non-global variables that don't have DECL_SEEN_IN_BIND_EXPR_P bit
set yet or weren't marked as local yet.
* g++.dg/gomp/pr26611-1.C: New test.
* g++.dg/gomp/pr26611-2.C: New test.
* config/rs6000/rs6000-protos.h (rs6000_offsettable_memref_p): Declare.
(rs6000_legitimate_small_data_p): Delete.
* config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New predicate.
(rs6000_legitimate_small_data_p): Rename to legitimate_small_data_p
and make static. Add forward declaration. Update uses.
(rs6000_split_multireg_move): Use rs6000_offsettable_memref_p instead
of offsettable_memref_p.
* config/rs6000/rs6000.md (movdf_hardfloat32): Revert 2005-08-23 fix.
Use rs6000_offsettable_memref_p instead of a less accurate predicate.
Alan Modra [Thu, 23 Mar 2006 23:15:46 +0000 (23:15 +0000)]
ffitarget.h (enum ffi_abi): Add FFI_LINUX.
* src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX. Default
for 32-bit using IBM extended double format. Fix FFI_LAST_ABI.
* src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of
FFI_TYPE_LONGDOUBLE.
(ffi_prep_args64): Assert using IBM extended double.
(ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type.
Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args.
(ffi_call): Handle FFI_LINUX.
(ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs
gpr3 return pointer as for struct return. Handle FFI_LINUX
FFI_TYPE_LONGDOUBLE return and args. Don't increment "nf"
unnecessarily.
* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2
for FFI_TYPE_LONGDOUBLE. Move epilogue insns into case table.
Don't use r6 as pointer to results, instead use sp offset. Don't
make a special call to load lr with case table address, instead
use offset from previous call.
* src/powerpc/sysv.S (ffi_call_SYSV): Save long double return.
* src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double
return.
Maxim Kuvyrkov [Thu, 23 Mar 2006 18:23:53 +0000 (18:23 +0000)]
haifa-sched.c (choose_ready): Fix type of the local variable.
2006-03-23 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
* haifa-sched.c (choose_ready): Fix type of the local variable.
Move local variables. Add comment.
(check_reg_live): Change signature. Make callable from debugger.
* sched-int.h (check_reg_live): Update signature.
* sched-ebb.c (check_reg_live): Update parameters.
* sched-rgn.c (check_reg_live): Ditto.
(region_head_or_leaf_p): Check pointer before dereferencing.
* config/ia64/ia64.c (ia64_set_sched_flags): Disable data speculation
before reload on optimization levels below 1.