OSDN Git Service

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