* config/bfin/bfin.c (effective_address_32bit_p): Return true for
anything involving the GOT.
(bfin_adjust_cost): Don't take the REGNO of a MEM.
(trapping_loads_p): Look inside the pattern of an insn to find the
SET.
* config/bfin/bfin.md (attr "type"): Add movcc.
(insn_reservation "alu"): Likewise.
(movsicc_insn1, movsicc_insn2): Change type to movcc.
From-SVN: r119655
2006-12-07 Andrew Pinski <andrew_pinski@playstation.sony.com>
* config/spu/spu-c.c (spu_build_overload_builtin): Delete.
(spu_resolve_overloaded_builtin): Check for non scalar instead
of vector type and check the function call argument type also for non scalar.
Call build_function_call instead of spu_build_overload_builtin.
2006-12-07 Andrew Pinski <andrew_pinski@playstation.sony.com>
* gcc.target/spu: New directory.
* gcc.target/spu/spu.exp: New file.
* gcc.target/spu/intrinsics-1.c: New test.
From-SVN: r119637
2006-12-07 Richard Guenther <rguenther@suse.de>
* builtins.c (expand_builtin_pow): Adjust predicates for
pow to cbrt expansion to unsafe math and !HONOR_NANS for
negative base.
From-SVN: r119622
* tree-vrp.c (compare_values): Short circuit INTEGER_CST;
use fold_constant_to_binary; tolerate wrong type constants.
(value_intersect_p): Do just two tests.
From-SVN: r119619
* config/bfin/bfin.c (print_operand): New modifier 'N' for constants.
* config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
lshifthi3): Use it, and fix the order of alternatives.
From-SVN: r119616
* common.opt (record-gcc-switches): New command line switch.
* target.h (print_switch_type): New enum.
(print_switch_fn_type): New typedef for a function pointer.
(struct gcc_target): Add record_gcc_switches and record_gcc_switches_section fields.
* target-def.h (TARGET_ASM_RECORD_GCC_SWITCHES): Provide a default definition.
(TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Provide a default definition.
* toplev.c (print_single_switch): Simplify by providing a pointer to function that will format and output the switch appropriately.
(print_switch_values): Likewise.
(print_to_asm_out_file): New function.
(print_to_stderr): New function.
(init_asm_output): If flag_record_gcc_switches is set then if the target supports recording the switches then emit them into the assembler output file, otherwise tell the user that the switch is not supported.
* varasm.c (eld_record_gcc_switches): New function. Example handler for the record_gcc_switches target hook.
* doc/tm.texi (TARGET_ASM_RECORD_GCC_SWITCHES): Document the new target hook.
(TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Likewise.
* doc/invoke.texi (-frecord-gcc-switches): Document.
From-SVN: r119615
* reload1.c (delete_output_reload): Count occurrences in
CALL_INSN_FUNCTION_USAGE.
* rtlanal.c (count_occurrences): Handle EXPR_LIST nodes without
crashing at the end of the list.
From-SVN: r119571
2006-12-05 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-structalias.c (set_used_smts): Re-fix pr29156.
Optimize to avoid marking more SMT's as used when they aren't.
From-SVN: r119562
2006-12-05 Richard Guenther <rguenther@suse.de>
* config/i386/i386.c (ix86_builtin_vectorized_function): Declare.
(TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
(ix86_builtin_vectorized_function): New function to vectorize
sqrt.
* gcc.dg/vect/vect.exp: Add support for -fno-math-errno tests.
* gcc.dg/vect/vect-pow-2.c: Rename to ...
* gcc.dg/vect/no-math-errno-vect-pow-1.c: ... this. Require
vect_double, xfail for spu*-*-*.
From-SVN: r119542
* rtlanal.c (note_uses): Deal with SEQUENCEs.
* config/bfin/bfin.c: Include "timevar.h".
(bfin_flag_schedule_insns2, splitting_for_sched,
bfin_flag_var_tracking): New variables.
(print_operand): Handle '%!'.
(override_options): Disable normal sched2 pass, instead set
bfin_flag_schedule_insns2 for reorg to handle it.
(output_file_start): Likewise for var-tracking.
(bfin_optimize_loop): Take some care not to stumble over SEQUENCEs.
(gen_one_bundle, bfin_gen_bundles, type_for_anomaly, trapping_loads_p):
New functions.
(bfin_reorg): Do second scheduling pass here, and call
bfin_gen_bundles. Use type_for_anomaly and trapping_loads_p instead
of examining insns directly. If bfin_flag_var_tracking, call
var-tracking pass when done with everything else.
* config/bfin/bfin.h (PRINT_OPERAND_PUNCT_VALID_P): '!' is valid.
* config/bfin/bfin.md (UNSPEC_32BIT): New constant.
(movsi_insn32): New pattern, with two new splits to create it
before the final scheduling pass.
(neghi2): Not a dsp32 insn, rather alu0.
(movbi, pushsi_insn, popsi_insn, movsi_insn, movv2hi_insn, movhi_insn,
movqi_insn, movsf_insn, movsi_insv, extendhisi2, zero_extendhisi2,
extendqihi2, extendqisi2, zero_extendqihi2, zero_extendqisi2,
mulhisi3, umulhisi3, ssadsi3, sssubsi3, smaxsi3, sminsi3, abssi2,
ssnegsi2, signbitssi2, smaxhi3, sminhi3, abshi2, ssneghi2, signbitshi2,
movhi_low2high, movhi_high2high, movhi_low2low, movhi_high2low,
movhiv2hi_low, movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
ssaddhi3, sssubhi3, addv2hi3, ssaddv2hi3, subv2hi3, sssubv2hi3,
addsubv2hi3, subaddv2hi3, ssaddsubv2hi3, sssubaddv2hi3, sublohiv2hi3,
subhilov2hi3, sssublohiv2hi3, sssubhilov2hi3, addlohiv2hi3,
addhilov2hi3, ssaddlohiv2hi3, ssaddhilov2hi3, sminv2hi3, smaxv2hi3,
flag_mulhi, flag_mulhisi, flag_mulhisi_parts, flag_machi,
flag_machi_acconly, flag_macinithi, flag_macinit1hi, mulv2hi3,
flag_mulv2hi, flag_mulv2hi_parts, flag_macv2hi_parts,
flag_macv2hi_parts_acconly, flag_macinitv2hi_parts,
flag_macinit1v2hi_parts, mulhisi_ll, mulhisi_lh, mulhisi_hl,
mulhisi_hh, ssnegv2hi2, absv2hi2, ssashiftv2hi3, ssashifthi3,
lshiftv2hi3, lshifthi3): Use '%!' to terminate all dsp32/load/store
variants instead of ';'.
(ror_one, rol_one): Likewise. Make them dsp32 insns.
(ashlsi3_insn, ashrsi3, lshrsi3): Add dsp32 variants.
(align8, align16, align24): Now named patterns; also using '%!'.
(mnop): New insn.
From-SVN: r119534
* cp-objcp-common.c (cp_expr_size): Return NULL in the case
size is undefined.
* builtins.c (fold_builtin_memory_op): Check that expr_size match.
* explow.c (expr_size, int_expr_size): Assert that size is non_NULL.
From-SVN: r119515
2006-12-04 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-alias.c (compute_may_aliases):
Compute flow sensitive before flow insensitive.
(compute_flow_sensitive_aliasing): Don't try to add
a symbol memory tag to itself.
* alias.h (alias_set_subset_of): New prototype.
* alias.c (alias_set_subset_of): New function.
* tree-ssa-structalias.c: Update comments.
(struct variable_info): Add finished_solution.
(new_varinfo): Set finished solution to NULL.
(var_escaped_vars): Remove.
(escaped_vars_tree): Remove.
(escaped_vars_id): Remove.
(nonlocal_vars_id): Remove.
(constraint_expr_type): Add INCLUDES.
(graph_size): Removed.
(dump_constraint): Support INCLUDES.
(build_constraint_graph): Ditto.
(collapse_nodes): Add merge_solutions argument.
Don't merge attributes.
(process_unification_queue): Just use collapse_nodes.
(perform_var_substitution): Update call to collapse_nodes.
(get_constraint_exp_from_ssa_var): Use INCLUDES.
(process_constraint): Fix non-field sensitive handling
Handle includes.
(get_constraint_for): Use INCLUDES.
(make_constraint_from_anything): Renamed from
make_constraint_from_escaped.
(make_constraint_to_escaped): Removed.
(find_global_initializers): Removed.
(create_variable_info_for): Do not make constraints to escaped
vars anymore.
(dump_solution_for_var): Don't print out the equivalent points-to
sets, just use the name of the variable it shares it with.
(intra_create_variable_infos): Use INCLUDES.
Change nonlocal variable sets to anything sets.
(init_base_vars): Remove escaped_vars and nonlocal_var
initialization.
(find_escape_constraints): Removed.
(delete_points_to_sets): Remove dead code.
(used_smt_calculated): New variable.
(set_used_smts): New function.
(merge_smts_into): New function.
(find_what_p_points_to): Modify to use SMTs.
(create_nonlocal_var): Remove.
* tree-ssa-operands.c (access_can_touch_variable): Remove
reference to nonlocal_all.
* tree-ssa.c (verify_name_tags): Remove.
From-SVN: r119502
* tree-outof-ssa.c (coalesce_ssa_name): Use calculate_live_ranges.
* tree-ssa-live.c (new_tree_live_info, delete_tree_live_info): Update.
(add_livein_if_notdef): Delete.
(loe_visit_block): New. Propogate live on entry info for a block into
each predecessor. If it changes, make sure it is visited again.
(live_worklist): Visit every block and update the live on entry info
for preds. Iterate over any that changed.
(set_var_live_on_entry): Populate the live on entry blocks with bits
based on the immediate uses of a var.
(calculate_live_on_entry): Remove.
(calculate_live_on_exit): Calculate live on exit based on the newly
oriented live on entry bits.
(calculate_live_ranges): Build live on entry and exit vectors.
(dump_live_info): Use new orientation of live on entry bitmaps.
(verify_live_on_entry): New. Split out verification code from old
calculate_live_on_entry routine.
* tree-ssa-live.h (struct tree_live_info_d): Add Working stack.
(live_entry_blocks): Rename to live_on_entry and return bitmap for a
basic_block instead of for a partition.
(live_merge_and_clear): Add asserts.
(make_live_on_entry): Set partition bit in basic block vector.
From-SVN: r119495
PR libgomp/29947
* omp-low.c (expand_omp_for_static_nochunk,
expand_omp_for_static_chunk): Do all arithmetics in signed rather than
unsigned type.
* loop.c (gomp_loop_init): Make parameters signed. Set ws->end to
start if there shouldn't be any loop iterations.
(gomp_loop_ordered_static_start): Remove start == end test.
* testsuite/libgomp.c/pr29947-1.c: New test.
* testsuite/libgomp.c/pr29947-2.c: New test.
From-SVN: r119485
PR middle-end/29965
* omp-low.c (determine_parallel_type): Don't try to optimize combined
parallels if region->exit or region->inner->exit is NULL.
(expand_omp_parallel): Handle NULL region->exit even if cfg is already
built.
(expand_omp_for_generic): Handle NULL region->cond and region->exit.
(expand_omp_for): Use expand_omp_for_generic if either region->cond
or region->exit is NULL.
(expand_omp_sections): Handle NULL region->cond or region->exit.
(expand_omp_synch):
* gcc.dg/gomp/pr29965-1.c: New test.
* gcc.dg/gomp/pr29965-2.c: New test.
* gcc.dg/gomp/pr29965-3.c: New test.
* gcc.dg/gomp/pr29965-4.c: New test.
* gcc.dg/gomp/pr29965-5.c: New test.
* gcc.dg/gomp/pr29965-6.c: New test.
* g++.dg/gomp/pr29965-1.C: New test.
* g++.dg/gomp/pr29965-2.C: New test.
* g++.dg/gomp/pr29965-3.C: New test.
* g++.dg/gomp/pr29965-4.C: New test.
* g++.dg/gomp/pr29965-5.C: New test.
* g++.dg/gomp/pr29965-6.C: New test.
* g++.dg/gomp/pr29965-7.C: New test.
* g++.dg/gomp/pr29965-8.C: New test.
* g++.dg/gomp/pr29965-9.C: New test.
* g++.dg/gomp/pr29965-10.C: New test.
From-SVN: r119483
* tree.c (walk_type_fields): Do not handle TYPE_MIN_VALUE and
TYPE_MAX_VALUE for scalar types here but...
(walk_tree): ...there instead. Return NULL_TREE if the TYPE_DECL
is attached an error mark, and the return value of the callback
if it is not NULL_TREE.
cp/
* pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
testsuite/
* gnat.dg/pointer_variable_bounds.adb: New test.
* gnat.dg/pointer_variable_bounds.ads: Likewise.
* gnat.dg/pointer_variable_bounds_q.ads: Likewise.
From-SVN: r119481
2006-12-03 Eric Christopher <echristo@apple.com>
PR target/24598
* config/t-slibgcc-darwin: Pass -install_name.
* config/darwin.h (LINK_COMMAND_SPEC): Remove use of
libtool. Only pass through options that the linker recognizes.
(LINK_SPEC): Update comment. Translate options.
(STARTFILE_SPEC): Add dylib1.o for shared libraries.
* config/darwin9.h (LINK_COMMAND_SPEC): Ditto above.
From-SVN: r119477
PR target/30041
* config/i386/sse.md ("*sse3_movddup"): Use operands[0] and
operands[1] in insn constraint. Correct type attribute to sselog1.
From-SVN: r119468
2006-12-02 H.J. Lu <hongjiu.lu@intel.com>
PR target/30040
* config/i386/driver-i386.c: Include "coretypes.h" and "tm.h".
(bit_SSSE3): New.
(host_detect_local_cpu): Check -mtune= vs. -march=. Rewrite
processor detection.
* config/i386/i386.h (CC1_CPU_SPEC): Add -mtune=native for
-march=native if there is no -mtune=*.
* config/i386/x-i386 (driver-i386.o): Also depend on $(TM_H)
coretypes.h.
From-SVN: r119454
* config/i386/i386.c (pentium4_cost, nocona_cost): Update
32bit memcpy/memset decriptors.
(decide_alg): With -minline-all-stringops and sizes that are best
to be copied via libcall still work hard enough to pick non-libcall
strategy.
Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>
From-SVN: r119445
* fold-const.c (fold_binary) <LT_EXPR>: Use the precision of the
type instead of the size of its mode to compute the highest and
lowest possible values. Still check the size of the mode before
flipping the signedness of the comparison.
From-SVN: r119422
2006-12-01 Richard Guenther <rguenther@suse.de>
PR c++/29433
* dwarf2out.c (struct pubname_struct): Make name const.
(add_pubtype): Do not xstrdup identifiers.
From-SVN: r119404
2006-12-01 Joseph Myers <joseph@codesourcery.com>
David Edelsohn <edelsohn@gnu.org>
PR target/24036
* doc/tm.texi (HARD_REGNO_NREGS_HAS_PADDING,
HARD_REGNO_NREGS_WITH_PADDING): Document new target macros.
* defaults.h (HARD_REGNO_NREGS_HAS_PADDING,
HARD_REGNO_NREGS_WITH_PADDING): Define.
* config/i386/i386.h (HARD_REGNO_NREGS_HAS_PADDING,
HARD_REGNO_NREGS_WITH_PADDING): Define.
* rtlanal.c (subreg_regno_offset, subreg_offset_representable_p):
Use new macros to detect modes with holes; do not look at integer
units.
(subreg_offset_representable_p): Check for and disallow cases
where the modes use different numbers of bits from registers.
* config/rs6000/rs6000.c (rs6000_emit_move): Handle TFmode
constant for soft-float.
(rs6000_hard_regno_nregs): Use UNITS_PER_FP_WORD for e500 GPRs
containing doubles.
(rs6000_split_multireg_move): Use DFmode reg_mode for TFmode moves
in E500 double case.
* config/rs6000/rs6000.md (movtf): Allow soft-float.
(movtf_softfloat): New.
Co-Authored-By: David Edelsohn <edelsohn@gnu.org>
From-SVN: r119395
* tree-ssa-live.c (create_coalesce_list): Create a hash table.
(COALESCE_HASH_FN): New. Define hash function.
(partition_pair_map_hash): New. Hash value for a partition pair.
(partition_pair_map_eq): New. Equality for hash pairs.
(create_coalesce_list): Create hash table.
(delete_coalesce_list): Free hash table.
(find_partition_pair): Find/create pairs in hash table.
(compare_pairs): Sort pairs in ascending order now.
(num_coalesce_pairs): New. Number of pairs in hash table.
(struct partition_pair_iterator): Iterator struct for pair table.
(first_partition_pair): Iterator function for first pair.
(end_partition_pair_p): Iterator function for end of iteration.
(next_partition_pair): Iterator function for next pair.
(FOR_EACH_PARTITION_PAIR): Macro for iterating over pairs.
(sort_coalesce_list): Sort pairs from hash table into an array.
(pop_best_coalesce): Take pairs from the array.
(dump_coalesce_list): Update to use hash table or sorted array.
* tree-ssa-live.h (struct partition_pair_d): Remove next field.
(struct coalesce_list_d): Add hash table related fields.
From-SVN: r119378
gcc/
2006-11-30 Carlos O'Donell <carlos@codesourcery.com>
* doc/tm.texi (MAX_OFILE_ALIGNMENT): Document default.
* config/elfos.h [!MAX_OFILE_ALIGNMENT] (MAX_OFILE_ALIGNMENT):
Default is the largest alignment supported for 32-bit ELF and
representable on a 32-bit host.
From-SVN: r119374
2006-11-30 Richard Guenther <rguenther@suse.de>
* tree-vectorizer.h (vectorizable_function): Export.
* tree-vect-transform.c (vectorizable_function): Likewise.
* tree-vect-patterns.c (vect_recog_pow_pattern): Set
type_in to scalar type in recognition of squaring.
Make sure the target can vectorize sqrt in recognition
of sqrt, set type_in to vector type in this case.
* gcc.dg/vect/vect-pow-1.c: Rename ...
* gcc.dg/vect/fast-math-vect-pow-1.c: ... to this. Use
floats instead of doubles, check successful vectorization.
From-SVN: r119362
* cgraphunit.c (cgraph_finalize_compilation_unit): Add a newline
at the end of a diagnostics message.
* alloc-pool.c (pool_free): Postpone clearing the pool entry
until after asserting that it was allocated in the right pool.
* cfgrtl.c (print_rtl_with_bb): Print predecessor and
successor edge information as well. Make output of live regs
on exit consistent with live regs on entry.
From-SVN: r119357
* config/i386/i386.md (movsf_1): Enable pattern for standard
80387 constants before reload when optimizing for size.
(*movdf_nointeger, *movdf_integer): Ditto.
(*movxf_nointeger, *movxf_integer): Disable patterns for standard
80387 constants before reload when not optimizing for size.
(*fop_xf_4_i387, *fop_xf_5_i387, *fop_xf_6_i387): Avoid float
extension of XFmode input operands.
From-SVN: r119355
2006-11-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR target/29945
* config/spu/spu.md (extend_compare<mode>): New pattern.
(extend_compare): Change to expand and use the above pattern.
2006-11-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR target/29945
* gcc.c-torture/compile/pr29945.c: New testcase.
From-SVN: r119348
2006-11-29 Daniel Berlin <dberlin@dberlin.org>
Steven Bosscher <stevenb.gcc@gmail.com>
* Makefile.in (tree-ssanames.o): Remove gt-tree-ssanames.h,
since it no longer exists.
Co-Authored-By: Steven Bosscher <stevenb.gcc@gmail.com>
From-SVN: r119323
PR tree-optimization/23744
* tree-vrp.c (vrp_meet): do not require ranges to intersect.
* testsuite/gcc.dg/tree-ssa/pr23744.c: new test.
* testsuite/gcc.dg/tree-ssa/update-threading.c: xfail.
From-SVN: r119320
* sh.opt (minline-ic_invalidate): New option.
(musermode): Adjust comment.
* sh.c (sh_initialize_trampoline): Emit library call unless
is set; if it is set, don't emit library call if we can use icbi
instead.
* sh.md (ic_invalidate_line, ic_invalidate_line_sh4a): Also use
icbi for TARGET_SH4_300.
* t-sh (LIB1ASMFUNCS_CACHE): Set.
* doc/invoke.texi: Document -minline-ic_invalidate; Update
-musermode documentation.
From-SVN: r119314
* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): If
STRICT_ALIGNMENT and the type is more aligned than the saved
registers, copy via a temporary.
From-SVN: r119307
* builtins.c: Include tree-flow.h.
(fold_builtin_memory_op): Be more aggressive on converting memcpy to
assignment; convert memmove to memcpy for sizes greater than 1 where
alignment of operands prohibit the partial overlap.
From-SVN: r119292
2006-11-28 Richard Guenther <rguenther@suse.de>
* ggc-page.c (ggc_print_statistics): Use %ul and a cast to
unsigned long for printing OBJECT_SIZE.
From-SVN: r119280
2006-11-27 Roger Sayle <roger@eyesopen.com>
Manuel Lopez-Ibanez <manu@gcc.gnu.org>
* c-common.c (constant_fits_type_p): Delete.
(unsigned_conversion_warning): Delete.
(conversion_warning): Integrate Wconversion warning from
unsigned_conversion_warning.
(convert_and_check): Integrate Woverflow warning from
unsigned_conversion_warning. Reorganize and simplify to avoid
dependence upon the middle-end setting TREE_OVERFLOW on integral
conversions, by using int_fits_type_p directly.
Co-Authored-By: Manuel López-Ibáñez <manu@gcc.gnu.org>
From-SVN: r119258
2006-11-27 Michael Matz <matz@suse.de>
Andreas Krebbel <krebbel1@de.ibm.com>
PR target/29319
* config/s390/predicates.md (larl_operand): Check addend of larl
operand to be in range of -/+2GB.
* config/s390/s390.c (legitimize_pic_address): Likewise.
Changed type of variable even to HOST_WIDE_INT.
2006-11-27 Michael Matz <matz@suse.de>
Andreas Krebbel <krebbel1@de.ibm.com>
PR target/29319
* gcc.dg/20061127-1.c: New testcase.
Co-Authored-By: Andreas Krebbel <krebbel1@de.ibm.com>
From-SVN: r119256
2006-11-27 Richard Guenther <rguenther@suse.de>
PR middle-end/25620
* builtins.c (expand_builtin_pow): Optimize non integer valued
constant exponents using sqrt or cbrt if possible. Always fall back
to expanding via optabs.
* gcc.target/i386/pow-1.c: New testcase.
* gcc.dg/builtins-58.c: Likewise.
From-SVN: r119248
PR tree-optimization/22372
* tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Convert
the type of the base address.
(vect_create_data_ref_ptr): Add an argument, type of the data-ref. Use
it in the data-ref pointer creation.
(vect_init_vector): Add an argument, type of the init vector. Use it in
the stmt creation.
(vect_get_vec_def_for_operand): Fix calls to vect_init_vector.
(get_initial_def_for_reduction): Likewise.
(vect_create_epilog_for_reduction): Change type of MODIFY_EXPR to
void_type_node.
(vectorizable_assignment, vect_permute_store_chain): Likewise.
(vectorizable_store): Fix call to vect_create_data_ref_ptr. Use the
correct type in stmt creation.
(vect_setup_realignment): Use the correct type in stmt creation.
(vect_permute_load_chain): Change type of MODIFY_EXPR to
void_type_node.
(vectorizable_load): Fix calls to vect_create_data_ref_ptr. Change type
of MODIFY_EXPR to void_type_node.
(vectorizable_condition): Change type of MODIFY_EXPR to
void_type_node.
(vect_update_ivs_after_vectorizer): Use the correct type in stmt
creation.
From-SVN: r119247
Revert:
2006-05-08 Uros Bizjak <uros@kss-loka.si>
* config/i386/i386.c (ix86_rtx_costs) [FLOAT_EXTEND]: For
standard 80387 constants, raise the cost to prevent
compress_float_constant() to generate load from memory.
* config/i386/i386.md: Add new splitter pattern to split
float_extended load of constant from constant pool into
pure constant load.
From-SVN: r119246
* builtins.c (fold_builtin_fmin_fmax): Handle NaN arguments.
testsuite:
* gcc.dg/torture/builtin-minmax-1.c: Test NaN in fmin/fmax.
Don't ever inline the testcase.
From-SVN: r119224
2006-11-26 Razya Ladklesky <razya@il.ibm.com>
PR tree-optimization/29122
* tree-inline.c (tree_function_versioning): Update DECL_ASSEMBLER_NAME
for the new version. Assign NULL to DECL_RTL of the new version.
From-SVN: r119220
* cse.c (cse_altered): Remove.
(record_jump_equiv): Make true/false argument a bool instead
of an int.
(cse_insn): Don't set cse_altered. Use delete_insn_and_edges
where appropriate. Emit a new jump before the existing one
instead of after so that delete_insn_and_edges removes the
dead edges properly. Check any_condjump_p before calling
record_jump_equiv.
(cse_basic_block): Check any_condjump_p before calling
record_jump_equiv.
(cse_main): Don't set/check cse_altered. Remove USE_C_ALLOCA.
From-SVN: r119209
(fprem1xf4): Rename to fprem1xf4_i387.
(fmodsf3, fmoddf3): Macroize patterns using X87MODEF12 mode macro.
Rename patterns to fmod<mode>3. Use general_operand operand
constraint for operands 1 and 2. Use SSE_FLOAT_MODE_P to disable
patterns for SSE math.
(remaindersf3, remainderdf3): Ditto.
From-SVN: r119199
* jump.c (mark_all_labels): Work in cfglayout mode.
* cfgcleanup.c (cleanup_cfg): Do not call delete_dead_jumptables
when in cfglayout mode, because there are no dead jumptables
visible.
* cfgrtl.c (commit_one_edge_insertion): Don't set bb->aux when
in cfglayout mode.
(commit_edge_insertions): Do not allow insertion of instructions
with control flow insns when in cfglayout mode.
From-SVN: r119191
(X87MODEF): New mode macro.
(ssemodefsuffix): New mode attribute.
(truncxf<mode>2_i387_noop_unspec): New insn pattern.
(sqrt_extend<mode>xf2_i387): New insn pattern.
(sqrt<mode>2): For non-SSE sqrt, emit sqrt_extend<mode>xf2_i387
insn and truncate result back to original mode using
UNSPEC_TRUNC_NOOP truncation.
(*sqrt<mode>2_sse): Implement using SSEMODEF mode macro and
ssemodefsuffix mode attribute.
(*sqrtsf2_mixed, *sqrtsf2_i387, *sqrtdf2_mixed, *sqrtdf2_i387)
(*sqrtextendsfdf2_i387, *sqrtextendsfxf2_i387)
(*sqrtextenddfxf2_i387): Remove insn patterns.
(fmodsf3, fmoddf3, remaindersf3, remainderdf3): Use noop
truncation patterns.
reg-stack.c (get_true_reg): Handle UNSPEC_TRUNC_NOOP.
From-SVN: r119188
2006-11-24 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR tree-opt/29964
* ipa-pure-const.c (check_tree): If the original tree
is volatile return early and say the function is not pure
nor const. Remove the volatile check for writes.
(analyze_function): Print out the result of the local
analysis pass.
2006-11-24 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR tree-opt/29964
* gcc.dg/pure-1.c: New test.
From-SVN: r119162
* config/rs6000/eabispe.h (TARGET_DEFAULT): Include
MASK_STRICT_ALIGN.
* config/rs6000/linuxspe.h (TARGET_DEFAULT): Likewise.
* config/rs6000/rs6000.c (rs6000_override_options): Use
MASK_STRICT_ALIGN for 8540 and 8548. Add MASK_STRICT_ALIGN to
POWERPC_MASKS.
From-SVN: r119156
2006-11-23 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-alias.c (tree_pointer_compare): New function.
(compact_name_tags): New function.
(group_aliases): Call compact_name_tags.
From-SVN: r119142
2006-11-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c/9072
* c.opt (Wtraditional-conversion): New.
(Wconversion): Update description.
* c-typeck.c (convert_arguments): Warnings for prototypes causing
type conversions different from what would happen in the absence
of prototype are now handled by Wtraditional-conversion.
* doc/invoke.texi (Wtraditional-conversion): New.
(Wconversion): Update description.
* doc/trouble.texi (Wconversion): Replace Wconversion by
Wtraditional-conversion.
testsuite/
PR c/9072
* gcc.dg/builtin-protos-1.c: Replace Wconversion by
Wtraditional-conversion.
* gcc.dg/overflow-warn-2.c: Likewise.
* gcc.dg/Wconversion.c: Likewise. Renamed as
Wtraditional-conversion.c .
* gcc.dg/Wconversion-2.c: Likewise. Renamed as
Wtraditional-conversion-2.c .
* gcc.dg/dfp/Wconversion-2.c: Likewise. Renamed as
Wtraditional-conversion-2.c
* gcc.dg/Wconversion-negative-constants.c: New.
From-SVN: r119129
2006-11-23 Andrew Pinski <pinskia@gmail.com>
* predict.c (tree_estimate_probability): Check to make
sure current_loops is non null before calling flow_loops_dump.
2006-11-23 Andrew Pinski <pinskia@gmail.com>
* gcc.dg/tree-ssa/dump-1.c: New test.
From-SVN: r119128
gcc:
* config/mips/mips.h (ISA_HAS_FP4): Add MIPS32R2 + 64bit fpu
combination.
(ISA_HAS_MXHC1): True if ISA supports mfhc1 and mthc1 opcodes.
(ASM_SPEC): Pass along -mfp32 and -mfp64.
* config/mips/mips.c (mips_split_64bit_move): Use gen_mthc1 to set
high part of FP register when in 64-bit FP register mode. Similarly
use gen_mfhc1 to load high part of FP register.
(override_options): Allow -mgp32 and -mfp64 combination if
ISA_HAS_MXHC1 (currently for O32 only).
(mips_cannot_change_mode_class): If floating-point registers are
bigger than word size. disallow conversion of float register from a
large integer mode to a float mode smaller than the float register
size.
(mips_class_max_nregs): Handle float registers case seperately.
* config/mips/mips.md (define_constants): Add UNSPEC_MFHC1,
UNSPEC_MTHC1.
(movdi_32bit): Use !TARGET_FLOAT64 in condition pattern.
(movdf_hardfloat_32bit): Similarly.
(movdi_gp32_fp64): New DImode pattern for MIPS32R2 which optionally
support a full 64-bit fpu.
(mthc1): New pattern to generate MTHC1 instruction.
(mfhc1): New pattern to generate MFHC1 instruction.
* doc/invoke.texi (MIPS Options): Document the -mgp32 -mfp64
option for the MIPS32R2 and mention its use under O32 ABI.
gcc/testsuite:
* gcc.target/mips/mips.exp (dg-mips-options): Handle parsing of
-mfp64, allowable when ISA >= 33 and float is enabled.
* gcc.target/mips/mips32r2-mxhc1.c: New test for checking the use
of mthc1 and mfhc1 patterns.
From-SVN: r119124
PR tree-optimization/29921
* fold-const.c (operand_equal_p): Without HONOR_SIGNED_ZEROS, consider
signed and unsigned zero equal.
* gcc.dg/pr29921.c: New test.
From-SVN: r119102
* config/rs6000/rs6000.c (get_store_dest): New.
(adjacent_mem_locations): Use get_store_dest() to get
the rtl of the store destination.
From-SVN: r119099
* config/bfin/predicates.md (d_register_operand, mem_p_address_operand,
mem_i_address_operand): New predicates.
* config/bfin/bfin.c (bfin_issue_rate): New function.
(TARGET_SCHED_ISSUE_RATE): New macro.
* config/bfin/bfin.md (addrtype): New attribute.
(slot0, slot1, slot2, store, pregs): New cpu_units.
(core): Now a define_reservation.
(alu): Remove some insn types from this reservation.
(dsp32, load32, loadp, loadi, store32, storep, storei, multi): New
insn reservations.
(dummy reservation): Don't trigger for mcld insns.
(absence_sets): Two new absence sets to enforce slot ordering.
(popsi_insn): Set addrtype.
From-SVN: r119090
* doc/c-tree.texi: Document new tree codes.
* doc/md.texi: Document new optabs.
* tree-pretty-print.c (dump_generic_node): Handle print of new tree
codes.
* optabs.c (optab_for_tree_code, init_optabs): Handle new optabs.
* optabs.h (optab_index): Add new.
(vec_extract_even_optab, vec_extract_odd_optab,
vec_interleave_high_optab, vec_interleave_low_optab): New optabs.
* genopinit.c (vec_extract_even_optab, vec_extract_odd_optab,
vec_interleave_high_optab, vec_interleave_low_optab): Initialize
new optabs.
* expr.c (expand_expr_real_1): Add implementation for new tree codes.
* tree-vectorizer.c (new_stmt_vec_info): Initialize new fields.
* tree-vectorizer.h (stmt_vec_info): Add new fields for interleaving
along with macros for their access.
* tree-data-ref.h (first_location_in_loop, data_reference): Update
comment.
* tree-vect-analyze.c (toplev.h): Include.
(vect_determine_vectorization_factor): Fix indentation.
(vect_insert_into_interleaving_chain,
vect_update_interleaving_chain, vect_equal_offsets): New functions.
(vect_analyze_data_ref_dependence): Add argument for interleaving
check. Check for interleaving if it's true.
(vect_check_dependences): New function.
(vect_analyze_data_ref_dependences): Call vect_check_dependences for
every ddr. Call vect_analyze_data_ref_dependence with new argument.
(vect_update_misalignment_for_peel): Update for interleaving.
(vect_verify_datarefs_alignment): Check only first data-ref for
interleaving.
(vect_enhance_data_refs_alignment): Update for interleaving. Check
only first data-ref for interleaving.
(vect_analyze_data_ref_access): Check interleaving, update
interleaving data.
(vect_analyze_data_refs): Call compute_data_dependences_for_loop
with different parameters.
* tree.def (VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR,
VEC_INTERLEAVE_HIGH_EXPR, VEC_INTERLEAVE_LOW_EXPR): New tree codes.
* tree-inline.c (estimate_num_insns_1): Add cases for new codes.
* tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
Update step in case of interleaving.
(vect_strided_store_supported, vect_permute_store_chain): New
functions.
(vectorizable_store): Handle strided stores.
(vect_strided_load_supported, vect_permute_load_chain,
vect_transform_strided_load): New functions.
(vectorizable_load): Handle strided loads.
(vect_transform_stmt): Add argument. Handle strided stores. Check
that vectorized stmt exists for patterns.
(vect_gen_niters_for_prolog_loop): Update calculation for
interleaving.
(vect_transform_loop): Remove stmt_vec_info for strided stores after
whole chain vectorization.
* config/rs6000/altivec.md (UNSPEC_EXTEVEN, UNSPEC_EXTODD,
UNSPEC_INTERHI, UNSPEC_INTERLO): New constants.
(vpkuhum_nomode, vpkuwum_nomode, vec_extract_even<mode>,
vec_extract_odd<mode>, altivec_vmrghsf, altivec_vmrglsf,
vec_interleave_high<mode>, vec_interleave_low<mode>): Implement.
From-SVN: r119088
* cse.c (enum taken): Remove PATH_AROUND.
(addr_affects_sp_p, invalidate_skipped_set,
invalidate_skipped_block): Remove.
(cse_end_of_basic_block): Remove skip_blocks and related code.
(cse_main): Don't test for flag_cse_skip_blocks.
Update cse_end_of_basic_block call.
(cse_basic_block): Likewise. Remove PATH_AROUND case. Remove
code to lengthen the path if a jump was simplified.
From-SVN: r119079
PR rtl-optimization/29924
* loop-unroll.c (split_edge_and_insert): Handle the case insns is NULL.
(unroll_loop_runtime_iterations): Assert that the argument passed to
split_edge_and_insert is not NULL.
* loop-doloop.c (add_test): Ditto.
From-SVN: r119078
PR tree-optimization/29902
* tree-ssa-loop-manip.c (can_unroll_loop_p): Return false if
any involved ssa name appears in abnormal phi node.
* g++.dg/tree-ssa/pr29902.C: New test.
From-SVN: r119074
* config/xtensa/xtensa.c (xtensa_char_to_class): Delete.
(xtensa_const_ok_for_letter_p): Delete.
(xtensa_extra_constraint): Delete.
(override_options): Delete xtensa_char_to_class initialization.
* config/xtensa/xtensa.h (REG_CLASS_FROM_LETTER): Delete.
(CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
(EXTRA_CONSTRAINT): Delete.
* config/xtensa/xtensa.md: Include constraints.md.
(call_internal): Combine alternatives.
(call_value_internal): Likewise, and remove invalid constraints.
* config/xtensa/constraints.md: New file.
* config/xtensa/xtensa-protos.h (xtensa_const_ok_for_letter_p): Delete.
(xtensa_extra_constraint): Delete.
* doc/md.texi (Machine Constraints): Refer to constraints.md for
Xtensa constraints.
--Ths line, and those below, will be ignored--
M gcc/doc/md.texi
M gcc/ChangeLog
M gcc/config/xtensa/xtensa.c
M gcc/config/xtensa/xtensa.h
M gcc/config/xtensa/xtensa.md
A gcc/config/xtensa/constraints.md
M gcc/config/xtensa/xtensa-protos.h
From-SVN: r119072
* config/bfin/bfin.c (hard_regno_mode_ok): Only allow first 31
regs for DImode.
(bfin_register_move_cost): Bump costs if trying to move plain
integer values through accumulators.
From-SVN: r119055
* config/bfin/bfin.opt (mstack-check-l1): New.
* doc/invoke.texi (Blackfin Options): Document it.
* config/bfin/bfin.c (bfin_expand_prologue): Generate code to use
stack bounds in L1 memory if the new option is enabled.
(override_options): Don't allow combinations of -fstack-limit and
-mstack-check-l1.
(add_to_reg): Renamed from add_to_sp. All callers changed. Lose some
dead code.
From-SVN: r119049
* cfgloopmanip.c (add_loop, duplicate_loop): Do not set level
of the loop.
* cfgloop.c (flow_loop_level_compute, flow_loops_level_compute):
Removed.
(flow_loop_dump): Do not dump loop level.
(flow_loops_find): Do not call flow_loops_level_compute.
* cfgloop.h (struct loop): Remove level field.
From-SVN: r119040
* gengtype.c (process_gc_options): Remove unnecessary forward decl.
Add another out parameter, "skip".
(set_gc_used_type): Adjust calls to process_gc_options. If a field
is tagged "skip", do not mark its type used.
From-SVN: r119034
2006-11-20 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR tree-opt/25500
* tree-sra.c (single_scalar_field_in_record_p): New function.
(decide_block_copy): Use it.
2006-11-20 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR tree-opt/25500
* gcc.dg/tree-ssa/sra-4.c: New testcase.
From-SVN: r119026
2006-11-20 David Daney <ddaney@avtrex.com>
* include/mips-signal.h (sys/syscall.h): Do not include.
(sig_ucontext_t): Removed.
(MAKE_THROW_FRAME): Changed to be a nop.
(_INIT_SIG_HANDLER): New macro.
(INIT_SEGV): Rewrote to use _INIT_SIG_HANDLER.
(INIT_FPE): Same.
2006-11-20 David Daney <ddaney@avtrex.com>
* config/mips/linux-unwind.h (mips_fallback_frame_state): Adjust
PC to point to following instruction.
From-SVN: r119024
* config/bfin/bfin.md (call_symbol, call_value_symbol, sibcall_symbol,
sibcall_value_symbol): Allow these patterns if
TARGET_LEAF_ID_SHARED_LIBRARY.
* config/bfin/bfin.c (bfin_expand_call): Allow them here as well.
(override_options): Turn on id shared library flags if -msep-data,
but disallow the combination of these options on the command line.
* config/bfin/bfin.h (TARGET_LEAF_ID_SHARED_LIBRARY, MASK_SEP_DATA
MASK_LEAF_ID_SHARED_LIBRARY, TARGET_SEP_DATA): New macros.
(DRIVER_SELF_SPECS): -mleaf-id-shared-library implies
-mid-shared-library.
(TARGET_SWITCHES): Add -mleaf-id-shared-library and -msep-data.
* doc/invoke.texi (Blackfin Options): Document new switches.
From-SVN: r119012
2006-11-19 Andrew Pinski <pinskia@gmail.com>
PR rtl-opt/29879
* fwprop.c (loops): Remove.
(forward_propagate_into): Use current_loops instead of
loops.
(fwprop_init): Call loop_optimizer_init instead of
flow_loops_find.
(fwprop_done): Call loop_optimizer_finalize instead of
flow_loops_free.
(fwprop): Use current_loops instead of loo
From-SVN: r119010
2006-11-19 Gabriel Dos Reis <gdr@integrable-solutions.net>
PR c++/8586
* c-opts.c (c_common_handle_option): Enable -Wwrite-strings if
-Wall.
testsuite/
2006-11-19 Gabriel Dos Reis <gdr@integrable-solutions.net>
PR c++/8586
* g++.dg/warn/Wall-write-strings.C: New.
From-SVN: r119009
2006-11-18 Richard Guenther <rguenther@suse.de>
* config/i386/i386.c (ix86_builtins): New array for ix86
builtin function decls.
(def_builtin): New function.
(def_builtin_const): Likewise.
(ix86_init_mmx_sse_builtins): Mark sqrt and cvt builtins const.
From-SVN: r118974
* tree-vrp.c (execute_vrp): Do not update current_loops.
* loop-unswitch.c (unswitch_loop): Do not use loop_split_edge_with.
* doc/loop.texi: Remove documentation for cancelled functions.
* tree-ssa-loop-im.c (loop_commit_inserts): Removed.
(move_computations, determine_lsm): Use bsi_commit_edge_inserts
instead.
* cfgloopmanip.c (remove_bbs): Do not update loops explicitly.
(remove_path): Ensure that in delete_basic_blocks, the loops
are still allocated.
(add_loop): Work on valid loop structures.
(loopify): Modify call of add_loop.
(mfb_update_loops): Removed.
(create_preheader): Do not update loops explicitly.
(force_single_succ_latches, loop_version): Do not use
loop_split_edge_with.
(loop_split_edge_with): Removed.
* tree-ssa-loop-manip.c (create_iv, determine_exit_conditions):
Do not use bsi_insert_on_edge_immediate_loop.
(split_loop_exit_edge, tree_unroll_loop): Do not use
loop_split_edge_with.
(bsi_insert_on_edge_immediate_loop): Removed.
* tree-ssa-loop-ch.c (copy_loop_headers): Use current_loops. Do not
use loop_split_edge_with.
* cfghooks.c: Include cfgloop.h.
(verify_flow_info): Verify that loop_father is filled iff current_loops
are available.
(redirect_edge_and_branch_force, split_block, delete_basic_block,
split_edge, merge_blocks, make_forwarder_block, duplicate_block):
Update cfg.
* cfgloopanal.c (mark_irreducible_loops): Work if the function contains
no loops.
* modulo-sched.c (generate_prolog_epilog, canon_loop): Do not use
loop_split_edge_with.
(sms_schedule): Use current_loops.
* tree-ssa-dom.c (tree_ssa_dominator_optimize): Use current_loops.
* loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Set
current_loops.
(rtl_loop_init, rtl_loop_done): Do not set current_loops.
* tree-ssa-sink.c (execute_sink_code): Use current_loops.
* ifcvt.c (if_convert): Ditto.
* predict.c (predict_loops): Do not clear current_loops.
(tree_estimate_probability): Use current_loops.
(propagate_freq): Receive head of the region to propagate instead of
loop.
(estimate_loops_at_level): Do not use shared to_visit bitmap.
(estimate_loops): New function. Handle case current_loops == NULL.
(estimate_bb_frequencies): Do not allocate tovisit. Use
estimate_loops.
* tree-ssa-loop.c (current_loops): Removed.
(tree_loop_optimizer_init): Do not return loops.
(tree_ssa_loop_init, tree_ssa_loop_done): Do not set current_loops.
* tree-vectorizer.c (slpeel_update_phi_nodes_for_guard1,
slpeel_update_phi_nodes_for_guard2, slpeel_tree_peel_loop_to_edge):
Do not update loops explicitly.
* function.h (struct function): Add x_current_loops field.
(current_loops): New macro.
* tree-if-conv.c (combine_blocks): Do not update loops explicitly.
* loop-unroll.c (split_edge_and_insert): New function.
(unroll_loop_runtime_iterations, analyze_insns_in_loop): Do not
use loop_split_edge_with.
* loop-doloop.c (add_test, doloop_modify): Ditto.
* tree-ssa-pre.c (init_pre, fini_pre): Do not set current_loops.
* cfglayout.c (copy_bbs): Do not update loops explicitly.
* lambda-code.c (perfect_nestify): Do not use loop_split_edge_with.
* tree-vect-transform.c (vect_transform_loop): Do not update loops
explicitly.
* cfgloop.c (flow_loops_cfg_dump): Do not dump dfs_order and rc_order.
(flow_loops_free): Do not free dfs_order and rc_order.
(flow_loops_find): Do not set dfs_order and rc_order in loops
structure. Do not call loops and flow info verification.
(add_bb_to_loop, remove_bb_from_loops): Check whether the block
already belongs to some loop.
* cfgloop.h (struct loops): Remove struct cfg.
(current_loops, loop_split_edge_with): Declaration removed.
(loop_optimizer_init, loop_optimizer_finalize): Declaration changed.
* tree-flow.h (loop_commit_inserts, bsi_insert_on_edge_immediate_loop):
Declaration removed.
* Makefile.in (cfghooks.o): Add CFGLOOP_H dependency.
* basic-block.h (split_edge_and_insert): Declare.
* tree-cfg.c (remove_bb): Do not update loops explicitly.
From-SVN: r118931
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.
* gcc.dg/pr29801.c: New test.
From-SVN: r118926
PR middle-end/29584
* tree-ssa-forwprop.c (simplify_switch_expr): Don't
optimize if DEF doesn't have integral type.
* gcc.dg/torture/pr29584.c: New test.
From-SVN: r118921
* 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.
From-SVN: r118917
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.
From-SVN: r118900
* 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.
From-SVN: r118884
* config/i386/i386.c (ix86_function_sseregparm): Fix comment:
number of arguments passed to local functions in SSE registers is 3.
* doc/invoke.texi (Function Attributes) [sseregparm]: Correct
number of arguments passed in SSE registers to 3.
From-SVN: r118883
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.
From-SVN: r118882
2006-11-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR tree-opt/29788
* fold-const.c (fold_indirect_ref_1): Fold *&CONST_DECL down
to what is the const decl is a place holder for.
2006-11-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR tree-opt/29788
* gfortran.fortran-torture/compile/inline_1.f90:
New testcase.
From-SVN: r118861
* config/i386/i386.opt: New target option -mx87regparm.
* config/i386/i386.h (struct ix86_args): Add x87_nregs, x87_regno,
float_in_x87: Add new variables. mmx_words, sse_words: Remove.
(X87_REGPARM_MAX): Define.
* 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.
From-SVN: r118859
* 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.
From-SVN: r118856
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.
From-SVN: r118848
2006-11-15 Paolo Bonzini <bonzini@gnu.org>
PR middle-end/29753
* gimplify.c (fold_indirect_ref_rhs): Use
STRIP_USELESS_TYPE_CONVERSION rather than STRIP_NOPS.
From-SVN: r118845
* 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.
From-SVN: r118829
* 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.
From-SVN: r118825
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
From-SVN: r118776
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
2006-11-12 Daniel Berlin <dberlin@dberlin.org>
Fix PR tree-optimization/29587
* tree-ssa-structalias.c (process_constraint): Don't
mark address taken due only to escaped vars constraint.
From-SVN: r118742
2006-11-12 Michael Matz <matz@suse.de>
Roger Sayle <roger@eyesopen.com>
PR rtl-optimization/29797
* ifcvt.c (noce_try_bitop): Correct calculation of bitnum on
BITS_BIG_ENDIAN targets.
* gcc.c-torture/execute/pr29797-1.c: New test case.
From-SVN: r118740
* 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.
From-SVN: r118733
* 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.
From-SVN: r118730
* 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.
From-SVN: r118729