OSDN Git Service

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