OSDN Git Service

2004-05-17 Frank Ch. Eigler <fche@redhat.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2004-05-17  Frank Ch. Eigler  <fche@redhat.com>
2
3         * tree-mudflap.c (mx_register_decls): Tolerate decl trees resulting
4         from source code with errors.
5
6 2004-05-17  Ranjit Mathew  <rmathew@hotmail.com>
7
8         Enable tree browser for all front ends.
9         * Makefile.in (cc1): Moved @TREEBROWSER@ from here...
10         (BACKEND): ...to here.
11
12 2004-05-17  Jan Hubicka  <jh@suse.cz>
13
14         * i386.c (construct_container): Do not produce BLKmode registers.
15         (classify_argument): Properly compute alignment of complex types.
16
17 2004-05-17  H.J. Lu  <hongjiu.lu@intel.com>
18
19         PR target/15084
20         * config/i386/i386.md (*movsi_insv_1_rex64): Changed to DImode
21         and renamed to movdi_insv_1_rex64.
22         (insv): Support SImode for 32bit and DImode for 64bit.
23
24 2004-05-17  Richard Sandiford  <rsandifo@redhat.com>
25
26         * config/mips/mips.h (MASK_DEBUG_G, TARGET_DEBUG_G_MODE): Delete.
27         (TARGET_SWITCHES): Remove debugg.
28         * config/mips/mips.md (adddi3, ashldi3, ashrdi3, lshrdi3): Only handle
29         TARGET_64BIT.
30         (subdi3): Replace the define_expand with a define_insn, the latter
31         renamed from subdi3_internal_3.
32         (negdi2): Likewise negdi2_internal_2.
33         (adddi3_internal_[12], subdi3_internal, ashldi3_internal{,2,3})
34         (ashrdi3_internal{,2,3}, lshrdi3_internal{,2,3}): Remove patterns
35         and associated define_splits.
36         (adddi3_internal): Renamed from adddi3_internal_3.
37         (ashldi3_internal): Likewise ashldi3_internal4.
38         (ashrdi3_internal): Likewise ashrdi3_internal4.
39         (lshrdi3_internal): Likewise lshrdi3_internal4.
40
41 2004-05-17  Richard Sandiford  <rsandifo@redhat.com>
42
43         * optabs.c (expand_unop): Try implementing negation using subtraction
44         from zero.
45
46 2004-05-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
47
48         * pa.md:  Fix typo from last change.  Remove DFmode move to and from
49         SAR register.
50
51 2004-05-16  Richard Earnshaw  <rearnsha@arm.com>
52
53         PR target/10982
54         * arm.md (ne_zeroextractsi): Convert to insn-and-split.
55         (ne_zeroextractsi_shifted): New pattern.
56         (ite_ne_zeroextractsi): New pattern.
57         (ite_ne_zeroextractsi_shifted): New pattern.
58
59 2004-05-15  Steven Bosscher  <stevenb@suse.de>
60
61         * c-gimplify.c (c_genericize):
62         Replace calls via (*lang_hooks.foo) with lang_hooks.foo.
63         * c-parse.in <expr_no_commas>: Likewise.
64         <if_prefix>: Likewise.
65         <select_or_iter_stmt>: Likewise.
66         * expr.c (expand_var, expand_expr_real_1): Likewise.
67         * expr.h (expand_expr): Make it a static inline function.
68         Move prototype for expand_expr_real up before this.
69         * fold-const.c (fold_relational_hi_lo, fold_relational_const):
70         Likewise.
71         * gimplify.c (gimple_boolify, gimplify_addr_expr,
72         gimplify_asm_expr, gimplify_expr): Likewise.
73         * tree-cfg.c (dump_tree_cfg, dump_cfg_stats, tree_cfg2vcg,
74         dump_function_to_file): Likewise.
75         * tree-dfa.c (dump_immediate_uses, dump_dfa_stats): Likewise.
76         * tree-inline.c (remap_block, save_body, walk_tree): Likewise.
77         * tree-into-ssa.c (dump_tree_ssa): Likewise.
78         * tree-mudflap.c (mf_varname_tree, mf_file_function_line_tree):
79         Likewise.
80         * tree-optimize.c (execute_one_pass): Likewise.
81         * tree-pretty-print.c (dump_generic_bb_buff): Likewise.
82         * tree-ssa-alias.c (dump_alias_stats, dump_alias_info): Likewise.
83
84         * objc/objc-act.c (objc_build_try_enter_fragment,
85         objc_build_try_epilogue, objc_build_catch_stmt,
86         objc_build_finally_prologue): Replace calls via (*lang_hooks.foo)
87         with lang_hooks.foo ().
88
89 2004-05-15  Roger Sayle  <roger@eyesopen.com>
90
91         * builtins.c (simplify_builtin_strcpy): Avoid use of chainon, so
92         that simplify_builtin doesn't destructively modify its argument.
93
94 2004-05-15  Richard Earnshaw  <reanrsha@arm.com>
95
96         * arm/lib1funcs.asm (_lshrdi3, _ashrdi3, _ashldi3): Add ASM 
97         implementations for ARM and Thumb.
98         * arm/t-arm-elf (LIB1ASMFUNCS): Use them.
99
100 2004-05-15  Thomas Quinot  <quinot@act-europe.fr>
101
102         * prefix.c (update_path): Replace PREFIX with KEY only
103         when it matches a full directory name in PATH.
104
105 2004-05-15  Richard Earnshaw  <reanrsha@arm.com>
106
107         * arm.h (TARGET_APCS_32): Delete.
108         (TARGET_MMU_TRAPS): Delete.
109         (TARGET_CPU_CPP_BUILTINS): Unconditionally define __APCS_32__.  Never
110         define __APCS_26__.
111         (CPP_SPEC): Remove checking of -mapcs-{26,32}.
112         (ARM_FLAG_APCS_32, ARM_FLAG_MMU_TRAPS): Delete.
113         (TARGET_SWITCHES): Remove alignment_traps and apcs-{26,32} switches.
114         (prog_mode_type): Delete.
115         (PROMOTE_MODE): Always promote unsigned for HImode.
116         (SECONDARY_INPUT_RELOAD_CLASS): Simplify.
117         (MASK_RETURN_ADDR): Simplify.
118         * arm.c (arm_prgmode): Delete.
119         (arm_override_options, arm_gen_rotated_half_load): Simplify.
120         (print_multi_reg, output_return_instruction): Simplify.
121         (arm_output_epilogue, arm_final_prescan_insn): Simplify.
122         (arm_return_addr): Simplify.
123         * arm.md (prog_mode): Delete.
124         (conds): Simplify.
125         (zero_extendhisi2, extendhisi2, movhi, movhi_bytes): Simplify.
126         (rotated_loadsi, movhi_insn_littleend, movhi_insn_bigend): Delete.
127         (loadhi_si_bigend, loadhi_preinc, loadhi_shiftpreinc): Delete.
128         (loadhi_shiftpredec): Delete.
129         (peephole for post-increment on HImode load): Delete.
130         * arm/crtn.asm: (FUNC_END): Simplify.
131         * arm/lib1funcs.asm: Remove APCS-26 return macros.
132         * arm/aof.h, arm/coff.h arm/elf.h arm/linux-elf.h arm/netbsd-elf.h
133         * arm/netbsd.h arm/pe.h arm/semi.h arm/semiaof.h arm/unknown-elf.h 
134         * arm/vxworks.h arm/wince-pe.h: Tidy TARGET_DEFAULTS and
135         MULTILIB_DEFAULTS as required.
136         * arm/t-arm-elf arm/t-linux arm/t-pe arm/t-semi arm/t-wince-pe
137         * arm/t-xscale-coff arm/t-xscale-elf arm/uclinux-elf: Tidy MULTILIB
138         variables as required.
139         * doc/invoke.texi (ARM Options): Remove obsolete flags.
140
141 2004-05-15  Alan Modra  <amodra@bigpond.net.au>
142
143         * config/rs6000/rs6000.c (rs6000_va_arg <ABI_V4>): Don't use
144         UNITS_PER_WORD to calculate gpr size.  Re-instate code to set reg
145         count to 8 to handle n_reg > 2.
146
147 2004-05-15  Joseph S. Myers  <jsm@polyomino.org.uk>
148
149         * doc/extend.texi: Update WG14 URL.
150
151 2004-05-15  Steven Bosscher  <stevenb@suse.de>
152
153         * basic-block.h (life_analysis, delete_noop_moves):
154         Update prototypes.
155         * bt-load.c (branch_target_load_optimize): Don't take the
156         insns stream as an argument.  Update the life_analysis calls.
157         * combine.c (combine_instructions): Update delete_noop_moves
158         calls.
159         * flow.c (notice_stack_pointer_modification): Don't take the
160         insns stream as an argument.  Work on the flow graph.
161         (life_analysis): Likewise.
162         (delete_noop_moves): Likewise.
163         * passes.c (rest_of_handle_stack_regs): Update reg_to_stack call.
164         (rest_of_handle_life): Update life_analysis call.
165         (rest_of_compilation): Likewise, and also update
166         branch_target_load_optimize call.
167         * ra.c (reg_alloc): Update life_analysis call.
168         * reg-stack.c (reg_to_stack): Likewise.  Also, don't take
169         the insns stream as an argument.
170         * regrename.c (copyprop_hardreg_forward): Update delete_noop_moves
171         call.
172         * rtl.c (branch_target_load_optimize, reg_to_stack): Update
173         prototypes.
174         * value-profile.c (branch_prob): Update life_analysis call.
175         * web.c (web_main): Work on the CFG, not on the insns stream.
176
177         * config/ip2k/ip2k.c (ip2k_reorg): Update life_analysis calls.
178         * config/m68hc11/m68hc11.c (m68hc11_reorg): Likewise.
179         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
180
181 2004-05-15  Joseph S. Myers  <jsm@polyomino.org.uk>
182
183         PR c/15444
184         * c-format.c (avoid_dollar_number): New function.
185         (check_format_info_main): Call avoid_dollar_number when operand
186         numbers might occur but has_operand_number == 0.
187
188 2004-05-14  Richard Earnshaw  <rearnsha@arm.com>
189
190         * arm.md (all peephole2 patterns): Use predicates that validate
191         register classes as appropriate.
192
193 2004-05-14  Steven Bosscher  <stevenb@suse.de>
194
195         PR opt/14472
196         * tree-tailcall.c (process_assignment): Use STRIP_NOPS to
197         ignore type conversions that do not inhibit tail calling.
198         (find_tail_calls): Likewise.
199
200 2004-05-14  Jeff Law  <law@redhat.com>
201
202         * tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Don't even
203         bother marking bypassed virtuals for out-of-ssa.  Instead merge
204         bypassed virtuals into vars_to_rename just before into-ssa pass.
205
206         * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Reorganize
207         so that it picks up more opportunities to eliminate ABS expressions
208         or turn them into negations.
209
210 2004-05-14  Steven Bosscher  <stevenb@suse.de>
211
212         * passes.c (rest_of_handle_null_pointer): Remove.
213         (rest_of_handle_cse): Don't call rest_of_handle_null_pointer.
214         (rest_of_compilation): Likewise.
215         * rtl.h (delete_null_pointer_checks): Remove prototype.
216         * gcse.c (rd_kill, rd_gen, reaching_defs, rd_out, ae_in, ae_out):
217         Remove declarations.
218         (get_bitmap_width, alloc_rd_mem, free_rd_mem, handle_rd_kill_set,
219         compute_kill_rd, compute_rd, alloc_avail_expr_mem,
220         free_avail_expr_mem, compute_ae_gen, expr_killed_p, compute_ae_kill,
221         expr_reaches_here_p, computing_insn, def_reaches_here_p,
222         can_disregard_other_sets, handle_avail_expr, classic_gcse,
223         one_classic_gcse_pass, invalidate_nonnull_info,
224         delete_null_pointer_checks_1, delete_null_pointer_checks,
225         expr_reached_here_p_work): Remove.
226         (gcse_main): Do not perform classic GCSE when optimizing for size.
227         (alloc_pre_mem, free_pre_mem): Don't touch ae_in and ae_out, they
228         are never used.
229
230 2004-05-14  Andrew Pinski  <pinskia@physics.uc.edu>
231
232         PR optimization/14466
233         * tree-complex.c (make_temp): Remove.
234         (gimplify_val): Replace make_temp with make_rename_temp
235         and add NULL as the second argument.
236         (expand_complex_div_wide): Likewise.
237         * tree-dfa.c (make_rename_temp): New function.
238         * tree-flow.h (make_rename_temp): Declare.
239         * tree-sra.c (make_temp): Remove.
240         (lookup_scalar): Replace make_temp with make_rename_temp.
241         (create_scalar_copies): Likewise.
242         * tree-ssa-phiopt.c (conditional_replacement): When we
243         get non gimple create a temporary variable to hold the
244         casted expression.
245
246 2004-05-14  Paul Brook  <paul@codesourcery.com>
247
248         * stor-layout.c (update_alignment_for_field): Use
249         targetm.align_anon_bitfield.
250         * target-def.h (TARGET_ALIGN_ANON_BITFIELD): Define.
251         (TARGET_INITIALIZER): Use it.
252         * target.h (struct gcc_target): Add align_anon_bitfield.
253         * config/arm/arm.c (arm_align_anon_bitfield):  New function.
254         (TARGET_ALIGN_ANON_BITFIELD): Define.
255         * doc/tm.texi: Document TARGET_ALIGN_ANON_BITFIELD.
256
257 2004-05-13  Zack Weinberg  <zack@codesourcery.com>
258
259         * tree.def (documentation): Remove mention of class 'b'.
260         (BLOCK): Now in class 'x'.
261         * c-common.c (verify_tree): Remove case 'b'.
262         * c-typeck.c (same_translation_unit_p): Change 'b' to 'x'.
263         * calls.c (calls_function_1): Control cannot get past the switch
264         when exp is a BLOCK.
265         * print-tree.c (print_node): Move code for class 'b' to the class
266         'c'/'x' switch, as case BLOCK.
267         * tree.c (tree_size, make_node_stat, tree_node_structure): Likewise.
268         (unsafe_for_reeval, substitute_placeholder_in_expr)
269         (stabilize_reference_1): Remove case 'b'.
270         * tree-browser.c (browse_tree): Change all tests for TREE_CODE_CLASS
271         of something being 'b' to tests for TREE_CODE of something being
272         BLOCK.
273         * tree-ssa-operands.c (get_expr_operands): Likewise.
274
275 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
276
277         * tree-gimple.c: Rename from tree-simple.c.
278         * tree-gimple.h: Rename from tree-simple.h.
279         * c-gimplify.c: Rename from c-simplify.c
280         * Makefile.in, c-decl.c, gimple-low.c, gimplify.c,
281         langhooks.c, tree-alias-ander.c, tree-alias-common.c,
282         tree-complex.c, tree-dfa.c, tree-flow.h, tree-inline.c,
283         tree-into-ssa.c, tree-iterator.c, tree-mudflap.c,
284         tree-nested.c, tree-nomudflap.c, tree-outof-ssa.c, tree-sra.c,
285         tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-copyrename.c,
286         tree-ssa-dce.c, tree-ssa-live.c, tree-ssa-pre.c, tree-ssa.c:
287         Update.
288
289 2004-05-14  Ranjit Mathew  <rmathew@hotmail.com>
290
291         * doc/sourcebuild.texi: Mention libbanshee and libmudflap.
292
293 2004-05-13  Andrew Pinski  <pinskia@physics.uc.edu>
294
295         * tree-ssa.c (delete_tree_ssa): XFREE
296         bitmaps allocated with BITMAP_XMALLOC.
297
298         * tree-ssa-pre.c (execute_pre): Free ephi_use_pool and
299         idfs_cache at the end of the function.
300
301         * tree-ssa-live.c (calculate_live_on_entry): Free saw_def
302         at the end of the function.
303
304         * tree-ssa-dce.c (perform_tree_ssa_dce): Free
305         el at the end of the function.
306
307         * tree-into-ssa.c (insert_phi_nodes_for): XFREE
308         bitmaps allocated with BITMAP_XMALLOC.
309
310         * loop-unswitch.c (unswitch_single_loop): Free bbs at
311         the end.
312
313         * final.c (shorten_branches): Free uid_shuid before
314         reallocating it.
315
316         * bb-reoder.c (connect_traces): Free cold_traces at the end.
317
318 2004-05-13  Jeff Law  <law@redhat.com>
319
320         * tree-ssa-live.c (calculate_live_on_entry): Ignore virtual
321         variables.  Simplify slightly by using USE_OP/DEF_OP instead
322         of USE_OP_PTR/DEF_OP_PTR and dereferencing the result.
323
324         * tree-into-ssa.c (compute_global_livein): Use EXECUTE_IF_SET_IN_BITMAP
325         rather than iterating through the blocks testing each bit in
326         livein to initialize the worklist.
327         (mark_def_sites): Remove useless checks of KILLS for virtual
328         operands.
329
330         * tree-ssa-forwprop.c (record_single_argument_cond_exprs): Accept
331         new parameters for the statement and variable worklist as well
332         as a bitmap of interesting SSA_NAMEs.  Walk over the statement
333         worklist recording interesting variables in the variable worklist
334         and bitmap.  Handle casts between integral and boolean types.
335         (substitute_single_use_vars): Accept new parameters for the statement
336         and variable worklist.  When a substitution is made add a new
337         entry to the statement worklist.  Handle casts between integral
338         and boolean types.
339         (tree_ssa_forward_propagate_single_use_vars): Rework to pass
340         worklists to children.  Iterate until the statement worklist
341         is empty.
342
343 2004-05-13  Andrew Pinski  <pinskia@physics.uc.edu>
344
345         * tree-outof-ssa.c (rewrite_vars_out_of_ssa): Free map at
346         the end of the block.
347
348         * tree-into-ssa.c (def_blocks_free): XFREE bitmaps allocated
349         with BITMAP_XMALLOC.
350
351         * tree-ssa-alias.c (delete_alias_info): XFREE bitmaps allocated
352         with BITMAP_XMALLOC.
353
354         * tree-ssa-dom.c (tree_ssa_dominator_optimize):
355         Free nonzero_vars at the end of the function.
356
357         * convert.c (convert_to_integer): Make a CONVERT_EXPR when there is a
358         need to generate code instead of a NOP_EXPR.
359
360 2004-05-13  Ian Lance Taylor  <ian@wasabisystems.com>
361
362         * gcc.c (default_compilers): Fill out initializers for new Fortran
363         entries.
364
365 2004-05-13  Paul Brook  <paul@codesourcery.com>
366
367         * config/arm/arm.h (PCC_BITFIELD_TYPE_MATTERS): Define.
368
369 2004-05-13  Paul Brook  <paul@codesourcery.com>
370
371         * config/arm/arm.c (arm_default_short_enums): New function.
372         (TARGET_DEFAULT_SHORT_ENUMS): Define.
373
374 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
375
376         Merge from tree-ssa-20020619-branch.
377
378         * Makefile.in (reload1.o-warn): Add.
379         (tree-alias-ander.o-warn): Add.
380         (GMPLIBS): Define.
381         (GMPINC): Define.
382         (BANSHEELIB): Define.
383         (BANSHEEINC): Define.
384         (TREE_DUMP_H): Define.
385         (TREE_SIMPLE_H): Define.
386         (TREE_FLOW_H): Define.
387         (LIBDEPS): Add BANSHEELIB.
388         (INCLUDES): Add BANSHEEINC and GMPINC.
389         (C_AND_OBJC_OBJS): Add c-simplify.o, tree-mudflap.o,
390         c-mudflap.o and c-pretty-print.o.
391         (C_OBJS): Remove c-pretty-print.o.
392         (OBJS-common): Remove sibcall.o.
393         Add tree-cfg.o, tree-dfa.o, tree-eh.o,
394         tree-ssa.o, tree-optimize.o, tree-simple.o,
395         tree-alias-type.o, gimplify.o, tree-pretty-print.o,
396         tree-into-ssa.o, tree-outof-ssa.o, tree-alias-common.o,
397         tree-ssa-ccp.o, @ANDER@, tree-ssa-dce.o, tree-ssa-copy.o,
398         tree-nrv.o, tree-ssa-copyrename.o, tree-ssa-pre.o,
399         tree-ssa-live.o, tree-ssa-operands.o, tree-ssa-alias.o,
400         tree-ssa-phiopt.o, tree-ssa-forwprop.o, tree-nested.o,
401         tree-ssa-dse.o, tree-ssa-dom.o, domwalk.o,
402         tree-tailcall.o, gimple-low.o, tree-iterator.o,
403         tree-phinodes.o, tree-ssanames.o, tree-sra.o,
404         tree-complex.o, tree-ssa-loop.o, rtl-profile.o and
405         tree-profile.o.
406         (OBJC-archive): Add tree-nomudflap.o.
407         (cc1): Add dependency on @TREEBROWSER@.
408         (c-decl.o): Add dependency on TREE_DUMP_H.
409         (c-dump.o): Likewise.
410         (c-common.o): Add dependency on tree-iterator.h
411         (c-pretty-print.o): Add dependency on DIAGNOSTIC_H.
412         (gtype-desc.o): Add dependency on TREE_FLOW_H.
413         (tree.o): Add dependency on tree-iterator.h,
414         BASIC_BLOCK_H and TREE_FLOW_H.
415         (tree-dump.o): Depend on TREE_DUMP_H instead of tree-dump.h.
416         (langhooks.o): Add dependency on TREE_SIMPLE_H.
417         (tree-alias-type.o, tree-alias-ander.o,
418         tree-alias-common.o, tree-ssa.o, tree-into-ssa.o,
419         tree-outof-ssa.o, tree-ssa-dse.o, tree-ssa-forwprop.o,
420         tree-ssa-phiopt.o, tree-nrv.o, tree-ssa-copy.o,
421         tree-ssa-dom.o, tree-ssanames.o, tree-phinodes.o,
422         domwalk.o, tree-ssa-live.o, tree-ssa-copyrename.o,
423         tree-ssa-pre.o, tree-cfg.o, tree-tailcall.o,
424         tree-nested.o, tree-iterator.o, tree-dfa.o,
425         tree-ssa-operands.o, tree-eh.o, tree-ssa-loop.o,
426         tree-ssa-alias.o, tree-optimize.o, c-simplify.o,
427         gimplify.o, gimple-low.o, tree-browser.o, tree-simple.o,
428         tree-mudflap.o, c-mudflap.o, tree-nomudflap.o,
429         tree-pretty-print.o, tree-ssa-dce.o, tree-ssa-ccp.o,
430         tree-sra.o, tree-complex.o, tree-profile.o,
431         rtl-profile.o): New rules.
432         (function.o): Add dependency on basic-block.h
433         (expr.o): Add dependency on tree-iterator.h.
434         (sibcall.o): Remove.
435         (profile.o): Depend on TREE_FLOW_H instead of TREE_H.
436         (cfg.o): Add dependency on TIMEVAR_H.
437         (cfghooks.o): Add dependency on TREE_FLOW_H.
438         (reg-stack.o): Add dependency on basic-block.h.
439         (GTFILES): Add hwint.h, tree-mudflaph.c, tree-flow.h,
440         c-objc-common.c, c-common.c, c-parse.in, tree-ssanames.c,
441         tree-eh.c, tree-phinodes.c, tree-cfg.c, tree-dfa.c,
442         tree-ssa-ccp.c, tree-iterator.c, gimplify.c,
443         tree-alias-type.h, tree-alias-common.h,
444         tree-alias-type.c, tree-alias-common.c,
445         tree-ssa-operands.h, tree-ssa-operands.c, tree-profile.c,
446         rtl-profile.c and tree-nested.c.
447         (gt-tree-alias-common.h, gt-tree-mudflap.h,
448         gt-tree-ssa-ccp.h, gt-tree-eh.h, gt-tree-ssanames.h,
449         gt-tree-iterator.h, gt-gimplify.h, gt-tree-phinodes.h,
450         gt-tree-cfg.h, gt-tree-nested.h): New rules.
451         (TEXI_GCCINT_FILES): Add cfg.texi and tree-ssa.texi.
452         * basic-block.h: Include predict.h
453         (struct edge_def): Add GTY marker.
454         Change field 'insns' to be a union of tree and rtx.
455         (EDGE_TRUE_VALUE): Define.
456         (EDGE_FALSE_VALUE): Define.
457         (EDGE_EXECUTABLE): Define.
458         (struct bb_ann_d): Forward declare.
459         (struct basic_block_def): Add GTY marker.
460         Remove fields head_tree and end_tree.
461         Add fields stmt_list, rbi and tree_annotations.
462         (struct reorder_block_def): Define.
463         (basic_block_info): Add GTY marker.
464         (ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Change to global
465         variables instead of macros.
466         (flow_call_edges_add): Remove declaration.
467         (make_eh_edge): Remove declaration.
468         (brief_dump_cfg, find_edge, tree_predicted_by_p,
469         rtl_predicted_by_p, tree_predict_edge, rtl_predict_edge,
470         predict_edge_def, rtl_make_eh_edge, find_basic_blocks,
471         cleanup_cfg, delete_unreachable_blocks, merge_seq_blocks,
472         alloc_rbi_pool, initialize_bb_rbi, free_rbi_pool): Declare.
473         (try_redirect_by_replacing_jump): Modfiy return type to
474         edge instead of bool.
475         * bb-reorder.c (copy_bb): Call duplicate_block
476         instead of cfg_layout_duplicate_bb.
477         (copy_bb_p): Call can_duplicate_block_p instead of
478         cfg_layout_can_duplicate_bb_p.
479         * bitmap.c (bitmap_first_set_bit): Abort if word
480         wasn't found.
481         (bitmap_last_set_bit): Likewise.
482         * builtin-types.def (DEF_FUNCTION_TYPE_2): Add
483         (DEF_FUNCTION_TYPE_3): Add.
484         * builtins.c (c_strlen): Make extern.
485         (builtin_save_expr): New.
486         (expand_builtin_nonlocal_goto): New.
487         (expand_builtin_constant_p): Remove.
488         (expand_builtin_mathfn): Call builtin_save_expr instead
489         of save_expr.
490         (expand_builtin_mathfn_2): Likewise.
491         (expand_builtin_strcmp): Likewise.
492         (expand_builtin_strncmp): Likewise.
493         (expand_builtin_strcat): Likewise.
494         (fold_builtin_cabs): Likewise.
495         (expand_builtin_alloca): Don't trigger if -fmudflap is
496         given.
497         (build_string_literal): Set TREE_INVARIANT on new node.
498         (expand_builtin_profile_fun): New.
499         (round_trampoline_addr): New.
500         (expand_builtin_init_trampoline): New.
501         (expand_builtin_adjust_trampoline): New.
502         (expand_builtin) <BUILT_IN_NEXT_ARG>: Call simplify_builtin_next_arg.
503         <BUILT_IN_CONSTANT_P>: Return const0_rtx;
504         <BUILT_IN_STACK_ALLOC, BUILT_IN_STACK_SAVE,
505         BUILT_IN_STACK_RESTORE, BUILT_IN_NONLOCAL_GOTO,
506         BUILT_IN_PROFILE_FUNC_ENTER, BUILT_IN_PROFILE_FUNC_EXIT,
507         BUILT_IN_INIT_TRAMPOLINE, BUILT_IN_ADJUST_TRAMPOLINE>:
508         Handle.
509         (fold_builtin_expect): New.
510         (fold_builtin_isascii): Don't return non-constant results
511         in GIMPLE form.
512         (fold_builtin_isdigit): Likewise.
513         (fold_builtin_1): New.
514         (fold_builtin): Call it.
515         (build_function_call_expr): Update call to build a new
516         CALL_EXPR.
517         (purge_builtin_constant_p): Remove.
518         (simplify_builtin, simplify_builtin_memcmp,
519         simplify_builtin_strcmp, simplify_builtin_strncmp,
520         simplify_builtin_strpbrk, simplify_builtin_strstr,
521         simplify_builtin_strchr, simplify_builtin_strrchr,
522         simplify_builtin_strcat, simplify_builtin_strncat,
523         simplify_builtin_strspn, simplify_builtin_strcspn,
524         simplify_builtin_next_arg, simplify_builtin_va_start,
525         simplify_builtin_sprintf): New.
526         * builtins.def (BUILT_IN_STACK_ALLOC,
527         BUILT_IN_STACK_SAVE, BUILT_IN_STACK_RESTORE,
528         BUILT_IN_INIT_TRAMPOLINE, BUILT_IN_ADJUST_TRAMPOLINE,
529         BUILT_IN_NONLOCAL_GOTO, BUILT_IN_PROFILE_FUNC_ENTER,
530         BUILT_IN_PROFILE_FUNC_EXIT): Define.
531         * c-common.c: Include tree-iterator.h and hashtab.h.
532         (lang_statement_code_p): Declare.
533         (lang_gimplify_stmt): Declare.
534         (fix_string_type): Set TREE_INVARIANT for value.
535         (pointer_int_sum): Rely on build to set TREE_CONSTANT.
536         (c_type_hash): New.
537         (c_common_get_alias_set): Handle multiple type nodes
538         referring to "the same" type, currently for C90 only.
539         (c_add_case_label): Use create_artificial_label.
540         (finish_label_address_expr): Don't set TREE_CONSTANT on
541         result.
542         (c_expand_expr): Don't handle STMT_EXPR.
543         (handle_alias_attribute): Marke aliased variables to be
544         TREE_STATIC.
545         (handle_nonnull_attribute): Initialize arg_num.
546         (check_function_nonnull): Likewise.
547         (c_walk_subtrees): New.
548         (c_estimate_num_insns_1): Don't handle
549         EXPR_WITH_FILE_LOCATION nor FILE_STMT.
550         (c_decl_uninit_1): Remove.
551         (c_decl_uninit): Remove.
552         (c_warn_unused_result): New.
553         * c-common.def (ASM_STMT): Change number of operands
554         to 4.
555         (FILE_STMT): Remove.
556         * c-common.h (lang_expand_stmt, lang_expand_decl_stmt):
557         Remove.
558         (lang_gimplify_stmt): Add.
559         (expand_stmt): Remove.
560         (ASM_CV_QUAL, ASM_STRING, ASM_OUTPUTS, ASM_INPUTS,
561         ASM_CLOBBERS, STMT_EXPR_WARN_UNUSED_RESULT,
562         ASM_VOLATILE_P, FILE_STMT_FILENAME_NODE,
563         FILE_STMT_FILENAME, STMT_LINENO, STMT_LINENO_FOR_FN_P,
564         ASM_INPUT_P, DECL_C_HARD_REGISTER): Remove.
565         (genrtl_do_pushlevel, genrtl_goto_stmt, genrtl_expr_stmt,
566         genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt,
567         genrtl_while_stmt, genrtl_do_stmt, genrtl_return_stmt,
568         genrtl_for_stmt, genrtl_break_stmt, genrtl_continue_stmt,
569         genrtl_scope_stmt, genrtl_switch_stmt, genrtl_case_label,
570         genrtl_compound_stmt, genrtl_asm_stmt,
571         genrtl_cleanup_stmt, c_decl_uninit): Remove.
572         (c_do_switch_warnings, c_gimplify_expr, c_walk_subtrees,
573         c_tree_chain_matters_p, c_warn_unused_result,
574         c_genericize, c_gimplify_stmt, stmt_expr_last_stmt):
575         Declare.
576         * c-convert.c (convert): Make convert work when
577         converting to compatible types across translation unit.
578         * c-decl.c: Include langhooks.h, tree-mudflap.h,
579         tree-simple.h, diagnostic.h and tree-dump.h
580         (merge_decls): Initialize oldtype to NULL.
581         (finish_decl): Use DECL_HARD_REGISTER instead of
582         DECL_C_HARD_REGISTER.
583         (check_bitfield_type_and_width): Check for null
584         lang_type_specific when check the precision of an enum.
585         (grokdeclarator): Immediately layout an ARRAY_TYPE used
586         in a pointer-to-array declarator.
587         (finish_struct): Clear allocated struct lang_type.
588         (finish_enum): Set enum_min and enum_max.  Set
589         TYPE_MIN/MAX_VALUE to the limits of the compatible type,
590         not to the enumerators.
591         (set_decl_nonlocal): New.
592         (store_parm_decls): Use it via walk_tree.
593         (c_finalize): New.
594         (finish_function): When !targetm.have_ctors_dtors,
595         record static constructors and destructors here...
596         (c_expand_body_1): ... not here.
597         (c_expand_decl): Rename from c_expand_decl_stmt.
598         Handle all C-specific expansion semantics.
599         * c-dump.c (dump_stmt): Use EXPR_LOCUS instead of
600         STMT_LINENO.
601         * c-format.c (handle_format_arg_attribute): Initialize
602         format_num.
603         * c-lang.c: Include tree-inline.h
604         (LANG_HOOKS_EXPAND_DECL,
605         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
606         LANG_HOOKS_TREE_INLINING_WALK_SUBTREES,
607         LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P,
608         LANG_HOOKS_GIMPLIFY_EXPR, LANG_HOOKS_TYPES_COMPATIBLE_P): Define.
609         (LANG_HOOKS_DECL_UNINIT, LANG_HOOKS_RTL_EXPAND_STMT,
610         LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Remove.
611         (c_types_compatible_p): New.
612         * c-mudflap.c: New file.
613         * c-objc-common.c: Include tree-mudflap.h
614         (start_cdtor, finish_cdtor): Collapse
615         together into
616         (build_cdtor): ...here.  Update to construct a complete tree
617         for the function.  No need to call push_scope, pop_scope, or
618         clear_last_expr, or set current_function_cannot_inline.
619         (c_missing_noreturn_ok_p): Change prototype to return
620         bool.
621         (c_objc_common_init): Don't set lang_missing_noreturn_ok_p.
622         * c-opts.c (c_common_handle_option): Move handling of -fdump- to
623         opts.c.
624         (c_common_post_options): Don't ever use rtl inlining.
625         * c-parse.in: Use EXPR_LOCUS instead of STMT_LINENO.
626         * c-pragma.c (handle_pragma_redefine_extname): Define
627         always.
628         (init_pragma): Activate #pragma redefine_extname for mudflap.
629         * c-pretty-print.c (pp_c_statement): Remove FILE_STMT.
630         (pp_c_initializer): Accept any type CONSTRUCTOR.
631         (pp_c_initializer_list): Fix code expectations for VECTOR_TYPE and
632         COMPLEX_TYPE.
633         (decl_name_str): New local function.
634         (pp_c_direct_declarator): Call it.
635         (pp_c_primary_expression): Call it.
636         (pp_c_id_expression): Call it.
637         (pp_c_statement): Call it.
638         (print_c_tree): Create new pp object.
639         * c-pretty-print.h (pp_c_tree_decl_identifier,
640         print_c_tree): Declare.
641         * c-semantics.c: Include langhooks.h
642         (lang_expand_stmt, lang_expand_decl_stmt,
643         find_reachable_label_1, find_reachable_label,
644         expand_unreachable_if_stmt, expand_unreachable_stmt,
645         genrtl_do_stmt_1): Remove.
646         (begin_stmt_tree): Don't check for changed filename.
647         Call annotate_with_locus.
648         (finish_stmt_tree): Don't set line for end of function.
649         (build_stmt): Don't check type nodes for
650         side effects.
651         (build_stmt): Set TREE_SIDE_EFFECTS.
652         Set EXPR_LOCUS instead of STMT_LINENO.
653         (lang_expand_stmt, lang_expand_decl_stmt,
654         expand_cond, genrtl_do_pushlevel, genrtl_goto_stmt, genrtl_expr_stmt,
655         genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt,
656         genrtl_while_stmt, genrtl_do_stmt_1, genrtl_do_stmt,
657         genrtl_return_stmt, genrtl_for_stmt, genrtl_break_stmt,
658         genrtl_continue_stmt, genrtl_scope_stmt, genrtl_switch_stmt,
659         genrtl_case_label, genrtl_compound_stmt, genrtl_asm_stmt,
660         genrtl_cleanup_stmt, expand_stmt, find_reachable_label,
661         find_reachable_label_1, expand_unreachable_if_stmt,
662         expand_unreachable_stmt): Remove.
663         (prep_stmt): Use EXPR_LOCUS instead of STMT_LINENO.
664         * c-simplify.c: New file.
665         * c-tree.h (C_LANG_TREE_NODE_CHAIN_NEXT): Define.
666         (struct lang_type): Add fields enum_min and enum_max.
667         (c_expand_decl_stmt, c_missing_noreturn_ok_p): Remove.
668         (c_expand_decl, c_missing_noreturn_ok_p,
669         c_types_compatible_p): Declare.
670         * c-typeck.c (tagged_types_tu_compatible_p): Allow for
671         compiler-generated TYPE_DECLs without a DECL_ORIGINAL_TYPE.
672         (default_function_array_conversion): Rely on build to
673         set TREE_CONSTANT.
674         (parser_build_binary_op, pointer_diff): Likewise.
675         (build_unary_op, build_binary_op): Likewise.
676         (build_array_ref):
677         (build_external_ref): Set TREE_INVARIANT.
678         (build_c_cast, pop_init_level): Likewise.
679         (process_init_element): Use ASM_VOLATILE_P.
680         (build_asm_expr): Adapt to GENERIC/GIMPLE syntax.
681         (c_finish_case): Call c_do_switch_warnings.
682         * c.opt (fdump-): Remove.
683         * calls.c (try_to_integrate): Remove.
684         (prepare_call_address): Replace fndecl arg with a
685         precomputed static chain value.
686         (emit_call_1): New argument for full call expr.
687         (flags_from_decl_or_type): Call special_function_p.
688         (initialize_argument_information): Add argument
689         may_tailcall.
690         (purge_reg_equiv_notes): New.
691         (expand_call): Do not try to expand calls inline.
692         (fixup_tail_calls): New.
693         * cfg.c: Include timevar.h and ggc.h.
694         (bb_pool, edge_pool): Remove.
695         (ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Declare.
696         (entry_exit_blocks): Remove.
697         (rbi_pool): Declare.
698         (init_flow): Do not create pools.
699         Allocate entry/exit block.
700         (free_edge, alloc_block, expunge_block, unchecked_make_edge): Use GGC.
701         (alloc_rbi_pool, free_rbi_pool, initialize_bb_rbi): New.
702         (unlink_block): Clear b->prev_bb and b->next_bb.
703         (compact_blocks): Clear all slots of BASIC_BLOCK array.
704         (dump_flow_info): Work on trees too.
705         (dump_cfg_bb_info): New.
706         (brief_dump_cfg): New.
707         * cfganal.c (need_fake_edge_p, flow_call_edges_add): Remove.
708         (find_edge): New.
709         * cfgbuild.c (rtl_make_eh_edge): Rename from
710         make_eh_edge.  Update all users.
711         (find_basic_blocks): Don't call VARRAY_FREE on
712         basic_block_info.
713         * cfgcleanup.c (outgoing_edges_match): Initialize newpos1
714         and newpos2.
715         (delete_unreachable_blocks): Return changed status.
716         (merge_seq_blocks): New.
717         * cfghooks.c: Include tree-flow.h
718         (tree_register_cfg_hooks, ir_type): New.
719         (redirect_edge_and_branch): Change return type to edge.
720         (predict_edge, predicted_by_p, can_duplicate_block_p,
721         duplicate_block, block_ends_with_call_p,
722         block_ends_with_condjump_p, flow_call_edges_add): New.
723         * cfghooks.h (redirect_edge_and_branch): Change return
724         type to edge.
725         (predict_edge, predicted_by_p, can_duplicate_block_p,
726         duplicate_block, block_ends_with_call_p,
727         block_ends_with_condjump_p, flow_call_edges_add): Declare.
728         (redirect_edge_and_branch): Change return type to edge.
729         (struct cfg_hooks): Add fields block_ends_with_call_p,
730         block_ends_with_condjump_p, flow_call_edges_add,
731         predict_edge, predicted_by_p, can_duplicate_block_p and
732         duplicate_block.
733         (tree_cfg_hooks, ir_type, tree_register_cfg_hooks): Declare.
734         * cfglayout.c (cfg_layout_pool, cfg_layout_initialize_rbi): Removed.
735         (fixup_reorder_chain): Use initialize_bb_rbi.
736         (cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb): Hookized.
737         (cfg_layout_initialize): Use cfg.c rbi pool manipulation functions.
738         (can_copy_bbs_p, copy_bbs): Use cfghooks for bb duplication.
739         (insn_locators_initialize): Use new info about blocks.
740         * cfglayout.h (typedef struct reorder_block_def): Moved to
741         basic_block.h.
742         (cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb): Declaration
743         removed.
744         * cfgloop.c: Include tree.h and tree-flow.h.
745         * cfgloop.h (create_loop_notes): Declare.
746         * cfgloopmanip.c (create_loop_notes): New.
747         * cfgrtl.c (cfg_layout_create_basic_block): Use initialize_bb_rbi.
748         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Fill in can_duplicate_block_p
749         and duplicate_block fields.
750         (create_basic_block_structure): Don't look at
751         RTX_INTEGRATED_P.
752         (rtl_block_ends_with_call_p): New.
753         (rtl_block_ends_with_condjump_p): New.
754         (need_fake_edge_p): Moved from cfganal.c.
755         (rtl_flow_call_edges_add): Moved from cfganal.c (flow_call_edges_add).
756         (rtl_cfg_hooks): Add rtl_block_ends_with_call_p,
757         rtl_block_ends_with_condjump_p, rtl_flow_call_edges_add.
758         (cfg_layout_rtl_cfg_hooks): Ditto.
759         * cgraph.c (cgraph_mark_reachable_node): Don't force nested
760         functions to be reachable.
761         * cgraphunit.c (decide_is_function_needed):
762         * cgraphunit.c (decide_is_function_needed): Nested functions of extern
763         inline functions don't need to be output.
764         (cgraph_assemble_pending_functions): Don't do anything
765         special for nested functions.
766         (cgraph_mark_functions_to_output): Likewise.
767         (cgraph_finalize_function): Don't zap DECL_STRUCT_FUNCTION.
768         (cgraph_analyze_function): Use estimate_num_insns.
769         (cgraph_mark_functions_to_output): Likewise.
770         (cgraph_estimate_growth, cgraph_clone_inlined_nodes): Likewise.
771         (cgraph_expand_function): Allow functions to not be
772         emitted.
773         (cgraph_remove_unreachable_nodes):
774         (cgraph_recursive_inlining_p): Simplify.
775         (lookup_recursive_calls,
776         cgraph_decide_recursive_inlining): New.
777         (cgraph_decide_inlining_*): Update calls of
778         cgraph_mark_inline.
779         * combine.c (get_pos_from_mask): Always set *plen.
780         * common.opt (fdump-, fmudflap, fmudflapth, fmudflapir,
781         ftree-based-profiling, ftree-ccp, ftree-ch,
782         ftree-combine-temps, ftree-copyrename, ftree-dce,
783         ftree-dominator-opts, ftree-dse, ftree-loop-optimize,
784         ftree-points-to, ftree-pre, ftree-sra, ftree-ter,
785         ftree-lrs): Add.
786         * config.in (HAVE_LD_PIE, HAVE_BANSHEE, PREFIX_INCLUDE_DIR):
787         Undefine.
788         * configure.ac: Add --enable-tree-browser option.
789         Add --with-libbanshee option.
790         Add GMPLIBS and GMPINC.
791         * configure: Regenerate.
792         * coverage.c (tree_ctr_tables): New.
793         (coverage_counter_alloc): Use it.
794         (build_ctr_info_value): Ditto.
795         (coverage_counter_ref): Ditto.  Rename to rtl_coverage_counter_ref.
796         (tree_coverage_counter_ref): New.
797         * coverage.h (coverage_counter_ref): Remove declaration.
798         (rtl_coverage_counter_ref): Declare.
799         (tree_coverage_counter_ref): Declare.
800         * cppexp.c (append_digit): Rearrange unsignedp/overflow setting.
801         (eval_token, num_binary_op, num_part_mul, num_div_op): Likewise.
802         * cse.c (fold_rtx): Do not handle CONSTANT_P_RTX.
803         (struct cse_basic_block_data): Rename enum values to not
804         conflict with profile.h; update all uses.
805         * dbxout.c (dbxout_symbol_location): Don't mention integrate.c
806         in comments.
807         * defaults.h (TRAMPOLINE_ALIGNMENT): Move from function.c.
808         * diagnostic.h (debug_output_buffer, dump_generic_node,
809         print_generic_stmt, print_generic_stmt_indented,
810         print_generic_expr, print_generic_decl,
811         debug_generic_expr, debug_generic_stmt, debug_c_tree):
812         Declare.
813         * dominance.c: Cache immediate dominators.
814         * domwalk.c: New file.
815         * domwalk.h: New file.
816         * dwarf2out.c (is_fortran): Support DW_LANG_Fortran95.
817         (gen_subprogram_die): Generate a DIE for a named
818         return value.
819         (loc_descriptor_from_tree): Treat RESULT_DECL like VAR_DECL.
820         (add_location_or_const_value_attribute): Likewise.
821         (add_bound_info): Likewise.
822         (gen_decl_die): Likewise.
823         * emit-rtl.c (maybe_set_first_label_num): New.
824         (copy_most_rtx): Don't copy the integrated flag.
825         Copy the new return_val flag.
826         * et-forest.c (MAX_NODES): Define.
827         (record_path_before_1): Abort if len is greater than
828         MAX_NODES.
829         * except.c (gen_eh_region, gen_eh_region_cleanup, gen_eh_region_try,
830         gen_eh_region_catch, gen_eh_region_allowed,
831         gen_eh_region_must_not_throw, get_eh_region_number,
832         get_eh_region_may_contain_throw, get_eh_region_tree_label,
833         set_eh_region_tree_label, expand_resx_expr): New.
834         (expand_eh_region_start, expand_start_catch): Use them.
835         (expand_end_catch): Tidy.
836         (note_eh_region_may_contain_throw): Take region argument.
837         (note_current_region_may_contain_throw): New.
838         (get_exception_filter): Export.
839         (collect_eh_region_array): Export.
840         (remove_unreachable_regions): Check ERT_TRY based on reachability
841         of catches, not reachability of continue_label.  Never remove
842         ERT_MUST_NOT_THROW regions.
843         (collect_rtl_labels_from_trees): New.
844         (convert_from_eh_region_ranges): Use it.
845         (connect_post_landing_pads): Handle dying cleanups.
846         (struct reachable_info): Add callback data.
847         (add_reachable_handler): Invoke the callback.
848         (foreach_reachable_handler): New.
849         (reachable_handlers): Use it.
850         (arh_to_landing_pad, arh_to_label): New.
851         (can_throw_internal_1): Split out from can_throw_internal.
852         (can_throw_external_1): Similarly.
853         * except.h: Update.
854         * explow.c (emit_stack_save): Remove savearea mode check.
855         (update_nonlocal_goto_save_area): New.
856         (allocate_dynamic_stack_space): Use it.
857         (probe_stack_range): Never emit loop notes.
858         * expmed.c (extract_fixed_bit_field): Always propagate the
859         target for the shift if it is a REG.
860         * expr.c: Include tree-iterator.h
861         (is_zeros_p): Remove.
862         (categorize_ctor_elements_1, categorize_ctor_elements): New.
863         (count_type_elements): New.
864         (mostly_zeros_p): Use them.
865         (expr_wfl_stack): Remove.
866         (convert_move): Do nothing if to and from are the same.
867         (emit_block_move_via_loop): Don't emit LOOP notes.
868         (emit_move_insn): Don't handle CONSTANT_P_RTX.
869         (emit_move_insn_1): Don't generate inline warnings.
870         (expand_vars, expand_var): Split from ...
871         (expand_expr_1): ... here.
872         (expand_expr_real, expand_expr_real_1):  Use new macros
873         EXPR_LOCATION and EXPR_HAS_LOCATION.
874         * expr.h (simplify_builtin_fputs,
875         simplify_builtin_strcpy, simplify_builtin_strncpy,
876         expand_var, fixup_tail_calls,
877         update_nonlocal_goto_save_area): Declare.
878         (lookup_static_chain, expand_inline_function,
879         mark_seen_cases): Remove.
880         (prepare_call_address): Change type of 2nd argument to
881         rtx.
882         * final.c (profile_function): Update static chain test.
883         (final): Don't look at RTX_INTEGRATED_P.
884         * flags.h (flag_mudflap, flag_mudflap_threads,
885         flag_mudflap_ignore_reads, flag_tree_pre, flag_tree_ccp,
886         flag_tree_dce, flag_tree_combine_temps,
887         flag_tree_live_range_split, flag_tree_dom, flag_tree_ch,
888         flag_tree_dse, flag_tree_sra, flag_tree_copyrename,
889         flag_tree_points_to): Declare.
890         (enum pta_type): Declare.
891         * flow.c (lang_missing_noreturn_ok_p): Remove.
892         (check_function_return_warnings): Remove.
893         (update_life_info): Update comments.
894         (free_basic_block_vars): Don't call VARRAY_FREE for
895         basic_block_info.
896         (regno_uninitialized): Remove.
897         * fold-const.c (int_const_binop): Make extern.
898         (non_lvalue): Rely on build to set TREE_CONSTANT.
899         (operand_equal_p): Replace only_const argument with
900         flags.  Allow pure functions if OEP_PURE_SAME.
901         (fold): Use OEP_ONLY_CONST.
902         (invert_truthvalue) <NOP_EXPR> Break if argument is of
903         boolean type.
904         (fold_relational_hi_lo,
905         nondestructive_fold_binary_to_constant,
906         nondestructive_fold_unary_to_constant,
907         fold_read_from_constant_string): New.
908         * function.c (struct function): Remove calls_constant_p.
909         (current_function_calls_constant_p): Remove.
910         (inline_function_decl): Remove.
911         (put_var_into_stack): Don't use it.
912         (fix_lexical_addr): Likewise.
913         (inline_function_decl): Remove extern declaration.
914         (TRAMPOLINE_ALIGNMENT): Move to defaults.h.
915         (trampolines_created): Move to varasm.c.
916         (free_after_compilation): Update for removed fields.
917         (allocate_struct_function): Likewise.
918         (delete_handlers, lookup_static_chain): Remove.
919         (fix_lexical_addr): Don't consider non-local variable refs.
920         (trampoline_address): Remove.
921         (round_trampoline_addr): Move to builtins.c.
922         (adjust_trampoline_addr): Remove.
923         (expand_function_start): Update for changes to static chain
924         and nonlocal goto handling.
925         (initial_trampoline): Move to varasm.c.
926         (expand_function_end): Don't build trampolines or kill
927         unreferenced nonlocal goto labels.
928         (free_after_compilation): Don't set it.
929         (expand_function_end): Likewise.
930         (setjmp_vars_warning): Rename from
931         uninitialized_vars_warning, remove uninitialized vars warning.
932         (uninitialized_vars_warning): Remove old comment
933         and check for DECL_INITIAL, replace with a check of TREE_NO_WARNING
934         and do not call the langhook.
935         (expand_function_start, expand_function_end): Don't do
936         function instrumentation here.
937         (clear_block_marks): Rename from reorder_blocks_0, export.
938         (blocks_nreverse): Export.
939         (uninitialized_vars_warning): Use DECL_RTL_SET_P to test for presence
940         of rtl.
941         (reset_block_changes, record_block_change, finalize_block_changes,
942         check_block_change, free_block_changes): New functions.
943         (assign_parms): Setting of current_function_stdarg
944         moved ...
945         (allocate_struct_function): ... here.
946         * function.h (struct function): Remove x_nonlocal_labels,
947         x_nonlocal_goto_handler_slots, x_nonlocal_goto_stack_level,
948         x_context_display, x_trampoline_list, needs_context.
949         Add static_chain_decl, nonlocal_goto_save_area.
950         (struct function): Remove x_clobber_return_insn.
951         Add tail_call_emit field, last_label_uid,
952         unexpanded_var_list, dont_emit_block_notes,
953         ib_boundaries_block, function_end_locus and saved_tree/saved_args.
954         (clear_block_marks): Declare.
955         * gcc.c (MFWRAP_SPEC, MFLIB_SPEC): Add -fmudflapth support.
956         (mfwrap_spec, mflib_spec): Declare.
957         (cpp_unique_options, cc1_options): Ditto.
958         (default_compilers): Add .F and .f90.
959         (static_specs): Add mfwrap and mflib.
960         * gcse.c (want_to_gcse_p, gcse_constant_p): Don't handle
961         CONSTANT_RTX_P.
962         (reg_used_on_edge, reg_killed_on_edge, bypass_block):
963         Update to match insns field in struct edge_def.
964         * gdbinit.in (pgs, pge): Define.
965         * genattrtab.c (ATTR_PERMANENT_P): Use the return_val flag
966         instead of the integrated flag.
967         * gengtype-lex.l (IWOrD): Add HOST_WIDEST_INT
968         * gengtype-yacc.y (bitfieldlen): Add empty action.
969         (struct_fields): Accept unnamed bitfields.
970         (bitfieldlen): Split from ...
971         (bitfieldopt): ... here.
972         * gengtype.c (ifiles): Add tree-alias-type.h and
973         tree-flow.h.
974         * genrecog.c (validate_pattern): Do not handle
975         CONSTANT_P_RTX.
976         * gimple-low.c: New file.
977         * gimplify.c: New file.
978         * haifa-sched.c (priority): Do not handle CONSTANT_P_RTX.
979         (restore_line_notes): Do not set RTX_INTEGRATED_P.
980         * ifcvt.c (dead_or_predicable): Initialize local variable
981         'earliest'.
982         * input.h (expr_wfl_stack): Remove.
983         * integrate.c (INTEGRATE_THRESHOLD): Remove.
984         (setup_initial_hard_reg_value_integration): Likewise.
985         (initialize_for_inline): Likewise.
986         (note_modified_parmregs): Likewise.
987         (integrate_parm_decls): Likewise.
988         (process_reg_param): Likewise.
989         (save_parm_insns): Likewise.
990         (copy_insn_list): Likewise.
991         (copy_insn_notes): Likewise.
992         (compare_blocks): Likewise.
993         (find_block): Likewise.
994         (inlining): Likewise.
995         (function_cannot_inline_p): Likewise.
996         (parmdecl_map): Likewise.
997         (in_nonparam_insns): Likewise.
998         (save_for_inline): Likewise.
999         (FIXED_BASE_PLUS): Likewise.
1000         (expand_inline_function): Likewise.
1001         (copy_rtx_and_substitute): Don't look at map->integrating,
1002         map->inline_target, and inlining, since we are never copying
1003         for integrating.
1004         Don't abort on RTX_INTEGRATED_P.
1005         (old_fun): Remove.
1006         (output_inline_function): Remove.
1007         * integrate.h (struct inline_map): Remove fields integrating,
1008         block_map, leaf_reg_map, inline_target, and local_return_label.
1009         * jump.c (next_nonnote_insn_in_loop, duplicate_loop_exit_test,
1010         copy_loop_headers, never_reached_warning): Removed.
1011         (any_uncondjump_p): Reject nonlocal goto.
1012         * langhooks-def.h (lhd_types_compatible_p,
1013         lhd_expand_decl, lhd_gimplify_expr): Declare.
1014         (LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_TYPES_COMPATIBLE_P,
1015         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
1016         LANG_HOOKS_FUNCTION_LEAVE_NESTED,
1017         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
1018         LANG_HOOKS_GIMPLIFY_EXPR,
1019         LANG_HOOKS_GIMPLE_BEFORE_INLINING,
1020         LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_TYPES_COMPATIBLE_P,
1021         LANG_HOOKS_GIMPLIFY_EXPR,
1022         LANG_HOOKS_GIMPLE_BEFORE_INLINING): Define.
1023         (LANG_HOOKS_DECL_UNINIT, LANG_HOOKS_RTL_EXPAND_START,
1024         LANG_HOOKS_RTL_EXPAND_STMT, LANG_HOOKS_RTL_EXPAND_END,
1025         LANG_HOOKS_FUNCTION_LEAVE_NESTED,
1026         LANG_HOOKS_RTL_EXPAND_INITIALIZER,
1027         LANG_HOOKS_DECL_UNINIT,
1028         LANG_HOOKS_RTL_EXPAND_INITIALIZER): Remove.
1029         * langhooks.c: Include tree-simple.h.
1030         (lhd_expand_decl): New.
1031         (lhd_types_compatible_p): New.
1032         (lhd_decl_uninit): Remove.
1033         (lhd_gimplify_expr): New.
1034         * langhooks.h (struct lang_hooks_for_rtl_expansion):
1035         Remove.
1036         (struct lang_hooks_for_functions): Add field
1037         missing_noreturn_ok_p.
1038         (struct lang_hooks): Add field expand_decl,
1039         types_compatible_p, gimplify_expr and
1040         gimple_before_inlining.
1041         Remove fields decl_uninit and rtl_expand
1042         * opts.c (decode_options): Set flag_tree_ccp,
1043         flag_tree_dce, flag_tree_dom, flag_tree_dse,
1044         flag_tree_pre, flag_tree_ter,
1045         flag_tree_live_range_split, flag_tree_sra,
1046         flag_tree_copyrename and flag_tree_ch at -O1 and higher.
1047         (common_handle_option): Handle OPT_fdump_, OPT_fmudflap,
1048         OPT_fmudflapth, OPT_fmudflapir,
1049         OPT_ftree_based_profiling, OPT_ftree_ccp, OPT_ftree_dce,
1050         OPT_ftree_combine_temps, OPT_ftree_ter, OPT_ftree_lrs,
1051         OPT_ftree_dominator_opts, OPT_ftree_copyrename,
1052         OPT_ftree_ch, OPT_ftree_dse, OPT_ftree_sra,
1053         OPT_ftree_points_to_ and OPT_ftree_pre.
1054         * output.h (regno_uninitialized, find_basic_blocks,
1055         cleanup_cfg, delete_unreachable_blocks,
1056         check_function_return_warnings): Remove.
1057         * params.def (PARAM_MAX_INLINE_INSNS_RECURSIVE,
1058         PARAM_MAX_INLINE_INSNS_RECURSIVE_AUTO,
1059         PARAM_MAX_INLINE_RECURSIVE_DEPTH,
1060         PARAM_MAX_INLINE_RECURSIVE_DEPTH_AUTO,
1061         PARAM_GLOBAL_VAR_THRESHOLD, PARAM_MAX_ALIASED_VOPS):
1062         * params.h (GLOBAL_VAR_THRESHOLD, MAX_ALIASED_VOPS):
1063         Define.
1064         * passes.c (rest_of_decl_compilation):
1065         (rest_of_handle_sibling_calls): Remove.
1066         (rest_of_handle_inlining): Remove.
1067         (rest_of_handle_gcse): Do not run
1068         purge_builtin_constant_p.
1069         (rest_of_compilation): Update.
1070         Do not call copy_loop_headers.
1071         Do rtl-based profiling only when
1072         !flag_tree_based_profiling.  Register rtl-based profiling
1073         hooks.
1074         * predict.c:  Include tree-flow.h, ggc.h, tree-dump.h
1075         (predicted_by_p): Rename to ...
1076         (rtl_predicted_by_p): .. this one; make global
1077         (tree_predicted_by_p): New.
1078         (dump_prediction): Add FILE argument.
1079         (predict_edge): Rename to ...
1080         (rtl_predict_edge): .. this one.
1081         (tree_predict_edge): New.
1082         (combine_predictions_for_insn): Update calls of predict_edge.
1083         (predict_loops): Break out from ...
1084         (estimate_probability): ... here; update comments; move updating
1085         of unknown probabilities from ...
1086         (estimate_bb_frequencies): ... here.
1087         (combine_predictions_for_bb): New.
1088         (tree_predict_by_opcode): New.
1089         (tree_estimate_probability): New.
1090         * predict.def (PRED_TREE_POINTER, PRED_TREE_OPCODE_POSITIVE,
1091         PRED_TREE_OPCODE_NONEQUAL, PRED_TREE_FPOPCODE): New predictors.
1092         * predict.h: Add include guard.
1093         (predict_edge, predict_edge_def): Move prototypes to basic_block.h
1094         * pretty-print.c (pp_write_text_to_stream): Make extern.
1095         * pretty-print.h (pp_write_text_to_stream): Declare.
1096         * print-rtl.c (print_rtx): Don't print the integrated flag.
1097         Print the return_val flag.
1098         * print-tree.c: Use TREE_FILENAME and TREE_LINENO instead
1099         of DECL_SOURCE_FILE and DECL_SOURCE_LINE respectively.
1100         Remove support for EXPR_WITH_FILE_LOCATION nodes.
1101         (print_node): Print TREE_INVARIANT and TREE_VISITED.
1102         * profile.c: Include cfghooks.h, tree-flow.h.
1103         (profile_hooks): New.
1104         (profile_dump_file): New.
1105         (instrument_edges): Use hooks instead of RTL-specific code.
1106         (instrument_values): Ditto.
1107         (get_exec_counts): Ditto.
1108         (compute_branch_probabilities): Ditto.
1109         (compute_value_histograms): Ditto.
1110         (branch_prob): Ditto.
1111         (find_spanning_tree): Ditto.
1112         (end_branch_prob): Ditto.
1113         (gen_edge_profiler): Move to rtl-profile.c (rtl_gen_edge_profiler).
1114         (gen_interval_profiler): Ditto (rtl_gen_interval_profiler).
1115         (gen_pow2_profiler): Ditto (rtl_gen_pow2_profiler).
1116         (gen_one_value_profiler): Ditto (rtl_gen_one_value_profiler).
1117         (tree_register_profile_hooks): New.
1118         (rtl_register_profile_hooks): New.
1119         * ra-rewrite.c (rewrite_program): Clear variable info.
1120         * recog.c (immediate_operand): Do not handle CONSTANT_P_RTX.
1121         * regs.h: Add include guards.
1122         * reload.c (decompose): Clear val using memset.
1123         * rtl.def (CONSTANT_P_RTX): Remove.
1124         * rtl.h (CONSTANT_P): Do not handle CONSTANT_P_RTX.
1125         (copy_loop_headers): Remove.
1126         (struct rtx_def): Replace the integrated flag with the
1127         return_val flag.
1128         (maybe_set_first_label_num): Declare.
1129         (init_branch_prob): Move declaration to value-prof.h.
1130         (end_branch_prob): Ditto.
1131         (branch_prob): Ditto.
1132         (never_reached_warning): Don't declare it.
1133         * rtlanal.c (get_related_value): Initialize get_jump_table_offset
1134         (hoist_insn_to_edge): Update to match field insns in
1135         struct edge_def.
1136         * sbitmap.c (sbitmap_realloc): New.
1137         * sbitmap.h (sbitmap_realloc): Declare.
1138         * sibcall.c: Remove file.
1139         * simplify-rtx.c (simplify_rtx): Do not handle
1140         CONSTANT_P_RTX.
1141         * stmt.c (parse_output_constraint): Don't warn for read-write
1142         memory operand.
1143         (tail_recursion_args): Use types_compatible_p langhook.
1144         (force_label_rtx): Don't look at inline_function_decl.
1145         (label_rtx): Set LABEL_PRESERVE_P appropriately.
1146         (expand_label): Handle DECL_NONLOCAL and FORCED_LABEL.
1147         (declare_nonlocal_label): Remove.
1148         (expand_goto): Don't handle nonlocal gotos.
1149         (expand_nl_handler_label): Remove.
1150         (expand_nl_goto_receivers): Remove.
1151         (expand_end_bindings): Don't expand_nl_goto_receivers.  Use
1152         update_nonlocal_goto_save_area.
1153         (expand_expr_stmt_value): Check TREE_NO_WARNING.
1154         (warn_if_unused_value): Likewise.
1155         (expand_start_loop, expand_loop_continue_here,
1156         expand_end_loop): Don't create loop notes.
1157         (all_cases_count, BITARRAY_TEST, BITARRAY_SET,
1158         mark_seen_cases, check_for_full_enumeration_handling): Remove.
1159         (expand_end_case_type): Don't do warn_switch handling.
1160         (pushcase, pushcase_range) Update add_case_node calls.
1161         (add_case_node): Add dont_expand_label argument.
1162         (same_case_target_p): Don't search rtl.
1163         (expand_start_bindings_and_block, expand_end_bindings):
1164         Don't emit block notes when dont_emit_block_notes.
1165         (using_eh_for_cleanups_p): Export.
1166         (expand_return): Allow any typed rhs.
1167         (expand_stack_alloc): New.
1168         (expand_stack_save, expand_stack_restore): New.
1169         (containing_blocks_have_cleanups_or_stack_level): New
1170         function.
1171         (asm_op_is_mem_input): New fn.
1172         (expand_asm_expr): New fn.
1173         (warn_if_unused_value): Check operand 0 of SAVE_EXPR
1174         nodes.
1175         * stor-layout.c (layout_type): Just return if type is
1176         error_mark_node.
1177         (update_alignment_for_field): Export.
1178         (variable_size): We don't care about global_bindings_p if
1179         the frontend doesn't want a list of the expressions.
1180         * system.h: Poison INTEGRATE_THRESHOLD.
1181         * timevar.def (TV_TREE_GIMPLIFY, TV_TREE_EH, TV_TREE_CFG,
1182         TV_TREE_CLEANUP_CFG, TV_TREE_PTA, TV_TREE_MAY_ALIAS,
1183         TV_TREE_INSERT_PHI_NODES, TV_TREE_SSA_REWRITE_BLOCKS,
1184         TV_TREE_SSA_OTHER, TV_TREE_OPS,
1185         TV_TREE_SSA_DOMINATOR_OPTS, TV_TREE_SRA, TV_TREE_CCP,
1186         TV_TREE_SPLIT_EDGES, TV_TREE_PRE, TV_TREE_PHIOPT,
1187         TV_TREE_FORWPROP, TV_TREE_DCE, TV_TREE_CD_DCE,
1188         TV_TREE_DSE, TV_TREE_LOOP, TV_TREE_CH,
1189         TV_TREE_SSA_TO_NORMAL, TV_TREE_SSA_TO_NORMAL,
1190         TV_TREE_NRV, TV_TREE_COPY_RENAME, TV_TREE_SSA_VERIFY,
1191         TV_TREE_STMT_VERIFY, TV_DOM_FRONTIERS,
1192         TV_CONTROL_DEPENDENCES): Define.
1193         * toplev.c: Include tree-alias-common.h
1194         (current_file_decl, flag_mudflap, flag_mudflap_threads,
1195         flag_mudflap_ignore_reads, flag_tree_based_profiling,
1196         flag_tree_gvn, flag_tree_points_to, flag_tree_ccp,
1197         flag_tree_dce, flag_tree_ch, flag_tree_sra,
1198         flag_tree_combine_temps, flag_tree_ter,
1199         flag_tree_live_range_split, flag_tree_dom,
1200         flag_tree_copyrename, flag_tree_dse): Declare.
1201         (f_options): Add tree-based-profiling, tree-gvn,
1202         tree-pre, tree-ccp, tree-dce,
1203         tree-dominator-opts, tree-copyrename, tree-dse,
1204         tree-combine-temps, tree-ter, tree-lrs and tree-ch.
1205         (wrapup_global_declarations): Don't output nested inlined functions.
1206         (general_init): Call init_tree_optimization_passes.
1207         (process_options): Sorry for -ftree-based-profiling plus
1208         -ftest-coverage or -fprofile-values.
1209         * toplev.h (init_tree_optimization_passes,
1210         flag_tree_based_profiling): Declare.
1211         * tracer.c (tail_duplicate): Use cfghooks for bb duplication.
1212         * tree-alias-ander.c: New file.
1213         * tree-alias-ander.h: New file.
1214         * tree-alias-common.c: New file.
1215         * tree-alias-common.h: New file.
1216         * tree-alias-type.c: New file.
1217         * tree-alias-type.h: New file.
1218         * tree-browser.c: New file.
1219         * tree-browser.def: New file.
1220         * tree-cfg.c: New file.
1221         * tree-complex.c: New file.
1222         * tree-dfa.c: New file.
1223         * tree-dump.c (dump_enable_all): New.
1224         (dequeue_and_dump): Do not handle EXPR_WITH_FILE_LOCATION.
1225         (dump_node): Remove const from field suffix and swtch.
1226         (dump_files): Add null entry, .generic, .nested, .vcg,
1227         .xml and a match-all entry.
1228         (extra_dump_files, extra_dump_files_in_use,
1229         extra_dump_files_alloced): Declare
1230         (dump_option_value_info): Add raw, details, stats,
1231         blocks, vops, lineno, uid and all.
1232         (dump_register): New.
1233         (get_dump_file_info): New.
1234         (dump_begin): Call it.
1235         Do nothing for TDI_none.
1236         (dump_begin): Include phase number in dump filename.
1237         (dump_enable_all): New.
1238         (dump_switch_p_1): Split out from dump_switch_p.
1239         (dump_switch_p): Handle extra_dump_files.
1240         Start our scan at TDI_none + 1.
1241         If -fdump-tree-all was given, call dump_enable_all.
1242         * tree-dump.h: Include splay-tree.h.
1243         (dump_function, dump_function_to_file, dump_register):
1244         Declare.
1245         * tree-eh.c: New file.
1246         * tree-flow-inline.h: New file.
1247         * tree-flow.h: New file.
1248         * tree-inline.c: Re-write to handle inlining on GIMPLE.
1249         * tree-inline.h (walk_tree,
1250         walk_tree_without_duplicates): Move to tree.h.
1251         (estimate_num_insns): Declare.
1252         * tree-into-ssa.c: New file.
1253         * tree-iterator.c: New file.
1254         * tree-iterator.h: New file.
1255         * tree-mudflap.c: New file.
1256         * tree-mudflap.h: New file.
1257         * tree-nested.c: New file.
1258         * tree-nomudflap.c: New file.
1259         * tree-nrv.c: New file.
1260         * tree-optimize.c (dump_flags, vars_to_rename,
1261         in_gimple_form, all_passes, pass_gimple,
1262         pass_rebuild_bind, pass_all_optimizations, pass_del_cfg): Declare.
1263         (execute_gimple, execute_rebuild_bind,
1264         gate_all_optimizations, execute_del_cfg,
1265         register_one_dump_file, register_dump_files, dup_pass_1,
1266         init_tree_optimization_passes, execute_todo,
1267         execute_one_pass, execute_pass_list): New.
1268         (clear_decl_rtl): Remove.
1269         (tree_rest_of_compilation): Update to use tree
1270         optimizers.
1271         * tree-outof-ssa.c: New file.
1272         * tree-pass.h: New file.
1273         * tree-phinodes.c: New file.
1274         * tree-pretty-print.c: New file.
1275         * tree-profile.c: New file.
1276         * tree-simple.c: New file.
1277         * tree-simple.h: New file.
1278         * tree-sra.c: New file.
1279         * tree-ssa-alias.c: New file.
1280         * tree-ssa-ccp.c: New file.
1281         * tree-ssa-copy.c: New file.
1282         * tree-ssa-copyrename.c: New file.
1283         * tree-ssa-dce.c: New file.
1284         * tree-ssa-dom.c: New file.
1285         * tree-ssa-dse.c: New file.
1286         * tree-ssa-forwprop.c: New file.
1287         * tree-ssa-live.c: New file.
1288         * tree-ssa-live.h: New file.
1289         * tree-ssa-loop.c: New file.
1290         * tree-ssa-operands.c: New file.
1291         * tree-ssa-operands.h: New file.
1292         * tree-ssa-phiopt.c: New file.
1293         * tree-ssa-pre.c: New file.
1294         * tree-ssa.c: New file.
1295         * tree-ssanames.c: New file.
1296         * tree-tailcall.c: New file.
1297         * tree.c: Include tree-iterator.h, basic-block.h and
1298         tree-flow.h.
1299         (tree_node_kind): Add phi_nodes and ssa names.
1300         (tree_size): Handle PHI_NODE, EPHI_NODE, SSA_NAME,
1301         EUSE_NODE, EKILL_NODE, EEXIT_NODE and STATEMENT_LIST.
1302         (make_node_stat): Handle PHI_NODE and SSA_NAME.
1303         <'c'> Set TREE_INVARIANT.
1304         (copy_node_stat): Abort if trying to copy a
1305         STATEMENT_LIST.
1306         Clear TREE_VISITED.
1307         Clear annotation field.
1308         (build_constructor): Copy TREE_INVARIANT from vals.
1309         Don't clear TREE_CONSTANT.
1310         (expr_first, expr_last, expr_length): Remove.
1311         (staticp): Pass unknown component references to the language.
1312         (save_expr): Check TREE_INVARIANT instead of TREE_CONSTANT.
1313         (skip_simple_arithmetic): Likewise.
1314         (stabilize_reference_1): Likewise.
1315         (tree_node_structure): Handle PHI_NODE, EPHI_NODE,
1316         EUSE_NODE, EKILL_NODE, EEXIT_NODE, SSA_NAME and
1317         STATEMENT_LIST.
1318         (lhd_unsave_expr_now): Remove.
1319         (unsafe_for_reeval): Handle LABEL_EXPR and BIND_EXPR.
1320         (recompute_tree_invarant_for_addr_expr): New.
1321         (build1_stat): Clear EXPR_LOCUS and TREE_BLOCK.
1322         Call recompute_tree_invarant_for_addr_expr.
1323         Set TREE_INVARIANT accordingly.
1324         (build2_stat): Don't handle CALL_EXPR.
1325         (build3_stat): Don't call build2_stat for CALL_EXPRs.
1326         (build_expr_wfl): Remove.
1327         (annotate_with_file_line, annotate_with_locus): New.
1328         (simple_cst_equal): Call simple_cst_list_equal to compare
1329         CONSTRUCTOR_ELTS pointers.
1330         (iterative_hash_expr): Don't hash types associated
1331         with conversions.  Instead hash on the signedness of the
1332         toplevel object and the operand of the conversion.
1333         (dump_tree_statistics): Call ssanames_print_statistics
1334         and phinodes_print_statistics.
1335         (ephi_node_elt_check_failed, phi_node_elt_check_failed,
1336         add_var_to_bind_expr, build_empty_stmt, is_essa_node,
1337         needs_to_live_in_memory): New.
1338         (initializer_zerop): Handle VECTOR_CST.  Don't check
1339         AGGREGATE_TYPE_P for CONSTRUCTOR.
1340         * tree.def (FILTER_EXPR, CASE_LABEL_EXPR, RESX_EXPR,
1341         SSA_NAME, EUSE_NODE, EKILL_NODE, EPHI_NODE, EEXIT_NODE,
1342         PHI_NODE, CATCH_EXPR, EH_FILTER_EXPR, STATEMENT_LIST): Define.
1343         (GOTO_SUBROUTINE_EXPR): Change type to 's'.
1344         (CALL_EXPR): Add another operand.
1345         (EXPR_WITH_FILE_LOCATION): Remove.
1346         (SWITCH_EXPR): Add another operand.
1347         * tree.h: Update various comments.
1348         (union tree_ann_d): Forward declare.
1349         (struct tree_common): Add fields nowarning_flag,
1350         invariant_flag and visited.
1351         (EREF_NODE_CHECK, EPHI_NODE_ELT_CHECK,
1352         PHI_NODE_ELT_CHECK, EREF_NODE_CHECK, PHI_NODE_ELT_CHECK,
1353         EPHI_NODE_ELT_CHECK, TREE_BLOCK,
1354         STRIP_USELESS_TYPE_CONVERSION, CALL_EXPR_TAILCALL,
1355         TREE_NO_WARNING, FORCED_LABEL, TREE_INVARIANT,
1356         IS_EMPTY_STMT, EXPR_LOCUS, SET_EXPR_LOCUS, EXPR_FILENAME,
1357         EXPR_LINENO, EXPR_LOCATION, EXPR_HAS_LOCATION,
1358         EXIT_EXPR_COND, SWITCH_COND, SWITCH_BODY, SWITCH_LABELS,
1359         CASE_LOW, CASE_HIGH, CASE_LABEL, BIND_EXPR_VARS,
1360         BIND_EXPR_BODY, BIND_EXPR_BLOCK, GOTO_DESTINATION,
1361         ASM_STRING, ASM_OUTPUTS, ASM_INPUTS, ASM_CLOBBERS,
1362         ASM_INPUT_P, ASM_VOLATILE_P, COND_EXPR_COND,
1363         COND_EXPR_THEN, COND_EXPR_ELSE, LABEL_EXPR_LABEL,
1364         CATCH_TYPES, CATCH_BODY, EH_FILTER_TYPES,
1365         EH_FILTER_FAILURE, EH_FILTER_MUST_NOT_THROW,
1366         SSA_NAME_VAR, SSA_NAME_DEF_STMT, SSA_NAME_VERSION,
1367         SSA_NAME_OCCURS_IN_ABNORMAL_PHI, SSA_NAME_IN_FREE_LIST,
1368         PHI_RESULT, PHI_REWRITTEN, PHI_NUM_ARGS,
1369         PHI_ARG_CAPACITY, PHI_ARG_ELT, PHI_ARG_EDGE, PHI_ARG_DEF,
1370         EREF_PROCESSED, EREF_ID, EREF_NAME, EREF_STMT,
1371         EREF_RELOAD, EREF_SAVE, EREF_CLASS, EREF_INJURED,
1372         EREF_TEMP, EUSE_DEF, EUSE_PHIOP, EUSE_INSERTED,
1373         EUSE_LVAL, EPHI_NUM_ARGS, EPHI_ARG_CAPACITY,
1374         EPHI_ARG_ELT, EPHI_ARG_EDGE, EPHI_ARG_PRED, EPHI_ARG_DEF,
1375         EPHI_ARG_INJURED, EPHI_ARG_DELAYED_RENAME,
1376         EPHI_ARG_HAS_REAL_USE, EPHI_ARG_STOPS,
1377         EPHI_ARG_PROCESSED2, EPHI_IDENTITY, EPHI_IDENT_INJURED,
1378         EPHI_REP_OCCUR_KNOWN, EPHI_IDENTICAL_TO, EPHI_DOWNSAFE,
1379         EPHI_CANT_BE_AVAIL, EPHI_DEAD, EPHI_USES, EPHI_STOPS,
1380         TREE_VISITED, SSA_VAR_P, DECL_NUM_STMTS,
1381         DECL_HARD_REGISTER, DECL_PTA_ALIASVAR, LABEL_DECL_UID,
1382         DECL_NEEDS_TO_LIVE_IN_MEMORY_INTERNAL,
1383         STATEMENT_LIST_HEAD, STATEMENT_LIST_TAIL, TDF_RAW,
1384         TDF_DETAILS, TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO,
1385         TDF_UID,): Define.
1386         (TREE_NO_UNUSED_WARNING, EXPR_WFL_EMIT_LINE_NOTE,
1387         EXPR_WFL_NODE, EXPR_WFL_FILENAME_NODE, EXPR_WFL_FILENAME,
1388         EXPR_WFL_LINECOL, EXPR_WFL_LINENO, EXPR_WFL_COLNO,
1389         EXPR_WFL_SET_LINECOL): Remove.
1390         (phi_node_elt_check_failed, ephi_node_elt_check_failed,
1391         make_phi_node, init_phinodes, fini_phinodes,
1392         release_phi_node, phinodes_print_statistics,
1393         init_ssanames, fini_ssanames, make_ssa_name,
1394         release_ssa_name, ssanames_print_statistics,
1395         annotate_with_file_line, build_empty_stmt,
1396         annotate_with_locus, expr_only, categorize_ctor_elements,
1397         count_type_elements, add_var_to_bind_expr, is_essa_node,
1398         expand_stack_alloc, expand_stack_save,
1399         expand_stack_restore, add_case_node, operand_equal_p,
1400         nondestructive_fold_unary_to_constant,
1401         nondestructive_fold_binary_to_constant,
1402         fold_read_from_constant_string, int_const_binop,
1403         strip_float_extensions, simplify_builtin, c_strlen,
1404         recompute_tree_invarant_for_addr_expr,
1405         needs_to_live_in_memory, make_vector,
1406         setjmp_vars_warning, update_alignment_for_field,
1407         expand_asm_expr, asm_op_is_mem_input,
1408         containing_blocks_have_cleanups_or_stack_level,
1409         create_artificial_label, gimplify_function_tree,
1410         get_name, unshare_expr, walk_tree,
1411         walk_tree_without_duplicates, in_gimple_form): Declare.
1412         (struct tree_exp): Add fields locus and block.
1413         (struct tree_ssa_name, struct edge_def, struct
1414         tree_phi_node, struct tree_eref_common, struct
1415         tree_euse_node, struct ephi_arg_d, struct tree_ephi_node,
1416         union alias_var_def, struct tree_statement_list_node,
1417         struct tree_statement_list, enum operand_equal_flag): Declare.
1418         (enum tree_node_structure_enum): Add TS_SSA_NAME,
1419         TS_PHI_NODE, TS_EPHI_NODE, TS_EUSE_NODE, TS_EREF_NODE,
1420         TS_STATEMENT_LIST.
1421         (union tree_node): Add fields ssa_name, phi, eref, ephi,
1422         euse and stmt_list.
1423         (function_cannot_inline_p, uninitialized_vars_warning,
1424         save_for_inline, output_inline_function, all_cases_count,
1425         check_for_full_enumeration_handling,
1426         declare_nonlocal_label): Remove.
1427         (enum tree_dump_index): Add TDI_none, TDI_tu,
1428         TDI_generic, TDI_nested, TDI_vcg, TDI_xml.
1429         * unroll.c (unroll_loop): Don't clear map->inline_target.
1430         * unwind-sjlj.c (uw_install_context): Make a proper static inline
1431         function.
1432         * value-prof.c (value_prof_hooks): New.
1433         (find_values_to_profile): Rename to rtl_find_values_to_profile.
1434         Move rtl-specific bits in from branch_prob.
1435         (value_profile_transformations): Rename to
1436         rtl_value_profile_transformations.
1437         (struct value_prof_hooks): New.
1438         (rtl_value_prof_hooks): New.
1439         (rtl_register_value_prof_hooks): New.
1440         (tree_find_values_to_profile): New stub.
1441         (tree_value_profile_transformations): New stub.
1442         (tree_value_prof_hooks): New stub.
1443         (tree_register_value_prof_hooks): New stub.
1444         (find_values_to_profile): New.
1445         (value_profile_transformations): New.
1446         * value-prof.h: Add multiple inclusion guard.
1447         (struct histogram_value): Change rtx fields to void *.
1448         (rtl_register_value_prof_hooks): New declaration.
1449         (tree_register_value_prof_hooks): New declaration.
1450         (find_values_to_profile): New declaration.
1451         (free_profiled_values): New declaration.
1452         (value_profile_transformations): New declaration.
1453         (struct profile_hooks): New declaration.
1454         (init_branch_prob): Declaration moved from rtl.h.
1455         (branch_prob): Declaration moved from rtl.h.
1456         (end_branch_prob): Declaration mooved from rtl.h.
1457         (tree_register_profile_hooks): New declaration.
1458         (rtl_register_profile_hooks): New declaration.
1459         (tree_profile_hooks): New declaration.
1460         (rtl_profile_hooks): New declaration.
1461         * varasm.c: Include tree-mudflap.h.
1462         (TRAMPOLINE_ALIGNMENT): Remove.
1463         (make_decl_rtl): Call mudflap_enqueue_decl.
1464         (assemble_static_space):
1465         (assemble_trampoline_template): Set and return
1466         TRAMPOLINE_ALIGNMENT.
1467         * varray.c (element): Add GENERIC_PTR_NOGC entry.
1468         Add entry for 'tree *'.
1469         Add entry for struct edge_def *.
1470         (varray_copy): New.
1471         * varray.h (enum varray_data_enum): Add
1472         VARRAY_DATA_GENERIC_NOGC, VARRAY_DATA_EDGE and
1473         VARRAY_DATA_TREE_PTR.
1474         (union varray_data_tag): Corresponding changes.
1475         (VARRAY_GENERIC_PTR_NOGC_INIT, VARRAY_EDGE_INIT,
1476         VARRAY_TREE_PTR_INIT, VARRAY_GENERIC_PTR_NOGC,
1477         VARRAY_EDGE, VARRAY_TREE_PTR,
1478         VARRAY_PUSH_GENERIC_PTR_NOGC, VARRAY_PUSH_EDGE,
1479         VARRAY_PUSH_TREE_PTR, VARRAY_TOP_GENERIC_PTR_NOGC,
1480         VARRAY_TOP_EDGE, VARRAY_TOP_TREE_PTR): Define.
1481
1482         * config/*/*: Various updates for changed macros, tree
1483         codes, etc.  Check ChangeLog.tree-ssa.
1484
1485         * doc/cfg.texi: New file.
1486         * doc/tree-ssa.texi: New file.
1487         * doc/c-tree.texi: Document new codes.
1488         * doc/gccint.texi: Include new files.
1489         * doc/install.texi: Document new features.
1490         * doc/invoke.texi: Document new switches.
1491         * doc/passes.texi: Document new passes.
1492         * doc/rtl.texi: Update changed RTL codes.
1493         * doc/sourcebuild.texi: Update build instructions.
1494         * doc/standards.texi: Document Fortran changes.
1495         * doc/tm.texi: Update.
1496
1497 2004-05-12  Paolo Bonzini  <bonzini@gnu.org>
1498
1499         Replace several arrays with a struct of arrays.
1500         * combine.c (struct reg_stat): New.
1501         (init_reg_last_arrays): Renamed to...
1502         (init_reg_last): ...this.  Callers adjusted.
1503         (reg_stat): New.
1504         (combine_instructions): Allocate it and use it.
1505         (reg_last_death, reg_last_set, reg_last_set_value,
1506         reg_last_set_label, reg_last_set_table_tick,
1507         reg_last_set_invalid, reg_nonzero_bits, reg_sign_bit_copies,
1508         reg_last_set_mode, reg_last_set_nonzero_bits,
1509         reg_last_set_sign_bit_copies): Replace throughout
1510         with items of reg_stat.
1511
1512 2004-05-11  Kaz Kojima  <kkojima@gcc.gnu.org>
1513
1514         PR optimization/15100
1515         * combine.c (distribute_notes): Don't create a dangling
1516         REG_LIBCALL/REG_RETVAL note.
1517
1518 2004-05-11  Aldy Hernandez  <aldyh@redhat.com>
1519
1520         * config/rs6000/spe.md (spe_evneg): Rename to negv2si2.
1521
1522         * config/rs6000/rs6000.c (bdesc_1arg): Change spe_evneg to
1523         negv2si2.
1524
1525 2004-05-11  Aldy Hernandez  <aldyh@redhat.com>
1526
1527         * doc/md.texi (Standard Names): Fix typo in vec_init description.
1528
1529 2004-05-11  Geoffrey Keating  <geoffk@apple.com>
1530
1531         * doc/gty.texi (GTY Options): Clarify example.
1532
1533 2004-05-11  Fariborz Jahanian  <fjahanian@apple.com>
1534
1535         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute):
1536         Add const qualifier to altivec vector type if one is needed.
1537
1538 2004-05-11  Paul Brook  <paul@codesourcery.com>
1539
1540         * flags.h (flag_short_enums): Update comment.
1541         * opts.c (decode_options): Set flag_short_enums to 2.
1542         * toplev.c (flag_short_enums): Update comment.
1543         (process_options): Call default_short_enums target hook.
1544
1545 2004-05-11  Andrew Pinski  <pinskia@gcc.gnu.org>
1546
1547         PR target/14063
1548         * config/rs6000/altivec.md (altivec_dssall):
1549         Change to unspec_volatile.
1550         (altivec_dss): Likewise.
1551
1552 2004-05-10  Aldy Hernandez  <aldyh@redhat.com>
1553
1554         * config/rs6000/altivec.md ("one_cmplv16qi2"): Change vnot to
1555         vnor.
1556         ("one_cmplv8hi2"): Same.
1557         ("one_cmplv4si2"): Same.
1558
1559 2004-05-10  Kaz Kojima  <kkojima@gcc.gnu.org>
1560
1561         PR target/15130
1562         * config/sh/sh-protos.h (sh_expand_epilogue): Change prototype.
1563         * config/sh/sh.c (output_stack_adjust): Take the sibcall epilogue
1564         into account.  Compute the correct number of general registers
1565         for the return value.  Generate a special push/pop sequence when
1566         failing to get a temporary register for non SHmedia epilogue.
1567         (sh_expand_epilogue): Add an argument to show whether it's for
1568         sibcall or not.  Set the 3rd argument of output_stack_adjust to
1569         -1 if needed.
1570         (sh_need_epilogue): Call sh_expand_epilogue with 0.
1571         * config/sh/sh.md (sibcall_epilogue): Call sh_expand_epilogue
1572         with 1.
1573         (epilogue): Call sh_expand_epilogue with 0.
1574
1575 2004-05-10  Andrew Pinski  <pinskia@physics.uc.edu>
1576
1577         * gcse.c (eliminate_partially_redundant_loads): Instead of returning early,
1578         goto a cleanup label.  After the cleanup, free the allocated memory.
1579
1580 2004-05-10  Ziemowit Laski  <zlaski@apple.com>
1581
1582         * config/rs6000/altivec.h (vec_sld): Add overloads for
1583         argument/return types of 'vector bool int', 'vector bool short'
1584         and 'vector bool char'.
1585
1586 2004-05-10  Zack Weinberg  <zack@codesourcery.com>
1587
1588         * c-decl.c (store_parm_decls_newstyle): Correct test for a
1589         nested function.
1590
1591 2004-05-10  Richard Sandiford  <rsandifo@redhat.com>
1592
1593         * read-rtl.c (read_rtx): Allow 's' and 'T' strings to be omitted,
1594         treating missing ones as "".
1595         * config/mips/mips.md: Remove constraints from match_operands and
1596         match_scratches if they appear in define_expands (except reload*),
1597         define_peephole2s, define_splits or attribute specifications.
1598         * config/mips/7000.md, config/mips/sb1.md: Remove match_operand
1599         constraint strings.
1600
1601 2004-05-10  Alan Modra  <amodra@bigpond.net.au>
1602
1603         * config/rs6000/rs6000.c (function_arg_boundary): Always align
1604         AltiVec vectors.
1605         (function_arg_advance): Pass TARGET_32BIT -mabi=no-altivec AltiVec
1606         vectors by refererence.  Align the same for TARGET_64BIT to a 16
1607         byte boundary.  Remove useless code.  Add function comment.
1608         (function_arg): Similarly.  Move gpr rs6000_mixed_function_arg
1609         call to where it belongs.
1610         (function_arg_partial_nregs): Return true for all TARGET_32BIT
1611         -mabi=no-altivec AltiVec vectors.  Fix debug output.
1612         (rs6000_va_arg): Adjust for AltiVec change.
1613
1614 2004-05-10  Paul Brook  <paul@codesourcery.com>
1615
1616         * config/arm/arm.c (arm_promote_prototypes): Use TARGET_AAPCS_BASED.
1617         * config/arm/arm.h (TARGET_AAPCS_BASED): Define.
1618         (TARGET_DOUBLEWORD_ALIGN): Use it.
1619         (WCHAR_TYPE): Define.
1620         (WCHAR_SIZE_TYPE): Define.
1621         (SIZE_TYPE): Define.
1622
1623 2004-05-10  Alan Modra  <amodra@bigpond.net.au>
1624
1625         * config/rs6000/rs6000.c (function_arg_boundary): Align for ABI_V4
1626         when size is 8 bytes.
1627         (function_arg_advance): Account for stack space used by AltiVec
1628         args when -mabi=altivec.  Simplify alignment calculations.  For
1629         ABI_V4, pass AltiVec vectors by reference when -mabi=no-altivec.
1630         (function_arg): Similarly.
1631         (function_arg_pass_by_reference): True for ABI_V4 AltiVec when
1632         not AltiVec ABI.
1633         (rs6000_va_arg): Correct fp arg test.  Adjust for AltiVec change.
1634         Correct alignment, and align before testing reg count.  Remove
1635         TREE_THIS_VOLATILE from reg.  Don't emit unused labels.
1636         (rs6000_complex_function_value): Check TARGET_HARD_FLOAT and
1637         TARGET_FPRS here..
1638         (rs6000_function_value): .. not here before call.
1639
1640 2004-05-09  Aldy Hernandez  <aldyh@redhat.com>
1641
1642         * config/rs6000/spe.md ("tstsflt_gpr"): Fix typo in unspec.
1643
1644 2004-05-09  Zack Weinberg  <zack@codesourcery.com>
1645
1646         PR 15007
1647         * c-decl.c (current_file_decl): Rename to all_translation_units,
1648         adjust comment.
1649         (pop_scope): If popping file_scope, construct a
1650         TRANSLATION_UNIT_DECL and make it the context of all the
1651         symbols in the scope.
1652         (push_file_scope): Don't construct a TRANSLATION_UNIT_DECL here.
1653         (pushdecl): Clarify comment.  Do not set DECL_CONTEXT of
1654         anything to current_file_decl.
1655         (pushdecl_top_level): Likewise.
1656         (store_parm_decls_newstyle): Adjust check for nested function.
1657         (c_write_global_declarations): Update for renamed variable.
1658
1659 2004-05-09  Aldy Hernandez  <aldyh@redhat.com>
1660
1661         * config/rs6000/rs6000-protos.h
1662         (rs6000_conditional_register_usage): Protoize.
1663
1664         * config/rs6000/rs6000.c (rs6000_conditional_register_usage): New.
1665
1666         * config/rs6000/rs6000.h (CONDITIONAL_REGISTER_USAGE): Call
1667         function.
1668
1669 2004-05-08  Roger Sayle  <roger@eyesopen.com>
1670
1671         * fold-const.c (fold_div_compare): New function to optimize X/C1 op C2
1672         where op is a comparison operator and C1 and C2 are integer constants
1673         into a range check.
1674         (fold): Call fold_div_compare.
1675
1676 2004-05-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
1677
1678         * doc/install.texi (sparc-sun-solaris2*): Document bootstrap
1679         problems with earlier versions of the GNU compiler.
1680
1681 2004-05-07  Aldy Hernandez  <aldyh@redhat.com>
1682
1683         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_mode_ok_p):
1684         Declare.
1685
1686         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_p): New.
1687         (rs6000_hard_regno_mode_ok): New.
1688         (rs6000_init_hard_regno_mode_ok): New.
1689         (rs6000_override_options): Call rs6000_init_hard_regno_mode_ok.
1690
1691         * config/rs6000/rs6000.h (HARD_REGNO_NREGS): Use precomputed
1692         result.
1693
1694 2004-05-07  Ziemowit Laski  <zlaski@apple.com>
1695
1696         * config/rs6000/altivec.h (vector, pixel, bool): Do not
1697         define as macros #ifdef __APPLE_ALTIVEC__.
1698
1699 2004-05-07  Fariborz Jahanian  <fjahanian@apple.com>
1700
1701         * config/rs6000/rs6000.c (rs6000_mixed_function_arg):
1702         Generate appropriate parallels for vector arguments
1703         passed to vararg functions. (function_arg): make the call
1704         to rs6000_mixed_function_arg for vector args as needed.
1705
1706 2004-05-07  Richard Sandiford  <rsandifo@redhat.com>
1707
1708         * config/mips/mips.c (mips_va_arg): Fix calculation of osize for
1709         EABI_FLOAT_VARARGS_P.
1710
1711 2004-05-07  Richard Sandiford  <rsandifo@redhat.com>
1712
1713         * config/mips/mips.h (ISA_HAS_BRANCHLIKELY): Remove TARGET_MIPS5500.
1714         * config/mips/mips.c (override_options): Disable branch likely
1715         instructions if TUNE_MIPS5500.
1716
1717 2004-05-07  Richard Sandiford  <rsandifo@redhat.com>
1718
1719         * config/mips/mips.c (override_options): Allow the hi and lo registers
1720         to store any integral mode, not just MODE_INTs.
1721
1722 2004-05-07  Paul Brook  <paul@codesourcery.com>
1723
1724         * config/arm/arm.c (arm_promote_prototypes): Use TARGET_AAPCS_BASED.
1725         * config/arm/arm.h (TARGET_AAPCS_BASED): Define.
1726         (TARGET_DOUBLEWORD_ALIGN): Use it.
1727         (WCHAR_TYPE): Define.
1728         (WCHAR_SIZE_TYPE): Define.
1729         (SIZE_TYPE): Define.
1730
1731 2004-05-07  Uros Bizjak  <uros@kss-loka.si>
1732
1733         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Use
1734         testb $4, %ah insn instead of sahf insn if !TARGET_USE_SAHF.
1735
1736 2004-05-07  Andrew Pinski  <pinskia@physics.uc.edu>
1737
1738         * loop-doloop.c (doloop_valid_p): Make sure that body
1739         gets freed.
1740
1741 2004-05-07  Eric Botcazou  <ebotcazou@act-europe.fr>
1742
1743         * config/sparc/sparc-protos.h (sparc_skip_caller_unimp): New
1744         declaration.
1745         * config/sparc/sparc.c (SKIP_CALLERS_UNIMP_P): Delete.
1746         (sparc_skip_caller_unimp): New global variable.
1747         (sparc_function_epilogue): Set 'sparc_skip_caller_unimp'.
1748         Use it instead of SKIP_CALLERS_UNIMP_P.
1749         * config/sparc/sparc.md (call expander): Add sanity check.
1750         (call_address_struct_value_sp32): Re-sync with expander.
1751         (call_symbolic_struct_value_sp32): Likewise.
1752         (return peepholes): Use 'sparc_skip_caller_unimp' instead
1753         of custom predicate.
1754
1755 2004-05-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
1756
1757         PR c++/14962
1758         * c-pragma.c (handle_pragma_redefine_extname): Only change
1759         the assembler name of FUNCTION_DECLs and VAR_DECLs.
1760
1761 2004-05-07  Uros Bizjak  <uros@kss-loka.si>
1762
1763         * optabs.h (enum optab_index): Add new OTI_log1p.
1764         (log1p_optab): Define corresponding macro.
1765         * optabs.c (init_optabs): Initialize log1p_optab.
1766         * genopinit.c (optabs): Implement log1p_optab using log1p?f2
1767         patterns.
1768         * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_LOG1P{,F,L}
1769         using log1p_optab.
1770         (expand_builtin): Expand BUILT_IN_LOG1P{,F,L} using
1771         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
1772
1773         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_FYL2XP1.
1774
1775         * config/i386/i386.c (ix86_emit_i387_log1p): New function.
1776         * config/i386/i386-protos.h (ix86_emit_i387_log1p):
1777         Prototype here.
1778         * config/i386/i386.md (UNSPEC_FYL2XP1): New unspec to represent
1779         x87's fyl2xp1 instruction.
1780         (*fyl2x_xf3): Rename insn definition to fyl2x_xf3.
1781         (fyl2xp1_xf3): New pattern to implement fyl2xp1 x87 instruction.
1782         (log1psf2, log1pdf2, log1pxf2): New expanders to implement log1pf,
1783         log1p  and log1pl built-ins as inline x87 intrinsics.
1784
1785 2004-05-07  Loren James Rittle  <ljrittle@acm.org>
1786
1787         * config/alpha/freebsd.h (SUBTARGET_EXTRA_SPECS): Proper redefinition.
1788         * config/arm/freebsd.h: Likewise.
1789         * config/ia64/freebsd.h: Likewise.
1790         * config/sparc/freebsd.h: Likewise.
1791
1792 2004-05-07  Hans-Peter Nilsson  <hp@axis.com>
1793
1794         PR optimization/15296
1795         * reorg.c (fill_simple_delay_slots): Use next_real_insn when
1796         getting last consecutive label at a branch.
1797         (relax_delay_slots): Similar, near top of loop.
1798
1799 2004-05-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1800
1801         PR target/15202
1802         * pa.md (movdi, movsi, movhi, movqi): Support move from shift amount
1803         register to general register.
1804
1805 2004-05-07  Alan Modra  <amodra@bigpond.net.au>
1806
1807         * config/rs6000/rs6000.h (STACK_BOUNDARY): Use 128 bit for either
1808         TARGET_ALTIVEC or TARGET_ALTIVEC_ABI.
1809         * config/rs6000/sysv4.h (ABI_STACK_BOUNDARY): Likewise.
1810         (STACK_BOUNDARY): Delete.
1811
1812 2004-05-06  Stuart Hastings  <stuart@apple.com>
1813
1814         * gcc/doc/invoke.texi: Restore -fgcse-after-reload doc from 1.421,
1815         mistakenly clobbered by 1.423.
1816
1817 2004-05-06  Richard Sandiford  <rsandifo@redhat.com>
1818
1819         * doc/invoke.texi: Document -mvr4130-align.
1820         * config/mips/mips.h (MASK_VR4130_ALIGN, TARGET_VR4130_ALIGN)
1821         (TUNE_MIPS4120, TUNE_MIPS4130): New macros.
1822         (TUNE_MACC_CHAINS): Include TUNE_MIPS4120 and TUNE_MIPS4130.
1823         (TARGET_SWITCHES): Add -mvr4130-align and -mno-vr4130-align.
1824         * config/mips/mips.md: Include sched-int.h.
1825         (USEFUL_INSN_P, SEQ_BEGIN, SEQ_END, FOR_EACH_SUBINSN): New macros.
1826         (mips_rtx_costs): Set integer multiplication costs for TUNE_MIPS4130.
1827         (override_options): Enable -mvr4130-align at -O3 and above.
1828         (mips_sim_insn): New variable.
1829         (mips_sim): New structure.
1830         (mips_sim_reset, mips_sim_init, mips_sim_next_cycle, mips_sim_wait_reg)
1831         (mips_sim_wait_regs_2, mips_sim_wait_regs_1, mips_sim_wait_regs)
1832         (mips_sim_wait_units, mips_sim_wait_insn, mips_sim_record_set)
1833         (mips_sim_issue_insn, mips_sim_issue_nop, mips_sim_finish_insn)
1834         (vr4130_avoid_branch_rt_conflict, vr4130_align_insns): New functions.
1835         (mips_reorg): Call vr4130_align_insns.
1836         (vr4130_last_insn): New variable.
1837         (vr4130_true_reg_dependence_p_1, vr4130_true_reg_dependence_p)
1838         (vr4130_swap_insns_p, vr4130_reorder): New functions.
1839         (mips_sched_reorder, mips_variable_issue): Hook in vr4130 code.
1840         (mips_issue_rate): Return 2 for PROCESSOR_R4130.
1841         (mips_use_dfa_pipeline_interface): Return true for the same.
1842         * config/mips/4130.md: New file.
1843         * config/mips/mips.md: Include it.  Add a peephole2 to convert
1844         "mult;mflo" into "mtlo;macc".
1845         (*macc, *umul_acc_di, *smul_acc_di): Use $1 rather than $0 as the
1846         target of maccs.
1847         (*msac_using_macc): New pattern.
1848
1849 2004-05-06  Richard Sandiford  <rsandifo@redhat.com>
1850
1851         * config/mips/5500.md (ir_vr55_store): Set latency to 0.
1852         (ir_vr55_hilo): Split into...
1853         (ir_vr55_mfhilo, ir_vr55_mthilo): ...these new reservations.
1854         (ir_vr55_imul_si, ir_vr55_imadd): Change latency to 5.
1855         (ir_vr55_imul_di): Change latency to 9.  Reserve vr55_mac for 4 cycles.
1856         Add various multiplication bypasses.
1857         * config/mips/mips.c (mips_rtx_costs): Adjust VR5500 costs for integer
1858         multiplication.
1859
1860 2004-05-06  Uros Bizjak  <uros@kss-loka.si>
1861
1862         * config/i386/i386.md (*fscalexf4): Correct insn "mode"
1863         attribute to "XF".
1864
1865 2004-05-05  Uros Bizjak  <uros@kss-loka.si>
1866
1867         * optabs.h (enum optab_index): Add new OTI_fmod and OTI_drem.
1868         (fmod_optab, drem_optab): Define corresponding macros.
1869         * optabs.c (init_optabs): Initialize fmod_optab and drem_optab.
1870         * genopinit.c (optabs): Implement fmod_optab and drem_optab
1871         using fmod?f3 and drem?f3 patterns.
1872         * builtins.c (expand_builtin_mathfn_2): Handle BUILT_IN_FMOD{,F,L}
1873         using fmod_optab and BUILT_IN_DREM{,F,L} using drem_optab.
1874         (expand_builtin): Expand BUILT_IN_FMOD{,F,L} and
1875         BUILT_IN_DREM{,F,L} using expand_builtin_mathfn_2 if
1876         flag_unsafe_math_optimizations is set.
1877
1878         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_FPREM_F,
1879         UNSPEC_FPREM_U, UNSPEC_FPREM1_F and UNSPEC_FPREM1_U.
1880
1881         * config/i386/i386.c (ix86_emit_fp_unordered_jump): New function.
1882         * config/i386/i386-protos.h (ix86_emit_fp_unordered_jump):
1883         Prototype here.
1884         * config/i386/i386.md (UNSPEC_FPREM_F, UNSPEC_FPREM_U,
1885         UNSPEC_FPREM1_F, UNSPEC_FPREM1_U): New unspecs to represent x87's
1886         fprem and fprem1 instructions.
1887         (*x86_fnstsw_1): Change input parameter to (reg:CCFP 18).
1888         Rename insn definition to x86_fnstsw_1.
1889         (fpremxf4, fprem1xf4): New patterns to implement fprem and fprem1
1890         x87 instructions.
1891         (fmodsf3, fmoddf3, fmodxf3): New expanders to implement fmodf, fmod
1892         and fmodl built-ins as inline x87 intrinsics.
1893         (dremsf3, dremdf3, dremxf3): New expanders to implement dremf, drem
1894         and dreml built-ins as inline x87 intrinsics.
1895
1896 2004-05-05  Roger Sayle  <roger@eyesopen.com>
1897
1898         * reload1.c (inherit_piecemeal_p): Mark parameters potentially unused.
1899
1900 2004-05-05  Ian Lance Taylor  <ian@wasabisystems.com>
1901
1902         PR driver/9822
1903         * doc/invoke.texi (Spec Files): Remove documentation of %c.
1904
1905 2004-05-05  Chris Demetriou  <cgd@broadcom.com>
1906
1907         * config/mips/mips.md: Update the msub define_split for new mflo/mfhi
1908         representation.
1909
1910 2004-05-06  Paul Brook  <paul@codesourcery.com>
1911
1912         * config/arm/arm-protots.h (vfp_mem_operand): Rename ...
1913         (arm_coproc_mem_operand): ... To this.
1914         * config/arm/arm.c (arm_legitimate_address_p): Allow ldrd modes.
1915         (arm_legitimate_index_p): Ditto.
1916         (vfp_mem_operand): Rename ...
1917         (arm_coproc_mem_operand): ... To this.  Handle writeback modes.
1918         (vfp_secondary_reload_class): Use it.
1919         (output_move_double): Use doubleword load/store instructions.
1920         (arm_hard_regno_mode_ok): Only allow even reg pairs for ldrd.
1921         * config/arm/arm.h (TARGET_LDRD): Define.
1922         (EXTRA_CONSTRAINT_STR_ARM): Add 'Uy'.
1923         * config/gcc/arm/arm.md (arm_movdi): Allow all valid memory operands.
1924         New splitter for invalid doubleword loads.
1925         * config/arm/iwmmxt.md (iwmmxt_arm_movdi): Use Uy constraint.
1926         * config/arm/vfp.md (arm_movdi_vfp): Allow all valid memory operands.
1927         * doc/md.texi: Document Uy constraint.
1928
1929 2004-05-05  Jan Hubicka  <jh@suse.cz>
1930
1931         PR opt/14980
1932         * cgraphunit.c (cgraph_remove_unreachable_nodes): Deal properly with
1933         inline clones.
1934
1935 2004-05-05  H.J. Lu  <hongjiu.lu@intel.com>
1936
1937         PR target/15290
1938         * config/i386/i386.c (ix86_split_to_parts): Use real_to_target
1939         instead of REAL_VALUE_TO_TARGET_LONG_DOUBLE.
1940
1941 2004-05-05  Mike Stump  <mrs@apple.com>
1942
1943         * config/darwin-c.c (add_framework): Copy the directory name as it
1944         can be freed later.  Also, ensure we always allocate enough room
1945         for the cached framework information.
1946         (find_subframework_header): Keep track of the directory where the
1947         subframework header was found.
1948         (framework_construct_pathname): Speed up by not trying to re-add a
1949         framework.
1950         * cppfiles.c (search_path_exhausted): Arrange for the missing
1951         header callback to be able to set the directory where the header
1952         was found.
1953         (cpp_get_dir): Add.
1954         * cpplib.h (missing_header_cb): Add a parameter.
1955         (cpp_get_dir): Add.
1956
1957 2004-05-03  Mike Stump  <mrs@apple.com>
1958
1959         * doc/invoke.texi (Directory Options): Document -iquote.
1960         * doc/cpp.texi: Likewise.
1961         * doc/cppopts.texi: Likewise.
1962         * c-opts.c (c_common_missing_argument): Add -iquote processing.
1963         (c_common_handle_option): Likewise.
1964         * c.opt (iquote): Add.
1965         * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add -iquote.
1966         * c-incpath.c (merge_include_chains): Update comment to use -iquote.
1967
1968         * c-opts.c (case OPT_I): Deprecate -I- support.
1969         * doc/invoke.texi: Likewise.
1970         * doc/cpp.texi: Likewise.
1971         * doc/cppopts.texi: Likewise.
1972
1973 2004-05-05  Steven Bosscher  <stevenb@suse.de>
1974
1975         * basic-block.h (free_basic_block_vars): Update prototype.
1976         * flow.c (free_basic_block_vars): Remove the keep_head_end_p
1977         argument.
1978         (life_analysis): Update call.
1979         * ifcvt.c (if_convert): Likewise.
1980         * sibcall.c (optimize_sibling_and_tail_recursive_call): Likewise.
1981         * passes.c (rest_of_handle_final): Likewise.
1982         (rest_of_compilation): Likewise.
1983         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
1984
1985         * emit-rtl.c (next_real_insn): Use INSN_P.
1986         (prev_real_insn): Likewise.
1987
1988 2004-05-05  Eric Christopher  <echristo@redhat.com>
1989
1990         * config/mips/mips.md: Update the madd define_split for new mflo/mfhi
1991         representation.
1992
1993 2004-05-05  Paolo Bonzini  <bonzini@gnu.org>
1994
1995         * config/rs6000/rs6000.c (build_opaque_vector_type):
1996         New function.
1997         (rs6000_init_builtins): Use it.
1998
1999 2004-05-04  Bernard Giroud  <bgiroud2@free.fr>
2000
2001         * gcc/gcc/vmsdbgout.c (vms_func_node, vms_func_ref): New.
2002         (func_table): Change type from char ** to vms_func_ref.
2003         (write_rtnbeg):  Update to reflect func_table change.  Use
2004         fde->funcdef_number instead of rtnnum in output.
2005         (write_rtnend, vmxdbgout_begin_function, vmsdbgout_init): Likewise.
2006
2007 2004-05-04  Paolo Bonzini  <bonzini@gnu.org>
2008             Richard Henderson  <rth@redhat.com>
2009
2010         PR target/14899
2011
2012         * c-common.c (vector_types_convertible_p): New function.
2013         * c-typeck.c (comptypes): Recurse on vector types.
2014         (convert_for_assignment): Use vector_types_convertible_p.
2015         (digest_init): Use vector_types_convertible_p to check
2016         validness of constant vector initializers; otherwise treat
2017         them as scalars.
2018         * tree.c (make_or_reuse_type): New.
2019         (build_common_tree_nodes): Use it.
2020         * cp/call.c (standard_conversion): Likewise.
2021         * cp/typeck.c (comptypes): Recurse on vector types.
2022         (convert_for_assignment): Use vector_types_convertible_p.
2023
2024 2004-05-04  Chris Demetriou  <cgd@broadcom.com>
2025
2026         * config/mips/mips.c (override_options): Default to no
2027         generation of branch-likely operations when tuning for
2028         CPUs where they tend to have a negative performance impact
2029         (e.g., SB-1).
2030
2031 2004-05-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2032
2033         * expr.c (store_constructor_field): Don't call store_constructor
2034         if bitsize is not a multiple of a byte.
2035
2036 2004-05-04  Richard Sandiford  <rsandifo@redhat.com>
2037
2038         * reload1.c (inherit_piecemeal_p): New function.
2039         (emit_reload_insns): When reloading a group of hard registers, use
2040         inherit_piecemeal_p to decide whether the values of individual hard
2041         registers can be inherited.
2042
2043 2004-05-04  H.J. Lu  <hongjiu.lu@intel.com>
2044
2045         * config/ia64/t-ia64 (LIB2ADDEH): Remove gthr-gnat.c.
2046         * config/s390/t-tpf (LIB2ADDEHDEP): Likewise.
2047         * config/t-linux (LIB2ADDEHDEP): Likewise.
2048
2049 2004-05-04  Paul Brook  <paul@codesourcery.com>
2050
2051         * config/arm/crti.asm: Push an even number of registers.
2052         * config/arm/crtn.asm: And restore them.  Load via sp.
2053
2054 2004-05-04  Paolo Bonzini  <bonzini@gnu.org>
2055
2056         * ggc-zone.c (ggc_alloc_zone_1): Add MEM_STAT_DECL parameter.
2057         Collect overhead information.
2058         (ggc_alloc_stat): New name of ggc_alloc.  Add MEM_STAT_DECL
2059         parameter and pass it through.
2060         (ggc_alloc_typed_stat): New name of ggc_alloc_typed.  Add
2061         MEM_STAT_DECL parameter and pass it through.
2062         (ggc_alloc_zone_stat): New name of ggc_alloc_zone.  Add
2063         MEM_STAT_DECL parameter and pass it through.
2064
2065 2004-05-03  Aldy Hernandez  <aldyh@redhat.com>
2066
2067         * config/rs6000/rs6000-protos.h: Protoize rs6000_hard_regno_nregs.
2068
2069         * config/rs6000/rs6000.c (rs6000_hard_regno_nregs): New.
2070
2071         * config/rs6000/rs6000.h (HARD_REGNO_NREGS): Call
2072         rs6000_hard_regno_nregs.
2073
2074 2004-05-03  Eric Christopher  <echristo@redhat.com>
2075
2076         * config/s390/s390.c (s390_emit_prologue): Call unspec tpf
2077         prologue insn instead of setting up call.
2078         (s390_emit_epilogue): Ditto.
2079         * config/s390/s390.md (prologue_tpf, epilogue_tpf): New patterns.
2080         (define_constants): Add numbers for above patterns.
2081
2082 2004-05-03  Eric Christopher  <echristo@redhat.com>
2083
2084         * config/s390/s390.h (CONDITIONAL_REGISTER_USAGE): Move body...
2085         * config/s390/s390.c (s390_conditional_register_usage): ...here.
2086         * config/s390/s390-protos.h: Prototype.
2087
2088 2004-05-03  Joe Buck <jbuck@welsh-buck.org>
2089
2090         * cppfiles.c (pchf_adder): Eliminate use of |= in d->have_once_only
2091         assignment.
2092
2093 2004-05-03  Eric Christopher  <echristo@redhat.com>
2094
2095         * config/mips/mips.md: Fix branch length attribute definition.
2096
2097 2004-05-03  Aldy Hernandez  <aldyh@redhat.com>
2098
2099         * config.gcc: Remove --enable-altivec support.
2100
2101         * config/rs6000/altivec-defs.h: Remove.
2102
2103 2004-05-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2104
2105         * fixinc/inclhack.def (svr4_profil): Don't apply on IRIX 5/6.
2106         * fixinc/fixincl.x: Regenerate.
2107
2108 2004-05-03  Uros Bizjak  <uros@kss-loka.si>
2109
2110         * config/i386/i386.md (*fyl2x_sfxf3, *fyl2x_dfxf3): Remove insn
2111         definition.
2112         (log?f2, log10?f2, log2?f2): Reimplement expanders with
2113         float_truncate insn.
2114         (*fxtractsf3, *fxtractdf3): Remove insn definition.
2115         (logb?f2): Reimplement expanders with float_truncate insn.
2116
2117 2004-05-03  Graham Stott  <graham.stott@btinternet.com>
2118
2119         PR 14718
2120         * dwarf2out.c (dwarf2out_imported_module_or_decl): Use
2121         force_type_die for CONST_DECL.
2122
2123 2004-05-03  Eric Botcazou  <ebotcazou@libertysurf.fr>
2124             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2125
2126         * config.gcc (sparc64-*-solaris2*, sparcv9-*-solaris2*): Add
2127         tm-dwarf2.h to tm_file.
2128         (sparc-*-solaris2*): Add tm-dwarf2.h to tm_file for Solaris 7+.
2129         * config/sparc/sol2-bi.h (PREFERRED_DEBUGGING_TYPE): Delete.
2130         (ASM_DEBUG_SPEC): Delete.
2131
2132 2004-05-03  Uros Bizjak  <uros@kss-loka.si>
2133
2134         * optabs.h (enum optab_index): Add new OTI_expm1.
2135         (expm1_optab): Define corresponding macro.
2136         * optabs.c (init_optabs): Initialize expm1_optab.
2137         * genopinit.c (optabs): Implement expm1_optab using expm1?f2
2138         patterns.
2139         * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_EXPM1{,F,L}
2140         using expm1_optab.
2141         (expand_builtin): Expand BUILT_IN_EXPM1{,F,L} using
2142         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
2143
2144         * config/i386/i386.md (expm1df2, expm1sf2, expm1xf2): New expanders
2145         to implement expm1, expm1f and expm1l built-ins as inline x87
2146         intrinsics.
2147
2148 2004-05-02  Alexandre Oliva  <aoliva@redhat.com>
2149
2150         2003-11-19  Richard Sandiford  <rsandifo@redhat.com>
2151         * config/frv/frv.md (*return_true, *return_false): New patterns.
2152
2153 2004-05-02  Kazu Hirata  <kazu@cs.umass.edu>
2154
2155         * rtl.h (PHI_NODE_P): Remove.
2156
2157 2004-05-02  Eric Botcazou  <ebotcazou@act-europe.fr>
2158
2159         PR middle-end/14988
2160         * function.c (assign_stack_local_1): Use BITS_PER_UNIT alignment
2161         when passed -2 as 'align'.
2162         (put_var_into_stack): Use 'bool' as the type for the three local
2163         predicates.  Adjust calls to put_reg_into_stack.
2164         When passed a CONCAT, instruct put_reg_into_stack to use
2165         a consecutive stack slot for the second part.
2166         (put_reg_into_stack): Remove 'promoted_mode' parameter, add
2167         'consecutive_p' parameter.  Turn the three predicates into 'bool'
2168         parameters.  Retrieve the register mode from 'reg'.
2169         When consecutive_p is true, instruct assign_stack_local_1 to use
2170         BITS_PER_UNIT alignment.
2171         (put_addressof_into_stack): Use 'bool' as the type for the two
2172         local predicates. Adjust call to put_reg_into_stack.
2173
2174 2004-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2175
2176         * fold-const.c (fold_convert_const, fold): Add missing
2177         FIX_ROUND_EXPR case.
2178
2179 2004-05-02  Alexandre Oliva  <aoliva@redhat.com>
2180
2181         * configure.ac (FLEX, BISON): Only use tools from the build tree
2182         if build equals host.
2183         * configure: Rebuilt.
2184
2185         * config/frv/frv-protos.h (frv_expand_epilogue,
2186         frv_expand_fdpic_call): Add bool argument.
2187         * config/frv/frv.c (frv_function_ok_for_sibcall): New.
2188         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define to it.
2189         (frv_expand_epilogue): Use new argument to decide whether to emit
2190         return instruction or copy the return address to LR.
2191         (frv_expand_fdpic_call): Inline PLT entry when emitting direct
2192         sibcalls.
2193         (sibcall_operand): New.
2194         * config/frv/frv.h (PREDICATE_CODES): call_operand doesn't match
2195         PLUS nor LABEL_REF.  Add sibcall_operand.
2196         * config/frv/frv.md (call, call_value): Pass false to
2197         frv_expand_fdpic_call.
2198         (call_fdpicdi, call_value_fdpicdi): Insert %i0 in calll.
2199         (sibcall, sibcall_internal, sibcall_fdpicdi, sibcall_value,
2200         sibcall_value_internal, sibcall_value_fdpicdi): New.
2201         (return_unsigned_true, return_unsigned_false): New.
2202         (epilogue): Adjust call to frv_expand_epilogue.
2203         (sibcall_epilogue): New.
2204
2205         * config/frv/frv.h (ASM_SPEC): Pass -mno-fdpic as -mnopic.
2206         (CPP_SPEC, CPP_SIMPLE_SPEC): Undefine __FRV_ACC__ and __FRV_FPR__
2207         before redefining them.
2208
2209 2004-05-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2210
2211         * builtins.c (fold_fixed_mathfn): New function.
2212         (fold_builtin_lround, fold_builtin): Use it.
2213
2214 2004-05-01  Jakub Jelinek  <jakub@redhat.com>
2215
2216         * config/sparc/linux64.h (TARGET_DEFAULT): Make 64-bit by default
2217         also for TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc3.
2218
2219 2004-05-01  Kazu Hirata  <kazu@cs.umass.edu>
2220
2221         * config/cris/cris.h: Revert my "fix comment typos" patch.
2222
2223 2004-05-01  Richard Sandiford  <rsandifo@redhat.com>
2224
2225         * config/mips/mips.h (TUNE_MACC_CHAINS): Fix comment.
2226
2227 2004-05-01  Falk Hueffner  <falk@debian.org>
2228
2229         * config/alpha/alpha.md (builtin_insbl, builtin_inswl,
2230         builtin_insll): Disallow 0 as first input operand.
2231
2232 2004-05-01  Falk Hueffner  <falk@debian.org>
2233
2234         * config/alpha/alpha.c (alpha_rtx_costs): Fix shiftadd costs.
2235
2236 2004-05-01  Ulrich Weigand  <uweigand@de.ibm.com>
2237
2238         PR middle-end/15054
2239         * expr.c (expand_expr_real): Do not call preserve_temp_slots
2240         on a TARGET_EXPR temp.
2241         * function.c (assign_stack_temp_for_type): Set 'keep' flag for
2242         TARGET_EXPR temp slots.
2243
2244 2004-05-01  Paolo Bonzini  <bonzini@gnu.org>
2245
2246         * simplify-rtx.c (simplify_ternary_operation): When
2247         converting an IF_THEN_ELSE to a relational op, return
2248         correct mode.
2249
2250 2004-04-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2251
2252         * builtins.c (fold_builtin_round): Fix comment typo.
2253         (fold_builtin_lround): New function.
2254         (fold_builtin): Use it.
2255
2256 2004-04-20  Andrew Pinski  <pinskia@physics.uc.edu>
2257
2258         PR target/11608
2259         * config/sh/elf.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Update and make it
2260         more like the one in config/dbxelf.h.
2261
2262 2004-04-30  Zack Weinberg  <zack@codesourcery.com>
2263
2264         * tree.h (SET_ARRAY_OR_VECTOR_CHECK): Rename to SET_OR_ARRAY_CHECK
2265         and adjust definition accordingly.
2266         (TYPE_DOMAIN): Allow only SET_TYPE and ARRAY_TYPE.
2267         (TYPE_DEBUG_REPRESENTATION_TYPE): Allow only VECTOR_TYPE.
2268         * expr.c (store_constructor): Do not access TYPE_DOMAIN of a
2269         VECTOR_TYPE.
2270
2271 2004-04-30  Jason Merrill  <jason@redhat.com>
2272
2273         PR c++/14587
2274         * config/i386/winnt.c (associated_type): Look for attributes on
2275         the TYPE_MAIN_VARIANT of *this.
2276         * attribs.c (decl_attributes): If ATTR_FLAG_TYPE_IN_PLACE, also
2277         apply the attributes to the variants.
2278
2279 2004-04-30  Paul Brook  <paul@codesourcery.com>
2280
2281         * config.gcc: Simplify arm --with-{cpu,tune} test.
2282         * config/arm/arm-cores.def: Document whitespace restrictions.
2283
2284 2004-04-30  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2285
2286         PR other/1963
2287         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Define.
2288
2289 2004-04-30  Brian Ford  <ford@vss.fsi.com>
2290             DJ Delorie  <dj@redhat.com>
2291
2292         * config/i386/cygming.h [HAVE_GAS_PE_SECREL32_RELOC]
2293         (DWARF2_DEBUGGING_INFO): Define to enable.
2294         (DBX_REGISTER_NUMBER): Define to use the svr4 register map for
2295         DWARF2.
2296         * configure.ac (Target-specific assembler checks)
2297         <i[34567]86-*-[cygwin*|pe|mingw32*]>: New test for .secrel32
2298         relocs.
2299         * configure: Regenerate.
2300         * config.in: Likewise.
2301
2302         * config/i386/cygming.h [HAVE_GAS_PE_SECREL32_RELOC]
2303         (ASM_OUPUT_DWARF_OFFSET): Define.
2304
2305 2004-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
2306
2307         * config/s390/s390-protos.h (s390_emit_epilogue): Parameter added.
2308         (s390_emit_call): New function prototype added.
2309         (s390_tls_get_offset): Function removed.
2310         * config/s390/s390.c (s390_function_ok_for_sibcall,
2311         s390_call_saved_register_used_p): New functions.
2312         (TARGET_FUNCTION_OK_FOR_SIBCALL): Definition of target macro added.
2313         (s390_tls_get_offset): Function merged into s390_emit_tls_call_insn.
2314         (s390_emit_tls_call_insn): New function.
2315         (legitimize_tls_address): Call s390_emit_tls_call_insn instead of
2316         emit_call_insn.
2317         (s390_emit_prologue): Use s390_emit_call instead of emit_call_insn.
2318         (s390_emit_epilogue): Like s390_emit_prologue. Parameter for sibcalls
2319         added.
2320         * config/s390/s390.h (SIBCALL_REGNUM): New macro representing the
2321         register number used to hold the target address for sibcalls.
2322         * config/s390/s390.md ("sibcall", "sibcall_value", "sibcall_epilogue"):
2323         New expanders.
2324         ("*sibcall_br", "*sibcall_brc", "*sibcall_brcl", "*sibcall_value_br",
2325         "*sibcall_value_brc", "*sibcall_value_brcl"): New insns.
2326         ("call_exp", "call_value_exp", "call_value_tls", "call_value_tls_exp"):
2327         Expanders removed.
2328         ("call", "call_value"): Call s390_emit_call to emit the call patterns.
2329         ("*bras", "*brasl", "*bras_r", "*brasl_r", "*bras_tls", "*brasl_tls",
2330         "*basr", "*basr_r", "*basr_tls"): Added constraint: !SIBLING_CALL_P.
2331         ("epilogue"): Changed the call to s390_emit_epilogue to use the
2332         new parameter.
2333
2334 2004-04-30  Kazu Hirata  <kazu@cs.umass.edu>
2335
2336         * bb-reorder.c, c-opts.c, cfglayout.c, cgraph.c, cgraphunit.c,
2337         cppfiles.c, fold-const.c, ggc-zone.c, loop-doloop.c, optabs.c,
2338         reg-stack.c, varasm.c, config/alpha/ev4.md,
2339         config/alpha/ev5.md, config/alpha/ev6.md, config/arm/arm.c,
2340         config/c4x/c4x.c, config/c4x/c4x.md, config/cris/cris.c,
2341         config/cris/cris.h, config/fr30/fr30.h, config/frv/frv.c,
2342         config/frv/frv.h, config/frv/frv.md, config/h8300/h8300.c,
2343         config/i386/i386.c, config/i386/i386.md, config/i386/winnt.c,
2344         config/ia64/itanium2.md, config/ip2k/ip2k.c,
2345         config/mips/mips.c, config/mips/mips.h, config/mips/sr71k.md,
2346         config/pa/pa.c, config/s390/s390.c, config/sh/sh.c: Fix
2347         comment typos.
2348
2349 2004-04-30  Paul Brook  <paul@codesourcery.com>
2350
2351         * config.gcc: Default ep9312 to hard-float.
2352         * config/arm/arm-cores.def: Add ARCH field.
2353         * config/arm/arm.c (FL_FOR_ARCH*): Define.
2354         (arm_arch_cirrus): New variable.
2355         (all_cores): Set and use arch.
2356         (all_architectures): Ditto.
2357         (arm_arch_name): New variable.
2358         (arm_override_options): Set it. Use [SUB]TARGET_CPU_DEFAULT.
2359         Set and use arm_arch_cirrus.
2360         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Set arch defines.
2361         (enum processor_type): Update ARM_CORE define.
2362         (enum target_cpus): Add.  Replaces TARGET_CPU_* defines.
2363         (CPP_SPEC): Remove %(cpp_cpu_arch).
2364         (CPP_ARCH_DEFAULT_SPEC): Remove.
2365         (CPP_CPU_ARCH_SPEC): Remove.
2366         (EXTRA_SPECS): Don't use CPP_*ARCH*_SPEC.
2367         (FPUTYPE_DEFAULT): Don't define here.
2368
2369 2004-04-30  J"orn Rennecke <joern.rennecke@superh.com>
2370
2371         * flow.c (propagate_one_insn): Call mark_set_regs for stack pointer
2372         updates too.
2373
2374 2004-04-30  Paul Brook  <paul@codesourcery.com>
2375
2376         * arm.c (arm_needs_doubleword_align): Use mode alignment.
2377
2378 2004-04-30  Paolo Bonzini  <bonzini@gnu.org>
2379
2380         * config/altivec/altivec.h [__cplusplus] (vec_subsubs): Rename to
2381         vec_sububs.
2382         [__cplusplus] (vec_subsuhs): Rename to vec_subuhs, without
2383         duplicates.
2384
2385 2004-04-30  Uros Bizjak  <uros@kss-loka.si>
2386
2387         * config/i386/i386.md (atansf2, atandf2, atanxf2): Move near
2388         atan2?f3 expanders.
2389
2390 2004-04-29  Nick Clifton  <nickc@redhat.com>
2391
2392         Bug 14093
2393         * config/sh/sh-protos.h (sh_promote_prototypes): Declare.
2394         * config/sh/sh.c (sh_promote_prototypes): Remove declaration.
2395         Delete static from definition.
2396         * config/sh/sh.h (FUNCTION_VALUE): Add sh_promote_prototypes call.
2397
2398 2004-04-30  Uros Bizjak  <uros@kss-loka.si>
2399
2400         * reg-stack.c (subst_stack_regs_pat): <UNSPEC_SIN, UNSPEC_COS,
2401         UNSPEC_FRNDINT, UNSPEC_F2XM1>: abort() if src1 dies.
2402         <UNSPEC_SINCOS_COS, UNSPEC_TAN_ONE, UNSPEC_XTRACT_FRACT>: Same.
2403         <UNSPEC_SINCOS_SIN, UNSPEC_TAN_TAN, UNSPEC_XTRACT_EXP>: Same.
2404
2405 2004-04-29  Richard Guenther  <richard.guenther@uni-tuebingen.de>
2406
2407         * commom.opt (Wfatal-errors): Add it.
2408         * diagnostic.c (flag_fatal_errors): Define it.
2409         (diagnostic_action_after_output): Check for flag_fatal_errors.
2410         * flags.h (flag_fatal_errors): Declare it.
2411         * opts.c (common_handle_option): Add OPT_Wfatal_errors.
2412         * doc/invoke.texi (Warning Options): Document -Wfatal-errors.
2413
2414 2004-04-30  Josef Zlomek  <zlomekj@suse.cz>
2415
2416         * gcse.c (remove_reachable_equiv_notes): Delete notes also in
2417         blocks which have kill flag set.
2418
2419 2004-04-29  Ben Elliston  <bje@au.ibm.com>
2420
2421         * configure.ac (--with-as): Abort if user-supplied assembler
2422         cannot be executed.
2423         (--with-ld): Likewise for the linker.
2424         * configure: Regenerate.
2425
2426 2004-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2427
2428         * convert.c (convert_to_integer): Ensure `long_integer_type_node'
2429         isn't NULL before using it.
2430
2431 2004-04-29  Richard Sandiford  <rsandifo@redhat.com>
2432
2433         PR target/15189
2434         * config/mips/mips.md (load_df_low): Use default length.
2435         (load_df_high, store_df_high): Likewise.
2436
2437 2004-04-29  Kazu Hirata  <kazu@cs.umass.edu>
2438
2439         * config/mips/mips.md, config/mips/sb1.md,
2440         config/rs6000/rs6000.c: Fix comment typos.
2441
2442 2004-04-29  Kazu Hirata  <kazu@cs.umass.edu>
2443
2444         * builtins.c, cgraph.c, cgraphunit.c, final.c, fold-const.c:
2445         Fix comment typos.
2446
2447 2004-04-29  Douglas B Rupp  <rupp@gnat.com>
2448
2449         * gcc.c (DELETE_IF_ORDINARY): New macro default definition.
2450         (delete_if_ordinary): Use above macro.
2451         * config/alpha/xm-vms.h (DELETE_IF_ORDINARY): New macro VMS definition.
2452         Update copyright.
2453         * doc/hostconfig.texi (DELETE_IF_ORDINARY): Document new macro.
2454
2455 2004-04-29  Richard Earnshaw  <rearnsha@arm.com>
2456
2457         * c-decl.c (get_parm_info): Use the correct tag keywords when
2458         warning about type declarations in prototypes.
2459
2460 2004-04-29  Paul Brook  <paul@codesourcery.com>
2461
2462         * config.gcc: Pull list of cores from arm-cores.def.
2463
2464 2004-04-29  Paolo Bonzini  <bonzini@gnu.org>
2465
2466         * combine.c (combine_simplify_rtx): Adjust call to use
2467         simplify_relational_operation.  Do not use SELECT_CC_MODE
2468         when a comparison already has a MODE_CC mode.
2469
2470 2004-04-29  Paolo Bonzini  <bonzini@gnu.org>
2471
2472         (simplify_set): simplify_relational_operation may now
2473         return another relational expression.
2474         * cse.c (fold_rtx): simplify_relational_operation now
2475         takes of computing the comparison mode.
2476         * dojump.c (compare_from_rtx): Use simplify_relational_operation,
2477         remove dead code.
2478         (do_compare_rtx_and_jump): Likewise.
2479         * integrate.c (subst_constants): simplify_relational_operation
2480         may now return another relational expression.
2481         * simplify-rtx.c (simplify_gen_relational): Move most code to
2482         the new simplify_relational_operation and
2483         simplify_relational_operation_1 functions.
2484         (simplify_relational_operation): Rewritten.
2485         (simplify_relational_operation_1): New function.
2486         (simplify_ternary_operation): simplify_relational_operation
2487         may now return another relational expression.
2488         (simplify_rtx): Remove unnecessary temp variable.
2489
2490 2004-04-29  Uros Bizjak  <uros@kss-loka.si>
2491
2492         * reg-stack.c (swap_to_top): New function.
2493         (subst_stack_regs_pat): UNSPEC_FPATAN, UNSPEC_FYL2X: Use
2494         swap_to_top().
2495         (subst_stack_regs_pat): UNSPEC_FSCALE: Remove.
2496         (subst_stack_regs_pat): Handle UNSPEC_FSCALE_FRACT and
2497         UNSPEC_FSCALE_EXP.
2498
2499         * config/i386/i386.md (UNSPEC_FSCALE): Remove.
2500         (*fscale_sfxf3, *fscale_dfxf3, *fscale_xf3): Remove insn pattern.
2501         (UNSPEC_FSCALE_FRACT, UNSPEC_FSCALE_EXP): New unspecs to represent
2502         x87's fscale insn.
2503         (*fscalexf4: Define new insn pattern to implement x87 fscale insn.
2504         (exp?f2, exp10?f2, exp2?f2): Use *fscalexf4 and float_truncate
2505         patterns.
2506
2507 2004-04-28  Serge Belyshev  <1319@bot.ru>
2508
2509         PR 14944
2510         * coverage.c (read_counts_file): Fix usage of warning () call.
2511         * pretty-print.c (pp_base_format_text): Fix typo in the comment.
2512
2513 2004-04-28  Ben Elliston  <bje@au.ibm.com>
2514
2515         * doc/invoke.texi (Objective-C Dialect Options): Don't prefix
2516         options with "-" in the option index.
2517         (SPARC Options): Likewise.
2518         (M32R/D Options): Likewise.
2519
2520 2004-04-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2521
2522         * convert.c (convert_to_integer): Convert (long)round -> lround,
2523         etc.
2524
2525 2004-04-28  Andrew Pinski  <pinskia@physics.uc.edu>
2526
2527         * config/rs6000/rs6000.c (registers_ok_for_quad_peep):
2528         Return false if we do not have fp register.
2529         (addrs_ok_for_quad_peep): Rename to ...
2530         (mems_ok_for_quad_peep): this.
2531         Add check for volatile memory.
2532         * config/rs6000/rs6000-protos.h (addrs_ok_for_quad_peep):
2533         Rename to ...
2534         (mems_ok_for_quad_peep): this.
2535         * config/rs6000/rs6000.md: Change peephole's for lfq/stq
2536         to peephole2's.
2537         (lfq_power2): New instruction.
2538         (stfq_power2): Likewise.
2539
2540 2004-04-28  Jan Hubicka  <jh@suse.cz>
2541
2542         PR c/15004
2543         * function.c (do_warn_unused_parameter): Break out form ...
2544         (expand_function_end): ... here; warn only when not using cgraphunit.
2545         * function.h (do_warn_unused_parameter): Declare.
2546         * cgraphunit.c: Include function.h.
2547         (cgraph_finalize_function): Do unused parameter warning.
2548         * Makefile.in (cgraphunit.o): Depend on function.h
2549
2550 2004-04-28  Joseph S. Myers  <jsm@polyomino.org.uk>
2551
2552         * Makefile.in ($(DESTDIR)$(infodir)/%.info): Don't condition
2553         calling install-info on $(DESTDIR)$(infodir)/dir already being
2554         present.
2555
2556 2004-04-28  Paul Brook  <paul@codesourcery.com>
2557
2558         * dwarf2out.c (mem_loc_descriptor): Handle shifts.
2559
2560 2004-04-28  Ulrich Weigand  <uweigand@de.ibm.com>
2561
2562         * gcse.c (find_moveable_store): Do not accept store insns with
2563         REG_EH_REGION note.
2564
2565 2004-04-28  Paul Brook  <paul@codesourcery.com>
2566
2567         * calls.c (precompute_arguments): Remove PROMOTE_FOR_CALL_ONLY.
2568         * function.c (assign_temp): Ditto.
2569         * system.h (PROMOTE_FOR_CALL_ONLY): Poison.
2570
2571 2004-04-28  Paul Brook  <paul@codesourcery.com>
2572
2573         * config/arm/lib1funcs.asm: Recognize armv5tej and armv6.
2574
2575 2004-04-28  Josef Zlomek  <zlomekj@suse.cz>
2576
2577         * var-tracking.c (variable_different_p): Add a parameter
2578         compare_current_location, compare current location of variable parts
2579         if it is true.
2580         (dataflow_set_different_1): Pass compare_current_location == false.
2581         (dataflow_set_different_2): Pass compare_current_location == false.
2582         (emit_notes_for_differences_1): Pass compare_current_location == true.
2583
2584 2004-04-28  Ulrich Weigand  <uweigand@de.ibm.com>
2585
2586         * config/s390/s390.md ("casesi"): Mark jump table access as
2587         non-trapping and unchanging.
2588
2589 2004-04-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2590
2591         PR debug/14829
2592         * dwarf2out.c (reg_number): Rename to dbx_reg_number.  Adjust all
2593         callers.
2594         (multiple_reg_loc_descriptor, reg_loc_descriptor): Use gcc register
2595         number for indexing hard_regno_nregs array.
2596
2597 2004-04-27  Geoffrey Keating  <geoffk@apple.com>
2598
2599         * config/darwin.h (STARTFILE_SPEC): Use %s to find crt2.o.
2600         * config/darwin-crt2.c: Only have contents on __ppc__.
2601
2602 2004-04-27  Bob Wilson  <bob.wilson@acm.org>
2603
2604         * config/xtensa/xtensa.c (call_insn_operand): Check
2605         SYMBOL_REF_EXTERNAL_P in addition to SYMBOL_REF_LOCAL_P.
2606         * config/xtensa/xtensa.h (LEGITIMATE_PIC_OPERAND): Likewise.
2607         * config/xtensa/xtensa.md (call, call_value): Likewise.
2608
2609 2004-04-27  Wu Yongwei  <adah@sh163.net>
2610
2611         * gthr-win32.h (__gthread_mutex_t): Change typedef to new structure.
2612         (__GTHREAD_MUTEX_INIT_DEFAULT): Adjust.
2613         (__gthread_mutex_init_function): Replace CreateMutex with
2614         initialization of custom mutex using CreateSemaphore.
2615         (__gthread_mutex_lock): Use InterlockedIncrement.
2616         (__gthread_mutex_trylock): Use InterlockedCompareExchange.
2617         (__gthread_mutex_unlock): Use InterlockedDecrement and
2618         ReleaseSemaphore to unlock
2619         * config/i386/gthr-win32.c (__gthread_mutex_init_function,
2620         __gthread_mutex_lock, __gthread_mutex_trylock,
2621         __gthread_mutex_unlock): Adjust to match inline versions in
2622         gthr-win32.h.
2623
2624 2004-04-27  Paul Brook  <paul@codesourcery.com>
2625
2626         * config/arm/arm.c (arm_promote_prototypes): New function.
2627         (TARGET_PROMOTE_PROTOTYPES): Use it.
2628
2629 2004-04-27  Paul Brook  <paul@codesourcery.com>
2630
2631         * config/arm/arm.c (arm_expand_epilogue): Count blocks of 4 regs.
2632
2633 2004-04-26  Bernard Giroud  <bgiroud@free.fr>
2634
2635         * config/alpha.c (alpha_end_function): For OpenVMS gas,
2636         correctly output .pdesc directive before .end.
2637
2638 2004-04-26  James E Wilson  <wilson@specifixinc.com>
2639
2640         Bug 14927
2641         * config/ia64/ia64.md (movxf): New local op0.  Handle case where
2642         operands[0] is a SUBREG.  Handle case where operands[1] is a GR reg.
2643
2644 2004-04-26  Zack Weinberg  <zack@codesourcery.com>
2645
2646         * config/ia64/hpux.h: Predefine __STDCPP__ when compiling C++.
2647         * config/pa/pa-hpux10.h: Likewise.
2648         * config/pa/pa-hpux11.h: Likewise.
2649
2650 2004-04-26  Geoffrey Keating  <geoffk@apple.com>
2651
2652         * doc/invoke.texi (Overall Options): Document default for -o
2653         for PCH files.
2654
2655 2004-04-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2656
2657         * builtins.c (expand_builtin_update_setjmp_buf): New function.
2658         (expand_builtin, case BUILT_IN_UPDATE_SETJMP_BUF): New case.
2659         * builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): New code.
2660
2661 2004-04-26  Paul Brook  <paul@codesourcery.com>
2662
2663         * config/arm/arm.c (arm_legitimate_index_p): Correct iwmmxt offsets.
2664
2665 2004-04-26  Paul Brook  <paul@codesourcery.com>
2666
2667         * config/arm/arm.c (arm_legitimate_index_p): Correct maverick offsets.
2668
2669 2004-04-25  Roger Sayle  <roger@eyesopen.com>
2670
2671         * fold-const.c (fold): Prefer fold_convert (negate_expr (...)) to
2672         fold (build1 (NEGATE_EXPR, ...)).  Optimize X / -1 as -X and
2673         X % -1 as 0.
2674
2675 2004-04-26  Hans-Peter Nilsson  <hp@bitrange.com>
2676
2677         PR bootstrap/15141
2678         * except.c (connect_post_landing_pads): Delete insns after the
2679         barrier when generating a unwind_resume_libfunc call.
2680
2681 2004-04-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2682
2683         PR/c++ 15119
2684         * tree.c (substitute_placeholder_in_expr, case 4): New case,
2685         for TARGET_EXPR.
2686
2687 2004-04-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
2688
2689         * gcov-io.h (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
2690         __gcov_execv, __gcov_execvp, __gcov_execve): Do not declare when
2691         inhibit_libc is defined.
2692
2693 2004-04-25  Richard Sandiford  <rsandifo@redhat.com>
2694
2695         * config/mips/mips-protos.h (mips_linked_macc_p): Declare.
2696         * config/mips/mips.h (TUNE_MACC_CHAINS): New macro.
2697         * config/mips/mips.c (TARGET_SCHED_REORDER): Define.
2698         (TARGET_SCHED_VARIABLE_ISSUE): Define.
2699         (mips_adjust_cost): Move later in file, next to other sched hooks.
2700         (mips_macc_chains_last_hilo): New variable.
2701         (mips_linked_madd_p, mips_macc_chains_record, mips_macc_chains_reorder)
2702         (mips_promote_ready, mips_sched_reorder, mips_variable_issue): New.
2703         * config/mips/mips.md (may_clobber_hilo): New attribute.
2704
2705 2004-04-24  Roger Sayle  <roger@eyesopen.com>
2706             Bruce Korb  <bkorb@gnu.org>
2707
2708         * fixinc/inclhack.def (aix_syswait_2): New fix.
2709         * fixinc/fixincl.x: Regenerate.
2710         * fixinc/tests/base/sys/wait.h: Update for new test.
2711
2712 2004-04-24  Alan Modra  <amodra@bigpond.net.au>
2713
2714         PR target/14960
2715         * config/rs6000/rs6000.c (rs6000_stack_info): Rename total_raw_size
2716         to non_fixed_size, and leave out fixed_size from the sum.
2717         (generate_set_vrsave): Correct clobbers.
2718         (rs6000_emit_epilogue): Test TARGET_ALTIVEC with TARGET_ALTIVEC_SAVE.
2719         (rs6000_function_value): Test TARGET_ALTIVEC and TARGET_ALTIVEC_ABI.
2720         (rs6000_libcall_value): Likewise.
2721         * config/rs6000/rs6000.h (FUNCTION_VALUE_REGNO_P): Likewise.
2722         (FUNCTION_ARG_REGNO_P): Likewise.
2723
2724 2004-04-24  Ulrich Weigand  <uweigand@de.ibm.com>
2725
2726         * expmed.c (expand_mult_highpart_adjust): Do not assume OP1
2727         is a CONST_INT.
2728         (expand_mult_highpart_optab): Call expand_mult_highpart_adjust
2729         with NARROW_OP1 instead of OP1.
2730
2731 2004-04-24  Ulrich Weigand  <uweigand@de.ibm.com>
2732
2733         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __s390__
2734         and __s390x__ hosts.
2735
2736 2004-03-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
2737
2738         * Makefile.in (LIBGCOV): Add _gcov_fork, _gcov_execl, _gcov_execlp,
2739         _gcov_execle, _gcov_execv, _gcov_execvp, _gcov_execve.
2740         * builtin-types.def (BT_PID, BT_PTR_CONST_STRING, BT_FN_PID,
2741         BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
2742         BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING): New.
2743         * builtins.c (expand_builtin_fork_or_exec): New.
2744         (expand_builtin): Call it.
2745         * builtins.def (BUILT_IN_EXECL, BUILT_IN_EXECLP,BUILT_IN_EXECLE,
2746         BUILT_IN_EXECV, BUILT_IN_EXECVP, BUILT_IN_EXECVE, BUILT_IN_FORK): New.
2747         * c-common.c (PID_TYPE): New macro.
2748         (c_common_nodes_and_builtins): Initialize pid_type_node.
2749         * calls.c (special_function_p): Do not handle fork and exec.
2750         (expand_call): Do not handle ECF_FORK_OR_EXEC.
2751         * gcov-io.h (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
2752         __gcov_execv, __gcov_execvp, __gcov_execve): Declare.
2753         * libgcov.c (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
2754         __gcov_execv, __gcov_execvp, __gcov_execve): New.
2755         * tree.h (enum tree_index): Add TI_PID_TYPE.
2756         (pid_type_node): New macro.
2757         (ECF_FORK_OR_EXEC): Removed.
2758
2759 2004-04-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
2760
2761         PR optimization/13985
2762         * cfgloopmanip.c (fix_loop_placements): New prototype.
2763         Call fix_bb_placements on the preheader of loops that have
2764         been reparented.
2765         (remove_path): Adjust call to fix_loop_placements.
2766
2767 2004-04-23  Andrew Pinski  <pinskia@physics.uc.edu>
2768
2769         * config/darwin7.h: New file.
2770         * config.gcc (*-*-darwin*): Add darwin7.h if the
2771         version is greater than 6.
2772         * config/darwin.h (TARGET_C99_FUNCTIONS): Define.
2773         (MATH_LIBRARY): Wrap in ifdefs.
2774
2775 2004-04-23  Daniel Jacobowitz  <drow@mvista.com>
2776
2777         * config/arm/arm.c (arm_output_epilogue): Reverse the order of
2778         loading iWMMXt registers with a frame pointer.  Use post-increment
2779         without a frame pointer.
2780         (arm_expand_prologue): Reverse the order of saving iWMMXt registers.
2781
2782 2004-04-23  Paolo Bonzini  <bonzini@gnu.org>
2783
2784         * doc/invoke.texi (Optimize Options): Refer to "unit-at-a-time
2785         mode" rather than "-funit-at-a-time" since -O2 enables it
2786         without requiring -f* options.  Refer to -fprofile-generate and
2787         -fprofile-use correctly.  Move -funit-at-a-time among options
2788         enabled by -O.  Add information about unit-at-a-time caveats.
2789
2790 2004-04-22  Per Bothner  <per@bothner.com>
2791
2792         * line-map.h (struct line_maps):  New field highest_line.
2793         (linemap_position_for_column):  Make non-inline function.
2794         (LINEMAP_POSITION_FOR_COLUMN):  New macro.
2795         * line-map.c (linemap_init):  Clear highest_line field.
2796         (linemap_add):  Set highest_line field.
2797         (linemap_line_start):  Minor optimization - use highest_line field.
2798         Reduce maximum column hint to 10000.  Update highest_line field.
2799         (linemap_position_for_column):  Moved from line-map.h.  Optimize a bit.
2800         * cpphash.h (struct cpp_reader):  Remove line field - instead use
2801         line_table->highest_line.
2802         (saved_line):  Remove unused field.
2803         (CPP_INCREMENT_FILE):  Don't do linemap_lookup - just use newest map.
2804         Use  line_table's highest_line field instead of cpp_reader's line.
2805         * cpplib.c (start_directive):  Likewise use highest_line field.
2806         (do_line, do_linemarker):  Likewise just use newest map.
2807         (_cpp_do_file_change):  Don't need to set cpp_reader's line field.
2808         * cpperror.c (cpp_error):  Likewise use highest_line field.
2809         * cppfiles.c (open_file_failed:  Likewise.
2810         (cpp_make_system_header):  Likewise use newest map and highest_line.
2811         * cppinit.c (cpp_create_reader):  Don't initialize removed field.
2812         * cpplex.c (_cpp_process_line_notes, _cpp_skip_block_comment,
2813         skip_line_comment, skip_whitespace, _cpp_get_fresh_line,
2814         _cpp_lex_direct):  Likewise use highest_line.
2815         (_cpp_lex_direct):  Use new LINEMAP_POSITION_FOR_COLUMN macro.
2816         * cppmacro.c (_cpp_builtin_macro_text):  Likewise use highest_line,
2817         and use newest map.
2818         * cpppch.c (cpp_read_state):  Don't save+restore cpp_reader's line.
2819         * cpptrad.c (_cpp_overlay_buffer):  Don't save cpp_reader's line.
2820         (copy_comment, _cpp_scan_out_logical_line):  Likewise use highest_line.
2821
2822 2004-04-23  Alan Modra  <amodra@bigpond.net.au>
2823
2824         PR bootstrap/14992
2825         * gcc.c (init_gcc_specs): Test USE_LD_AS_NEEDED, not HAVE_LD_AS_NEEDED.
2826         * config/linux.h (USE_LD_AS_NEEDED): Define.
2827         * gcc/config/alpha/linux.h (USE_LD_AS_NEEDED): Define.
2828         * gcc/config/arm/linux-elf.h (USE_LD_AS_NEEDED): Define.
2829         * gcc/config/rs6000/linux.h (USE_LD_AS_NEEDED): Define.
2830         * gcc/config/rs6000/linux64.h (USE_LD_AS_NEEDED): Define.
2831         * gcc/config/sh/linux.h (USE_LD_AS_NEEDED): Define.
2832         * gcc/config/sparc/linux.h (USE_LD_AS_NEEDED): Define.
2833         * gcc/config/sparc/linux64.h (USE_LD_AS_NEEDED): Define.
2834
2835 2004-04-22  Per Bothner  <per@bothner.com>
2836
2837         * cppinit.c (cpp_read_main_file):  Return NULL rather than false.
2838         Fixes PR preprocessor/15067.
2839
2840 2004-04-23  Andreas Schwab  <schwab@suse.de>
2841
2842         * config/ia64/ia64intrin.h: Add intermediate cast to void * to
2843         avoid aliasing warning.
2844
2845 2004-04-22  Jan Hubicka  <jh@suse.cz>
2846             Mostafa Hagog <mustafa@il.ibm.com>
2847
2848       * cfgloopmanip.c (scale_bbs_frequencies): Use RDIV macro
2849       * cfgloopanal.c (expected_loop_iterations): Change the return value
2850
2851 2004-04-22  Jakub Jelinek  <jakub@redhat.com>
2852
2853         * cselib.h (struct elt_loc_list): Remove canon_loc field.
2854         * cselib.c (new_elt_loc_list): Remove canon_loc initialization.
2855         (cselib_invalidate_mem): Remove all canon_loc and canon_x
2856         traces.
2857
2858 2004-04-22  Josef Zlomek  <zlomekj@suse.cz>
2859
2860         Revert
2861         2004-04-20  Josef Zlomek  <zlomekj@suse.cz>
2862
2863                 * var-tracking.c (variable_part_different_p): Variable parts
2864                 differ when the most recent locations differ.
2865
2866 2004-04-22  Richard Sandiford  <rsandifo@redhat.com>
2867
2868         * doc/invoke.texi: Remove the MIPS -membedded-pic option.
2869         * config/mips/mips-protos.h (embedded_pic_fnaddr_reg): Delete.
2870         (embedded_pic_offset): Delete.
2871         * config/mips/mips.h (MASK_EMBEDDED_PIC): Delete.  Shuffle other
2872         MASK_* constants.
2873         (TARGET_EMBEDDED_PIC): Delete.
2874         (TARGET_SWITCHES): Remove -m{no-,}embedded-pic.
2875         (ASM_SPEC): Remove -membedded-pic.
2876         (ASM_OUTPUT_ADDR_DIFF_ELT): Remove embedded-pic handling.
2877         (ASM_OUTPUT_CASE_LABEL): Likewise.
2878         * config/mips/vxworks.h (ASM_SPEC): Remove -membedded-pic.
2879         * config/mips/windiss.h (ASM_SPEC): Likewise.
2880         * config/mips/mips.c (struct machine_function): Remove
2881         embedded_pic_fnaddr_rtx.
2882         (TARGET_ENCODE_SECTION_INFO): Remove override.
2883         (embedded_pic_fnaddr_reg, embedded_pic_offset): Delete.
2884         (override_options): Remove -membedded-pic handling.
2885         (print_operand): Remove handling of '%S'.
2886         (mips_select_section: Remove -membedded-pic handling.
2887         (mips_encode_section_info): Delete.
2888         (mips_output_conditional_branch): Remove mention of -membedded-pic.
2889         * config/mips/mips.md (define_attr length, movsi, movdi, jump): Remove
2890         -membedded-pic handling.
2891         (casesi, casesi_internal, casesi_internal_di, get_fnaddr): Delete.
2892
2893 2004-04-22  Alan Modra  <amodra@bigpond.net.au>
2894
2895         * var-tracking.c (frame_base_decl): Remove useless GTY.
2896
2897 2004-04-21  Aldy Hernandez  <aldyh@redhat.com>
2898
2899         * config/rs6000/rs6000.c (rs6000_override_options): Error when
2900         user wants altivec and e500 instructions.
2901
2902 2004-04-21  H.J. Lu  <hongjiu.lu@intel.com>
2903
2904         PR target/14813
2905         * config/ia64/crtend.asm: Move pointer to __do_global_ctors_aux
2906         in .init_array section to ...
2907         * config/ia64/crtbegin.asm: Here.
2908
2909         * config/ia64/crtend.asm: Mark __do_global_ctors_aux global
2910         and hidden if HAVE_INITFINI_ARRAY is defined.
2911
2912 2004-04-21  James E Wilson  <wilson@specifixinc.com>
2913
2914         * config/mips/mips-protos.h (fp_register_operand, lo_operand): Declare.
2915         * config/mips/mips.c (mips_multipass_dfa_lookahead): Declare.
2916         (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): New.
2917         (fp_register_operand, lo_operand): New.
2918         (mips_rtx_costs): Add TUNE_SB1 support.
2919         (mips_issue_rate): Add comment.  Add PROCESSOR_SB1 support.
2920         (mips_use_dfa_pipeline_interface): Add PROCESSOR_SB1 support.
2921         (mips_multipass_dfa_lookahead): New.
2922         * config/mips/mips.h (MASK_FP_EXCEPTIONS, TARGET_FP_EXCEPTIONS,
2923         TUNE_SB1): New.
2924         (TARGET_SWITCHES): Add -mfp-exceptions support.
2925         (TARGET_FP_EXCEPTIONS_DEFAULT): New.
2926         (BRANCH_COST): Fix whitespace.
2927         * config/mips/mips.md: Include sb1.md.
2928         * config/mips/sb1.md: New file.
2929         * doc/invoke.texi: Document -mfp-exceptions.
2930
2931         * Makefile.in (fixinc.sh): Don't set or export WARN_CFLAGS.  Fix
2932         comment.
2933         * fixinc/Makefile.in (FL_LIST): Don't mention WARN_CFLAGS.
2934         (fixincl.o-warn): Delete.
2935
2936 2004-04-21  Andrew Pinski  <pinskia@physics.uc.edu>
2937
2938         * config/rs6000/rs6000 (print_operand) ['z']:
2939         Change ifdef of TARGET_MACHO to if TARGET_MACHO.
2940
2941 2004-04-21 Daniel Jacobowitz  <drow@mvista.com>
2942
2943         * config.gcc: Support --with-arch=iwmmxt for ARM.
2944
2945 2004-04-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2946
2947         * expmed.c (expand_mult_highpart_optab): Use narrower version of OP1
2948         in two more places; remove unneeded force_reg
2949
2950 2004-04-21  Andrew Pinski  <pinskia@physics.uc.edu>
2951
2952         * config/rs6000/rs6000.c (symbol_ref_operand): Remove hack
2953         for TARGET_MACHO.
2954         (print_operand): For TARGET_MACHO check to see if we need a stub
2955         and output one if we need it.
2956
2957         PR debug/15033
2958         * dwarf2out.c (rtl_for_decl_location): Check for NULL
2959         rtl.
2960
2961 2004-04-20  James E Wilson  <wilson@specifixinc.com>
2962
2963         * config/ia64/ia64.md (call_value_nogp): Add constraints for op0.
2964         (vall_value_gp): Likewise.
2965
2966 2004-04-20  DJ Delorie  <dj@redhat.com>
2967
2968         * dwarf2out.c (rtl_for_decl_location): Adjust rtl for byte
2969         variables stored in word registers, then in memory.
2970
2971 2004-04-20  Eric Christopher  <echristo@redhat.com>
2972
2973         * cp/parser.c (cp_parser_declaration): Move translate
2974         up before tokens are lexed.
2975
2976 2004-04-20  Uros Bizjak  <uros@kss-loka.si>
2977
2978         * optabs.h (enum optab_index): Add new OTI_asin and OTI_acos.
2979         (asin_optab, acos_optab): Define corresponding macros.
2980         * optabs.c (init_optabs): Initialize asin_optab and acos_optab.
2981         * genopinit.c (optabs): Implement asin_optab and acos_optab
2982         using asin?f2 and acos?f2 patterns.
2983         * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_ASIN{,F,L}
2984         using asin_optab, and BUILT_IN_ACOS{,F,L} using acos_optab.
2985         (expand_builtin): Expand BUILT_IN_ASIN{,F,L} and BUILT_IN_ACOS{,F,L}
2986         using expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
2987
2988         * config/i386/i386.md (asindf2, asinsf2, asinxf2, acosdf2,
2989         acossf2, acosxf2): New expanders to implement asin, asinf, asinl,
2990         acos, acosf and acosl built-ins as inline x87 intrinsics.
2991
2992 2004-04-20  Paul Brook  <paul@codesourcery.com>
2993
2994         * config/arm/arm.c (arm_legitimate_address_p): Use rtx_equal_p.
2995
2996 2004-04-20  Paul Brook  <paul@codesourcery.com>
2997
2998         * config/arm/arm.c (arm_expand_prologue): Fix size calculation.
2999
3000 2004-04-20  Paolo Bonzini  <bonzini@gnu.org>
3001
3002         Revert part of 2004-04-17 change that moved -frename-registers
3003         to -O1.  -frename-registers is buggy.
3004
3005         * toplev.c (flag_rename_registers): Initialize to 0.
3006         * doc/invoke.texi (Optimize options): Move -frename-registers
3007         to "Not triggered by any -O level" section.  Adjust commentary
3008         accordingly.
3009
3010 2004-04-20  Anil Paranjpe <anilp1@kpitcummins.com>
3011
3012         * toplev.c (compile_file): Move targetm.asm_out.file_end call to end.
3013
3014 2004-04-20  Richard Sandiford  <rsandifo@redhat.com>
3015
3016         * config/mips/mips.c (mips_legitimize_move): Generate special patterns
3017         for mflo and mfhi instructions.
3018         (mips_output_move): Remove mflo and mfhi handling.
3019         * config/mips/mips.md (UNSPEC_MFHILO): New unspec.
3020         (*mulsidi3_64bit): Update for new mfhi/mflo representation.
3021         Likewise various define_peephole2s.
3022         (*movdi_32bit, *movdi_64bit, *movsi_internal): Merge x<-J and x<-d
3023         alternatives.
3024         (*movdi_64bit, *movdi_64bit_mips16, *mov[shq]i_internal)
3025         (*mov[shq]i_mips16): Remove mflo and mfhi alternatives.
3026         (mfhilo_di, mfhilo_si): New patterns.
3027
3028 2004-04-20  Josef Zlomek  <zlomekj@suse.cz>
3029
3030         * function.c (assign_parms): Force
3031         MEM_EXPR (DECL_INCOMING_RTL (parm)) == parm.
3032
3033 2004-04-20  Josef Zlomek  <zlomekj@suse.cz>
3034
3035         * var-tracking.c (variable_part_different_p): Variable parts differ
3036         when the most recent locations differ.
3037
3038 2004-04-19  James E Wilson  <wilson@specifixinc.com>
3039
3040         * rtl.h (reg_set_last): Delete declaration.
3041         * rtlanal.c (reg_set_last): Delete.
3042
3043 2004-04-19  Roger Sayle  <roger@eyesopen.com>
3044
3045         * fold-const.c (fold_convert): Make function extern/public.
3046         * tree.h (fold_convert): Prototype here.
3047         * builtins.c (expand_builtin_strstr, expand_builtin_strchr,
3048         expand_builtin_strrchr, expand_builtin_strpbrk,
3049         expand_builtin_mempcpy, expand_builtin_bcopy,
3050         expand_builtin_bzero, expand_builtin_memcmp,
3051         expand_builtin_strcmp, expand_builtin_strncmp,
3052         stabilize_va_list, expand_builtin_sprintf,
3053         fold_trunc_transparent_mathfn, fold_builtin_logarithm,
3054         fold_builtin_exponent, fold_builtin_mempcpy,
3055         fold_builtin_strcpy, fold_builtin_strcmp, fold_builtin_strncmp,
3056         fold_builtin_signbit, fold_builtin_isdigit, fold_builtin): Prefer
3057         fold_convert to "convert" or "fold (build1 (NOP_EXPR, ...))".
3058
3059 2004-04-19  Aldy Hernandez  <aldyh@redhat.com>
3060
3061         * config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): New constant.
3062         (move_from_CR_gt_bit): New.
3063         (cceq_ior_compare): Name previously unnamed pattern.  Disable for
3064         E500.
3065         (cceq_rev_compare): Name previously unnamed pattern.  Allow for
3066         E500.
3067
3068         * config/rs6000/spe.md (cmpsfeq_gpr): Rewrite as unspec.
3069         (tstsfeq_gpr): Same.
3070         (cmpsfgt_gpr): Same.
3071         (tstsfgt_gpr): Same.
3072         (cmpsflt_gpr): Same.
3073         (tstsflt_gpr): Same.
3074         (e500_cceq_ior_compare): New.
3075         (e500_flip_gt_bit): New.
3076
3077         * config/rs6000/rs6000.c (ccr_bit): Remove E500 specific code.
3078         (print_operand): Add 'c' and 'D'.
3079         (rs6000_generate_compare): Rewrite to generate correct rtl.
3080         (rs6000_emit_sCOND): Handle E500.
3081         (output_cbranch): Adjust for changes in rs6000_generate_compare.
3082         (output_e500_flip_gt_bit): New.
3083
3084         * config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit):
3085         Protoize.
3086
3087 2004-04-19  Eric Christopher  <echristo@redhat.com>
3088
3089         * config/mips/mips.h (DWARF2_ADDR_SIZE): New.
3090
3091 2004-04-19  David Edelsohn  <edelsohn@gnu.org>
3092
3093         * doc/install.texi (*-ibm-aix*): Add AIX 5.1 assembler and archiver
3094         fix information.
3095
3096 2004-04-19  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3097
3098         * doc/install.texi (Specific, mips-sgi-irix5): Fix IRIX 5.3 IDO
3099         download URL.
3100
3101 2004-04-19  Daniel Jacobowitz  <drow@mvista.com>
3102
3103         * stor-layout.c (layout_decl): Check DECL_PACKED before calling
3104         ADJUST_FIELD_ALIGN.  Check maximum_field_alignment after.
3105
3106 2004-04-19  Andrew PInski  <pinskia@physics.uc.edu>
3107
3108         * builtins.c (fold_builtin_cabs): Remove fndecl parameter.
3109         (fold_builtin): Update caller to match.
3110
3111         PR bootstrap/15009
3112         * bb-reorder.c (fix_up_fall_thru_edges): Init cond_jump.
3113
3114         PR bootstrap/14999
3115         * builtins.c (fold_builtin_cabs): Mark fndecl as unused.
3116
3117 2004-04-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3118
3119         * varasm.c (compare_constant, case VIEW_CONVERT_EXPR): Add case.
3120
3121         * expmed.c (expand_mult_highpart_adjust): Make OP1 valid for MODE.
3122         (expand_mult_highpart_optab): Likewise.
3123         (expand_mult_highpart): Make OP1 valid for WIDER_MODE, not MODE.
3124
3125 2004-04-19  Paul Brook  <paul@codesourcery.com>
3126
3127         * config/arm/arm.md (fixuns_truncsfsi2, fixuns_truncdfsi2,
3128         floatunssisf2, floatunssidf2): New patterns.
3129
3130 2004-04-18  Mark Mitchell  <mark@codesourcery.com>
3131
3132         PR other/14918
3133         * doc/invoke.texi (-fprofile-generate): Document requirement to
3134         use -fprofile-generate when linking.
3135
3136         * doc/extend.texi (Strong Using): Warn users against using this
3137         feature.
3138
3139 2004-04-18  Richard Sandiford  <rsandifo@redhat.com>
3140
3141         * config/mips/mips-protos.h (m16_usym8_4, m16_usym5_4): Delete.
3142         * config/mips/mips.h (mips_entry, mips_string_length): Delete.
3143         (CONSTANT_POOL_BEFORE_FUNCTION, ASM_OUTPUT_POOL_EPILOGUE): Undefine.
3144         * config/mips/mips.c (struct mips16_constant): Renamed from struct
3145         constant.  Propogate change throughout file.
3146         (struct machine_function): Remove insns_len.
3147         (mips_string_length, mips16_strings, string_constants): Delete.
3148         (mips_classify_symbol): Return SYMBOL_CONSTANT_POOL for LABEL_REFs
3149         when generating mips16 code.  Remove special mips16 treatment of
3150         string constants.
3151         (mips_symbolic_constant_p): Allow mips16 constant pool accesses
3152         to have the form LABEL+CONSTANT.
3153         (mips_symbolic_address_p): Fix comment.
3154         (m16_usym8_4, m16_usym5_4): Delete.
3155         (mips_output_function_epilogue): Remove mips16 string handling.
3156         (mips_output_mi_thunk): Call mips16_lay_out_constants.
3157         (mips_select_section, mips_encode_section_info): Remove mips16
3158         string handling.
3159         (struct mips16_constant_pool): New.
3160         (add_constant): Take a mips16_constant_pool structure.  Keep pool
3161         sorted into order of ascending mode size.  Keep track of the highest
3162         possible start address, taking padding and the masking of the base PC
3163         value into account.
3164         (dump_constants_1): New function, split out from dump_constants.
3165         Handle vector constants.  Use gen_consttable_{int,float} rather than
3166         separate functions for each mode.
3167         (dump_constants): Simplify.  Use GET_MODE_ALIGNMENT.  Use gen_align
3168         rather than separate functions for each alignment.
3169         (mips_find_symbol): Delete.
3170         (mips16_insn_length): New function, split out from
3171         mips16_lay_out_constants.
3172         (mips16_rewrite_pool_refs): New function.
3173         (mips16_lay_out_constants): Rework. Remove string handling.
3174         Always create an inline constant pool.
3175         * config/mips/mips.md (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT)
3176         (UNSPEC_ALIGN): New constants.
3177         (UNSPEC_CONSTTABLE_[QHSD]I, UNSPEC_CONSTTABLE_[SD]F): Delete.
3178         (UNSPEC_ALIGN_[248]): Delete.
3179         (consttable_int, consttable_float, align): New patterns.
3180         (consttable_[qhsd]i, consttable_[sd]f, align_[248]): Delete.
3181
3182 2004-04-17  Aldy Hernandez  <aldyh@redhat.com>
3183
3184         * config/rs6000/altivec.h (vec_any_numeric): Correct typo in
3185         __unn_args_eq.
3186
3187 2004-04-17  Alan Modra  <amodra@bigpond.net.au>
3188
3189         PR target/14715
3190         * config/rs6000/rs6000.c (rs6000_stack_info): Make parm_size agree
3191         with STARTING_FRAME_OFFSET.
3192
3193 2004-04-17  Richard Sandiford  <rsandifo@redhat.com>
3194
3195         * config/mips/mips.h (PREDICATE_CODES): Add macc_msac_operand.
3196         * config/mips/mips.c (macc_msac_operand): New function.
3197         * config/mips/mips.md (*msac): Move after *macc.
3198         (*msac2): New.  Generalize macc-related peepholes so that they apply
3199         to msac too.
3200
3201 2004-04-17  Paolo Bonzini  <bonzini@gnu.org>
3202
3203         * opts.c (decode_options): Do not enable flag_rename_registers
3204         and flag_web at -O3.
3205         * toplev.c (flag_rename_registers): Initialize
3206         flag_rename_registers and flag_web to
3207         AUTODETECT_FLAG_VAR_TRACKING.
3208         (default_debug_hooks): New global.
3209         (process_options): Initialize default_debug_hooks.  Warn if
3210         -fvar-tracking specified but not supported by the current
3211         debug format.  Do not run var tracking at -O0 or if not
3212         supported by the current debug format, even if
3213         -fvar-tracking was given.  If -fno-rename-registers
3214         is not specified, always run register renaming if var
3215         tracking is supported by the default debugging information
3216         format for the target, and we are at -O1 or higher; similarly
3217         for -fweb, but only at -O2 or higher.
3218         * doc/invoke.texi (Optimize Options): Document this.
3219
3220 2004-04-17  Richard Sandiford  <rsandifo@redhat.com>
3221
3222         * configure.ac (gcc_cv_ld_as_needed): Use AC_CACHE_CHECK.
3223         * configure: Regenerate.
3224
3225 2004-04-17  Richard Sandiford  <rsandifo@redhat.com>
3226
3227         * gcc.c (used_arg): Check whether an option has been removed.
3228
3229 2004-04-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3230
3231         * config.gcc (i[34567]86-*-solaris2*): Default to DWARF-2
3232         debugging on Solaris 7 and up.
3233
3234 2004-04-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3235
3236         * doc/install.texi (Specific, mips-sgi-irix5): Reflect working
3237         IRIX 5 port.
3238         Remove -save-temps workaround, handled automatically.
3239         Require GNU binutils 2.15 for debugging.
3240         Remove SGI make warnings since GNU make is now required.
3241         (Specific, mips-sgi-irix6): Some markup fixes.
3242         Describe MIPSpro C problems and workarounds.
3243         Mention working O32 ABI support.
3244         Recommend GNU as 2.15 for O32 with debugging.
3245         Remove description of fixed structure pass/return bug.
3246
3247 2004-04-16  DJ Delorie  <dj@redhat.com>
3248
3249         * sdbout.c (sdbout_one_type): Use TYPE_VALUES for enums, not
3250         TYPE_FIELDS.
3251         (sdbout_finish): Don't free deferred_global_decls; it's GC'd.
3252
3253 2004-04-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3254
3255         * pa.md: Remove unnecessary declarations for asm_out_file.
3256
3257         * pa64-regs.h (DBX_REGISTER_NUMBER): Simplify and correct mapping of
3258         SAR register.  Fix comment.
3259         (ADDITIONAL_REGISTER_NAMES): Correct register number of SAR register
3260         (%cr11).
3261
3262         * pa64-hpux.h (LIB_SPEC): Fix library specification used with GNU ld.
3263
3264 2004-04-16  Nick Clifton  <nickc@redhat.com>
3265
3266         * config/arm/arm.c (arm_override_options): Revert previous patch.
3267         * config/arm/t-xscale-elf: Disable iwmmxt multilibs until they can
3268         be safely built.
3269
3270 2004-04-16  Kazuhiro Inaoka <inaoka dot kazuhiro at renesas dot com>
3271
3272         * config/m32r/m32r.h (BIG_ENDIAN_BIT): Deleted to fix endian
3273         bug.
3274         (TARGET_LITTLE_ENDIAN, TARGET_BIG_ENDIAN,
3275         TARGET_DEFAULT): Changed. Ditto.
3276         (LITTLE_ENDIAN_BIT, TARGET_CPU_DEFAULT,
3277         TARGET_ENDIAN_DEFAULT): Added. Ditto.
3278         * config/m32r/little.h (TARGET_LITTLE_ENDIAN): Deleted.
3279         (TARGET_ENDIAN_DEFAULT): Added.
3280
3281 2004-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3282
3283         * builtins.def (BUILT_IN_ISDIGIT, BUILT_IN_ISXDIGIT): Mark with
3284         ATTR_CONST_NOTHROW_LIST.
3285
3286 2004-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3287
3288         PR/middle-end 14915
3289         * builtins.c (expand_builtin_signbit): Test BYTES_BIG_ENDIAN, not
3290         BITS_BIG_ENDIAN.
3291
3292 2004-04-15  Pat Haugen  <pthaugen@us.ibm.com>
3293
3294         * ra-debug.c (ra_print_rtx): Add break's to case legs.
3295
3296 2004-04-14  James E Wilson  <wilson@specifixinc.com>
3297
3298         * Makefile.in (fixinc.sh): Set WARN_CFLAGS to empty string.
3299
3300 2004-04-14  Nathanael Nerode  <neroden@gcc.gnu.org>
3301
3302         * libada-mk.in: New file.
3303         * configure.ac: Create libada-mk from libada-mk.in.
3304         * configure: Regenerate.
3305
3306 2004-04-14  Uros Bizjak  <uros@kss-loka.si>
3307
3308         * optabs.h (enum optab_index): Add new OTI_logb and OTI_ilogb.
3309         (logb_optab, ilogb_optab): Define corresponding macros.
3310         * optabs.c (init_optabs): Initialize logb_optab and ilogb_optab.
3311         * genopinit.c (optabs): Implement logb_optab and ilogb_optab
3312         using logb?f2 and ilogb?i2 patterns.
3313         * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_LOGB{,F,L}
3314         using logb_optab, and BUILT_IN_ILOGB{,F,L} using ilogb_optab.
3315         (expand_builtin): Expand BUILT_IN_LOGB{,F,L} and BUILT_IN_ILOGB{,F,L}
3316         using expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
3317
3318         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_XTRACT_FRACT
3319         and UNSPEC_XTRACT_EXP.
3320
3321         * config/i386/i386.md (*fxtractdf3, *fxtractsf3, *fxtractxf3): New
3322         patterns to implement fxtract x87 instruction.
3323         (logbdf2, logbsf2, logbxf2, ilogbsi2): New expanders to implement
3324         logb, logbf, logbl, ilogb, ilogbf and ilogbl built-ins as inline x87
3325         intrinsics.
3326         (UNSPEC_XTRACT_FRACT, UNSPEC_XTRACT_EXP): New unspecs to represent
3327         x87's fxtract insn.
3328
3329 2004-04-14  Eric Christopher  <echristo@redhat.com>
3330
3331         * config/mips/t-elf: Enable multilibs by default.
3332
3333 2004-04-14  Andreas Tobler  <a.tobler@schweiz.ch>
3334
3335         * bb-reorder.c (fix_crossing_conditional_branches): Adjust the
3336         previous fix to check HAVE_return at runtime too.
3337
3338 2004-04-14  Nick Clifton  <nickc@redhat.com>
3339
3340         * config/arm/arm.c (arm_override_options): If the user has not
3341         specified an ABI, then default to AAPCS for the iWMMXt processor.
3342         * config/arm/t-xscale-elf: Remove redundant multilib specifications.
3343         * config/arm/t-xscale-coff: Likewise.
3344
3345 2004-04-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3346
3347         * builtins.c (fold_builtin_isdigit): New.
3348         (fold_builtin): Handle BUILT_IN_ISDIGIT.
3349         * defaults.h: Add TARGET_DIGIT0 and sort.
3350         * doc/tm.texi: Add TARGET_BS and TARGET_DIGIT0.
3351
3352 2004-04-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3353
3354         * builtins.c (fold_builtin_cabs, fold_builtin): Use
3355         `mathfn_built_in' to determine the new builtin.
3356         * fold-const.c (fold): Likewise.
3357
3358 2004-04-14  Richard Sandiford  <rsandifo@redhat.com>
3359
3360         * doc/invoke.texi: Rename MIPS's -mfix-vr4122-bugs to -mfix-vr4120.
3361         * config/mips/mips.h (MASK_FIX_VR4120): Renamed from MASK_FIX_VR4122.
3362         (TARGET_FIX_VR4120): Likewise TARGET_FIX_VR4122.
3363         (TARGET_SWITCHES): Replace -mfix-vr4122-bugs with -mfix-vr4120.
3364         (ASM_SPEC): Update accordingly.
3365         * config/mips/mips.c: Update after above renaming.
3366         * config/mips/mips.md, config/mips/t-vr, config/mips/vr.h: Likewise.
3367         * config/mips/vr4120-div.S: Renamed from vr4122-div.S.
3368
3369 2004-04-13  James E Wilson  <wilson@specifixinc.com>
3370
3371         * c-opt.c (c_common_post_options): If this_input_filename is NULL,
3372         increment errorcount and return false instead of true.
3373
3374 2004-04-13  Uros Bizjak  <uros@kss-loka.si>:
3375
3376         * optabs.c (expand_twoval_unop): Reorder function arguments.
3377         * builtins.c (expand_builtin_mathfn_3): Update calls to
3378         expand_twoval_unop.
3379
3380         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_TAN_ONE
3381         and UNSPEC_TAN_TAN. Add missing comment.
3382
3383         * config/i386/i386.md (*tandf3_1, *tansf3_1, *tanxf3_1): New
3384         patterns to implement fptan x87 instruction.
3385         (tandf2, tansf2, tanxf2): New expanders to implement tan, tanf
3386         and tanl built-ins as inline x87 intrinsics. Define corresponding
3387         peephole2 optimizers for 'fptan; fstp %st(0); fld1' sequence.
3388         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): New unspecs to represent
3389         x87's fptan insn.
3390
3391 2004-03-13  Richard Henderson  <rth@redhat.com>
3392
3393         * bb-reorder.c (fix_crossing_unconditional_branches): Use Pmode
3394         for LABEL_REFs.
3395
3396         * defaults.h (HOT_TEXT_SECTION_NAME): Add leading dot.