OSDN Git Service

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