OSDN Git Service

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