re PR target/28672 (Gcc went into infinite loop when building libstdc++)
2006-09-11 Alexandre Oliva <aoliva@redhat.com>
PR target/28672
* var-tracking.c (dump_dataflow_set): Start dumping at
register zero.
(clobber_variable_part): Kill only the variable part in
registers holding it, leaving other variables alone.
Eric Botcazou [Mon, 11 Sep 2006 19:28:11 +0000 (21:28 +0200)]
re PR rtl-optimization/28726 (-fsched2-use-superblock produces wrong code)
PR rtl-optimization/28726
* sched-deps.c (sched_analyze_reg): New function extracted from...
(sched_analyze_1): ...here. Call it to analyze references to
registers. Treat again writes to a stack register as writing to the
register.
(sched_analyze_2): ...and here. Call it to analyze references to
registers. Treat again reads of a stack register as reading the
register.
David Daney [Mon, 11 Sep 2006 18:15:27 +0000 (18:15 +0000)]
re PR classpath/28580 (HTTP HEAD fails on chuncked encoding)
PR classpath/28580
* gnu/java/net/protocol/http/Request.java (readResponse): Call
createResponseBodyStream in more cases and with new parameter.
(createResponseBodyStream): Added new parameter mayHaveBody. Handle
HEAD and !mayHaveBody responses specially.
Paul Thomas [Mon, 11 Sep 2006 05:02:58 +0000 (05:02 +0000)]
re PR fortran/28890 (ICE on write)
2006-09-11 Paul Thomas <pault@gcc.gnu.org>
PR fortran/28890
trans-expr.c (gfc_conv_function_call): Obtain the string length
of a dummy character(*) function from the symbol if it is not
already translated. For a call to a character(*) function, use
the passed, hidden string length argument, which is available
from the backend_decl of the formal argument.
resolve.c (resolve_function): It is an error if a function call
to a character(*) function is other than a dummy procedure or
an intrinsic.
2006-09-11 Paul Thomas <pault@gcc.gnu.org>
PR libfortran/28890
gfortran.dg/assumed_charlen_function_5.f90: New test.
Mark Mitchell [Mon, 11 Sep 2006 00:40:15 +0000 (00:40 +0000)]
re PR c++/28991 (Static constructor emitted instead of initialized variable)
PR c++/28991
* cp-objcp-common.c (cxx_staticp): New function.
* cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
* cp-tree.h (cxx_staticp): New function.
PR c++/289991
* g++.dg/init/static3.C: New test.
Eric Botcazou [Sun, 10 Sep 2006 21:27:36 +0000 (23:27 +0200)]
re PR rtl-optimization/28636 (Miscompiled loop)
PR rtl-optimization/28636
* combine.c (force_to_mode): Test for side-effects before
substituting by zero.
(simplify_shift_const): Likewise for zero or other constants.
re PR target/29006 (Incorrect zeroing of unaligned 64-bit fields on MIPS targets)
gcc/
PR target/29006
* config/mips/mips-protos.h (mips_mem_fits_mode_p): Declare.
* config/mips/mips.c (mips_expand_unaligned_store): Use the mode
returned by mode_for_size, rather than the mode of src itself,
to choose between 32-bit and 64-bit patterns.
(mips_mem_fits_mode_p): New function.
* config/mips/mips.md (mov_<load>l, mov_<load>r): Use it to check
that the size of the source matches the size of the destination.
(mov_<store>l, mov_<store>r): Likewise.
gcc/testsuite/
PR target/29006
* gcc.c-torture/execute/pr29006.c: New test.
Paul Thomas [Sun, 10 Sep 2006 17:21:44 +0000 (17:21 +0000)]
re PR fortran/28947 (Double MATMUL() uses wrong array elements)
2006-09-10 Paul Thomas <pault@gcc.gnu.org>
PR libfortran/28947
* m4/matmul.m4: For the case where the second input argument is
transposed, ensure that the case with rank (a) == 1 is
correctly calculated.
* generated/matmul_r4.c: Regenerate.
* generated/matmul_r8.c: Regenerate.
* generated/matmul_r10.c: Regenerate.
* generated/matmul_r16.c: Regenerate.
* generated/matmul_c4.c: Regenerate.
* generated/matmul_c8.c: Regenerate.
* generated/matmul_c10.c: Regenerate.
* generated/matmul_c16.c: Regenerate.
* generated/matmul_i4.c: Regenerate.
* generated/matmul_i8.c: Regenerate.
* generated/matmul_i16.c: Regenerate.
2006-09-10 Paul Thomas <pault@gcc.gnu.org>
PR libfortran/28947
gfortran.dg/matmul_4.f90: New test.
Paul Thomas [Sun, 10 Sep 2006 04:53:18 +0000 (04:53 +0000)]
re PR fortran/28914 (Code inside loop hangs; outside loop runs normally; runs OK on other compilers)
2006-09-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/28914
* trans-array.c (gfc_trans_array_constructor_value): Create a temporary
loop variable to hold the current loop variable in case it is modified
by the array constructor.
Paolo Bonzini [Sat, 9 Sep 2006 12:43:32 +0000 (12:43 +0000)]
re PR target/26778 (GCC4 moves the result of a conditional block through inadequate registers)
gcc:
2006-09-09 Paolo Bonzini <bonzini@gnu.org>
Dale Johannesen <dalej@apple.com>
PR target/26778
* regclass.c (struct reg_pref): Update documentation.
(regclass): Set prefclass to NO_REGS if memory is the best option.
(record_reg_classes): Cope with a prefclass set to NO_REGS.
gcc/testsuite:
2006-09-09 Eric Christopher <echristo@apple.com>
PR target/26778
* gcc.target/i386/pr26778.c: New testcase.
Steven G. Kargl [Fri, 8 Sep 2006 20:57:55 +0000 (20:57 +0000)]
reduction3.f90: Change -2147483648 to -huge(i)-1 to avoid overflow.
2006-09-08 Steven G. Kargl <kargl@gcc.gnu.org>
* testsuite/libgomp.fortran/reduction3.f90: Change
-2147483648 to -huge(i)-1 to avoid overflow.
* testsuite/libgomp.fortran/reduction4.f90: Change
Z'ffffffff' to not(0) to avoid overflow.
Andrew Pinski [Fri, 8 Sep 2006 02:49:11 +0000 (19:49 -0700)]
006-09-07 Andrew Pinski <pinskia@physics.uc.edu>
PR C++/28906
* init.c (build_new_1): Build a distinct type copy
for the array type that was returned from
build_cplus_array_type.
2006-09-07 Andrew Pinski <pinskia@physics.uc.edu>
PR C++/28906
* g++.dg/other/array3.C: New test.
* g++.dg/other/array4.C: New test.
* g++.dg/other/array5.C: New test.
Paolo Bonzini [Thu, 7 Sep 2006 08:19:32 +0000 (08:19 +0000)]
re PR target/27117 (SH backend cheats to reload -- disables indexed addressing but uses it internally)
2006-09-07 Paolo Bonzini <bonzini@gnu.org>
PR target/27117
* config/sh/sh.md (divsi_inv_qitable, divsi_inv_hitable): New patterns.
(divsi_inv_m1): Use them.
(UNSPEC_DIV_INV_TABLE): New constant.
re PR c++/26195 (pragma interface no longer handles explicit names)
PR c++/26195
* decl.c (make_rtl_for_nonlocal_decl),
(start_preparsed_function): Don't use lbasename on
input_filename when calling get_fileinfo.
* semantics.c (begin_class_definition): Likewise.
* lex.c (cxx_make_type): Likewise.
(handle_pragma_interface): Call get_fileinfo on input_filename,
not on the parameter to the directive.
Jason Merrill [Thu, 7 Sep 2006 01:12:00 +0000 (21:12 -0400)]
re PR c++/27371 (Does not warn about unused function result (__attribute__((warn_unused_result))))
PR c++/27371
* tree-inline.c (copy_result_decl_to_var): New fn.
(declare_return_variable): Use it. Call declare_inline_vars here.
(expand_call_inline): Not here.
* cp/cvt.c (convert_to_void): Strip useless TARGET_EXPR.
* cp/cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
* cp/tree.c (build_cplus_new): Set it.
Keith Seitz [Wed, 6 Sep 2006 22:16:59 +0000 (22:16 +0000)]
Class.h (_Jv_FindInterpreterMethod): Change return type to _Jv_MethodBase instead of _Jv_InterpMethod.
* java/lang/Class.h (_Jv_FindInterpreterMethod): Change return type
to _Jv_MethodBase instead of _Jv_InterpMethod.
* java/lang/natClass.cc (_Jv_FindInterpreterMethod): Likewise.
Do not check access flags.
Fix some minor style anomalies.
Jason Merrill [Wed, 6 Sep 2006 17:06:00 +0000 (13:06 -0400)]
re PR c++/26696 (ICE with statement forming unused static member function reference)
PR c++/26696
* cvt.c (convert_to_void): Replace a subexpression with no side
effects with void_zero_node.
* tree.c (is_overloaded_fn): Look through COMPONENT_REF.
(get_first_fn): Ditto.
* decl.c (grokdeclarator): No need to look through COMPONENT_REF.
Andrew Pinski [Wed, 6 Sep 2006 06:13:22 +0000 (06:13 +0000)]
re PR tree-optimization/28937 (ICE in add_virtual_operand, at tree-ssa-operands.c:1309)
2006-09-05 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/28937
* tree-flow.h (tree_ssa_unswitch_loops): Return unsigned int.
(canonicalize_induction_variables): Likewise.
(tree_unroll_loops_completely): Likewise.
(tree_ssa_prefetch_arrays): Likewise.
(remove_empty_loops): Likewise.
* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Return
TODO_cleanup_cfg instead of directly calling
cleanup_tree_cfg_loop.
* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables):
Likewise.
(tree_unroll_loops_completely): Likewise.
(remove_empty_loops): Likewise.
* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Likewise.
* tree-ssa-loop.c (tree_ssa_loop_unswitch): Use the return value
of tree_ssa_unswitch_loops.
(tree_ssa_loop_ivcanon): Use the return value of
canonicalize_induction_variables.
(tree_ssa_empty_loop): Use the return value of
remove_empty_loops.
(tree_complete_unroll): Use the return value of
tree_unroll_loops_completely.
(tree_ssa_loop_prefetch): Use the return value of
tree_ssa_prefetch_arrays.
* passes.c (execute_todo): Before Cleanup CFG, set
updating_used_alone and after cleanup CFG, call
recalculate_used_alone.
2006-09-05 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/28937
* g++.dg/opt/unroll2.C: New test.
Andrew Pinski [Wed, 6 Sep 2006 06:06:55 +0000 (23:06 -0700)]
re PR tree-optimization/28952 (tree check: expected class 'expression', have 'exceptional' (ssa_name) in vectorizable_condition, at tree-vect-transform.c:2122)
2006-09-05 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/28952
* tree-vect-transform.c (vectorizable_condition): Move the check
for the type after the check for simple condition.
2006-09-05 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/28952
* gcc.dg/vect/pr28952.c: New test.
Jason Merrill [Wed, 6 Sep 2006 01:15:39 +0000 (21:15 -0400)]
re PR c++/26102 ("using Base::member" nonsense)
PR c++/26102
* name-lookup.c (do_class_using_decl): Try to find the base even
if bases_dependent_p.
* pt.c (type_dependent_expression_p): A USING_DECL is dependent.
PR c++/19809
* pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
Jason Merrill [Wed, 6 Sep 2006 01:15:09 +0000 (21:15 -0400)]
re PR c++/26102 ("using Base::member" nonsense)
PR c++/26102
* name-lookup.c (do_class_using_decl): Try to find the base even
if bases_dependent_p.
* pt.c (type_dependent_expression_p): A USING_DECL is dependent.
PR c++/19809
* pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
PR target/28764
* mode-switching.c (optimize_mode_switching): Make the destination
block of an abnormal edge have no anticipatable mode. Don't
insert mode switching code at the end of the source block of
an abnormal edge.
Co-Authored-By: Kaz Kojima <kkojima@gcc.gnu.org>
From-SVN: r116703
Paolo Bonzini [Tue, 5 Sep 2006 17:41:22 +0000 (17:41 +0000)]
re PR rtl-optimization/26847 (Missed optimization in simplify_plus_minus)
2006-09-05 Paolo Bonzini <bonzini@gnu.org>
PR rtl-optimization/26847
* simplify-rtx.c (struct simplify_plus_minus_op_data): Remove ix.
(simplify_plus_minus_op_data_cmp): For REGs, break ties on the regno.
(simplify_plus_minus): Count n_constants while filling ops. Replace
qsort with insertion sort. Before going through the array to simplify
pairs, sort it. Delay early exit until after the first sort, exiting
only if no swaps occurred. Simplify pairs in reversed order, without
special-casing the first iteration. Pack ops after simplifying pairs.
Gary Benson [Tue, 5 Sep 2006 07:49:08 +0000 (07:49 +0000)]
2006-09-05 Gary Benson <gbenson@redhat.com>
* java/net/SocketPermission.java
(maybeBracketIPv6Address): Renamed to processHostport.
(processHostport): Also translate "" to "localhost".
(setHostPort): Remove special cases for empty hostport and for
extra colons in hostport (processHostport handles these now).
Paul Thomas [Tue, 5 Sep 2006 04:26:10 +0000 (04:26 +0000)]
re PR fortran/28908 (fold_convert fails for Fortran operator)
2006-09-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/28908
REGRESSION FIX
* gfortran.h : Restore the gfc_dt_list structure and reference
to it in gfc_namespace.
* resolve.c (resolve_fl_derived): Restore the building of the
list of derived types for the current namespace. Modify the
restored code so that a check is made to see if the symbol is
already in the list.
(resolve_fntype): Make sure that the specification block
version of the derived type is used for a module function that
returns that type.
* symbol.c (gfc_free_dt_list): Restore.
(gfc_free_namespace): Restore call to previous.
* trans-types.c (copy_dt_decls_ifequal): Restore.
(gfc_get_derived_type): Restore all the paraphenalia for
association of derived types, including calls to previous.
Modify the restored code such that all derived types are built
if their symbols are found in the parent namespace; not just
non-module types. Add backend_decls to like derived types in
sibling namespaces, as well as that of the derived type.
2006-09-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/28908
* gfortran.dg/used_types_7.f90: New test.
* gfortran.dg/used_types_8.f90: New test.
* gfortran.dg/used_types_9.f90: New test.
Eric Botcazou [Mon, 4 Sep 2006 19:33:24 +0000 (21:33 +0200)]
re PR rtl-optimization/27616 (Infinite loop at -O1 and above in RTL CSE)
PR rtl-optimization/27616
* cse.c (table_size): New static variable.
(new_basic_block): Initialize it to 0.
(remove_from_table): Decrement it.
(insert): Increment it.
(fold_rtx_mem_1): New function, renamed from fold_rtx_mem.
(fold_rtx_mem): Enforce a cap on the recursion depth. Call
fold_rtx_mem_1 if under the cap.
(fold_rtx) <RTX_COMM_ARITH>: In the associative case, delay a little
the lookup of the equivalent expression and test for equality of the
first operand of the equivalent expression before in turn looking up
an equivalent constant for the second operand.