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