OSDN Git Service

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