OSDN Git Service

6e4a25f1d15311dc7054f06731d54127bf86d635
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-06-10  Ian Lance Taylor  <iant@google.com>
2
3         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
4         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
5         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
6         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
7         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
8         DEF_VEC_ALLOC_FUNC_P.
9         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
10         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
11         DEF_VEC_ALLOC_FUNC_O.
12         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
13         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
14         DEF_VEC_ALLOC_FUNC_I.
15         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
16         (vec_stack_p_reserve_exact_1): Declare.
17         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
18         (vec_stack_free): Declare.
19         (VEC_stack_alloc): Define.
20         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
21         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
22         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
23         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
24         for void_p.
25         (stack_vecs): New static variable.
26         (vec_stack_p_reserve_exact_1): New function.
27         (vec_stack_o_reserve_1): New static function.
28         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
29         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
30         (vec_stack_free): New function.
31         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
32         (VEC_df_ref_stack_alloc): Define.
33         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
34         DEF_VEC_ALLOC_P_STACK.
35         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
36         (struct df_collection_rec): Change _vec fields to VEC.  Remove
37         _use fields.
38         (df_free_collection_rec): Adjust for new fields.
39         (df_insn_rescan): Use new df_collection_rec fields.
40         (df_notes_rescan, df_canonize_collection_rec): Likewise.
41         (df_ref_create_structure, df_ref_record): Likewise.
42         (df_get_conditional_uses, df_get_call_refs): Likewise.
43         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
44         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
45         (df_record_exit_block_uses, df_bb_verify): Likewise.
46         (df_swap_refs): Change ref_vec parameter to VEC.  Change all
47         callers.
48         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
49         Remove count parameter.  Change return type to void.  Change all
50         callers.
51         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
52         Remove count parameter.  Change return type to void.  Change all
53         callers.
54         (df_install_refs): Change old_vec parameter to VEC.  Remove count
55         parameter.  Change all callers.
56         (df_install_mws): Change old_vec parameter to VEC.  Remove count
57         parameter.  Change all callers.
58         (df_refs_verify): Change new_rec parameter to VEC.  Change call
59         callers.
60         (df_mws_verify): Likewise.
61
62 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
63
64         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
65
66 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
67
68         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
69
70 2009-06-10  Anthony Green  <green@moxielogic.com>
71
72         * config/moxie/crti.asm: New file.
73         * config/moxie/crtn.asm: New file.
74         * config/moxie/moxie.c: New file.
75         * config/moxie/moxie.h: New file.
76         * config/moxie/sfp-machine.h: New file.
77         * config/moxie/moxie-protos.h: New file.
78         * config/moxie/t-moxie: Created.
79         * config/moxie/t-moxie-softfp: Created.
80         * config/moxie/moxie.md: Created.
81         * config/moxie/constraints.md: Created.
82         * config.gcc: Add moxie support.
83         * doc/md.texi (Machine Constraints): Add moxie constraints.
84         * doc/contrib.texi (Contributors): Mention moxie port.
85         * doc/install.texi (Specific): Mention the moxie port.
86
87 2009-06-09  Ian Lance Taylor  <iant@google.com>
88
89         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
90         compiling with C++.
91         * optabs.c (optab_table): Only use designated initializers if
92         HAVE_DESIGNATED_INITIALIZERS is defined.
93         (convert_optab_table): Likewise.
94         (init_optabs): Always call init_insn_codes if
95         HAVE_DESIGNATED_INITIALIZERS is not defined.
96
97 2009-06-09  Ian Lance Taylor  <iant@google.com>
98
99         * targhooks.c (default_builtin_vectorized_function): Change fn
100         parameter to unsigned int.
101         (default_builtin_vectorized_conversion): Change code parameter to
102         unsigned int.
103         (default_builtin_reciprocal): Change fn parameter to unsigned int.
104         * targhooks.h: Update declarations.
105         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
106         parameter to unsigned int.
107
108         * c-typeck.c (comptypes_check_enum_int): New static function.
109         (comptypes_internal): Add enum_and_int_p parameter.  Change all
110         callers.
111         (comp_target_types): Add location parameter.  Change all callers.
112         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
113         Change all callers.
114         (function_types_compatible_p, type_lists_compatible_p): Likewise.
115         (build_conditional_expr): Add colon_loc parameter.  Change all
116         callers.
117         (convert_for_assignment): Add location parameter.  Change all
118         callers.
119         * c-parser.c (c_parser_conditional_expression): Pass location of
120         colon to build_conditional_expr.
121         * c-tree.h (build_conditional_expr): Update declaration.
122
123 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
124
125         * graphite.c: Revert previous patch.
126
127 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
128
129         PR bootstrap/40103
130         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
131
132 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
133
134         * tree-ssa-loop-prefetch.c
135         (loop_prefetch_arrays): Fixed a portability problem in printf format
136         string.
137
138 2009-06-09  Martin Jambor  <mjambor@suse.cz>
139
140         PR tree-optimization/40351
141         * tree-sra.c (propagate_subacesses_accross_link): Check that a refrence
142         to a potential artifical subaccess can be constructed.
143
144 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
145
146         * config/sh/sh-protos.h (sh_optimization_options): Declare.
147         (sh_override_options): Likewise.
148         * config/sh/sh.c: Include params.h.
149         (sh_optimization_options): New.
150         (sh_override_options): Likewise.
151         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
152         (OVERRIDE_OPTIONS): Use sh_override_options.
153
154 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
155
156         * dwarf2out.c (emit_cfa_remember): New variable.
157         (add_fde_cfi): If emit_cfa_remember, recurse to add
158         DW_CFA_remember_state first.
159         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
160         instead just set emit_cfa_remember.
161
162 2009-06-08  Jan Hubicka  <jh@suse.cz>
163
164         PR debug/40126
165         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
166
167 2009-06-08  Jan Hubicka  <jh@suse.cz>
168
169         PR middle-end/39834
170         * cgraphunit.c (save_inline_function_body): Do not copy transform hooks
171         for saved inline bodies.
172         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
173         for given function.
174
175 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
176
177         * jump.c (returnjump_p): Handle delayed branches.  Add missing
178         function comment.
179
180 2009-06-08  Jan Hubicka  <jh@suse.cz>
181
182         PR middle-end/40102
183         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
184         original node might've been modified.
185         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
186
187 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
188
189         * tree-object-size.c (addr_object_size): Add OSI argument.
190         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
191         (compute_builtin_object_size, expr_object_size): Adjust callers.
192         (plus_stmt_object_size): Call addr_object_size instead of
193         compute_builtin_object_size.
194
195 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
196             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
197         
198         * tree-ssa-loop-prefetch.c 
199         (gather_memory_references): Introduced a counter for the number of 
200         memory references.
201         (anything_to_prefetch_p): Introduced a counter for the number of 
202         prefetches.
203         (is_loop_prefetching_profitable): New function with a cost model 
204         for prefetching.
205         (loop_prefetch_arrays): Use the new cost model to determine if 
206         prefetching is profitable.
207         * params.def (MIN_INSN_TO_PREFETCH_RATIO, 
208         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
209         * params.h (MIN_INSN_TO_PREFETCH_RATIO, 
210         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
211         * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO, 
212         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
213         
214 2009-06-08  Michael Matz  <matz@suse.de>
215
216         PR debug/40012
217         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
218         partitions use the same.
219         (expand_one_var): Deal with DECL_RTL sometimes begin set also
220         for basevars of SSA_NAMEs.
221         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
222         to not expand them twice.
223         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
224         multiple places.
225
226 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
227
228         * common.opt (fcompare-debug=, fcompare-debug-second): New.
229         (fdump-final-insns=, gtoggle): New.
230         * doc/invoke.texi: Document them.
231         * final.c (rest_of_clean_state): Dump final insn stream.
232         * gcc.c (invoke_as): Hook in -fcompare-debug.
233         (static_spec_functions): Add compare-debug-dump-opt,
234         compare-debug-self-opt and compare-debug-auxbase-opt.
235         (compare_debug, compare_debug_second, compare_debug_opt): New.
236         (switches_debug_check, n_switches_debug_check): New.
237         (debug_auxbase_opt, debug_check_temp_file): New.
238         (process_command): Handle -fno-compare-debug, -fcompare-debug and
239         -fcompare-debug=*.
240         (do_self_spec): Handle arguments after switches.
241         (do_spec_1): Add .gk extension to temp file basenames for compare.
242         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
243         (cc1_options): Use it instead of normal auxbase computation for
244         the second compare-debug compilation.
245         (compare_files): New.
246         (main): Set up and implement compare debug mode.
247         (compare_debug_dump_opt_spec_function): New.
248         (compare_debug_self_opt_spec_function): New.
249         (compare_debug_auxbase_opt_spec_function): New.
250         * toplev.c (process_options): Handle flag_gtoggle,
251         flag_dump_final_insns.
252         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
253         during -fcompare-debug-second compilation.
254
255 2009-06-07  Ian Lance Taylor  <iant@google.com>
256
257         * dwarf2.h (enum dwarf_location_atom): Add
258         INTERNAL_DW_OP_tls_addr.
259         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
260
261         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
262         with no default node.  Change warning with %H to warning_at.
263         Don't clear warn_switch around case checking.
264         * doc/invoke.texi (Warning Options): Clarify distinction between
265         -Wswitch and -Wswitch-enum.
266
267 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
268
269         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
270
271 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
272
273         * gbl-ctors.h: Add header guard.
274
275 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
276
277         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
278         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
279         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
280         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
281         prototypes for removed functions.
282         (expressions_equal_p): Move to ...
283         * tree-ssa-sccvn.h: ... here and ...
284         * matrix-reorg.c: ... adjust includes.
285
286 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
287
288         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
289
290 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
291
292         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
293         (finish_function): Remove erroneous whitespace.
294
295 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
296
297         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
298         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
299
300 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
301
302         * errors.c (internal_error): Commentary typo fix.
303         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
304         * tree-ssa-pre.c: Ditto.
305
306 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
307
308         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
309         them is supposed to hold actual statements.
310
311 2009-06-06  Ian Lance Taylor  <iant@google.com>
312
313         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
314         empty statements can now have attributes.
315
316 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
317
318         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
319         * config/mips/mips.md: Ditto.
320
321 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
322
323         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
324         _RELOCATABLE.
325         (__eabi_uconvert): Likewise.
326
327 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
328
329         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
330         CFI_* definitions with IN_GCC.
331
332 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
333
334         * xcoffout.h (xcoffout_source_line): Update prototype.
335
336 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
337
338         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
339         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
340
341 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
342
343         PR middle-end/40340
344         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
345         inlined_function_outer_scope_p blocks for artificial inlines
346         even at -g0/-g1.
347         * tree.c (tree_nonartificial_location): Rewrite using
348         block_nonartificial_location.
349
350 2009-06-05  Revital Eres  <eres@il.ibm.com>
351             Leehod Baruch  <leehod@il.ibm.com>
352
353         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
354         (expand_expr_real_1): Remove comment.
355         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
356         Vectorize misaligned access when the target supports it.
357         (vect_supportable_dr_alignment): Check for unaligned access
358         support.
359         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
360         and remove asset.
361
362 2009-06-05  Julian Brown  <julian@codesourcery.com>
363
364         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
365         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
366
367 2009-06-05  Richard Guenther  <rguenther@suse.de>
368
369         PR bootstrap/40350
370         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
371         as possibly unused.
372
373 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
374
375         * config/s390/s390.c (global_not_special_regno_p): New static inline.
376         (save_gprs): Don't tell unwinder when a global register is saved.
377         (s390_emit_epilogue): Emit needed epilogue unwind info.
378
379 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
380
381         * dwarf2out.c (deferred_asm_name): New.
382         (add_name_and_src_coords_attributes): Defer creation of
383         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
384         computed yet.
385         (move_linkage_attr): New.
386         (dwarf2out_finish): Revisit deferrals and emit attributes at the
387         right place.
388
389 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
390
391         * tree-nested.c (finalize_nesting_tree_1): Declare the
392         frame_decl in the binding tree.
393
394 2009-06-04  Cary Coutant  <ccoutant@google.com>
395
396         * basic-block.h (struct basic_block_def): Add discriminator field.
397         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
398         callers.
399         * debug.c (do_nothing_debug_hooks): Add additional entry.
400         (debug_nothing_int_charstar_int): New function.
401         * debug.h (struct gcc_debug_hooks): Add parameter to source_line
402         hook.
403         (debug_nothing_int_charstar_int): New declaration.
404         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
405         discriminator value in .loc directive.
406         * final.c (last_discriminator): New variable.
407         (discriminator): New variable.
408         (final_start_function): Initialize above variables, pass current
409         discriminator to debug hook.
410         (notice_source_line): Check for discriminator change.
411         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
412         * sdbout.c (sdbout_source_line): New parameter.
413         * tree-cfg.c (struct locus_discrim_map): New structure type.
414         (discriminator_per_locus): New hash table.
415         (build_gimple_cfg): Allocate and free discriminator hash table.
416         (make_edges): Call assign_discriminator.
417         (locus_map_hash): New function.
418         (locus_map_eq): New function.
419         (next_discriminator_for_locus): New function.
420         (same_line_p): New function.
421         (assign_discriminator): New function.
422         (make_cond_expr_edges): Call assign_discriminator.
423         (make_gimple_switch_edges): Likewise.
424         (first_non_label_stmt): New function.
425         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
426         all callers.
427         * xcoffout.c (xcoffout_source_line): Add new parameter.
428
429         * configure.ac (gcc_cv_as_discriminator): New configury check for
430         gas support for discriminator.
431         * configure: Regenerate.
432         * config.in: Regenerate.
433
434 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
435
436         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
437         val after checking for integers.
438
439 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
440
441         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
442         X64_REGPARM_MAX.
443         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
444         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
445         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
446         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
447         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
448         X64_SSE_REGPARM_MAX.
449         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
450         X64_SSE_REGPARM_MAX.
451
452 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
453
454         * gcc.c (report_times_to_file): New.
455         (execute): Implement it.
456         (process_command): Support -time=.
457         * doc/invoke.texi: Document it.
458
459 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
460
461         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
462         that have value exprs.
463
464 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
465
466         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
467         declarations for constants until...
468         (dw2_output_indirect_constant_1): ... this point.
469
470 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
471
472         PR target/10242
473         * arm.md (arm_addsi3): Don't try to split an add with an
474         eliminable register until after reload has completed.
475
476 2009-06-03  Ian Lance Taylor  <iant@google.com>
477
478         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
479         * genattrtab.c (write_length_unit_log): Likewise.
480         * genchecksum.c (dosum): Likewise.
481         * gengtype.c (write_rtx_next): Likewise.
482         (finish_root_table, write_roots): Likewise.
483         * gimple.c (gimple_ops_offset_): Likewise.
484         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
485         * config/arc/arc.c (arc_attribute_table): Likewise.
486         * config/arm/arm.c (arm_attribute_table): Likewise.
487         * config/avr/avr.c (avr_attribute_table): Likewise.
488         * config/crx/crx.c (crx_attribute_table): Likewise.
489         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
490         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
491         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
492         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
493         * config/sh/sh.c (sh_attribute_table): Likewise.
494         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
495         * config/spu/spu.c (spu_attribute_table): Likewise.
496         * config/v850/v850.c (v850_attribute_table): Likewise.
497
498         * config/alpha/alpha.c (vms_attribute_table): Make static.
499         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
500         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
501         * config/mips/mips.c (mips_attribute_table): Likewise.
502
503         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
504         $(SYSTEM_H).
505         (cc1-checksum.o): Likewise.
506
507 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
508
509         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
510
511 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
512
513         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
514         insn if it is changing sp.  Use gen_add3_insn instead of
515         conditionally gen_addsi3 and gen_adddi3.
516         (offset_below_red_zone_p): New static inline function.
517         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
518         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
519         * config/rs6000/ppc-asm.h: Include auto-host.h.
520         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
521         CFI_RESTORE): Define.
522         * config/rs6000/crtresxgpr.asm: Add unwind info.
523         * config/rs6000/crtresxfpr.asm: Likewise.
524         * config/rs6000/crtresgpr.asm: Likewise.
525         * config/rs6000/crtresfpr.asm: Likewise.
526         * config/rs6000/crtsavgpr.asm: Likewise.
527         * config/rs6000/crtsavfpr.asm: Likewise.
528
529         * dwarf2out.c (output_cfi_directive): Pass 1 instead of
530         0 to second argument of DWARF2_FRAME_REG_OUT macros.
531
532 2009-06-03  Julian Brown  <julian@codesourcery.com>
533
534         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
535         words or less (including TImode) in core registers.
536
537 2009-06-03  Richard Guenther  <rguenther@suse.de>
538
539         PR middle-end/40328
540         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
541
542 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
543
544         * statistics.c (statistics_counter_event): Do not record event 
545         in pass dump if its number == -1.
546         (curr_statistics_hash): Add assert that we never get passes 
547         with static number == -1.
548
549 2009-06-03  Richard Guenther  <rguenther@suse.de>
550             Andrey Belevantsev  <abel@ispras.ru>
551
552         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
553         non-BLKmode arrays addressable.
554
555 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
556
557         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
558         * config/m68k/m68k.h: ... here.
559         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
560         m68k and fido.
561
562 2009-06-03  Martin Jambor  <mjambor@suse.cz>
563
564         PR tree-optimization/40323
565         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
566         assignment.
567
568 2009-06-03  Richard Guenther  <rguenther@suse.de>
569
570         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
571         consistently.
572
573 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
574
575         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
576         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
577         JUMP_TABLE_DATA_P where applicable.
578         * config/sh/sh.c: Ditto.
579         * config/sh/sh.h: Ditto.
580         * config/sh/sh.md: Ditto.
581         * config/sh/symbian.c: Ditto.
582
583 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
584
585         * config/i386/driver-i386.c (describe_cache): Optimize
586         concatenation of strings.  Use snprintf instead of sprintf.
587         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
588         target when not compiling with GCC.
589
590 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
591
592         * config/sh/sh.c: Revert last change.
593         (sh_expand_epilogue): Emit a blockage insn before the frame
594         pointer adjustment unconditionally.
595
596 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
597
598         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
599         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
600         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
601         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
602         to COLLECT_GCC_OPTIONS.
603
604 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
605
606         * collect2.c (target_system_root): New variable.
607         (main): Handle --sysroot=.
608         (ignore_library): Strip the sysroot from the library path.
609
610 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
611
612         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
613         (collect2.o): Depend on collect2-aix.h.
614         (collect2-aix.o): New rule.
615         * collect2-aix.h: New file.
616         * collect2-aix.c: Likewise.
617         * collect2.c: Include collect2-aix.h.  Don't undefine
618         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
619         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
620         Use TARGET_AIX_VERSION instead of _AIX51.
621         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
622         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
623         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
624         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
625         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
626
627 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
628
629         * collect2.c (ignore_library): Avoid premature post-increment
630         and null deference.
631
632 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
633
634         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
635         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
636         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
637         CROSS_DIRECTORY_STRUCTURE too.
638         (LINK_LIBG_SPEC): Likewise.
639         (LIB_SPEC): Add %R to sysroot paths.
640         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
641         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
642         * config/rs6000/aix51.h: As for aix43.h.
643         * config/rs6000/aix52.h: Likewise.
644         * config/rs6000/aix53.h: Likewise.
645         * config/rs6000/aix61.h: Likewise.
646         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
647         to the beginning of sysroot paths.
648
649 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
650
651         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
652         INSN_LISTs that are out of the REG_NOTE range.
653
654 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
655
656         * loop-unroll.c (struct iv_to_split): Add pointer to next.
657         (struct var_to_expand): Likewise.
658         (struct opt_info): Add head and tail for linked lists of the above.
659         (analyze_insn_to_expand_var): Initialize next.
660         (analyze_iv_to_split_insn): Likewise.
661         (analyze_insns_in_loop): Create linked lists.
662         (allocate_basic_variable): Simplify for use without hash table.
663         (insert_var_expansion_initialization): Likewise, make it type-safer.
664         (combine_var_copies_in_loop_exit): Likewise.
665         (apply_opt_in_copies): Walk lists rather than hash tables.
666         (release_var_copies): Simplified and inlined by hand into...
667         (free_opt_info): ... this function.
668
669 2009-06-02  Richard Guenther  <rguenther@suse.de>
670
671         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
672         for field decls.
673
674 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
675
676         * cfgexpand.c (gimple_expand_cfg): Discard the source location
677         only for builtins that are not overridden.
678
679 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
680
681         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
682         label string.
683
684 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
685
686         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
687
688 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
689
690         * combine.c (move_deaths): Compare LUIDs within the same BB only.
691
692 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
693
694         * common.opt (fdump-unnumbered-links): New.
695         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
696         * print-rtl.c (flag_dump_unnumbered_links): New.
697         (print_rtx): Test it.
698
699 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
700
701         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
702         push/pop multiple to 8-byte alignment.
703
704 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
705
706         * config/i386/i386.c (queued_cfa_restores): New static variable.
707         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
708         functions.
709         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
710         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
711         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
712         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
713         note unconditionally.
714         (ix86_emit_restore_regs_using_mov): Likewise.
715         (ix86_emit_restore_sse_regs_using_mov): Likewise.
716         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
717         it through to ix86_emit_restore_reg_using_pop.
718         (ix86_emit_leave): Add RED_OFFSET argument.  Call
719         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
720         instead of adding REG_CFA_OFFSET note unconditionally.
721         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
722         the above functions.  Call ix86_add_queued_cfa_restore_notes when
723         needed.
724
725         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
726         force output of the label even for dwarf2out_do_cfi_asm.
727         (add_fde_cfi): If -g2 and above and cfi might change CFA,
728         force creation of CFI label and chain DW_CFA_set_loc jumping to it
729         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
730         caller.
731         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
732         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
733         dwarf2out_cfi_label callers.
734         * tree.h (dwarf2out_cfi_label): Adjust prototype.
735         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
736         Adjust dwarf2out_cfi_label callers.
737         * config/vax/vax.c (vax_output_function_prologue): Likewise.
738
739         * config/i386/i386.h (struct machine_cfa_state,
740         struct machine_function): Guard with ifndef USED_FOR_TARGET
741         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
742
743         PR other/40024
744         * emutls.c (__emutls_get_address): Change arr->size to mean number
745         of allocated arr->data entries instead of # of slots + 1.
746
747         PR middle-end/40316
748         * recog.c (peep2_reinit_state): New function.
749         (peephole2_init_state): Use it at the end of a basic block and also
750         when seeing a RTX_FRAME_RELATED_P insn.
751
752 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
753
754         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
755         fixuns_truncrfdi2): New.
756         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
757         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
758         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
759         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
760         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
761         *recip_approx): Remove.
762         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
763         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
764         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
765         move to div.md.
766         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
767         setf_exp_rf): New.
768
769 2009-06-01  Ian Lance Taylor  <iant@google.com>
770
771         * attribs.c (register_attribute): Use CONST_CAST.
772         * collect2.c (main): Use CONST_CAST2.
773         (scan_prog_file): Likewise.
774         * gcc.c (process_command, main): Likewise.
775         * toplev.c (toplev_main): Likewise.
776
777         * c-typeck.c (handle_warn_cast_qual): New static function,
778         partially broken out of build_c_cast.
779         (build_c_cast): Call handle_warn_cast_qual.
780         * doc/invoke.texi (Warning Options): Document new effect of
781         -Wcast-qual.
782
783 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
784
785         * diagnostic.c (diagnostic_build_prefix): Always print columns.
786         (diagnostic_report_current_module): Print columns.
787         * common.opt (flag_show_column): Enable by default.
788
789 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
790
791         * alias.c (find_base_term): Check for NULL term before returning.
792
793 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
794
795         Revert due to PR40320:
796         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
797         * calls.c (emit_library_call_value_1): Don't force_operand for move
798         and push insns.
799
800 2009-06-01  Olivier Hainque  <hainque@adacore.com>
801             Eric Botcazou  <ebotcazou@adacore.com>
802
803         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
804         to be processed as a bitfield for constructor output purposes.
805         * output.h (initializer_constant_valid_for_bitfield_p): Declare
806         new function.
807         * varasm.c (oc_local_state): New type, output_constructor
808         local state to support communication with helpers.
809         (oc_outer_state): New type, output_constructor outer state of
810         relevance in recursive calls.
811         (output_constructor_array_range): New output_constructor helper,
812         extracted code for an array range element.
813         (output_constructor_regular_field): New output_constructor helper,
814         extracted code for an element that is not a bitfield.
815         (output_constructor_bitfield): New output_constructor helper,
816         extracted code for a bitfield element.  Accept an OUTER state
817         argument for recursive processing.  Recurse on record or array
818         CONSTRUCTOR values, possibly past noop conversions.
819         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
820         VALUE is a valid constant-valued expression for use in a static
821         bit-field initializer.
822         (output_constructor): Rework to use helpers.  Accept and honor an
823         OUTER state argument for recursive calls.  Return total size.  Be
824         prepared for nested constructors initializing bitfields.
825         (output_constant): Feed OUTER in calls to output_constructor.
826
827 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
828
829         * calls.c (emit_library_call_value_1): Don't force_operand for move
830         and push insns.
831
832 2009-06-01  Nick Clifton  <nickc@redhat.com>
833
834         * doc/invoke.texi (IA-64 Options): Fix typo.
835
836 2009-06-01  Ira Rosen  <irar@il.ibm.com>
837
838         PR tree-optimization/39129
839         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the 
840         printed message.
841         (vect_do_peeling_for_loop_bound): Use 
842         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
843         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
844         (vect_loop_versioning): Likewise.
845         (vect_create_cond_for_alias_checks): Fix indentation.
846         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the 
847         macros.
848         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
849         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
850         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to 
851         "control flow in loop".
852         (vect_estimate_min_profitable_iters): Use 
853         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
854         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
855         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
856         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
857         * tree-vect-stmts.c (vectorizable_store): Replace the check that the 
858         statement belongs to a group of strided accesses with the exact code 
859         check.
860         (vectorizable_load): Likewise.
861         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
862         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
863
864 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
865
866         * config/freebsd-stdint.h: New file.
867         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
868         Add freebsd-stdint.h to tm_file.
869
870 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
871
872         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
873         (thumb2_extendhidi2): Likewise.
874
875 2009-05-31  Ian Lance Taylor  <iant@google.com>
876
877         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
878
879 2009-05-31  Ian Lance Taylor  <iant@google.com>
880
881         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
882         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
883         (ipa-reference.o): Depend upon gt-ipa-reference.h.
884
885 2009-05-31  Jason Merrill  <jason@redhat.com>
886
887         * tree-pretty-print.c (print_call_name): Take the callee, not the
888         call itself.  Make non-static.  Use dump_function_name for functions.
889         (dump_generic_node): Adjust.
890         * diagnostic.h: Declare print_call_name.
891         * gimple-pretty-print.c (dump_gimple_call): Use it.
892
893 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
894
895         * config/sh/sh.md (ashldi3_std): New define_expand.
896         (ashldi3): Use it.
897
898 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
899
900         PR target/40313
901         * config/sh/sh.c: Include debug.h.
902         (sh_expand_epilogue): Emit a blockage insn before the frame
903         pointer adjustment also when dwarf2out_do_frame returns true.
904
905 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
906
907         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
908         (thumb2_extendqidi2): New pattern.
909
910 2009-05-31  Ira Rosen  <irar@il.ibm.com>
911
912         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
913         mark phis for renaming.
914         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
915         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
916         Call mark_sym_for_renaming.
917         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
918         * tree-vect-loop.c (vect_transform_loop): Remove
919         vect_memsyms_to_rename initialization and a call to
920         mark_set_for_renaming.
921
922 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
923
924         PR middle-end/40304
925         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
926         frame related even if !set_cfa && style < 0.
927
928 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
929
930         * config/i386/mingw-tls.c: New file.
931         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
932         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
933         defining _WIN32 but not __CYGWIN__.
934
935 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
936
937         * configure.ac: Add MPC support.
938         
939         * config.in, configure: Regenerate.     
940
941 2009-05-29  Richard Henderson  <rth@redhat.com>
942
943         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
944         NOTE_INSN_BASIC_BLOCK.
945         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
946         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
947         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
948         to be deleted.
949         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
950         add in_use field.
951         (add_cfi): Disable check redefining cfa away from drap.
952         (lookup_cfa_1): Add remember argument; handle remember/restore.
953         (lookup_cfa): Pass remember argument.
954         (cfa_remember): New.
955         (compute_barrier_args_size_1): Remove sibcall check.
956         (dwarf2out_frame_debug_def_cfa): New.
957         (dwarf2out_frame_debug_adjust_cfa): New.
958         (dwarf2out_frame_debug_cfa_offset): New.
959         (dwarf2out_frame_debug_cfa_register): New.
960         (dwarf2out_frame_debug_cfa_restore): New.
961         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
962         (dwarf2out_begin_epilogue): New.
963         (dwarf2out_frame_debug_restore_state): New.
964         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
965         DW_CFA_restore_state.
966         (output_cfi_directive): Likewise.
967         (convert_cfa_to_fb_loc_list): Likewise.
968         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
969         * dwarf2out.h: Update.
970         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
971         (copy_insn_1): Early out for null.
972         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
973         and dwarf2out_frame_debug_restore_state.
974         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
975         (prologue_insn_hash, epilogue_insn_hash): New.
976         (free_after_compilation): Adjust freeing accordingly.
977         (record_insns): Create hash table if needed; push insns into
978         hash instead of array.
979         (maybe_copy_epilogue_insn): New.
980         (contains): Search hash table instead of array.
981         (sibcall_epilogue_contains): Remove.
982         (thread_prologue_and_epilogue_insns): Split eh_return insns
983         and mark them as epilogues.
984         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
985         scanning in terms of basic blocks.
986         * insn-notes.def (CFA_RESTORE_STATE): New.
987         * jump.c (returnjump_p_1): Accept EH_RETURN.
988         (eh_returnjump_p_1, eh_returnjump_p): New.
989         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
990         CFA_REGISTER, CFA_RESTORE): New.
991         * rtl.def (EH_RETURN): New.
992         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
993
994         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
995         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
996
997         * config/i386/i386.c (gen_push): Update cfa state.
998         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
999         add a CFA_ADJUST_CFA note.
1000         (ix86_dwarf_handle_frame_unspec): Remove.
1001         (ix86_expand_prologue): Update cfa state.
1002         (ix86_emit_restore_reg_using_pop): New.
1003         (ix86_emit_restore_regs_using_pop): New.
1004         (ix86_emit_leave): New.
1005         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
1006         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
1007         * config/i386/i386.h (struct machine_cfa_state): New.
1008         (ix86_cfa_state): New.
1009         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
1010         (eh_return_internal): Merge from eh_return_<mode>,
1011         use eh_return rtx, split w/ epilogue.
1012
1013 2009-05-29  Ian Lance Taylor  <iant@google.com>
1014
1015         * builtins.c (validate_gimple_arglist): Don't use va_arg with
1016         enum type.
1017         * calls.c (emit_library_call_value_1): Likewise.
1018
1019         * c-typeck.c (c_build_va_arg): New function.
1020         * c-tree.h (c_build_va_arg): Declare.
1021         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
1022         instead of build_va_arg.
1023
1024 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
1025
1026         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
1027         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
1028         (ptr_difference_cost): Use affine combinations to compute it.
1029         (difference_cost): Likewise.
1030         (get_computation_cost_at): Compute more accurate cost for addresses
1031         if the ratio is a multiplier allowed in addresses.
1032         For non-addresses, consider that an additional offset or symbol is
1033         added only once.
1034
1035 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1036
1037         * config/i386/i386.c (ix86_decompose_address): Avoid useless
1038         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
1039
1040         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
1041         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
1042         (prefix_rex): For UNIT_MMX don't imply the prefix by default
1043         if MODE_DI.
1044         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
1045         to 1 for TYPE_SSE{IADD1,CVT1}.
1046         (prefix_vex_imm8): Removed.
1047         (length_vex): Only pass 1 as second argument to
1048         ix86_attr_length_vex_default if prefix_extra is 0.
1049         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
1050         (length): For prefix vex computation use length_immediate
1051         attribute instead of prefix_vex_imm8.
1052         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
1053         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
1054         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
1055         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
1056         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
1057         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
1058         a space in between the operands.
1059         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
1060         if one operand is 0xff and the other one si, di, bp or sp.
1061         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
1062         other one si, di, bp or sp.
1063         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
1064         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
1065         type and mode attributes.
1066         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
1067         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
1068         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
1069         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
1070         prefix_data16 attribute iff MODE_DF.
1071         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
1072         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
1073         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
1074         constm128_operand in length_immediate computation.
1075         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
1076         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
1077         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
1078         length_immediate attribute to 1.
1079         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
1080         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
1081         for certain alternatives.
1082         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
1083         prefix_data16 attribute if MODE_V1DF.
1084         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
1085         length_immediate to 1.
1086         (set_got_rex64, set_rip_rex64): Remove length attribute, set
1087         length_address to 4, set mode attribute to MODE_DI.
1088         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
1089         (fxam<mode>2_i387): Set length attribute to 4.
1090         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
1091         *prefetch_3dnow_rex): Override length_address attribute.
1092         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
1093         attributes.
1094         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
1095         (constm128_operand): Removed.
1096         * config/i386/i386.c (memory_address_length): For
1097         disp && !index && !base in 64-bit mode account for SIB byte if
1098         print_operand_address can't optimize disp32 into disp32(%rip)
1099         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
1100         for fs: or gs: segment.
1101         (ix86_attr_length_immediate_default): When checking if shortform
1102         is possible, truncate immediate to the length of the non-shortened
1103         immediate.
1104         (ix86_attr_length_address_default): Ignore MEM_P operands
1105         with X constraint.
1106         (ix86_attr_length_vex_default): Only check for DImode on
1107         GENERAL_REG_P operands.
1108         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
1109         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
1110         (sse_cvttps2pi): Clear prefix_rep attribute.
1111         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
1112         attribute.
1113         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
1114         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
1115         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
1116         iff operand 2 is const_int_operand.
1117         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
1118         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
1119         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
1120         instead of vex.
1121         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
1122         prefix_data16.
1123         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
1124         prefix_data16 attribute for movlpd and movhpd instructions.
1125         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
1126         length_immediate for shufpd instruction.
1127         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
1128         (avx_cmpp<avxmodesuffixf2c><mode>3,
1129         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
1130         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
1131         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
1132         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
1133         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
1134         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
1135         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
1136         prefix_data16 attribute for the first alternative to 1.
1137         (*avx_loadlps): Override length_immediate for the first alternative.
1138         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
1139         attributes for second alternative.
1140         (*vec_concatv2sf_sse4_1): Override length_immediate and
1141         prefix_data16 attributes for second alternative.
1142         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
1143         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
1144         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
1145         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
1146         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
1147         prefix_data16 and length_immediate to 1.
1148         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
1149         to 1.
1150         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
1151         prefix_extra attribute for variants that don't have 0f prefix alone.
1152         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
1153         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
1154         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
1155         *sse4_1_pextrd): Set length_immediate to 1.
1156         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
1157         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
1158         to 1.
1159         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
1160         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
1161         length_immediate to 1 for second alternative.
1162         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
1163         prefix_extra and length_immediate attributes for the first
1164         alternative.
1165         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
1166         first alternative.
1167         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
1168         to 1 for the first and third alternative.
1169         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
1170         alternative.
1171         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
1172         attribute.
1173         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
1174         attribute to 0.
1175         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
1176         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
1177         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
1178         *avx_psign<mode>3): Set prefix_extra attribute to 1.
1179         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
1180         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
1181         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
1182         ssse3_psign<mode>3): Override prefix_rex attribute.
1183         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
1184         (ssse3_palignrti): Override length_immediate to 1.
1185         (ssse3_palignrdi): Override length_immediate to 1, override
1186         prefix_rex attribute.
1187         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
1188         (sse4a_extrqi): Override length_immediate to 2.
1189         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
1190         (sse4a_insertq): Override prefix_data16 to 0.
1191         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
1192         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
1193         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
1194         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
1195         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
1196         and length_immediate to 1.
1197         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
1198         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
1199         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
1200         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
1201         and length_immediate to 1.
1202         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
1203         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
1204         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
1205         avx_ptest256): Override prefix_extra to 1.
1206         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
1207         Override prefix_data16 and length_immediate to 1.
1208         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
1209         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
1210         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
1211         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
1212         prefix_data16 to 0 and prefix_extra to 2.
1213         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
1214         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
1215         attribute.
1216         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
1217         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
1218         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
1219         and prefix_extra to 2.
1220         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
1221         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
1222         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
1223         avx_vpermilvar<mode>3,
1224         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
1225         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
1226         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
1227         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
1228         Override prefix_extra to 1.
1229         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
1230         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
1231         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
1232         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
1233         prefix_extra and length_immediate to 1.
1234         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
1235         modrm to 0.
1236         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
1237         to 1 for the first alternative.
1238         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
1239         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
1240         cases.
1241         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
1242         *movv2sf_internal_avx, *movv2sf_internal): Override
1243         prefix_rep attribute for certain alternatives.
1244         (*mov<mode>_internal): Override prefix_rep or prefix_data16
1245         attributes for certain alternatives.
1246         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
1247         attributes for certain alternatives.
1248         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
1249         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
1250         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
1251         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
1252         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
1253         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
1254         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
1255         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
1256         length_immediate to 1 if operand 2 is const_int_operand.
1257         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
1258         *vec_extractv2si_1): Set length_immediate attribute to 1.
1259         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
1260         using old 3DNOW insn rather than SSE/3DNOW_A.
1261         (mmx_emms, mmx_femms): Clear modrm attribute.
1262
1263 2009-05-29  Martin Jambor  <mjambor@suse.cz>
1264
1265         * tree-sra.c:  New implementation of SRA.
1266
1267         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
1268         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
1269         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
1270         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
1271         (SRA_MAX_STRUCTURE_COUNT): Removed.
1272         (SRA_FIELD_STRUCTURE_RATIO): Removed.
1273         * doc/invoke.texi (sra-max-structure-size): Removed.
1274         (sra-field-structure-ratio): Removed.
1275
1276 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1277
1278         PR middle-end/40291
1279         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
1280         before expansion.
1281
1282 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
1283
1284         PR rtl-optimization/40101
1285         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
1286         seqno.  Adjust comment.
1287         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
1288         inserting bookkeeping before a jump, the jump is not scheduled.
1289         When no positive seqno found, provide a value.  Add comment.
1290
1291 2009-05-29  Richard Guenther  <rguenther@suse.de>
1292
1293         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
1294         short-cutting on the first component.
1295
1296 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1297
1298         PR middle-end/39958
1299         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
1300         for trees other than decls/types.
1301
1302 2009-05-29  Richard Guenther  <rguenther@suse.de>
1303
1304         * tree-ssa-operands.c (get_expr_operands): Do not handle
1305         INDIRECT_REFs in the handled-component case.  Remove
1306         unused get_ref_base_and_extent case.
1307         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
1308         tree_low_cst and host_integerp where possible.
1309         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
1310         codes for equivalence.
1311         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
1312
1313 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
1314
1315         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
1316         to tmake_file for i[34567]86-*-cygwin*. 
1317
1318 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1319
1320         PR target/40017
1321         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
1322         (altivec_categorize_keyword, init_vector_keywords,
1323         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
1324         similar to bool.
1325
1326 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
1327
1328         * tree.c (handle_dll_attribute): Check if node is
1329         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
1330
1331 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
1332
1333         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
1334         component.
1335         (thumb2_zero_extendqidi2): Likewise.
1336
1337 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1338
1339         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
1340         instead of gen_movrt.
1341         * config/sh/sh.md (movrt): Remove.
1342
1343 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
1344
1345         * doc/invoke.texi (IA-64 Options):
1346         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
1347         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
1348         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
1349         -msched-prefer-non-control-spec-insns,
1350         -msched-stop-bits-after-every-cycle,
1351         -msched-count-spec-in-critical-path,
1352         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
1353         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
1354         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
1355         and -msched-spec-verbose.
1356
1357 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
1358
1359         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
1360         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
1361         error if used.
1362         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
1363
1364 2009-05-28  Richard Guenther  <rguenther@suse.de>
1365
1366         * tree-ssa-alias.c (ao_ref_init): New function.
1367         (ao_ref_base): Likewise.
1368         (ao_ref_base_alias_set): Likewise.
1369         (ao_ref_alias_set): Likewise.
1370         (refs_may_alias_p_1): Change signature.
1371         (refs_may_alias_p): Adjust.
1372         (refs_anti_dependent_p): Likewise.
1373         (refs_output_dependent_p): Likewise.
1374         (call_may_clobber_ref_p_1): Change signature.
1375         (call_may_clobber_ref_p): Adjust.
1376         (stmt_may_clobber_ref_p_1): New function split out from ...
1377         (stmt_may_clobber_ref_p): ... here.
1378         (maybe_skip_until): Adjust signature.
1379         (get_continuation_for_phi): Likewise.
1380         (walk_non_aliased_vuses): Likewise.
1381         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
1382         (ao_ref_init): Declare.
1383         (ao_ref_base): Likewise.
1384         (ao_ref_alias_set): Likewise.
1385         (stmt_may_clobber_ref_p_1): Likewise.
1386         (walk_non_aliased_vuses): Adjust.
1387         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
1388         (get_ref_from_reference_ops): remove.
1389         (vn_reference_lookup_2): Adjust signature.
1390         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
1391         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
1392         (vn_reference_lookup): Adjust.
1393         (vn_reference_insert): Likewise.
1394         (vn_reference_insert_pieces): Adjust signature.
1395         (visit_reference_op_call): Adjust.
1396         * tree-ssa-pre.c (get_expr_type): Simplify.
1397         (phi_translate_1): Adjust.
1398         (compute_avail): Likewise.
1399         (translate_vuse_through_block): Do not re-build trees.
1400         (value_dies_in_block_x): Likewise.
1401         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
1402         fields.
1403         (vn_reference_lookup_pieces): Adjust declaration.
1404         (vn_reference_insert_pieces): Likewise.
1405
1406 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
1407
1408         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
1409         with checking disabled.
1410
1411 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
1412
1413         PR target/37216
1414
1415         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
1416         macro definition for support of three-operand format aligned
1417         .comm directive in assembler on cygwin/pe/mingw target OS.
1418         * configure:  Regenerate.
1419         * config.h:  Regenerate.
1420
1421         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
1422         aligned form of .comm directive if -mpe-aligned-commons is in effect.
1423         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
1424
1425         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
1426         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
1427
1428 2009-05-28  Ira Rosen  <irar@il.ibm.com>
1429
1430         PR tree-optimization/40254
1431         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
1432         in analysis of basic blocks.
1433
1434 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
1435
1436         PR middle-end/33699
1437         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
1438         * target-def.h (TARGET_CONST_ANCHOR): New macro.
1439         (TARGET_INITIALIZER): Use it.
1440         * cse.c (CHEAPER): Move it up to the other macros.
1441         (insert): Rename this ...
1442         (insert_with_costs): ... to this.  Add cost parameters.  Update
1443         function comment.
1444         (insert): New function.  Call insert_with_costs.
1445         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
1446         find_reg_offset_for_const, try_const_anchors): New functions.
1447         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
1448         when using a const-anchor.  Call insert_const_anchors.
1449         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
1450         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
1451
1452 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
1453
1454         * tree-inline.c (remap_decls): Enable nonlocalized variables
1455         when not optimizing.
1456
1457 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
1458
1459         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
1460         Simplify other tests involving optimize.
1461
1462 2009-05-27  Tom Tromey  <tromey@redhat.com>
1463
1464         * unwind-dw2.c (_Unwind_DebugHook): New function.
1465         (uw_install_context): Call _Unwind_DebugHook.
1466
1467 2009-05-27  Tom Tromey  <tromey@redhat.com>
1468
1469         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
1470
1471 2009-05-27  Ian Lance Taylor  <iant@google.com>
1472
1473         * Makefile.in (LINKER, LINKER_FLAGS): Define.
1474         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
1475         (ALL_LINKERFLAGS): Define.
1476         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
1477         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1478         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
1479         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1480         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
1481         $(LINKER_FOR_BUILD).
1482         (build/gcov-iov$(build_exeext)): Likewise.
1483
1484 2009-05-27  Julian Brown  <julian@codesourcery.com>
1485
1486         * gcse.c (target.h): Include.
1487         (can_assign_to_reg_without_clobbers_p): Check that the target allows
1488         copy of argument to a pseudo register.
1489
1490 2009-05-27  Diego Novillo  <dnovillo@google.com>
1491
1492         * tree-ssa-live.c (dump_scope_block): Document arguments.
1493         (dump_scope_blocks): Document.
1494         (debug_scope_blocks): New.
1495         * tree-flow.h (debug_scope_blocks): Declare.
1496
1497 2009-05-21  Denis Chertykov  <denisc@overta.ru>
1498
1499         * doc/contrib.texi (Contributors): Add myself to the list.
1500
1501 2009-05-27  Olivier Hainque  <hainque@adacore.com>
1502
1503         * expr.c (target_align): New function.  Alignment the TARGET of an
1504         assignment may be assume to have.
1505         (highest_pow2_factor_for_target): Use it instead of relying on
1506         immediate tree attributes of TARGET, not necessarily honored when
1507         intermediate bitfields are involved.
1508         
1509 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
1510
1511         PR target/40266
1512         * config/i386/driver-i386.c (host_detect_local_cpu): Support
1513         AVX, SSE4, AES, PCLMUL and POPCNT.
1514
1515 2009-05-27  Diego Novillo  <dnovillo@google.com>
1516
1517         * tree-pretty-print.c (dump_location): New.
1518         (dump_generic_node): Call it.
1519         Factor code to handle BLOCK nodes ...
1520         (dump_block_node): ... here.
1521
1522 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
1523
1524         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
1525         with it.
1526         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
1527         included.
1528         * gcc-plugin.h: Include config.h and system.h.
1529         (IN_GCC): Define if not defined.
1530
1531 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
1532
1533         PR middle-end/40249
1534         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
1535         with -fno-inline.
1536
1537 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
1538
1539         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
1540         applicable.
1541         * config/m32r/m32r.h: Ditto.
1542         * config/m32r/m32r.md: Ditto.
1543         * config/m32r/predicates.md: Ditto.
1544
1545 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
1546
1547         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
1548
1549 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
1550
1551         * doc/plugins.texi
1552         (Loading plugins): typo.
1553         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
1554         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1555         (Interacting with the GCC Garbage Collector): Added new section.
1556         (Giving information about a plugin): Added new section for
1557         PLUGIN_INFO.
1558         * ggc.h (ggc_register_root_tab): Added declaration.
1559         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
1560         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
1561         (register_callback): Improved comment in declaration.
1562         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
1563         (extra_root_vec) Added static variable for dynamic roots registration.
1564         (ggc_register_root_tab) Added new routine.
1565         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
1566         PLUGIN_GGC_MARKING event.
1567         * ggc-zone.c: Include plugin.h.
1568         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
1569         * ggc-page.c: Include plugin.h.
1570         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
1571         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
1572         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
1573         (register_callback): check lack of callbacks for
1574         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
1575         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
1576         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
1577         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1578         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
1579         dependency on plugin.h.
1580         (plugin.o): Added dependency on ggc.h...
1581
1582 2009-05-26  Richard Guenther  <rguenther@suse.de>
1583
1584         PR middle-end/40248
1585         Revert
1586         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1587         with mismatched comparison modes.
1588
1589         * expr.c (expand_expr_real_1): Expand the operand of a
1590         VIEW_CONVERT_EXPR in its natural mode.
1591
1592 2009-05-26  Ian Lance Taylor  <iant@google.com>
1593
1594         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
1595         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
1596         (ALL_COMPILERFLAGS): Define.
1597         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
1598         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1599         (collect2$(exeext), collect2.o): Likewise.
1600         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
1601         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
1602         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
1603         (libbackend.o, intl.o, cppdefault.o): Likewise.
1604         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1605         (build/%.o): Use $(COMPILER_FOR_BUILD).
1606         (build/gen%$(build_exeext)): Likewise.
1607         (build/gcov-iov$(build_exeext)): LIkewise.
1608         * config/t-darwin (darwin.o): Use $(COMPILER).
1609         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
1610         * config/t-sol2 (sol2-c.o): Likewise.
1611         (sol2.o): Likewise.
1612         * config/t-vxworks (vxworks.o): Likewise.
1613         * config/x-darwin (host-darwin.o): Likewise.
1614         * config/x-hpux (host-hpux.o): Likewise.
1615         * config/x-linux (host-linux.o): Likewise.
1616         * config/x-solaris (host-solaris.o): Likewise.
1617         * config/alpha/x-alpha (driver-alpha.o): Likewise.
1618         * config/arm/t-arm (arm-c.o): Likewise.
1619         * config/arm/t-pe (pe.o): Likewise.
1620         * config/arm/t-wince-pe (pe.o): Likewise.
1621         * config/i386/t-cygming (winnt.o): Likewise.
1622         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
1623         * config/i386/t-cygwin (cygwin1.o): Likewise.
1624         (cygwin2.o): Likewise.
1625         * config/i386/t-i386 (i386-c.o): Likewise.
1626         * config/i386/t-interix (winnt.o): Likewise.
1627         * config/i386/t-netware (netware.o): Likewise.
1628         * config/i386/t-nwld (nwld.o): Likewise.
1629         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
1630         * config/i386/x-i386 (driver-i386.o): Likewise.
1631         * config/i386/x-cygwin (host-cygwin.o): Likewise.
1632         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
1633         * config/ia64/t-ia64 (ia64-c.o): Likewise.
1634         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
1635         * config/mips/x-native (driver-native.o): Likewise.
1636         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
1637         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
1638         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
1639         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
1640         * config/score/t-score-elf (score7.o): Likewise.
1641         (score3.o): Likewise.
1642         * config/sh/t-sh (sh-c.o): Likewise.
1643         * config/sh/t-symbian (sh-c.o): Likewise.
1644         (symbian.o): Likewise.
1645         * config/spu/t-spu-elf (spu-c.o): Likewise.
1646         * config/v850/t-v850 (v850-c.o): Likewise.
1647         * config/v850/t-v850e (v850-c.o): Likewise.
1648
1649 2009-05-26  Richard Guenther  <rguenther@suse.de>
1650
1651         PR tree-optimization/40122
1652         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
1653         VECTOR_CSTs if possible.
1654         (fold_gimple_assign): Likewise.
1655
1656 2009-05-26  Richard Guenther  <rguenther@suse.de>
1657
1658         PR middle-end/40252
1659         * fold-const.c (fold_binary): Use the correct types for building
1660         rotates.
1661
1662 2009-05-26  Richard Guenther  <rguenther@suse.de>
1663
1664         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
1665         redundant calls to merge_alias_info.
1666         (bump_vector_ptr): Likewise.
1667         * tree-ssa-copy.c (merge_alias_info): Remove.
1668         (replace_exp_1): Remove call to merge_alias_info.
1669         (propagate_tree_value): Likewise.
1670         (fini_copy_prop): Propagate points-to info.
1671         * tree-flow.h (merge_alias_info): Remove.
1672
1673 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
1674
1675         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
1676
1677 2009-05-25  Jan Hubicka  <jh@suse.cz>
1678
1679         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1680         * cgraph.h (struct inline_summary): New filed self_wize,
1681         size_inlining_benefit, self_time and time_inlining_benefit.
1682         (struct cgraph_global_info): Replace insns by time ans size fields.
1683         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1684         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1685         (ipcp_update_callgraph): Do not touch function bodies.
1686         * ipa-inline.c: Include except.h
1687         (MAX_TIME): New constant.
1688         (overall_insns): Remove.
1689         (leaf_node_p): New.
1690         (overall_size, max_benefit): New static variables.
1691         (cgraph_estimate_time_after_inlining): New function.
1692         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1693         (cgraph_clone_inlined_nodes): Update size.
1694         (cgraph_mark_inline_edge): Update size.
1695         (cgraph_estimate_growth): Use size info.
1696         (cgraph_check_inline_limits): Check size.
1697         (cgraph_default_inline_p): Likewise.
1698         (cgraph_edge_badness): Compute badness based on benefit and size cost.
1699         (cgraph_decide_recursive_inlining): Check size.
1700         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
1701         and times.
1702         (cgraph_decide_inlining): Likewise.
1703         (cgraph_decide_inlining_incrementally): Likewise; honor
1704         PARAM_EARLY_INLINING_INSNS.
1705         (likely_eliminated_by_inlining_p): New predicate.
1706         (estimate_function_body_sizes): New function.
1707         (compute_inline_parameters): Use it.
1708         * except.c (must_not_throw_labels): New function.
1709         * except.h (must_not_throw_labels): Declare.
1710         * tree-inline.c (init_inline_once): Kill inlining_weigths
1711         * tree-ssa-structalias.c: Avoid uninitialized warning.
1712         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1713         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1714         (PARAM_INLINE_CALL_COST): Remove.
1715         (PARAM_EARLY_INLINING_INSNS): New.
1716
1717 2009-05-25  Richard Guenther  <rguenther@suse.de>
1718
1719         PR tree-optimization/36327
1720         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
1721         callback for reference translation or lookup at the point of may-defs.
1722         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
1723         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
1724         for union COMPONENT_REFs.
1725         (vn_reference_lookup_3): New callback.  Lookup from memset
1726         and CONSTRUCTOR assignment, translate through struct copies.
1727         (vn_reference_lookup_pieces): Make sure to not free the
1728         passed operands array.  Adjust walk_non_aliased_vuses call.
1729         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
1730         make sure we do not leak memory.
1731
1732 2009-05-25  Richard Guenther  <rguenther@suse.de>
1733
1734         * tree-ssa-alias.h (dump_points_to_solution): Declare.
1735         * tree-inline.c (expand_call_inline): Reset the escaped and
1736         callused solutions.
1737         * tree-ssa-structalias.c (pass_build_ealias): New.
1738         * tree-pass.h (pass_build_ealias): Declare.
1739         * passes.c (init_optimization_passes): Add PTA during 
1740         early optimizations.
1741         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
1742         and CALLUSED solutions.
1743         (dump_points_to_solution): New function, split out from ...
1744         (dump_points_to_info_for): ... here.
1745         * tree-parloops.c (parallelize_loops): Reset the escaped and
1746         callused solutions.
1747
1748 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1749
1750         PR bootstrap/40027
1751         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
1752         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
1753
1754 2009-05-25  Ira Rosen  <irar@il.ibm.com>
1755
1756         PR tree-optimization/40238
1757         * tree-vect-stmts.c (vect_init_vector): Insert initialization
1758         statements after basic block's labels.
1759         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
1760         to free the allocated memory.
1761
1762 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
1763
1764         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
1765         return address with a USE.
1766
1767 2009-05-24  Richard Guenther  <rguenther@suse.de>
1768
1769         PR middle-end/40233
1770         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
1771         array type from the main variant of the inner type.
1772
1773 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1774
1775         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
1776         definition to bool (from int) to un-break build.
1777         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
1778
1779 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
1780
1781         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
1782         discard_stmt_changes): Delete.
1783         * tree-ssa-operands.c (scb_stack): Delete.
1784         (init_ssa_operands): Do not initialize it.
1785         (fini_ssa_operands): Do not free it.
1786         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
1787
1788         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
1789         update_stmt, remove the others.  Fix comments.
1790         * tree-dfa.c (optimize_stack_restore): Likewise.
1791         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
1792         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
1793         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
1794         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
1795         Likewise.
1796         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
1797         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1798         (dom_opt_finalize_block): Likewise, adjusting access to
1799         stmts_to_rescan.
1800         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
1801         (stmts_to_rescan): Change item type to gimple.
1802         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
1803
1804 2009-05-24  Ira Rosen  <irar@il.ibm.com>
1805
1806         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
1807         * tree-pass.h (pass_slp_vectorize): New pass.
1808         * params.h (SLP_MAX_INSNS_IN_BB): Define.
1809         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
1810         * tree-vectorizer.c (timevar.h): Include.
1811         (user_vect_verbosity_level): Declare.
1812         (vect_location): Fix comment.
1813         (vect_set_verbosity_level): Update user_vect_verbosity_level
1814         instead of vect_verbosity_level.
1815         (vect_set_dump_settings): Add an argument. Ignore user defined
1816         verbosity if dump flags require higher level of verbosity. Print to
1817         stderr only for loop vectorization.
1818         (vectorize_loops): Update call to vect_set_dump_settings.
1819         (execute_vect_slp): New function.
1820         (gate_vect_slp): Likewise.
1821         (struct gimple_opt_pass pass_slp_vectorize): New.
1822         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
1823         access its members.
1824         (vec_info_for_bb): New function.
1825         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
1826         (VECTORIZATION_ENABLED): New macro.
1827         (SLP_ENABLED, SLP_DISABLED): Likewise.
1828         (vect_is_simple_use): Add bb_vec_info argument.
1829         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
1830         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
1831         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
1832         vect_schedule_slp, vect_analyze_slp): Likewise.
1833         (vect_analyze_stmt): Add slp_tree argument.
1834         (find_bb_location): Declare.
1835         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
1836         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
1837         (vect_analyze_loop_operations, vect_analyze_loop,
1838         get_initial_def_for_induction, vect_create_epilog_for_reduction,
1839         vect_finalize_reduction, vectorizable_reduction,
1840         vectorizable_live_operation, vect_transform_loop): Likewise.
1841         * tree-data-ref.c (dr_analyze_innermost): Update comment,
1842         skip evolution analysis if analyzing a basic block.
1843         (dr_analyze_indices): Likewise.
1844         (initialize_data_dependence_relation): Skip the test whether the
1845         object is invariant for basic blocks.
1846         (compute_all_dependences): Skip dependence analysis for data
1847         references in basic blocks.
1848         (find_data_references_in_stmt): Don't fail in case of invariant
1849         access in basic block.
1850         (find_data_references_in_bb): New function.
1851         (find_data_references_in_loop): Move code to
1852         find_data_references_in_bb and add a call to it.
1853         (compute_data_dependences_for_bb): New function.
1854         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
1855         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
1856         that STEP is 0.
1857         (vect_analyze_data_ref_dependence): Check for interleaving in case of
1858         unknown dependence in basic block and fail in case of dependence in
1859         basic block.
1860         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
1861         dependence instances from either loop or basic block vectorization
1862         info.
1863         (vect_compute_data_ref_alignment): Check if it is loop vectorization
1864         before calling nested_in_vect_loop_p.
1865         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
1866         dependence instances from either loop or basic block vectorization
1867         info.
1868         (vect_verify_datarefs_alignment): Likewise.
1869         (vect_enhance_data_refs_alignment): Adjust function calls.
1870         (vect_analyze_data_refs_alignment): Likewise.
1871         (vect_analyze_group_access): Fix printing. Skip different checks if
1872         DR_STEP is 0. Keep strided stores either in loop or basic block
1873         vectorization data structure. Fix indentation.
1874         (vect_analyze_data_ref_access): Fix comments, allow zero step in
1875         basic blocks.
1876         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
1877         dependence instances from either loop or basic block vectorization
1878         info.
1879         (vect_analyze_data_refs): Update comment. Call
1880         compute_data_dependences_for_bb to analyze basic blocks.
1881         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
1882         case of loop vectorization. In case of basic block vectorization use
1883         data-ref itself as a base.
1884         (vect_create_data_ref_ptr): In case of basic block vectorization:
1885         don't advance the pointer, add new statements before the current
1886         statement.  Adjust function calls.
1887         (vect_supportable_dr_alignment): Support only aligned accesses in
1888         basic block vectorization.
1889         * common.opt (ftree-slp-vectorize): New flag.
1890         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
1891         (vect_pattern_recog_1): Likewise.
1892         * tree-vect-stmts.c (process_use): Likewise.
1893         (vect_init_vector): Add new statements in the beginning of the basic
1894         block in case of basic block SLP.
1895         (vect_get_vec_def_for_operand): Adjust function calls.
1896         (vect_finish_stmt_generation): Likewise.
1897         (vectorizable_call): Add assert that it is loop vectorization, adjust
1898         function calls.
1899         (vectorizable_conversion, vectorizable_assignment): Likewise.
1900         (vectorizable_operation): In case of basic block SLP, take
1901         vectorization factor from statement's type and skip the relevance
1902         check. Adjust function calls.
1903         (vectorizable_type_demotion): Add assert that it is loop
1904         vectorization, adjust function calls.
1905         (vectorizable_type_promotion): Likewise.
1906         (vectorizable_store): Check for outer loop only in case of loop
1907         vectorization. Adjust function calls. For basic blocks, skip the
1908         relevance check and don't advance pointers.
1909         (vectorizable_load): Likewise.
1910         (vectorizable_condition): Add assert that it is loop vectorization,
1911         adjust function calls.
1912         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
1913         that it is not reduction, get vector type, call only supported
1914         functions, skip loop specific parts.
1915         (vect_transform_stmt): Check for outer loop only in case of loop
1916         vectorization.
1917         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
1918         (vect_is_simple_use): Fix comment, add new argument, fix conditions
1919         for external definition.
1920         * passes.c (pass_slp_vectorize): New pass.
1921         * tree-vect-slp.c (find_bb_location): New function.
1922         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
1923         check for patterns only in loops.
1924         (vect_build_slp_tree): Add argument, adjust function calls, fail in
1925         case of multiple types in basic block SLP.
1926         (vect_mark_slp_stmts_relevant): New function.
1927         (vect_supported_load_permutation_p): Fix comment.
1928         (vect_analyze_slp_instance): Add argument. In case of basic block
1929         SLP, take vectorization factor from statement's type, check that
1930         unrolling factor is 1. Adjust function call. Save SLP instance in
1931         either loop or basic block vectorization structure. Return FALSE,
1932         if SLP failed.
1933         (vect_analyze_slp): Add argument. Get strided stores groups from
1934         either loop or basic block vectorization structure. Return FALSE
1935         if basic block SLP failed.
1936         (new_bb_vec_info): New function.
1937         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
1938         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
1939         (vect_schedule_slp): Add argument. Get SLP instances from either
1940         loop or basic block vectorization structure. Set vectorization factor
1941         to be 1 for basic block SLP.
1942         (vect_slp_transform_bb): New function.
1943         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
1944
1945 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
1946
1947         * final.c (shorten_branches): Do not align labels for jump tables.
1948         (final_scan_insn): Use JUMP_TABLE_DATA_P.
1949
1950 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
1951
1952         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
1953         Remove outdated reference to flow.c and fix nits.
1954         * doc/gccint.texi: Tweak RTL description.
1955         * doc/rtl.texi: Likewise.
1956
1957 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
1958
1959         * config/avr/avr.c: Change my email address.
1960         * config/avr/avr.h: Likewise.
1961         * config/avr/avr.md: Likewise.
1962         * config/avr/avr-protos.h: Likewise.
1963         * config/avr/libgcc.S: Likewise.
1964
1965 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1966
1967         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
1968         (spu_split_load, spu_split_store): Change return type to int.
1969         (spu_split_convert): Declare.
1970         * config/spu/predicates.md (spu_mem_operand): Remove.
1971         (spu_mov_operand): Update.
1972         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
1973         * config/spu/spu.c (regno_aligned_for_load): Remove.
1974         (reg_aligned_for_addr, spu_expand_load): Define.
1975         (spu_expand_extv): Reimplement and handle MEM.
1976         (spu_expand_insv): Handle MEM.
1977         (spu_sched_reorder): Handle insn's with length 0.
1978         (spu_legitimate_address_p): Reimplement.
1979         (store_with_one_insn_p): Return TRUE for any mode with size
1980         larger than 16 bytes.
1981         (address_needs_split): Define.
1982         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
1983         operands.
1984         (spu_convert_move): Define.
1985         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
1986         (spu_split_store): Change all MEM's to TImode.
1987         (spu_init_expanders): Preallocate registers that correspond to
1988         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
1989         mark_reg_pointer.
1990         (spu_split_convert): Define.
1991         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
1992         (_move<mode>, _movdi, _movti): Update predicate and condition.
1993         (load, store): Change to define_split.
1994         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
1995         extend<mode>ti2.
1996         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
1997         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
1998         define_insn_and_split of lshr<mode>3.
1999         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
2000         (<v>ashr<mode>3_imm): Define.
2001         (extv, extzv, insv): Allow MEM operands.
2002         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
2003         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
2004         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
2005         (_spu_convert2): Change to define_insn_and_split and remove the
2006         corresponding define_peephole2.
2007         (stack_protect_set, stack_protect_test, stack_protect_test_si):
2008         Change predicates to memory_operand.
2009
2010 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
2011
2012         * config/arm/thumb2.md: Add 16-bit multiply instructions.
2013
2014 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
2015
2016         PR tree-optimization/40219
2017         * tree.c (iterative_hash_expr): Make sure the builtin function is
2018         a normal builtin function and not a front end or back end builtin
2019         before indexing into the built_in_decls array.
2020
2021 2009-05-22  Richard Guenther  <rguenther@suse.de>
2022
2023         PR middle-end/38964
2024         * alias.c (write_dependence_p): Do not use TBAA for answering
2025         anti-dependence or output-dependence.
2026         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
2027         (emit_pointer_definition): Remove.
2028         (emit_alias_warning): Likewise.
2029         (find_what_var_points_to): Remove TBAA pruning code.
2030         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
2031         violations.
2032         (compute_points_to_sets): Remove code computing the set of
2033         dereferenced pointers.
2034         * tree-data-ref.c (dr_may_alias_p): Properly use the split
2035         oracle for querying anti and output dependencies.
2036         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
2037         if TBAA may be applied.
2038         (refs_anti_dependent_p): New function.
2039         (refs_output_dependent_p): Likewise.
2040         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
2041         (refs_output_dependent_p): Likewise.
2042         * doc/tree-ssa.texi (Memory model): New section.
2043         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
2044         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
2045         * cfgexpand.c (expand_gimple_basic_block): Do not handle
2046         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
2047         * expr.c (expand_expr_real_1): Likewise.
2048         * gimple-low.c (lower_stmt): Likewise.
2049         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
2050         (dump_gimple_cdt): Remove.
2051         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
2052         (gimple_size): Likewise.
2053         (walk_gimple_op): Likewise.
2054         (is_gimple_stmt): Likewise.
2055         (walk_stmt_load_store_addr_ops): Likewise.
2056         (gimple_build_cdt): Remove.
2057         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
2058         * gimple.h (gimple_cdt_new_type): Remove.
2059         (gimple_cdt_new_type_ptr): Likewise.
2060         (gimple_cdt_set_new_type): Likewise.
2061         (gimple_cdt_location): Likewise.
2062         (gimple_cdt_location_ptr): Likewise.
2063         (gimple_cdt_set_location): Likewise.
2064         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
2065         * tree-cfg.c (remove_useless_stmts_1): Do not handle
2066         GIMPLE_CHANGE_DYNAMIC_TYPE.
2067         (verify_types_in_gimple_stmt): Likewise.
2068         * tree-inline.c (estimate_num_insns): Likewise.
2069         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
2070         (copy_decl_to_var): Likewise.
2071         (copy_result_decl_to_var): Likewise.
2072         * tree-pretty-print.c (dump_generic_node): Do not handle
2073         CHANGE_DYNAMIC_TYPE_EXPR.
2074         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
2075         * tree-ssa-operands.c (get_expr_operands): Likewise.
2076         * tree-ssa-structalias.c (struct variable_info): Remove
2077         no_tbaa_pruning member.
2078         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
2079         (unify_nodes): Do not copy it.
2080         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
2081         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
2082         (set_uids_in_ptset): Do not check it.
2083         (find_what_var_points_to): Likewise.
2084         (compute_tbaa_pruning): Remove.
2085         (compute_points_to_sets): Do not call it.
2086         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
2087         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
2088         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
2089         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
2090         (DECL_NO_TBAA_P): Likewise.
2091         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
2092         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
2093         (expand_omp_atomic_pipeline): Do not set it.
2094         * print-tree.c (print_node): Do not dump it.
2095         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
2096         redundant check.
2097
2098 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
2099
2100         PR target/39856
2101         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
2102         for clobber.
2103
2104 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
2105
2106         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
2107         non-external.
2108
2109 2009-05-22  Ben Elliston  <bje@au.ibm.com>
2110
2111         * Makefile.in (bversion.h, s-bversion): New targets.
2112         (TOPLEV_H): Add bversion.h.
2113         * toplev.h: Include "bversion.h".
2114         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
2115         the __format__ attribute only if compiling with the same version
2116         of GCC as the sources (the "build version").
2117
2118 2009-05-22  Ben Elliston  <bje@au.ibm.com>
2119
2120         * c-format.c (handle_format_attribute): Fix comment typo.
2121
2122 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
2123
2124         PR target/37846
2125         * config/ia64/ia64.opt (mfused-madd): New.
2126         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
2127         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
2128         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
2129         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
2130         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
2131         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
2132         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
2133         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
2134         instruction if !TARGET_FUSED_MADD.
2135         (fpma, fpms): Remove colon from name.
2136
2137 2009-05-22  Richard Guenther  <rguenther@suse.de>
2138
2139         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
2140         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
2141         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
2142         TARGET_MEM_REF.
2143         (create_expression_by_pieces): Only convert if necessary.
2144         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
2145         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
2146
2147 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
2148
2149         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
2150         regular pattern from a template and rename it ...
2151         (*extzv_truncsi_exts): ... to this.
2152
2153 2009-05-21  Richard Guenther  <rguenther@suse.de>
2154
2155         * cgraph.h (struct cgraph_node): Remove inline_decl member.
2156         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
2157         (cgraph_default_inline_p): Likewise.
2158         (cgraph_decide_inlining_incrementally): Likewise.
2159
2160 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
2161             Uros Bizjak  <ubizjak@gmail.com>
2162
2163         * config/i386/cpuid.h (bit_MOVBE): New.
2164
2165         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
2166
2167         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
2168         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
2169         (ix86_handle_option): Handle OPT_mmovbe.
2170         (ix86_target_string): Add -mmovbe.
2171         (pta_flags): Add PTA_MOVBE.
2172         (processor_alias_table): Add PTA_MOVBE to "atom".
2173         (override_options): Handle PTA_MOVBE.
2174
2175         * config/i386/i386.h (TARGET_MOVBE): New.
2176
2177         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
2178         (*bswapsi_movbe): New.
2179         (*bswapdi_movbe): Likewise.
2180         (bswapdi2): Renamed to ...
2181         (*bswapdi_1): This.
2182         (bswapdi2): New expander.
2183
2184         * config/i386/i386.opt (mmovbe): New.
2185
2186         * doc/invoke.texi: Document -mmovbe.
2187
2188 2009-05-21  Taras Glek  <tglek@mozilla.com>
2189
2190         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
2191         * gcc-plugin.h (plugin_init): Updated signature.
2192         * gcc-plugin.h (plugin_name_args): Moved to this header.
2193         * doc/plugins.texi (plugin_init): Updated documention to reflect
2194         API change.
2195         * doc/plugins.texi (plugin_name_args): Added to documention.
2196
2197 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
2198
2199         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
2200         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
2201
2202 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
2203
2204         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
2205         JUMP_TABLE_DATA_P predicates where applicable.
2206         * config/i386/predicates.md: Ditto.
2207         * config/i386/sse.md: Ditto.
2208
2209 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
2210
2211         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
2212         operand2 -128 override length_immediate attribute to 1.
2213         * config/i386/predicates.md (constm128_operand): New predicate.
2214
2215         * config/i386/i386.c (memory_address_length): Handle %r12
2216         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
2217         also check REGNO.
2218         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
2219         mode look through optional ZERO_EXTEND and SUBREG.
2220         * config/i386/i386.md (R12_REG): New define_constant.
2221         (prefix_data16): For sse unit set also for MODE_TI insns.
2222         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
2223         insns set if operand 1 is ext_QIreg_operand.
2224         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
2225         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
2226         immediate.
2227         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
2228         mode from MODE_DI to MODE_SI.
2229         (movdi_1_rex64): Override modrm and length_immediate attributes
2230         only for movabs (TYPE_IMOV, alternative 2).
2231         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
2232         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
2233         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
2234         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
2235         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
2236         prefix_rex attribute if DImode.
2237         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
2238         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
2239         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
2240         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
2241         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
2242         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
2243         Likewise.  For TYPE_IMOV clear length_immediate attribute.
2244         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
2245         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
2246         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
2247         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
2248         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
2249         or one operand TYPE_ISHIFT.
2250         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
2251         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
2252         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
2253         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
2254         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
2255         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
2256         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
2257         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
2258         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
2259         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
2260         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
2261         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
2262         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
2263         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
2264         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
2265         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
2266         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
2267         set mode attribute, don't override length attribute.
2268         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
2269         to 1.
2270         (return_internal_long): Set length attribute to 2 instead of 1.
2271         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
2272         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
2273         prefix_rex attribute.
2274         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
2275         New predicates.
2276         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
2277
2278 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2279
2280         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
2281
2282 2009-05-20  Ian Lance Taylor  <iant@google.com>
2283
2284         * tree.c (build_tree_list_vec_stat): New function.
2285         (ctor_to_vec): New function.
2286         (build_nt_call_vec): New function.
2287         (build_call_array): Change args to be a const pointer.
2288         (build_call_vec): New function.
2289         * tree.h (build_nt_call_vec): Declare.
2290         (build_tree_list_vec_stat): Declare.
2291         (build_tree_list_vec): Define.
2292         (build_call_array): Update declaration.
2293         (build_call_vec): Declare.
2294         (ctor_to_vec): Declare.
2295         * c-common.c (tree_vector_cache): New static variable.
2296         (make_tree_vector): New function.
2297         (release_tree_vector): New function.
2298         (make_tree_vector_single): New function.
2299         (make_tree_vector_copy): New function.
2300         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
2301         (make_tree_vector_single, make_tree_vector_copy): Declare.
2302         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
2303         (c_parser_expr_list): Don't manage cache here, instead call
2304         make_tree_vector.
2305         (c_parser_release_expr_list): Remove static function.
2306         (c_parser_vec_to_tree_list): Remove static function.
2307         (c_parser_attributes): Call build_tree_list_vec instead of
2308         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
2309         c_parser_release_expr_list.
2310         (c_parser_postfix_expression_after_primary): Likewise.
2311         (c_parser_objc_keywordexpr): Likewise.
2312
2313 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
2314
2315         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
2316         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
2317         TARGET_CONVERT_TO_TYPE.
2318         * hooks.c (hook_tree_const_tree_null): Define.
2319         * hooks.h (hook_tree_const_tree_null): Declare.
2320         * target.h (struct gcc_target):  Add invalid_parameter_type,
2321         invalid_return_type, promoted_type, and convert_to_type fields.
2322         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
2323         (TARGET_INVALID_RETURN_TYPE): Define.
2324         (TARGET_PROMOTED_TYPE): Define.
2325         (TARGET_CONVERT_TO_TYPE): Define.
2326         (TARGET_INITIALIZER): Update for new fields.
2327         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
2328         (grokparms): Check targetm.invalid_parameter_type.
2329         * c-typeck.c (default_conversion): Check targetm.promoted_type.
2330         * c-convert.c (convert): Check targetm.convert_to_type.
2331
2332 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
2333
2334         * config/mips/mips.md (*extenddi_truncate<mode>,
2335         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
2336         defintions.
2337         (*extendhi_truncateqi): New define_insn_and_sptit.
2338
2339 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
2340
2341         PR middle-end/40204
2342         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
2343         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
2344
2345 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
2346
2347         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
2348         the operand of VIEW_CONVERT_EXPR.
2349
2350 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
2351
2352         * config/i386/driver-i386.c (host_detect_local_cpu): Check
2353         extended family and model for Intel processors.  Support Intel Atom.
2354
2355 2009-05-20  Olivier Hainque  <hainque@adacore.com>
2356
2357         * gstab.h (stab_code_type): Define, to be used instead of the
2358         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
2359         notice.
2360         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
2361         occurrences by stab_code_type.
2362         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
2363
2364 2009-05-20  Martin Jambor  <mjambor@suse.cz>
2365
2366         * tree-flow.h (insert_edge_copies_seq): Undeclare.
2367         (sra_insert_before): Likewise.
2368         (sra_insert_after): Likewise.
2369         (sra_init_cache): Likewise.
2370         (sra_type_can_be_decomposed_p): Likewise.
2371         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
2372         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
2373         (sra_insert_before): Likewise.
2374         (sra_insert_after): Likewise.
2375         (sra_init_cache): Likewise.
2376         (insert_edge_copies_seq): Made static and moved upwards.
2377
2378         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
2379         case.
2380
2381         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
2382
2383         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
2384         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
2385         simple copies.
2386
2387 2009-05-20  Richard Guenther  <rguenther@suse.de>
2388
2389         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
2390         with mismatched comparison modes.
2391
2392 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2393
2394         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
2395         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
2396         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
2397         with shifts for Thumb2.
2398         (orsi_notsi): New for orn.
2399         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
2400         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
2401         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
2402         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
2403         Don't invert remainder for IOR.
2404         
2405 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
2406
2407         PR tree-optimization/40087
2408         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
2409         number_of_iterations_ne): Rename never_infinite argument.
2410         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
2411         number_of_iterations_le): Handle pointer-type ivs when
2412         exit_must_be_taken is false.
2413         (number_of_iterations_cond):  Do not always assume that
2414         exit_must_be_taken if the control variable is a pointer.
2415
2416 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2417
2418         * c-typeck.c (build_binary_op): Allow % on integal vectors.
2419         * doc/extend.texi (Vector Extension): Document that % is allowed too.
2420
2421 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
2422
2423         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
2424         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
2425
2426 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2427
2428         PR c/40172
2429         * c.opt (Wlogical-op): Disabled by default.
2430         * c-opt (c_common_post_options): Do not enable Wlogical-op with
2431         Wextra.
2432         * doc/invoke.texi (Wlogical-op): Likewise.
2433         
2434 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
2435
2436         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
2437         into CASE_CONVERT.
2438         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
2439         Propagate the type of the first operand.
2440         <ASSERT_EXPR>: Simplify.
2441         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
2442         Rewrite using the RHS code as discriminant.
2443         <NOP_EXPR>: Turn into CASE_CONVERT.
2444         <PLUS_EXPR>: Propagate the type of the first operand.
2445
2446 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
2447
2448         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
2449         (ia64_dconst_0_375): New.
2450         * config/ia64/ia64.c (ia64_override_options): Remove
2451         -minline-sqrt-min-latency warning.
2452         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
2453         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
2454         * config/ia64/ia64.md (*sqrt_approx): Remove.
2455         (sqrtsf2): Remove #if 0.
2456         (sqrtsf2_internal_thr): Rewrite and move to div.md.
2457         (sqrtdf): Remove assert.
2458         (sqrtdf2_internal_thr): Rewrite and move to div.md.
2459         (sqrtxf2): Remove #if 0.
2460         (sqrtxf2_internal_thr): Rewrite and move to div.md.
2461         * div.md (sqrt_approx_rf): New.
2462         (sqrtsf2_internal_thr): New implementation.
2463         (sqrtsf2_internal_lat): New.
2464         (sqrtdf2_internal_thr: New implementation.
2465         (sqrtxf2_internal): New implementation.
2466
2467 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
2468             Hans-Peter Nilsson  <hp@axis.com>
2469
2470         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
2471         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
2472         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
2473         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
2474         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
2475         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
2476         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
2477         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
2478         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
2479         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
2480         * c-common.c: ...from here.
2481
2482 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2483
2484         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
2485
2486 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2487
2488         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
2489
2490 2009-05-19  Ben Elliston  <bje@au.ibm.com>
2491
2492         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
2493         assignments with memcpy calls.
2494         (add_fdes): Likewise.
2495         (binary_search_unencoded_fdes): Likewise.
2496         (linear_search_fdes): Eliminate type puns.
2497         
2498 2009-05-19  Richard Guenther  <rguenther@suse.de>
2499
2500         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
2501         not falsely claim to have propagated into all uses.
2502
2503 2009-05-19  Ben Elliston  <bje@au.ibm.com>
2504
2505         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
2506         version to v3.0.
2507
2508 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2509
2510         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
2511         * config/sh/sh.c (sh_legitimate_address_p): Make static.
2512         (TARGET_LEGITIMATE_ADDRESS_P): New.
2513         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2514         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2515         
2516 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
2517
2518         PR debug/40109
2519         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
2520         child of the containing namespace's DIE.
2521
2522 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
2523
2524         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
2525         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
2526         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
2527         extend patterns.
2528
2529 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
2530
2531         PR target/39942
2532         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
2533         gen_align with gen_pad.
2534         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
2535         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
2536
2537         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
2538         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
2539
2540         * config/i386/i386.md (align): Renamed to ...
2541         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
2542         ASM_OUTPUT_MAX_SKIP_PAD.
2543
2544 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
2545
2546         * config.gcc: Fix variable syntax.
2547
2548         PR target/39531
2549         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
2550         before calling exact_log2.
2551         (output_iorsi3): Likewise.
2552         (output_xorsi3): Likewise.
2553
2554 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2555
2556         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
2557         for the none zero constant operand except for EQ and NE
2558         comprisons even when the first operand is R0.
2559
2560 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
2561
2562         * config/s390/2064.md: Remove trailing whitespaces.
2563         * config/s390/2084.md: Likewise.
2564         * config/s390/constraints.md: Likewise.
2565         * config/s390/fixdfdi.h: Likewise.
2566         * config/s390/libgcc-glibc.ver: Likewise.
2567         * config/s390/s390-modes.def: Likewise.
2568         * config/s390/s390-protos.h: Likewise.
2569         * config/s390/s390.c: Likewise.
2570         * config/s390/s390.h: Likewise.
2571         * config/s390/s390.md: Likewise.
2572         * config/s390/tpf-unwind.h: Likewise.
2573
2574 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2575
2576         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
2577
2578 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2579
2580         M68K TLS support.
2581         * configure.ac (m68k-*-*): Check if binutils support TLS.
2582         * configure: Regenerate.
2583         * config/m68k/predicates.md (symbolic_operand): Extend comment.
2584         * config/m68k/constraints.md (Cu): New constraint.
2585         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
2586         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
2587         (movsi): Handle TLS symbols.
2588         (addsi3_5200): Handle XTLS symbols, indent.
2589         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
2590         (m68k_tls_reference_p): Declare.
2591         (m68k_legitimize_address): Declare.
2592         (m68k_unwrap_symbol): Declare.
2593         * config/m68k/m68k.opt (mxtls): New option.
2594         * config/m68k/m68k.c (ggc.h): Include.
2595         (m68k_output_dwarf_dtprel): Implement hook.
2596         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
2597         (m68k_expand_prologue): Load GOT pointer when function needs it.
2598         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
2599         (m68k_legitimate_constant_address_p): Same.
2600         (m68k_decompose_address): Handle TLS references.
2601         (m68k_get_gp): New static function.
2602         (enum m68k_reloc): New contants.
2603         (TLS_RELOC_P): New macro.
2604         (m68k_wrap_symbol): New static function.
2605         (m68k_unwrap_symbol): New function.
2606         (m68k_final_prescan_insn_1): New static function.
2607         (m68k_final_prescan_insn): New function.
2608         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
2609         functions.
2610         (legitimize_pic_address): Handle TLS references..
2611         (m68k_tls_get_addr, m68k_get_tls_get_addr)
2612         (m68k_libcall_value_in_a0_p)
2613         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
2614         (m68k_call_m68k_read_tp): Helper variables and functions for ...
2615         (m68k_legitimize_tls_address): Handle TLS references.
2616         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
2617         New functions.
2618         (m68k_legitimize_address): Handle TLS symbols.
2619         (m68k_get_reloc_decoration): New static function.
2620         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
2621         UNSPEC_RELOC32.
2622         (m68k_output_dwarf_dtprel): Implement hook.
2623         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
2624         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
2625         m68k_call_* routines.
2626         (sched_attr_op_type): Handle TLS symbols.
2627         (gt-m68k.h): Include.
2628         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
2629         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
2630
2631 2009-05-18  Martin Jambor  <mjambor@suse.cz>
2632
2633         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
2634         (visit_store_addr_for_mod_analysis): New function.
2635         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
2636         (determine_cst_member_ptr): Use gimple_assign_single_p.
2637         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
2638         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
2639         operands.  Don't check number of operands of a NOP_EXPR.
2640
2641 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
2642
2643         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
2644
2645 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2646
2647         PR c/40172
2648         * c-common.c (warn_logical_operator): Don't warn if one of
2649         expression isn't always true or false.
2650
2651 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
2652
2653         * config/i386/biarch32.h: New file.
2654         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
2655
2656 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
2657
2658         * config/mips/mips.md (*zero_extend<mode>_trunchi,
2659         *zero_extend<mode>_truncqi): Merge these into ...
2660         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
2661         Name the pattern following this as *zero_extendhi_truncqi.
2662
2663 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
2664
2665         PR middle-end/39301
2666         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
2667         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
2668         (output_info): Make field HOST_WIDEST_INT.
2669         (print_statistics): Use HOST_WIDEST_INT_PRINT.
2670         (dump_bitmat_statistics): Same.
2671
2672 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
2673
2674         * config.gcc (use_gcc_stdint):  Set to wrap.
2675         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
2676         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
2677         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2678         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
2679         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
2680         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
2681         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2682         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
2683
2684 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
2685
2686         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
2687         tune_64.
2688         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
2689         Move definitions earlier.
2690         (OPT_ARCH64, OPT_ARCH32): Define.
2691         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
2692         and tune_64.
2693
2694 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2695
2696         PR target/40153
2697         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
2698         implies.
2699
2700 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2701
2702         * arm.md (movdi2): Copy non-reg values to DImode registers.
2703
2704 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
2705
2706         PR target/39942
2707         * final.c (label_to_max_skip): New function.
2708         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
2709         CODE_LABEL_NUMBER <= max_labelno.
2710         * output.h (label_to_max_skip): New prototype.
2711         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
2712         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
2713         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
2714         Handle CODE_LABELs with >= 16 byte alignment or with
2715         max_skip == (1 << align) - 1.
2716         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
2717         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
2718
2719         PR target/39942
2720         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
2721         .p2align 3 if MAX_SKIP is smaller than 7.
2722         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
2723
2724 2009-05-15  Ian Lance Taylor  <iant@google.com>
2725
2726         * alias.c (struct alias_set_entry_d): Rename from struct
2727         alias_set_entry.  Change all uses.
2728         * except.c (struct call_site_record_d): Rename from struct
2729         call_site_record.  Change all uses.
2730         * except.h (struct eh_region_d): Rename from struct eh_region.
2731         Change all uses.
2732         * gcse.c (struct hash_table_d): Rename from struct hash_table.
2733         Change all uses.
2734         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
2735         ivtype_map_elt.  Change all uses.
2736         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
2737         Change all uses.
2738         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
2739         * graphite.h (struct name_tree_d): Rename from struct name_tree.
2740         Change all uses.
2741         (struct sese_d): Rename from struct sese.  Change all uses.
2742         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
2743         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
2744         * optabs.h (struct optab_d): Rename from struct optab.  Change all
2745         uses.
2746         (struct convert_optab_d): Rename from struct convert_optab.
2747         Change all uses.
2748         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
2749         ipa_opt_pass.  Change all uses.
2750         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
2751         all uses.
2752
2753         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
2754         defined as a typedef.
2755         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
2756         defined as a tag.
2757
2758 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2759
2760         PR 16302
2761         * fold-const.c (make_range,build_range_check,merge_ranges): Move
2762         declaration to...
2763         (merge_ranges): Returns bool. 
2764         * tree.h (make_range): .. to here.
2765         (build_range_check): Likewise.
2766         (merge_ranges): Likewise. Renamed from merge_ranges.
2767         * c-typeck.c (parser_build_binary_op): Update calls to
2768         warn_logical_operator.
2769         * c-common.c (warn_logical_operator): Add new warning.
2770         * c-common.h (warn_logical_operator): Update declaration.
2771         
2772 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2773
2774         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
2775         
2776 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2777
2778         * doc/install.texi: Document MPC requirements, flags etc.
2779
2780         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
2781         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
2782         Evaluate constant arguments.
2783         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
2784         (fold_builtin_1): Likewise, also evaluate constant arguments.
2785         Remove superfluous break.
2786         (do_mpc_ckconv): New.
2787         * real.h: Include mpc.h.
2788         * toplev.c (print_version): Output MPC version info if available.
2789
2790 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2791
2792         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
2793
2794 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
2795
2796         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
2797         only once.
2798
2799 2009-05-15  Jan Hubicka  <jh@suse.cz>
2800
2801         * doc/invoke.texi (max-early-inliner-iterations): New flag.
2802         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
2803         (try_inline): Fix return value.
2804         (cgraph_decide_inlining_incrementally): Honor new value.
2805         (cgraph_early_inlining): Handle indirect inlining.
2806         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
2807
2808 2009-05-15  Jan Hubicka  <jh@suse.cz>
2809
2810         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
2811         * cgraphunit.c (cgraph_finalize_function): Set it.
2812         (cgraph_expand_function): Use it.
2813
2814 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2815
2816         * real.c (encode_ieee_half): Define.
2817         (decode_ieee_half): Define.
2818         (ieee_half_format): Define.
2819         (arm_half_format): Define.
2820         * real.h (ieee_half_format): Declare.
2821         (arm_half_format): Declare.
2822
2823 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2824
2825         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
2826         swapped, and reversed optabs exist before trying to use them.
2827
2828 2009-05-15  Paul Brook  <paul@codesourcery.com>
2829             Sandra Loosemore  <sandra@codesourcery.com>
2830
2831         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
2832         loads.  Allow PRE_DEC.
2833         (output_move_neon): Handle PRE_DEC.
2834         (arm_print_operand): Add 'A' for neon structure loads.
2835         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
2836         * config/arm/neon.md (neon_mov): Update comment.
2837         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
2838         calls.
2839         (Um): New constraint.
2840
2841 2009-05-15  Jan Hubicka  <jh@suse.cz>
2842
2843         Revert the following patch until testsuite fallout is fixed:
2844         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2845         * cgraph.h (struct inline_summary): New filed self_wize,
2846         size_inlining_benefit, self_time and time_inlining_benefit.
2847         (struct cgraph_global_info): Replace insns by time ans size fields.
2848         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2849         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2850         (ipcp_update_callgraph): Do not touch function bodies.
2851         * ipa-inline.c: Include except.h
2852         (MAX_TIME): New constant.
2853         (overall_insns): Remove
2854         (overall_size, max_benefit): New static variables.
2855         (cgraph_estimate_time_after_inlining): New function.
2856         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2857         (cgraph_clone_inlined_nodes): Update size.
2858         (cgraph_mark_inline_edge): Update size.
2859         (cgraph_estimate_growth): Use size info.
2860         (cgraph_check_inline_limits): Check size.
2861         (cgraph_default_inline_p): Likewise.
2862         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2863         (cgraph_decide_recursive_inlining): Check size.
2864         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2865         and times.
2866         (cgraph_decide_inlining): Likewise.
2867         (cgraph_decide_inlining_incrementally): Likewise; honor
2868         PARAM_EARLY_INLINING_INSNS.
2869         (likely_eliminated_by_inlining_p): New predicate.
2870         (estimate_function_body_sizes): New function.
2871         (compute_inline_parameters): Use it.
2872         * except.c (must_not_throw_labels): New function.
2873         * except.h (must_not_throw_labels): Declare.
2874         * tree-inline.c (init_inline_once): Kill inlining_weigths
2875         * tree-ssa-structalias.c: Avoid uninitialized warning.
2876         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2877         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2878         (PARAM_INLINE_CALL_COST): Remove.
2879         (PARAM_EARLY_INLINING_INSNS): New.
2880
2881 2009-05-15  Richard Guenther  <rguenther@suse.de>
2882
2883         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
2884         not TODO_update_ssa.
2885
2886 2009-05-15  Richard Guenther  <rguenther@suse.de>
2887
2888         PR tree-optimization/39999
2889         * gimple.h (gimple_expr_type): Use the expression type looking
2890         through useless conversions.
2891         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
2892         (vn_nary_op_insert_stmt): Likewise.
2893         (simplify_binary_expression): Likewise.
2894
2895 2009-05-15  Richard Guenther  <rguenther@suse.de>
2896
2897         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2898         New options, enabled by default.
2899         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2900         Document.
2901         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
2902         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
2903         * tree-ssa-structalias.c (gate_tree_pta): New function.
2904         (pass_build_alias): Use it.
2905
2906 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
2907
2908         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
2909         recurse on an invariant address if a conversion from a pointer
2910         type to a wider integer type is involved.
2911
2912 2009-05-15  Jan Hubicka  <jh@suse.cz>
2913
2914         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2915         * cgraph.h (struct inline_summary): New filed self_wize,
2916         size_inlining_benefit, self_time and time_inlining_benefit.
2917         (struct cgraph_global_info): Replace insns by time ans size fields.
2918         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2919         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2920         (ipcp_update_callgraph): Do not touch function bodies.
2921         * ipa-inline.c: Include except.h
2922         (MAX_TIME): New constant.
2923         (overall_insns): Remove
2924         (overall_size, max_benefit): New static variables.
2925         (cgraph_estimate_time_after_inlining): New function.
2926         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2927         (cgraph_clone_inlined_nodes): Update size.
2928         (cgraph_mark_inline_edge): Update size.
2929         (cgraph_estimate_growth): Use size info.
2930         (cgraph_check_inline_limits): Check size.
2931         (cgraph_default_inline_p): Likewise.
2932         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2933         (cgraph_decide_recursive_inlining): Check size.
2934         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2935         and times.
2936         (cgraph_decide_inlining): Likewise.
2937         (cgraph_decide_inlining_incrementally): Likewise; honor
2938         PARAM_EARLY_INLINING_INSNS.
2939         (likely_eliminated_by_inlining_p): New predicate.
2940         (estimate_function_body_sizes): New function.
2941         (compute_inline_parameters): Use it.
2942         * except.c (must_not_throw_labels): New function.
2943         * except.h (must_not_throw_labels): Declare.
2944         * tree-inline.c (init_inline_once): Kill inlining_weigths
2945         * tree-ssa-structalias.c: Avoid uninitialized warning.
2946         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2947         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2948         (PARAM_INLINE_CALL_COST): Remove.
2949         (PARAM_EARLY_INLINING_INSNS): New.
2950         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
2951         (inline-call-cost): Remove.
2952         (early-inlining-insns): New.
2953
2954 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
2955
2956         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
2957         for bounds.
2958         (print_int_cst_bounds_in_octal_p): Likewise.
2959         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
2960         with subtypes.
2961         * dwarf2out.c (base_type_die): Likewise.
2962         (is_subrange_type): Delete.
2963         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
2964         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
2965         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
2966         if the destination type is boolean.
2967         (build_range_check): Do not special-case subtypes.
2968         (fold_sign_changed_comparison): Likewise.
2969         (fold_unary): Likewise.
2970         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
2971         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
2972         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
2973         * tree.c (subrange_type_for_debug_p): New predicate based on the
2974         former is_subrange_type.
2975         * tree.h (subrange_type_for_debug_p): Declare.
2976         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
2977         (convert_affine_scev): Remove call to above function.
2978         (chrec_convert_aggressive): Likewise.
2979         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
2980         false for conversions involving subtypes.
2981         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
2982         (vrp_val_min): Likewise.
2983         (needs_overflow_infinity): Likewise.
2984         (extract_range_from_unary_expr): Likewise.
2985
2986 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
2987
2988         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2989         * config/frv/frv.c: Likewise.
2990         * config/s390/s390.c: Likewise.
2991         * config/sparc/sparc.h: Likewise.
2992         * config/i386/i386.h: Likewise.
2993         * config/i386/i386.c: Likewise.
2994         * config/crx/crx.c: Likewise.
2995         * config/m68hc11/m68hc11.h: Likewise.
2996         * config/iq2000/iq2000.c: Likewise.
2997         * config/mn10300/mn10300.h: Likewise.
2998         * config/mn10300/mn10300.c: Likewise.
2999         * config/m68k/m68k.c: Likewise.
3000         * config/rs6000/rs6000.c: Likewise.
3001         * config/rs6000/xcoff.h: Likewise.
3002         * config/rs6000/linux64.h: Likewise.
3003         * config/rs6000/sysv4.h: Likewise.
3004         * config/score/score3.c: Likewise.
3005         * config/score/score7.c: Likewise.
3006         * config/score/score.c: Likewise.
3007         * config/arm/arm.md: Likewise.
3008         * config/mips/mips.c: Likewise.
3009         * config/mips/mips.md: Likewise.
3010         * config/bfin/bfin.h: Likewise.
3011         * config/pa/pa.c: Likewise.
3012         * config/pa/constraints.md: Likewise.
3013
3014         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
3015         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
3016         * config/pdp11/pdp11.h: Use memory_address_p instead.
3017
3018 2009-05-14  Ian Lance Taylor  <iant@google.com>
3019
3020         * passes.c (finish_optimization_passes): Change i to int.
3021         * plugin.c (plugins_active_p): Change event to int.
3022         (dump_active_plugins): Likewise.
3023         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
3024         Add cast.
3025         * tree.c (tree_range_check_failed): Change c to unsigned int.
3026         (omp_clause_range_check_failed): Likewise.
3027         (build_common_builtin_nodes): Change mode to int.  Add cast.
3028         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
3029         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
3030
3031         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
3032         ++ or -- with a variable of enum type.
3033
3034 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
3035
3036         PR driver/40144
3037         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
3038
3039 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
3040
3041         * store-motion.c: Do not include params.h
3042         * Makefile.in: Fix dependencies for various files.
3043
3044 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
3045
3046         * auto-inc-dec.c: Fix pass description, remove apparent
3047         accidental duplication.
3048
3049 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
3050
3051         PR middle-end/40147
3052         * ipa-utils.h (memory_identifier_string): Moved to ...
3053         * tree.h (memory_identifier_string): Here.  Add GTY(()).
3054
3055 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
3056
3057         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
3058         in the former documentation of...
3059         (GO_IF_LEGITIMATE_ADDRESS): ... this.
3060         * ira-conflicts.c (get_dup_num): Use address_operand.
3061         * targhooks.c (default_legitimate_address_p): New.
3062         * targhooks.h (default_legitimate_address_p): New.
3063         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
3064         Call hook.
3065         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
3066         * target.h (struct target): Add legitimate_address_p.
3067         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
3068         (TARGET_INITIALIZER): Include it.
3069
3070         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3071         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
3072         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
3073         (TARGET_LEGITIMATE_ADDRESS_P): New.
3074
3075         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3076         (REG_OK_STRICT_P): Delete.
3077         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
3078         (frv_legitimate_address_p_1): ... this.
3079         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
3080         (frv_legitimate_address_p_1): ... the renamed old
3081         frv_legitimate_address_p.
3082         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
3083         (TARGET_LEGITIMATE_ADDRESS_P): New.
3084
3085         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3086         * config/s390/s390-protos.h (legitimate_address_p): Remove.
3087         * config/s390/s390.c (legitimate_address_p): Rename to...
3088         (s390_legitimate_address_p): ... this, make static.
3089         (legitimize_address): Adjust call.
3090         (TARGET_LEGITIMATE_ADDRESS_P): New.
3091         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
3092
3093         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3094         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
3095         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
3096         (TARGET_LEGITIMATE_ADDRESS_P): New.
3097
3098         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3099         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
3100         * config/spu/spu.c (spu_legitimate_address): Rename to...
3101         (spu_legitimate_address_p): ... this, make static.
3102         (TARGET_LEGITIMATE_ADDRESS_P): New.
3103
3104         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3105         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
3106         * config/sparc/sparc.c (legitimate_address_p): Rename to...
3107         (sparc_legitimate_address_p): ... this, make static and return bool.
3108         (legitimize_address): Adjust call.
3109         (TARGET_LEGITIMATE_ADDRESS_P): New.
3110
3111         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3112         * config/i386/i386-protos.h (legitimate_address_p): Remove.
3113         * config/i386/i386.c (legitimate_address_p): Rename to...
3114         (ix86_legitimate_address_p): ... this, make static.
3115         (constant_address_p): Move after it, adjust call.
3116         (TARGET_LEGITIMATE_ADDRESS_P): New.
3117
3118         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3119         * config/avr/avr-protos.h (legitimate_address_p): Remove.
3120         * config/avr/avr.c (legitimate_address_p): Rename to...
3121         (avr_legitimate_address_p): ... this, make static.
3122         (legitimize_address): Adjust call.
3123         (TARGET_LEGITIMATE_ADDRESS_P): New.
3124
3125         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3126         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
3127         * config/crx/crx.c (crx_legitimate_address_p): Make static.
3128         (TARGET_LEGITIMATE_ADDRESS_P): New.
3129
3130         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3131         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
3132         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
3133         (TARGET_LEGITIMATE_ADDRESS_P): New.
3134
3135         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3136         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
3137         Remove.
3138         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
3139         Make static.
3140         (TARGET_LEGITIMATE_ADDRESS_P): New.
3141
3142         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3143         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
3144         Remove.
3145         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
3146         Rename to...
3147         (m68hc11_legitimate_address_p): ... this, make static.
3148         (go_if_legitimate_address_internal): Rename to...
3149         (m68hc11_legitimate_address_p_1): ... this.
3150         (legitimize_address): Adjust call.
3151         (TARGET_LEGITIMATE_ADDRESS_P): New.
3152
3153         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3154         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
3155         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
3156         (TARGET_LEGITIMATE_ADDRESS_P): New.
3157
3158         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3159         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
3160         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
3161         (mn10300_legitimate_address_p): ... this, make static.
3162         (TARGET_LEGITIMATE_ADDRESS_P): New.
3163
3164         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3165         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
3166         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
3167         (TARGET_LEGITIMATE_ADDRESS_P): New.
3168
3169         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3170         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
3171         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
3172         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3173         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
3174         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
3175         (rs6000_legitimate_address_p): ... this, make static.
3176         (TARGET_LEGITIMATE_ADDRESS_P): New.
3177         (REG_MODE_OK_FOR_BASE_P): Delete.
3178         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
3179
3180         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3181         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
3182         Delete.
3183         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
3184         static, adjust types.
3185         (TARGET_LEGITIMATE_ADDRESS_P): New.
3186
3187         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3188         * config/score/score.c (score_address_p): Rename to...
3189         (score_legitimate_address_p): ... this.
3190         (TARGET_LEGITIMATE_ADDRESS_P): New.
3191         * config/score/score3.c (score3_address_p): Rename to...
3192         (score3_legitimate_address_p): ... this.
3193         * config/score/score7.c (score7_address_p): Rename to...
3194         (score7_legitimate_address_p): ... this.
3195
3196         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
3197         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
3198         GO_IF_LEGITIMATE_ADDRESS): Delete.
3199         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
3200         thumb2_legitimate_address_p): Delete.
3201         (arm_legitimate_address_p): Rename to...
3202         (arm_legitimate_address_outer_p): ... this.
3203         * config/arm/constraints.md ("Uq"): Adjust call.
3204         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
3205         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
3206         to...
3207         (arm_legitimate_address_outer_p): ... this.
3208         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
3209         static.
3210         (TARGET_LEGITIMATE_ADDRESS_P): New.
3211
3212         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3213         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
3214         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
3215         (TARGET_LEGITIMATE_ADDRESS_P): New.
3216
3217         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3218         * config/vax/vax-protos.h (legitimate_address_p): Remove.
3219         * config/vax/vax.c (legitimate_address_p): Rename to...
3220         (vax_legitimate_address_p): ... this, make static.
3221         (TARGET_LEGITIMATE_ADDRESS_P): New.
3222
3223         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3224         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
3225         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
3226         (TARGET_LEGITIMATE_ADDRESS_P): New.
3227
3228         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3229         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
3230         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
3231         (mmix_legitimate_address_p): ... this, make static.
3232         (TARGET_LEGITIMATE_ADDRESS_P): New.
3233
3234         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3235         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
3236         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
3237         (TARGET_LEGITIMATE_ADDRESS_P): New.
3238
3239 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
3240
3241         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
3242         of MODE_COMPLEX_INT.
3243
3244 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3245
3246         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
3247         LCT_NORMAL in function call.
3248         * mips-tdump.c (print_file_desc): Add cast to enum type.
3249         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
3250         (mark_stabs): Add casts to enum types.
3251         (parse_stabs_common): Add casts to enum types.
3252
3253 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
3254
3255         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
3256         Check for invalid values of LETTER.
3257
3258 2009-05-13  Taras Glek  <tglek@mozilla.com>
3259
3260         * attribs.c (register_attribute): moved out attribute registration
3261         into register_attribute.
3262         * doc/plugins.texi: Documented register_attribute and
3263         PLUGIN_ATTRIBUTES.
3264         * gcc-plugin.h: Added forward decl for register_attribute.
3265         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
3266         * plugin.c (register_callback, invoke_plugin_callbacks): Added
3267         PLUGIN_ATTRIBUTES boilerplate.
3268
3269 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
3270
3271         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
3272         values even in sentinel and empty entries.
3273         (ms_printf_flag_specs):  Likewise.
3274         (ms_scanf_flag_specs):  Likewise.
3275         (ms_strftime_flag_specs):  Likewise.
3276         (ms_print_char_table):  Likewise.
3277         (ms_scan_char_table):  Likewise.
3278         (ms_time_char_table):  Likewise.
3279
3280 2009-05-13  Doug Kwan  <dougkwan@google.com>
3281
3282         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
3283
3284 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
3285
3286         * config/mips/mips.md (store): Add attributes for QI and HI.
3287         Update comment.
3288         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
3289         (truncdi<mode>2): ... this new pattern.
3290
3291 2009-05-13  Brad Hards  <bradh@kde.org>
3292
3293         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
3294
3295 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
3296             Ben Elliston <bje@au.ibm.com>
3297
3298         PR middle-end/40035
3299         * dse.c (check_mem_read_rtx): Guard against width == -1.
3300
3301 2009-05-13  Michael Matz  <matz@suse.de>
3302
3303         PR middle-end/39976
3304         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
3305         (trivially_conflicts_p): New function.
3306         (insert_backedge_copies): Use it.
3307
3308 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
3309
3310         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
3311         (handle_stdc_pragma): Use new enum constant names.
3312         (handle_pragma_float_const_decimal64): Ditto.
3313
3314 2009-05-13  Ian Lance Taylor  <iant@google.com>
3315
3316         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
3317         tree.def.
3318
3319 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
3320
3321         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
3322         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
3323         multilibs.
3324         * config/m68k/m68k.h (FL_UCLINUX): Define.
3325
3326 2009-05-13  Jan Hubicka  <jh@suse.cz>
3327
3328         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
3329
3330 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3331
3332         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
3333         unless -fschedule-insns is specified.
3334
3335 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3336
3337         PR target/39561
3338         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
3339         TARGET_EXPAND_CBRANCHDI4.
3340         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
3341         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
3342         (cmpeqdi): Fix comment.
3343
3344 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3345
3346         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
3347         (sh_legitimate_address_p): Likewise.
3348         * config/sh/sh.c (sh_legitimate_index_p): New.
3349         (sh_legitimate_address_p): Likewise.
3350         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
3351         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
3352         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
3353         (MAYBE_BASE_REGISTER_RTX_P): New macro.
3354         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
3355         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
3356         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
3357         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
3358         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
3359
3360 2009-05-12  Jan Hubicka  <jh@suse.cz>
3361
3362         * tree-inline.c (estimate_operator_cost): Add operands;
3363         when division happens by constant, it is cheap.
3364         (estimate_num_insns): Loads and stores are not having cost of 0;
3365         EH magic stuff is cheap; when computing runtime cost of switch,
3366         use log2 base of amount of its cases; builtin_expect has cost of 0;
3367         compute cost for moving return value of call.
3368         (init_inline_once): Initialize time_based flags.
3369         * tree-inline.h (eni_weights_d): Add time_based flag.
3370
3371 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3372
3373         * df-core.c: Update head documentation.
3374
3375 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
3376
3377         PR bootstrap/40118
3378         * rs6000.c (rs6000_generate_compare): Use op1b instead of
3379         shadowing exisiting variable op1.
3380
3381 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
3382
3383         PR target/37179
3384         * config/i386/driver-i386.c (processor_signatures): New enum.
3385         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
3386         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
3387         processor signature to detect geode processor.
3388
3389 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3390
3391         Revert:
3392
3393         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3394
3395         * optabs.c (prepare_cmp_insn): Temporarily disable test that
3396         causes spurious differences between trunk and cond-optab branch.
3397
3398 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3399
3400         * dojump.c (compare_from_rtx): Delete.
3401         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
3402         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
3403         if the comparison does not satisfy the predicate; test predicates for
3404         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
3405         further if one existing pattern fails.
3406         * expr.h (compare_from_rtx): Delete.
3407         (prepare_operand): Declare it.
3408         * optabs.c: Change "lib call" to "libcall" throughout.
3409         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
3410         HAVE_conditional_trap, emit_cmp_insn): Delete.
3411         (can_compare_p): Delete cmp_optab case.
3412         (prepare_float_lib_cmp): Return an rtx and a machine mode.
3413         Accept other parameters by value.
3414         (prepare_operand): Make non-static.
3415         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
3416         other parameters by value.  Try to widen operands here based on
3417         an optab_methods argument and looking at cbranch_optab.
3418         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
3419         loop.  Use cbranch_optab directly.
3420         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
3421         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
3422         assertion.
3423         (emit_conditional_move, emit_conditional_add): Inline what's needed
3424         of compare_from_rtx, using new prepare_cmp_insn for the rest.
3425         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
3426         with COMPARE.  Move cmov_optab and cstore_optab above
3427         with cbranch_optab, move cmp_optab down with ucmp_optab,
3428         remove tst_otpab.  Do not initialize trap_rtx.
3429         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
3430         for trap code.  Do not check HAVE_conditional_trap.  Use
3431         prepare_cmp_insn.  Accept no predicate for operand 3.
3432         * optabs.h (OTI_cmp): Mark as used only for libcalls.
3433         (OTI_ctrap, ctrap_optab): New.
3434         (tst_optab): Delete.
3435         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
3436         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
3437         with lookup of ctrap_optab.
3438         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
3439         Delete.
3440         (ctrap_optab): New.
3441
3442         * combine.c (combine_simplify_rtx, simplify_set): Do not
3443         special case comparing against zero for cc0 machines.
3444         * simplify-rtx.c (simplify_binary_operation_1): Never remove
3445         COMPARE on cc0 machines.
3446         (simplify_relational_operation): Return a new expression when
3447         a COMPARE could be removed.
3448         * final.c (final_scan_insn): Compare cc_status values
3449         against LHS of a (compare FOO (const_int 0)) cc0 source.
3450         Also check if cc_status.value is the full compare.
3451
3452         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
3453         (cstoreMM4): Document.
3454         (conditional_trap): Document ctrapMM4 instead.
3455         (sync_compare_and_swapMM): Refer to cbranchcc4.
3456         (Dependent Patterns): Eliminate obsolete information referring to
3457         the old jump optimization phase.
3458         (Canonicalization): Include cbranchcc4 case, omit canonicalization
3459         of compares with 0 on cc0 machines.
3460         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
3461         avoiding references to cc0.  Remove text about storing operands
3462         in cmpMM.
3463         * doc/tm.texi (Condition Codes): Include blurb on different
3464         condition code representations, separate into subsections for
3465         CC0, MODE_CC and conditional execution.
3466
3467         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
3468         alpha_emit_setcc): Accept operands and a machine mode.
3469         * config/alpha/alpha.c (alpha_emit_conditional_branch):
3470         Get code/op0/op1 from operands, use machine mode argument
3471         instead of alpha_compare.fp_p.  Emit the branch here.
3472         (alpha_emit_setcc): Likewise, and return boolean.
3473         (alpha_emit_conditional_move): Likewise.  Assert that
3474         cmp_op_mode == cmp_mode, and simplify accordingly.
3475         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
3476         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
3477         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
3478         Delete.
3479         (stack probe test): Use cbranchdi4.
3480         * config/alpha/predicates.md (alpha_cbranch_operator): New.
3481
3482         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
3483         * config/arc/arc.h (movsicc, movsfcc): Use it.
3484         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
3485         (cbranchsi4, cstoresi4): New.
3486         (cmpsi, bCC and sCC expanders): Remove. 
3487
3488         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
3489         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
3490         * config/arm/predicates.md (arm_comparison_operator): Only include
3491         floating-point operators if there is a hardware floating-point unit.
3492         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
3493         deferring to cbranch_cc and cstore_cc respectively.
3494         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
3495         cbranch_cc, cstore_cc): New.
3496         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
3497         arm_compare_op1.
3498         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
3499
3500         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
3501         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
3502         as an argument.
3503         (adjust_insn_length): Adjust calls.
3504         (avr_reorg): Handle (compare (foo) (const_int 0)).
3505         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
3506         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
3507         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
3508         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
3509         (bCC): Remove.
3510         (cbranchqi4, cbranchhi4, cbranchsi4): New.
3511         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
3512
3513         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
3514         (cbranchsi4, cstorebi4, cstoresi4): New.
3515         (movbisi): This insn is duplicate, split it to zero_extend.
3516         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
3517         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
3518         (bfin_optimize_loop): Use cbranch expander.
3519         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
3520         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
3521         (bfin_bimode_comparison_operator): ... this.
3522         (bfin_direct_comparison_operator): New.
3523  
3524         * config/cris/cris.c (cris_normal_notice_update_cc): Look
3525         inside (compare FOO (const_int 0)).
3526         (cris_rtx_costs): Handle ZERO_EXTRACT.
3527         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
3528         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
3529         (*tstdi_v32): Delete.
3530         (*cmpdi_non_v32): Add M alternative for operand 1.
3531         (cmpsi, cmp<mode>): Make private.
3532         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
3533         with COMPARE.
3534         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
3535
3536         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
3537         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
3538         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
3539         (cc_reg_operand): New.
3540         (any_cond): Delete.
3541         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
3542         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
3543         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
3544         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
3545         crx_expand_scond): Delete.
3546
3547         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
3548         (cbranchsi4): New.
3549         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
3550         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
3551
3552         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
3553         cstoresi4, cstoresf4, cstoredf4): New.
3554         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
3555         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
3556         Receive the entire operands array.
3557         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
3558         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
3559         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
3560         Get test/op0/op1 from the operands array.
3561         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
3562
3563         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
3564         (h8300_expand_store): New.
3565         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
3566         (const_int 0)).
3567         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
3568         (h8300_expand_store): New.
3569         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
3570         or do not try to produce (set (cc0) REG).
3571         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
3572         change a compare into a move to a scratch register.  Disable some
3573         peepholes when comparing with zero.
3574         (tstsi, tsthi, tstsi, cmpqi): Make private.
3575         (cmphi): Delete.
3576         (bCC, sCC): Delete.
3577         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
3578         cstoresi4): New.
3579
3580         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
3581         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
3582         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
3583         (ix86_emit_i387_log1p): Use cbranchxf2.
3584         (ix86_expand_setcc): Return void.
3585         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
3586         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
3587         cmp<MODEF>, cmpcc): Remove.
3588         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
3589         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
3590         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
3591         (sCC and bCC expanders): Remove.
3592         (stack_protect_test): Use cbranchcc4.
3593
3594         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
3595         Delete.
3596         (ia64_expand_compare): Accept three rtx by reference and return void.
3597         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
3598         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
3599         from *expr.  Update *expr with the BImode comparison to do.
3600         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
3601         cmptf, bCC, sCC, conditional_trap): Delete.
3602         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
3603         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
3604         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
3605         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
3606         * config/ia64/predicates.md (ia64_cbranch_operator): New.
3607
3608         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
3609         type of last argument.
3610         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
3611         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
3612         use machine mode argument instead of branch_type.  Remove dead
3613         code for floating-point comparisons.
3614         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
3615         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
3616         Remove.
3617         (cbranchsi4, cstoresi4): New.
3618         * config/iq2000/predicates.md (reg_or_const_operand): New.
3619
3620         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
3621         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
3622         (b<code>_op): Rewrite to...
3623         (bcc_op): ... this, using match_operator.
3624         (s<code>_op): Rewrite to...
3625         (scc_op): ... this, using match_operator.
3626         (s<code>_24_op): Rewrite to...
3627         (scc_op_24): ... this, using match_operator.
3628         (s<code>_<mode>): Rewrite to...
3629         (cstore<mode>4): ... this, using match_operator.
3630         (s<code>_<mode>_24): Rewrite to...
3631         (cstore<mode>4_24): ... this, using match_operator.
3632         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
3633         m32c_unpend_compare, m32c_expand_scc): Delete.
3634         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
3635         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
3636         (m32c_expand_movcc): Change NE to EQ if necessary.
3637         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
3638
3639         * config/m32r/m32r-protos.h (gen_cond_store): New.
3640         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
3641         (gen_cond_store): New, from sCC patterns.
3642         (m32r_expand_block_move): Use cbranchsi4.
3643         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
3644         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
3645         (cbranchsi4, cstoresi4): New.
3646         
3647         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
3648         Delete.
3649         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
3650         (m68hc11_notice_update_cc): Look into a compare with 0.
3651         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
3652         Delete.
3653         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
3654         cmphi, cmpqi, bCC): Delete.
3655         (cbranchsi4, cbranchhi4, cbranchqi4): New.
3656         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
3657         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
3658         sets with COMPARE.
3659
3660         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
3661         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
3662         * config/m68k/constraints.md (H): New.
3663         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
3664         the define_insn below.
3665         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
3666         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
3667         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
3668         patterns): Wrap RHS with COMPARE.
3669         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
3670         (*cmpdi_internal): Name this pattern.
3671         (cmpdi): Change to define_insn.
3672         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
3673         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
3674         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
3675         predicate.
3676         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
3677         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
3678         (conditional_trap): Change to...
3679         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
3680         (*conditional_trap): Use the ordered_comparison_operator and
3681         const1_operand predicates.
3682         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
3683         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
3684         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
3685         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
3686
3687         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
3688         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
3689         (mcore_gen_compare): New. 
3690         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
3691         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
3692         (mcore_gen_compare): ... this.
3693         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
3694         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
3695         (stack probe pattern): Use cbranchsi4.
3696
3697         * config/mips/predicates.md (mips_cstore_operator): New.
3698         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
3699         * config/mips/mips.md (any_cond): Delete.
3700         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
3701         always succeed.
3702         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
3703         fixuns_truncsfdi2): Use cbranch patterns.
3704         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
3705         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
3706         Adjust call to mips_expand_conditional_branch.
3707         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
3708         cstore<GPR:mode>4.
3709         * config/mips/mips-protos.h (mips_expand_conditional_branch,
3710         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
3711         * config/mips/mips.c (cmp_operands): Delete.
3712         (mips_emit_compare): Get comparison operands from *op0/*op1.
3713         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
3714         that it succeeds.  Use op0/op1 instead of cmp_operands.
3715         (mips_expand_conditional_branch, mips_expand_conditional_move,
3716         mips_expand_conditional_trap): Likewise.
3717         (mips_block_move_loop): Use cbranch patterns. 
3718         * config/mips/mips.h (cmp_operands): Delete.
3719
3720         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
3721         (mmix_gen_compare_reg): Just return a register in the right CC mode.
3722         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
3723         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
3724         (*cmpcc_folded): Rename to...
3725         (*cmpdi_folded): this.
3726         (*cmpcc): Rename to...
3727         (*cmps): ... this.
3728         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
3729         (bCC): Remove.
3730         (cbranchdi4): New.
3731         (cbranchdf4): New.  Handle invalid comparisons here.
3732         * config/mmix/predicates.md (float_comparison_operator): New.
3733
3734         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
3735         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
3736         * config/mn10300/mn10300.md (tst): Delete.
3737         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
3738         Name these patterns and wrap RHS in a compare.
3739         (*cmpsi): Make this pattern private.  Include tst.
3740         (*cmpsf): Make this pattern private.
3741         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
3742         (compare with zero peepholes): Likewise.
3743         (bCC): Remove.
3744         (cbranchsi4, cbranchsf4): New.
3745         (casesi): Use cbranchsi4.
3746
3747         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
3748         hppa_branch_type): Delete.
3749         (return_addr_rtx): Use cbranchsi4.
3750         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
3751         Emit CCFPmode comparison here.
3752         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
3753         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
3754         hppa_branch_type): Delete.
3755         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
3756         (movsicc, movdicc): Remove references to hppa_compare_op0,
3757         hppa_compare_op1 and compare_from_rtx.
3758         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
3759         (casesi): Use cbranchsi4.
3760
3761         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
3762         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
3763         * config/pdp11/pdp11.md (register_or_const0_operand): New.
3764         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
3765         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
3766         (bCC): Delete.
3767         (cbranchdf4, cbranchhi4, cbranchqi4): New.
3768         (*branch, *branch_inverted): New.
3769
3770         * config/picochip/picochip.md (cbranchhi4): Use
3771         ordered_comparison_operator.
3772         (cmphi, bCC): Remove.
3773
3774         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
3775         (trap_comparison_operator): Delete.
3776         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
3777         rs6000_emit_cbranch): Accept mode and operands.
3778         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
3779         rs6000_compare_fp_p): Delete.   
3780         (rs6000_generate_compare): Accept mode and comparison.  Extract code
3781         and op0/op1 from there.  Replace references to rs6000_compare_op0
3782         and rs6000_compare_op1.
3783         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
3784         extract result from passed operands.
3785         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
3786         extract loc from passed operands.
3787         (rs6000_emit_cmove): Likewise.
3788         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
3789         rs6000_compare_fp_p): Delete.
3790         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
3791         (cbranch<GPR>4, cbranch<FP>4): New.
3792         (cstore<mode>4): New.  Consolidate here all choices about when to use
3793         portable or specialized sCC sequences.
3794         (stack_protect_test): Use cbranchsi4.
3795         (conditional_trap): Replace with ctrap<GPR>4.
3796         (conditional trap insn): Replace trap_comparison_operator with
3797         ordered_comparison_operator. 
3798
3799         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
3800         (s390_emit_prologue): Use ctrap.
3801         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
3802         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
3803         New predicates replacing...
3804         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
3805         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
3806         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
3807         (add<mode>cc): Do not use s390_compare_op0/op1.
3808         (s<code>): Change to...
3809         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
3810         (seq): Change to...
3811         (cstorecc4): ... this.  Handle EQ or NE equally.
3812         (*sne): Un-privatize for use in cstorecc4.
3813         (b<code>): Change to...
3814         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
3815         (conditional_trap): Replace with...
3816         (ctrap<GPR>4, ctrap<FP>4): ... these.
3817         (stack_protect): Use cbranchcc4.
3818
3819         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
3820         * config/score/score-protos.h (score_gen_cmp): Delete.
3821         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
3822         (score_block_move-loop): Use cbranchsi4.
3823         * config/score/score.md (cbranchsi4): New.
3824         (cmpsi, bCC): Delete.
3825         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
3826         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3827         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
3828         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3829         * config/score/score3.h (score3_gen_cmp): Delete.
3830         * config/score/score7.h (score7_gen_cmp): Delete.
3831
3832         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
3833         (sh_emit_scc_to_t): ... this.  Return void.
3834         (from_compare): Rename to...
3835         (sh_emit_compare_and_branch): ... this.
3836         (sh_emit_compare_and_set): New.
3837         (sh_expand_t_scc): Accept operands.
3838         * config/sh/predicates.md (sh_float_comparison_operator): New.
3839         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
3840         (prepare_scc_operands): Rename to...
3841         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
3842         arguments.
3843         (sh_emit_cheap_store_flag): New.
3844         (sh_emit_set_t_insn): New.
3845         (from_compare): Rename to...
3846         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
3847         handling of TARGET_SH2E floating point to avoid recursive call.
3848         Generate branch here.
3849         (sh_emit_compare_and_set): New.
3850         (sh_expand_t_scc): Get op0/op1 from arguments.
3851         (sh_emit_cheap_store_flag): New.
3852         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
3853         cases.
3854         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
3855         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
3856         (movsicc, movdicc): Do nothing when it recreated operands from
3857         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
3858         prepare_scc_operands (now sh_emit_scc_to_t).
3859         (udivdi3): Use cstoresi4.
3860         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
3861         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
3862         (cbranchint4_media, cbranchfp4_media): New.
3863         (casesi): Use cbranchdi4.
3864         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
3865         Delete.
3866         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
3867         (movnegt): Remove second operand.
3868         (cbranchsf4, cbranchdf4): New.
3869         (stack_protect): Use cbranchdi4/cbranchsi4.
3870
3871         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
3872         (gen_compare_reg): Accept comparison, extract part of it to...
3873         (gen_compare_reg_1): ... this. 
3874         (gen_compare_operator): Delete.
3875         (gen_v9_scc): Accept separate destination, comparison code and arms.
3876         Do not use sparc_compare_op0/sparc_compare_op1.
3877         (emit_scc_insn, emit_conditional_branch_insn): New.
3878         (emit_v9_brxx): Make static.  Remove useless assertion.
3879         (sparc_emit_float_lib_cmp): Return RTL instead of calling
3880         emit_cmp_insn.
3881         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
3882         * config/sparc/sparc-protos.h (gen_compare_reg,
3883         sparc_emit_float_lib_cmp): Adjust prototype.
3884         (emit_scc_insn, emit_conditional_branch_insn): New.
3885         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
3886         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
3887         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
3888         iterators to the top.
3889         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
3890         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
3891         snedi_special_trunc): Delete.
3892         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
3893         and snedi_special_trunc.
3894         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
3895         cbranchdi4, cbranch<F:mode>4): New.
3896         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
3897         here.  Use gen_compare_reg instead of gen_compare_operator.
3898         (conditional_trap): Replace with...
3899         (ctrapsi4, ctrapdi4): ... this.
3900         (stack_protect_test): Use cbranchcc4.
3901
3902         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
3903         argument to rtx.
3904         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
3905         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
3906         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
3907         from operands[0] or operands[3] depending on is_set.