OSDN Git Service

* c-common.h (check_function_format): Remove first parameter.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2004-06-30  Joseph S. Myers  <jsm@polyomino.org.uk>
2
3         * c-common.h (check_function_format): Remove first parameter.
4         * c-format.c (format_check_context): Remove status.
5         (check_format_info, check_format_info_main,
6         maybe_read_dollar_number, avoid_dollar_number,
7         finish_dollar_format_checking, check_format_types,
8         check_function_format): Remove first parameter.  Don't use
9         status_warning.
10         (check_format_arg): Don't use status_warning.
11         (status_warning): Remove.
12         * c-common.c (check_function_arguments): Update call to
13         check_function_format.
14
15 2004-06-30  Eric Botcazou  <ebotcazou@libertysurf.fr>
16
17         * config/sparc/sparc-protos.h (output_cbranch): Constify return
18         value.
19         (output_v9branch): Likewise.
20         (sparc_v8plus_shift): Likewise.  Rename into output_v8plus_shift.
21         * config/sparc/sparc.c (output_cbranch): Constify return value.
22         Prettify output for delay slots.
23         (output_v9branch): Likewise.
24         (sparc_v8plus_shift): Constify return value.  Rename into
25         output_v8plus_shift.
26         * config/sparc/sparc.md (ashldi3_v8plus): Adjust call to
27         sparc_v8plus_shift.
28         (ashrdi3_v8plus): Likewise.
29         (lshrdi3_v8plus): Likewise.
30         (call_address_struct_value_sp32): Prettify output for delay slots.
31         (call_symbolic_struct_value_sp32): Likewise.
32         (call_address_untyped_struct_value_sp32): Likewise.
33         (call_symbolic_untyped_struct_value_sp32): Likewise.
34
35 2004-06-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
36
37         * common.opt (ftree-loop-optimize): New flag.
38         * tree-flow.h (kill_redundant_phi_nodes): Declare.
39         * tree-optimize.c (init_tree_optimization_passes): Add pass_loop.
40         * tree-pass.h (pass_loop_init, pass_loop_done): Declare.
41         * tree-ssa-loop.c (current_loops): New variable.
42         (tree_loop_optimizer_init, gate_loop, tree_ssa_loop_init,
43         tree_ssa_loop_done): New functions.
44         (pass_loop, pass_loop_init, pass_loop_done): New passes.
45         * tree-ssa.c (kill_redundant_phi_nodes): Export.
46         * doc/invoke.texi (-ftree-loop-optimize): Document.
47
48 2004-06-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
49
50         * tree-ssa-loop-ch.c: New file.
51         * Makefile.in (tree-ssa-loop-ch.o): Add.
52         (tree-into-ssa.o): Add GGC_H dependency.
53         * tree-cfg.c (tree_duplicate_bb): Copy virtual arguments.
54         * tree-flow.h (rewrite_into_ssa): Declaration changed.
55         (rewrite_ssa_into_ssa, compute_global_livein, duplicate_ssa_name):
56         Declare.
57         * tree-into-ssa.c: Include ggc.h.
58         (struct def_blocks_d): Add phi_blocks field.
59         (struct mark_def_sites_global_data): Add names_to_rename field.
60         (struct ssa_name_info): New.
61         (compute_global_livein): Export.
62         (set_def_block, insert_phi_nodes, mark_def_sites, set_livein_block,
63         insert_phi_nodes_1, rewrite_finalize_block, insert_phi_nodes_for,
64         register_new_def, get_reaching_def, def_blocks_free,
65         get_def_blocks_for, rewrite_into_ssa): Modified to work with
66         rewrite_ssa_into_ssa.
67         (get_ssa_name_ann, get_phi_state, set_phi_state, get_current_def,
68         set_current_def, ssa_mark_def_sites_initialize_block,
69         ssa_mark_phi_uses, ssa_mark_def_sites, duplicate_ssa_name,
70         ssa_register_new_def, ssa_rewrite_initialize_block,
71         ssa_rewrite_phi_arguments, ssa_rewrite_finalize_block,
72         ssa_rewrite_stmt, rewrite_ssa_into_ssa, rewrite_all_into_ssa): New
73         functions.
74         (pass_build_ssa): Call rewrite_all_into_ssa.
75         * tree-optimize.c (execute_todo, execute_one_pass,
76         tree_rest_of_compilation): Allocate vars_to_rename only once.
77         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Provide parameter
78         to rewrite_into_ssa.
79         * tree-ssa-loop.c (should_duplicate_loop_header_p,
80         mark_defs_for_rewrite, duplicate_blocks, do_while_loop_p,
81         copy_loop_headers, gate_ch, pass_ch): Moved to tree-ssa-loop-ch.c.
82         Use rewrite_ssa_into_ssa.
83         * tree-ssa-operands.c (copy_virtual_operands): New function.
84         * tree-ssa-operands.h (copy_virtual_operands): Declare.
85         * tree.h (struct tree_ssa_name): Add aux field.
86         (SSA_NAME_AUX): New macro to access it.
87
88 2004-05-28 Aaron W. LaFramboise <aaronraolete36@aaronwl.com>
89
90         * prefix.c (lookup_key): Cast buffer to LPBYTE.
91
92 2004-06-30  Per Bothner  <per@bothner.com>
93
94         Conditionally compile support for --enable-mapped_location.
95         * input.h:  #include line-map.h for source_location typedef.
96         (BUILTINS_LOCATION, UNKNOWN_LOCATION, expand_location,
97         LOCATION_FILE, LOCATION_LINE):  New macros and functions.
98         (expanded_location, source_locus):  New typedefs.
99         (push_srcloc):  Change parameter list if USE_MAPPED_LOCATION.
100         * rtl.def (NOTE, ASM_OPERANDS):  Modify specifcation, if
101         USE_MAPPED_LOCATION.
102         * rtl.h (NOTE_DELETED_LABEL_NAME):  New macro.
103         (NOTE_SOURCE_LOCATION, NOTE_EXPNDED_LOCATION, SET_INSN_DELETED):
104         New conditional macros.
105         (ASM_OPERANDS_SOURCE_FILE, ASM_OPERANDS_SOURCE_LINE):  Replace
106         by ASM_OPERANDS_SOURCE_LOCATION if USE_MAPPED_LOCATION.
107         * tree.h (EXPR_LOCATION, SET_EXPR_LOCATION, EXPR_HAS_LOCATION,
108         EXPR_LOCUS, SET_EXPR_LOCUS, EXPR_FILENAME, EXPR_LINENO,
109         DECL_IS_BUILTIN):  New macros, most depending on USE_MAPPED__LOCATION.
110         (tree_exp):  Change type of locus to use new source_locus typedef.
111         * tree.c (build1_stat):  Use SET_EXPR_LOCATION.
112         (annotate_with_locus, annotate_with_file_line):  Conditionalize.
113         (expand_location):  New function.
114         * toplev.c (unknown_location):  New static, when USE_MAPPED_LOCATION.
115         (push_srcloc, pop_loc):  Adjust parameter handling.
116         (process_options):  Don't set input_filename by itself.
117         (lang_dependent_init):  Save, set input_location to <built-in>.
118         (warn_deprecated_use):  Use expand_location.
119
120         * basic-block.h (struct edge_def):  Use new source_locus typedef.
121         * c-common.c (fname_decl):  Update save/clear/store of input_location.
122         (c_do_switch_warnings):  Update for USE_MAPPED_LOCATION case.
123         * c-decl.c:  Likewise.
124         * c-dump.c (dump_stmt):  Likewise.
125         * c-gimplify.c (c-gimplify.c):  Generalize using SET_EXPR_LOCATION.
126         * c-lex.c (cb_line_change):  If USE_MAPPED_LOCATION use token's src_loc
127         to set input_location direction, rather than using linemap_lookup.
128         (fe_file_change, cb_def_pragma):  Again use source_location directly.
129         * c-opts.c (saved_lineno):  Remove static variable.
130         (c_common_post_options, c_common_init):  Don't bothner to save,
131         clear and restore input_Location - now handled by lang_dependent_init.
132         * function.c (init_function_start):  Use new DECL_IS_BUILTIN macro.
133         * xcoffout.c (xcoff_assign_fundamental_type_number):  Likewise.
134         * tree-mudflap.c (mf_file_function_line_tree):  Take a location_t
135         rather than a pointer to one.  Use expand_location.
136         (mf_varname_tree):  Use expand_location.
137         * tree-dump.c:  Use expand_location on DECL_SOURCE_LOCATION.
138         * coverage.c:  Likewise.
139         * print-tree.c:  Likewise.
140         * c-aux-info.c (gen_aux_info_record):  Likewise.
141         * c-parse.in:  Use SET_EXPR_LOCATION macro.
142         * gimple-low.c:  Likewise.
143         * tree-mudflap.c:  Likewise.
144         * gimplify.c:  Likewise.  Also use EXPR_LOCATION and EXPR_HAS_LOCATION.
145         * c-ppoutput.c:  Use new source_location typedef instead of fileline.
146         * c-semantics.c:  Use new macros.
147         * c-typeck.c:  Likewise.
148         * cfgexpand.c:  Handle USE_MAPPED_LOCATION case for function_end_locus.
149         * cfglayout.c (insn_locators_initialize):  Const cleanup.  New macros.
150         * cfgrtl.c (delete_insn):  Use new NOTE_DELETED_LABEL_NAME macro.
151         * print-rtl.c (print_rtx):  Likewise.
152         * emit-rtl.c:  Don't clear NOTE_SOURCE_FILE if USE_MAPPED_LOCATION.
153         * combine.c:  Use new SET_INSN_DELETED macro.
154         * flow.c:  Likewise.
155         * haifa-sched.c:  Likewise.
156         * ifcvt.c:  Likewise.
157         * recog.c:  Likewise.
158         * reload1.c:  Likewise.
159         * diagnostic.c:  Use expand_location macro.
160         * pretty-print.c (pp_base_format_text):  Likewise.
161         * profile.c:  Likewise.
162         * dwarf2out.c:  Likewise.  Also use expand_location, DECL_IS_BUILTIN.
163         * dwarf2out.c (dwarf2out_decl:  Use BUILTINS_LOCATION.
164         * emit-rtl.c (emit_line_note):  Simplify if USE_MAPPED_LOCATION.
165         (force_next_line_note, insn_emit):  Handle USE_MAPPED_LOCATION case.
166         * final.c (final):  Likewise.
167         * haifa-sched.c:  Likewise.
168         * integrate.c:  Likewise.
169         * jump.c:  Likewise.
170         * rtl-error.c:  Likewise.
171         * stmt.c (check_seenlabel):  Likewise.
172         * tree-pretty-print.c:  Likewise.
173         * gengtype-lex.l:  Temporary kludge to avoid duplicate typedef.
174         * gengtype.c:  Update for now typdefs in input.h.  More kludges.
175         * modulo-sched.c (sms_schedule):  Use NOTE_EXPANDED_LOCATION macro.
176         * ra-debug.c (ra_print_rtl):  Likewise.
177         * sched-rgn.c:  Likewise.
178         * sched-vis.c:  Likewise.
179         * rtl.h (gen_rtx_ASM_OPERANDS):  Redefine if USE_MAPPED_LOCATION.
180         * stmt.c (expand_asm_operands):  Adjust calls to gen_rtx_ASM_OPERANDS.
181         * tree-cfg.c:  Use new macros and typedefs.
182         * tree-flow-inline.h:  Likewise.
183
184 2004-06-30  Richard Sandiford  <rsandifo@redhat.com>
185             Eric Christopher  <echristo@redhat.com>
186
187         * config/mips/3000.md: Improve description.
188
189 2004-06-30  Paul Brook  <paul@codesourcery.com>
190
191         * config/arm/cirrus.md (cirrus_arm_movdi, cirrus_movsf_hard_insn,
192         cirrus_movdf_hard_insn): Set pool ranges for coprocessor loads.
193
194 2004-06-30  Sebastian Pop  <pop@cri.ensmp.fr>
195
196         * Makefile.in (OBJS-common): Add tree-chrec.o.
197         (tree-chrec.o): New rule.
198         (GTFILES): Add tree-chrec.h.
199         * gengtype.c (open_base_files): Add tree-chrec.h.
200         * tree-chrec.c: New file.
201         * tree-chrec.h: New file.
202         * tree.def (SCEV_KNOWN, SCEV_NOT_KNOWN, POLYNOMIAL_CHREC): New nodes.
203
204 2004-06-30  Roger Sayle  <roger@eyesopen.com>
205
206         * combine.c: Include "output.h" to define dump_file.
207         (uid_insn_cost, last_insn_cost): New global variables.
208         (combine_insn_cost): New function to estimate cost of an insn.
209         (combine_validate_cost): New function to determine whether a
210         try_combine replacement sequence is cheaper than the original.
211         (combine_instructions): Allocate and populate uid_insn_cost
212         array at the start of the combine pass, and deallocate it after.
213         (try_combine): Check combine_validate_cost to determine whether
214         a "recombination" should be rejected as being more expensive.
215         * Makefile.in (combine.o): Add dependency upon output.h.
216
217 2004-06-30  Roger Sayle  <roger@eyesopen.com>
218
219         * config/rs6000/rs6000.c (rs6000_rtx_costs) <MINUS_EXPR>: Handle
220         subtractions identically to additions, always COSTS_N_INSNS (1).
221
222 2004-06-30  J"orn Rennecke <joern.rennecke@superh.com>
223
224         * expmed.c (expand_smod_pow2): Fix sign of mask.
225
226 2004-06-29  Diego Novillo  <dnovillo@redhat.com>
227
228         * tree-ssa-pre.c (phi_trans_add): Use is_gimple_min_invariant
229         to check for constants.
230         (set_remove): Likewise.
231         (value_replace_in_set): Likewise.
232         (find_leader): Likewise.
233         * tree-vn.c (set_value_handle): Likewise.
234         (vn_lookup): Likewise.
235         (vn_lookup_or_add): Likewise.
236
237 2004-06-30  Eric Botcazou  <ebotcazou@libertysurf.fr>
238
239         RTL prologue/epilogue for SPARC
240         * config/sparc/sparc-protos.h (sparc_emitting_epilogue): Delete.
241         (sparc_skip_caller_unimp): Likewise.
242         (load_pic_register): Likewise.
243         (leaf_return_peephole_ok): Likewise.
244         (compute_frame_size): Rename into sparc_compute_frame_size.
245         (sparc_expand_prologue): New prototype.
246         (sparc_expand_epilogue): Likewise.
247         (output_return): Likewise.
248         (eligible_for_epilogue_delay): Rename into eligible_for_return_delay.
249         * config/sparc/sparc.h (INITIAL_ELIMINATION_OFFSET): Adjust call to
250         compute_frame_size.  Move comment up.
251         (DELAY_SLOTS_FOR_EPILOGUE): Delete.
252         (ELIGIBLE_FOR_EPILOGUE_DELAY): Likewise.
253         (EPILOGUE_USES): Return true for %g1 if the function uses EH return.
254         * config/sparc/sparc.md (UNSPECV_SAVEW): New constant.
255         (type attribute): Add 'return' and 'savew'.
256         (eligible_for_return_delay): New attribute.
257         (return): New delay_slot.
258         (sibcall_epilogue): Call sparc_expand_epilogue.
259         (prologue): Likewise.  Move up.
260         (save_register_window): New expander.
261         (save_register_windowsi): New pattern.
262         (save_register_windowdi): Likewise.
263         (epilogue): New expander.
264         (return_internal): New pattern.
265         (Return peepholes): Delete.
266         * config/sparc/sparc.c (SIBCALL_SLOT_EMPTY_P): New macro.
267         (sparc_emitting_epilogue): Delete.
268         (sparc_skip_caller_unimp): Likewise.
269         (sparc_sr_alias_set): New global variable.
270         (frame_base_name): Delete.
271         (frame_base_reg): New global variable.
272         (sparc_override_options): Get new alias set for save/restore.
273         (leaf_return_peephole_ok): Delete.
274         (eligible_for_epilogue_delay): Rename into eligible_for_return_delay.
275         Factor out code into eligible_for_restore_insn_delay.
276         (eligible_for_restore_insn_delay): New function extraced from above.
277         Use IN_UNCOND_BRANCH_DELAY_TRUE instead of IN_BRANCH_DELAY_TRUE.
278         (eligible_for_sibcall_delay): Use SIBCALL_SLOT_EMPTY_P.
279         Factor out code into eligible_for_restore_insn_delay.
280         (load_pic_register): Make static.  Remove check.
281         (save_regs): Delete.
282         (restore_regs): Likewise.
283         (compute_frame_size): Rename into sparc_compute_frame_size.
284         Rename leaf_function into leaf_function_p.
285         (build_big_number): Delete.
286         (save_or_restore_regs): New function.
287         (emit_save_regs): Likewise.
288         (emit_restore_regs): Likewise.
289         (emit_stack_pointer_increment ): Likewise.
290         (emit_stack_pointer_decrement): Likewise.
291         (sparc_expand_prologue): Likewise.
292         (sparc_function_prologue): Rename into sparc_asm_function_prologue.
293         Remove all code to emit instructions.
294         (sparc_expand_epilogue): New function.
295         (sparc_function_epilogue): Rename into sparc_asm_function_epilogue.
296         Remove all code to emit instructions.
297         (output_restore): New function.
298         (output_return): Likewise.
299         (output_sibcall): Factor out code into output_restore.
300         (print_operand): Adjust for frame_base_reg.
301         * target.h (struct gcc_target): New field 'late_rtl_prologue_epilogue'.
302         * target-def.h (TARGET_LATE_RTL_PROLOGUE_EPILOGUE): New define.
303         (TARGET_INITIALIZER): Add it.
304         * passes.c (rest_of_compilation): Set the conditional predicate
305         'current_function_uses_only_leaf_regs' before sched2.  If target
306         has 'late_rtl_prologue_epilogue', emit RTL prologue/epilogue right
307         before sched2.
308         * reorg.c (return_insn_p): New predicate.
309         (find_end_label): Use it.
310         (relax_delay_slots): Do not thread an unconditional jump that points
311         to the end return label.
312         * doc/tm.texi (Registers) <Leaf Functions>: Clarify the validity
313         domain of 'current_function_uses_only_leaf_regs'.
314         (Stack and Calling) <Function Entry>: Document new target hook
315         TARGET_LATE_RTL_PROLOGUE_EPILOGUE.
316
317 2004-06-30  Jakub Jelinek  <jakub@redhat.com>
318
319         * simplify-rtx.c (simplify_binary_operation): Simplify
320         ((A & N) + B) & M -> (A + B) & M if M is pow2 minus 1 constant and
321         N has at least all bits in M set as well.
322
323         PR tree-optimization/15310
324         * expr.c (expand_assignment): Optimize += or -= on a bit field in
325         most significant bits.
326
327 2004-06-30  Steven Bosscher  <stevenb@suse.de>
328
329         * config/c4x/c4x.md: Fix comment.
330
331 2004-06-30  Akos Kiss  <akiss@inf.u-szeged.hu>
332
333         * arm.md (cond_return_inverted): Add "length" attribute.
334
335 2004-06-29  Per Bothner  <per@bothner.com>
336
337         * config/i386/winnt.c (i386_pe_encode_section_info):  Smash rtlname's
338         XSTR in place, so we don't lose SYMBOL_REF_DECL info.
339
340 2004-06-29  Zack Weinberg  <zack@codesourcery.com>
341
342         * config/ia64/hpux.h: Target does too support thread-local storage.
343
344 2004-06-29  Zack Weinberg  <zack@codesourcery.com>
345
346         * combine.c (distribute_notes): Don't look at global_regs for
347         pseudos.
348
349 2004-06-29  Richard Henderson  <rth@redhat.com>
350
351         * gimplify.c (gimplify_modify_expr_rhs): Move immediately before
352         gimplify_modify_expr.
353         (gimplify_init_constructor): Likewise.  Gimplify the null
354         CONSTRUCTOR assignment.
355         (gimplify_modify_expr_to_memcpy): New.
356         (gimplify_modify_expr_to_memset): New.
357         (gimplify_modify_expr): Use them.
358
359 2004-06-29  Roman Zippel <zippel@linux-m68k.org>
360
361         * web.c (union_defs): use all defs of an instruction to create a
362         union with a read/write use
363
364 2004-06-29  Richard Henderson  <rth@redhat.com>
365
366         PR middle-end/16216
367         * builtins.c (gimplify_va_arg_expr): Check for valist being
368         an error_mark_node.
369
370 2004-06-29  Jakub Jelinek  <jakub@redhat.com>
371
372         PR target/16195
373         * config/rs6000/rs6000.c (rs6000_conditional_register_usage): Make
374         r30 fixed if TARGET_TOC && TARGET_MINIMAL_TOC.
375         (first_reg_to_save): Pretend call_used_regs[30] is 0 if
376         TARGET_TOC && TARGET_MINIMAL_TOC.
377         (rs6000_emit_prologue, rs6000_emit_epilogue): Likewise.
378
379 2004-06-29  J"orn Rennecke <joern.rennecke@superh.com>
380
381         Fix gcc.dg/builtin-apply2.c failures:
382         * sh.h (TARGET_VARARGS_PRETEND_ARGS): Define.
383         * sh.c (extra_push): Delete.
384         (sh_expand_prologue): Don't do extra stack adjustment for
385         current_function_pretend_args_size if it comes from varargs setup.
386         Use TARGET_VARARGS_PRETEND_ARGS.  Don't set extra_push.
387         (sh_expand_epilogue): Don't use extra_push.
388         (sh_setup_incoming_varargs): Set pretend_arg_size when necessary.
389
390 2004-06-29  Roger Sayle  <roger@eyesopen.com>
391
392         * expmed.c (expand_smod_pow2): Provide alternate implementations
393         that avoid conditional jumps, and choose between them based upon
394         the target's rtx_costs.
395
396 2004-06-29  Andrew Pinski  <apinski@apple.com>
397
398         * tree-sra.c: Include expr.h for definition of MOVE_RATIO.
399         * Makefile.in (tree-sra.c): Update dependencies.
400
401 2004-06-29  Richard Henderson  <rth@redhat.com>
402
403         * tree-sra.c: Rewrite from scratch.  Handle nested aggregates.
404
405 2004-06-29  Nathan Sidwell  <nathan@codesourcery.com>
406
407         * vec.h (VEC_T_safe_push, VEC_T_safe_insert): Tweak for when
408         size_t is bigger than int.
409
410 2004-06-29  Paul Brook  <paul@codesourcery.com>
411
412         * target-def.h (TARGET_CXX_GET_COOKIE_SIZE,
413         TARGET_CXX_COOKIE_HAS_SIZE): Define.
414         (TARGET_CXX): Use them.
415         * target.h (struct gcc_target): Add cxx.get_cookie_size and
416         cxx.cookie_has_size.
417         * targhooks.c (default_cxx_get_cookie_size): New fucntion.
418         * targhooks.h (default_cxx_get_cookie_size): Add prototype.
419         * config/arm/arm.c (TARGET_CXX_GET_COOKIE_SIZE,
420         TARGET_CXX_COOKIE_HAS_SIZE): Define.
421         (arm_get_cookie_size, arm_cookie_has_size): New functions.
422         * Make-lang.in (cp/init.o): Add dependency on $(TARGET_H).
423         * doc/tm.texi: Document TARGET_CXX_GET_COOKIE_SIZE and
424         TARGET_CXX_COOKIE_HAS_SIZE.
425
426 2004-06-29  J"orn Rennecke <joern.rennecke@superh.com>
427
428         * cfglayout.c (fixup_reorder_chain): Don't do anything for
429         e_fall->dest == EXIT_BLOCK_PTR.
430
431 2004-06-28  Richard Henderson  <rth@redhat.com>
432
433         * tree-cfg.c (verify_stmt): Add last_in_block parameter.  Verify
434         that eh stmts can throw.
435         (verify_stmts): Update verify_stmt call.
436         (tree_purge_dead_eh_edges, tree_purge_all_dead_eh_edges): New.
437         * tree-eh.c (remove_stmt_from_eh_region): New.
438         (lower_eh_constructs): Fix throw_stmt_table delete routine.
439         (tree_could_trap_p): Match may_trap_p.
440         (maybe_clean_eh_stmt): New.
441         * tree-flow.h: Update decls.
442         * tree-ssa-ccp.c (pass_ccp): Add TODO_verify_stmts.
443         (substitute_and_fold): Clean eh edges.
444         * tree-ssa-dce.c (mark_control_dependent_edges_necessary): Handle
445         empty basic blocks.
446         * tree-ssa-dom.c (need_eh_cleanup): New.
447         (tree_ssa_dominator_optimize): Allocate it.  Cleanup eh edges.
448         (optimize_stmt): Cleanup eh stmts; set need_eh_cleanup.
449
450 2004-06-29  Alan Modra  <amodra@bigpond.net.au>
451
452         * function.c (assign_parms): Don't abort with zero size stack
453         parm failing the PARM_BOUNDARY check.
454
455 2004-06-28  Diego Novillo  <dnovillo@redhat.com>
456
457         * common.opt (ftree-fre): New flag.
458         * flags.h (flag_tree_fre): Declare.
459         * opts.c (decode_options): Set.
460         * timevar.def (TV_TREE_FRE): Define.
461         * tree-flow-inline.h (may_propagate_copy): Re-arrange for
462         readability.  Handle destinations that are not SSA_NAMEs.
463         * tree-flow.h (struct ptr_info_def): Move from tree.h
464         (cprop_into_stmt, cprop_into_successor_phis): Remove.
465         (vn_compute, vn_lookup_or_add, vn_add, vn_lookup): Add
466         vuse_optype parameter.
467         * tree-pass.h (pass_fre): Declare.
468         * tree-ssa-copy.c (cprop_operand): Move to tree-ssa-dom.c
469         (cprop_into_stmt): Likewise.
470         (cprop_into_successor_phis): Likewise.
471         * tree-ssa-dom.c (eliminate_redundant_computations): Fix
472         argument ordering in call to may_propagate_copy.
473         * tree-ssa-pre.c (is_undefined_value): Assume hard registers
474         to be always defined.
475         (add_to_sets): New local function.
476         (create_value_expr_from): New local function.
477         (compute_avail): Call them.
478         (eliminate): Don't ignore statements with virtual operands.
479         (init_pre): New local function.
480         (fini_pre): New local function.
481         (execute_pre): Call them.
482         Add argument DO_FRE.  Don't do insertion if DO_FRE is true.
483         (do_pre): New function.
484         (do_fre): New function.
485         (gate_fre): New function.
486         (pass_fre): Declare.
487         * tree-ssa.c (init_tree_ssa): Don't call vn_init.
488         (delete_tree_ssa): Don't call vn_delete.
489         * tree-vn.c (val_expr_pair_d): Add documentation.
490         (vn_compute): Add VUSES argument to incorporate in computing
491         hash values.  Update all callers.
492         (expressions_equal_p): Call operand_equal_p with
493         OEP_PURE_SAME.
494         (vn_add): Add VUSES argument.  Update all callers.
495         (vn_lookup): Likewise.
496         (vn_lookup_or_add): Likewise.
497         * doc/invoke.texi: Document -ftree-fre and -fdump-tree-fre.
498
499 2004-06-28  Steven Bosscher  <stevenb@suse.de>
500
501         * config/m32r/m32r.c (m32r_sched_odd_word_p, m32r_adjust_cost,
502         m32r_sched_init, m32r_sched_reorder, m32r_variable_issue): Remove.
503         (TARGET_SCHED_ADJUST_COST, TARGET_SCHED_VARIABLE_ISSUE,
504         TARGET_SCHED_INIT, TARGET_SCHED_REORDER): Don't define.
505         * config/m32r/m32r.md: Rewrite the pipeline description as a DFA.
506
507 2004-06-28  Richard Henderson  <rth@redhat.com>
508
509         * tree.def (REALPART_EXPR, IMAGPART_EXPR): Change class to 'r'.
510         * fold-const.c (operand_equal_p <case 'r'>): Add REALPART_EXPR,
511         IMAGPART_EXPR.
512         * tree-dump.c (dequeue_and_dump): Handle REALPART_EXPR and
513         IMAGPART_EXPR explicitly.
514         * tree-inline.c (estimate_num_insns_1): Don't handle REALPART_EXPR
515         and IMAGPART_EXPR specially.
516         * tree.c (build1_stat): Copy TREE_THIS_VOLATILE into class 'r'.
517
518 2004-06-28  J"orn Rennecke <joern.rennecke@superh.com>
519
520         * config.gcc (sh*-*elf*): Remove dead assignment of sh_multilibs.
521
522 2004-06-28  Joseph S. Myers  <jsm@polyomino.org.uk>
523
524         * builtins.def (execl, execlp, execle, execv, execvp, execve,
525         fork): Change to DEF_EXT_LIB_BUILTIN.
526
527 2004-06-28  Roger Sayle  <roger@eyesopen.com>
528
529         * expmed.c (expand_smod_pow2): New function to expand signed
530         remainder by a constant power of 2, such as "x % 16".
531         (expand_divmod): Call new expand_smod_pow2 when appropriate.
532         Minor corrections to comments, e.g. wrapping long lines.
533
534 2004-06-28  Ulrich Weigand  <uweigand@de.ibm.com>
535
536         * Makefile.in (vec.o): Fix dependencies.
537
538 2004-06-28  Andreas Tobler <a.tobler@schweiz.ch>
539
540         * Makefile.in: Fix parallel make dependency problem on vec.o.
541
542 2004-06-28  Dhananjay Deshpande  <dhananjayd@kpitcummins.com>
543
544         PR target/14041
545         * config/h8300/h8300.h (ASM_OUTPUT_ALIGNED_BSS): Define.
546
547 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
548
549         * tree.h (tree_check_failed): Make varadic.
550         (tree_not_check_failed): New prototype.
551         (tree_check2_failed, tree_check3_failed,
552         tree_check4_failed, tree_check5_failed): Remove.
553         (TREE_CHECK, TREE_CHECK2, TREE_CHECK3, TREE_CHECK4,
554         TREE_CHECK5): Adjust.
555         (TREE_NOT_CHECK, TREE_NOT_CHECK2, TREE_NOT_CHECK3, TREE_NOT_CHECK4,
556         TREE_NOT_CHECK5): New.
557         (TREE_VEC_ELT_CHECK, PHI_NODE_ELT_CHECK, TREE_OPERAND_CHECK_CODE,
558         TREE_RTL_OPERAND_CHECK): Adjust.
559         * tree.c (tree_check_failed): Make varadic.
560         (tree_not_check_failed): New.
561         (tree_check2_failed, tree_check3_failed,
562         tree_check4_failed, tree_check5_failed): Remove.
563
564 2004-06-28  Ulrich Weigand  <uweigand@de.ibm.com>
565
566         * combine.c (can_combine_p): Do not prevent building insns that use
567         and clobber the same fixed hard register.
568         (reg_dead_at_p): Likewise.
569
570 2004-06-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
571
572         * tree-sra.c (is_sra_candidate_ref): Remove second arg; all callers
573         changed.
574         (is_sra_candidate_complex_ref): New function.
575         (scalarize_modify_expr): Call it and check for LHS also.
576
577         * tree-pretty-print.c (dump_function_declaration): New.
578         (dump_generic_node, case FUNCTION_TYPE): Call it.
579         (dump_generic_node, case RECORD_TYPE): Don't output dup semicolon.
580         (dump_generic_node, case DECL_EXPR): New case.
581         (dump_generic_node, case PLACEHOLDER_EXPR): Handle.
582         (print_declaration): Handle type and function declarations.
583
584         * tree-nested.c (create_tmp_var_for): Allow ARRAY_TYPE.
585         (convert_nonlocal_reference, convert_local_reference): Properly
586         convert nest of handled component references.
587
588 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
589
590         * vec.h, vec.c: New, type safe vector API.
591         * Makefile.in (OBJS-common): Add vec.o.
592         (vec.o): New target.
593         (gengtype-lex.o): Depend on vec.h.
594
595 2004-06-28  Paolo Bonzini  <bonzini@gnu.org>
596
597         * fold-const.c (fold_cond_expr_with_comparison): Add ARG1
598         parameter.  Use it instead of ARG00 to produce the result.
599
600 2004-06-28  Alexandre Oliva  <aoliva@redhat.com>
601
602         * config/mn10300/mn10300-protos.h (legitimate_address_p): Declare.
603         * config/mn10300/mn10300.c (legitimate_address_p): New.  Test that
604         index is legitimate, compared with code moved from...
605         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): here.
606         (REG_STRICT): Define, according to REG_OK_STRICT.
607         (REGNO_IN_RANGE_P, REGNO_DATA_P, REGNO_ADDRESS_P, REGNO_SP_P,
608         REGNO_EXTENDED_P, REGNO_AM33_P, REGNO_FP_P): Introduce strict
609         argument.
610         (REGNO_STRICT_OK_FOR_BASE_P, REGNO_STRICT_OK_FOR_BIT_BASE_P,
611         REGNO_STRICT_OK_FOR_INDEX_P): New.
612         (REGNO_OK_FOR_BASE_P, REG_OK_FOR_BASE_P, REGNO_OK_FOR_BIT_BASE_P,
613         REG_OK_FOR_BIT_BASE_P, REGNO_OK_FOR_INDEX_P, REG_OK_FOR_INDEX_P,
614         RTX_OK_FOR_BASE_P): Use them.
615
616 2004-06-28  Ben Elliston  <bje@au.ibm.com>
617
618         * doc/cfg.texi (Basic Blocks): Define dominators.
619
620 2004-06-27  Andrew Pinski  <pinskia@physics.uc.edu>
621
622         PR c++/16205
623         * c-common.c (warn_for_collisions_1): Warn for only decls which
624         have a name.
625
626         PR c++/15145
627         * c.opt (Wsequence-point): Enable for C++ and ObjC++.
628
629         PR c/14963
630         * c-decl.c (start_decl): Check for null types.
631
632 2004-06-27  David Edelsohn  <edelsohn@gnu.org>
633
634         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
635         Accept TOC addresses.
636
637 2004-06-27  Ulrich Weigand  <uweigand@de.ibm.com>
638
639         * config/s390/s390-protos.h (s390_load_got): Update prototype.
640         * config/s390/s390.c (struct machine_function): Add member base_reg.
641         (s390_decompose_address): Accept UNSPEC_LTREF.  Simplify logic.
642         (s390_split_branches): Annotate late pool references.
643         (annotate_constant_pool_refs): New function.
644         (find_constant_pool_ref): Work on annotated pool references.
645         (replace_constant_pool_ref): Likewise.  Use explicit base.
646         (replace_ltrel_base): Use explicit base.
647         (s390_mainpool_start): Reflect main_pool pattern change.
648         (s390_mainpool_finish): Use base register from main_pool.
649         Update calls to replace_ltrel_base and replace_constant_pool_ref.
650         (s390_chunkify_start): Use base_reg from struct machine_function.
651         (s390_chunkify_finish): Remove base_reg argument.  Update calls
652         to replace_ltrel_base and replace_constant_pool_ref.
653         (s390_reorg): Don't decide upon base register.  Update calls.
654         (s390_load_got): Remove MAYBE_DEAD handling.  Do not emit insns
655         but return sequence instead.
656         (s390_emit_prologue): Decide upon base register to use.  Annotate
657         all literal pool references.  Adapt to main_pool pattern change.
658         Update s390_load_got call; move MAYBE_DEAD handling here.
659         (s390_emit_epilogue): Annotate late literal pool references.
660         Remove barrier before register restore instruction.
661         * config/s390/s390.md (UNSPEC_LTREF): New constant.
662         ("builtin_setjmp_receiver"): Update s390_load_got call.
663         ("main_pool"): Explicitly reference base register.
664
665 2004-06-27  Roger Sayle  <roger@eyesopen.com>
666
667         * fold-const.c (fold) <BIT_IOR_EXPR>: Optimize ~X|X and X|~X as -1.
668         <BIT_XOR_EXPR>: Optimize ~X|X and X|~X as -1.
669         <BIT_AND_EXPR>: Optimize ~X&X and X&~X as 0.
670         <TRUTH_AND_EXPR, TRUTH_ANDIF_EXPR>: Optimize !X&&X and X&&!X as false.
671         <TRUTH_OR_EXPR, TRUTH_ORIF_EXPR>: Optimize !X||X and !X||X as true.
672         <TRUTH_XOR_EXPR>: Optimize !X^X and X^X! as true.  Now that
673         TRUTH_XOR_EXPR is a commutative tree code, don't test whether arg0
674         is a constant.
675
676 2004-06-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
677
678         * c-common.c (c_safe_from_p, c_walk_subtrees): Deleted.
679         * c-common.def (DECL_STMT): Remove.
680         * c-common.h (DECL_STMT_DECL): Deleted.
681         (COMPOUNT_LITERAL_EXPR_DECL): Use DECL_EXPR_DECL.
682         (c_safe_from_p, c_walk_subtrees): Deleted.
683         * c-decl.c, c-parse.in, c-pretty-print.c: DECL_STMT now DECL_EXPR.
684         * c-dump.c (c_dump_tree, case DECL_STMT): Deleted.
685         * c-gimplify.c (gimplify_decl_stmt): Deleted.
686         (gimplify_compound_literal_expr): Use DECL_EXPR_DECL
687         and gimplify_and_add.
688         (c_gimplify_expr, case DECL_EXPR): New case.
689         (c_gimplify_expr, case DECL_STMT): Deleted.
690         * c-lang.c (LANG_HOOKS_SAFE_FROM_P): Likewise.
691         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
692         * expr.c (safe_from_p, case 's'): New case.
693         * gimplify.c (gimplify_decl_expr): New function.
694         (gimplify_expr, case DECL_EXPR): New case.
695         * tree-inline.c (walk_tree): Walk into all fields of a type and
696         decl only if they are in a DECL_EXPR.
697         (mark_local_for_remap_r): Minor code cleanup.
698         * tree-outof-ssa.c (discover_nonconstant_array_refs_r): Add else.
699         * tree.c (has_cleanups, case DECL_EXPR): New case.
700         * tree.def (DECL_EXPR): New code.
701         * tree.h (DECL_EXPR_DECL): New macro.
702
703         * objc/objc-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.
704
705 2004-06-26  Andrew Pinski  <pinskia@physics.uc.edu>
706
707         PR 13334
708         * doc/install.texi: Document non-standard CFLAGS and bootstrap
709         failures and warnings.
710
711 2004-06-26  Andrew Haley  <aph@redhat.com>
712
713         * emit-rtl.c (set_mem_attributes_minus_bitpos): Check
714         TREE_THIS_NOTRAP when setting MEM_NOTRAP_P.
715         * tree-eh.c (tree_could_trap_p): Check TREE_THIS_NOTRAP.
716         * tree.h (TREE_THIS_NOTRAP): New.
717
718 2004-06-26  Kaz Kojima  <kkojima@gcc.gnu.org>
719
720         * genattrtab.c (write_test_expr): Put a unsigned cast before
721         the first operand for GEU, GTU, LEU and LTU.
722
723 2004-06-26  Kazu Hirata  <kazu@cs.umass.edu>
724
725         * c-typeck.c, cfgexpand.c, ddg.c, ddg.h, df.c, fold-const.c,
726         gcov.c, gimplify.c, modulo-sched.c, passes.c, tree-cfg.c,
727         tree-mudflap.c, tree-nrv.c, tree-outof-ssa.c, tree-ssa-dom.c,
728         tree-ssa-dse.c, tree-ssa-operands.c, tree-ssa-pre.c,
729         tree-tailcall.c: Fix comment typos.  Follow spelling
730         conventions.
731
732 2004-06-25  Eric Christopher  <echristo@redhat.com>
733
734         * config/mips/mips.md: Add back scheduling exclusion info.
735
736 2004-06-25  Roger Sayle  <roger@eyesopen.com>
737
738         * ifcvt.c (seq_contains_jump): Delete function.
739         (end_ifcvt_sequence): Replace call to seq_contains_jump with an
740         inline test for a jump instruction in the existing "insn" loop.
741         (block_fallthru): Document function.
742
743 2004-06-25  Philip Blundell  <philb@gnu.org>
744
745         PR wrong-code/15089
746         * loop.c (scan_loop): Do not move user-specified register
747         assignments.
748
749 2004-06-25  DJ Delorie  <dj@redhat.com>
750
751         * c-common.h (warn_cast_qual, warn_missing_format_attribute,
752         warn_pointer_arith, warn_missing_prototypes, warn_parentheses,
753         warn_missing_braces, warn_sign_compare, warn_long_long,
754         warn_redundant_decls, warn_float_equal, warn_char_subscripts,
755         warn_conversion, warn_format_y2k, warn_format_extra_args,
756         warn_format_zero_length, warn_format_nonliteral,
757         warn_format_security, mesg_implicit_function_declaration,
758         warn_bad_function_cast, warn_traditional,
759         warn_declaration_after_statement, warn_strict_prototypes,
760         warn_missing_declarations, warn_nested_externs,
761         warn_sequence_point, warn_init_self, warn_div_by_zero,
762         warn_implicit_int, warn_nonnull, warn_old_style_definition,
763         warn_selector, warn_undeclared_selector, warn_protocol,
764         warn_abi, warn_invalid_offsetof, warn_ctor_dtor_privacy,
765         warn_overloaded_virtual, warn_nonvdtor, warn_reorder,
766         warn_synth, warn_pmf2ptr, warn_ecpp, warn_sign_promo,
767         warn_old_style_cast, warn_nontemplate_friend,
768         warn_deprecated): Remove explicit declarations.
769         * c-common.c: Likewise, remove explicit definitions.
770         * c-opts.c: Likewise, remove explicit assignments.
771         * c.opts: Likewise, add implicit declare/define/assign.
772
773 2004-06-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
774
775         * gimplify.c (lookup_tmp_var): Set TREE_READONLY in is_formal case.
776         (build_addr_expr_with_type): Deleted.
777         (build_addr_expr): Deleted; callers changed to build_fold_addr_expr.
778         (gimplify_compound_lval): Make two passes over reference nest.
779
780         * tree-nested.c (build_addr): Merge real/imagpart with
781         handled_component_p.
782         (convert_nonlocal_reference, convert_local_reference): Process extra
783         args to COMPONENT_REF and ARRAY_REF.
784         * tree-outof-ssa.c (discover_nonconstant_array_refs_r): Check for
785         lower bound and field offset being constant.
786
787 2004-06-25  Mark Mitchell  <mark@codesourcery.com>
788
789         PR wrong-code/16129
790         * alias.c (get_alias_set): Adjust setting of
791         DECL_POINTER_ALIAS_SET for pointers to aggregates.
792
793 2004-06-24  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
794
795         * tree-inline.c (remap_type): Arrange to have just one pointer type
796         for each type, mode, and 'can alias' value.
797         (setup_one_parameter): Remap type when making VAR_DECL for PARM_DECL.
798         (estimate_num_insns_1): Minor code reformatting.
799         (inline_forbidden_p_1): Likewise; add; missing return statement.
800
801 2004-06-25  Roger Sayle  <roger@eyesopen.com>
802
803         PR middle-end/15825
804         * ifcvt.c (unshare_ifcvt_sequence): Rename to end_ifcvt_sequence.
805         Use get_isns and end_sequence instead of accepting a seq argument.
806         Scan the instruction sequence for unrecognizable or jump insns.
807         (noce_try_move, noce_try_store_flag, noce_try_store_flag_constants,
808         noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove,
809         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
810         noce_try_sign_mask): Use end_ifcvt_sequence to factor common code.
811
812 2004-06-24  Jeff Law  <law@redhat.com>
813
814         * gimplify.c (gimplify_compound_lval): Reset TREE_SIDE_EFFECTS
815         after gimplifying the innermost component.
816
817 2004-06-25  Richard Sandiford  <rsandifo@redhat.com>
818
819         PR target/16176
820         * config/mips/mips.c (mips_expand_unaligned_load): Use a temporary
821         register for the destination of the lwl or ldl.
822
823 2004-06-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
824
825         * tree-dfa.c (get_virtual_var): Merge real/imaginary parts with
826         handled_component_p handling.
827         * tree-gimple.c (get_base_address): Likewise and fix typo that
828         caused both recursion and looping.
829
830         * tree-cfg.c (verify_expr): Add macro CHECK_OK.
831         Properly test for nest of handled_components in LHS context.
832
833 2004-06-25  Devang Patel  <dpatel@apple.com>
834
835         * doc/tree-ssa.texi: Document info about MODIFY_EXPR's type
836
837 2004-06-25  Paul Brook  <paul@codesourcery.com>
838
839         * target-def.h (TARGET_CXX_GUARD_TYPE, TARGET_CXX_GUARD_MASK_BIT,
840         TARGET_CXX): Define.
841         (TARGET_INITIALIZER): Use TARGET_CXX.
842         * target.h (struct gcc_target): Add struct cxx.
843         * targhooks.h (default_cxx_guard_type): Add prototype.
844         * targhooks.c (default_cxx_guard_type): New function.
845         * config/arm/arm.c (TARGET_CXX_GUARD_TYPE, TARGET_CXX_GUARD_MASK_BIT):
846         Define.
847         (arm_cxx_guard_type, arm_cxx_guard_mask_bit): New functions.
848         * doc/tm.texi: Document TARGET_CXX_GUARD_TYPE and
849         TARGET_CXX_GUARD_MASK_BIT.
850
851 2004-06-25  Devang Patel  <dpatel@apple.com>
852
853         * config/rs6000/darwin.h (CC1_SPEC): Handle -gused and -gfull.
854         * config/i386/darwin.h (CC1_SPEC): Same.
855
856 2004-06-25  Mark G. Adams  <mark.g.adams@sympatico.ca>
857
858         * dbxout.h: Add include guards
859
860 2004-06-25  Paul Brook  <paul@codesourcery.com>
861
862         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_EABI__.
863
864 2004-06-25  Richard Earnshaw  <rearnsha@arm.com>
865
866         * arm.c (arm_arch4t): New variable.
867         (arm_override_options): Initialize it.  If compiling for armv5 or
868         higher clear TARGET_INTERWORK.
869         (output_call): Abort if called for armv5.  Use BX if it's available.
870         (output_call_mem): Use BLX if available and ensure that all armv5
871         code is interworking safe.
872         (output_return_instruction): Always use BX in preference to MOV if
873         it's available.
874         (arm_output_epilogue): Likewise.
875         (arm_final_prescan_insn): Never conditionally call a subroutine
876         on armv5.
877         * arm.h (arm_arch4t): Declare.
878         * arm.md (call_reg_armv5, call_value_reg_armv5): New.
879         (call_reg_arm, call_value_reg_arm): Renamed from call_reg and
880         call_value_reg respectively.
881         (call_reg_thumb_v5, call_value_reg_thumb_v5): New.
882         (call_reg_thumb, call_value_reg_thumb): Renamed from call_indirect
883         and call_value_indirect respectively.
884
885 2004-06-25  Richard Sandiford  <rsandifo@redhat.com>
886
887         * config/mips/mips.c (reg_or_const_float_1_operand): Reimplement
888         in terms of const_float_1_operand.
889
890 2004-06-25  Richard Sandiford  <rsandifo@redhat.com>
891
892         PR target/16144
893         * config/mips/mips.md (divsf, divdf): Don't FAIL if the first operand
894         is 1.0; force it into a register instead.
895
896 2004-06-25  Bernardo Innocenti  <bernie@develer.com>
897
898         * config/m68k/m68k.h: Restore valid comment removed by mistake with
899         the recent m68k comments cleanup.
900
901 2004-06-24  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
902
903         * c-gimplify.c (gimplify_for_stmt): Use gimplify_and_add.
904         * gimplify.c (internal_get_tmp_var, gimplify_return_expr): Likewise.
905         (gimplify_loop_expr, gimplify_init_constructor): Likewise.
906         (gimplify_self_mod_expr, gimplify_cond_expr): Likewise.
907
908         PR/16131
909         * gimplify.c (voidify_wrapper_expr): Allow TARGET_EXPR.
910
911         * gimplify.c: Remove unneeded forward declarations.
912
913         * gimplify.c (append_to_compound_expr): Deleted.
914         * tree-gimple.h (append_to_compound_expr): Deleted.
915
916         * fold-const.c (fold_addr_expr_with_type): Look through all
917         valid LHS modifiers to find a base to mark addressable.
918
919         * tree.h (debug_find_tree): Add declaration.
920         * tree-inline.c (debug_find_tree): Remove extern declaration.
921
922 2004-06-24  Eric Christopher  <echristo@redhat.com>
923
924         * config/rs6000/rs6000.md: Apply change mistakenly
925         deleted with 2004-06-22 patch.
926
927 2004-06-24  Richard Henderson  <rth@redhat.com>
928
929         * c-decl.c (c_in_iteration_stmt, c_in_case_stmt): Remove.
930         (c_break_label, c_cont_label): New.
931         (start_function): Update initializations.
932         (c_push_function_context): Update saves.
933         (c_pop_function_context): Update restores.
934         * c-parse.in: Update expected conflicts.
935         (stmt_count, compstmt_count): Remove.  Remove all updates.
936         (if_prefix, simple_if, do_stmt_start): Remove.
937         (lineno_labeled_stmt): Remove.
938         (lineno_labels): New.
939         (c99_block_lineno_labeled_stmt): Use it.
940         (lineno_stmt, lineno_label): Don't clear EXPR_LOCUS before calling
941         annotate_with_locus.
942         (select_or_iter_stmt): Replace by ...
943         (condition, if_statement_1, if_statement_2, if_statement,
944         start_break, start_continue, while_statement, do_statement,
945         for_cond_expr, for_incr_expr, for_statement, switch_statement): New.
946         (stmt): Split out ...
947         (stmt_nocomp): ... this.  Use c_finish_bc_stmt, c_finish_goto_label,
948         c_finish_goto_ptr.
949         * c-semantics.c (add_stmt): Don't add line numbers to labels.
950         * c-tree.h: Update prototypes.
951         (struct language_function): Remove x_in_iteration_stmt, x_in_case_stmt;
952         add x_break_label, x_cont_label, x_switch_stack.
953         (c_switch_stack): Declare.
954         * c-typeck.c (c_finish_goto_label, c_finish_goto_ptr): New.
955         (c_finish_return): Return the statement.
956         (c_switch_stack): Rename from switch_stack; export.
957         (if_elt, if_stack, if_stack_space, if_stack_pointer): Remove.
958         (c_begin_if_stmt, c_finish_if_cond, c_finish_then, c_begin_else,
959         c_finish_else): Remove.
960         (c_finish_if_stmt): Rewrite to perform the entire operation.
961         (c_begin_while_stmt, c_finish_while_stmt_cond, c_finish_while_stmt,
962         c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond,
963         c_finish_for_stmt_incr, c_finish_for_stmt): Remove.
964         (c_finish_loop): New.
965         (c_finish_bc_stmt): New.
966         (c_finish_expr_stmt): Return the statement.  Split out...
967         (c_process_expr_stmt): ... this.  Don't add locus to error marks.
968         * gimplify.c (gimplify_cond_expr): Accept NULL type statements.
969         * tree-gimple.c (is_gimple_stmt): Likewise.
970         * tree-pretty-print.c (dump_generic_node <COND_EXPR>): Likewise.
971         (print_struct_decl): Delete empty compound statement.
972         * objc/objc-act.c (objc_build_throw_stmt): Return the statement.
973         * objc/objc-act.h: Update decl.
974
975 2004-06-24  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
976
977         * tree-pretty-print.c (dump_generic_node, case TYPE_DECL):
978         Don't look at TYPE_METHODS unless RECORD_TYPE or UNION_TYPE.
979
980 2004-06-24  Andrew Pinski  <apinski@apple.com>
981
982         * objc-act.c (build_objc_method_call): Save the lookup_object
983         so we do not call it twice.
984
985 2004-06-24  Richard Henderson  <rth@redhat.com>
986
987         * tree-ssa-dom.c (real_avail_expr_hash): New.
988         (tree_ssa_dominator_optimize): Use it in the htab.
989
990 2004-06-24  Frank Ch. Eigler  <fche@redhat.com>
991
992         * tree-mudflap.c (mx_register_decls): Add third (type) argument
993         to synthesized __mf_unregister call.
994
995 2004-06-24  Roger Sayle  <roger@eyesopen.com>
996
997         PR middle-end/15239
998         * expmed.c (expand_mult): Remove artificial restriction on the
999         maximum cost of a synthetic multiplication sequence.
1000
1001 2004-06-24  Eric Christopher  <echristo@redhat.com>
1002
1003         * combine.c (distribute_notes): Don't delete sets to
1004         global register variables.
1005
1006 2004-06-24  Jakub Jelinek  <jakub@redhat.com>
1007
1008         * config/i386/i386.md (ffsdi2, clzdi2): New expanders.
1009         (ffs_rex64): New splitter.
1010         (ffsdi_1, ctzdi2, bsr_rex64): New instructions.
1011
1012 2004-06-24  Andrew Pinski  <apinski@apple.com>
1013
1014         * config/darwin7.h (MATH_LIBRARY): Remove.
1015         (LIB_SPEC): Define.
1016         * config/darwin.h (MATH_LIBRARY): Define always to empty.
1017         (LIB_SPEC): Only define if not already defined.
1018
1019 2004-06-24  Revital Eres  <eres@il.ibm.com>
1020
1021         * loop-iv.c (iv_analyze, simple_set_p): Support for identifying
1022         shifts of induction variable.
1023         (iv_shift): New function.
1024
1025 2004-06-24  Richard Henderson  <rth@redhat.com>
1026
1027         * gimplify.c (gimplify_body): Watch for body vanishing.
1028
1029 2004-06-24  Jeff Law  <law@redhat.com>
1030
1031         * tree-ssa-dom.c (record_dominating_conditions): New function.
1032         (dom_opt_finalize_block, get_eq_expr_value): Use it.
1033
1034 2004-06-24  Richard Sandiford  <rsandifo@redhat.com>
1035
1036         * calls.c (shift_returned_value): Fix handling of non-integer
1037         TYPE_MODEs.
1038
1039 2004-06-24  Ulrich Weigand  <uweigand@de.ibm.com>
1040
1041         * c-decl.c (finish_function): Do not check for DEFAULT_MAIN_RETURN.
1042         * system.h (DEFAULT_MAIN_RETURN): Poison.
1043         * doc/tm.texi (DEFAULT_MAIN_RETURN): Remove documentation.
1044
1045 2004-06-24  Ben Elliston  <bje@au.ibm.com>
1046
1047         * doc/cfg.texi (Edges): Fix typo.
1048
1049 2004-06-24  Paul Brook  <paul@codesourcery.com>
1050
1051         * config/arm/arm.c (arm_output_epilogue): Remove excess checks.
1052
1053 2004-06-23  Andrew Pinski  <apinski@apple.com>
1054
1055         PR middle-end/15988
1056         * fold-const.c (fold_convert): Types which are compatible
1057         can be converted with only a NOP_EXPR.
1058
1059 2004-06-24  Alan Modra  <amodra@bigpond.net.au>
1060
1061         * calls.c (expand_call): Call INIT_CUMULATIVE_ARGS earlier, and
1062         pass raw n_named_args to it.
1063         * targhooks.c: Formatting.
1064         (hook_bool_CUMULATIVE_ARGS_false): Correct comment.
1065
1066 2004-06-23  Richard Henderson  <rth@redhat.com>
1067
1068         * c-gimplify.c (gimplify_decl_stmt): Push gimplify_one_sizepos inside
1069         non-constant size check.  Gimplify the type too.  Tidy building
1070         BUILT_IN_STACK_ALLOC call.
1071
1072 2004-06-23  Roger Sayle  <roger@eyesopen.com>
1073
1074         * c-common.c (expand_unordered_cmp): Delete.
1075         (expand_tree_builtin): Delete.
1076         * c-common.h (expand_tree_builtin): Delete function prototype.
1077         * c-typeck.c (build_function_call): Don't call expand_tree_builtin.
1078
1079 2004-06-23  Richard Henderson  <rth@redhat.com>
1080
1081         * gimplify.c (gimplify_compound_lval): Don't set ARRAY_REF or
1082         COMPONENT_REF variable fields unless they're non-constant.
1083
1084 2004-06-23  Robert Millan  <robertmh@gnu.org>
1085
1086         * config.gcc: Merge kfreebsd*-gnu with linux* and add knetbsd*-gnu.
1087         * config/i386/linux.h: Allow overriding of LINK_EMULATION,
1088           DYNAMIC_LINKER and register names in sc_ structure.
1089         * config/kfreebsd-gnu.h: New. kfreebsd-gnu followup for linux.h.
1090         * config/i386/kfreebsd-gnu.h: New. Ditto for i386-kfreebsd-gnu.
1091         * config/knetbsd-gnu.h: New. Ditto for knetbsd-gnu.
1092         * config/i386/knetbsd-gnu.h: New. Ditto for i386-knetbsd-gnu.
1093
1094         * config/kfreebsdgnu.h: Remove.
1095         * config/t-kfreebsd-gnu: Likewise.
1096         * config/i386/kfreebsdgnu.h: Likewise.
1097
1098 2004-06-23  Eric Christopher  <echristo@redhat.com>
1099
1100         * fold-const.c (make_range): Cleanup type checking through function.
1101         Remove orig_type. Replace with checks to exp_type and arg0_type.
1102         Clarify comment when converting from unsigned to signed.
1103
1104 2004-06-23  Eric Christopher  <echristo@redhat.com>
1105
1106         * config/mips/mips.c (mips_use_dfa_pipeline_interface): Add R3000.
1107         * config/mips/mips.md: Remove R3000 scheduling description.
1108         * config/mips/3000.md: New file.
1109
1110 2004-06-23  Ulrich Weigand  <uweigand@de.ibm.com>
1111
1112         * config/s390/s390-protos.h (s390_emit_compare): Add prototype.
1113         (s390_emit_jump): Likewise.
1114         * config/s390/s390.c (s390_emit_compare): New function.
1115         (s390_emit_jump): Likewise.
1116         * config/s390/s390.md ("beq", "bne", "bgt", "bgtu", "blt", "bltu",
1117         "bge", "bgeu", "ble", "bleu", "bunordered", "bordered", "buneq",
1118         "bungt", "bunlt", "bunge", "bunle", "bltgt"): Use s390_emit_compare
1119         and s390_emit_jump.
1120         ("cjump"): Remove, replace by ...
1121         ("*cjump_64", "*cjump_31"): ... these insns.  Improve length default.
1122         ("icjump", "*icjump_64", "*icjump_31"): Likewise.
1123         ("trap"): Fix type attribute.
1124         ("conditional_trap"): Use s390_emit_compare.
1125         ("doloop_si"): Remove, replace by ...
1126         ("doloop_si64", "doloop_si31"): ... these new insn_and_split.
1127         Merge existing splitter into insn_and_split.  Improve length default.
1128         ("doloop_di"): Merge with existing splitter into insn_and_split.
1129         ("doloop"): Adapt.
1130         ("jump"): Convert to expander.  Use s390_emit_jump.
1131         ("*jump_64", "*jump_31"): New insns.  Improve length default.
1132
1133 2004-06-23  Wu Yongwei  <adah@sh163.net>
1134
1135         * gthr-win32.h (__GTHREAD_MUTEX_INIT_DEFAULT): Adjust.
1136         (__gthr_i486_lock_cmp_xchg): New inline assembly function.
1137         (__GTHR_W32_InterlockedCompareExchange): New macro to choose a
1138         suitable function for interlocked compare-and-exchange.
1139         (__gthread_mutex_trylock): Use
1140         __GTHR_W32_InterlockedCompareExchange.
1141         (__gthread_mutex_init_function, __gthread_mutex_lock,
1142         __gthread_mutex_trylock, __gthread_mutex_unlock): Adjust the
1143         initial counter value to work correctly under Windows 95.
1144         * config/i386/gthr-win32.c: Adjust include order.
1145         Define __GTHREAD_I486_INLINE_LOCK_PRIMITIVES before including
1146         gthr-win32.h.
1147         (__gthr_win32_mutex_init_function, __gthr_win32_mutex_lock,
1148         __gthr_win32_mutex_trylock, __gthr_win32_mutex_unlock): Adjust
1149         to match inline versions in gthr-win32.h.
1150
1151 2004-06-23  David Edelsohn  <edelsohn@gnu.org>
1152
1153         * config/rs6000/rs6000.c (rs6000_use_dfa_pipeline_interface): Delete.
1154         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Redefine a hook_int_void_1.
1155         (insvdi_rshift_rlwimi_p): New function.
1156         * config/rs6000/rs6000.md (insvdi_internal2/3): New patterns.
1157         (extendsfdf2): Convert to define_insn_and_split.
1158         * config/rs6000/rs6000-protos.h (insvdi_rshift_rlwimi_p): Prototype.
1159
1160 2004-06-23  Andrew Pinski  <apinski@apple.com>
1161
1162         * c-typeck.c (composite_type, <case ARRAY_TYPE>): Abort if we have
1163         type qualifiers at all.
1164         If both of the type domains are null and the new element type is
1165         the same as one of the, return the one which the element type.
1166         matches.
1167         Do not call qualify_type on the new type.
1168
1169 2004-06-23  Ulrich Weigand  <uweigand@de.ibm.com>
1170
1171         * config/s390/s390.h (DEFAULT_MAIN_RETURN): Remove.
1172
1173 2004-06-23  Roger Sayle  <roger@eyesopen.com>
1174
1175         * convert.c (strip_float_extension): Skip both NOP_EXPR and
1176         CONVERT_EXPR floating point extensions.
1177
1178 2004-06-23  Diego Novillo  <dnovillo@redhat.com>
1179
1180         * Makefile.in (tree-vn.o): New.
1181         (tree-ssa-pre.o): Don't depend on RTL_H.
1182         * tree-dfa.c (find_referenced_vars): Don't call init_tree_ssa.
1183         * tree-flow.h (struct var_ann_d): Remove field expr_set.
1184         (add_to_value, expressions_equal_p, get_value_handle, vn_compute,
1185         vn_lookup_or_add, vn_add, vn_lookup, vn_init, vn_delete): Declare.
1186         * tree-optimize.c (execute_init_datastructures): New local function.
1187         (pass_init_datastructures): New local variable.
1188         (init_tree_optimization_passes): Sequence pass_init_datastructures.
1189         * tree-pretty-print.c (MASK_POINTER): Remove.
1190         (dump_generic_node): Handle VALUE_HANDLE.
1191         * tree-ssa-pre.c: Move all value numbering routines to tree-vn.c.
1192         Update callers to use new function names.
1193         Use VALUE_HANDLE_ID and VALUE_HANDLE_EXPR_SET instead of
1194         variable annotations.
1195         * tree-ssa.c (init_tree_ssa): Call vn_init.
1196         (delete_tree_ssa): Call vn_delete.
1197         * tree-vn.c: New file.
1198         * tree.c (tree_size): Handle VALUE_HANDLE.
1199         (tree_node_structure): Likewise.
1200         (iterative_hash_expr): Likewise.
1201         * tree.def (VALUE_HANDLE): New code.
1202         * tree.h (struct tree_value_handle): New.
1203         (VALUE_HANDLE_ID): Define.
1204         (VALUE_HANDLE_EXPR_SET): Define.
1205         (enum tree_node_structure_enum): Add TS_VALUE_HANDLE.
1206         (union tree_node): Add struct tree_value_handle.
1207
1208 2004-06-23  Andrew Pinski  <apinski@apple.com>
1209
1210         * c-typeck.c (composite_type):
1211         <case POINTER_TYPE>: Build a qualified type of
1212         the new type.
1213         <case ARRAY_TYPE>: Likewise.
1214         <case FUNCTION_TYPE>: Likewise.
1215
1216 2004-06-23  Pat Haugen  <pthaugen@us.ibm.com>
1217
1218         PR optimization/15633
1219         * value-prof.c (divmod_fixed_value_transform): Compute probability
1220         of taking optimal path and pass along to gen_ routine.
1221         (mod_pow2_value_transform): Same.
1222         (mod_subtract_transform): Same.
1223         (gen_divmod_fixed_value): Add new probability parameter.
1224         Add probability to newly created jump.
1225         (gen_mod_pow2): Same.
1226         (gen_mod_subtract): Same.
1227
1228 2004-06-23  Richard Earnshaw  <rearnsha@arm.com>
1229
1230         * PR target/15948
1231         * arm.md (bicsi3_cbranch): Add alternative to handle tying operands
1232         one and two.
1233
1234 2004-06-23  Richard Earnshaw  <rearnsha@arm.com>
1235
1236         PR target/15927
1237         * arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Don't need a secondary
1238         reload if CLASS is BASE_REGS.
1239
1240 2004-06-23  Richard Sandiford  <rsandifo@redhat.com>
1241
1242         * gengtype-yacc.y (option): Avoid use of non-constant struct
1243         initializer.
1244
1245 2004-06-23  Nathan Sidwell  <nathan@codesourcery.com>
1246
1247         * doc/extend.texi (Function Attributes): Alphabetize.
1248
1249 2004-06-23  Richard Henderson  <rth@redhat.com>
1250
1251         * c-gimplify.c (gimplify_decl_stmt): Update gimplify_type_sizes call.
1252         Use gimplify_and_add.
1253         * c-typeck.c (c_finish_if_stmt): Use NULL instead of empty stmt.
1254         * gimplify.c (build_and_jump, gimplify_exit_expr,
1255         gimplify_init_constructor, gimplify_save_expr, gimple_push_cleanup,
1256         gimplify_stmt, gimplify_expr): Likewise.
1257         (shortcut_cond_expr): Handle NULL arms of COND_EXPR.
1258         (gimplify_statement_list): Remove NULL entries.
1259         (gimplify_to_stmt_list): Handle NULL results.
1260         (gimplify_type_sizes): Add list_p argument.
1261         (gimplify_one_sizepos): Don't use internal pre/post queue.
1262         * tree-gimple.h (gimplify_type_sizes): Update.
1263
1264 2004-06-22  Eric Christopher  <echristo@redhat.com>
1265
1266         * config/rs6000/rs6000.md (*insvsi_internal5/6): New patterns.
1267
1268 2004-06-22  Pat Haugen  <pthaugen@us.ibm.com>
1269
1270         * cfghooks.c (make_forwarder_block): Decrement count on fallthru edge
1271         when redirecting back edges.
1272
1273         * cfghooks.c (split_block): Call make_single_succ_edge so that edge
1274         count/probability are set correctly.
1275
1276 2004-06-22  Richard Henderson  <rth@redhat.com>
1277
1278         * c-typeck.c (emit_side_effect_warnings): Ignore error marks.
1279         (c_finish_stmt_expr): Likewise.
1280
1281         * config/i386/i386.c (TARGET_STRUCT_VALUE_RTX): New.
1282         (ix86_return_in_memory): Move SSE vector return warning ...
1283         (ix86_struct_value_rtx): ... here.  New.
1284
1285 2004-06-22  Richard Henderson  <rth@redhat.com>
1286
1287         * tree.def (VTABLE_REF): Remove.
1288         (OBJ_TYPE_REF): New.
1289         (TRY_CATCH_EXPR, TRY_FINALLY_EXPR): Set type 's'.
1290         * expr.c (expand_expr_real_1): Replace VTABLE_REF with OBJ_TYPE_REF.
1291         * fold-const.c (non_lvalue): Likewise.
1292         * gimplify.c (gimplify_expr): Likewise.
1293         (gimplify_call_expr): Use is_gimple_call_addr.
1294         * langhooks-def.h (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New.
1295         * langhooks.h (fold_obj_type_ref): New.
1296         * tree-gimple.c (is_gimple_call_addr): New.
1297         * tree-gimple.h (is_gimple_call_addr): Declare.
1298         * tree-inline.c (inlinable_function_p): Fix merge error.
1299         (estimate_num_insns_1): Replace VTABLE_REF with OBJ_TYPE_REF.
1300         * tree-pretty-print.c (dump_generic_node): Likewise.
1301         (print_call_name): Handle OBJ_TYPE_REF.
1302         * tree-ssa-ccp.c (fold_stmt): Fold OBJ_TYPE_REF.
1303         * tree-ssa-operands.c (get_expr_operands): Handle OBJ_TYPE_REF.
1304         * tree.h (OBJ_TYPE_REF_EXPR): New.
1305         (OBJ_TYPE_REF_OBJECT, OBJ_TYPE_REF_TOKEN): New.
1306         * doc/c-tree.texi (VTABLE_REF): Remove.
1307         * objc/objc-act.c (build_objc_method_call): Build an OBJ_TYPE_REF.
1308
1309 2004-06-22  Richard Henderson  <rth@redhat.com>
1310
1311         PR middle-end/16026
1312         * function.c (assign_parms): Don't abort for overaligned PARALLEL.
1313
1314 2004-06-22  Joseph S. Myers  <jsm@polyomino.org.uk>
1315
1316         * Makefile.in (distclean): Don't try to remove empty directories.
1317
1318 2004-06-22  Richard Sandiford  <rsandifo@redhat.com>
1319
1320         PR target/15869
1321         * config/mips/mips.c (mips_avoid_hazards): Call split_all_insns_noflow.
1322
1323 2004-06-22  Alexandre Oliva  <aoliva@redhat.com>
1324
1325         * config/mn10300/mn10300.md (movdi, movdf): Use high/low for movu
1326         operands.
1327
1328 2004-06-22  Dale Johannesen  <dalej@apple.com>
1329
1330         * config/rs6000/rs6000.c (legitimate_offset_address_p): Make
1331         global, rename rs6000_legitimate_offset_address_p.
1332         (rs6000_legitimate_address_p): Adjust calls to it.
1333         (lmw_operation): Ditto.
1334         (stmw_operation): Ditto.
1335         * config/rs6000/rs6000-protos.h: Declare it.
1336         * config/rs6000/rs6000.md (*movdf_hardfloat32): Use it
1337         instead of offsettable_memref_p.
1338
1339 2004-06-22  Dale Johannesen  <dalej@apple.com>
1340
1341         * config/rs6000/rs6000.c (rs6000_legitimate_address): Disallow
1342         [reg+reg] mode for TFmode memory accesses.
1343         (rs6000_eliminate_indexed_memrefs): New.
1344         (rs6000_emit_move): Call preceding for TImode and TFmode.
1345
1346 2004-06-22  Paolo Bonzini  <bonzini@gnu.org>
1347
1348         * tree-cfg.c (pass_warn_function_return): It needs
1349         CFG, not SSA.
1350
1351 2004-06-22  Nathan Sidwell  <nathan@codesourcery.com>
1352
1353         * doc/invoke.texi (Machine Dependent Options): Alphabetize.
1354         (Submodel Options): Likewise.
1355
1356 2004-06-21  Andrew Pinski  <apinski@apple.com>
1357
1358         Radar #: 3701874
1359         * c-decl.c (push_file_scope): Return early if we already
1360         have a file scope.
1361
1362 2004-06-21  Geoffrey Keating  <geoffk@apple.com>
1363
1364         * c-opts.c (c_common_handle_option): Handle -fpch-preprocess.
1365         * c-common.h (flag_pch_preprocess): Declare.
1366         (c_common_pch_pragma): Likewise.
1367         * c-common.c (flag_pch_preprocess): New.
1368         * c-pch.c (c_common_read_pch): Support -fpreprocess-only.
1369         (c_common_pch_pragma): New.
1370         * c-ppoutput.c (cb_read_pch): New.
1371         (init_pp_output): Support -fpch-preprocess.
1372         * c-pragma.c (init_pragma): Support #pragma GNUC pch_preprocess.
1373         * c.opt (fpch-preprocess): New.
1374         * gcc.c (cpp_options): When save-temps, pass -fpch-preprocess.
1375         * doc/cppopts.texi: Document -fpch-preprocess.
1376         * doc/invoke.texi (Precompiled Headers): Mention that
1377         -fpreprocessed is safe for PCH.  Mention that if an option is
1378         listed as safe that doesn't mean it does what you expect.
1379
1380 2004-06-22  Ben Elliston  <bje@au.ibm.com>
1381
1382         * tree-ssa.c (ssa_redirect_edge): Correct leading comment.
1383
1384 2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1385
1386         * Makefile.in (gimplify.o): Add cgraph.h.
1387         * alias.c (adjust_offset_for_component_ref): Use
1388         component_ref_field_offset.
1389         * c-decl.c (build_array_declarator): Add news args for ARRAY_REF.
1390         * c-gimplify.c (gimplify_expr_stmt): Use alloc_stmt_list.
1391         (gimplify_decl_stmt): Call gimplify_type_sizes for type.
1392         For decl, call gimplify_one_sizepos and use statement list.
1393         (gimplify_compound_literal_expr): New arg PRE_P.
1394         Add statement to PRE_P list and return DECL.
1395         (c_gimplify_expr, case COMPOUND_LITERAL_EXPR): Add arg to
1396         gimplify_compound_literal_expr.
1397         * c-tree.h (getdecls): Deleted.
1398         * c-typeck.c (build_component_ref): Add operand for COMPONENT_REF.
1399         (build_array_ref): Add two operands for ARRAY_REF.
1400         (build_unary_op): Set TREE_INVARIANT and TREE_CONSTANT for
1401         COMPOUND_LITERAL_EXPR.
1402         * coverage.c (tree_coverage_counter_ref): Add new operands
1403         for ARRAY_REF.
1404         * emit-rtl.c (component_ref_for_mem_expr): Add new operand
1405         for COMPONENT_REF.
1406         (set_mem_attributes_minus_bitpos): Use array_ref_low_bound
1407         and array_ref_element_size.
1408         (widen_memory_access):Use component_ref_field_offset.
1409         * explow.c (update_nonlocal_goto_save_area): Add two operands
1410         for ARRAY_REF.
1411         * expr.c (array_ref_element_size, array_ref_low_bound): New functions.
1412         (component_ref_field_offset): Likewise.
1413         (get_inner_reference): Use them.
1414         (expand_expr_real_1, case ARRAY_REF): Use array_ref_low_bound.
1415         * fold-const.c (fold, case EQ_EXPR): Properly handle DECL_SIZE.
1416         (fold_read_from_constant_string): Use array_ref_low_bound.
1417         Verify that result is a character type.
1418         (build_fold_indirect_ref): Add two operands for ARRAY_REF.
1419         * function.c (expand_function_start): Likewise.
1420         * gimple-low.c (expand_var_p): Delete duplicated line.
1421         * gimplify.c: Add static decls for local functions.
1422         (cgraph.h): Now included.
1423         (create_tmp_var): Remove check for ARRAY_TYPE.
1424         (copy_if_shared_r): Look at bounds and sizes of types.
1425         (build_and_jump): Return alloc_stmt_list instead of build_empty_stmt.
1426         (gimplify_exit_expr, shortcut_cond_expr): Likewise.
1427         (gimplify_save_expr, gimple_push_cleanup): Likewise.
1428         (gimplify_init_constructor): Likewise.
1429         WANT_VALUE now bool.
1430         If empty list with no result wanted, return GS_UNHANDLED.
1431         Add additional operands for ARRAY_REF and COMPONENT_REF.
1432         (canonicalize_component_ref): Convert to &array[L].
1433         (gimplify_array_ref_to_plus): Use array_ref_element_size and
1434         array_ref_lower_bound.
1435         (build_addr_expr_with_type, build_addr_expr): New functions.
1436         (gimplify_compound_lval): WANT_LVALUE now bool.
1437         Major rework to allow handle_component_p and initialize and
1438         gimplify new operands for ARRAY_REF, ARRAY_RANGE_REF, and
1439         COMPONENT_REF.
1440         (gimplify_array_ref): Deleted.
1441         (gimplify_self_mod_expr): WANT_VALUE now bool.
1442         (gimplify_modify_expr): Gimplify to_p and from_p later.
1443         Factor out code into gimplify_modify_expr_rhs and call twice.
1444         Move variable-size code earlier and handle PLACEHOLDER_EXPR.
1445         (gimplify_modify_expr_rhs, gimplify_variable_sized_compare): New fns.
1446         (gimplify_addr_expr, case VIEW_CONVERT_EXPR): New case.
1447         (gimplify_expr, case ARRAY_REF): Delete special case.
1448         Instead handle like COMPONENT_REF; also do ARRAY_RANGE_REF,
1449         IMAGPART, and REALPART the same way.
1450         (gimplify_expr, case VIEW_CONVERT_EXPR): New case.
1451         (gimplify_expr): Call gimplify_variable_sized_compare if applicable.
1452         Call alloc_stmt_list instead of build_empty_stmt.
1453         Deal with _REF that's volatile.
1454         (gimplify_type_sizes, gimplify_one_sizepos): New functions.
1455         (unshare_body, unvisit_body): New functions.
1456         (gimplify_body): Call them.
1457         * stmt.c (expand_stack_alloc): Don't expand TYPE_MAX_VALUE.
1458         * stor-layout.c (get_pending_sizes): Don't change SAVE_EXPR_CONTEXT.
1459         * tree-alias-common.c (get_alias_var): Also skip ARRAY_RANGE_REF.
1460         * tree-cfg.c (tree_node_can_be_shared): Treat ARRAY_RANGE_REF
1461         like ARRAY_REF.
1462         (verify_expr, case ADDR_EXPR): Use handled_component_p.
1463         * tree-dfa.c (get_virtual_var): Likewise.
1464         * tree-dump.c (dequeue_and_dump, case COMPONENT_REF, ARRAY_REF):
1465         New cases to dump new operands; likewise for ARRAY_RANGE_REF.
1466         * tree-eh.c (tree_could_trap, case ARRAY_RANGE_REF): Like ARRAY_REF.
1467         * tree-gimple.c (is_gimple_addr_expr_arg): Add ARRAY_RANGE_REF
1468         and INDIRECT_REF.
1469         (get_base_address): Use handled_component_p.
1470         * tree-gimple.h (gimplify_type_sizes, gimplify_one_sizepos): New.
1471         * tree-inline.c (walk_tree): Walk more things for types and decls.
1472         * tree-mudflap.c (mf_build_check_statement_for): Add new operands
1473         for ARRAY_REF and COMPONENT_REF.
1474         (mx_xform_derefs_1): Clean up usage of decl sizes.
1475         * tree-nested.c (build_addr): Use handled_component_p.
1476         (walk_stmts, case CATCH_EXPR): Add missing "break".
1477         (get_static_chain, get_frame_field): Add new operand for COMPONENT_REF.
1478         (finalize_nesting_tree_1): Likewise.
1479         (convert_nonlocal_reference, case ARRAY_RANGE_REF): Like ARRAY_REF
1480         and process additional operands.
1481         (convert_local_reference): Likewise.
1482         * tree-outof-ssa.c (discover_nonconstant_array_refs_r): Treat
1483         ARRAY_RANGE_REF similarly to ARRAY_REF.
1484         * tree-pretty-print.c (dump_generic_node, case QUAL_UNION_TYPE): Handle
1485         like RECORD_TYPE.
1486         (dump_generic_node, case COMPONENT_REF): Print offset operand.
1487         (dump_generic_node, case ARRAY_RANGE_REF): Treat like ARRAY_REF
1488         and print lower bound and element size for both.
1489         (op_prio, case ARRAY_RANGE_REF): Like ARRAY_REF.
1490         * tree-sra.c (csc_build_component_ref): Add new operand.
1491         (scalarize_call_expr): Use get_base_address.
1492         * tree-ssa-ccp.c (widen_bitfield): Clean up size handling.
1493         (maybe_fold_offset_to_array_ref): Rework to handle input having an
1494         ARRAY_REF, refine handling of lower bound, and add new operands
1495         for ARRAY_REF.
1496         (maybe_fold_to_component_ref): Add new operand for COMPONENT_REF.
1497         (maybe_fold_stmt_indirect): Only fold *&B to B if types match.
1498         (maybe_fold_stmt_addition): Only handle constant lower bound.
1499         * tree-ssa-operands.c (get_expr_operands): Minor rearrangements.
1500         Treat ARRAY_REF and ARRAY_RANGE_REF the same; look at extra operands.
1501         Look at new offset operand of COMPONENT_REF.
1502         * tree-ssa.c (set_is_used): Use handled_component_p.
1503         * tree.c (substitute_in_expr, case COMPONENT_REF): Add new operand.
1504         (stabilize_reference, case COMPONENT_REF): Likewise.
1505         (stabilize_reference, case ARRAY_RANGE_REF, ARRAY_REF): Similarly.
1506         (recompute_tree_invariant_for_addr_expr): Completely rework to
1507         be more precise.  Also set TREE_SIDE_EFFECTS.
1508         (build1_stat, case ARRAY_EXPR): Don't handle TREE_SIDE_EFFECTS here.
1509         (build2_stat, build3_stat, build4_stat): For references,
1510         propagate TREE_THIS_VOLATILE.
1511         (get_unwidened): Add new operand for COMPONENT_REF.
1512         (get_narrower): Likewise; use host_integerp for DECL_SIZE.
1513         * tree.def (COMPONENT_REF): Add new operand.
1514         (ARRAY_REF, ARRAY_RANGE_REF): Add two new operands.
1515         * tree.h (array_ref_element_size, array_ref_low_bound): New decls.
1516         (component_ref_field_offset): Likewise.
1517         * config/alpha/alpha.c (alpha_va_start): Add new op for COMPONENT_REF.
1518         (alpha_gimplify_va_arg): Likewise.
1519         * config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
1520         * config/i860/i860.c (i860_va_start, i860_va_arg): Likewise.
1521         * config/iq2000/iq2000.c (iq2000_va_arg): Likewise.
1522         * config/mips/mips.c (mips_va_start, mips_va_arg): Likewise.
1523         * config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg):
1524         Likewise.
1525         * config/s390/s390.c (s390_va_start, s390_gimplify_va_arg): Likewise.
1526         * config/sh/sh.c (sh_va_start, sh_va_arg): Likewise.
1527         * config/stormy16/stormy16.c (xstormy1_expand_builin_va_start):
1528         Likewise.
1529         (xstormy16_expand_builtin_va_arg): Likewise.
1530         * config/xtensa/xtensa.c (xtensa_va_start, xtensa_va_arg): Likewise.
1531         * objc/objc-act.c (generate_static_references): Likewise.
1532         (generate_strings, build_method_prototype_list_template): Likewise.
1533         (generate_protocol_list): Likewise.
1534
1535 2004-06-21  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1536
1537         PR rtl-optimization/14782
1538         * pa.c (emit_move_sequence): Use SFmode for 4-byte modes when doing
1539         the address checks for secondary reloads for loads from and stores
1540         to floating-point registers.
1541         * pa.h (EXTRA_CONSTRAINT, case T): Use SFmode for 4-byte modes
1542         in the address check.  Move work around for ELF32 targets to
1543         GO_IF_LEGITIMATE_ADDRESS.
1544         (GO_IF_LEGITIMATE_ADDRESS): Require constant offsets to be
1545         correctly aligned for DImode loads and stores.  Don't allow long
1546         SFmode displacements on ELF32.
1547
1548 2004-06-21  Richard Henderson  <rth@redhat.com>
1549
1550         PR rtl-opt/16114
1551         * cse.c (merge_equiv_classes): Also rehash in response to
1552         delete_reg_equiv changes.
1553         (rehash_using_reg): Don't exclude REGs from rehashing.
1554
1555 2004-06-21  Richard Henderson  <rth@redhat.com>
1556
1557         * c-common.def (RETURN_STMT): Remove.
1558         * c-common.h (RETURN_STMT_EXPR): Remove.
1559         (c_expand_return, build_return_stmt): Remove.
1560         (c_common_stmt_codes): Remove RETURN_STMT.
1561         * c-dump.c (dump_next_stmt): Remove.
1562         (c_dump_tree): Remove RETURN_STMT.
1563         * c-decl.c (finish_function): Use c_finish_return.
1564         * c-parse.in (stmt): Likewise.
1565         * c-gimplify.c (gimplify_return_stmt): Remove.
1566         (c_gimplify_expr): Remove RETURN_STMT.
1567         * c-pretty-print.c (pp_c_statement): Likewise.
1568         * c-semantics.c (build_return_stmt): Remove.
1569         * c-tree.h (c_finish_return): Declare.
1570         * c-typeck.c (c_finish_return): Rename from c_expand_return.
1571         Return void.  Build RETURN_EXPR directly.
1572         * tree-dump.h (dump_next_stmt): Remove.
1573
1574 2004-06-21  Zack Weinberg  <zack@codesourcery.com>
1575
1576         * c-decl.c (start_function): Don't call make_decl_rtl.  Don't
1577         look at TREE_ADDRESSABLE of symbol name.
1578
1579 2004-06-21  Kelley Cook  <kcook@gcc.gnu.org>
1580
1581         PR target/15551
1582         * config/i386/i386.md: Change UNSPEC_STACK_PROBE to UNSPECV_STACK_PROBE.
1583         (allocate_stack_worker): Make unspec_volatile.
1584         (allocate_stack_worker_rex64):  Likewise.
1585         (allocate_stack_worker_postreload):  Likewise.
1586         (allocate_stack_worker_rex64_postreload):  Likewise.
1587
1588 2004-06-21  Daniel Berlin  <dberlin@dberlin.org>
1589
1590         Fix PR optimization/15982
1591         * tree-ssa-pre.c: Update a few comments and todos to
1592         reflect constants change.
1593         (get_value_handle): Constants now value number to themselves.
1594         (lookup): Constants lookup to themselves.
1595         (add_to_value): Adjust to always be on.
1596         (set_contains_value): Adjust for constants change.
1597         (find_leader): Ditto.
1598         (phi_translate): 'r' nodes are never ANTIC right now.
1599         (valid_in_set): Ditto.
1600         (get_expr_set): New function.
1601         (find_or_generate_expression): New function, broken out from
1602         insert_aux.
1603         (create_expression_by_pieces): Ditto, plus additional
1604         machinery to handle complex values.
1605         (compute_avail): Remove dead RETURN_EXPR handling.
1606
1607 2004-06-21  Steven Bosscher  <stevenb@suse.de>
1608
1609         * config/i386/i386.c: Include insn-codes.h
1610         * config/i386/i386.h (FLAGS_REG, FPSR_REG, DIRFLAG_REG): Don't
1611         define here.
1612         * config/i386/i386.md (BP_REG, SP_REG, FLAGS_REG, FPSR_REG,
1613         DIRFLAG_REG): New define_constants.  Use them everywhere.
1614
1615 2004-06-21  Kaz Kojima  <kkojima@gcc.gnu.org>
1616
1617         * config/sh/t-linux (MULTILIB_OPTIONS): Remove.
1618
1619 2004-06-21  J"orn Rennecke <joern.rennecke@superh.com>
1620
1621         * sh.h (SUPPORT_SH1, SUPPORT_SH2E, SUPPORT_SH4): Conditionally define.
1622         (SUPPORT_SH4_SINGLE): Likewise.
1623         (TARGET_SWITCHES): Break out switches for cpu subtargets:
1624         (TARGET_SWITCH_SH1, TARGET_SWITCH_SH2, TARGET_SWITCH_SH2E): Define.
1625         (TARGET_SWITCH_SH3, TARGET_SWITCH_SH3E): Likewise.
1626         (TARGET_SWITCH_SH4_SINGLE_ONLY, TARGET_SWITCH_SH4_SINGLE): Likewise.
1627         (TARGET_SWITCH_SH4_NOFPU, TARGET_SWITCH_SH4): Likewise.
1628         (TARGET_SWITCH_SH5_64MEDIA, TARGET_SWITCH_SH5_64MEDIA_NOFPU): Likewise.
1629         (TARGET_SWITCHES_SH5_32MEDIA): Likewise.
1630         (TARGET_SWITCHES_SH5_32MEDIA_NOFPU): Likewise.
1631         (SELECT_SH5_64, SELECT_SH5_64_NOFPU): Rename to:
1632         (SELECT_SH5_64MEDIA, SELECT_SH5_64MEDIA_NOFPU)
1633         (SELECT_SH5_32, SELECT_SH5_32_NOFPU): Rename to:
1634         (SELECT_SH5_32MEDIA, SELECT_SH5_32MEDIA_NOFPU).
1635         (SH_MULTILIB_CPU_DEFAULT, MULTILIB_DEFAULTS): Define.
1636         (ASM_ISA_SPEC_DEFAULT, ASM_ISA_DEFAULT_SPEC): Likewise.
1637         * sh64.h (ASM_SPEC, LINK_DEFAULT_CPU_EMUL): Don't redefine.
1638         (TARGET_DEFAULT): Likewise.
1639         * config/sh/t-elf: Amend comment.
1640         * config/sh/t-1e, config/sh/t-mlib-sh1: New files.
1641         * config/sh/t-mlib-sh2, config/sh/t-mlib-sh2e: Likewise.
1642         * config/sh/t-mlib-sh3, config/sh/t-mlib-sh3e: Likewise.
1643         * config/sh/t-mlib-sh4, config/sh/t-mlib-sh4-nofpu: Likewise.
1644         * config/sh/t-mlib-sh4-single: Likewise.
1645         * config/sh/t-mlib-sh4-single-only: Likewise.
1646         * config/sh/t-mlib-sh5-32media: Likewise.
1647         * config/sh/t-mlib-sh5-32media-nofpu: Likewise.
1648         * config/sh/t-mlib-sh5-64media: Likewise.
1649         * config/sh/t-mlib-sh5-64media-nofpu: Likewise.
1650         * config/sh/t-mlib-sh5-compact: Likewise.
1651         * config/sh/t-mlib-sh5-compact-nofpu: Likewise.
1652         * config/sh/t-sh: (MULTILIB_ENDIAN): Add mb.
1653         (MULTILIB_CPUS): Define.
1654         (MULTILIB_OPTIONS): Use MULTILIB_CPUS.
1655         (MULTILIB_MATCHES): Use some shell code to calculate it.
1656         (MULTILIB_EXCEPTIONS): Change to ml/m1.
1657         * config/sh/elf.h (SUBTARGET_ASM_ISA_SPEC): Use ASM_ISA_DEFAULT_SPEC.
1658         * config/sh/netbsd-elf.h: Update code which sets TARGET_VERSION_CPU.
1659         (LINK_DEFAULT_CPU_EMUL): Don't redefine.
1660         (NO_PROFILE_COUNTERS): Define to 1.
1661         * config/sh/t-netbsd (MULTILIB_OPTIONS): Don't append to.
1662         (MULTILIB_DIRNAMES, MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Don't zap.
1663         * config/sh/t-netbsd-sh5-64 (MULTILIB_OPTIONS): Don't redefine.
1664         (MULTILIB_MATCHES): Don't zap.
1665         (MULTILIB_DIRNAMES): Use MULTILIB_RAW_DIRNAMES.
1666         * config/sh/t-sh64 (MULTILIB_OPTIONS): Don't redefine.
1667         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Don't zap.
1668         (MULTILIB_RAW_DIRNAMES): Define.
1669         (MULTILIB_DIRNAMES): Use it.
1670         * config.gcc: Also set cpu_type / need_64bit_hwint for sh[be]*-*-*.
1671         (sh*linux configurations): Merge into:
1672         (sh*elf / sh*kaos configurations).  Support --with-endian, --with-cpu,
1673         --with-multilib-list options.  Support sh-superh-elf configuration.
1674         (sh*-netbsd*): Use SELECT_SH* macros.
1675         (supported_defaults): sh[123456ble]-*-* | sh-*-* support "cpu".
1676         Merge sh*-*-netbsd* configurations into sh-elf configurations.
1677         * config/sh/t-netbsd-sh5, config/sh/t-be, config/sh/t-le: Delete.
1678         * config/sh/t-monolib: Likewise.
1679
1680 2004-06-21  Paul Brook  <paul@codesourcery.com>
1681
1682         * config/arm/arm.h (ARM_LEGITIMIZE_RELOAD_ADDRESS): Soft-float need
1683         not imply FPA.
1684
1685 2004-06-21  Roger Sayle  <roger@eyesopen.com>
1686
1687         * fold-const.c (operand_equal_p): Pass flags in recursive calls for
1688         binary and relational operations.  Add support for TRUTH_ANDIF_EXPR,
1689         TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR and TRUTH_XOR_EXPR.
1690         * tree.c (commutative_tree_code): Also list UNORDERED_EXPR,
1691         ORDERED_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR
1692         and TRUTH_XOR_EXPR.
1693
1694 2004-06-21  Paolo Bonzini  <bonzini@gnu.org>
1695
1696         * rtlanal.c (may_trap_p): Mark LTGT as trapping.
1697
1698 2004-06-21  Joseph S. Myers  <jsm@polyomino.org.uk>
1699
1700         * tree-alias-common.h (struct tree_alias_ops): Change ip and
1701         ip_partial to unsigned int.
1702
1703 2004-06-21  Richard Henderson  <rth@redhat.com>
1704
1705         * c-common.c (verify_sequence_points): Export.
1706         (c_expand_expr_stmt): Move to c-typeck.c.
1707         * c-common.h (c_expand_expr_stmt): Remove.
1708         (verify_sequence_points): Declare.
1709         * c-mudflap.c (mflang_flush_calls): Use c_finish_expr_stmt.
1710         * c-parse.in (for_init_stmt, stmt): Likewise.
1711         * c-tree.h (c_finish_expr_stmt): Declare.
1712         (c_tree_expr_nonnegative_p): Remove.
1713         * c-typeck.c (c_tree_expr_nonnegative_p): Remove.
1714         (build_conditional_expr, build_binary_op): Use tree_expr_nonnegative_p.
1715         (emit_side_effect_warnings): New.
1716         (c_finish_expr_stmt): Rename from c_expand_expr_stmt.  Use it.
1717         (c_finish_stmt_expr): Work without EXPR_STMT.  Handle eh regions.
1718         Use emit_side_effect_warnings.
1719         (push_cleanup): Copy STATEMENT_LIST_STMT_EXPR.
1720         * fold-const.c (tree_expr_nonnegative_p): Handle TARGET_EXPR.
1721         * gimplify.c (gimplify_modify_expr): Don't discard TARGET_EXPR
1722         with void initializer.
1723         (gimplify_target_expr): Handle void BIND_EXPR initializer.
1724         * tree-inline.c (estimate_num_insns_1): Fix type lookup for
1725         INIT_EXPR and MODIFY_EXPR.
1726         * objc/objc-act.c (build_module_descriptor): Use add_stmt
1727         instead of c_expand_expr_stmt.
1728
1729 2004-06-21  Paolo Bonzini  <bonzini@gnu.org>
1730
1731         * fold-const.c (fold_cond_expr_with_comparison):
1732         New function, extracted from fold.
1733         (fold): Extract code to fold A op B ? A : C, use
1734         it to fold A op B ? C : A.  Really optimize
1735         A & N ? N : 0 where N is a power of two.  Avoid
1736         relying on canonicalization and recursion for
1737         foldings of COND_EXPR to happen.
1738
1739 2004-06-20  David Ayers  <d.ayers@inode.at>
1740
1741         * objc/objc-act.h (get_object_reference): Rename to
1742         get_protocol_reference.
1743         (super_type): Rename to objc_super_type.
1744         (selector_type): Rename to objc_selector_type.
1745         (id_type): Rename to objc_id_type.
1746         (instance_type): Rename to objc_instance_type.
1747         (protocol_type): Rename to objc_protocol_type.
1748         (IS_ID): Update reference to id_type.
1749         * objc/objc-act.c (get_object_reference): Rename to
1750         get_protocol_reference; add documentation; update references to
1751         id_type.
1752         (lookup_method_in_protocol_list): Rename class_meth to
1753         is_class; add documentation.
1754         (finish_message_expr): Rename is_class to class_tree.
1755         (synth_module_prologue, objc_is_object_ptr, objc_build_exc_ptr,
1756         next_sjlj_build_try_catch_finally, objc_begin_catch_clause,
1757         build_next_objc_exception_stuff, get_arg_type_list,
1758         build_objc_method_call): Update references to id_type.
1759         (synth_module_prologue, build_objc_symtab_template,
1760         build_selector_reference_decl, build_selector,
1761         build_selector_translation_table, build_typed_selector_reference,
1762         get_arg_type_list, synth_self_and_ucmd_args, get_arg_type_list,
1763         synth_self_and_ucmd_args): Update references to selector_type.
1764         (build_private_template, build_ivar_reference): Update references
1765         to instance_type.
1766         (synth_module_prologue, build_protocol_reference,
1767         build_protocol_expr, start_protocol): Update references to
1768         protocol_type.
1769         (synth_module_prologue, get_arg_type_list, build_objc_method_call):
1770         Update references to super_type.
1771         * c-parse.in: (typespec_nonreserved_nonattr): Update
1772         references to get_object_reference.
1773         * objc/objc-tree.def: Add C mode identifier sequence.
1774
1775 2004-06-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
1776
1777         * loop-invariant.c: New file.
1778         * Makefile.in (loop-invariant.o): New.
1779         * cfgloop.h (global_cost_for_size, init_set_costs,
1780         move_loop_invariants): Declare.
1781         * cfgloopanal.c (seq_cost, init_set_costs, global_cost_for_size): New
1782         functions.
1783         (avail_regs, res_regs, small_cost, pres_cost, spill_cost): New
1784         variables.
1785         * common.opt (floop-optimize2, fmove-loop-invariants): New options.
1786         * loop-init.c (loop_optimizer_init): Call init_set_costs.
1787         * passes.c (rest_of_handle_loop2): Call move_loop_invariants.
1788         (rest_of_compilation): Check flag_loop_optimize2.
1789         * toplev.c (process_options): Handle flag_loop_optimize2.
1790         * doc/invoke.texi (-floop-optimize2, -fmove-loop-invariants): Document.
1791         * doc/passes.texi (loop-invariant.c): Document.
1792
1793 2004-06-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
1794
1795         * tree-ssa-pre.c (compute_antic): Keep BB_VISITED flag zeroed.
1796
1797 2004-06-20  Richard Henderson  <rth@redhat.com>
1798
1799         * stmt.c (warn_if_unused_value): Add locus argument.
1800         * tree.h (warn_if_unused_value): Update decl.
1801         * c-typeck.c (internal_build_compound_expr): Update call.
1802         * c-gimplify.c (gimplify_expr_stmt): Likewise.
1803
1804 2004-06-20  Andrew Pinski  <pinskia@physics.uc.edu>
1805
1806         PR middle-end/16089
1807         * builtins.c (entry_of_function): Move to ...
1808         * cfgrtl.c (entry_of_function): Here and make non-static.
1809         * integrate.c (emit_initial_value_sets): Use entry_of_function.
1810         * rtl.h (entry_of_function): Prototype.
1811
1812 2004-06-20  Roger Sayle  <roger@eyesopen.com>
1813
1814         * config/i386/i386.c (pentium4_cost): Increase "lea" cost from 1 to 3.
1815         (ix86_rtx_costs) <ASHIFT, PLUS>: Consider ix86_cost->lea even when
1816         TARGET_DECOMPOSE_LEA.
1817
1818 2004-06-20  Richard Henderson  <rth@redhat.com>
1819
1820         * c-common.h (add_decl_stmt): Move to cp-tree.h.
1821         * c-decl.c (finish_decl): Don't use add_decl_stmt.
1822         * c-parse.in: Likewise.
1823         * c-gimplify.c (gimplify_expr_stmt): Don't build CLEANUP_POINT_EXPR.
1824         (gimplify_c_loop, gimplify_return_stmt, gimplify_decl_stmt): Likewise.
1825         * c-semantics.c (add_decl_stmt): Move to cp/semantics.c.
1826
1827 2004-06-20  Richard Henderson  <rth@redhat.com>
1828
1829         * c-common.def (IF_STMT, CLEANUP_STMT): Move to cp-tree.def.
1830         * c-common.h (IF_COND, THEN_CLAUSE, ELSE_CLAUSE, CLEANUP_BODY,
1831         CLEANUP_EXPR, CLEANUP_DECL): Move to cp-tree.h.
1832         (c_common_stmt_codes): Remove IF_STMT, CLEANUP_STMT.
1833         * c-dump.c (c_dump_tree): Move IF_STMT, CLEANUP_STMT to cp_dump_tree.
1834         * c-pretty-print.c (pp_c_statement): Similarly.
1835         * c-gimplify.c (gimplify_cleanup_stmt, gimplify_cleanup_stmts,
1836         gimplify_if_stmt): Move to cp-gimplify.c.
1837         (c_genericize, c_gimplify_expr): Don't call them.
1838         * c-semantics.c (push_cleanup): Move to cp/semantics.c.
1839         * c-typeck.c (push_cleanup): New.
1840         (c_begin_if_stmt, c_finish_if_cond, c_finish_then, c_finish_else,
1841         c_finish_if_stmt): Use COND_EXPR.
1842         * tree.h (CLEANUP_EH_ONLY): Update documentation.
1843
1844 2004-06-20  Zack Weinberg  <zack@codesourcery.com>
1845
1846         * c-common.h (has_c_linkage): New interface.
1847         * c-cppbuiltin.c: Include target.h.
1848         (c_cpp_builtins): Define __PRAGMA_REDEFINE_EXTNAME and
1849         __PRAGMA_EXTERN_PREFIX when appropriate.
1850         * c-pragma.c: Include target.h.
1851         Document clarified semantics of symbol-renaming #pragmas.
1852         (handle_pragma_redefine_extname, handle_pragma_extern_prefix)
1853         (maybe_apply_renaming_pragma): Rewrite according to clarified
1854         semantics.  Always recognize, but do not necessarily execute.
1855         (init_pragma): Unconditionally register symbol-renaming pragmas.
1856         * system.h: Poison HANDLE_PRAGMA_REDEFINE_EXTNAME
1857         and HANDLE_PRAGMA_EXTERN_PREFIX.
1858         * target.h (struct gcc_target): Add handle_pragma_redefine_extname
1859         and handle_pragma_extern_prefix flags.
1860         * target-def.h: Add defaults for TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME
1861         and TARGET_HANDLE_PRAGMA_EXTERN_PREFIX.
1862         * Makefile.in (c-pragma.o, c-cppbuiltin.o): Update dependencies.
1863         * config/sol2.h: Define TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME,
1864         not HANDLE_PRAGMA_REDEFINE_EXTNAME.
1865         (TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_REDEFINE_EXTNAME.
1866         (TRANSFER_FROM_TRAMPOLINE): Prototype mprotect.
1867         * config/alpha/osf.h: Define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX,
1868         not HANDLE_PRAGMA_EXTERN_PREFIX.
1869         (TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_EXTERN_PREFIX.
1870         * doc/extend.texi (Solaris Pragmas, Tru64 Pragmas): Combine
1871         into one section "Symbol-Renaming Pragmas"; clarify; document
1872         adjusted semantics.
1873
1874         * builtins.c (expand_builtin): Do not issue error for a builtin
1875         with no special case code and no DECL_ASSEMBLER_NAME; just do the
1876         library call.
1877         * c-decl.c (builtin_function): Don't call make_decl_rtl.
1878         * c-objc-common.c (has_c_linkage): Stub implementation.
1879         * cgraphunit.c (cgraph_expand_function)
1880         (cgraph_remove_unreachable_nodes): Don't clear DECL_ARGUMENTS.
1881
1882 2004-06-19  Roger Sayle  <roger@eyesopen.com>
1883
1884         * builtins.c (fold_builtin_unordered_cmp): Take an EXP argument
1885         instead of both an ARGLIST and a result TYPE.  Handle these C99
1886         comparison functions as "polymorphic" builtins.  Also handle
1887         lowering of BUILT_IN_ISUNORDERED to an UNORDERED_EXPR tree node.
1888         (fold_builtin_1): Update calls to fold_builtin_unordered_cmp.
1889         Move handling of BUILT_IN_ISUNORDERED from here to there.
1890
1891 2004-06-19  Richard Henderson  <rth@redhat.com>
1892
1893         * c-common.c, c-common.h (lang_gimplify_stmt): Remove.
1894         * c-gimplify.c: Remove unnecessary prototypes.
1895         (c_gimplify_stmt): Merge into ...
1896         (c_gimplify_expr): ... here.  Don't play with prep_stmt.
1897         * c-semantics.c (prep_stmt): Remove.
1898         * gimplify.c (annotate_one_with_locus): Break out from ...
1899         (annotate_all_with_locus): ... here.
1900         (gimplify_expr): Add locus to expressions even if pre/post queues
1901         are not present.
1902
1903 2004-06-19  Richard Henderson  <rth@redhat.com>
1904
1905         PR target/15941
1906         * function.c (assign_parms): If not padding upward or intentionally
1907         forcing upward padding, take offset_rtx into account when determining
1908         the alignment for stack_parm.
1909
1910 2004-06-19  Richard Henderson  <rth@redhat.com>
1911
1912         PR target/15550
1913         * ifcvt.c (noce_try_move): Recognize all generated instructions.
1914
1915 2004-06-19  Jan Hubicka  <jh@suse.cz>
1916
1917         * function.c (free_after_compilation): Do not free computed_goto_common*.
1918         * function.h (struct function): Kill computed_goto_common*.
1919         * stmt.c (expand_computed_goto): Do not commonize the computed gotos.
1920         * tree-cfg.c (disband_implicit_edges): Do not forward across the
1921         commonized computed goto.
1922
1923 2004-06-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1924
1925         * doc/invoke.texi: Remove obsolete comment regarding PA 2.0 support
1926         in binutils.
1927
1928 2004-06-19  Andrew Pinski  <apinski@apple.com>
1929
1930         PR c++/15721
1931         * toplev.c (wrapup_global_declarations): Do not check
1932         TREE_SYMBOL_REFERENCED of the DECL_ASSEMBLER_NAME but check
1933         cgraph_varpool_node's needed field.
1934
1935 2004-06-19  Jan Hubicka  <jh@suse.cz>
1936             Steven Bosscher  <stevenb@suse.de>
1937
1938         CFG transparent RTL expansion:
1939         * Makefile.in (cfgexpand.o): New object file.
1940         (builtins.o): Add dependency on basic-block.h
1941         * builtins.c: Include basic-block.h
1942         (entry_of_function): New function.
1943         (expand_builtin_apply_args, expand_builtin_saveargs): Use it.
1944         * cfgexpand.c: New file.
1945         * expr.c (execute_expand, pass_expand): Kill.
1946         * pass.c (rest_of_compilation): Do not build CFG unless called from
1947         coverage code.
1948         * tree-cfg.c (delete_tree_cfg): Rename to..
1949         (delete_tree_cfg_annotations): ... this one; Do not remove the CFG itself.
1950         * tree-flow.h (delete_tree_cfg_annotations): Declare.
1951         (dleete_tree_cfg): Kill.
1952         * tree-optimize.c (execute_rebuild_bind, pass_rebuild_bind): Kill.
1953         (execute_del_cfg): Rename to...
1954         (execute_free_datastructures): This one...
1955         (pass_del_cfg): Rename to...
1956         (pass_free_datastructures): ... this one; Do not kill PROP_cfg.
1957         (init_tree_optimization_passes): Make cfg build and profiling to happen
1958         unconditionally.
1959
1960 2004-06-19  Steven Bosscher  <stevenb@suse.de>
1961
1962         * tree-mudflap.c (mf_decl_cache_locals): Skip labels before
1963         inserting the cache variables.
1964
1965         * tree-mudflap.c: Include headers to make basic_block available.
1966         Move functions around such that related functions are near each
1967         other.  Add prototypes for all static functions.  Add comments
1968         briefly explaining what IR the mudflap1 and mudflap2 work on and
1969         what they do.
1970         (mudflap_function_decls): Rename to execute_mudflap_function_decls.
1971         (mudflap_function_ops): Rename to execute_mudflap_function_ops.
1972         (pass_mudflap_1, pass_mudflap_2): Update.
1973         (mf_decl_cache_locals): Make it work on the CFG instead of the saved
1974         function tree.
1975         (mf_build_check_statement_for): Make it work on the CFG.
1976         (mf_xform_derefs_1): Likewise.  Cleanup code style.
1977         (mf_xform_derefs): Likewise.
1978
1979 2004-06-19  Jan Hubicka  <jh@suse.cz>
1980
1981         * tree-cfg.c (label_to_block): Invent the label destination for
1982         undefined labels.
1983         (cleanup_dead_labels): Update table in the case label_to_block added
1984         new label.
1985
1986 2004-06-18  Richard Henderson  <rth@redhat.com>
1987
1988         PR c++/16036
1989         * gimple-low.c (lower_function_body): Generate return statement for
1990         fall off the end of the function here ...
1991         * tree-cfg.c (make_edges): ... instead of here.
1992         * gimplify.c (gimplify_return_expr): Mark return temp TREE_NO_WARNING.
1993
1994 2004-06-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
1995
1996         * tree-ssa.c (raise_value): Removed.
1997         (get_eq_name, check_phi_redundancy): New functions.
1998         (kill_redundant_phi_nodes): Use standard ssa minimalization algorithm.
1999
2000 2004-06-18  Roger Sayle  <roger@eyesopen.com>
2001
2002         * fold-const.c (fold) <UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR,
2003         UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR>: Add
2004         constant folding for unordered comparison tree nodes.  If both
2005         operands are real constants, call fold_relational_const.  If either
2006         operand is a NaN, evaluate the other for side-effects and return a
2007         constant.  Optimize (double)float1 CMP (double)float2 into the
2008         equivalent float1 CMP float2.
2009         (nondestructive_fold_binary_to_constant) <UNORDERED_EXPR,
2010         ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR,
2011         LTGT_EXPR>: Call fold_relational_const for constant operands.
2012         (fold_relational_const): Add support for unordered comparison tree
2013         nodes.  Don't constant fold "ordered" floating point comparisons
2014         against NaN if when flag_trapping_math is set.
2015
2016 2004-06-19  Jakub Jelinek  <jakub@redhat.com>
2017
2018         * fold-const.c (build_range_check): If !in_p and recursive call
2019         fails, exit immediately.  If high - low overflows and etype is
2020         a signed type, retry with unsigned etype.
2021         (merge_ranges): If !in0_p and !in1_p, handle even range2 adjacent
2022         to range1 at TYPE_MAX_VALUE and TYPE_MIN_VALUE.
2023
2024 2004-06-18  Richard Henderson  <rth@redhat.com>
2025
2026         * c-gimplify.c (gimplify_condition): Remove.
2027         (gimplify_c_loop, gimplify_if_stmt, gimplify_switch_stmt): Don't
2028         call it.
2029
2030 2004-06-18  Richard Henderson  <rth@redhat.com>
2031
2032         * tree-eh.c (decide_copy_try_finally): Fix scaling of copy and
2033         switch estimates.
2034
2035 2004-06-18  Andrew Pinski  <pinskia@physics.uc.edu>
2036
2037         * config/i386/darwin.h (HOT_TEXT_SECTION_NAME): Define.
2038         (NORMAL_TEXT_SECTION_NAME): Define.
2039         (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Define.
2040         (SECTION_FORMAT_STRING): Define.
2041
2042 2004-06-18  Steven Bosscher  <stevenb@suse.de>
2043
2044         * config/xtensa/xtensa.c
2045         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define.
2046         * xtensa.md: Replace the old pipeline description with a DFA model.
2047
2048 2004-06-18  Steven Bosscher  <stevenb@suse.de>
2049             Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
2050
2051         * config/s390/s390.md: Remove the generic pipeline description.
2052         * config/s390/2064.md: Make all insn reservations apply to
2053         the z900, g5 and g6.
2054         * config/s390/s390.c (s390_use_dfa_pipeline_interface): Remove.
2055         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE):
2056         Define to hook_int_void_1.
2057         (s390_adjust_cost): Cleanup.  Don't check address dependency here.
2058         (s390_first_cycle_multipass_dfa_lookahead): Always return 4.
2059
2060 2004-06-18  Daniel Berlin  <dberlin@dberlin.org>
2061                         Diego Novillo  <dnovillo@redhat.com>
2062
2063         * tree-dfa.c (create_var_ann): tree_ann -> tree_ann_t.
2064         (create_stmt_ann): Ditto.
2065         (create_tree_ann): New function.
2066         (create_cst_ann): Remove.
2067         (create_expr_ann): Ditto.
2068
2069         * tree-flow-inline.h (cst_ann): Remove.
2070         (get_cst_ann): Ditto.
2071         (get_expr_ann): Ditto.
2072         (expr_ann): Ditto.
2073         (get_tree_ann): New function.
2074         (tree_ann): Ditto.
2075         (ann_type): tree_ann -> tree_ann_t.
2076         * tree-flow.h (tree_ann_type): CST_ANN, EXPR_ANN removed.
2077         (struct cst_ann_d): Removed.
2078         (struct expr_ann_d): Ditto.
2079         (union tree_ann_d): Removed cst and expr.
2080         (tree_ann): Renamed to tree_ann_t.
2081         * tree-ssa-ccp.c (set_rhs): tree_ann -> tree_ann_t.
2082         * tree-ssa-pre.c (get_value_handle): Rewrite for single common
2083         annotation.
2084         (set_value_handle): Ditto.
2085         (phi_translate): Ditto.
2086         * tree-tailcall.c (adjust_return_value): tree_ann -> tree_ann_t.
2087
2088 2004-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2089
2090         * config/sh/t-linux64: New file.
2091         * config.gcc: Add it to tmake_file for sh64*-*-linux*.
2092
2093 2004-06-18  Paolo Bonzini  <bonzini@gnu.org>
2094
2095         * emit-rtl.c (unshare_all_rtl_1): New name of unshare_all_rtl.
2096         (unshare_all_rtl_again): Call unshare_all_rtl_1.
2097         (unshare_all_rtl): New.
2098         * function.c (instantiate_virtual_regs): Remove parameters.
2099         * function.h (instantiate_virtual_regs): Add prototype.
2100         * rtl.h (unshare_all_rtl): Add prototype.
2101         * tree.h (instantiate_virtual_regs, unshare_all_rtl): Remove
2102         prototype.
2103         * passes.c: Remove assertions on the parameters to
2104         rest_of_handle_* functions.  Remove the parameters to
2105         the functions, replacing decl with current_function_decl
2106         and insns with get_insns ().
2107
2108 2004-06-17  Roger Sayle  <roger@eyesopen.com>
2109
2110         * fold-const.c (constant_boolean_node): Handle boolean_type_node
2111         directly, return either boolean_true_node or boolean_false_node.
2112
2113 2004-06-18  Kelley Cook  <kcook@gcc.gnu.org>
2114
2115         * opts.sh: Delete.  Break out generated code to next four files.
2116         * opt-gather.awk: New file.
2117         * optc-gen.awk: New file.
2118         * opth-gen.awk: New file.
2119         * opt-functions.awk: New common file.
2120         * Makefile.in: Update for above.
2121         * configure.ac: Update comment.
2122         * configure: Regenerate.
2123
2124 2004-06-17  Richard Henderson  <rth@redhat.com>
2125
2126         * c-common.c (flag_objc_sjlj_exceptions): New.
2127         * c-common.h (flag_objc_sjlj_exceptions): Declare.
2128         * c-opts.c (c_common_handle_option): Set it.
2129         (c_common_post_options): Handle interation of different
2130         objective-c exception and runtime switches.
2131         * c-decl.c (c_eh_initialized_p): New.
2132         (finish_decl): Use it instead of local eh_initialized_p.
2133         * c-parse.in (nested_function, notype_nested_function): Record
2134         the result of compstmt.
2135         (compstmt_or_error): Likewise.
2136         (compstmt): Don't add_stmt the result.
2137         (stmt): Don't return anything.  Rewrite objc try and sync rules.
2138         (objc_try_stmt, objc_catch_list): Remove.
2139         (objc_catch_block, objc_finally_block): Remove.
2140         (objc_catch_prefix, objc_catch_clause, objc_opt_catch_list): New.
2141         (objc_try_catch_clause, objc_finally_clause): New.
2142         (objc_try_catch_stmt): Rewrite.
2143         * c-tree.h (c_eh_initialized_p): Declare.
2144         * c-opt (fobjc-sjlj-exceptions): New.
2145         * except.c (output_function_exception_table): Don't call cgraph
2146         on non-decls.
2147         * objc/objc-act.c (UTAG_EXCDATA_VAR, UTAG_CAUGHTEXC_VAR,
2148         UTAG_RETHROWEXC_VAR, UTAG_EVALONCE_VAR, struct val_stack,
2149         catch_count_stack, exc_binding_stack, if_nesting_count,
2150         blk_nesting_count, objc_enter_block, objc_exit_block,
2151         objc_declare_variable, val_stack_push, val_stack_pop,
2152         objc_build_try_enter_fragment, objc_build_extract_expr,
2153         objc_build_try_exit_fragment, objc_build_extract_fragment,
2154         objc_build_try_prologue, objc_build_try_epilogue,
2155         objc_build_catch_stmt, objc_build_catch_epilogue,
2156         objc_build_finally_prologue, objc_build_finally_epilogue,
2157         objc_build_try_catch_finally_stmt, objc_build_synchronized_prologue,
2158         objc_build_synchronized_epilogue): Remove.
2159         (objc_create_temporary_var, struct objc_try_context, cur_try_context,
2160         objc_eh_runtime_type, objc_init_exceptions, objc_build_exc_ptr,
2161         next_sjlj_build_try_exit, next_sjlj_build_enter_and_setjmp,
2162         next_sjlj_build_exc_extract, next_sjlj_build_catch_list,
2163         next_sjlj_build_try_catch_finally, objc_begin_try_stmt,
2164         objc_begin_catch_clause, objc_finish_catch_clause,
2165         objc_build_finally_clause, objc_finish_try_stmt,
2166         objc_build_synchronized): New.
2167         (objc_is_object_id, objc_is_class_id): New.
2168         (objc_comptypes): Use them.
2169         (build_next_objc_exception_stuff): Break NeXT sjlj out from
2170         build_objc_exception_stuff.
2171         (synth_module_prologue): Update to match.
2172         (objc_build_throw_stmt): Use cur_try_context to decide if
2173         we're in a @catch.
2174         * objc/objc-act.h: Update prototypes.
2175         (OCTI_EXCEPTION_BLK_STACK, objc_exception_block_stack): Remove.
2176
2177 2004-06-17  Andrew Pinski <apinski@apple.com>
2178
2179         * c-typeck.c (tagged_types_tu_compatible_p <case UNION_TYPE>):
2180         Use TYPE_FIELDS instead of TYPE_VALUES.
2181
2182 2004-06-17  Jason Merrill  <jason@redhat.com>
2183
2184         PR c++/16015
2185         * gimplify.c (gimplify_target_expr): Handle void initializer.
2186         * expr.c (expand_expr_real_1) [TARGET_EXPR]: Likewise.
2187         * doc/c-tree.texi (Expression trees): Update TARGET_EXPR
2188         and AGGR_INIT_EXPR.
2189
2190 2004-06-17  Roger Sayle  <roger@eyesopen.com>
2191
2192         * fold-const.c (fold_relational_const): Use constant_boolean_node.
2193
2194 2004-06-17  Jan Hubicka  <jh@suse.cz>
2195
2196         PR target/15433
2197         * i386.md (SSE SF cmov 0 splitter): The conditional is VOIDmode; fix
2198         operand numbering in the output template.
2199         (SSE DF cmov 0 splitter): The conditional is VOIDmode.
2200
2201 2004-06-17  Jan Hubicka  <jh@suse.cz>
2202
2203         * except.c (can_throw_internal): Recognize RESX expresisons.
2204
2205 2004-06-17  Jan Hubicka  <jh@suse.cz>
2206
2207         * cfgbuild.c (make_edges): Do not use label_value_list.
2208         (find_basic_blocks_1): Do not collect label_value_list.
2209         (find_sub_basic_blocks): Update call of make_edges.
2210
2211 2004-06-17  Andrew MacLeod  <amacleod@redhat.com>
2212
2213         * tree-cfg.c (tree_make_forwarder_block):  Use SET_PHI_RESULT.
2214         * tree-flow-inline.h (get_use_op_ptr):  Return a use_operand_p.
2215         (get_use_from_ptr, get_def_from_ptr):  New.  Return operand pointers.
2216         (get_def_op_ptr):  Return a def_operand_p instead of a 'tree *'.
2217         (get_v_may_def_result_ptr):  Return a def_operand_p.
2218         (get_v_may_def_op_ptr, get_vuse_op_ptr):   Return a use_operand_p.
2219         (get_v_must_def_op_ptr):  Return a def_operand_p.
2220         (get_phi_result_ptr):  New.  Return a pointer to the result of a PHI.
2221         (get_phi_arg_def_ptr):  New.  Return a pointer to an argument of a PHI.
2222         (phi_element_for_edge):  Remove.
2223         * tree-flow.h (propagate_value, replace_exp):  Change prototype.
2224         (propagate_tree_value):  Add new prototype.
2225         (phi_element_for_edge):  Remove prototype.
2226         * tree-into-ssa.c (mark_def_sites):  Use new operand types.
2227         (prepare_operand_for_rename):  Split into two functions.
2228         (prepare_use_operand_for_rename):  Prepare use operands.
2229         (prepare_def_operand_for_rename):  Prepare def operands.
2230         (rewrite_stmt):  Use new operand types.
2231         (rewrite_operand):  Use new operand types, change parameter type.
2232         * tree-outof-ssa.c (replace_variable):  Split into two functions.
2233         (replace_use_variable):  Rewrite uses.
2234         (replace_def_variable):  Rewrite defs.
2235         (rewrite_trees, rewrite_vars_out_of_ssa):  Use new operand types.
2236         * tree-phinodes.c (make_phi_node, resize_phi_node):  Use new types.
2237         (add_phi_arg, remove_phi_arg_num):  Use new operand types.
2238         * tree-ssa-ccp.c (substitute_and_fold):  Use new operand types.
2239         (ccp_fold, replace_uses_in):  Use new operand types.
2240         * tree-ssa-copy.c (replace_ssa_names):  Rename to replace_ssa_names_ann
2241         and no longer set the value, change parameter type.
2242         (replace_exp_1):  Use new operand types.
2243         (propagate_value):  Change parameter type, use new operand types.
2244         (propagate_tree_value):  Propagate_value without SSA operands.
2245         (replace_exp, cprop_operand, cprop_into_stmt):  Use new operand types.
2246         (cprop_into_successor_phis):  Use new operand types.
2247         * tree-ssa-dom.c (thread_across_edge):  Use new operand types.
2248         (eliminate_redundant_computations):  Use new operand types.
2249         * tree-ssa-dse.c (fix_phi_uses):  Use new operand_types.
2250         (fix_stmt_v_may_defs):  Use new operand_types.
2251         * tree-ssa-live.c (create_ssa_var_map):  Use new operand_types.
2252         (build_tree_conflict_graph):  Use new operand_types.
2253         * tree-ssa-loop.c (duplicate_blocks):  Use PHI_ARG_DEF_FROM_EDGE.
2254         * tree-ssa-operands.c (struct freelist_d):  Remove.
2255         (check_optype_freelist, add_optype_freelist):  Remove.
2256         (allocate_def_optype, allocate_use_optype, allocate_v_may_def_optype,
2257         allocate_vuse_optype, allocate_v_must_def_optype):  Call ggc_alloc.
2258         (free_uses, free_defs, free_vuses, free_v_may_defs, free_v_must_defs):
2259         Call ggc_free instead of add_optype_freelist.
2260         (init_ssa_operands, fini_ssa_operands):  Remove free list code.
2261         (finalize_ssa_defs, finalize_ssa_uses):  Set new use/def operands.
2262         * tree-ssa-operands.h (struct def_optype_d):  Change underlying type.
2263         (struct use_optype_d):  Change underlying type.
2264         (def_operand_p, use_operand_p):  New types for pointers to operands.
2265         (USE_OP, DEF_OP, V_MAY_DEF_RESULT, V_MAY_DEF_OP, VUSE_OP,
2266         V_MUST_DEF_OP):  Use new pointer type instead of dereferencing directly.
2267         (USE_FROM_PTR, DEF_FROM_PTR):  New macros to "dereference" operand
2268         pointer types.
2269         (SET_USE, SET_DEF):  New macros to set operands from their pointer.
2270         (SET_USE_OP, SET_DEF_OP, SET_V_MAY_DEF_RESULT, SET_V_MAY_DEF_OP,
2271         SET_VUSE_OP, SET_V_MUST_DEF_OP): New SET routines for operands.
2272         (PHI_RESULT_PTR, PHI_RESULT, SET_PHI_RESULT):  Macros to manage the
2273         PHI result as an operand.
2274         (PHI_ARG_DEF_PTR, PHI_ARG_DEF, SET_PHI_ARG_DEF, PHI_ARG_DEF_FROM_EDGE,
2275         PHI_ARG_DEF_PTR_FROM_EDGE):  Macros to manage the PHI arguments.
2276         * tree-ssa-pre.c (eliminate):  Call propagate_tree_value.
2277         * tree-tailcall.c (independent_of_stmt_p, propagate_through_phis):  Use
2278         PHI_ARG_DEF_FROM_EDGE.
2279         * tree.h (PHI_RESULT):  Renamed to PHI_RESULT_TREE.
2280         (PHI_ARG_DEF):  Renamed to PHI_ARG_DEF_TREE.
2281
2282 2004-06-17  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
2283
2284         PR tree-optimization/15991
2285         * tree-cfg.c (tree_block_label): Export.
2286         * tree-flow-inline.h (bsi_after_labels): New function.
2287         * tree-flow.h (bsi_after_labels, tree_block_label): Declare.
2288         * tree-ssa.c (propagate_into_addr): New function.
2289         (replace_immediate_uses): Handle propagation of pointer constants.
2290         (raise_value): Do not restrict propagation of pointer constants.
2291         * tree-ssanames.c (duplicate_ssa_name): New function.
2292         * tree.h (duplicate_ssa_name): Declare.
2293
2294 2004-06-17  David Ayers  <d.ayers@inode.at>
2295
2296         * c-parse.in: Unify Objective-C token names.
2297
2298 2004-06-17  Zack Weinberg  <zack@codesourcery.com>
2299
2300         Bug 14610
2301         * Makefile.in (min-insn-modes.o): Correct dependencies.
2302         * real.c (encode_ieee_extended, decode_ieee_extended): Always
2303         produce/consume 12-byte little-endian Intel format.
2304         (encode_ieee_extended_128, decode_ieee_extended_128): Delete.
2305         (encode_ieee_extended_motorola, decode_ieee_extended_motorola)
2306         (encode_ieee_extended_intel_96, decode_ieee_extended_intel_96)
2307         (encode_ieee_extended_intel_128, decode_ieee_extended_intel_128):
2308         New functions which convert between 12-byte little-endian Intel
2309         format and the desired format.
2310         (ieee_extended_motorola_format, ieee_extended_intel_96_round_53_format)
2311         (ieee_extended_intel_96_format, ieee_extended_intel_128_format):
2312         Update.
2313
2314 2004-06-17  Zack Weinberg  <zack@codesourcery.com>
2315
2316         * expmed.c (expand_mult_const): In sanity check, compare only
2317         the bits of val and val_so_far that are significant in the
2318         result mode.
2319
2320 2004-06-17  Daniel Berlin  <dberlin@dberlin.org>
2321
2322         * tree-ssa-pre.c:  Update comments.
2323         (val_expr_pair_eq): Factor code from here.
2324         (expr_pred_trans_eq): and here.
2325         (expressions_equal_p): To here.
2326         (print_value_set): Print value for expression.
2327         (phi_trans_lookup): Rename some variables.
2328         (lookup): Ditto.
2329         (value_exists_in_set_bitmap): Ditto.
2330         (value_remove_from_set_bitmap): Ditto.
2331         (value_insert_into_set_bitmap): Ditto.
2332
2333 2004-06-17  Ulrich Weigand  <uweigand@de.ibm.com>
2334
2335         * config/s390/s390-modes.def (CCL3mode): New machine mode.
2336         * config/s390/s390.c (s390_match_ccmode_set): Support CCL3mode.
2337         (s390_alc_comparison, s390_slb_comparison): Likewise.
2338         (s390_branch_condition_mask): Likewise.
2339         * config/s390/s390.md ("*subdi3_cc2", "*subdi3_cconly2"): New.
2340         ("*subsi3_cc2", "*subsi3_cconly2"): New.
2341
2342         * config/s390/s390.h (PREDICATE_CODE): Accept SIGN_EXTEND and
2343         ZERO_EXTEND for s390_alc_comparison and s390_slb_comparison.
2344         * config/s390/s390.c (s390_alc_comparison, s390_slb_comparison):
2345         Handle SIGN_EXTEND and ZERO_EXTEND.
2346
2347         * config/s390/s390-protos.h (s390_expand_addcc): New prototype.
2348         * config/s390/s390.c (s390_expand_addcc): New function.
2349         * config/s390/s390.md ("adddicc", "addsicc"): New expanders.
2350         ("*sconddi", "*scondsi", "*sconddi_neg", "*scondsi_neg"): New insns.
2351         ("sltu", "sgtu", "sleu", "sgeu"): New expanders.
2352
2353 2004-06-17  Ben Elliston  <bje@au.ibm.com>
2354
2355         * tree-alias-common.c: Add whitespace.
2356         * tree-inline.c: Correct comment about this file's purpose.
2357         * tree-optimize.c: Likewise.
2358         * tree-tailcall.c: Likewise.
2359
2360         * tree-alias-ander.h: Add standard top-of-file comment.
2361         * tree-alias-common.h: Likewise.
2362         * tree-alias-type.h: Likewise.
2363
2364 2004-06-16  Daniel Berlin  <dberlin@dberlin.org>
2365
2366         * tree-ssa-pre.c (compute_avail): Value number uses as well.
2367         Strip useless type conversions.
2368         Casts have to be treated slightly different than normal unaries.
2369
2370 2004-06-16  Richard Henderson  <rth@redhat.com>
2371
2372         * c-common.def (COMPOUND_STMT): Remove.
2373         * c-common.c (finish_fname_decls): Don't look through it.
2374         * c-typeck.c (c_tree_expr_nonnegative_p): Likewise.
2375         * c-common.h (COMPOUND_BODY): Remove.
2376         (c_common_stmt_codes): Remove COMPOUND_STMT.
2377         * c-dump.c (c_dump_tree): Likewise.
2378         * c-gimplify.c (c_gimplify_stmt): Likewise.
2379         * c-pretty-print.c (pp_c_statement): Likewise.
2380         * tree.h (DECL_SAVED_TREE): Update commentary.
2381         * doc/c-tree.texi (ASM_EXPR): Rename from ASM_STMT.
2382         (CASE_LABEL_EXPR): Rename from CASE_LABEL.
2383         (GOTO_EXPR): Rename from GOTO_STMT.
2384         (GOTO_FAKE_P): Remove.
2385         (COMPOUND_STMT): Remove.
2386         (HANDLER): Update wrt COMPOUND_STMT.
2387         (STMT_EXPR): Likewise.
2388         (LABEL_EXPR): Rename from LABEL_STMT.
2389         (SCOPE_STMT): Remove.
2390         * objc/objc-act.c (objc_build_try_catch_finally_stmt): Don't look
2391         through COMPOUND_STMT.
2392
2393 2004-06-16  Richard Henderson  <rth@redhat.com>
2394
2395         * c-common.h (c_begin_if_stmt, c_begin_while_stmt,
2396         c_finish_while_stmt_cond): Remove decls.
2397         * c-parse.in (if_prefix): Don't save c_begin_if_stmt result.
2398         * c-typeck.c (c_begin_if_stmt): Return void.
2399         (c_begin_else): Tidy.  Save stmt_count.
2400         * c-tree.h (c_begin_if_stmt): Update decl.
2401
2402         * objc/objc-act.c (objc_build_try_enter_fragment,
2403         objc_build_extract_fragment, objc_build_try_epilogue,
2404         objc_build_catch_stmt, objc_build_catch_epilogue,
2405         objc_build_finally_prologue, objc_build_finally_epilogue): Update
2406         for if builder function changes.
2407
2408 2004-06-16  Ulrich Weigand  <uweigand@de.ibm.com>
2409
2410         * config/s390/s390.c (struct machine_function):  New member
2411         last_restore_gpr.
2412         (s390_frame_info): Add BASE_USED and RETURN_ADDR_USED parameters.
2413         Do not modify machine->save_return_addr_p or regs_ever_live.
2414         Fill in machine->last_restore_gpr.
2415         (s390_optimize_prolog): Use s390_frame_info to compute registers
2416         to save/restore, remove duplicated code.
2417         (s390_arg_frame_offset): Use s390_frame_info to compute frame
2418         size, remove duplicated code.
2419         (s390_emit_prologue): Adapt s390_frame_info call.  Update
2420         machine->save_return_addr_p and regs_ever_live.
2421         (s390_emit_epilogue): Use machine->last_restore_gpr instead of
2422         machine->last_save_gpr.
2423
2424 2004-06-16  Richard Henderson  <rth@redhat.com>
2425
2426         * c-parse.in (if_stmt_locus): Remove.
2427         (if_prefix): Increment stmt_count; pass it to c_finish_if_cond.
2428         (select_or_iter_stmt): Move empty if warnings to c-typeck.c.
2429         * c-typeck.c (if_elt): Sort by expected size.  Rename locus to
2430         empty_locus.  Add stmt_count, saw_else.
2431         (c_begin_if_stmt): Push if_stack here.
2432         (c_finish_if_cond): Rename from c_expand_end_cond.  Record stmt_count.
2433         (c_finish_then, c_finish_else): Record empty_locus.
2434         (c_begin_else): Rename from c_expand_start_else.  Record stmt_count.
2435         (c_finish_if_stmt): Rename from c_expand_end_cond.  Warn for empty
2436         if or else body.
2437         * c-tree.h: Update prototypes.
2438
2439 2004-06-16  Steven Bosscher  <stevenb@suse.de>
2440
2441         * tree.h (PHI_CHAIN): New.
2442         * (tree-cfg.c, tree-dfa.c, tree-flow-inline.h, tree-into-ssa.c,
2443         tree-outof-ssa.c, tree-phinodes.c, tree-pretty-print.c,
2444         tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-dom.c, tree-ssa-dse.c,
2445         tree-ssa-live.c, tree-ssa-loop.c, tree-ssa-phiopt.c, tree-ssa-pre.c,
2446         tree-ssa.c, tree-tailcall.c): Use PHI_CHAIN instead of TREE_CHAIN
2447         when traversing a list of PHI_NODEs.
2448
2449 2004-06-16  Bernardo Innocenti  <bernie@develer.com>
2450
2451         PR target/13292
2452         * config/m68k/m68k.h (TARGET_SWITCHES): Don't remove MASK_68040_ONLY
2453         on -msoft-float.
2454         (TARGET_FLT_EVAL_METHOD): Don't advertise extended precision for
2455         68040 and soft-float.
2456         * config/m68k/m68k.md (truncdfsf2): Explicitly require TARGET_68881
2457         in the TARGET_68040_ONLY case.
2458
2459 2004-06-16 Peter Barada  <peter@the-baradas.com>
2460
2461         * config/m68k/m68k.md (movsi_cfv4): New pattern to allow mov3q.
2462         (movsi_cf): Make named, don't match TARGET_CFV4.
2463         (pushexthisi_const): Use mov3q if possible.
2464         (extendhisi2, cvf4_extendhisi2): Split extendhisi2 pattern
2465         to special case mvz.w for ColdFire V4.
2466         (extendqisi2, cvf4_extendqisi2): Split extendhisi2 pattern
2467         to special case mvz.b for ColdFire V4.
2468         (udivmodhi4, divmodhi4): Use mvz to zero extend arg for
2469         divide.
2470         (iorsi3, xorsi3, andsi3): Use bitfield instructions if possible.
2471         * config/m68k/m68k.c(valid_mov3q_const):  New function.
2472         (const_method): SWAP is valid for ColdFire.
2473         (MULL_COST, MULW_COST): Fix costs for ColdFire V3/V4.
2474         * config/m68k/m68k-protos.h (valid_mov3q_const): Prototype here.
2475
2476 2004-06-16  Richard Henderson  <rth@redhat.com>
2477
2478         * c-common.def (CASE_LABEL): Remove.
2479         * c-common.c (c_add_case_label): Use CASE_LABEL, not CASE_LABEL_DECL.
2480         (match_case_to_enum_1): Likewise.
2481         * c-common.h (c_common_stmt_codes): Remove CASE_LABEL.
2482         * c-dump.c (c_dump_tree): Likewise.
2483         * c-gimplify.c (c_gimplify_stmt): Likewise.
2484         * c-pretty-print.c (pp_c_statement): Likewise.
2485         * c-semantics.c (build_case_label): Use CASE_LABEL_EXPR.
2486         * tree.h (CASE_LOW): Update commentary.
2487
2488 2004-06-16  Richard Henderson  <rth@redhat.com>
2489
2490         * c-common.def (ASM_STMT): Remove.
2491         * c-common.h (c_common_stmt_codes): Remove ASM_STMT.
2492         * c-dump.c (c_dump_tree): Likewise.
2493         * c-gimplify.c (c_gimplify_stmt): Likewise.
2494         * c-pretty-print.c (pp_c_statement): Likewise.
2495         * c-typeck.c (build_asm_expr): Use ASM_EXPR.
2496         * tree.h: Fix commentary.
2497
2498 2004-06-16  Richard Henderson  <rth@redhat.com>
2499
2500         * c-common.def (GOTO_STMT, LABEL_STMT): Remove.
2501         * c-common.c (c_add_case_label): Use LABEL_EXPR.
2502         * c-common.h (GOTO_FAKE_P, LABEL_STMT_LABEL): Remove.
2503         (c_common_stmt_codes): Remove GOTO_STMT, LABEL_STMT.
2504         * c-dump.c (c_dump_tree): Likewise.
2505         * c-gimplify.c (c_gimplify_stmt): Likewise.
2506         * c-pretty-print.c (pp_c_statement): Likewise.
2507         * c-parse.in (stmt): Use GOTO_EXPR.
2508         (label): Use LABEL_EXPR.
2509         * c-semantics.c (build_stmt): Set TREE_TYPE to void.
2510         * tree-inline.c (copy_body_r): Don't build empty BLOCKs.
2511
2512 2004-06-16  J"orn Rennecke <joern.rennecke@superh.com>
2513
2514         * cfgcleanup.c (try_simplify_condjump): Update test to make
2515         sure we have a conditional branch around am unconditional branch.
2516
2517 2004-06-16  Daniel Berlin  <dberlin@dberlin.org>
2518
2519         * tree-cfg.c (pass_split_crit_edge): Give it a name and a dump file.
2520
2521 2004-06-16  Dale Johannesen  <dalej@apple.com>
2522
2523         * loop.c (loop_givs_reduce): Avoid miscompilation of
2524         loops entered at bottom.
2525
2526 2004-06-16  J"orn Rennecke <joern.rennecke@superh.com>
2527
2528         * cfglayout.c (fixup_reorder_chain): Handle case where the
2529         destination of E_FALL is EXIT_BLOCK_PTR.
2530
2531 2004-06-16  Vladimir Makarov  <vmakarov@redhat.com>
2532
2533         PR target/15653
2534         * config/ia64/ia64.c (ia64_dfa_new_cycle): Do not insert nops
2535         after shifts before asm.
2536
2537 2004-06-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
2538
2539         PR tree-optimization/15993
2540         * tree-ssa-dom.c (thread_across_edge): Do not thread edge if its
2541         destination is unchanged.
2542
2543 2004-06-16  Andreas Jaeger  <aj@suse.de>
2544
2545         * doc/install.texi (Configuration): Update description for
2546         --enable-version-specific-runtime-libs.
2547
2548 2004-06-16  Paolo Bonzini  <bonzini@gnu.org>
2549
2550         * doc/install.texi: boehm-gc now uses automake 1.8.5.
2551
2552 2004-06-16  Paolo Bonzini  <bonzini@gnu.org>
2553
2554         * toplev.h (rest_of_compilation): Adjust prototype.
2555
2556 2004-06-16  Paolo Bonzini  <bonzini@gnu.org>
2557
2558         * coverage.c: Remove argument to rest_of_compilation.
2559         * expr.c (execute_expand, set_save_expr_context, pass_expand): New.
2560         * passes.c (rest_of_compilation): Remove argument.
2561         (pass_rest_of_compilation): New.
2562         (rest_of_handle_final, rest_of_handle_delay_slots,
2563         rest_of_handle_stack_regs, rest_of_handle_variable_tracking
2564         rest_of_handle_machine_reorg, rest_of_handle_regrename
2565         rest_of_handle_sched, rest_of_handle_sched2, rest_of_handle_gcse2
2566         rest_of_handle_regmove, rest_of_handle_tracer
2567         rest_of_handle_if_conversion, rest_of_handle_if_after_combine
2568         rest_of_handle_web, rest_of_handle_branch_prob
2569         rest_of_handle_value_profile_transformations, rest_of_handle_cfg
2570         rest_of_handle_addressof, rest_of_handle_jump_bypass
2571         rest_of_handle_life, rest_of_handle_cse, rest_of_handle_cse2):
2572         Check that the two arguments are actually superfluous.
2573         * tree-optimize.c (register_dump_files): Add properties argument.
2574         Track validity of passes.  Only initialize dump files for
2575         tree-based passes.  Store the full set of provided passes in
2576         the pass.
2577         (init_tree_optimization_passes): Register pass_expand and
2578         pass_rest_of_compilation.
2579         (execute_one_pass): Do not track the presence of required properties
2580         here.  Set in_gimple_form.  Do not update current_properties.
2581         (current_properties): Remove.
2582         (set_save_expr_context): Remove.
2583         (tree_rest_of_compilation): Do not set in_gimple_form.  Do not
2584         expand to RTL here, and do not call rest_of_compilation.  Push
2585         GGC context even before gimplification.
2586         * tree-pass.h (PROP_rtl, PROP_trees): New flags.
2587         (pass_expand, pass_rest_of_compilation): Declare.
2588
2589 2004-06-15  Jeff Law  <law@redhat.com>
2590
2591         * fold-const.c (swap_tree_comparison): No longer static.
2592         (tree_swap_operands_p): Similarly.  Return true if both operands
2593         are SSA_NAMEs and the first operand has a higher version number than
2594         the second operand.
2595         * tree.h (swap_tree_comparison): Prototype.
2596         (tree_swap_operands_p): Prototype.
2597         * tree-ssa-operands.c (get_expr_operands): For commutative
2598         operators and relational comparisons, canonicalize the
2599         order of the operands.
2600
2601 2004-06-15  Richard Henderson  <rth@redhat.com>
2602
2603         * c-common.c (lang_gimplify_stmt): Remove next_p argument.
2604         (if_elt, if_stack, if_stack_space, c_expand_start_cond, c_finish_then,
2605         c_expand_end_cond, c_expand_start_else, c_finish_else, c_begin_if_stmt,
2606         c_begin_while_stmt, c_finish_while_stmt_cond): Move to c-typeck.c.
2607         (finish_fname_decls, fname_decl): Use statement_lists.
2608         (c_expand_expr_stmt): Don't set last_expr_type.
2609         (c_type_hash): Fix indentation.
2610         (c_safe_from_p): Don't follow TREE_CHAIN.
2611         (c_tree_chain_matters_p): Remove.
2612         * c-common.def (SCOPE_STMT): Remove.
2613         (CLEANUP_STMT): Redefine to contain its own body.
2614         * c-common.h (struct stmt_tree_s): Remove x_last_stmt,
2615         x_last_expr_type, x_last_expr_filename, x_scope_stmt_stack.
2616         Add x_cur_stmt_list.
2617         (last_tree, last_expr_type, last_expr_filename, RECHAIN_STMTS): Remove.
2618         (cur_stmt_list): New.
2619         (STATEMENT_LIST_STMT_EXPR): New.
2620         (SCOPE_BEGIN_P, SCOPE_END_P, SCOPE_STMT_BLOCK, SCOPE_NULLIFIED_P,
2621         SCOPE_NO_CLEANUPS_P, SCOPE_PARTIAL_P, NEW_FOR_SCOPE_P): Remove.
2622         (CLEANUP_BODY): New.
2623         (CLEANUP_DECL): Move to operand 2.
2624         (c_common_stmt_codes): Remove SCOPE_STMT.
2625         (COMPOUND_STMT_NO_SCOPE, COMPOUND_STMT_BODY_BLOCK): Remove.
2626         * c-decl.c (c_scope_stmt_stack, current_scope_stmt_stack): Remove.
2627         (c_push_function_context, c_pop_function_context): Don't save it.
2628         (finish_decl): Set TREE_USED on the decl for a cleanup.
2629         Use push_cleanup.
2630         (store_parm_decls): Use statement lists.
2631         (finish_function): Remove compstmt rule workaround.  Use statement
2632         lists.  Call finish_fname_decls after finalizing the body.
2633         (c_begin_compound_stmt): Move to c-typeck.c.
2634         * c-dump.c (c_dump_tree): Remove SCOPE_STMT.
2635         * c-gimplify.c (gimplify_cleanup_stmt, gimplify_cleanup_stmts): New.
2636         (c_genericize): Invoke them.
2637         (c_gimplify_stmt): Don't look through TREE_CHAIN.  Kill SCOPE_STMT.
2638         (c_build_bind_expr): Export.
2639         (gimplify_block, gimplify_cleanup): Remove.
2640         (gimplify_condition): Use gimplify_stmt.
2641         (gimplify_for_stmt): Remove FOR_INIT_STMT chaining hack.
2642         (gimplify_if_stmt): Remove recursion hack.
2643         (c_gimplify_expr): Remove STMT_EXPR handling.
2644         (stmt_expr_last_stmt, gimplify_stmt_expr): Remove.
2645         (is_last_stmt_of_scope): Remove.
2646         * c-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
2647         * c-mudflap.c (mflang_flush_calls): Use c_begin_compound_stmt,
2648         c_end_compound_stmt.
2649         * c-objc-common.c (build_cdtor): Likewise.
2650         * c-parse.in (primary): Use c_finish_stmt_expr.
2651         (push_scope, pop_scope): Remove.
2652         (c99_block_start, compstmt_start): Use c_begin_compound_stmt.
2653         (c99_block_end, compstmt): Use c_end_compound_stmt.
2654         (c99_block_lineno_labeled_stmt): Likewise.
2655         (compstmt_primary_start): Use c_begin_stmt_expr.
2656         (simple_if, select_or_iter_stmt): Update calls to stmt builders.
2657         (do_stmt_start): Fill in body directly.
2658         (lineno_stmt): Avoid setting lineno on constants.
2659         * c-pretty-print.c (pp_c_statement): Handle STATEMENT_LIST.
2660         Remove SCOPE_STMT.
2661         * c-semantics.c (begin_stmt_tree): Remove.
2662         (push_stmt_list, re_push_stmt_list, pop_stmt_list): New.
2663         (add_stmt): Use statement lists.
2664         (add_scope_stmt, finish_stmt_tree): Remove.
2665         (push_cleanup): New.
2666         * c-tree.h: Move some decls from c-common.h.
2667         * c-typeck.c (c_tree_expr_nonnegative_p): Simplify for statement lists.
2668         (do_case, c_finish_case): Likewise.
2669         (c_finish_then): Take body for then as argument.
2670         (c_finish_else): Similarly.
2671         (c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond,
2672         c_finish_for_stmt_incr, c_finish_for_stmt): New.
2673         (c_begin_stmt_expr, c_finish_stmt_expr): New.
2674         (c_begin_compound_stmt): Do scope management.
2675         (c_end_compound_stmt): New.
2676         * fold-const.c (tree_expr_nonnegative_p): Fix BIND_EXPR.
2677         * gimplify.c (voidify_wrapper_expr): Accept temporary argument.
2678         Look through exception handling constructs.
2679         (gimplify_bind_expr): Accept temporary argument.
2680         (gimplify_target_expr): Special case BIND_EXPR bodies.
2681         (gimplify_expr): Handle fallback == fb_none like a statement.
2682         * langhooks-def.h (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Kill.
2683         * langhooks.c (lhd_tree_inlining_tree_chain_matters_p): Remove.
2684         * langhooks.h (tree_chain_matters_p): Remove.
2685         * stub-objc.c (objc_clear_super_receiver): New.
2686         * tree-gimple.h (voidify_wrapper_expr): Update decl.
2687         (append_to_statement_list, append_to_statement_list_force): Move
2688         to tree-iterator.h.
2689         * tree-inline.c (expand_call_inline): Update call.
2690         (clone_body): Use statement lists.
2691         (walk_tree): Don't check tree_chain_matters_p.
2692         (copy_tree_r): Likewise.
2693         * tree-iterator.c (alloc_stmt_list): Clear lang bits.
2694         (tsi_link_before, tsi_link_after): Set TREE_SIDE_EFFECTS properly.
2695         * tree-iterator.h (append_to_statement_list,
2696         append_to_statement_list_force): Moved from tree-gimple.h.
2697         * tree-pretty-print.c (dump_generic_node): Clean up TARGET_EXPR dump.
2698         * objc/objc-act.c (build_module_descriptor): Use c_begin_compound_stmt.
2699         (objc_enter_block): Likewise.
2700         (objc_exit_block): Use c_end_compound_stmt.
2701         (objc_build_try_enter_fragment): Add #error and comment for
2702         rewriting for OBJCPLUS.
2703         (objc_build_extract_fragment, objc_build_try_epilogue,
2704         objc_build_catch_stmt, objc_build_finally_prologue,
2705         objc_build_finally_epilogue): Update for C statement builders.
2706         * objc/objc-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P):
2707         Remove.
2708
2709 2004-06-15  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
2710
2711         * df.c (df_reg_clobber_gen): Removed.
2712         (df_bb_rd_local_compute, df_insn_refs_record, df_rd_local_compute):
2713         Make more effective for hard regs.
2714         * ra-build.c (livethrough_conflicts_bb): Check contains_call.
2715
2716 2004-06-15  Alexandre Oliva  <aoliva@redhat.com>
2717
2718         * c-pragma.h (c_lex_string_translate): Change type to int.
2719         * c-parse.in: Change all assignments of c_lex_string_translate
2720         to true and false to 1 and 0.
2721         * c-lex.c (c_lex_string_translate): Likewise.
2722         (lex_string): Convert string without translation in the -1
2723         case.
2724
2725 2004-06-15  Mark G. Adams  <mark.g.adams@sympatico.ca>
2726
2727         * convert.h: Add include guards
2728
2729 2004-06-15  Daniel Berlin  <dberlin@dberlin.org>
2730
2731         * tree-flow-inline.h: Document all functions.
2732
2733 2004-06-15  Daniel Berlin  <dberlin@dberlin.org>
2734
2735         * tree-flow-inline.h (stmt_ann): Remove use of is_essa_node.
2736         * tree-dfa.c (create_stmt_ann): Ditto.
2737         * tree-pretty-print.c (dump_generic_node): Remove E* node handling.
2738         * tree-inline.c (estimate_num_insns_1): Ditto.
2739         * tree.c (tree_size): Ditto.
2740         (make_node_stat): Ditto.
2741         (tree_node_structure): Ditto.
2742         (ephi_node_elt_check_failed): Remove.
2743         (is_essa_node): Ditto.
2744         * tree.def (EPHI_NODE): Ditto.
2745         (EEXIT_NODE): Ditto.
2746         (EUSE_NODE): Ditto.
2747         (EKILL_NODE): Ditto.
2748         * tree.h (EREF_NODE_CHECK): Remove.
2749         (EPHI_NODE_ELT_CHECK): Ditto.
2750         (struct tree_eref_common): Ditto.
2751         (struct tree_euse_node): Ditto.
2752         (struct ephi_arg_d): Ditto.
2753         (struct tree_ephi_node): Ditto.
2754         (ephi_node_elt_check_failed): Remove prototype.
2755         (is_essa_node): Ditto.
2756         (enum tree_node_structure_enum): Remove TS_E*_NODE.
2757         (union tree_node): Remove E*_NODE uses.
2758
2759 2004-06-15  Jerry Quinn  <jlquinn@optonline.net>
2760
2761         * alias.c (record_set, record_base_value, canon_rtx, get_addr,
2762         nonlocal_mentioned_p_1, init_alias_analysis): Use REG_P.
2763         * bt-load.c (find_btr_reference, insn_sets_btr_p, note_btr_set):
2764         Likewise.
2765         * builtins.c (expand_builtin_setjmp, expand_builtin_apply,
2766         expand_builtin_mathfn, expand_builtin_strlen, expand_builtin_memcmp,
2767         expand_builtin_strcmp, expand_builtin_strncmp,
2768         expand_builtin_frame_address): Likewise.
2769         * caller-save.c (mark_set_regs, add_stored_regs, mark_referenced_regs,
2770         insert_one_insn): Likewise.
2771         * calls.c (prepare_call_address, precompute_register_parameters,
2772         precompute_arguments, expand_call, emit_library_call_value_1): Likewise.
2773         * cfganal.c (flow_active_insn_p): Likewise.
2774         * combine.c (set_nonzero_bits_and_sign_copies, can_combine_p,
2775         combinable_i3pat, try_combine, find_split_point, COMBINE_RTX_EQUAL_P,
2776         subst, combine_simplify_rtx, simplify_if_then_else, simplify_set,
2777         make_extraction, recog_for_combine, gen_lowpart_for_combine,
2778         simplify_comparison, record_dead_and_set_regs_1,
2779         record_dead_and_set_regs, record_promoted_value,
2780         check_promoted_subreg, get_last_value_validate, get_last_value,
2781         reg_dead_at_p_1, reg_bitfield_target_p, distribute_notes,
2782         unmentioned_reg_p_1): Likewise.
2783         * conflict.c (mark_reg): Likewise.
2784         * cse.c (HASH, COST, COST_IN, approx_reg_cost_1, notreg_cost,
2785         mention_regs, insert_regs, lookup, lookup_for_remove, insert,
2786         merge_equiv_classes, flush_hash_table, invalidate,
2787         remove_invalid_refs, remove_invalid_subreg_refs, rehash_using_reg,
2788         invalidate_for_call, use_related_value, canon_hash, exp_equiv_p,
2789         cse_rtx_varies_p, canon_reg, find_best_addr, fold_rtx, equiv_constant,
2790         record_jump_cond, cse_insn, addr_affects_sp_p,
2791         invalidate_from_clobbers, cse_process_notes, cse_around_loop,
2792         cse_set_around_loop, count_reg_usage, set_live_p, cse_change_cc_mode,
2793         cse_cc_succs, cse_condition_code_reg): Likewise.
2794         * cselib.c (cselib_reg_set_mode, rtx_equal_for_cselib_p,
2795         cselib_lookup, cselib_invalidate_regno, cselib_invalidate_rtx,
2796         cselib_record_set, cselib_record_sets): Likewise.
2797         * dbxout.c (dbxout_symbol_location, dbxout_parms, dbxout_reg_parms,
2798         dbxout_block): Likewise.
2799         * df.c (df_ref_record, df_def_record_1, df_uses_record): Likewise.
2800         * dojump.c (do_jump): Likewise.
2801         * dwarf2out.c (dwarf2out_frame_debug_expr, is_pseudo_reg,
2802         is_based_loc, rtl_for_decl_location): Likewise.
2803         * emit-rtl.c (set_reg_attrs_for_parm, set_decl_rtl,
2804         set_decl_incoming_rtl, mark_user_reg): Likewise.
2805         * explow.c (copy_all_regs, copy_all_regs, memory_address, force_reg,
2806         copy_to_suggested_reg, allocate_dynamic_stack_space,
2807         probe_stack_range, hard_function_value): Likewise.
2808         * expmed.c (store_bit_field, store_fixed_bit_field,
2809         store_split_bit_field, extract_bit_field, extract_fixed_bit_field,
2810         extract_split_bit_field, expand_divmod, emit_store_flag_force):
2811         Likewise.
2812         * expr.c (convert_move, convert_modes,
2813         block_move_libcall_safe_for_call_parm, emit_group_load, use_reg,
2814         use_group_regs, emit_move_insn, emit_move_insn_1,
2815         compress_float_constant, push_block, emit_single_push_insn,
2816         emit_push_insn, get_subtarget, expand_assignment, store_expr,
2817         store_constructor, store_field, force_operand, safe_from_p,
2818         expand_expr_real_1, expand_increment, do_store_flag, do_tablejump):
2819         Likewise.
2820         * final.c (profile_function, final_scan_insn, alter_subreg,
2821         get_mem_expr_from_op, output_asm_operand_names, output_operand,
2822         only_leaf_regs_used, leaf_renumber_regs_insn): Likewise.
2823         * flow.c (verify_wide_reg_1, mark_regs_live_at_end,
2824         find_regno_partial, propagate_one_insn, init_propagate_block_info,
2825         insn_dead_p, libcall_dead_p, mark_set_1, not_reg_cond,
2826         attempt_auto_inc, find_auto_inc, mark_used_regs,
2827         count_or_remove_death_notes_bb): Likewise.
2828         * function.c (find_temp_slot_from_address, update_temp_slot_address,
2829         preserve_temp_slots, put_var_into_stack, fixup_var_refs_insn,
2830         fixup_var_refs_1, fixup_stack_1, optimize_bit_field, flush_addressof,
2831         put_addressof_into_stack, purge_addressof_1, insns_for_mem_walk,
2832         purge_single_hard_subreg_set, instantiate_decl,
2833         instantiate_virtual_regs_1, aggregate_value_p, assign_parms,
2834         promoted_input_arg, setjmp_vars_warning, setjmp_args_warning,
2835         setjmp_protect, setjmp_protect_args, fix_lexical_addr,
2836         expand_function_start, diddle_return_value, clobber_return_register,
2837         expand_function_end, keep_stack_depressed, handle_epilogue_set,
2838         update_epilogue_consts): Likewise.
2839         * genemit.c (gen_exp, gen_insn): Likewise.
2840         * genrecog.c (make_insn_sequence): Likewise.
2841         * global.c (global_conflicts, expand_preferences, mark_reg_store,
2842         mark_reg_conflicts, set_preference, reg_becomes_live,
2843         build_insn_chain, mark_reg_change): Likewise.
2844         * haifa_sched.c (CONST_BASED_ADDRESS_P, find_set_reg_weight):
2845         Likewise.
2846         * ifcvt.c (noce_try_abs, noce_get_condition, noce_process_if_block):
2847         Likewise.
2848         * integrate.c (copy_rtx_and_substitute, try_constants,
2849         subst_constants, mark_stores, allocate_initial_values): Likewise.
2850         * jump.c (reversed_comparison_code_parts, delete_prior_computation,
2851         delete_computation, rtx_renumbered_equal_p, true_regnum,
2852         reg_or_subregno): Likewise.
2853         * lcm.c (reg_dies, reg_becomes_live): Likewise.
2854         * local-alloc.c (validate_equiv_mem_from_store, validate_equiv_mem,
2855         update_equiv_regs, no_equiv, block_alloc, combine_regs, reg_is_set,
2856         wipe_dead_reg, no_conflict_p): Likewise.
2857         * loop-iv.c (simple_reg_p, simple_set_p, kill_sets,
2858         iv_get_reaching_def, iv_analyze_biv, altered_reg_used, mark_altered,
2859         simple_rhs_p, simplify_using_assignment, implies_p): Likewise.
2860         * loop.c (scan_loop, combine_movables, rtx_equal_for_loop_p,
2861         move_movables, note_set_pseudo_multiple_uses, consec_sets_invariant_p,
2862         find_single_use_in_loop, count_one_set, loop_bivs_init_find,
2863         loop_givs_rescan, check_insn_for_bivs, check_insn_for_givs,
2864         valid_initial_value_p, simplify_giv_expr, consec_sets_giv,
2865         loop_regs_update, check_dbra_loop, maybe_eliminate_biv,
2866         maybe_eliminate_biv_1, record_initial, update_reg_last_use,
2867         canonicalize_condition, loop_regs_scan, load_mems, try_copy_prop,
2868         try_swap_copy_prop): Likewise.
2869         * optabs.c (expand_binop, expand_vector_binop, expand_vector_unop,
2870         expand_abs, emit_no_conflict_block, emit_libcall_block, expand_float):
2871         Likewise.
2872         * postreload.c (reload_cse_simplify, reload_cse_simplify_set,
2873         reload_cse_simplify_operands, reload_combine,
2874         reload_combine_note_store, reload_combine_note_use,
2875         reload_cse_move2add, move2add_note_store): Likewise.
2876         * print-rtl.c (print_rtx): Likewise.
2877         * ra-build.c (copy_insn_p, remember_move, init_one_web_common,
2878         contains_pseudo, handle_asm_insn): Likewise.
2879         * ra-debug.c (ra_print_rtx_object, dump_constraints,
2880         dump_static_insn_cost): Likewise.
2881         * ra-rewrite.c (slots_overlap_p, emit_colors,
2882         remove_suspicious_death_notes): Likewise.
2883         * recog.c (validate_replace_rtx_1, find_single_use_1, find_single_use,
2884         register_operand, scratch_operand, nonmemory_operand,
2885         constrain_operands): Likewise.
2886         * reg-stack (check_asm_stack_operands, remove_regno_note,
2887         emit_swap_insn, swap_rtx_condition, subst_stack_regs_pat,
2888         subst_asm_stack_regs): Likewise.
2889         * regclass.c (scan_one_insn, record_reg_classes, copy_cost,
2890         record_address_regs, reg_scan_mark_refs): Likewise.
2891         * regmove.c (discover_flags_reg, replacement_quality,
2892         copy_src_to_dest, reg_is_remote_constant_p, regmove_optimize,
2893         fixup_match_1): Likewise.
2894         * regrename.c (note_sets, clear_dead_regs, build_def_use, kill_value,
2895         kill_set_value, copyprop_hardreg_forward_1): Likewise.
2896         * reload.c (MATCHES, push_secondary_reload, find_reusable_reload,
2897         reload_inner_reg_of_subreg, can_reload_into, push_reload,
2898         combine_reloads, find_dummy_reload, hard_reg_set_here_p,
2899         operands_match_p, decompose, find_reloads, find_reloads_toplev,
2900         find_reloads_address, subst_indexed_address, find_reloads_address_1,
2901         find_reloads_subreg_address, find_replacement,
2902         refers_to_regno_for_reload_p, reg_overlap_mentioned_for_reload_p,
2903         refers_to_mem_for_reload_p, find_equiv_reg, regno_clobbered_p): Likewise.
2904         * reload1.c (replace_pseudos_in, reload, calculate_needs_all_insns,
2905         find_reg, delete_dead_insn, alter_reg, eliminate_regs,
2906         elimination_effects, eliminate_regs_in_insn, scan_paradoxical_subregs,
2907         forget_old_reloads_1, reload_reg_free_for_value_p, choose_reload_regs,
2908         emit_input_reload_insns, emit_output_reload_insns, do_input_reload,
2909         do_output_reload, emit_reload_insns, gen_reload,
2910         delete_address_reloads_1, inc_for_reload): Likewise.
2911         * reorg.c (update_reg_dead_notes, fix_reg_dead_note,
2912         update_reg_unused_notes, fill_slots_from_thread): Likewise.
2913         * resource.c (update_live_status, mark_referenced_resources,
2914         mark_set_resources, mark_target_live_regs): Likewise.
2915         * rtlanal.c (nonzero_address_p, get_jump_table_offset,
2916         global_reg_mentioned_p_1, reg_mentioned_p, reg_referenced_p,
2917         reg_set_p, set_noop_p, find_last_value, refers_to_regno_p,
2918         note_stores, dead_or_set_p, dead_or_set_regno_p, find_regno_note,
2919         find_reg_fusage, find_regno_fusage, replace_regs, regno_use_in,
2920         parms_set, find_first_parameter_load, keep_with_call_p,
2921         hoist_test_store, hoist_update_store, address_cost, nonzero_bits1,
2922         num_sign_bit_copies1): Likewise.
2923         * rtlhooks.c (gen_lowpart_general): Likewise.
2924         * sched-deps.c (deps_may_trap_p, sched_analyze_1, sched_analyze_insn,
2925         sched_analyze): Likewise.
2926         * sched-rgn.c (check_live_1, update_live_1, sets_likely_spilled_1):
2927         Likewise.
2928         * sdbout.c (sdbout_symbol, sdbout_parms, sdbout_reg_parms): Likewise.
2929         * simplify-rtx.c (simplify_replace_rtx, simplify_unary_operation,
2930         simplify_binary_operation, simplify_const_relational_operation,
2931         simplify_subreg): Likewise.
2932         * stmt.c (decl_conflicts_with_clobbers_p, expand_asm_operands,
2933         expand_end_stmt_expr, expand_return, expand_decl,
2934         expand_anon_union_decl): Likewise.
2935         * unroll.c (precondition_loop_p, calculate_giv_inc, copy_loop_body,
2936         find_splittable_regs, find_splittable_givs, find_common_reg_term,
2937         loop_iterations): Likewise.
2938         * var-tracking.c (variable_union, variable_part_different_p,
2939         variable_different_p, count_uses, add_uses, add_stores,
2940         compute_bb_dataflow, set_variable_part, delete_variable_part,
2941         emit_notes_in_bb, vt_get_decl_and_offset, vt_add_function_parameters):
2942         Likewise.
2943         * varasm.c (assemble_variable): Likewise.
2944
2945 2004-06-15  Chris Demetriou  <cgd@broadcom.com>
2946
2947         * config/mips/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): Remove
2948         definition.
2949         * config/mips/linux64.h (ASM_PREFERRED_EH_DATA_FORMAT): Remove
2950         #undef and #if 0'd definition.
2951
2952 2004-06-15  J"orn Rennecke <joern.rennecke@superh.com>
2953
2954         * combine.c (distribute_notes): Comment typo fix.
2955
2956 2004-06-15  Roger Sayle  <roger@eyesopen.com>
2957
2958         * expmed.c (synth_mult): Mask bits of the multiplier to the
2959         machine mode of the multiplication.  Don't consider shifts
2960         by more than (or equal to) the width of the operation's mode.
2961
2962 2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
2963
2964         * doc/install.texi: Yet another update for autoconf
2965         and automake versions.
2966
2967 2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
2968
2969         * function.h (struct function): Remove cannot_inline field.
2970         (current_function_cannot_inline): Remove.
2971         * passes.c (rest_of_compilation): Reset DECL_DEFER_OUTPUT.
2972         Simplify conditionals to ignore warn_return_type.
2973         * tree-optimize.c (tree_rest_of_compilation): Do not reset
2974         DECL_DEFER_OUTPUT.
2975         * objc/objc-act.c (build_module_descriptor, finish_method_def):
2976         Do not set current_function_cannot_inline.
2977
2978 2004-06-15  J"orn Rennecke <joern.rennecke@superh.com>
2979
2980         * cfglayout.c (fixup_reorder_chain): Handle case where the
2981         destination of E_TAKEN is EXIT_BLOCK_PTR.
2982
2983 2004-06-15  Diego Novillo  <dnovillo@redhat.com>
2984
2985         * tree-ssa-copy.c (cprop_into_successor_phis): Fix typo.
2986
2987 2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
2988
2989         * fold-const.c (operand_equal_p): Update comment.
2990
2991 2004-06-15  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
2992
2993         * config/m32r/m32r.h (RETURN_ADDR_RTX): Define.
2994         (INCOMING_RETURN_ADDR_RTX): Define.
2995         * config/m32r/m32r-protos.h (m32r_return_addr): Added.
2996         * config/m32r/m32r.c (m32r_exppand_prologue): Changed for
2997         __builtin_return_address(0).
2998         (m32r_return_addr): Added for __builtin_return_address(0).
2999         (m32r_reload_lr): Ditto.
3000
3001         * longlong.h: Fix macros for m32r add_ssaaaa and sub_ddmmss.
3002
3003 2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
3004
3005         * doc/install.texi (Prerequisites): Update libbanshee,
3006         fastjar, libcpp, libjava/libltdl entries to
3007         automake 1.8.5.
3008
3009 2004-06-15  Eric Botcazou  <ebotcazou@act-europe.fr>
3010             Olivier Hainque  <hainque@act-europe.fr>
3011
3012         * function.c (fixup_var_refs): Also adjust the start of sequence
3013         after fixing up the insns.
3014
3015 2004-06-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
3016
3017         * gccbug.in: Update optimization -> tree-optimization/rtl-optimization.
3018
3019 2004-06-14  Benjamin Kosnik  <bkoz@redhat.com>
3020
3021         * doc/install.texi (Prerequisites): Update libstdc++ entry to
3022         automake 1.8.5.
3023
3024 2004-06-14  Eric Christopher  <echristo@redhat.com>
3025
3026         * config/s390/s390.h (TARGET_SWITCHES): Change -mtpf (-mno-tpf)
3027         to -mtpf-trace (-mno-tpf-trace).
3028         * doc/invoke.texi (S/390 and zSeries Options): Add tpf option
3029         documentation.
3030
3031 2004-06-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
3032
3033         * real.c: Fix bit count in head comment.
3034
3035 2004-06-14  Jeff Law  <law@redhat.com>
3036
3037         * tree-ssa.c (kill_redundant_phi_nodes): More correctly handle
3038         PHIs where the destination or an argument is marked with
3039         SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
3040
3041 2004-06-14  Jakub Jelinek  <jakub@redhat.com>
3042
3043         PR middle-end/15945
3044         * simplify-rtx.c (simplify_binary_operation): Don't optimize out
3045         Inf + -Inf, Inf - Inf, Inf / Inf and 0 * Inf if flag_trapping_math.
3046
3047 2004-06-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
3048
3049         * opts.sh (var_args): Fix regexp.
3050
3051 2004-06-14  Jakub Jelinek  <jakub@redhat.com>
3052
3053         PR target/15178
3054         * config/i386/sol2.h (ASM_OUTPUT_DEF_FROM_DECLS): Define.
3055
3056 2004-06-14  Paul Brook  <paul@codesourcery.com>
3057
3058         * dwarf2out.c (output_call_frame_info): Support dwarf3 cie entries.
3059
3060 2004-06-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
3061
3062         * Makefile.in (FLAGS_H): New.
3063         (flags.h): Replace by FLAGS_H.
3064         * c.opt: Document Var, VarExists, Init and Report attributes.
3065         * common.opt: Fill the values of the attributes.
3066         * diagnostic.c (flag_fatal_errors): Do not define.
3067         * except.c (flag_non_call_exceptions): Do not define.
3068         * flags.h: Include options.h.  Remove declarations conflicting with
3069         the automatically defined ones.
3070         * opts.c: Remove automatically defined variables.
3071         (handle_option): Perform default initialization.
3072         (common_handle_option): Do not handle options covered by the
3073         default initialization.
3074         * opts.h (struct cl_option): Add flag_var, has_set_value and set_value
3075         fields.
3076         (CL_REPORT): New.
3077         * opts.sh: Generate variable declarations, handle CL_REPORT.
3078         * toplev.c: Remove automatically defined variables.
3079         (f_options): Removed.
3080         (print_switch_values): Use cl_options instead of f_options.
3081         * toplev.h (version_flag): Declaration removed.
3082
3083 2004-06-14  Ian Lance Taylor  <ian@wasabisystems.com>
3084
3085         * config/sparc/sparc.h: Correct comment about availability of
3086         little endian option.
3087
3088         * config.gcc: Remove sparc64-*-aout*.
3089         * config/sparc/sparc.c (sparc_aout_select_rtx_section): Remove.
3090         * config/sparc/sp64-aout.h: Remove.
3091         * config/sparc/aout.h: Remove.
3092
3093 2004-06-14  Ulrich Weigand  <uweigand@de.ibm.com>
3094
3095         * config/s390/s390.c: Include "tree-gimple.h".
3096         (s390_gimplify_va_arg): New function.
3097         (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
3098         (s390_va_arg): Remove.
3099         * config/s390/s390-protos.h (s390_va_arg): Remove.
3100         * config/s390/s390.h (EXPAND_BUILTIN_VA_ARG): Call abort ().
3101
3102 2004-06-14  J"orn Rennecke <joern.rennecke@superh.com>
3103
3104         * basic-block.h (could_fall_through): Declare.
3105         * cfganal.c (can_fallthru): Succeed if the target is EXIT_BLOCK_PTR.
3106         Fail if the source already has a fallthrough edge to the exit
3107         block pointer.
3108         (could_fall_through): New function.
3109         * cfgbuild.c (make_edges): Check if we already have a fallthrough
3110         edge to the exit block pointer.
3111         * cfglayout.c (fixup_fallthru_exit_predecessor): Check that it is
3112         not called before reload has completed.
3113         Handle special case of first block having a fall-through exit edge.
3114         (cfg_layout_finalize): Don't call it before reload or if we have
3115         rtl epilogues.
3116         (fixup_reorder_chain): A fall through to the exit block does not
3117         require the block to come last.  Add sanity checks.
3118         * cfgrtl.c (rtl_split_edge): Add special handling of fall through
3119         edges to the exit block.
3120         * function.c (cfglayout.h): #include.
3121         (thread_prologue_and_epilogue_insns): If we have neither return nor
3122         epilogue, but a fall through to the exit block from mid-function,
3123         force a non-fall-through exit.
3124         * Makefile.in (function.o): Depend on CFGLAYOUT_H.
3125
3126 2004-06-14  Alan Modra  <amodra@bigpond.net.au>
3127
3128         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Handle -mpowerpc64 and -mcpu
3129         for power5 and rs64a.  Correct condition for default.  Correct power3,
3130         620, 630, 7400, 7450, G4, 970 and G5 -mcpu entries.  Add -many.
3131
3132 2004-06-13  Steven Bosscher <stevenb@suse.de>
3133
3134         * gcse.c (hash_scan_set, hash_scan_insn, mark_set, mark_oprs_set):
3135         Revert previous change, don't use CALL_P.
3136
3137 2004-06-13  Jason Merrill  <jason@redhat.com>
3138
3139         * tree.h: Move std_gimplify_va_arg_expr protoype here.
3140         * tree-gimple.h: From here.
3141
3142 2004-06-13  Daniel Berlin  <dberlin@dberlin.org>
3143
3144         Fix PR tree-optimization/15979
3145         Fix PR tree-optimization/15981
3146         * tree-ssa-pre.c (insert_aux): Fix faulty logic so that we don't
3147         try to insert values undefined along some path.
3148
3149 2004-06-13  Daniel Berlin  <dberlin@dberlin.org>
3150
3151         * tree-ssa-pre.c (add_to_value): is_gimple_min_invariant things
3152         are available everywhere too.
3153
3154 2004-06-13  Andrew Pinski  <pinskia@physics.uc.edu>
3155
3156         * fold-const.c (fold_checksum_tree <case 't'>): Only
3157         look at TREE_VALUES if the EXPR is an ENUMERAL_TYPE.
3158         Only look at TYPE_MIN_VALUE and TYPE_MAX_VALUE if
3159         EXPR is an INTEGERAL_TYPE or a scalar float type.
3160
3161 2004-06-13  Diego Novillo  <dnovillo@redhat.com>
3162
3163         * tree-sra.c (tree_sra): Update documentation.
3164
3165 2004-06-13  Joseph S. Myers  <jsm@polyomino.org.uk>
3166
3167         * c-typeck.c (comptypes, tagged_types_tu_compatible_p,
3168         function_types_compatible_p, type_lists_compatible_p): Remove
3169         flags parameter.
3170         * c-tree.h (comptypes): Likewise.
3171         (COMPARE_STRICT): Remove.
3172         * c-decl.c, c-lang.c, c-parse.in, c-typeck.c, objc/objc-act.c: All
3173         callers changed.
3174
3175 2004-06-13  Eric Christopher  <echristo@redhat.com>
3176
3177         * c-decl.c (diagnose_mismatched_decls): Improve error message.
3178         Remove unused code.
3179         * c-typeck.c (comptypes): Add location in standard we're checking.
3180
3181 2004-06-13  Kaz Kojima  <kkojima@gcc.gnu.org>
3182
3183         * config/sh/libgcc-std.ver: Add __unorddf2 and __unordsf2 with
3184         version 3.3.4.
3185
3186 2004-06-12  Roger Sayle  <roger@eyesopen.com>
3187
3188         * expmed.c (shift_cost, shiftadd_cost, shiftsub_cost): Additionally
3189         index by machine mode.
3190         (init_expmed): Initialize shift_cost, shiftadd_cost and shiftsub_cost
3191         tables inside the loop over machine modes.
3192         (synth_mult, expand_mult_highpart_optab, expand_mult_highpart,
3193         expand_divmod): Index shift*_cost by the appropriate machine mode.
3194
3195 2004-06-12  Eric Christopher  <echristo@redhat.com>
3196
3197         * config/s390/s390.h: Rename TARGET_TPF to TARGET_TPF_PROFILING.
3198         * config/s390/s390.md: Ditto.
3199         * config/s390/s390.c: Ditto.
3200         (s390_frame_info): Conditionalize frame and setup info on
3201         TARGET_TPF_PROFILING.
3202         (s390_arg_frame_offset): Ditto.
3203
3204 2004-06-12  Roger Sayle  <roger@eyesopen.com>
3205
3206         * fold-const.c (omit_two_operands): New function.
3207         * tree.h (omit_two_operands): Prototype here.
3208         * builtins.c (fold_builtin_unordered_cmp): New function to lower
3209         C99 unordered comparison builtins to the appropriate tree nodes.
3210         (fold_builtin_1): Use fold_builtin_unordered_cmp to lower
3211         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
3212         BUILT_IN_ISLESSEQUAL and BUILT_IN_ISLESSGREATER.  Manually lower
3213         BUILT_IN_ISUNORDERED comparisons to an UNORDERED_EXPR tree node.
3214         (simplify_builtin_memcmp, simplify_builtin_strncmp,
3215         simplify_builtin_strncat, simplify_builtin_strspn): Use the new
3216         omit_two_operands function to build the required COMPOUND_EXPRs.
3217
3218 2004-06-12  Steven Bosscher <stevenb@suse.de>,
3219             Andreas Jaeger  <aj@suse.de>
3220
3221         * gcse.c (record_set_info): Use predicates like REG_P.
3222         (mems_conflict_for_gcse_p): Likewise.
3223         (load_killed_in_block_p): Likewise.
3224         (hash_expr_1): Likewise.
3225         (insert_set_in_table): Likewise.
3226         (gcse_constant_p): Likewise.
3227         (hash_scan_set): Likewise.
3228         (hash_scan_insn): Likewise.
3229         (canon_list_insert): Likewise.
3230         (record_last_mem_set_info): Likewise.
3231         (record_last_set_info): Likewise.
3232         (compute_hash_table_work): Likewise.
3233         (mark_set): Likewise.
3234         (mark_clobber): Likewise.
3235         (mark_oprs_set): Likewise.
3236         (compute_transp): Likewise.
3237         (find_avail_set): Likewise.
3238         (cprop_insn): Likewise.
3239         (do_local_cprop): Likewise.
3240         (cprop): Likewise.
3241         (find_implicit_sets): Likewise.
3242         (find_bypass_set): Likewise.
3243         (bypass_conditional_jumps): Likewise.
3244         (insert_insn_end_bb): Likewise.
3245         (pre_insert_copy_insn): Likewise.
3246         (compute_transpout): Likewise.
3247         (next_ls_expr): Likewise.
3248         (invalidate_any_buried_refs): Likewise.
3249         (compute_ld_motion_mems): Likewise.
3250         (reg_set_info): Likewise.
3251         (reg_clear_last_set): Likewise.
3252         (find_moveable_store): Likewise.
3253         (compute_store_table): Likewise.
3254         (find_loads): Likewise.
3255         (store_killed_in_insn): Likewise.
3256         (insert_insn_start_bb): Likewise.
3257         (reg_set_between_after_reload_p): Likewise.
3258         (reg_used_between_after_reload_p): Likewise.
3259         (is_jump_table_basic_block): Likewise.
3260         (gcse_after_reload): Likewise.
3261         (hash_scan_set_after_reload): Likewise.
3262         (compute_hash_table_after_reload): Likewise.
3263
3264 2004-06-12  Steven Bosscher  <stevenb@suse.de>
3265
3266         * rtl.h (MEM_P, NONJUMP_INSN_P, CALL_INSN_P): New predicates.
3267         (INSN_P): Don't look at the rtx code class, just explicitly
3268         check for one of the tree RTX_INSN codes.
3269
3270 2004-06-11  Zack Weinberg  <zack@codesourcery.com>
3271
3272         * c-typeck.c (default_function_array_conversion): Use
3273         build_pointer_type not TYPE_POINTER_TO.
3274
3275 2004-06-11  Zack Weinberg  <zack@codesourcery.com>
3276
3277         * configure.ac: Don't invoke ACX_HEADER_STDBOOL.
3278         * configure, config.in: Regenerate.
3279         * system.h: Unconditionally define bool as unsigned char,
3280         BOOL_BITFIELD as unsigned int.
3281         * domwalk.h: Use BOOL_BITFIELD.
3282
3283 2004-06-12  Andreas Jaeger  <aj@suse.de>
3284
3285         * libgcc-std.ver: Add __unorddf2 and __unordsf2 with version 3.3.4.
3286         * libgcc-darwin.ver: Likewise.
3287
3288 2004-06-12  Peter Jakubek  <peter@laseranimation.com>
3289
3290         * reload.c (find_reloads): Force reload for pseudo registers on big
3291         endian machines.
3292
3293 2004-06-11  Steven Bosscher <stevenb@suse.de>
3294
3295         * tree-ssa-dce.c (mark_control_dependent_edges_necessary):
3296         Don't try to mark anything control dependent on the entry or
3297         exit blocks.
3298
3299 2004-06-11  Daniel Berlin  <dberlin@dberlin.org>
3300
3301         Fix Bug 15899
3302         Fix Bug 15460
3303         * tree.h (SSA_NAME_VALUE): New macro.
3304         (struct tree_ssa_name): Add value_handle member.
3305         * tree-ssa-pre.c: Replaced.
3306         * tree-flow.h (tree_ann_type): Add CST_ANN, EXPR_ANN.
3307         (struct cst_ann_d): New.
3308         (struct expr_ann_d): New.
3309         (union tree_ann_d): Add cst_ann, expr_ann.
3310         * tree-dfa.c (create_cst_ann): New function.
3311         (create_expr_ann): Ditto.
3312         * tree-flow-inline.h (cst_ann): New function.
3313         (expr_ann): Ditto.
3314         (get_cst_ann): Ditto.
3315         (get_expr_ann): Ditto..
3316
3317 2004-06-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3318
3319         * pa.c (pa_hpux_init_libfunc): Add support for unord_optab.
3320         * pa/quadlib.c (enum qfcmp_magic): Define magic values for call to
3321         _U_Qfcmp library function.
3322         (_U_Qfltgt, _U_Qfunle, _U_Qfunlt, _U_Qfunge, _U_Qfungt, _U_Qfuneq,
3323         _U_Qfunord, _U_Qford): Add more TFmode builtin compare functions.
3324
3325         * pa.c (legitimize_pic_address): Use UNSPEC_DLTIND14R to identify
3326         unspec used for loading address from DLT.
3327         * pa.md: Define constants for the uses of UNSPEC and UNSPEC_VOLATILE.
3328         Change all users of UNSPEC and UNSPEC_VOLATILE to use new constants.
3329         Don't use short code sequence when loading the address of a nonlocal
3330         label.
3331         (nonlocal_goto): New expander.
3332         (indirect_goto): New jump pattern for nonlocal gotos.
3333         (short_jump): Remove extra whitespace.
3334         (builtin_longjmp): Clobber memory and hard frame pointer.  Restore
3335         frame pointer via virtual_stack_vars_rtx when we have a nonlocal goto
3336         pattern.
3337
3338 2004-06-11  Roger Sayle  <roger@eyesopen.com>
3339
3340         * expmed.c (synth_mult): Add an additional MODE argument for the
3341         machine mode of the multiplication.  Update recursive calls.  Use
3342         mode instead of word_mode for determining operation costs.
3343         (choose_mult_variant): Update calls to synth_mult with "mode".
3344
3345 2004-06-11  Richard Henderson  <rth@redhat.com>
3346
3347         * tree-ssa-operands.c (get_stmt_operands): Clear makes_aliased_loads
3348         and makes_aliased_stores.
3349
3350 2004-06-11  Andrew Pinski  <pinskia@physics.uc.edu>
3351
3352         * doc/install.text (--enable-shared): Fix typo.
3353
3354 2004-06-11  Richard Henderson  <rth@redhat.com>
3355
3356         * config/alpha/alpha.c (alpha_gimplify_va_arg_1): Remove post_p
3357         argument.  Use internal post for call to gimplify_expr.  Tidy
3358         rounded type size computation.
3359         (alpha_gimplify_va_arg): Use get_formal_tmp_var and
3360         get_initialized_tmp_var.
3361
3362 2004-06-11  Andrew Pinski  <pinskia@physics.uc.edu>
3363