Paul Brook [Tue, 2 May 2006 12:49:48 +0000 (12:49 +0000)]
arm.c (add_minipool_forward_ref): Check if insn and pool overlap.
2006-05-02 Paul Brook <paul@codesourcery.com>
* config/arm/arm.c (add_minipool_forward_ref): Check if insn
and pool overlap.
(create_fix_barrier): Check that a suitable barrier location is
found.
(arm_reorg): Include ftmp->address in allowable range of addresses.
Jakub Jelinek [Tue, 2 May 2006 10:44:55 +0000 (12:44 +0200)]
re PR middle-end/27337 (OpenMP ICE in expand_expr_real_1 at expr.c:6814)
PR middle-end/27337
* gimplify.c (gimplify_scan_omp_clauses): Handle INDIRECT_REF
around RESULT_DECL for result passed by reference.
(gimplify_expr): Call omp_notice_variable when RESULT_DECL is seen.
* omp-low.c (use_pointer_for_field): Don't look at
DECL_HAS_VALUE_EXPR_P for RESULT_DECLs.
(scan_omp_1): Call remap_decl on RESULT_DECLs.
(lower_rec_input_clauses): Don't allocate VLA memory for the second
time or var for passing by reference for
OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE clauses. Allow creation of
TREE_ADDRESSABLE variables when passing by reference.
* omp-low.c (dump_omp_region): Fix output formatting.
cp/
* cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
* cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
* cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
testsuite/
* g++.dg/gomp/pr27337-1.C: New test.
* g++.dg/gomp/pr27337-2.C: New test.
libgomp/
* testsuite/libgomp.c++/pr27337.C: New test.
Jakub Jelinek [Tue, 2 May 2006 10:40:21 +0000 (12:40 +0200)]
re PR middle-end/27325 (ICE with enabled exceptions and -fopenmp)
PR middle-end/27325
* omp-low.c (lower_omp_sections): Call maybe_catch_exception
on statement list containing also constructors and destructors.
(lower_omp_single, lower_omp_for, lower_omp_parallel): Likewise.
DJ Delorie [Mon, 1 May 2006 20:57:20 +0000 (16:57 -0400)]
vec.c: Include bconfig.h when appropriate.
* vec.c: Include bconfig.h when appropriate.
* Makefile.in (build/vec.o): Adjust dependencies.
* mkconfig.sh: Make sure config.h isn't used for build machine
compiles.
Zdenek Dvorak [Mon, 1 May 2006 20:52:21 +0000 (22:52 +0200)]
tree-into-ssa.c (phis_to_rewrite, [...]): New variables.
* tree-into-ssa.c (phis_to_rewrite, blocks_with_phis_to_rewrite): New
variables.
(mark_phi_for_rewrite): New function.
(insert_phi_nodes_for, mark_use_interesting): Call
mark_phi_for_rewrite.
(rewrite_update_phi_arguments): Traverse only phis in phis_to_rewrite.
(update_ssa): Initialize and free phis_to_rewrite.
Zdenek Dvorak [Mon, 1 May 2006 20:05:57 +0000 (22:05 +0200)]
re PR tree-optimization/27283 (ICE: SSA corruption - Conflict across an abnormal edge)
PR tree-optimization/27283
* tree-ssa-loop-ivopts.c (struct nfe_cache_elt): Store just trees,
not whole # of iteration descriptions.
(niter_for_exit): Return just # of iterations. Fail if # of iterations
uses abnormal ssa name.
(niter_for_single_dom_exit): Ditto.
(find_induction_variables, may_eliminate_iv): Expect niter_for_exit to
return just the number of iterations.
Zdenek Dvorak [Mon, 1 May 2006 19:42:01 +0000 (21:42 +0200)]
re PR tree-optimization/27144 (segfault with -O2 on x86_64 (and powerpc64))
PR tree-optimization/27144
* tree-ssa-loop-niter.c (derive_constant_upper_bound): New function.
(record_estimate): Only record constant upper bound.
(infer_loop_bounds_from_undefined): Call
compute_estimated_nb_iterations just once.
(proved_non_wrapping_p): Renamed to ...
(n_of_executions_at_most): ... this. Expect bound to be a constant.
(convert_step_widening, scev_probably_wraps_p): Call
n_of_executions_at_most instead of proved_non_wrapping_p.
(substitute_in_loop_info): Do not replace values in bounds.
* cfgloop.h (struct nb_iter_bound): Remove "additional" field. Update
comments.
Roger Sayle [Mon, 1 May 2006 16:51:19 +0000 (16:51 +0000)]
c-typeck.c (parser_build_binary_op): Don't call the function unsigned_conversion_warning to spot operand/result type...
* c-typeck.c (parser_build_binary_op): Don't call the function
unsigned_conversion_warning to spot operand/result type overflow.
(build_binary_op): Instead, call convert_and_check instead of
convert to report the problem when the operands are promoted.
* c-common.c (unsigned_conversion_warning): Make static.
* c-common.h (unsigned_conversion_warning): Delete prototype.
* gcc.dg/Wconversion-3.c: New test case.
* gcc.dg/Wconversion-4.c: Likewise.
Co-Authored-By: Joseph Myers <joseph@codesourcery.com>
From-SVN: r113418
Roger Sayle [Mon, 1 May 2006 16:28:42 +0000 (16:28 +0000)]
boehm.cc (_Jv_InitGC): Check both HAVE_DLFCN_H and HAVE_DLADDR before calling...
* boehm.cc (_Jv_InitGC): Check both HAVE_DLFCN_H and HAVE_DLADDR
before calling GC_register_has_static_roots_callback.
(_Jv_RegisterLibForGc): Likewise, test for both HAVE_DLFCN_H and
HAVE_DLADDR before calling dladdr.
Co-Authored-By: Andrew Haley <aph@redhat.com>
From-SVN: r113417
re PR target/26726 (-fivopts producing out of bounds array refs)
2006-05-01 Richard Guenther <rguenther@suse.de>
PR tree-optimization/26726
* tree-ssa-loop-ivopts.c (idx_find_step): Mark source of the
problem ...
(find_interesting_uses_address): ... we work around here
by folding INDIRECT_REFs in the substituted base.
Paolo Carlini [Sat, 29 Apr 2006 18:16:47 +0000 (18:16 +0000)]
locale_facets.tcc (num_get<>::_M_extract_float): Special case main parsing loop for !_M_allocated (i.e., "C" locale).
2006-04-29 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (num_get<>::_M_extract_float):
Special case main parsing loop for !_M_allocated (i.e., "C" locale).
(num_get<>::_M_extract_int): Likewise.
* include/bits/locale_facets.h (num_get<>::_M_find): New.
link.cc (_Jv_Linker::resolve_pool_entry): Don't pass vtable_index to resolve_method.
2006-04-28 Bryce McKinlay <mckinlay@redhat.com>
* link.cc (_Jv_Linker::resolve_pool_entry): Don't pass vtable_index
to resolve_method.
* interpret.cc (insn_invokevirtual): Use method->index, not
vtable_index. Check accflag FINAL to determine finals. Only do
explicit null check if calling a final method. Use
throw_null_pointer_exception.
(invokevirtual_resolved): Likewise.
(null_pointer_exc): Remove static field.
(throw_null_pointer_exception): Always define. Throw a new
NullPointerException every time.
* include/java-interp.h (_Jv_ResolvedMethod): Remove vtable_index
field.
* include/execution.h (resolve_method): Remove vtable_index argument.
Roger Sayle [Fri, 28 Apr 2006 19:59:57 +0000 (19:59 +0000)]
re PR c/25309 (ICE on initialization of a huge array)
PR c/25309
* c-typeck.c (struct spelling): Make I an unsigned HOST_WIDE_INT.
(push_array_bounds): Delete prototype. Change BOUNDS argument to
an unsigned HOST_WIDE_INT.
(print_spelling): Use HOST_WIDE_INT_PRINT_UNSIGNED to output the
array index.
(really_start_incremental_init): No need to call convert because
bitsize_zero_node is already of type bitsizetype.
(push_init_level): Extract the value of constructor_index as an
unsigned HOST_WIDE_INT quantity, using tree_low_cst.
(process_init_element): Likewise.
Andrew MacLeod [Thu, 27 Apr 2006 20:22:17 +0000 (20:22 +0000)]
Implement new immediate use iterators.
2006-04-27 Andrew MacLeod <amacleod@redhat.com>
PR tree-optimization/26854
* tree-vrp.c (remove_range_assertions): Use new Immuse iterator.
* doc/tree-ssa.texi: Update immuse iterator documentation.
* tree-ssa-math-opts.c (execute_cse_reciprocals_1): Use new iterator.
* tree-ssa-dom.c (propagate_rhs_into_lhs): Use new iterator.
* tree-flow-inline.h (end_safe_imm_use_traverse, end_safe_imm_use_p,
first_safe_imm_use, next_safe_imm_use): Remove.
(end_imm_use_stmt_p): New. Check for end of immuse stmt traversal.
(end_imm_use_stmt_traverse): New. Terminate immuse stmt traversal.
(move_use_after_head): New. Helper function to sort immuses in a stmt.
(link_use_stmts_after): New. Link all immuses in a stmt consescutively.
(first_imm_use_stmt): New. Get first stmt in an immuse list.
(next_imm_use_stmt): New. Get next stmt in an immuse list.
(first_imm_use_on_stmt): New. Get first immuse on a stmt.
(end_imm_use_on_stmt_p): New. Check for end of immuses on a stmt.
(next_imm_use_on_stmt): New. Move to next immuse on a stmt.
* tree-ssa-forwprop.c (forward_propagate_addr_expr): Use new iterator.
* lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use new iterator.
(perfect_nestify): Use new iterator.
* tree-vect-transform.c (vect_create_epilog_for_reduction): Use new
iterator.
* tree-flow.h (struct immediate_use_iterator_d): Add comments.
(next_imm_name): New field in struct immediate_use_iterator_d.
(FOR_EACH_IMM_USE_SAFE, BREAK_FROM_SAFE_IMM_USE): Remove.
(FOR_EACH_IMM_USE_STMT, BREAK_FROM_IMM_USE_STMT,
FOR_EACH_IMM_USE_ON_STMT): New immediate use iterator macros.
* tree-cfg.c (replace_uses_by): Use new iterator.
* tree-ssa-threadedge.c (lhs_of_dominating_assert): Use new iterator.
* tree-ssa-operands.c (correct_use_link): Remove.
(finalize_ssa_use_ops): No longer call correct_use_link.
Stuart Hastings [Thu, 27 Apr 2006 18:57:11 +0000 (18:57 +0000)]
t-darwin (DARWIN_EXTRA_CRT_BUILD_CFLAGS): New.
* config/rs6000/t-darwin (DARWIN_EXTRA_CRT_BUILD_CFLAGS): New.
* config/t-darwin (crt3.o): Use it.
* config/rs6000/rs6000.c (rs6000_initialize_trampoline): Remove
'pmode', use Pmode instead of SImode for SYMBOL_REF.
* config/rs6000/rs6000.md (call_indirect_nonlocal_sysv,
call_nonlocal_sysv, call_value_indirect_nonlocal_sysv,
call_value_nonlocal_sysv): Suffix with the "P" macro for 32/64
support.
Roger Sayle [Thu, 27 Apr 2006 17:26:03 +0000 (17:26 +0000)]
expmed.c (store_fixed_bit_field): If we're not optimizing for size...
* expmed.c (store_fixed_bit_field): If we're not optimizing for
size, force the intermediate into a new pseudo rather instead of
performing both a bitwise AND and a bitwise IOR in memory.
Richard Guenther [Thu, 27 Apr 2006 13:52:44 +0000 (13:52 +0000)]
re PR tree-optimization/25148 (compare_values assumes that CST in a + CST (and a - CST) is always postive)
2006-04-27 Richard Guenther <rguenther@suse.de>
PR tree-optimization/25148
* tree-vrp.c (compare_values): Remove code dealing with
comparisons against type min/max value. Honour overflow
and negative constants in code dealing with comparisons
of plus and minus expressions.
(value_inside_range): Use fold_binary with LE_EXPR and
GE_EXPR rather than compare_values.
Roger Sayle [Wed, 26 Apr 2006 00:51:14 +0000 (00:51 +0000)]
expmed.c (store_bit_field): Also check whether the bitsize is valid for the machine's "insv" instruction...
* expmed.c (store_bit_field): Also check whether the bitsize is
valid for the machine's "insv" instruction before moving the
target into a pseudo for use with the insv.
* config/i386/predicates.md (const8_operand): New predicate.
* config/i386/i386.md (extv, extzv, insv): Use the new
const8_operand predicate where appropriate.
David Edelsohn [Tue, 25 Apr 2006 15:00:53 +0000 (15:00 +0000)]
varasm.c (align_variable): New function.
* varasm.c (align_variable): New function.
(get_block_for_decl): Apply align_variable to DECL before
calculating section information.
(assemble_variable): Split out alignment computation.
Andrew Haley [Tue, 25 Apr 2006 11:54:15 +0000 (11:54 +0000)]
natClassLoader.cc: Don't include link.h or dladdr.h.
2006-04-25 Andrew Haley <aph@redhat.com>
* java/lang/natClassLoader.cc: Don't include link.h or dladdr.h.
* boehm.cc: Don't include link.h.
(_Jv_RegisterLibForGc): Cast away const when calling dladdr().
* rtl.def (SS_ASHIFT, SS_NEG): New codes.
* doc/rtl.texi: Document them.
* simplify-rtx.c (simplify_unary_operation,
simplify_binary_operation_1): Don't abort when we see them.
Mark Mitchell [Mon, 24 Apr 2006 16:33:11 +0000 (16:33 +0000)]
revert: configure.ac: Completely disregard languages that are not enabled.
Revert:
2006-04-23 Mark Mitchell <mark@codesourcery.com>
* configure.ac: Completely disregard languages that are not
enabled.
* configure: Regenerated.
Andrew Haley [Mon, 24 Apr 2006 15:33:16 +0000 (15:33 +0000)]
lang.c (java_init): Handle flag_indirect_classes.
2006-04-21 Andrew Haley <aph@redhat.com>
* lang.c (java_init): Handle flag_indirect_classes.
* jvgenmain.c: Use "class$$" instead of "class$".
* mangle.c (java_mangle_decl): Accept RECORD_TYPEs sw well as
DECLs.
(mangle_class_field): Special case "class$$" as well as "class$".
* constants.c (build_ref_from_constant_pool): If
flag_indirect_classes, generate a ref into the heap.
* decl.c (constants_field_decl_node,
constants_data_field_decl_node): New.
* class.c (build_static_class_ref): New.
(build_classdollar_field): Factor out from build_class_ref().
(make_field_value): Handle static fields in heap.
(make_class_data): Make sure we get a static ref to class.
Make class initializer const if flag_indirect_classes.
(register_class): Build a class_ref for initialization if
flag_indirect_classes.
(emit_indirect_register_classes): New.