Ulrich Weigand [Thu, 14 Oct 2004 18:32:04 +0000 (18:32 +0000)]
reload.c (find_reloads): When reloading a PLUS with constant operand...
* reload.c (find_reloads): When reloading a PLUS with constant
operand, make sure the constant is pushed to the constant pool
if required.
* config/s390/s390.c (s390_secondary_input_reload_class): Remove
reload bug workaround.
(s390_expand_plus_operand): Likewise.
* ext/bitmap_allocator.h: Clean-up add/remove functions.
* src/bitmap_allocator.cc: New file. Contains the out-of-line
function definitions, static initialization of variables, and
explicit instantiations needed for the allocator.
* src/Makefile.am: Add.
* src/Makefile.in: Regenerate.
* config/linker.map.gnu: Add the necessary symbols.
* tree-vectorizer.c (vect_generate_tmps_on_preheader):
(vect_update_ivs_after_vectorizer):
(vect_transform_for_unknown_loop_bound):
(tree_duplicate_loop_to_edge):
(allocate_new_names):
(rename_use_op):
(rename_def_op):
(rename_variables_in_bb):
(free_new_names):
(rename_variables_in_loop):
(copy_phi_nodes):
(update_phis_for_duplicate_loop):
(update_phi_nodes_for_guard):
(make_loop_iterate_ntimes):
(tree_duplicate_loop_to_edge_cfg):
(add_loop_guard):
(vect_analyze_loop_with_symbolic_num_of_iters):
(verify_loop_for_duplication):
(vect_gen_niters_for_prolog_loop):
(vect_update_niters_after_peeling):
(vect_update_inits_of_dr):
(vect_update_inits_of_drs):
(vect_build_loop_niters):
(vect_do_peeling_for_alignment): New functions.
(vect_transform_loop): Add unknown and known but indivisible loop
bound support; add peeling for unalignment support.
(vect_analyze_loop_form): Support symbolic number of iterations.
(vect_transform_loop_bound): New input parameter.
(vect_get_loop_niters): Change input parameter type.
(new_loop_vec_info): LOOP_VINFO_NITERS is tree now.
(vectorizable_store): Allow unaligned access.
(vectorize_loops): Add rewrite_into_loop_closed_ssa.
(vect_analyze_data_refs_alignment): Allowed one unaligned
store.
* tree-vectorizer.h (LOOP_VINFO_NITERS_KNOWN_P): Redefined
to use tree.
(LOOP_VINFO_INT_NITERS): New macro.
(MAX_NUMBER_OF_UNALIGNED_DATA_REFS): New define.
(do_peeling_for_alignment):
(unaligned_drs): New members of _loop_vec_info.
(LOOP_DO_PEELING_FOR_ALIGNMENT): New macro.
Ira Rosen [Thu, 14 Oct 2004 16:39:07 +0000 (16:39 +0000)]
tree-vectorizer.c (vect_analyze_data_refs): Call vect_get_base_and_bit_offset to get memory tag for array ref.
2004-10-14 Ira Rosen <irar@il.ibm.com>
* tree-vectorizer.c (vect_analyze_data_refs): Call
vect_get_base_and_bit_offset to get memory tag for array ref.
(vect_create_addr_base_for_vector_ref): Remove redundant checks.
* interpret.cc (_Jv_InterpMethod::run): Initialize
_Jv_StartOfInterpreter.
(_Jv_StartOfInterpreter, _Jv_EndOfInterpreter): Functions removed.
(_Jv_StartOfInterpreter, _Jv_EndOfInterpreter): New variables.
* gnu/gcj/runtime/natStackTrace.cc (fillInStackTrace): Use
_Unwind_FindEnclosingFunction to discover whether PC is within the
interpreter.
* tree-vectorizer.c (get_vectype_for_scalar_type): Added debug prinouts.
Added check that vectype is VECTOR_MODE_P, instead of check for BLKmode.
(vect_analyze_operations): Make sure the vectorization factor > 1. Add
gcc_assert under ENABLE_CHECKING.
(vectorizable_operation): Remove check for VECTOR_MODE_P (moved to
get_vectype_for_scalar_type).
arm.h (CONDITIONAL_REGISTER_USAGE): Make r11 fixed and global for -mcaller-super-interworking.
* config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Make r11 fixed and
global for -mcaller-super-interworking.
(CALLER_INTERWORKING_SLOT_SIZE): New macro.
* config/arm/arm.c (thumb_compute_save_reg_mask): Save r11 if
CALLER_INTERWORKING_SLOT_SIZE is nonzero and the function does
not need a frame pointer.
(arm_get_frame_offsets): Add CALLER_INTERWORKING_SLOT_SIZE bytes to
the soft frame pointer offset.
(thumb_expand_prologue): Set up r11 for -mcaller-super-interworking.
* config/arm/arm.md (*call_reg_thumb, *call_value_reg_thumb): Use
_interwork_{r7,r11}_call_via_rN if some arguments are passed on
the stack. Use frame_pointer_needed to choose between them.
* config/arm/lib1funcs.asm (_arm_return_{r7,r11}): New functions.
(interwork_with_frame): New macro.
(interwork): Add _interwork_{r7,r11}_call_via_rN().
Joseph Myers [Thu, 14 Oct 2004 00:34:01 +0000 (01:34 +0100)]
c-tree.h (enum c_typespec_kind, [...]): New.
* c-tree.h (enum c_typespec_kind, struct c_typespec,
parser_xref_tag): New.
(struct c_declspecs): Add tag_defined_p. Adjust definition of
typedef_p.
(declspecs_add_type): Adjust prototypes.
* c-parse.in (%union): Add tstype.
(typespec_nonattr, typespec_attr, typespec_reserved_nonattr,
typespec_reserved_attr, typespec_nonreserved_nonattr,
structsp_attr, structsp_nonattr): Change to tstype. Update
actions.
* c-decl.c (build_null_declspecs): Initialize tag_defined_p.
(declspecs_add_type): Update to take struct c_typespec argument.
Set tag_defined_p and typedef_p as appropriate.
(xref_tag): Rename to parser_xref_tag and replace by wrapper.
Update to return struct c_typespec.
(shadow_tag_warned): Don't let empty declarations with qualifiers
or storage class specifiers redeclare a tag if a previous
declaration is visible.
testsuite:
* gcc.dg/c99-tag-3.c, gcc.dg/declspec-14.c: New tests.
Frank Ch. Eigler [Wed, 13 Oct 2004 18:18:18 +0000 (18:18 +0000)]
toplev.c (compile_file): Call mudflap_finish_file from here ...
2004-10-13 Frank Ch. Eigler <fche@redhat.com>
* toplev.c (compile_file): Call mudflap_finish_file from here ...
* c-decl.c (c_write_global_declarations): ... instead of here ...
* cp/decl.c (cp_finish_file): ... and here.
* tree-mudflap.c (mudflap_enqueue_decl): Reword a warning message.
* g++.dg/opt/pr17724-1.C: New test.
* g++.dg/opt/pr17724-2.C: New test.
* g++.dg/opt/pr17724-3.C: New test.
* g++.dg/opt/pr17724-4.C: New test.
* g++.dg/opt/pr17724-5.C: New test.
* g++.dg/opt/pr17724-6.C: New test.
Dorit Naishlos [Wed, 13 Oct 2004 11:04:24 +0000 (11:04 +0000)]
rs6000.c (altivec_builtin_mask_for_load): Made static GTY(()).
2004-10-13 Dorit Naishlos <dorit@il.ibm.com>
* rs6000.c (altivec_builtin_mask_for_load): Made static GTY(()).
(altivec_builtin_mask_for_store): Likewise.
(altivec_init_builtins): Use lang_hooks.builtin_function to
create the decls for builtin_altivec_mask_for_load/store.
Sebastian Pop [Wed, 13 Oct 2004 03:48:03 +0000 (05:48 +0200)]
Makefile.in (tree-ssa-loop-niter.o): Depends on tree-data-ref.h.
2004-10-11 Sebastian Pop <pop@cri.ensmp.fr>
* Makefile.in (tree-ssa-loop-niter.o): Depends on tree-data-ref.h.
* cfgloop.c (initialize_loops_parallel_p): New.
(flow_loops_find): Initialize the parallel_p field to true for all
the loops.
* tree-ssa-loop-niter.c: Include "tree-data-ref.h".
(estimate_numbers_of_iterations_loop): Infers the loop bounds from
the size of the data accessed in the loop.
(struct nb_iter_bound): Moved...
* cfgloop.h (struct nb_iter_bound): ... here.
(estimated_nb_iterations, parallel_p): New fields in struct loop.
(record_estimate): Declare extern here.
* tree-chrec.c: Fix comments.
(nb_vars_in_chrec): New function.
* tree-chrec.h (nb_vars_in_chrec): Declared here.
* tree-data-ref.c: Don't include lambda.h, that is already included
in tree-data-ref.h.
(tree_fold_divides_p): Don't check for integer_onep.
(tree_fold_bezout): Removed.
(gcd): New static duplicated function.
(int_divides_p, dump_subscript): New.
(dump_data_dependence_relation): Use dump_subscript.
(dump_dist_dir_vectors, dump_ddrs, compute_estimated_nb_iterations,
estimate_niter_from_size_of_data): New.
(analyze_array_indexes, analyze_array): Call
estimate_niter_from_size_of_data during the detection of array
references. Pass in a pointer to the statement that contains the
array reference.
(all_chrecs_equal_p): New.
(compute_distance_vector): Renamed compute_subscript_distance.
Deal with multivariate conflict functions.
(initialize_data_dependence_relation): Initialize DDR_AFFINE_P,
DDR_SIZE_VECT, DDR_DIST_VECT, and DDR_DIR_VECT.
(non_affine_dependence_relation): New.
(analyze_ziv_subscript, analyze_siv_subscript_cst_affine,
analyze_siv_subscript, analyze_miv_subscript,
analyze_overlapping_iterations, subscript_dependence_tester):
Initialize and return last_conflicts function.
(initialize_matrix_A, FLOOR, compute_overlap_steps_for_affine_univar,
compute_overlap_steps_for_affine_1_2): New.
(analyze_siv_subscript_affine_cst): Removed.
(analyze_subscript_affine_affine): Disprove dependences based on the
iteration domains. Solve the univariate dependence case as before,
but use lambda_matrix_right_hermite instead of tree_fold_bezout.
Implement the multivariate case of 2 versus 1 variables.
(build_classic_dist_vector, build_classic_dir_vector): Implement some
unhandled cases.
(find_data_references_in_loop): Compute and initialize
loop->estimated_nb_iterations and loop->parallel_p.
(analyze_all_data_dependences): Modify the debug dump order.
* tree-data-ref.h (SUB_LAST_CONFLICT_IN_A, SUB_LAST_CONFLICT_IN_B,
subscript->last_conflict_in_a, subscript->last_conflict_in_b): Removed.
(SUB_LAST_CONFLICT, subscript->last_conflict,
data_dependence_relation->affine_p, data_dependence_relation->size_vect,
DDR_AFFINE_P, DDR_SIZE_VECT): New.
(find_data_references_in_loop, initialize_data_dependence_relation,
dump_subscript, dump_ddrs, dump_dist_dir_vectors): Declared here.
Daniel Berlin [Tue, 12 Oct 2004 18:24:45 +0000 (18:24 +0000)]
tree-ssa-alias.c (verify_name_tags): New function.
2004-10-12 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-alias.c (verify_name_tags): New function.
(verify_flow_sensitive_alias_info): Remove code that used to check name tags.
(verify_alias_info): Call verify_name_tags.
Nathan Sidwell [Tue, 12 Oct 2004 16:04:24 +0000 (16:04 +0000)]
class.c (dfs_modify_vtables): Simplify condition.
* class.c (dfs_modify_vtables): Simplify condition. Return
dfs_skip_bases as appropriate.
(modify_all_vtables): Walk in pre-order.
* search.c (dfs_walk_all, dfs_walk_once_r,
dfs_walk_once_accessible_r): Assert post order function never
returns dfs_skip_bases.
Joseph Myers [Tue, 12 Oct 2004 08:32:17 +0000 (09:32 +0100)]
re PR c/17301 (ICE on wrong usage of __builtin_stdarg_start)
PR c/17301
* c-typeck.c (convert_arguments): Return error_mark_node if there
are too few arguments.
(build_function_call): Handle error_mark_node return from
convert_arguments.
Paolo Bonzini [Tue, 12 Oct 2004 08:22:31 +0000 (08:22 +0000)]
configure.ac (symbolic_link): Replace with $LN_S.
2004-10-06 Paolo Bonzini <bonzini@gnu.org>
* configure.ac (symbolic_link): Replace with $LN_S.
(Assembler/Linker): Hard link from gas and binutils trees.
* aclocal.m4 (gcc_AC_PROG_LN_S): Try "cp -p" before cp.
* configure: Regenerate.
Roger Sayle [Mon, 11 Oct 2004 22:57:53 +0000 (22:57 +0000)]
re PR other/17361 (gcc driver complains about C++ options when assembling)
PR other/17361
* c-opts.c (permit_fortran_options): Delete/obsolete global variable.
(c_common_init_options): Remove #ifdef CL_F77 code. Scan command
line options for "-lang-asm" and if found allow any of the C-family
front-end options.
(c_common_handle_option): Remove last use of permit_fortran_options.
Mark Mitchell [Mon, 11 Oct 2004 22:50:00 +0000 (22:50 +0000)]
re PR c++/17936 (Declaration of specialization rejected)
PR c++/17936
* cp-tree.h (CLASSTYPE_TEMPLATE_SPECIALIZATION): Add a comment.
* pt.c (optimize_specialization_lookup_p): Do not optimize lookups
for members of partial or explicit specializations.
PR c++/17936
* g++.dg/template/spec18.C: New test.
Benjamin Kosnik [Mon, 11 Oct 2004 20:26:53 +0000 (20:26 +0000)]
PR libstdc++/16614 continued.
2004-10-11 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/16614 continued.
* include/ext/mt_allocator.h
(__per_type_pool_policy::_S_get_pool): Use saner defaults based on
specific type characteristics.
(__pool_base): Add constructor that takes a _Tune argument.
(__pool): Same.
* testsuite/ext/mt_allocator/tune-2.cc: Adjust default.
* testsuite/ext/mt_allocator/tune-4.cc: Same.
* testsuite/ext/mt_allocator/tune-3.cc: Same.
Roger Sayle [Mon, 11 Oct 2004 16:11:35 +0000 (16:11 +0000)]
re PR middle-end/17657 (ICE in expand_case)
PR middle-end/17657
* stmt.c (add_case_node): Add additional type argument. Declare
as static to match prototype. Convert the upper and lower bounds
to the specified index type. Optimize away case ranges/values
that are outside the index type's bounds. Truncate case ranges
that span the index type's bounds.
(expand_case): Avoid unnessary computation and memory allocation
when index type is error_mark_node. Pass index_type as required
by change to add_case_node API. No need to convert case range
bounds to index_type, this is now done by add_case_node.
* config/frv/frv.md (*adddi3_internal): Change name to...
(adddi3): ...replacing the exisiting define_expand. Combine
alternatives. Fix the range of the constant constraints ('J' instead
of 'NOP'). Remove bogus operands[2] check. Use simplify_gen_subreg
to extract the lower and upper halves of the DImode operands.
Always use addi3_lower and adddi3_upper, not the subdi3 forms.
(adddi3_lower): Fix the range of the constant constraints and
remove the bogus operands[2] check.
(adddi3_upper): Use gpr_or_int10_operand as the predicate for
operand 2. Use addxi to handle constant operands.
(subdi3_lower, subdi3_upper): Don't handle constant operands.