OSDN Git Service

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