J"orn Rennecke [Tue, 23 Aug 2005 13:07:16 +0000 (13:07 +0000)]
sh.c (sh_builtin_saveregs): If the number of to-be-saved fp registers is even...
* sh.c (sh_builtin_saveregs): If the number of to-be-saved fp
registers is even, and we have a hardware double precision fp,
align the buffer.
(sh_gimplify_va_arg_expr): For floating point arguments, consider
size of current argument when checking if argument was passed in
registers.
J"orn Rennecke [Tue, 23 Aug 2005 12:27:53 +0000 (12:27 +0000)]
re PR middle-end/23467 (alignment of member doesn't always carry over to alignment of struct.)
gcc:
PR middle-end/23467
* stor-layout.c (finalize_type_size): Dont override
existing alignment with a smaller alignment from the mode.
testsuite:
PR middle-end/23467
* gcc.c-torture/execute/pr23467.c: New test.
Sebastian Pop [Tue, 23 Aug 2005 08:15:13 +0000 (10:15 +0200)]
re PR tree-optimization/23511 (Segfault in fold_binary)
PR tree-optimization/23511
* tree-ssa-loop-niter.c (infer_loop_bounds_from_undefined): Don't
handle cases where TYPE_MIN_VALUE or TYPE_MAX_VALUE are NULL_TREE.
Jakub Jelinek [Tue, 23 Aug 2005 07:28:26 +0000 (09:28 +0200)]
re PR middle-end/22043 (Fields not initialized for automatic structs with flexible array members)
PR tree-optimization/22043
* tree.h (count_type_elements): Add ALLOW_FLEXARR argument.
* expr.c (count_type_elements): Add ALLOW_FLEXARR argument.
If ALLOW_FLEXARR, handle types ending with flexible array member.
Pass false as second argument to recursive count_type_elements calls.
(categorize_ctor_elements_1, mostly_zeros_p): Pass false as second
argument to count_type_elements call.
* tree-sra.c (decide_block_copy): Likewise.
* gimplify.c (gimplify_init_constructor): If num_type_elements < 0
for a constant-sized object, set cleared as well. Pass true as
second argument to count_type_elements call.
Alan Modra [Tue, 23 Aug 2005 00:33:18 +0000 (00:33 +0000)]
re PR target/23070 ([3.4 only] CALL_V4_CLEAR_FP_ARGS flag not properly set)
PR target/23070
* config/rs6000/rs6000.c (function_arg): For ABI_V4 calls to
stdarg functions, set/clear the fp marker even when no variable
args are passed.
* config/rs6000/sysv4.opt (mprototype): Describe.
Dorit Nuzman [Sun, 21 Aug 2005 06:38:27 +0000 (06:38 +0000)]
tree-vect-transform.c (get_initial_def_for_reduction): Set need_epilog_adjust back to false for MIN/MAX case.
* tree-vect-transform.c (get_initial_def_for_reduction): Set
need_epilog_adjust back to false for MIN/MAX case. Set *scalar_def to
NULL if need_epilog_adjust is false.
(vect_create_epilog_for_reduction): Variable adjust_in_epilog removed.
Case 3 always peels first itration, not just for PLUS case, and no need
to use scalar_initial_def here. Create an epilog adjustment only if
scalar_initial_def is not NULL.
Jakub Jelinek [Sat, 20 Aug 2005 16:03:58 +0000 (18:03 +0200)]
tree-pass.h (TDF_GRAPH): Define.
* tree-pass.h (TDF_GRAPH): Define.
* tree-dump.c (dump_options): Don't set TDF_GRAPH in "all".
* passes.c (finish_optimization_passes): Only call
finish_graph_dump_file if TDF_GRAPH is set.
(execute_one_pass): Only call clean_graph_dump_file if dump_file !=
NULL. Set TDF_GRAPH bit.
(execute_todo): Call print_rtl_graph_with_bb if TDF_GRAPH is set.
* gcc.dg/20050811-1.c: New test.
* gcc.dg/20050811-2.c: New test.
Richard Earnshaw [Sat, 20 Aug 2005 10:31:42 +0000 (10:31 +0000)]
arm.h (arm_stack_offsets): Add locals_base field.
* arm.h (arm_stack_offsets): Add locals_base field.
* arm.c (arm_get_frame_offsets): Compute it.
(thumb_compute_initial_elimination offset): Make the Thumb frame
pointer point to the base of the local variables.
(thumb_expand_prologue): Update accordingly.
(thumb_expand_epilogue): Likewise.
* arm.md (thumb_movhi_clobber): Make this insn a define_expand. Change
mode of clobbered scratch to DImode. Handle a case that's known to
need this.
Devang Patel [Fri, 19 Aug 2005 17:54:16 +0000 (10:54 -0700)]
re PR tree-optimization/23048 (ICE in get_loop_body with -O1 -ftree-vectorize on 4.1.x)
PR tree-optimization/23048
* tree-if-conv.c (if_convertible_bb_p): Supply basic_block as
third parameter. Check whether latch is dominated by exit
block or not.
(if_convertible_loop_p): Supply exit block itself to
if_convertible_bb_p.
Richard Earnshaw [Fri, 19 Aug 2005 13:17:04 +0000 (13:17 +0000)]
re PR target/23473 (ICE at config/arm/arm.c:3280)
PR target/23473
* arm.md (arm_load_pic_register): Change argument to the mask of
saved registers. Call thumb_find_work_register if we need a
scratch register on Thumb.
(arm_expand_prologue): Pass empty register set to
arm_load_pic_register.
(thumb_expand_prologue): Pass live_regs_mask directly to
arm_load_pic_register.
* arm-protos.h (arm_load_pic_register): Update prototype.
Joern Rennecke [Fri, 19 Aug 2005 12:33:54 +0000 (13:33 +0100)]
sh.c (find_sole_member): New function.
* sh.c (find_sole_member): New function.
(sh_gimplify_va_arg_expr): Use it. Allow RECORD_TYPE mode mismatch
if the record's alignment is larger than the size of its only member.
Joern Rennecke [Fri, 19 Aug 2005 12:25:58 +0000 (13:25 +0100)]
sh.c (find_sole_member): New function.
* sh.c (find_sole_member): New function.
(sh_gimplify_va_arg_expr): Use it. Allow RECORD_TYPE mode mismatch
if the record's alignment is larger than the size of its only member.
Paul Woegerer [Fri, 19 Aug 2005 07:47:34 +0000 (07:47 +0000)]
crx.c: Implemented crx_decompose_address (like in the i386 port) so that...
* config/crx/crx.c: Implemented crx_decompose_address (like in the
i386 port) so that crx_legitimate_address_p, crx_address_cost
and crx_print_operand_address are using the same code for adress
handling. Using symbolic displacements now gets rejected since
the CRX register relative adressing mode can't handle unsigned
32-bit values as displacements.
* config/crx/crx.h: Simplified definitions for REG_OK_FOR_BASE_P,
removed redundant parenthesis and obsolete macros.
* config/crx/crx.opt: Added a new switch for debugging of address
handling.
* config/crx/crx-protos.h: Added new declarations for above.
Andrew Pinski [Fri, 19 Aug 2005 05:14:13 +0000 (05:14 +0000)]
Makefile.am (extra_ldflags_libjava): New variable to substitute in.
2005-08-19 Andrew Pinski <pinskia@physics.uc.edu>
* Makefile.am (extra_ldflags_libjava): New variable to
substitute in.
(LIBLINK): Add extra_ldflags_libjava to it.
* configure.ac (extra_ldflags_libjava): Set for *-darwin* to
"-Wl,-single_module".
* Makefile.in: Regenerate.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* gcj/Makefile.in: Regenerate.
* include/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
Dorit Nuzman [Thu, 18 Aug 2005 16:07:54 +0000 (16:07 +0000)]
re PR tree-optimization/22228 (ICE with -ftree-vectorize in verify_ssa)
PR tree-optimization/22228
* tree-ssa-loop (pass_vectorize): Add TODO_verify_loops to todo_flags_start.
* tree-vect-transform.c (vect_transform_loop): Mark the variables that
are recorded in vect_vnames_to_rename for renaming.
* tree-vectorizer.c (vect_vnames_to_rename): New global bitmap.
(slpeel_update_phi_nodes_for_guard1): Record virtual vars for renaming
in vect_vnames_to_rename.
(vectorize_loops): Allocate and free the vect_vnames_to_rename bitmap.
* tree-vectorizer.h (vect_vnames_to_rename): New extern variable.
Tom Tromey [Wed, 17 Aug 2005 20:44:10 +0000 (20:44 +0000)]
class.c (make_class_data): Always emit JV_STATE_PRELOADING for class' initial state.
gcc/java:
* class.c (make_class_data): Always emit JV_STATE_PRELOADING for
class' initial state.
libjava:
* java/lang/Class.h (_Jv_IsBinaryCompatibilityABI): Declare as
friend.
* include/jvm.h (_Jv_IsBinaryCompatibilityABI): New function.
* testsuite/libjava.lang/bclink.java: New file.
* testsuite/libjava.lang/bclink.out: New file.
* link.cc (print_class_loaded): Changed ABI test to look at
various _syms fields.
Mark Kettenis [Wed, 17 Aug 2005 17:30:47 +0000 (17:30 +0000)]
floatformat.c (floatformat_always_valid): Change type of last argument to `void *'.
[libiberty]
* floatformat.c (floatformat_always_valid): Change type of last
argument to `void *'.
(floatformat_i387_ext_is_valid): Likewise.
(floatformat_to_double): Change type of second argument to `const
void *'.
(floatformat_from_double): Change type of last argument to `void
*'.
(floatformat_is_valid): Change type of last argument to `const
void *'.
(ieee_test): Remove redundant casts.
[include]
* floatformat.h (struct floatformat): Change type of large
argument for is_valid member to `const void *'.
(floatformat_to_double): Change type of second argument to `const
void *'.
(floatformat_from_double): Change type of last argument to `void
*'.
(floatformat_is_valid): Change type of last argument to `const
void *'.