Zdenek Dvorak [Fri, 17 Nov 2006 10:29:07 +0000 (11:29 +0100)]
re PR tree-optimization/29801 (ICE in set_lattice_value (tree-ssa-ccp.c))
PR tree-optimization/29801
* tree-ssa-ccp.c (get_symbol_constant_value): New function.
(get_default_value): Use get_symbol_constant_value.
(set_lattice_value): ICE when the value of the constant is
changed.
(visit_assignment): Ignore VDEFs of read-only variables.
Mike Stump [Fri, 17 Nov 2006 06:48:01 +0000 (06:48 +0000)]
darwin.h (LINK_COMMAND_SPEC): Don't do dwarf stuff on pre-darwin9 system, unless the user asks for it directly.
* config/darwin.h (LINK_COMMAND_SPEC): Don't do dwarf stuff on
pre-darwin9 system, unless the user asks for it directly.
(PREFERRED_DEBUGGING_TYPE): Likewise.
* config/i386/darwin.h (PREFERRED_DEBUGGING_TYPE): Likewise.
* config.gcc: Add suppport for darwin9.h.
* config/darwin9.h: Add.
* doc/install.texi (Specific): Clarify darwin documentation.
Joseph Myers [Fri, 17 Nov 2006 00:25:05 +0000 (00:25 +0000)]
stdarg-2.c, stdarg-4.c: Condition PowerPC tests for saving FPRs on powerpc_fprs.
* gcc.dg/tree-ssa/stdarg-2.c, gcc.dg/tree-ssa/stdarg-4.c:
Condition PowerPC tests for saving FPRs on powerpc_fprs.
* gcc.target/powerpc/compress-float-ppc.c,
gcc.target/powerpc/compress-float-ppc-pic.c: Only test if
powerpc_fprs.
* gcc.target/powerpc/rs6000-power2-2.c: Only test if powerpc_fprs;
do not pass -mhard-float.
Eric Botcazou [Thu, 16 Nov 2006 21:25:16 +0000 (21:25 +0000)]
re PR middle-end/26306 (ICE on volatile array with non-constant bounds)
PR middle-end/26306
* gimplify.c (gimplify_expr): Only force a load for references to
non-BLKmode volatile values.
* doc/implement-c.texi (Qualifiers implementation): Document the
interpretation of what a volatile access is.
* doc/extend.texi (C++ Extensions): Rework same documentation.
re PR fortran/29391 ([4.2/4.1 only] LBOUND and UBOUND are broken)
PR fortran/29391
PR fortran/29489
* simplify.c (simplify_bound): Fix the simplification of
LBOUND/UBOUND intrinsics.
* trans-intrinsic.c (simplify_bound): Fix the logic, and
remove an erroneous assert.
* gcc/testsuite/gfortran.dg/bound_2.f90: Add more checks.
* gcc/testsuite/gfortran.dg/bound_3.f90: New test.
Richard Earnshaw [Thu, 16 Nov 2006 08:57:50 +0000 (08:57 +0000)]
arm.md (abssi2): Allow Thumb as well.
* arm.md (abssi2): Allow Thumb as well. Use an SImode scratch for
Thumb.
(arm_neg_abssi2): Renamed from neg_abssi2.
(thumb_abssi2, thumb_neg_abssi2): New patterns with splitters.
Maxim Kuvyrkov [Thu, 16 Nov 2006 06:57:59 +0000 (06:57 +0000)]
re PR target/29201 (ICE in create_recovery_block, at haifa-sched.c:3692 at -O3)
2006-11-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
PR target/29201
* cfgrtl.c (rtl_delete_block): Move the code for getting last insn of
bb to ...
(get_last_bb_insn): ... new global function.
(basic_block.h): Declare it.
* haifa-sched.c (create_recovery_block): Use it.
2006-11-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
PR target/29201
* gcc.c-torture/compile/pr29201.c: New test for ia64 target.
* config/i386/i386.c (override_options): Error out for
-mx87regparm but no 80387 support.
(ix86_attribute_table): Add x87regparm.
(ix86_handle_cconv_attribute): Update comments for x87regparm.
(ix86_comp_type_attributes): Check for mismatched x87regparm types.
(ix86_function_x87regparm): New function.
(ix86_function_arg_regno_p): Add X87_REGPARM_MAX 80387 floating
point registers.
(init_cumulative_args): Initialize x87_nregs and float_in_x87
variables.
(function_arg_advance): Process x87_nregs and x87_regno when
floating point argument is to be passed in 80387 register.
(function_arg): Pass XFmode arguments in 80387 registers for local
functions. Pass SFmode and DFmode arguments to local functions
in 80387 registers when flag_unsafe_math_optimizations is set.
* reg-stack.c (convert_regs_entry): Disable NaN load for
stack registers that are used for argument passing.
* doc/extend.texi: Document x87regparm function attribute.
* doc/invoke.texi: Document -mx87regparm.
testsuite/ChangeLog:
* gcc.target/i386/x87regparm-1.c: New test.
* gcc.target/i386/x87regparm-2.c: New test.
* gcc.target/i386/x87regparm-3.c: New test.
* gcc.target/i386/x87regparm-4.c: New test.
* tree-flow.h (multiplier_allowed_in_address_p): Adjust prototype.
* tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): New
arg MODE; all callers changed. Use it to determine validity per
machine mode instead of using Pmode for all memory references.
(get_address_cost): Likewise add and use new arg MEM_MODE.
Jakub Jelinek [Wed, 15 Nov 2006 09:35:34 +0000 (10:35 +0100)]
re PR tree-optimization/29581 (Latent bug in 4.1/4.2/4.3 lambda-code.c)
PR tree-optimization/29581
* lambda-code.c (replace_uses_equiv_to_x_with_y): Add YINIT,
REPLACEMENTS, FIRSTBSI arguments. If initial condition or
type is different between Y and USE, create a temporary
variable, initialize it at the beginning of the body bb
and use it as replacement instead of Y.
* gcc.dg/pr29581-1.c: New test.
* gcc.dg/pr29581-2.c: New test.
* gcc.dg/pr29581-3.c: New test.
* gcc.dg/pr29581-4.c: New test.
* gfortran.dg/pr29581.f90: New test.
Bud Davis [Wed, 15 Nov 2006 05:10:22 +0000 (05:10 +0000)]
re PR fortran/28974 (Extremely slow compilation of enumerated DATA statements.)
2006-11-15 Bud Davis <bdavis9659@sbcglobal.net>
PR fortran/28974
* gfortran.h (gfc_expr): Add element which holds a splay-tree
for the exclusive purpose of quick access to a constructor by
offset.
* data.c (find_con_by_offset): Use the splay tree for the search.
(gfc_assign_data_value): Use the splay tree.
(gfc_assign_data_value_range): ditto.
* expr.c (gfc_get_expr): Initialize new element to null.
(gfc_free_expr): Delete splay tree when deleting gfc_expr.
Brooks Moses [Wed, 15 Nov 2006 04:00:35 +0000 (04:00 +0000)]
re PR fortran/29702 (RFE: Column number in error messages.)
PR fortran/29702
* fortran/error.c (show_loci): Move column-offset calculation to
show_locus.
(show_locus): Remove blank lines before "Included in"
lines, clean up code, calculate column-offsets, print
column number is error-header lines as appropriate.
(error_integer): (new function) Print integer to error
buffer.
(error_print): Use error_integer, avoid possible buffer
overflows from buggy error formats.
* testsuite/lib/gfortran-dg.exp (gfortran-dg-test): Ignore column
numbers in error message headers.
* gfortran.h (GFC_MAX_LINE): Remove constant definition.
(gfc_option_t): Clarify comments.
* options.c: Set default line length limits to actual default
values, rather than flag values.
* scanner.c: Eliminate checking and handling of the
fixed/free_line_length flag values.
Richard Earnshaw [Tue, 14 Nov 2006 23:25:43 +0000 (23:25 +0000)]
expmed.c (emit_store_flag_1): New function.
* expmed.c (emit_store_flag_1): New function.
(emit_store_flag): Call it. If we can't find a suitable scc insn,
try a cstore insn.
* expr.c (do_store_flag): If we can't find a scc insn, try cstore.
Use do_compare_rtx_and_jump.
* arm.h (BRANCH_COST): Increase to 2 on Thumb.
* arm.md (cstoresi4): New define_expand.
(cstoresi_eq0_thumb, cstoresi_ne0_thumb): Likewise.
(cstoresi_eq0_thumb_insn, cstore_ne0_thumb_insn): New patterns.
(cstoresi_nltu_thumb, thumb_addsi3_addgeu): New patterns.
Joseph Myers [Tue, 14 Nov 2006 20:36:28 +0000 (20:36 +0000)]
arm.h (FUNCTION_ARG_ADVANCE): Only adjust iwmmxt_nregs if TARGET_IWMMXT_ABI.
* config/arm/arm.h (FUNCTION_ARG_ADVANCE): Only adjust
iwmmxt_nregs if TARGET_IWMMXT_ABI.
* config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
movv2si_internal): Support moves between core registers.
Paolo Bonzini [Tue, 14 Nov 2006 08:46:26 +0000 (08:46 +0000)]
re PR rtl-optimization/29798 (-O2 gives wrong results)
2006-11-14 Paolo Bonzini <bonzini@gnu.org>
PR rtl-optimization/29798
* fwprop.c (use_killed_between): Check that DEF_INSN dominates
TARGET_INSN before any other check.
(fwprop_init): Always calculate dominators.
(fwprop_done): Always free them.
Andrew Pinski [Mon, 13 Nov 2006 20:14:35 +0000 (20:14 +0000)]
cell.md: New file.
2006-11-13 Andrew Pinski <andrew_pinski@playstation.sony.com>
* config/rs6000/cell.md: New file.
* config/rs6000/rs6000.c (rs6000_cell_dont_microcode): New
variable.
(ppccell_cost): New cost matrix.
(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): Define.
(rs6000_override_options): Set rs6000_always_hint to false
for cell. Also align functions/lables/loops to 8byte
for the Cell. Use PROCESSOR_CELL.
(rs6000_emit_epilogue): Rename using_mfcr_multiple to
using_mtcr_multiple.
(rs6000_variable_issue): If the insn is a nonpipelined instruction
on the Cell, return 0.
(rs6000_adjust_cost): Add Cell cost adjustments.
(is_microcoded_insn): Return true for Cell microcoded
instructions.
(is_nonpipeline_insn): New function.
(rs6000_issue_rate): Add PROCESSOR_CELL.
(rs6000_use_sched_lookahead): If Cell, then we should look ahead 8
instructions.
(rs6000_use_sched_lookahead_guard): New function.
(rs6000_sched_reorder): Reorder the ready list, if the second
to last ready insn is a nonepipeline insn on the Cell.
* config/rs6000/rs6000.h (processor_type): Add PROCESSOR_CELL.
(ASM_CPU_SPEC): Add Cell.
* config/rs6000/rs6000.md (cpu): Add Cell.
(cell_micro): New Attr.
Include cell.md
Mark Mitchell [Mon, 13 Nov 2006 17:49:43 +0000 (17:49 +0000)]
re PR c++/29518 (rejects valid template argument, enums vs templates)
PR c++/29518
* pt.c (coerce_template_parms): Do not skip_evaluation while
substituting template arguments.
PR c++/29518
* g++.dg/template/static28.C: New test.
Mark Mitchell [Mon, 13 Nov 2006 17:48:28 +0000 (17:48 +0000)]
re PR c++/29518 (rejects valid template argument, enums vs templates)
PR c++/29518
* pt.c (coerce_template_parms): Do not skip_evaluation while
substituting template arguments.
PR c++/29518
* g++.dg/template/static28.C: New test.
Carlos O'Donell [Mon, 13 Nov 2006 17:25:59 +0000 (17:25 +0000)]
gcc.c: Organize search path variables into $prefix relative, and well-known native.
gcc/
2006-11-13 Carlos O'Donell <carlos@codesourcery.com>
Mark Mitchell <mark@codesourcery.com>
* gcc.c: Organize search path variables into $prefix relative,
and well-known native. Add comments.
(add_sysrooted_prefix): Add comment.
(process_command): If !gcc_exec_prefix add $prefix based paths.
If *cross_compile == '0', add native well-known paths.
Assert tooldir_base_prefix is always relative.
(main): If print_search_dirs, and if gcc_exec_prefix is set,
use this value for 'install:' path.
* Makefile.in: Add GCC_EXEC_PREFIX to generated site.exp.
gcc/testsuite/
2006-11-13 Carlos O'Donell <carlos@codesourcery.com>
* lib/c-torture.exp: Use target-libpath.exp.
* lib/target-libpath.exp (set_ld_library_path_env_vars): If present,
set GCC_EXEC_PREFIX env var from global variable of same name.
Co-Authored-By: Mark Mitchell <mark@codesourcery.com>
From-SVN: r118765
Kaveh R. Ghazi [Sun, 12 Nov 2006 23:51:36 +0000 (23:51 +0000)]
builtins.c (fold_builtin_cosh): New.
* builtins.c (fold_builtin_cosh): New.
(fold_builtin_1): Use it.
* fold-const.c (negate_mathfn_p): Add llround, lround, round,
trunc to the list of "odd" functions. Also add llrint, lrint,
rint and nearbyint when flag_rounding_math is false.
testsuite:
* gcc.dg/torture/builtin-symmetric-1.c: Add more cases.
Zdenek Dvorak [Sun, 12 Nov 2006 20:05:49 +0000 (21:05 +0100)]
tree-ssa-loop-prefetch.c (schedule_prefetches): Cleanup and improve comments.
* tree-ssa-loop-prefetch.c (schedule_prefetches): Cleanup and improve
comments.
(issue_prefetch_ref): Move assignment to write_p out of loop.
(determine_unroll_factor): Do not take PARAM_MAX_UNROLL_TIMES and
SIMULTANEOUS_PREFETCHES into account.
(loop_prefetch_arrays): Do not pass ahead to determine_unroll_factor.
* lambda-code.c (lcm): Renamed to ...
(least_common_multiple): ... and exported.
* tree-flow.h (least_common_multiple): Declare.
* Makefile.in (tree-data-ref.o): Add langhooks.h dependency.
* tree-ssa-loop-niter.c (derive_constant_upper_bound): Follow
ud-chains. Handle AND_EXPR.
(record_estimate): Record whether the estimate is realistic
and whether it is derived from a loop exit.
(record_nonwrapping_iv, idx_infer_loop_bounds, infer_loop_bounds_from_ref,
infer_loop_bounds_from_array, infer_loop_bounds_from_signedness): New
functions.
(compute_estimated_nb_iterations): Take only realistic bounds into
account. Set estimate_state. Use double_ints.
(infer_loop_bounds_from_undefined): Call infer_loop_bounds_from_array
and infer_loop_bounds_from_signedness. Do not consider basic blocks
that do not have to be always executed.
(estimate_numbers_of_iterations_loop): Set estimate_state, and use it
to determine whether to call infer_loop_bounds_from_undefined
and compute_estimated_nb_iterations.
(n_of_executions_at_most): Use double_ints.
(free_numbers_of_iterations_estimates_loop): Set estimate_state.
(substitute_in_loop_info): Do not replace in estimated_nb_iterations.
* double-int.c (double_int_to_tree): Improve comment.
(double_int_fits_to_tree_p): New function.
* double-int.h (double_int_fits_to_tree_p): Declare.
* tree-data-ref.c: Include langhooks.h.
(estimate_niter_from_size_of_data, estimate_iters_using_array): Removed.
(analyze_array_indexes): Do not call estimate_niter_from_size_of_data.
(analyze_array): Do not pass estimate_only argument to
analyze_array_indexes.
(get_number_of_iters_for_loop): Build tree from the stored double_int
value.
(get_references_in_stmt, find_data_references_in_stmt): New functions.
(find_data_references_in_loop): Use find_data_references_in_stmt.
* tree-data-ref.h (struct data_ref_loc_d): New.
(get_references_in_stmt): Declare.
(estimate_iters_using_array): Declaration removed.
* cfgloop.h (struct nb_iter_bound): Change type of bound to
double_int. Improve comments. Add is_exit and realistic
fields.
(struct loop): Changed type of estimated_nb_iterations to double_int.
Added estimate_state field.
(record_estimate): Declaration removed.
Zdenek Dvorak [Sun, 12 Nov 2006 18:20:03 +0000 (19:20 +0100)]
cfgloopmanip.c (update_single_exit_for_duplicated_loop, [...]): New functions.
* cfgloopmanip.c (update_single_exit_for_duplicated_loop,
update_single_exit_for_duplicated_loops): New functions.
(duplicate_loop_to_header_edge): Use
update_single_exit_for_duplicated_loops.
* tree-ssa-loop-manip.c (tree_unroll_loop): Call verification
functions only with ENABLE_CHECKING.
Roger Sayle [Sun, 12 Nov 2006 02:57:10 +0000 (02:57 +0000)]
fold-const.c (int_binop_types_match_p): New function.
* fold-const.c (int_binop_types_match_p): New function.
(size_binop): Relax constraint that both arguments must both have
exactly the same sizetype type. Instead use int_binop_types_match_p.
(size_diffop): Likewise.
(make_range): Use build_int_cst instead of fold_convert.
(fold_cond_expr_with_comparison): Use build_int_cst to construct
integer constants of the correct type.
(fold_div_compare): Likewise.
(fold_single_bit_test): Likewise.
(fold_binary): Likewise.
* stor-layout.c (layout_type) <VECTOR_TYPE>: Ensure that TYPE_SIZE
has type bitsizetype and TYPE_SIZE_UNIT has type sizetype.