OSDN Git Service

cbcd386e06bb2b4a3c8a8fd1d019dcef6c7b162f
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2
3         PR bootstrap/40027
4         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
5         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
6
7 2009-05-25  Ira Rosen  <irar@il.ibm.com>
8
9         PR tree-optimization/40238
10         * tree-vect-stmts.c (vect_init_vector): Insert initialization
11         statements after basic block's labels.
12         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
13         to free the allocated memory.
14
15 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
16
17         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
18         return address with a USE.
19
20 2009-05-24  Richard Guenther  <rguenther@suse.de>
21
22         PR middle-end/40233
23         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
24         array type from the main variant of the inner type.
25
26 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
27
28         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
29         definition to bool (from int) to un-break build.
30         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
31
32 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
33
34         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
35         discard_stmt_changes): Delete.
36         * tree-ssa-operands.c (scb_stack): Delete.
37         (init_ssa_operands): Do not initialize it.
38         (fini_ssa_operands): Do not free it.
39         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
40
41         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
42         update_stmt, remove the others.  Fix comments.
43         * tree-dfa.c (optimize_stack_restore): Likewise.
44         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
45         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
46         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
47         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
48         Likewise.
49         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
50         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
51         (dom_opt_finalize_block): Likewise, adjusting access to stmts_to_rescan.
52         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
53         (stmts_to_rescan): Change item type to gimple.
54         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
55
56 2009-05-24  Ira Rosen  <irar@il.ibm.com>
57
58         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
59         * tree-pass.h (pass_slp_vectorize): New pass.
60         * params.h (SLP_MAX_INSNS_IN_BB): Define.
61         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
62         * tree-vectorizer.c (timevar.h): Include.
63         (user_vect_verbosity_level): Declare.
64         (vect_location): Fix comment.
65         (vect_set_verbosity_level): Update user_vect_verbosity_level
66         instead of vect_verbosity_level.
67         (vect_set_dump_settings): Add an argument. Ignore user defined
68         verbosity if dump flags require higher level of verbosity. Print to
69         stderr only for loop vectorization.
70         (vectorize_loops): Update call to vect_set_dump_settings.
71         (execute_vect_slp): New function.
72         (gate_vect_slp): Likewise.
73         (struct gimple_opt_pass pass_slp_vectorize): New.
74         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
75         access its members.
76         (vec_info_for_bb): New function.
77         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
78         (VECTORIZATION_ENABLED): New macro.
79         (SLP_ENABLED, SLP_DISABLED): Likewise.
80         (vect_is_simple_use): Add bb_vec_info argument.
81         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
82         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
83         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
84         vect_schedule_slp, vect_analyze_slp): Likewise.
85         (vect_analyze_stmt): Add slp_tree argument.
86         (find_bb_location): Declare.
87         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
88         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
89         (vect_analyze_loop_operations, vect_analyze_loop,
90         get_initial_def_for_induction, vect_create_epilog_for_reduction,
91         vect_finalize_reduction, vectorizable_reduction,
92         vectorizable_live_operation, vect_transform_loop): Likewise.
93         * tree-data-ref.c (dr_analyze_innermost): Update comment,
94         skip evolution analysis if analyzing a basic block.
95         (dr_analyze_indices): Likewise.
96         (initialize_data_dependence_relation): Skip the test whether the
97         object is invariant for basic blocks.
98         (compute_all_dependences): Skip dependence analysis for data
99         references in basic blocks.
100         (find_data_references_in_stmt): Don't fail in case of invariant
101         access in basic block.
102         (find_data_references_in_bb): New function.
103         (find_data_references_in_loop): Move code to
104         find_data_references_in_bb and add a call to it.
105         (compute_data_dependences_for_bb): New function.
106         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
107         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
108         that STEP is 0.
109         (vect_analyze_data_ref_dependence): Check for interleaving in case of
110         unknown dependence in basic block and fail in case of dependence in
111         basic block.
112         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
113         dependence instances from either loop or basic block vectorization
114         info.
115         (vect_compute_data_ref_alignment): Check if it is loop vectorization
116         before calling nested_in_vect_loop_p.
117         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
118         dependence instances from either loop or basic block vectorization
119         info.
120         (vect_verify_datarefs_alignment): Likewise.
121         (vect_enhance_data_refs_alignment): Adjust function calls.
122         (vect_analyze_data_refs_alignment): Likewise.
123         (vect_analyze_group_access): Fix printing. Skip different checks if
124         DR_STEP is 0. Keep strided stores either in loop or basic block
125         vectorization data structure. Fix indentation.
126         (vect_analyze_data_ref_access): Fix comments, allow zero step in
127         basic blocks.
128         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
129         dependence instances from either loop or basic block vectorization
130         info.
131         (vect_analyze_data_refs): Update comment. Call
132         compute_data_dependences_for_bb to analyze basic blocks.
133         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
134         case of loop vectorization. In case of basic block vectorization use
135         data-ref itself as a base.
136         (vect_create_data_ref_ptr): In case of basic block vectorization:
137         don't advance the pointer, add new statements before the current
138         statement.  Adjust function calls.
139         (vect_supportable_dr_alignment): Support only aligned accesses in
140         basic block vectorization.
141         * common.opt (ftree-slp-vectorize): New flag.
142         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
143         (vect_pattern_recog_1): Likewise.
144         * tree-vect-stmts.c (process_use): Likewise.
145         (vect_init_vector): Add new statements in the beginning of the basic
146         block in case of basic block SLP.
147         (vect_get_vec_def_for_operand): Adjust function calls.
148         (vect_finish_stmt_generation): Likewise.
149         (vectorizable_call): Add assert that it is loop vectorization, adjust
150         function calls.
151         (vectorizable_conversion, vectorizable_assignment): Likewise.
152         (vectorizable_operation): In case of basic block SLP, take
153         vectorization factor from statement's type and skip the relevance
154         check. Adjust function calls.
155         (vectorizable_type_demotion): Add assert that it is loop
156         vectorization, adjust function calls.
157         (vectorizable_type_promotion): Likewise.
158         (vectorizable_store): Check for outer loop only in case of loop
159         vectorization. Adjust function calls. For basic blocks, skip the
160         relevance check and don't advance pointers.
161         (vectorizable_load): Likewise.
162         (vectorizable_condition): Add assert that it is loop vectorization,
163         adjust function calls.
164         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
165         that it is not reduction, get vector type, call only supported
166         functions, skip loop specific parts.
167         (vect_transform_stmt): Check for outer loop only in case of loop
168         vectorization.
169         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
170         (vect_is_simple_use): Fix comment, add new argument, fix conditions
171         for external definition.
172         * passes.c (pass_slp_vectorize): New pass.
173         * tree-vect-slp.c (find_bb_location): New function.
174         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
175         check for patterns only in loops.
176         (vect_build_slp_tree): Add argument, adjust function calls, fail in
177         case of multiple types in basic block SLP.
178         (vect_mark_slp_stmts_relevant): New function.
179         (vect_supported_load_permutation_p): Fix comment.
180         (vect_analyze_slp_instance): Add argument. In case of basic block
181         SLP, take vectorization factor from statement's type, check that
182         unrolling factor is 1. Adjust function call. Save SLP instance in
183         either loop or basic block vectorization structure. Return FALSE,
184         if SLP failed.
185         (vect_analyze_slp): Add argument. Get strided stores groups from
186         either loop or basic block vectorization structure. Return FALSE
187         if basic block SLP failed.
188         (new_bb_vec_info): New function.
189         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
190         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
191         (vect_schedule_slp): Add argument. Get SLP instances from either
192         loop or basic block vectorization structure. Set vectorization factor
193         to be 1 for basic block SLP.
194         (vect_slp_transform_bb): New function.
195         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
196
197 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
198
199         * final.c (shorten_branches): Do not align labels for jump tables.
200         (final_scan_insn): Use JUMP_TABLE_DATA_P.
201
202 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
203
204         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
205         Remove outdated reference to flow.c and fix nits.
206         * doc/gccint.texi: Tweak RTL description.
207         * doc/rtl.texi: Likewise.
208
209 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
210
211         * config/avr/avr.c: Change my email address.
212         * config/avr/avr.h: Likewise.
213         * config/avr/avr.md: Likewise.
214         * config/avr/avr-protos.h: Likewise.
215         * config/avr/libgcc.S: Likewise.
216
217 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
218
219         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
220         (spu_split_load, spu_split_store): Change return type to int.
221         (spu_split_convert): Declare.
222         * config/spu/predicates.md (spu_mem_operand): Remove.
223         (spu_mov_operand): Update.
224         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
225         * config/spu/spu.c (regno_aligned_for_load): Remove.
226         (reg_aligned_for_addr, spu_expand_load): Define.
227         (spu_expand_extv): Reimplement and handle MEM.
228         (spu_expand_insv): Handle MEM.
229         (spu_sched_reorder): Handle insn's with length 0.
230         (spu_legitimate_address_p): Reimplement.
231         (store_with_one_insn_p): Return TRUE for any mode with size
232         larger than 16 bytes.
233         (address_needs_split): Define.
234         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
235         operands.
236         (spu_convert_move): Define.
237         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
238         (spu_split_store): Change all MEM's to TImode.
239         (spu_init_expanders): Preallocate registers that correspond to
240         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
241         mark_reg_pointer.
242         (spu_split_convert): Define.
243         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
244         (_move<mode>, _movdi, _movti): Update predicate and condition.
245         (load, store): Change to define_split.
246         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
247         extend<mode>ti2.
248         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
249         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
250         define_insn_and_split of lshr<mode>3.
251         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
252         (<v>ashr<mode>3_imm): Define.
253         (extv, extzv, insv): Allow MEM operands.
254         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
255         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
256         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
257         (_spu_convert2): Change to define_insn_and_split and remove the
258         corresponding define_peephole2.
259         (stack_protect_set, stack_protect_test, stack_protect_test_si):
260         Change predicates to memory_operand.
261
262 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
263
264         * config/arm/thumb2.md: Add 16-bit multiply instructions.
265
266 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
267
268         PR tree-optimization/40219
269         * tree.c (iterative_hash_expr): Make sure the builtin function is
270         a normal builtin function and not a front end or back end builtin
271         before indexing into the built_in_decls array.
272
273 2009-05-22  Richard Guenther  <rguenther@suse.de>
274
275         PR middle-end/38964
276         * alias.c (write_dependence_p): Do not use TBAA for answering
277         anti-dependence or output-dependence.
278         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
279         (emit_pointer_definition): Remove.
280         (emit_alias_warning): Likewise.
281         (find_what_var_points_to): Remove TBAA pruning code.
282         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
283         violations.
284         (compute_points_to_sets): Remove code computing the set of
285         dereferenced pointers.
286         * tree-data-ref.c (dr_may_alias_p): Properly use the split
287         oracle for querying anti and output dependencies.
288         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
289         if TBAA may be applied.
290         (refs_anti_dependent_p): New function.
291         (refs_output_dependent_p): Likewise.
292         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
293         (refs_output_dependent_p): Likewise.
294         * doc/tree-ssa.texi (Memory model): New section.
295         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
296         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
297         * cfgexpand.c (expand_gimple_basic_block): Do not handle
298         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
299         * expr.c (expand_expr_real_1): Likewise.
300         * gimple-low.c (lower_stmt): Likewise.
301         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
302         (dump_gimple_cdt): Remove.
303         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
304         (gimple_size): Likewise.
305         (walk_gimple_op): Likewise.
306         (is_gimple_stmt): Likewise.
307         (walk_stmt_load_store_addr_ops): Likewise.
308         (gimple_build_cdt): Remove.
309         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
310         * gimple.h (gimple_cdt_new_type): Remove.
311         (gimple_cdt_new_type_ptr): Likewise.
312         (gimple_cdt_set_new_type): Likewise.
313         (gimple_cdt_location): Likewise.
314         (gimple_cdt_location_ptr): Likewise.
315         (gimple_cdt_set_location): Likewise.
316         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
317         * tree-cfg.c (remove_useless_stmts_1): Do not handle
318         GIMPLE_CHANGE_DYNAMIC_TYPE.
319         (verify_types_in_gimple_stmt): Likewise.
320         * tree-inline.c (estimate_num_insns): Likewise.
321         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
322         (copy_decl_to_var): Likewise.
323         (copy_result_decl_to_var): Likewise.
324         * tree-pretty-print.c (dump_generic_node): Do not handle
325         CHANGE_DYNAMIC_TYPE_EXPR.
326         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
327         * tree-ssa-operands.c (get_expr_operands): Likewise.
328         * tree-ssa-structalias.c (struct variable_info): Remove
329         no_tbaa_pruning member.
330         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
331         (unify_nodes): Do not copy it.
332         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
333         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
334         (set_uids_in_ptset): Do not check it.
335         (find_what_var_points_to): Likewise.
336         (compute_tbaa_pruning): Remove.
337         (compute_points_to_sets): Do not call it.
338         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
339         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
340         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
341         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
342         (DECL_NO_TBAA_P): Likewise.
343         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
344         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
345         (expand_omp_atomic_pipeline): Do not set it.
346         * print-tree.c (print_node): Do not dump it.
347         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
348         redundant check.
349
350 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
351
352         PR target/39856
353         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
354         for clobber.
355
356 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
357
358         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
359         non-external.
360
361 2009-05-22  Ben Elliston  <bje@au.ibm.com>
362
363         * Makefile.in (bversion.h, s-bversion): New targets.
364         (TOPLEV_H): Add bversion.h.
365         * toplev.h: Include "bversion.h".
366         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
367         the __format__ attribute only if compiling with the same version
368         of GCC as the sources (the "build version").
369
370 2009-05-22  Ben Elliston  <bje@au.ibm.com>
371
372         * c-format.c (handle_format_attribute): Fix comment typo.
373
374 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
375
376         PR target/37846
377         * config/ia64/ia64.opt (mfused-madd): New.
378         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
379         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
380         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
381         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
382         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
383         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
384         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
385         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
386         instruction if !TARGET_FUSED_MADD.
387         (fpma, fpms): Remove colon from name.
388
389 2009-05-22  Richard Guenther  <rguenther@suse.de>
390
391         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
392         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
393         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
394         TARGET_MEM_REF.
395         (create_expression_by_pieces): Only convert if necessary.
396         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
397         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
398
399 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
400
401         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
402         regular pattern from a template and rename it ...
403         (*extzv_truncsi_exts): ... to this.
404
405 2009-05-21  Richard Guenther  <rguenther@suse.de>
406
407         * cgraph.h (struct cgraph_node): Remove inline_decl member.
408         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
409         (cgraph_default_inline_p): Likewise.
410         (cgraph_decide_inlining_incrementally): Likewise.
411
412 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
413             Uros Bizjak  <ubizjak@gmail.com>
414
415         * config/i386/cpuid.h (bit_MOVBE): New.
416
417         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
418
419         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
420         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
421         (ix86_handle_option): Handle OPT_mmovbe.
422         (ix86_target_string): Add -mmovbe.
423         (pta_flags): Add PTA_MOVBE.
424         (processor_alias_table): Add PTA_MOVBE to "atom".
425         (override_options): Handle PTA_MOVBE.
426
427         * config/i386/i386.h (TARGET_MOVBE): New.
428
429         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
430         (*bswapsi_movbe): New.
431         (*bswapdi_movbe): Likewise.
432         (bswapdi2): Renamed to ...
433         (*bswapdi_1): This.
434         (bswapdi2): New expander.
435
436         * config/i386/i386.opt (mmovbe): New.
437
438         * doc/invoke.texi: Document -mmovbe.
439
440 2009-05-21  Taras Glek  <tglek@mozilla.com>
441
442         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
443         * gcc-plugin.h (plugin_init): Updated signature.
444         * gcc-plugin.h (plugin_name_args): Moved to this header.
445         * doc/plugins.texi (plugin_init): Updated documention to reflect
446         API change.
447         * doc/plugins.texi (plugin_name_args): Added to documention.
448
449 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
450
451         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
452         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
453
454 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
455
456         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
457         JUMP_TABLE_DATA_P predicates where applicable.
458         * config/i386/predicates.md: Ditto.
459         * config/i386/sse.md: Ditto.
460
461 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
462
463         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
464         operand2 -128 override length_immediate attribute to 1.
465         * config/i386/predicates.md (constm128_operand): New predicate.
466
467         * config/i386/i386.c (memory_address_length): Handle %r12
468         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
469         also check REGNO.
470         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
471         mode look through optional ZERO_EXTEND and SUBREG.
472         * config/i386/i386.md (R12_REG): New define_constant.
473         (prefix_data16): For sse unit set also for MODE_TI insns.
474         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
475         insns set if operand 1 is ext_QIreg_operand.
476         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
477         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
478         immediate.
479         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
480         mode from MODE_DI to MODE_SI.
481         (movdi_1_rex64): Override modrm and length_immediate attributes
482         only for movabs (TYPE_IMOV, alternative 2).
483         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
484         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
485         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
486         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
487         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
488         prefix_rex attribute if DImode.
489         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
490         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
491         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
492         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
493         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
494         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
495         Likewise.  For TYPE_IMOV clear length_immediate attribute.
496         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
497         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
498         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
499         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
500         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
501         or one operand TYPE_ISHIFT.
502         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
503         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
504         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
505         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
506         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
507         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
508         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
509         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
510         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
511         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
512         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
513         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
514         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
515         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
516         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
517         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
518         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
519         set mode attribute, don't override length attribute.
520         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
521         to 1.
522         (return_internal_long): Set length attribute to 2 instead of 1.
523         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
524         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
525         prefix_rex attribute.
526         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
527         New predicates.
528         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
529
530 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
531
532         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
533
534 2009-05-20  Ian Lance Taylor  <iant@google.com>
535
536         * tree.c (build_tree_list_vec_stat): New function.
537         (ctor_to_vec): New function.
538         (build_nt_call_vec): New function.
539         (build_call_array): Change args to be a const pointer.
540         (build_call_vec): New function.
541         * tree.h (build_nt_call_vec): Declare.
542         (build_tree_list_vec_stat): Declare.
543         (build_tree_list_vec): Define.
544         (build_call_array): Update declaration.
545         (build_call_vec): Declare.
546         (ctor_to_vec): Declare.
547         * c-common.c (tree_vector_cache): New static variable.
548         (make_tree_vector): New function.
549         (release_tree_vector): New function.
550         (make_tree_vector_single): New function.
551         (make_tree_vector_copy): New function.
552         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
553         (make_tree_vector_single, make_tree_vector_copy): Declare.
554         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
555         (c_parser_expr_list): Don't manage cache here, instead call
556         make_tree_vector.
557         (c_parser_release_expr_list): Remove static function.
558         (c_parser_vec_to_tree_list): Remove static function.
559         (c_parser_attributes): Call build_tree_list_vec instead of
560         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
561         c_parser_release_expr_list.
562         (c_parser_postfix_expression_after_primary): Likewise.
563         (c_parser_objc_keywordexpr): Likewise.
564
565 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
566
567         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
568         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
569         TARGET_CONVERT_TO_TYPE.
570         * hooks.c (hook_tree_const_tree_null): Define.
571         * hooks.h (hook_tree_const_tree_null): Declare.
572         * target.h (struct gcc_target):  Add invalid_parameter_type,
573         invalid_return_type, promoted_type, and convert_to_type fields.
574         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
575         (TARGET_INVALID_RETURN_TYPE): Define.
576         (TARGET_PROMOTED_TYPE): Define.
577         (TARGET_CONVERT_TO_TYPE): Define.
578         (TARGET_INITIALIZER): Update for new fields.
579         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
580         (grokparms): Check targetm.invalid_parameter_type.
581         * c-typeck.c (default_conversion): Check targetm.promoted_type.
582         * c-convert.c (convert): Check targetm.convert_to_type.
583
584 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
585
586         * config/mips/mips.md (*extenddi_truncate<mode>,
587         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
588         defintions.
589         (*extendhi_truncateqi): New define_insn_and_sptit.
590
591 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
592
593         PR middle-end/40204
594         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
595         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
596
597 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
598
599         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
600         the operand of VIEW_CONVERT_EXPR.
601
602 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
603
604         * config/i386/driver-i386.c (host_detect_local_cpu): Check
605         extended family and model for Intel processors.  Support Intel
606         Atom.
607
608 2009-05-20  Olivier Hainque  <hainque@adacore.com>
609
610         * gstab.h (stab_code_type): Define, to be used instead of the
611         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
612         notice.
613         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
614         occurrences by stab_code_type.
615         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
616
617 2009-05-20  Martin Jambor  <mjambor@suse.cz>
618
619         * tree-flow.h (insert_edge_copies_seq): Undeclare.
620         (sra_insert_before): Likewise.
621         (sra_insert_after): Likewise.
622         (sra_init_cache): Likewise.
623         (sra_type_can_be_decomposed_p): Likewise.
624         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
625         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
626         (sra_insert_before): Likewise.
627         (sra_insert_after): Likewise.
628         (sra_init_cache): Likewise.
629         (insert_edge_copies_seq): Made static and moved upwards.
630
631         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
632         case.
633
634         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
635
636         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
637         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
638         simple copies.
639
640 2009-05-20  Richard Guenther  <rguenther@suse.de>
641
642         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
643         with mismatched comparison modes.
644
645 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
646
647         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
648         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
649         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
650         with shifts for Thumb2.
651         (orsi_notsi): New for orn.
652         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
653         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
654         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
655         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
656         Don't invert remainder for IOR.
657         
658 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
659
660         PR tree-optimization/40087
661         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
662         number_of_iterations_ne): Rename never_infinite argument.
663         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
664         number_of_iterations_le): Handle pointer-type ivs when
665         exit_must_be_taken is false.
666         (number_of_iterations_cond):  Do not always assume that
667         exit_must_be_taken if the control variable is a pointer.
668
669 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
670
671         * c-typeck.c (build_binary_op): Allow % on integal vectors.
672         * doc/extend.texi (Vector Extension): Document that % is allowed too.
673
674 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
675
676         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
677         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
678
679 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
680
681         PR c/40172
682         * c.opt (Wlogical-op): Disabled by default.
683         * c-opt (c_common_post_options): Do not enable Wlogical-op with
684         Wextra.
685         * doc/invoke.texi (Wlogical-op): Likewise.
686         
687 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
688
689         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
690         into CASE_CONVERT.
691         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
692         Propagate the type of the first operand.
693         <ASSERT_EXPR>: Simplify.
694         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
695         Rewrite using the RHS code as discriminant.
696         <NOP_EXPR>: Turn into CASE_CONVERT.
697         <PLUS_EXPR>: Propagate the type of the first operand.
698
699 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
700
701         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
702         (ia64_dconst_0_375): New.
703         * config/ia64/ia64.c (ia64_override_options): Remove
704         -minline-sqrt-min-latency warning.
705         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
706         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
707         * config/ia64/ia64.md (*sqrt_approx): Remove.
708         (sqrtsf2): Remove #if 0.
709         (sqrtsf2_internal_thr): Rewrite and move to div.md.
710         (sqrtdf): Remove assert.
711         (sqrtdf2_internal_thr): Rewrite and move to div.md.
712         (sqrtxf2): Remove #if 0.
713         (sqrtxf2_internal_thr): Rewrite and move to div.md.
714         * div.md (sqrt_approx_rf): New.
715         (sqrtsf2_internal_thr): New implementation.
716         (sqrtsf2_internal_lat): New.
717         (sqrtdf2_internal_thr: New implementation.
718         (sqrtxf2_internal): New implementation.
719
720 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
721             Hans-Peter Nilsson  <hp@axis.com>
722
723         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
724         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
725         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
726         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
727         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
728         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
729         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
730         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
731         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
732         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
733         * c-common.c: ...from here.
734
735 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
736
737         * c-common.c (warn_logical_operator): Remove unnecessary
738         conditionals.
739
740 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
741
742         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
743
744 2009-05-19  Ben Elliston  <bje@au.ibm.com>
745
746         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
747         assignments with memcpy calls.
748         (add_fdes): Likewise.
749         (binary_search_unencoded_fdes): Likewise.
750         (linear_search_fdes): Eliminate type puns.
751         
752 2009-05-19  Richard Guenther  <rguenther@suse.de>
753
754         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
755         not falsely claim to have propagated into all uses.
756
757 2009-05-19  Ben Elliston  <bje@au.ibm.com>
758
759         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
760         version to v3.0.
761
762 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
763
764         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
765         * config/sh/sh.c (sh_legitimate_address_p): Make static.
766         (TARGET_LEGITIMATE_ADDRESS_P): New.
767         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
768         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
769         
770 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
771
772         PR debug/40109
773         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
774         child of the containing namespace's DIE.
775
776 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
777
778         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
779         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
780         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
781         extend patterns.
782
783 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
784
785         PR target/39942
786         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
787         gen_align with gen_pad.
788         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
789         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
790
791         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
792         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
793
794         * config/i386/i386.md (align): Renamed to ...
795         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
796         ASM_OUTPUT_MAX_SKIP_PAD.
797
798 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
799
800         * config.gcc: Fix variable syntax.
801
802         PR target/39531
803         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
804         before calling exact_log2.
805         (output_iorsi3): Likewise.
806         (output_xorsi3): Likewise.
807
808 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
809
810         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
811         for the none zero constant operand except for EQ and NE
812         comprisons even when the first operand is R0.
813
814 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
815
816         * config/s390/2064.md: Remove trailing whitespaces.
817         * config/s390/2084.md: Likewise.
818         * config/s390/constraints.md: Likewise.
819         * config/s390/fixdfdi.h: Likewise.
820         * config/s390/libgcc-glibc.ver: Likewise.
821         * config/s390/s390-modes.def: Likewise.
822         * config/s390/s390-protos.h: Likewise.
823         * config/s390/s390.c: Likewise.
824         * config/s390/s390.h: Likewise.
825         * config/s390/s390.md: Likewise.
826         * config/s390/tpf-unwind.h: Likewise.
827
828 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
829
830         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
831
832 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
833
834         M68K TLS support.
835         * configure.ac (m68k-*-*): Check if binutils support TLS.
836         * configure: Regenerate.
837         * config/m68k/predicates.md (symbolic_operand): Extend comment.
838         * config/m68k/constraints.md (Cu): New constraint.
839         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
840         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
841         (movsi): Handle TLS symbols.
842         (addsi3_5200): Handle XTLS symbols, indent.
843         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
844         (m68k_tls_reference_p): Declare.
845         (m68k_legitimize_address): Declare.
846         (m68k_unwrap_symbol): Declare.
847         * config/m68k/m68k.opt (mxtls): New option.
848         * config/m68k/m68k.c (ggc.h): Include.
849         (m68k_output_dwarf_dtprel): Implement hook.
850         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
851         (m68k_expand_prologue): Load GOT pointer when function needs it.
852         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
853         (m68k_legitimate_constant_address_p): Same.
854         (m68k_decompose_address): Handle TLS references.
855         (m68k_get_gp): New static function.
856         (enum m68k_reloc): New contants.
857         (TLS_RELOC_P): New macro.
858         (m68k_wrap_symbol): New static function.
859         (m68k_unwrap_symbol): New function.
860         (m68k_final_prescan_insn_1): New static function.
861         (m68k_final_prescan_insn): New function.
862         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
863         functions.
864         (legitimize_pic_address): Handle TLS references..
865         (m68k_tls_get_addr, m68k_get_tls_get_addr)
866         (m68k_libcall_value_in_a0_p)
867         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
868         (m68k_call_m68k_read_tp): Helper variables and functions for ...
869         (m68k_legitimize_tls_address): Handle TLS references.
870         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
871         New functions.
872         (m68k_legitimize_address): Handle TLS symbols.
873         (m68k_get_reloc_decoration): New static function.
874         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
875         UNSPEC_RELOC32.
876         (m68k_output_dwarf_dtprel): Implement hook.
877         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
878         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
879         m68k_call_* routines.
880         (sched_attr_op_type): Handle TLS symbols.
881         (gt-m68k.h): Include.
882         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
883         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
884
885 2009-05-18  Martin Jambor  <mjambor@suse.cz>
886
887         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
888         (visit_store_addr_for_mod_analysis): New function.
889         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
890         (determine_cst_member_ptr): Use gimple_assign_single_p.
891         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
892         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
893         operands.  Don't check number of operands of a NOP_EXPR.
894
895 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
896
897         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
898
899 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
900
901         PR c/40172
902         * c-common.c (warn_logical_operator): Don't warn if one of
903         expression isn't always true or false.
904
905 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
906
907         * config/i386/biarch32.h: New file.
908         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
909
910 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
911
912         * config/mips/mips.md (*zero_extend<mode>_trunchi,
913         *zero_extend<mode>_truncqi): Merge these into ...
914         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
915         Name the pattern following this as *zero_extendhi_truncqi.
916
917 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
918
919         PR middle-end/39301
920         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
921         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
922         (output_info): Make field HOST_WIDEST_INT.
923         (print_statistics): Use HOST_WIDEST_INT_PRINT.
924         (dump_bitmat_statistics): Same.
925
926 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
927
928         * config.gcc (use_gcc_stdint):  Set to wrap.
929         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
930         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
931         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
932         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
933         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
934         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
935         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
936         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
937
938 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
939
940         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
941         tune_64.
942         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
943         Move definitions earlier.
944         (OPT_ARCH64, OPT_ARCH32): Define.
945         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
946         and tune_64.
947
948 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
949
950         PR target/40153
951         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
952         implies.
953
954 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
955
956         * arm.md (movdi2): Copy non-reg values to DImode registers.
957
958 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
959
960         PR target/39942
961         * final.c (label_to_max_skip): New function.
962         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
963         CODE_LABEL_NUMBER <= max_labelno.
964         * output.h (label_to_max_skip): New prototype.
965         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
966         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
967         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
968         Handle CODE_LABELs with >= 16 byte alignment or with
969         max_skip == (1 << align) - 1.
970         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
971         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
972
973         PR target/39942
974         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
975         .p2align 3 if MAX_SKIP is smaller than 7.
976         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
977
978 2009-05-15  Ian Lance Taylor  <iant@google.com>
979
980         * alias.c (struct alias_set_entry_d): Rename from struct
981         alias_set_entry.  Change all uses.
982         * except.c (struct call_site_record_d): Rename from struct
983         call_site_record.  Change all uses.
984         * except.h (struct eh_region_d): Rename from struct eh_region.
985         Change all uses.
986         * gcse.c (struct hash_table_d): Rename from struct hash_table.
987         Change all uses.
988         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
989         ivtype_map_elt.  Change all uses.
990         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
991         Change all uses.
992         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
993         * graphite.h (struct name_tree_d): Rename from struct name_tree.
994         Change all uses.
995         (struct sese_d): Rename from struct sese.  Change all uses.
996         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
997         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
998         * optabs.h (struct optab_d): Rename from struct optab.  Change all
999         uses.
1000         (struct convert_optab_d): Rename from struct convert_optab.
1001         Change all uses.
1002         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
1003         ipa_opt_pass.  Change all uses.
1004         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
1005         all uses.
1006
1007         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
1008         defined as a typedef.
1009         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
1010         defined as a tag.
1011
1012 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1013
1014         PR 16302
1015         * fold-const.c (make_range,build_range_check,merge_ranges): Move
1016         declaration to...
1017         (merge_ranges): Returns bool. 
1018         * tree.h (make_range): .. to here.
1019         (build_range_check): Likewise.
1020         (merge_ranges): Likewise. Renamed from merge_ranges.
1021         * c-typeck.c (parser_build_binary_op): Update calls to
1022         warn_logical_operator.
1023         * c-common.c (warn_logical_operator): Add new warning.
1024         * c-common.h (warn_logical_operator): Update declaration.
1025         
1026 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1027
1028         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
1029         
1030 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1031
1032         * doc/install.texi: Document MPC requirements, flags etc.
1033
1034         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
1035         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
1036         Evaluate constant arguments.
1037         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
1038         (fold_builtin_1): Likewise, also evaluate constant arguments.
1039         Remove superfluous break.
1040         (do_mpc_ckconv): New.
1041         * real.h: Include mpc.h.
1042         * toplev.c (print_version): Output MPC version info if available.
1043
1044 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
1045
1046         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
1047
1048 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
1049
1050         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
1051         only once.
1052
1053 2009-05-15  Jan Hubicka  <jh@suse.cz>
1054
1055         * doc/invoke.texi (max-early-inliner-iterations): New flag.
1056         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
1057         (try_inline): Fix return value.
1058         (cgraph_decide_inlining_incrementally): Honor new value.
1059         (cgraph_early_inlining): Handle indirect inlining.
1060         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
1061
1062 2009-05-15  Jan Hubicka  <jh@suse.cz>
1063
1064         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
1065         * cgraphunit.c (cgraph_finalize_function): Set it.
1066         (cgraph_expand_function): Use it.
1067
1068 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
1069
1070         * real.c (encode_ieee_half): Define.
1071         (decode_ieee_half): Define.
1072         (ieee_half_format): Define.
1073         (arm_half_format): Define.
1074         * real.h (ieee_half_format): Declare.
1075         (arm_half_format): Declare.
1076
1077 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
1078
1079         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
1080         swapped, and reversed optabs exist before trying to use them.
1081
1082 2009-05-15  Paul Brook  <paul@codesourcery.com>
1083             Sandra Loosemore  <sandra@codesourcery.com>
1084
1085         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
1086         loads.  Allow PRE_DEC.
1087         (output_move_neon): Handle PRE_DEC.
1088         (arm_print_operand): Add 'A' for neon structure loads.
1089         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
1090         * config/arm/neon.md (neon_mov): Update comment.
1091         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
1092         calls.
1093         (Um): New constraint.
1094
1095 2009-05-15  Jan Hubicka  <jh@suse.cz>
1096
1097         Revert the following patch until testsuite fallout is fixed:
1098         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1099         * cgraph.h (struct inline_summary): New filed self_wize,
1100         size_inlining_benefit, self_time and time_inlining_benefit.
1101         (struct cgraph_global_info): Replace insns by time ans size fields.
1102         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1103         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1104         (ipcp_update_callgraph): Do not touch function bodies.
1105         * ipa-inline.c: Include except.h
1106         (MAX_TIME): New constant.
1107         (overall_insns): Remove
1108         (overall_size, max_benefit): New static variables.
1109         (cgraph_estimate_time_after_inlining): New function.
1110         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1111         (cgraph_clone_inlined_nodes): Update size.
1112         (cgraph_mark_inline_edge): Update size.
1113         (cgraph_estimate_growth): Use size info.
1114         (cgraph_check_inline_limits): Check size.
1115         (cgraph_default_inline_p): Likewise.
1116         (cgraph_edge_badness): Compute badness based on benefit and size cost.
1117         (cgraph_decide_recursive_inlining): Check size.
1118         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
1119         times.
1120         (cgraph_decide_inlining): Likewise.
1121         (cgraph_decide_inlining_incrementally): Likewise; honor
1122         PARAM_EARLY_INLINING_INSNS.
1123         (likely_eliminated_by_inlining_p): New predicate.
1124         (estimate_function_body_sizes): New function.
1125         (compute_inline_parameters): Use it.
1126         * except.c (must_not_throw_labels): New function.
1127         * except.h (must_not_throw_labels): Declare.
1128         * tree-inline.c (init_inline_once): Kill inlining_weigths
1129         * tree-ssa-structalias.c: Avoid uninitialized warning.
1130         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1131         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1132         (PARAM_INLINE_CALL_COST): Remove.
1133         (PARAM_EARLY_INLINING_INSNS): New.
1134
1135 2009-05-15  Richard Guenther  <rguenther@suse.de>
1136
1137         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
1138         not TODO_update_ssa.
1139
1140 2009-05-15  Richard Guenther  <rguenther@suse.de>
1141
1142         PR tree-optimization/39999
1143         * gimple.h (gimple_expr_type): Use the expression type looking
1144         through useless conversions.
1145         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
1146         (vn_nary_op_insert_stmt): Likewise.
1147         (simplify_binary_expression): Likewise.
1148
1149 2009-05-15  Richard Guenther  <rguenther@suse.de>
1150
1151         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
1152         New options, enabled by default.
1153         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
1154         Document.
1155         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
1156         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
1157         * tree-ssa-structalias.c (gate_tree_pta): New function.
1158         (pass_build_alias): Use it.
1159
1160 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
1161
1162         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
1163         recurse on an invariant address if a conversion from a pointer
1164         type to a wider integer type is involved.
1165
1166 2009-05-15  Jan Hubicka  <jh@suse.cz>
1167
1168         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1169         * cgraph.h (struct inline_summary): New filed self_wize,
1170         size_inlining_benefit, self_time and time_inlining_benefit.
1171         (struct cgraph_global_info): Replace insns by time ans size fields.
1172         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1173         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1174         (ipcp_update_callgraph): Do not touch function bodies.
1175         * ipa-inline.c: Include except.h
1176         (MAX_TIME): New constant.
1177         (overall_insns): Remove
1178         (overall_size, max_benefit): New static variables.
1179         (cgraph_estimate_time_after_inlining): New function.
1180         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1181         (cgraph_clone_inlined_nodes): Update size.
1182         (cgraph_mark_inline_edge): Update size.
1183         (cgraph_estimate_growth): Use size info.
1184         (cgraph_check_inline_limits): Check size.
1185         (cgraph_default_inline_p): Likewise.
1186         (cgraph_edge_badness): Compute badness based on benefit and size cost.
1187         (cgraph_decide_recursive_inlining): Check size.
1188         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
1189         times.
1190         (cgraph_decide_inlining): Likewise.
1191         (cgraph_decide_inlining_incrementally): Likewise; honor
1192         PARAM_EARLY_INLINING_INSNS.
1193         (likely_eliminated_by_inlining_p): New predicate.
1194         (estimate_function_body_sizes): New function.
1195         (compute_inline_parameters): Use it.
1196         * except.c (must_not_throw_labels): New function.
1197         * except.h (must_not_throw_labels): Declare.
1198         * tree-inline.c (init_inline_once): Kill inlining_weigths
1199         * tree-ssa-structalias.c: Avoid uninitialized warning.
1200         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1201         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1202         (PARAM_INLINE_CALL_COST): Remove.
1203         (PARAM_EARLY_INLINING_INSNS): New.
1204         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
1205         (inline-call-cost): Remove.
1206         (early-inlining-insns): New.
1207
1208 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
1209
1210         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
1211         for bounds.
1212         (print_int_cst_bounds_in_octal_p): Likewise.
1213         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
1214         with subtypes.
1215         * dwarf2out.c (base_type_die): Likewise.
1216         (is_subrange_type): Delete.
1217         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
1218         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
1219         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if
1220         the destination type is boolean.
1221         (build_range_check): Do not special-case subtypes.
1222         (fold_sign_changed_comparison): Likewise.
1223         (fold_unary): Likewise.
1224         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
1225         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
1226         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
1227         * tree.c (subrange_type_for_debug_p): New predicate based on the former
1228         is_subrange_type.
1229         * tree.h (subrange_type_for_debug_p): Declare.
1230         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
1231         (convert_affine_scev): Remove call to above function.
1232         (chrec_convert_aggressive): Likewise.
1233         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
1234         false for conversions involving subtypes.
1235         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
1236         (vrp_val_min): Likewise.
1237         (needs_overflow_infinity): Likewise.
1238         (extract_range_from_unary_expr): Likewise.
1239
1240 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
1241
1242         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
1243         * config/frv/frv.c: Likewise.
1244         * config/s390/s390.c: Likewise.
1245         * config/sparc/sparc.h: Likewise.
1246         * config/i386/i386.h: Likewise.
1247         * config/i386/i386.c: Likewise.
1248         * config/crx/crx.c: Likewise.
1249         * config/m68hc11/m68hc11.h: Likewise.
1250         * config/iq2000/iq2000.c: Likewise.
1251         * config/mn10300/mn10300.h: Likewise.
1252         * config/mn10300/mn10300.c: Likewise.
1253         * config/m68k/m68k.c: Likewise.
1254         * config/rs6000/rs6000.c: Likewise.
1255         * config/rs6000/xcoff.h: Likewise.
1256         * config/rs6000/linux64.h: Likewise.
1257         * config/rs6000/sysv4.h: Likewise.
1258         * config/score/score3.c: Likewise.
1259         * config/score/score7.c: Likewise.
1260         * config/score/score.c: Likewise.
1261         * config/arm/arm.md: Likewise.
1262         * config/mips/mips.c: Likewise.
1263         * config/mips/mips.md: Likewise.
1264         * config/bfin/bfin.h: Likewise.
1265         * config/pa/pa.c: Likewise.
1266         * config/pa/constraints.md: Likewise.
1267
1268         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
1269         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
1270         * config/pdp11/pdp11.h: Use memory_address_p instead.
1271
1272 2009-05-14  Ian Lance Taylor  <iant@google.com>
1273
1274         * passes.c (finish_optimization_passes): Change i to int.
1275         * plugin.c (plugins_active_p): Change event to int.
1276         (dump_active_plugins): Likewise.
1277         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
1278         Add cast.
1279         * tree.c (tree_range_check_failed): Change c to unsigned int.
1280         (omp_clause_range_check_failed): Likewise.
1281         (build_common_builtin_nodes): Change mode to int.  Add cast.
1282         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
1283         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
1284
1285         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
1286         ++ or -- with a variable of enum type.
1287
1288 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
1289
1290         PR driver/40144
1291         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
1292
1293 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
1294
1295         * store-motion.c: Do not include params.h
1296         * Makefile.in: Fix dependencies for various files.
1297
1298 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
1299
1300         * auto-inc-dec.c: Fix pass description, remove apparent
1301         accidental duplication.
1302
1303 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
1304
1305         PR middle-end/40147
1306         * ipa-utils.h (memory_identifier_string): Moved to ...
1307         * tree.h (memory_identifier_string): Here.  Add GTY(()).
1308
1309 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
1310
1311         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
1312         in the former documentation of...
1313         (GO_IF_LEGITIMATE_ADDRESS): ... this.
1314         * ira-conflicts.c (get_dup_num): Use address_operand.
1315         * targhooks.c (default_legitimate_address_p): New.
1316         * targhooks.h (default_legitimate_address_p): New.
1317         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
1318         Call hook.
1319         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
1320         * target.h (struct target): Add legitimate_address_p.
1321         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
1322         (TARGET_INITIALIZER): Include it.
1323
1324         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1325         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
1326         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
1327         (TARGET_LEGITIMATE_ADDRESS_P): New.
1328
1329         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1330         (REG_OK_STRICT_P): Delete.
1331         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
1332         (frv_legitimate_address_p_1): ... this.
1333         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
1334         (frv_legitimate_address_p_1): ... the renamed old
1335         frv_legitimate_address_p.
1336         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
1337         (TARGET_LEGITIMATE_ADDRESS_P): New.
1338
1339         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1340         * config/s390/s390-protos.h (legitimate_address_p): Remove.
1341         * config/s390/s390.c (legitimate_address_p): Rename to...
1342         (s390_legitimate_address_p): ... this, make static.
1343         (legitimize_address): Adjust call.
1344         (TARGET_LEGITIMATE_ADDRESS_P): New.
1345         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
1346
1347         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1348         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
1349         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
1350         (TARGET_LEGITIMATE_ADDRESS_P): New.
1351
1352         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1353         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
1354         * config/spu/spu.c (spu_legitimate_address): Rename to...
1355         (spu_legitimate_address_p): ... this, make static.
1356         (TARGET_LEGITIMATE_ADDRESS_P): New.
1357
1358         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1359         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
1360         * config/sparc/sparc.c (legitimate_address_p): Rename to...
1361         (sparc_legitimate_address_p): ... this, make static and return bool.
1362         (legitimize_address): Adjust call.
1363         (TARGET_LEGITIMATE_ADDRESS_P): New.
1364
1365         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1366         * config/i386/i386-protos.h (legitimate_address_p): Remove.
1367         * config/i386/i386.c (legitimate_address_p): Rename to...
1368         (ix86_legitimate_address_p): ... this, make static.
1369         (constant_address_p): Move after it, adjust call.
1370         (TARGET_LEGITIMATE_ADDRESS_P): New.
1371
1372         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1373         * config/avr/avr-protos.h (legitimate_address_p): Remove.
1374         * config/avr/avr.c (legitimate_address_p): Rename to...
1375         (avr_legitimate_address_p): ... this, make static.
1376         (legitimize_address): Adjust call.
1377         (TARGET_LEGITIMATE_ADDRESS_P): New.
1378
1379         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1380         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
1381         * config/crx/crx.c (crx_legitimate_address_p): Make static.
1382         (TARGET_LEGITIMATE_ADDRESS_P): New.
1383
1384         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1385         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
1386         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
1387         (TARGET_LEGITIMATE_ADDRESS_P): New.
1388
1389         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1390         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
1391         Remove.
1392         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
1393         Make static.
1394         (TARGET_LEGITIMATE_ADDRESS_P): New.
1395
1396         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1397         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
1398         Remove.
1399         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
1400         Rename to...
1401         (m68hc11_legitimate_address_p): ... this, make static.
1402         (go_if_legitimate_address_internal): Rename to...
1403         (m68hc11_legitimate_address_p_1): ... this.
1404         (legitimize_address): Adjust call.
1405         (TARGET_LEGITIMATE_ADDRESS_P): New.
1406
1407         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1408         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
1409         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
1410         (TARGET_LEGITIMATE_ADDRESS_P): New.
1411
1412         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1413         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
1414         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
1415         (mn10300_legitimate_address_p): ... this, make static.
1416         (TARGET_LEGITIMATE_ADDRESS_P): New.
1417
1418         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1419         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
1420         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
1421         (TARGET_LEGITIMATE_ADDRESS_P): New.
1422
1423         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1424         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
1425         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
1426         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1427         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
1428         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
1429         (rs6000_legitimate_address_p): ... this, make static.
1430         (TARGET_LEGITIMATE_ADDRESS_P): New.
1431         (REG_MODE_OK_FOR_BASE_P): Delete.
1432         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
1433
1434         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1435         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
1436         Delete.
1437         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
1438         static, adjust types.
1439         (TARGET_LEGITIMATE_ADDRESS_P): New.
1440
1441         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1442         * config/score/score.c (score_address_p): Rename to...
1443         (score_legitimate_address_p): ... this.
1444         (TARGET_LEGITIMATE_ADDRESS_P): New.
1445         * config/score/score3.c (score3_address_p): Rename to...
1446         (score3_legitimate_address_p): ... this.
1447         * config/score/score7.c (score7_address_p): Rename to...
1448         (score7_legitimate_address_p): ... this.
1449
1450         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
1451         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
1452         GO_IF_LEGITIMATE_ADDRESS): Delete.
1453         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
1454         thumb2_legitimate_address_p): Delete.
1455         (arm_legitimate_address_p): Rename to...
1456         (arm_legitimate_address_outer_p): ... this.
1457         * config/arm/constraints.md ("Uq"): Adjust call.
1458         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
1459         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one to...
1460         (arm_legitimate_address_outer_p): ... this.
1461         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make static.
1462         (TARGET_LEGITIMATE_ADDRESS_P): New.
1463
1464         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1465         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
1466         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
1467         (TARGET_LEGITIMATE_ADDRESS_P): New.
1468
1469         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1470         * config/vax/vax-protos.h (legitimate_address_p): Remove.
1471         * config/vax/vax.c (legitimate_address_p): Rename to...
1472         (vax_legitimate_address_p): ... this, make static.
1473         (TARGET_LEGITIMATE_ADDRESS_P): New.
1474
1475         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1476         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
1477         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
1478         (TARGET_LEGITIMATE_ADDRESS_P): New.
1479
1480         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1481         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
1482         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
1483         (mmix_legitimate_address_p): ... this, make static.
1484         (TARGET_LEGITIMATE_ADDRESS_P): New.
1485
1486         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1487         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
1488         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
1489         (TARGET_LEGITIMATE_ADDRESS_P): New.
1490
1491 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
1492
1493         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
1494         of MODE_COMPLEX_INT.
1495
1496 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1497
1498         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
1499         LCT_NORMAL in function call.
1500         * mips-tdump.c (print_file_desc): Add cast to enum type.
1501         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
1502         (mark_stabs): Add casts to enum types.
1503         (parse_stabs_common): Add casts to enum types.
1504
1505 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
1506
1507         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
1508         Check for invalid values of LETTER.
1509
1510 2009-05-13  Taras Glek  <tglek@mozilla.com>
1511
1512         * attribs.c (register_attribute): moved out attribute registration into
1513         register_attribute.
1514         * doc/plugins.texi: Documented register_attribute and PLUGIN_ATTRIBUTES.
1515         * gcc-plugin.h: Added forward decl for register_attribute.
1516         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
1517         * plugin.c (register_callback, invoke_plugin_callbacks): Added
1518         PLUGIN_ATTRIBUTES boilerplate.
1519
1520 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
1521
1522         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
1523         values even in sentinel and empty entries.
1524         (ms_printf_flag_specs):  Likewise.
1525         (ms_scanf_flag_specs):  Likewise.
1526         (ms_strftime_flag_specs):  Likewise.
1527         (ms_print_char_table):  Likewise.
1528         (ms_scan_char_table):  Likewise.
1529         (ms_time_char_table):  Likewise.
1530
1531 2009-05-13  Doug Kwan  <dougkwan@google.com>
1532
1533         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
1534
1535 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
1536
1537         * config/mips/mips.md (store): Add attributes for QI and HI.
1538         Update comment.
1539         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
1540         (truncdi<mode>2): ... this new pattern.
1541
1542 2009-05-13  Brad Hards  <bradh@kde.org>
1543
1544         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
1545
1546 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
1547             Ben Elliston <bje@au.ibm.com>
1548
1549         PR middle-end/40035
1550         * dse.c (check_mem_read_rtx): Guard against width == -1.
1551
1552 2009-05-13  Michael Matz  <matz@suse.de>
1553
1554         PR middle-end/39976
1555         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
1556         (trivially_conflicts_p): New function.
1557         (insert_backedge_copies): Use it.
1558
1559 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
1560
1561         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
1562         (handle_stdc_pragma): Use new enum constant names.
1563         (handle_pragma_float_const_decimal64): Ditto.
1564
1565 2009-05-13  Ian Lance Taylor  <iant@google.com>
1566
1567         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
1568         tree.def.
1569
1570 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
1571
1572         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
1573         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
1574         multilibs.
1575         * config/m68k/m68k.h (FL_UCLINUX): Define.
1576
1577 2009-05-13  Jan Hubicka  <jh@suse.cz>
1578
1579         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
1580
1581 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
1582
1583         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
1584         unless -fschedule-insns is specified.
1585
1586 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
1587
1588         PR target/39561
1589         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
1590         TARGET_EXPAND_CBRANCHDI4.
1591         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
1592         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
1593         (cmpeqdi): Fix comment.
1594
1595 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
1596
1597         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
1598         (sh_legitimate_address_p): Likewise.
1599         * config/sh/sh.c (sh_legitimate_index_p): New.
1600         (sh_legitimate_address_p): Likewise.
1601         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
1602         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
1603         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
1604         (MAYBE_BASE_REGISTER_RTX_P): New macro.
1605         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
1606         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
1607         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
1608         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
1609         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
1610
1611 2009-05-12  Jan Hubicka  <jh@suse.cz>
1612
1613         * tree-inline.c (estimate_operator_cost): Add operands;
1614         when division happens by constant, it is cheap.
1615         (estimate_num_insns): Loads and stores are not having cost of 0;
1616         EH magic stuff is cheap; when computing runtime cost of switch,
1617         use log2 base of amount of its cases; builtin_expect has cost of 0;
1618         compute cost for moving return value of call.
1619         (init_inline_once): Initialize time_based flags.
1620         * tree-inline.h (eni_weights_d): Add time_based flag.
1621
1622 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
1623
1624         * df-core.c: Update head documentation.
1625
1626 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
1627
1628         PR bootstrap/40118
1629         * rs6000.c (rs6000_generate_compare): Use op1b instead of
1630         shadowing exisiting variable op1.
1631
1632 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
1633
1634         PR target/37179
1635         * config/i386/driver-i386.c (processor_signatures): New enum.
1636         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
1637         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
1638         processor signature to detect geode processor.
1639
1640 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
1641
1642         Revert:
1643
1644         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
1645
1646         * optabs.c (prepare_cmp_insn): Temporarily disable test that
1647         causes spurious differences between trunk and cond-optab branch.
1648
1649 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
1650
1651         * dojump.c (compare_from_rtx): Delete.
1652         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
1653         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
1654         if the comparison does not satisfy the predicate; test predicates for
1655         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
1656         further if one existing pattern fails.
1657         * expr.h (compare_from_rtx): Delete.
1658         (prepare_operand): Declare it.
1659         * optabs.c: Change "lib call" to "libcall" throughout.
1660         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
1661         HAVE_conditional_trap, emit_cmp_insn): Delete.
1662         (can_compare_p): Delete cmp_optab case.
1663         (prepare_float_lib_cmp): Return an rtx and a machine mode.
1664         Accept other parameters by value.
1665         (prepare_operand): Make non-static.
1666         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
1667         other parameters by value.  Try to widen operands here based on
1668         an optab_methods argument and looking at cbranch_optab.
1669         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
1670         loop.  Use cbranch_optab directly.
1671         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
1672         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
1673         assertion.
1674         (emit_conditional_move, emit_conditional_add): Inline what's needed
1675         of compare_from_rtx, using new prepare_cmp_insn for the rest.
1676         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
1677         with COMPARE.  Move cmov_optab and cstore_optab above
1678         with cbranch_optab, move cmp_optab down with ucmp_optab,
1679         remove tst_otpab.  Do not initialize trap_rtx.
1680         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
1681         for trap code.  Do not check HAVE_conditional_trap.  Use
1682         prepare_cmp_insn.  Accept no predicate for operand 3.
1683         * optabs.h (OTI_cmp): Mark as used only for libcalls.
1684         (OTI_ctrap, ctrap_optab): New.
1685         (tst_optab): Delete.
1686         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
1687         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
1688         with lookup of ctrap_optab.
1689         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn,
1690         setcc_gen_code): Delete.
1691         (ctrap_optab): New.
1692
1693         * combine.c (combine_simplify_rtx, simplify_set): Do not
1694         special case comparing against zero for cc0 machines.
1695         * simplify-rtx.c (simplify_binary_operation_1): Never remove
1696         COMPARE on cc0 machines.
1697         (simplify_relational_operation): Return a new expression when
1698         a COMPARE could be removed.
1699         * final.c (final_scan_insn): Compare cc_status values
1700         against LHS of a (compare FOO (const_int 0)) cc0 source.
1701         Also check if cc_status.value is the full compare.
1702
1703         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
1704         (cstoreMM4): Document.
1705         (conditional_trap): Document ctrapMM4 instead.
1706         (sync_compare_and_swapMM): Refer to cbranchcc4.
1707         (Dependent Patterns): Eliminate obsolete information referring to
1708         the old jump optimization phase.
1709         (Canonicalization): Include cbranchcc4 case, omit canonicalization
1710         of compares with 0 on cc0 machines.
1711         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
1712         avoiding references to cc0.  Remove text about storing operands
1713         in cmpMM.
1714         * doc/tm.texi (Condition Codes): Include blurb on different
1715         condition code representations, separate into subsections for
1716         CC0, MODE_CC and conditional execution.
1717
1718         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
1719         alpha_emit_setcc): Accept operands and a machine mode.
1720         * config/alpha/alpha.c (alpha_emit_conditional_branch):
1721         Get code/op0/op1 from operands, use machine mode argument
1722         instead of alpha_compare.fp_p.  Emit the branch here.
1723         (alpha_emit_setcc): Likewise, and return boolean.
1724         (alpha_emit_conditional_move): Likewise.  Assert that
1725         cmp_op_mode == cmp_mode, and simplify accordingly.
1726         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
1727         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
1728         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
1729         Delete.
1730         (stack probe test): Use cbranchdi4.
1731         * config/alpha/predicates.md (alpha_cbranch_operator): New.
1732
1733         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
1734         * config/arc/arc.h (movsicc, movsfcc): Use it.
1735         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
1736         (cbranchsi4, cstoresi4): New.
1737         (cmpsi, bCC and sCC expanders): Remove. 
1738
1739         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
1740         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
1741         * config/arm/predicates.md (arm_comparison_operator): Only include
1742         floating-point operators if there is a hardware floating-point unit.
1743         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
1744         deferring to cbranch_cc and cstore_cc respectively.
1745         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
1746         cbranch_cc, cstore_cc): New.
1747         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
1748         arm_compare_op1.
1749         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
1750
1751         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
1752         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
1753         as an argument.
1754         (adjust_insn_length): Adjust calls.
1755         (avr_reorg): Handle (compare (foo) (const_int 0)).
1756         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
1757         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
1758         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
1759         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
1760         (bCC): Remove.
1761         (cbranchqi4, cbranchhi4, cbranchsi4): New.
1762         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
1763
1764         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
1765         (cbranchsi4, cstorebi4, cstoresi4): New.
1766         (movbisi): This insn is duplicate, split it to zero_extend.
1767         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
1768         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
1769         (bfin_optimize_loop): Use cbranch expander.
1770         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
1771         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
1772         (bfin_bimode_comparison_operator): ... this.
1773         (bfin_direct_comparison_operator): New.
1774  
1775         * config/cris/cris.c (cris_normal_notice_update_cc): Look
1776         inside (compare FOO (const_int 0)).
1777         (cris_rtx_costs): Handle ZERO_EXTRACT.
1778         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
1779         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
1780         (*tstdi_v32): Delete.
1781         (*cmpdi_non_v32): Add M alternative for operand 1.
1782         (cmpsi, cmp<mode>): Make private.
1783         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
1784         with COMPARE.
1785         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
1786
1787         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
1788         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
1789         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
1790         (cc_reg_operand): New.
1791         (any_cond): Delete.
1792         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
1793         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
1794         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
1795         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
1796         crx_expand_scond): Delete.
1797
1798         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
1799         (cbranchsi4): New.
1800         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
1801         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
1802
1803         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
1804         cstoresi4, cstoresf4, cstoredf4): New.
1805         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
1806         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
1807         Receive the entire operands array.
1808         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
1809         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
1810         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
1811         Get test/op0/op1 from the operands array.
1812         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
1813
1814         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
1815         (h8300_expand_store): New.
1816         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
1817         (const_int 0)).
1818         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
1819         (h8300_expand_store): New.
1820         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
1821         or do not try to produce (set (cc0) REG).
1822         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
1823         change a compare into a move to a scratch register.  Disable some
1824         peepholes when comparing with zero.
1825         (tstsi, tsthi, tstsi, cmpqi): Make private.
1826         (cmphi): Delete.
1827         (bCC, sCC): Delete.
1828         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
1829         cstoresi4): New.
1830
1831         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
1832         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
1833         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
1834         (ix86_emit_i387_log1p): Use cbranchxf2.
1835         (ix86_expand_setcc): Return void.
1836         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
1837         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
1838         cmp<MODEF>, cmpcc): Remove.
1839         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
1840         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
1841         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
1842         (sCC and bCC expanders): Remove.
1843         (stack_protect_test): Use cbranchcc4.
1844
1845         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
1846         Delete.
1847         (ia64_expand_compare): Accept three rtx by reference and return void.
1848         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
1849         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
1850         from *expr.  Update *expr with the BImode comparison to do.
1851         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
1852         cmptf, bCC, sCC, conditional_trap): Delete.
1853         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
1854         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
1855         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
1856         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
1857         * config/ia64/predicates.md (ia64_cbranch_operator): New.
1858
1859         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
1860         type of last argument.
1861         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
1862         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
1863         use machine mode argument instead of branch_type.  Remove dead
1864         code for floating-point comparisons.
1865         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
1866         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
1867         Remove.
1868         (cbranchsi4, cstoresi4): New.
1869         * config/iq2000/predicates.md (reg_or_const_operand): New.
1870
1871         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
1872         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
1873         (b<code>_op): Rewrite to...
1874         (bcc_op): ... this, using match_operator.
1875         (s<code>_op): Rewrite to...
1876         (scc_op): ... this, using match_operator.
1877         (s<code>_24_op): Rewrite to...
1878         (scc_op_24): ... this, using match_operator.
1879         (s<code>_<mode>): Rewrite to...
1880         (cstore<mode>4): ... this, using match_operator.
1881         (s<code>_<mode>_24): Rewrite to...
1882         (cstore<mode>4_24): ... this, using match_operator.
1883         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
1884         m32c_unpend_compare, m32c_expand_scc): Delete.
1885         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
1886         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
1887         (m32c_expand_movcc): Change NE to EQ if necessary.
1888         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
1889
1890         * config/m32r/m32r-protos.h (gen_cond_store): New.
1891         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
1892         (gen_cond_store): New, from sCC patterns.
1893         (m32r_expand_block_move): Use cbranchsi4.
1894         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
1895         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
1896         (cbranchsi4, cstoresi4): New.
1897         
1898         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
1899         Delete.
1900         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
1901         (m68hc11_notice_update_cc): Look into a compare with 0.
1902         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
1903         Delete.
1904         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
1905         cmphi, cmpqi, bCC): Delete.
1906         (cbranchsi4, cbranchhi4, cbranchqi4): New.
1907         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
1908         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
1909         sets with COMPARE.
1910
1911         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
1912         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
1913         * config/m68k/constraints.md (H): New.
1914         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
1915         the define_insn below.
1916         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
1917         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
1918         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
1919         patterns): Wrap RHS with COMPARE.
1920         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
1921         (*cmpdi_internal): Name this pattern.
1922         (cmpdi): Change to define_insn.
1923         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
1924         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
1925         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
1926         predicate.
1927         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
1928         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
1929         (conditional_trap): Change to...
1930         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
1931         (*conditional_trap): Use the ordered_comparison_operator and
1932         const1_operand predicates.
1933         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
1934         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
1935         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
1936         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
1937
1938         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
1939         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
1940         (mcore_gen_compare): New. 
1941         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
1942         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
1943         (mcore_gen_compare): ... this.
1944         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
1945         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
1946         (stack probe pattern): Use cbranchsi4.
1947
1948         * config/mips/predicates.md (mips_cstore_operator): New.
1949         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
1950         * config/mips/mips.md (any_cond): Delete.
1951         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
1952         always succeed.
1953         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
1954         fixuns_truncsfdi2): Use cbranch patterns.
1955         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
1956         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
1957         Adjust call to mips_expand_conditional_branch.
1958         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
1959         cstore<GPR:mode>4.
1960         * config/mips/mips-protos.h (mips_expand_conditional_branch,
1961         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
1962         * config/mips/mips.c (cmp_operands): Delete.
1963         (mips_emit_compare): Get comparison operands from *op0/*op1.
1964         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
1965         that it succeeds.  Use op0/op1 instead of cmp_operands.
1966         (mips_expand_conditional_branch, mips_expand_conditional_move,
1967         mips_expand_conditional_trap): Likewise.
1968         (mips_block_move_loop): Use cbranch patterns. 
1969         * config/mips/mips.h (cmp_operands): Delete.
1970
1971         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
1972         (mmix_gen_compare_reg): Just return a register in the right CC mode.
1973         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
1974         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
1975         (*cmpcc_folded): Rename to...
1976         (*cmpdi_folded): this.
1977         (*cmpcc): Rename to...
1978         (*cmps): ... this.
1979         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
1980         (bCC): Remove.
1981         (cbranchdi4): New.
1982         (cbranchdf4): New.  Handle invalid comparisons here.
1983         * config/mmix/predicates.md (float_comparison_operator): New.
1984
1985         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
1986         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
1987         * config/mn10300/mn10300.md (tst): Delete.
1988         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
1989         Name these patterns and wrap RHS in a compare.
1990         (*cmpsi): Make this pattern private.  Include tst.
1991         (*cmpsf): Make this pattern private.
1992         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
1993         (compare with zero peepholes): Likewise.
1994         (bCC): Remove.
1995         (cbranchsi4, cbranchsf4): New.
1996         (casesi): Use cbranchsi4.
1997
1998         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
1999         hppa_branch_type): Delete.
2000         (return_addr_rtx): Use cbranchsi4.
2001         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
2002         Emit CCFPmode comparison here.
2003         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
2004         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
2005         hppa_branch_type): Delete.
2006         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
2007         (movsicc, movdicc): Remove references to hppa_compare_op0,
2008         hppa_compare_op1 and compare_from_rtx.
2009         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
2010         (casesi): Use cbranchsi4.
2011
2012         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
2013         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
2014         * config/pdp11/pdp11.md (register_or_const0_operand): New.
2015         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
2016         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
2017         (bCC): Delete.
2018         (cbranchdf4, cbranchhi4, cbranchqi4): New.
2019         (*branch, *branch_inverted): New.
2020
2021         * config/picochip/picochip.md (cbranchhi4): Use
2022         ordered_comparison_operator.
2023         (cmphi, bCC): Remove.
2024
2025         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
2026         (trap_comparison_operator): Delete.
2027         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
2028         rs6000_emit_cbranch): Accept mode and operands.
2029         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
2030         rs6000_compare_fp_p): Delete.   
2031         (rs6000_generate_compare): Accept mode and comparison.  Extract code
2032         and op0/op1 from there.  Replace references to rs6000_compare_op0
2033         and rs6000_compare_op1.
2034         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
2035         extract result from passed operands.
2036         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
2037         extract loc from passed operands.
2038         (rs6000_emit_cmove): Likewise.
2039         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
2040         rs6000_compare_fp_p): Delete.
2041         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
2042         (cbranch<GPR>4, cbranch<FP>4): New.
2043         (cstore<mode>4): New.  Consolidate here all choices about when to use
2044         portable or specialized sCC sequences.
2045         (stack_protect_test): Use cbranchsi4.
2046         (conditional_trap): Replace with ctrap<GPR>4.
2047         (conditional trap insn): Replace trap_comparison_operator with
2048         ordered_comparison_operator. 
2049
2050         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
2051         (s390_emit_prologue): Use ctrap.
2052         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
2053         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
2054         New predicates replacing...
2055         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
2056         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
2057         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
2058         (add<mode>cc): Do not use s390_compare_op0/op1.
2059         (s<code>): Change to...
2060         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
2061         (seq): Change to...
2062         (cstorecc4): ... this.  Handle EQ or NE equally.
2063         (*sne): Un-privatize for use in cstorecc4.
2064         (b<code>): Change to...
2065         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
2066         (conditional_trap): Replace with...
2067         (ctrap<GPR>4, ctrap<FP>4): ... these.
2068         (stack_protect): Use cbranchcc4.
2069
2070         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
2071         * config/score/score-protos.h (score_gen_cmp): Delete.
2072         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
2073         (score_block_move-loop): Use cbranchsi4.
2074         * config/score/score.md (cbranchsi4): New.
2075         (cmpsi, bCC): Delete.
2076         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
2077         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
2078         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
2079         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
2080         * config/score/score3.h (score3_gen_cmp): Delete.
2081         * config/score/score7.h (score7_gen_cmp): Delete.
2082
2083         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
2084         (sh_emit_scc_to_t): ... this.  Return void.
2085         (from_compare): Rename to...
2086         (sh_emit_compare_and_branch): ... this.
2087         (sh_emit_compare_and_set): New.
2088         (sh_expand_t_scc): Accept operands.
2089         * config/sh/predicates.md (sh_float_comparison_operator): New.
2090         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
2091         (prepare_scc_operands): Rename to...
2092         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
2093         arguments.
2094         (sh_emit_cheap_store_flag): New.
2095         (sh_emit_set_t_insn): New.
2096         (from_compare): Rename to...
2097         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
2098         handling of TARGET_SH2E floating point to avoid recursive call.
2099         Generate branch here.
2100         (sh_emit_compare_and_set): New.
2101         (sh_expand_t_scc): Get op0/op1 from arguments.
2102         (sh_emit_cheap_store_flag): New.
2103         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
2104         cases.
2105         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
2106         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
2107         (movsicc, movdicc): Do nothing when it recreated operands from
2108         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
2109         prepare_scc_operands (now sh_emit_scc_to_t).
2110         (udivdi3): Use cstoresi4.
2111         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
2112         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
2113         (cbranchint4_media, cbranchfp4_media): New.
2114         (casesi): Use cbranchdi4.
2115         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
2116         Delete.
2117         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
2118         (movnegt): Remove second operand.
2119         (cbranchsf4, cbranchdf4): New.
2120         (stack_protect): Use cbranchdi4/cbranchsi4.
2121
2122         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
2123         (gen_compare_reg): Accept comparison, extract part of it to...
2124         (gen_compare_reg_1): ... this. 
2125         (gen_compare_operator): Delete.
2126         (gen_v9_scc): Accept separate destination, comparison code and arms.
2127         Do not use sparc_compare_op0/sparc_compare_op1.
2128         (emit_scc_insn, emit_conditional_branch_insn): New.
2129         (emit_v9_brxx): Make static.  Remove useless assertion.
2130         (sparc_emit_float_lib_cmp): Return RTL instead of calling
2131         emit_cmp_insn.
2132         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
2133         * config/sparc/sparc-protos.h (gen_compare_reg,
2134         sparc_emit_float_lib_cmp): Adjust prototype.
2135         (emit_scc_insn, emit_conditional_branch_insn): New.
2136         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
2137         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
2138         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
2139         iterators to the top.
2140         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
2141         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
2142         snedi_special_trunc): Delete.
2143         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
2144         and snedi_special_trunc.
2145         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
2146         cbranchdi4, cbranch<F:mode>4): New.
2147         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
2148         here.  Use gen_compare_reg instead of gen_compare_operator.
2149         (conditional_trap): Replace with...
2150         (ctrapsi4, ctrapdi4): ... this.
2151         (stack_protect_test): Use cbranchcc4.
2152
2153         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
2154         argument to rtx.
2155         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
2156         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
2157         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
2158         from operands[0] or operands[3] depending on is_set.
2159         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
2160         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
2161         cmpdf, bCC), sCC: Remove.
2162         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
2163         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
2164         cstoredf4): New.
2165         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
2166         spu_emit_branch_or_set.
2167
2168         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
2169         Add two arguments.
2170         * config/stormy16/stormy16.h (xstormy16_compare_op0,
2171         xstormy16_compare_op1): Delete.
2172         * config/stormy16/stormy16.c (xstormy16_compare_op0,
2173         xstormy16_compare_op1): Delete. 
2174         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
2175         Adjust calls.
2176         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
2177         (cmphi, cmpsi, bCC): Remove.
2178
2179         * config/v850/v850.md (tstsi, cmpsi): Fold into...
2180         (*cmpsi): ... this one.
2181         (cbranchsi4, cstoresi4): New.
2182         (bCC expanders): Delete.
2183         (sCC insns): Fold into...
2184         (*setcc): ... this one.
2185         (casesi): Do not use gen_cmpsi and gen_bgtu. 
2186         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
2187         (movsicc): Simplify.
2188         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
2189
2190         * config/vax/vax-protos.h (cond_name): New.
2191         (vax_output_conditional_branch): Remove.
2192         * config/vax/vax.c (cond_name): New.
2193         (vax_output_conditional_branch): Remove.
2194         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
2195         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
2196         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
2197         (bit<VAXint>): Wrap source with (compare).
2198         (b<code> and following unnamed pattern): Rename to *branch and
2199         *branch_reversed.  Change macroization to match_operator.
2200         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
2201
2202         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
2203         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
2204         Change last argument to machine_mode.
2205         (xtensa_expand_scc): Add machine_mode argument.
2206         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
2207         (gen_conditional_move, xtensa_expand_conditional_branch,
2208         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
2209         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
2210         Adjust operand numbers.
2211         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
2212         Delete.
2213         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
2214         (cmpsi, cmpsf, b<code>, s<code>): Delete.
2215         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
2216
2217 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2218
2219         * optabs.c (prepare_cmp_insn): Temporarily disable test that
2220         causes spurious differences between trunk and cond-optab branch.
2221
2222 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
2223
2224         PR target/37137
2225         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
2226
2227 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
2228
2229         * tree.c (iterative_hash_pointer): Delete.
2230         (iterative_hash_expr): Short-circuit handling of NULL pointer.
2231         Hash UIDs and versions of SSA names.  Don't special-case built-in
2232         function declarations.
2233
2234 2009-05-11  Ian Lance Taylor  <iant@google.com>
2235
2236         PR bootstrap/40103
2237         * graphite.c: Force -Wc++-compat to only be a warning before
2238         #including "cloog/cloog.h".
2239
2240 2009-05-11  Martin Jambor  <mjambor@suse.cz>
2241
2242         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
2243         
2244 2009-05-11  Jan Hubicka  <jh@suse.cz>
2245
2246         * tree-ssa-loop-ivcanon.c: Include target.h
2247         (struct loop_size): new structure.
2248         (constant_after_peeling): New predicate.
2249         (tree_estimate_loop_size): New function.
2250         (estimated_unrolled_size): Rewrite for new estimates.
2251         (try_unroll_loop_completely): Use new estimates.
2252         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
2253
2254 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2255
2256         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
2257         libcpp interface change.
2258         (spu_macro_to_expand): Likewise.
2259
2260 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
2261
2262         PR tree-optimization/40026
2263         * gimplify.c (gimplify_init_constructor): Change initial conditional
2264         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
2265         optimize_compound_literals_in_ctor.
2266
2267 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
2268
2269         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
2270         New devices.
2271         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
2272
2273 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
2274
2275         * tree-vect-data-refs.c (vect_analyze_group_access): Use
2276         HOST_WIDE_INT for gap.
2277
2278 2009-05-11  Ira Rosen  <irar@il.ibm.com>
2279
2280         PR tree-optimization/40074
2281         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
2282         account in group size and step comparison.
2283
2284 2009-05-11  Richard Guenther  <rguenther@suse.de>
2285
2286         * passes.c (init_optimization_passes): Strip now incorrect comment.
2287         (execute_function_todo): Do not set PROP_alias.
2288         * tree-pass.h (PROP_alias): Remove.
2289         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
2290         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
2291         * tree-nrv.c (pass_return_slot): Likewise.
2292         * tree-object-size.c (pass_object_sizes): Likewise.
2293         * tree-ssa-dom.c (pass_dominator): Likewise.
2294         (pass_phi_only_cprop): Likewise.
2295         * tree-ssa-dse.c (pass_dse): Likewise.
2296         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
2297         (pass_cselim): Likewise.
2298         * tree-ssa-pre.c (pass_pre): Likewise.
2299         (pass_fre): Likewise.
2300         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
2301         * tree-ssa-sink.c (pass_sink_code): Likewise.
2302         * tree-stdarg.c (pass_stdarg): Likewise.
2303         * tree-tailcall.c (pass_tail_calls): Likewise.
2304         * tree-vrp.c (pass_vrp): Likewise.
2305
2306 2009-05-10  Ian Lance Taylor  <iant@google.com>
2307
2308         * basic-block.h (enum profile_status): Break out of struct
2309         control_flow_graph.
2310         * cgraph.h (struct inline_summary): Break out of struct
2311         cgraph_local_info.
2312         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
2313         of struct cgraph_order_sort.
2314         * combine.c (enum undo_kind): New enum, broken out of struct undo.
2315         * cse.c (struct branch_path): Break out of struct
2316         cse_basic_block_data.
2317         * except.h (enum eh_region_type): Break out of struct eh_region.
2318         * gcc.c (enum add_del): Break out of struct modify_target.
2319         * genrecog.c (enum decision_type): Break out of struct decision_test.
2320         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
2321         ggc_pch_data.
2322         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
2323         * regmove.c (enum match_use): New enum, broken out of struct match.
2324         * sched-int.h (enum post_call_group): New enum, broken out of
2325         struct deps.
2326         (struct deps_reg): Break out of struct deps.
2327         * target.h (struct asm_int_op): Break out of struct gcc_target.
2328         * tree-eh.c (struct goto_queue_node): Break out of struct
2329         leh_tf_state.
2330         * tree-inline.h (enum copy_body_cge_which): Break out of
2331         copy_body_data.
2332         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
2333
2334         * c-decl.c (in_struct, struct_types): New static variables.
2335         (pushtag): Add loc parameter.  Change all callers.
2336         (lookup_tag): Add ploc parameter.  Change all callers.
2337         (check_compound_literal_type): New function.
2338         (parser_xref_tag): Add loc parameter.  Change all callers.  If
2339         -Wc++-compat, warn about struct/union/enum types defined within a
2340         struct or union.
2341         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
2342         and loc parameters.  Change all callers.  Change error calls to
2343         error_at, using loc.  For a redefinition, if the location of the
2344         original definition is known, report it.  Set in_struct and
2345         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
2346         (finish_struct): Add new parameters enclosing_in_struct and
2347         enclosing_struct_types.  Change all callers.  Set
2348         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
2349         in the struct.  If in a struct, add this struct to struct_types.
2350         (start_enum): Add loc parameter.  Change all callers.  Use
2351         error_at for errors, using loc.  For a redefinition, if the
2352         location of the original definition is known, report it.  If in a
2353         struct, add this enum type to struct_types.  If -Wc++-compat warn
2354         if in sizeof, typeof, or alignof.
2355         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
2356         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
2357         (c_parser_enum_specifier): Get enum location for start_enum.
2358         (c_parser_struct_or_union_specifier): Get struct location for
2359         start_struct.  Save in_struct and struct_types status between
2360         start_struct and finish_struct.
2361         (c_parser_cast_expression): Get location of cast.
2362         (c_parser_alignof_expression): Get location of type.
2363         (c_parser_postfix_expression): Likewise.
2364         (c_parser_postfix_expression_after_paren_type): Add type_loc
2365         parameter.  Change all callers.  Call check_compound_literal_type.
2366         Use type_loc for error about variable size type.
2367         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
2368         of an enum constant from an enum type defined in a struct or union.
2369         (c_cast_expr): Add loc parameter.  Change all callers.  If
2370         -Wc++-compat, warn about defining a type in a cast.
2371         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
2372         (start_enum, start_struct, finish_struct): Update declarations.
2373         (parser_xref_tag, c_cast_expr): Update declarations.
2374         (check_compound_literal_type): Declare.
2375
2376 2009-05-11  Ben Elliston  <bje@au.ibm.com>
2377
2378         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
2379         for recent libcpp interface change.
2380         (rs6000_macro_to_expand): Likewise.
2381
2382 2009-05-10  Michael Matz  <matz@suse.de>
2383
2384         PR target/40031
2385         * config/arm/arm.c (require_pic_register): Emit on entry edge,
2386         not at entry of function.
2387
2388 2009-05-10  Richard Guenther  <rguenther@suse.de>
2389
2390         PR tree-optimization/40081
2391         Revert
2392         * tree-sra.c (instantiate_element): Instantiate scalar replacements
2393         using the main variant of the element type.  Do not fiddle with
2394         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
2395
2396         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
2397         structs with volatile fields.
2398
2399 2009-05-10  Jan Hubicka  <jh@suse.cz>
2400
2401         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
2402         (estimate_move_cost): Assert that it does not get called for
2403         VOID_TYPE_P.
2404         (estimate_num_insns): Skip VOID types in argument handling.
2405         (optimize_inline_calls): Delete unreachable blocks and verify that
2406         callgraph is valid.
2407
2408 2009-05-10  Jan Hubicka  <jh@suse.cz>
2409
2410         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
2411         * cgraph.c (cgraph_mark_address_taken_node): New function.
2412         (dump_cgraph_node): Dump new flag.
2413         * cgraph.h (struct cgraph_node): Add address_taken.
2414         (cgraph_mark_address_taken_node): New function.
2415         * ipa.c (cgraph_postorder): Prioritize functions with address taken
2416         since new direct calls can be born.
2417
2418 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
2419
2420         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
2421         tok->val.node.node.
2422
2423 2009-05-10  Jan Hubicka  <jh@suse.cz>
2424
2425         PR middle-end/40084
2426         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
2427         argument; rewrite.
2428         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
2429         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
2430         * tree-inline.c (copy_bb): Set frequency correctly.
2431         (fold_marked_statements): Update call to
2432         cgraph_update_edges_for_call_stmt.
2433
2434 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
2435
2436         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
2437         identifiers in diagnostics.
2438         * config/arm/arm.c (arm_handle_fndecl_attribute,
2439         arm_handle_isr_attribute): Likewise.
2440         * config/avr/avr.c (avr_handle_progmem_attribute,
2441         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
2442         * config/bfin/bfin.c (handle_int_attribute,
2443         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
2444         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
2445         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
2446         Likewise.
2447         * config/darwin.c (darwin_handle_kext_attribute,
2448         darwin_handle_weak_import_attribute): Likewise.
2449         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
2450         h8300_handle_eightbit_data_attribute,
2451         h8300_handle_tiny_data_attribute): Likewise.
2452         * config/i386/i386.c (ix86_handle_cconv_attribute,
2453         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
2454         * config/i386/winnt.c (ix86_handle_shared_attribute,
2455         ix86_handle_selectany_attribute): Likewise.
2456         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
2457         * config/m32c/m32c.c (function_vector_handler): Likewise.
2458         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
2459         m68hc11_handle_fntype_attribute): Likewise.
2460         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
2461         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
2462         * config/mips/mips.c (mips_insert_attributes,
2463         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
2464         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
2465         rs6000_handle_struct_attribute): Likewise.
2466         * config/sh/sh.c (sh_insert_attributes,
2467         sh_handle_resbank_handler_attribute,
2468         sh_handle_interrupt_handler_attribute,
2469         sh2a_handle_function_vector_handler_attribute,
2470         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
2471         Likewise.
2472         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
2473         * config/spu/spu.c (spu_handle_fndecl_attribute,
2474         spu_handle_vector_attribute): Likewise.
2475         * config/stormy16/stormy16.c
2476         (xstormy16_handle_interrupt_attribute): Likewise.
2477         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
2478         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
2479
2480 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
2481
2482         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
2483         (pp_translate_identifiers): New.
2484         (pp_identifier): Only conditionally translate identifier to locale
2485         character set.
2486         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
2487         (pp_base_tree_identifier): Only conditionally translate identifier
2488         to locale character set.
2489         * c-pretty-print.c (M_): Define.
2490         (pp_c_type_specifier, pp_c_primary_expression): Mark English
2491         fragments for conditional translation with M_.
2492         * tree-pretty-print.c (maybe_init_pretty_print): Disable
2493         identifier translation.
2494
2495 2009-05-10  Richard Guenther  <rguenther@suse.de>
2496
2497         PR tree-optimization/40081
2498         * tree-sra.c (instantiate_element): Instantiate scalar replacements
2499         using the main variant of the element type.  Do not fiddle with
2500         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
2501
2502 2009-05-09  Jan Hubicka  <jh@suse.cz>
2503
2504         PR middle-end/40080
2505         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
2506         indirect calls; verify cgraph afterwards.
2507
2508 2009-05-09  Jan Hubicka  <jh@suse.cz>
2509
2510         PR bootstrap/40082
2511         * ipa.c (update_inlined_to_pointer): New function.
2512         (cgraph_remove_unreachable_nodes): Use it.
2513
2514 2009-05-09  Jan Hubicka  <jh@suse.cz>
2515
2516         * tree-eh.c (struct leh_state): Remove prev_try.
2517         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
2518         not track prev_try.
2519         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
2520         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
2521         remove_eh_handler_and_replace, foreach_reachable_handler,
2522         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
2523         * except.h (struct eh_region): Remove eh_region_u_cleanup.
2524         (gen_eh_region_cleanup): Update prototype.
2525
2526 2009-05-09  Jan Hubicka  <jh@suse.cz>
2527
2528         PR middle-end/40043
2529         * except.c (copy_eh_region): Always set prev_try.
2530         (redirect_eh_edge_to_label): Find outer try.
2531         (foreach_reachable_handler): When looking for prev try
2532         handle case where previous try is not going to be taken.
2533
2534 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
2535
2536         PR tree-optimization/40049
2537         * tree-vect-stmts.c (vectorizable_operation): If the machine has
2538         only vector/vector shifts, convert the type of the constant to the
2539         appropriate type to avoid building incorrect trees, which
2540         eventually have problems with garbage collection.
2541
2542 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
2543
2544         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
2545         -1 for complex floating-point types if honoring signed zeros.
2546
2547 2009-05-08  Jan Hubicka  <jh@suse.cz>
2548
2549         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
2550         argument; handle correctly when profile is absent.
2551         (build_cgraph_edges): Update.
2552         (rebuild_cgraph_edges): Update.
2553         * cgraph.c: Do not include varray.h.
2554         (cgraph_set_call_stmt_including_clones): New function.
2555         (cgraph_create_edge_including_clones): Likewise
2556         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
2557         (cgraph_update_edges_for_call_stmt): Handle clones.
2558         (cgraph_remove_node): Handle clone tree.
2559         (cgraph_remove_node_and_inline_clones): New function.
2560         (dump_cgraph_node): Dump clone tree.
2561         (cgraph_clone_node): Handle clone tree.
2562         (clone_function_name): Bring here from tree-inline.c.
2563         (cgraph_create_virtual_clone): New function.
2564         * cgraph.h (ipa_replace_map): Move here from ipa.h.
2565         (cgraph_clone_info): New function.
2566         (strut cgraph_node): Add clone_info and new clone tree pointers.
2567         (cgraph_remove_node_and_inline_clones,
2568         cgraph_set_call_stmt_including_clones,
2569         cgraph_create_edge_including_clones,
2570         cgraph_create_virtual_clone): Declare.
2571         (cgraph_function_versioning): Use VEC argument.
2572         (compute_call_stmt_bb_frequency): Update prototype.
2573         (cgraph_materialize_all_clones): New function.
2574         * ipa-cp.c (ipcp_update_cloned_node): Remove.
2575         (ipcp_create_replace_map): Update to VECtors.
2576         (ipcp_update_callgraph): Use virtual clones.
2577         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
2578         (ipcp_update_profiling): Do not update local profiling.
2579         (ipcp_insert_stage): Use VECtors and virtual clones.
2580         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
2581         (clone_of_p): New function.
2582         (cgraph_preserve_function_body_p): Use clone tree.
2583         (cgraph_optimize): Materialize clones.
2584         (cgraph_function_versioning): Update for VECtors.
2585         (save_inline_function_body): Use clone tree.
2586         (cgraph_materialize_clone): New function.
2587         (cgraph_materialize_all_clones): Likewise.
2588         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
2589         * ipa.c: Include gimple.h.
2590         (cgraph_remove_unreachable_nodes): Use clone tree.
2591         * ipa-prop.c (ipa_note_param_call): Update call to
2592         compute_call_stmt_bb_frequencycall.
2593         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
2594         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
2595         (copy_bb): Handle updating of clone tree; add new edge when new call
2596         appears.
2597         (expand_call_inline): Be strict about every call having edge.
2598         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
2599         (delete_unreachable_blocks_update_callgraph): New function.
2600         (tree_function_versioning): Use VECtors; always remove unreachable
2601         blocks and fold conditionals.
2602         * tree-inline.h: Do not include varray.h.
2603         (tree_function_versioning): Remove.
2604         * Makefile.in (GTFILES): Remove tree-inline.c
2605         * passes.c (do_per_function): Do only functions having body.
2606         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
2607         tree.
2608
2609 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
2610             Andrew Morrow  <acm@google.com>
2611
2612         PR c/36892
2613         * c-common.c (c_common_attribute_table): Permit deprecated
2614         attribute to take an optional argument.
2615         (handle_deprecated_attribute): If the optional argument to
2616         __attribute__((deprecated)) is not a string ignore the attribute
2617         and emit a warning.
2618
2619         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
2620         * c-typeck.c (build_component_ref): Likewise.
2621         (build_external_ref): Likewise.
2622
2623         * toplev.c (warn_deprecated_use): Add an attribute argument.
2624         Emit the message associated with __attribute__((deprecated)).
2625
2626         * toplev.h (warn_deprecated_use): Updated.
2627
2628         * doc/extend.texi: Document new optional parameter to
2629         __attribute__((deprecated))
2630
2631 2009-05-08  Michael Eager <eager@eagercon.com>
2632
2633         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
2634         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
2635
2636 2009-05-08  Richard Guenther  <rguenther@suse.de>
2637
2638         PR tree-optimization/40062
2639         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
2640         Avoid exponential behavior.
2641
2642 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
2643
2644         PR rtl-optimization/33928
2645         PR 26854
2646         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
2647         process_uses, build_single_def_use_links): New.
2648         (update_df): Update use_def_ref.
2649         (forward_propagate_into): Use get_def_for_use instead of use-def
2650         chains.
2651         (fwprop_init): Call build_single_def_use_links and let it initialize
2652         dataflow.
2653         (fwprop_done): Free use_def_ref.
2654         (fwprop_addr): Eliminate duplicate call to df_set_flags.
2655         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
2656         df_rd_simulate_one_insn): New.
2657         (df_rd_bb_local_compute_process_def): Update head comment.
2658         (df_chain_create_bb): Use the new RD simulation functions.
2659         * df.h (df_rd_simulate_artificial_defs_at_top, 
2660         df_rd_simulate_one_insn): New.
2661         * opts.c (decode_options): Enable fwprop at -O1.
2662         * doc/invoke.texi (-fforward-propagate): Document this.
2663
2664 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
2665
2666         PR c/24581
2667         * c-typeck.c (build_binary_op): Handle arithmetic between one real
2668         and one complex operand specially.
2669         * tree-complex.c (some_nonzerop): Do not identify a real value as
2670         zero if flag_signed_zeros.
2671
2672 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
2673
2674         PR rtl-optimization/33928
2675         * loop-invariant.c (record_use): Fix && vs. || mishap.
2676
2677 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
2678
2679         PR rtl-optimization/33928
2680         * loop-invariant.c (struct use): Add addr_use_p.
2681         (struct def): Add n_addr_uses.
2682         (struct invariant): Add cheap_address.
2683         (create_new_invariant): Set cheap_address.
2684         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
2685         (record_uses): Pass df_ref to record_use.
2686         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
2687         used only as such.
2688
2689 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
2690
2691         * config/sh/sh.c: Do not include c-pragma.h.
2692
2693 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2694
2695         * config/spu/spu.c: Remove include of c-common.h.
2696
2697 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
2698
2699         PR c/39037
2700         * c-common.h (mark_valid_location_for_stdc_pragma,
2701         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
2702         clear_float_const_decimal64, float_const_decimal64_p): New.
2703         * c.opt (Wunsuffixed-float-constants): New.
2704         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
2705         unsuffixed float constant, handle new warning.
2706         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
2707         * c-decl.c (c_scope): New flag float_const_decimal64.
2708         (set_float_const_decimal64, clear_float_const_decimal64,
2709         float_const_decimal64_p): New.
2710         (push_scope): Set new flag.
2711         * c-parser.c (c_parser_translation_unit): Mark when it's valid
2712         to use STDC pragmas.
2713         (c_parser_external_declaration): Ditto.
2714         (c_parser_compound_statement_nostart): Ditto.
2715         * c-pragma.c (valid_location_for_stdc_pragma,
2716         mark_valid_location_for_stdc_pragma,
2717         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
2718         handle_pragma_float_const_decimal64): New.
2719         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
2720         * cp/semantics.c (valid_location_for_stdc_pragma_p,
2721         set_float_const_decimal64, clear_float_const_decimal64,
2722         float_const_decimal64_p): New dummy functions.
2723         * doc/extend.texi (Decimal Float): Remove statement that the
2724         pragma, and suffix for double constants, are not supported.
2725         * doc/invoke.texi (Warning Options): List new option.
2726         (-Wunsuffixed-float-constants): New.
2727
2728 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
2729
2730         * config/i386/i386.c: Do not include c-common.h.
2731
2732 2009-05-07  Mark Heffernan  <meheff@google.com>
2733
2734         * doc/invoke.texi (Debugging Options): Document change of debugging
2735         dump location.
2736         * opts.c (decode_options): Make dump_base_name relative to
2737         aux_base_name directory.
2738
2739 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
2740
2741         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
2742         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
2743
2744 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
2745
2746         * Makefile.in (install-plugin): Simplify a bit.
2747
2748 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
2749
2750         * Makefile.in (OBJS-common): Add regcprop.o.
2751         (regcprop.o): New.
2752         * timevar.def (TV_CPROP_REGISTERS): New.
2753         * regrename.c (regrename_optimize): Return 0.
2754         (rest_of_handle_regrename): Delete.
2755         (pass_rename_registers): Point to regrename_optimize.
2756         (struct value_data_entry, struct value_data, 
2757         kill_value_one_regno, kill_value_regno, kill_value,
2758         set_value_regno, init_value_data, kill_clobbered_value,
2759         kill_set_value, kill_autoinc_value, copy_value,
2760         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
2761         replace_oldest_value_reg, replace_oldest_value_addr,
2762         replace_oldest_value_mem, copyprop_hardreg_forward_1,
2763         debug_value_data, validate_value_data): Move...
2764         * regcprop.c: ... here.
2765         (rest_of_handle_cprop): Delete.
2766         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
2767
2768 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
2769
2770         PR middle-end/40057
2771         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
2772         GEN_INT for 1 << bitnum.
2773         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
2774         build_int_cst_type.
2775
2776 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
2777
2778         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
2779         Remove wrong description of "nand" operation.
2780
2781 2009-05-06  Richard Guenther  <rguenther@suse.de>
2782             Adam Nemet  <anemet@caviumnetworks.com>
2783
2784         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
2785         comment.  Add that if LHS is not a gimple register, then RHS1 has
2786         to be a single object (GIMPLE_SINGLE_RHS).
2787
2788 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
2789
2790         * expr.c (get_def_for_expr): Move it up in the file.
2791         (store_field): When expanding a bit-field store, look at the
2792         defining gimple stmt for the masking conversion.
2793
2794 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
2795
2796         PR middle-end/39986
2797         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
2798         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
2799         32-bit memcpy into long.
2800
2801 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
2802
2803         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
2804         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
2805         new_reg_loc_descr.
2806         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
2807         instead of appending DW_OP_deref*.
2808
2809 2009-05-06  Michael Matz  <matz@suse.de>
2810
2811         PR middle-end/40021
2812         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
2813         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
2814
2815 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
2816
2817         * Makefile.in (install-plugin): Fix srcdir handling.
2818
2819 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
2820
2821         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
2822         when processing for not_regs_needed bitmap.
2823         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
2824         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
2825         handling it for rhs. 
2826
2827 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
2828
2829         * config/i386/i386.md (unnamed inc/dec peephole): Use
2830         optimize_insn_for_size_p instead of optimize_size.
2831         * config/i386/predicates.md (incdec_operand): Likewise.
2832         (aligned_operand): Likewise.
2833         * config/i386/sse.md (divv8sf3): Likewise.
2834         (sqrtv8sf2): Likewise.
2835
2836 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
2837
2838         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
2839
2840         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
2841
2842 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
2843
2844         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
2845         ssemodesuffixf2c with avxmodesuffixf2c.
2846
2847 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
2848
2849         PR c/40032
2850         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
2851
2852 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
2853
2854         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
2855         (struct tree_base): Adjust spacing for 8 bit boundaries.
2856         (struct tree_decl_common): Add decl_by_reference_flag bit.
2857         (DECL_BY_REFERENCE): Adjust.
2858         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
2859         print DECL_BY_REFERENCE bit.
2860         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
2861         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
2862         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
2863         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
2864         unconditionally.
2865
2866         PR middle-end/39666
2867         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
2868         range of the type, but default label is missing, add it with one
2869         of the existing labels instead of adding a new label for it.
2870
2871 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
2872
2873         * dwarf.h: Remove.
2874
2875 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
2876
2877         * Makefile.in (enable_plugin, plugin_includedir): New.
2878         (install): Depend on install-plugin.
2879         (PLUGIN_HEADERS): New.
2880         (install-plugin): New.
2881         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
2882
2883 2009-05-05  Richard Guenther  <rguenther@suse.de>
2884
2885         PR tree-optimization/40022
2886         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
2887         the only vuse.
2888         (phivn_valid_p): Fix tuplification error, simplify.
2889         (phiprop_insert_phi): Add dumps.
2890         (propagate_with_phi): Simplify.
2891
2892 2009-05-05  Richard Guenther  <rguenther@suse.de>
2893
2894         PR middle-end/40023
2895         * builtins.c (gimplify_va_arg_expr): Properly build the address.
2896
2897 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
2898
2899         * tree.h (strip_float_extensions): Remove duplicate declaration.
2900         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
2901         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
2902         block_ultimate_origin): Rearrange the declarations line to match the
2903         comment that indicates the .c file which the functions are defined.
2904         (dwarf2out_*, set_decl_rtl): Add comment.
2905         (get_base_address): Adjust comment.
2906         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
2907         declarations line and add comment.
2908         (is_builtin_name): Add blank after function name, for clarity.
2909
2910 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
2911
2912         * attribs.c (decl_attributes): Use %qE for identifiers in
2913         diagnostics.
2914         * cgraphunit.c (verify_cgraph_node): Translate function names to
2915         locale character set in diagnostics.
2916         * coverage.c (get_coverage_counts): Use %qE for identifiers in
2917         diagnostics.
2918         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
2919         Document that functions are named in UTF-8.
2920         * expr.c (expand_expr_real_1): Translate function names to locale
2921         character set in diagnostics.
2922         * gimplify.c (omp_notice_variable, omp_is_private,
2923         gimplify_scan_omp_clauses): Use %qE for identifiers in
2924         diagnostics.
2925         * langhooks.c (lhd_print_error_function): Translate function names
2926         to locale character set.
2927         * langhooks.h (decl_printable_name): Document that return value is
2928         in internal character set.
2929         * stmt.c: Include pretty-print.h
2930         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
2931         diagnostics.
2932         (resolve_operand_name_1): Translate named operand name to locale
2933         character set.
2934         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
2935         diagnostics.
2936         * toplev.c (announce_function): Translate function names to locale
2937         character set.
2938         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
2939         (default_tree_printer): Use pp_identifier or translate identifiers
2940         to locale character set.  Mark "<anonymous>" for translation.
2941         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
2942         for identifiers in diagnostics.
2943         * tree.c (handle_dll_attribute): Use %qE for identifiers in
2944         diagnostics.
2945         * varasm.c (output_constructor): Use %qE for identifiers in
2946         diagnostics.
2947
2948 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
2949
2950         * configure.ac: use ` ` instead of $()
2951         * configure: Regenerate.
2952
2953 2009-05-05  Ben Elliston  <bje@au.ibm.com>
2954
2955         * config/pa/linux-atomic.c: Eliminate conditional include of
2956         errno.h on non-LP64 systems to simplify build requirements.
2957
2958 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
2959
2960         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
2961         diagnostics.
2962         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
2963         and pass value to identifier_to_locale.
2964         (warn_variable_length_array): Make name a tree.
2965         (grokdeclarator): Separate diagnostic texts for named and unnamed
2966         declarators.  Use %qE for named declarators.
2967         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
2968         diagnostics.
2969         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
2970         identifiers in diagnostics.
2971         * c-typeck.c (push_member_name, start_init): Pass identifiers to
2972         identifier_to_locale.  Mark "anonymous" strings for translation.
2973
2974 2009-05-04  Michael Eager <eager@eagercon.com>
2975
2976         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
2977         address for DImode/DFmode only if double-precision FP regs.
2978
2979 2009-05-04  Michael Eager <eager@eagercon.com>
2980
2981         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
2982         TARGET_SINGLE_FLOAT check.
2983
2984 2009-05-04  Michael Eager <eager@eagercon.com>
2985
2986         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
2987
2988 2009-05-04  Michael Eager <eager@eagercon.com>
2989
2990         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
2991         * config/rs6000/t-xilinx: New
2992
2993 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
2994
2995         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
2996         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
2997         * gcc/explow.c (memory_address): Use target hook.
2998         * gcc/targhooks.c (default_legitimize_address): New.
2999         * gcc/targhooks.h (default_legitimize_address): New.
3000         * gcc/target.h (legitimize_address): New.
3001         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
3002         (TARGET_INITIALIZER): Include it.
3003         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
3004
3005         * config/bfin/bfin-protos.h (legitimize_address): Remove.
3006         * config/bfin/bfin.c (legitimize_address): Remove.
3007         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
3008         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
3009         Remove.
3010         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
3011         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
3012
3013         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
3014         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
3015         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
3016         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
3017         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
3018         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
3019         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
3020         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
3021         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
3022         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
3023         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
3024         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
3025         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
3026         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
3027         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
3028         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
3029         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
3030         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
3031         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
3032         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
3033         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
3034         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
3035         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
3036
3037         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
3038         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
3039         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
3040         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
3041         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
3042         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
3043         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
3044         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
3045         (thumb_legitimize_address): Delete.
3046         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
3047         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
3048         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
3049         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
3050         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
3051         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
3052         Delete.
3053         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
3054         Delete.
3055
3056         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
3057         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
3058         * config/m32r/m32r.c (m32r_legitimize_address): New.
3059         * config/m68k/m68k.c (m68k_legitimize_address): New.
3060         * config/score/score.c (score_legitimize_address): Standardize.
3061         * config/score/score3.c (score3_legitimize_address): Standardize.
3062         * config/score/score3.h (score3_legitimize_address): Adjust.
3063         * config/score/score7.c (score7_legitimize_address): Standardize.
3064         * config/score/score7.h (score7_legitimize_address): Adjust.
3065         * config/sh/sh.c (sh_legitimize_address): New.
3066         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
3067
3068         * gcc/config/s390/s390.c (legitimize_address): Rename to...
3069         (s390_legitimize_address): ... this.
3070         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
3071         (sparc_legitimize_address): ... this.
3072         * gcc/config/i386/i386.c (legitimize_address): Rename to...
3073         (ix86_legitimize_address): ... this.
3074         * gcc/config/avr/avr.c (legitimize_address): Rename to...
3075         (avr_legitimize_address): ... this.
3076         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
3077         (mn10300_legitimize_address): ... this.
3078         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
3079         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
3080         (alpha_expand_mov): Adjust call.
3081
3082         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
3083         * config/spu/spu.c (spu_legitimize_address): Likewise.
3084         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
3085         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
3086
3087 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
3088
3089         * intl.c (locale_encoding, locale_utf8): New.
3090         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
3091         * intl.h (locale_encoding, locale_utf8): Declare.
3092         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
3093         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
3094         New.
3095         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
3096         argument.
3097         (pp_tree_identifier): Define to call pp_base_tree_identifier.
3098         (pp_base_tree_identifier): Declare as function.
3099         (identifier_to_locale): Declare.
3100         * Makefile.in (pretty-print.o): Update dependencies.
3101         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
3102
3103 2009-05-04  Richard Guenther  <rguenther@suse.de>
3104
3105         PR middle-end/40015
3106         * builtins.c (fold_builtin_memory_op): Do not decay to element
3107         type if the size matches the whole array.
3108
3109 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
3110
3111         * expmed.c (synth_mult): When trying out a shift, pass the result
3112         of a signed shift.
3113
3114 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
3115
3116         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
3117         (shiftsub1_cost): New.
3118         (init_expmed): Compute shiftsub1_cost.
3119         (synth_mult): Optimize multiplications by constants of the form
3120         -(2^^m-1) for some constant positive integer m.
3121
3122 2009-05-03  Richard Guenther  <rguenther@suse.de>
3123
3124         PR c/39983
3125         * c-typeck.c (array_to_pointer_conversion): Do not built
3126         ADDR_EXPRs of arrays of pointer-to-element type.
3127         * c-gimplify.c (c_gimplify_expr): Revert change fixing
3128         up wrong ADDR_EXPRs after-the-fact.
3129         * c-common.c (strict_aliasing_warning): Strip pointer
3130         conversions for obtaining the original type.
3131         * builtins.c (fold_builtin_memset): Handle array types.
3132         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
3133         and array types
3134
3135 2009-05-03  Richard Guenther  <rguenther@suse.de>
3136
3137         PR middle-end/23329
3138         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
3139         Do not lose casts from array types with unknown extent to array
3140         types with known extent.
3141         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
3142         alias set compatibility.
3143
3144 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3145
3146         * flags.h (extra_warnings): Delete.
3147         * toplev.c (process_options): Handle Wuninitialized here.
3148         * opts.c (extra_warnings): Delete.
3149         (set_Wextra): Delete.
3150         (common_handle_option): -Wextra can be handled automatically.
3151         * c-opts.c (c_common_handle_option): Delete obsolete code.
3152         (c_common_post_options): Simplify comment.
3153         * common.opt (W): Add Var.
3154         (Wextra): Add Var.
3155         (Wuninitialized): Initialize to -1.
3156
3157 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
3158             Richard Guenther  <rguenther@suse.de>
3159
3160         * expr.c (get_def_for_expr): New function.
3161         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
3162         SSA rather than trees.
3163         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
3164         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
3165         
3166 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
3167
3168         * c-common.c (reswords): Add _Imaginary.
3169         * c-common.c (enum rid): Add RID_IMAGINARY.
3170
3171 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
3172
3173         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
3174         Patch by Richard Guenther.
3175
3176 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
3177
3178         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
3179         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
3180         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
3181         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
3182         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
3183         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
3184         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
3185         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
3186         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
3187         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
3188         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
3189         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
3190         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
3191         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
3192         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
3193         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
3194         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
3195         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
3196
3197 2009-05-02  Richard Guenther  <rguenther@suse.de>
3198
3199         PR tree-optimization/39940
3200         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
3201         doing so.
3202
3203 2009-05-02  Richard Guenther  <rguenther@suse.de>
3204
3205         PR middle-end/40001
3206         * tree-ssa.c (execute_update_addresses_taken): Properly check
3207         if we can mark a variable DECL_GIMPLE_REG_P.
3208         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
3209         back to the end of the function.
3210         (is_gimple_reg_type): Remove complex type special casing.
3211         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
3212         if not optimizing.
3213
3214 2009-05-02  Ben Elliston  <bje@au.ibm.com>
3215
3216         * doc/collect2.texi (Collect2): Document search path behaviour
3217         when configured with --with-ld.
3218
3219 2009-05-02  Jan Hubicka  <jh@suse.cz>
3220
3221         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
3222         parameter; update callers.
3223         (coalesce_cost_edge): EH edges are costier because they needs
3224         splitting even if not critical and even more costier when there are
3225         multiple EH predecestors.
3226
3227 2009-05-02  Jan Hubicka  <jh@suse.cz>
3228
3229         * except.c (remove_eh_handler_and_replace): Handle updating after
3230         removing TRY blocks.
3231
3232 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
3233
3234         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
3235
3236 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
3237
3238         * varasm.c: Do not include c-pragma.h.
3239         * attribs.c: Do not incude c-common.h.
3240
3241 2009-05-01  Michael Matz  <matz@suse.de>
3242
3243         * calls.c (initialize_argument_information): Handle SSA names like
3244         decls with a non MEM_P DECL_RTL.
3245
3246 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
3247
3248         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
3249         * ipa-utils.c: Likewise.
3250         * ipa-type-escape.c: Likewise.
3251         * cgraphunit.c Do not include c-common.h.
3252         * ipa-pure-const.c: Likewise.
3253         * tree-if-conv.c: Likewise.
3254         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
3255         * ipa-struct-reorg.c: Likewise.
3256         * tree-nomudflap.c: Likewise.
3257         * tree-ssa-structalias.c: Likewise.
3258
3259 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
3260
3261         * store-motion.c: Many cleanups to make this pass a first-class
3262         citizen instead of an appendix to gcse load motion.  Add TODO list
3263         to make this pass faster/cleaner/better.
3264
3265         (struct ls_expr): Post gcse.c-split cleanups.
3266         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
3267         "stores" field to "avail_stores".
3268         (pre_ldst_mems): Rename to store_motion_mems.
3269         (pre_ldst_table): Rename to store_motion_mems_table.
3270         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
3271         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
3272         (ldst_entry): Rename to st_expr_entry, update users.
3273         (free_ldst_entry): Rename to free_st_expr_entry, update users.
3274         (free_ldst_mems): Rename to free_store_motion_mems, update users.
3275         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
3276         update caller.
3277         (first_ls_expr): Rename to first_st_expr, update users.
3278         (next_ls_expr): Rename to next_st_expr, update users.
3279         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
3280         fields properly for store motion instead of names inherited from load
3281         motion in gcse.c.
3282         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
3283         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
3284         are done with it.
3285
3286         (ae_kill): Rename to st_kill, update users.
3287         (ae_gen): Rename to st_avloc, update users.
3288         (transp): Rename to st_transp, update users.
3289         (pre_insert_map): Rename to st_insert_map, update users.
3290         (pre_delete_map): Rename to st_delete_map, update users.
3291         (insert_store, build_store_vectors, free_store_memory,
3292         one_store_motion_pass): Update for abovementioned changes.
3293
3294         (gcse_subst_count, gcse_create_count): Remove.
3295         (one_store_motion_pass): New statistics counters "n_stores_deleted"
3296         and "n_stores_created", local variables.
3297
3298         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
3299         use for_each_rtx.
3300
3301         (regvec, compute_store_table_current_insn): Remove.
3302         (reg_set_info, reg_clear_last_set): Remove.
3303         (compute_store_table): Use DF caches instead of local dataflow
3304         solvers.
3305
3306 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
3307
3308         * c-objc-common.c (c_tree_printer): Print identifiers with
3309         pp_identifier, not pp_string.  Mark "({anonymous})" for
3310         translation.
3311         * c-pretty-print.c (pp_c_ws_string): New.
3312         (pp_c_cv_qualifier, pp_c_type_specifier,
3313         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
3314         pp_c_storage_class_specifier, pp_c_function_specifier,
3315         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
3316         pp_c_primary_expression, pp_c_postfix_expression,
3317         pp_c_unary_expression, pp_c_shift_expression,
3318         pp_c_relational_expression, pp_c_equality_expression,
3319         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
3320         use pp_string and pp_c_ws_string in place of pp_identifier and
3321         pp_c_identifier for non-identifiers.  Mark English strings for
3322         translation.
3323         * c-pretty-print.h (pp_c_ws_string): Declare.
3324
3325 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
3326             Roland McGrath <roland@redhat.com>
3327
3328         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
3329         (ENABLE_LD_BUILDID): New configuration option.
3330         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
3331         (LINK_BUILDID_SPEC): New macro.
3332         (init_spec): If defined, prepend it between LINK_EH_SPEC and
3333         link_spec.
3334         * doc/install.texi: Document --enable-linker-build-id option.
3335         * configure: Rebuild.
3336         * config.in: Rebuild.
3337
3338 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
3339
3340         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
3341         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
3342         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
3343         MIPS_GP_SAVE_AREA_SIZE.
3344         * config/mips/mips.c (struct mips_frame_info): Update comment
3345         before arg_pointer_offset and hard_frame_pointer_offset.
3346         (mips_compute_frame_info): Update diagram before function: to
3347         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to