OSDN Git Service

* tree-flow.h (struct var_ann_d): Remove has_hidden_use.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2004-07-16  Richard Henderson  <rth@redhat.com>
2
3         * tree-flow.h (struct var_ann_d): Remove has_hidden_use.
4         * gimple-low.c (expand_var_p): Don't check it.
5         * tree-ssa-alias.c (setup_pointers_and_addressables): Likewise.
6         * tree-ssa-copyrename.c (rename_ssa_copies): Likewise.
7         * tree-ssa-operands.c (add_stmt_operand): Likewise.
8         * tree-dfa.c (find_hidden_use_vars, find_hidden_use_vars_r): Kill.
9         (find_referenced_vars): Don't call them.
10         * tree-flow-inline.h (has_hidden_use, set_has_hidden_use): Kill.
11
12 2004-07-16  Richard Henderson  <rth@redhat.com>
13
14         * function.c (pass_by_reference): True for all variable sized types.
15
16 2004-07-16  Sebastian Pop  <pop@cri.ensmp.fr>
17
18         * Makefile.in (tree-pretty-print.o): Depend on tree-chrec.h.
19         * tree-pretty-print.c: Include tree-chrec.h.
20         (dump_generic_node): Pretty print SCEV_KNOWN, SCEV_NOT_KNOWN 
21         and POLYNOMIAL_CHREC nodes.
22
23 2004-07-16  Steve Ellcey  <sje@cup.hp.com>
24
25         * builtins.c (expand_builtin_stpcpy): Do not create temporary
26         reg with VOIDmode.
27
28 2004-07-16  Segher Boessenkool  <segher@kernel.crashing.org>
29
30         * config/rs6000/eabi.asm (__eabi_convert): Fix typo (cmpi vs. cmpwi).
31
32 2004-07-16  Andreas Krebbel  <krebbel1@de.ibm.com>
33
34         * config/s390/s390.md: Changed every occurence of BASE_REGISTER
35         to BASE_REGNUM.
36         * config/s390/s390.c: Likewise.
37         * config/s390/s390.h: Likewise.
38
39 2004-07-16  Richard Sandiford  <rsandifo@redhat.com>
40
41         * config/mips/mips.md (addsi3, adddi3): Remove special handling
42         of $sp adds.  Remove REGNO checks from mips16 patterns.
43
44 2004-07-16  Richard Sandiford  <rsandifo@redhat.com>
45
46         * config/mips/mips.md: Delete outdated comment.
47
48 2004-07-16  Richard Sandiford  <rsandifo@redhat.com>
49
50         * config/mips/mips.c (get_float_compare_codes): Delete.
51         (mips_emit_compare): New function, mostly extracted from
52         get_float_compare_codes and gen_conditional_branch.
53         (gen_conditional_branch, gen_conditional_move): Use it.
54
55 2004-07-16  Segher Boessenkool  <segher@kernel.crashing.org>
56
57         * genautomata.c (add_vect): Speedup by using integers as
58         bit-vectors for walking through the comb_vect and finding
59         a match.
60
61 2004-07-16  Richard Sandiford  <rsandifo@redhat.com>
62
63         * config/mips/mips.c (mips_zero_if_equal): Only use XORs if the second
64         operand is an uns_arith_operand; use subtraction otherwise.
65         * config/mips/mips.md (cmpsi, cmpdi): Allow any nonmemory_operand,
66         not just arith_operands.
67
68 2004-07-16  Richard Sandiford  <rsandifo@redhat.com>
69
70         * config/mips/mips-protos.h (gen_int_relational): Delete.
71         (mips_emit_scc): Declare.
72         * config/mips/mips.c (internal_test): Delete.
73         (sle_operand, sleu_operand): New functions.
74         (map_test_to_internal_test, gen_int_relational): Delete.
75         (mips_emit_binary, mips_relational_operand_ok_p)
76         (mips_emit_int_relational, mips_zero_if_equal)
77         (mips_emit_scc): New functions.
78         (gen_conditional_branch): Rework to use mips_emit_int_relational.
79         * config/mips/mips.h (PREDICATE_CODES): Add sle_operand and
80         sleu_operand.
81         * config/mips/mips.md (seq, sne, sgt, sge, slt, sle, sgtu, sgeu)
82         (sltu, sleu): Use mips_emit_scc.
83         (*sge_[sd]i, *sgeu_[sd]i): New patterns.
84         (*sle_[sd]i, *sle_[sd]i_mips16): Use sle_operand.
85         (*sleu_[sd]i, *sleu_[sd]i_mips16): Use sleu_operand.
86
87 2004-07-16  Richard Sandiford  <rsandifo@redhat.com>
88
89         * config/mips/mips.md (*sgt_di_mips16): Fix destination constraint.
90
91 2004-07-16  Richard Sandiford  <rsandifo@redhat.com>
92
93         * config/mips/mips.md (*seq_[sd]i): Renamed from seq_[sd]i_zero.
94         (*sne_[sd]i): Likewise sne_[sd]i_zero.
95         (*sgt_[sd]i): ...and sgt_[sd]i.
96         (*slt_[sd]i): ...and slt_[sd]i.
97         (*sgtu_[sd]i): ...and sgtu_[sd]i.
98         (*sltu_[sd]i): ...and sltu_[sd]i.
99         (*sleu_[sd]i): ...and sleu_[sd]i_const.
100         Name previously unnamed mips16 patterns.  Formatting fixes.
101
102 2004-07-16  Richard Sandiford  <rsandifo@redhat.com>
103
104         * config/mips/mips.c (cmp_operands): Renamed from branch_cmp.
105         (branch_type): Delete.
106         (gen_conditional_branch, gen_conditional_move)
107         (mips_gen_conditional_trap): Update after name change.  Get the
108         comparison mode from cmp_operands[0].
109         * config/mips/mips.h (cmp_type, branch_type): Delete.
110         (cmp_operands): Renamed from branch_cmp.
111         * config/mips/mips.md (cmpsi, cmpdi, cmpsf, cmpdf): Update after
112         name change.  Don't set branch_type.
113         (seq, sne, sgt, sge, slt, sle, sgtu, sgeu, sltu, sleu): Check the
114         mode class of cmp_operands[0] rather than branch_type.  Update after
115         name change.
116
117 2004-07-16  Richard Sandiford  <rsandifo@redhat.com>
118
119         * config/mips/mips.c (mips_rtx_costs): In mips16 code, set the cost
120         of 0...255 to 0 when inside a SET.
121
122 2004-07-16  Richard Sandiford  <rsandifo@redhat.com>
123
124         * config/mips/mips.md: Remove mips16 define_peepholes.
125
126 2004-07-16  Daniel Berlin  <dberlin@dberlin.org>
127
128         * tree-ssa-pre.c (init_pre): Connect infinite loops to exit.
129         (fini_pre): Remove fake edges.
130
131 2004-07-15  Richard Henderson  <rth@redhat.com>
132
133         * tree-ssa-operands.c (get_expr_operands): Use a switch.  Split out...
134         (get_indirect_ref_operands, get_call_expr_operands): ... these.
135
136 2004-07-15  Nathan Sidwell  <nathan@codesourcery.com>
137
138         * vec.h (VEC_address): New function.
139
140 2004-07-14  Jason Merrill  <jason@redhat.com>
141
142         PR middle-end/15885
143         * gimplify.c (gimplify_arg): New fn, split out from...
144         (gimplify_call_expr): Here.  Special-case BUILT_IN_VA_START.
145
146 2004-07-15  Roman Zippel  <zippel@linux-m68k.org>
147
148         * config/m68k/m68k.c (output_move_qimode): Abort on an attempt to 
149         generate code which is generated by pushqi1 now
150         * config/m68k/m68k.h (MOVE_BY_PIECES_P): Remove.
151
152 2004-07-15  Roman Zippel  <zippel@linux-m68k.org>
153
154         * combine.c (simplify_set): match the mode of the constant 0 with 
155         the tested operand to match the compare behaviour and the 
156         simplify_relational_operation() expectation.
157
158 2004-07-15  Aldy Hernandez  <aldyh@redhat.com>
159
160         * config/rs6000/rs6000.md ("bunordered"): Disable for e500.
161         ("bordered"): Same.
162
163 2004-07-15  Aldy Hernandez  <aldyh@redhat.com>
164
165         * config/rs6000/rs6000.md ("*cceq_ior_compare"): Allow
166         unconditionally.
167         * config/rs6000/spe.md ("e500_cceq_ior_compare"): Remove.
168
169 2004-07-15  Richard Sandiford  <rsandifo@redhat.com>
170
171         * config/mips/mips.c (mips_adjust_insn_length): Fix handling of
172         calls in mips16 code.
173
174 2004-07-15  Richard Sandiford  <rsandifo@redhat.com>
175
176         * config/mips/mips.md: In the mips16 li/neg splitter, use SImode for
177         the destination of the li as well as for the neg.
178
179 2004-07-15  Frank Ch. Eigler  <fche@redhat.com>
180
181         g++/15861
182         * cgraphunit.c (cgraph_build_static_cdtor): Add priority argument.
183         * cgraph.h: Update declaration.
184         * c-decl.c (build_cdtor): Update call with default priority.
185         * coverage.c (create_coverage): Ditto.
186         * tree-mudflap.c (mf_init_fndecl): New tree.
187         (mudflap_init): Set it.
188         (mudflap_register_call): Arrange to call __mf_init before the first
189         __mf_register call.
190         (mudflap_finish_file): Mark the mudflap static initializer as extra
191         high priority, to beat all C++ static constructors.
192
193 2004-07-15  Jeff Law  <law@redhat.com>
194
195         * loop.c (check_insn_for_givs): Restore check for code labels that was
196         accidentally deleted by a recent checkin.
197
198 2004-07-15  Nathan Sidwell  <nathan@codesourcery.com>
199
200         * vec.h (VEC_T_truncate): Allow truncation of an empty vector.
201         (VEC_T_quick_insert, VEC_T_ordered_remove): Fix sizeof(T) thinko.
202
203 2004-07-14  Richard Henderson  <rth@redhat.com>
204
205         * print-tree.c (print_node): Fix casts last change.
206
207 2004-07-15  Paul Brook  <paul@codesourcery.com>
208
209         * dwarf2out.c (dwarf2out_begin_prologue): Rename IA64_UNWIND_INFO
210         to TARGET_UNWIND_INFO.
211         * except.c (output_function_exception_table): Ditto.
212         * except.h: Ditto.
213         * opts.c (decode_options): Ditto.
214         * passes.c (rest_of_handle_final): Ditto.
215         * final.c (final_start_function): Ditto.
216         (final_scan_insn, final_scan_insn): Replace IA64_UNWIND_EMIT with
217         target hook.
218         * targhooks.h (default_unwind_emit): Declare.
219         * targhooks.c (default_unwind_emit): New function.
220         * target-def.h: Define and use TARGET_UNWIND_EMIT.
221         * target.h (struct gcc_target): Add unwind_emit.
222         * config/ia64/ia64.c (TARGET_UNWIND_EMIT): Define.
223         * config/ia64/ia64.h: Rename IA64_UNWIND_INFO to TARGET_UNWIND_INFO.
224         Remove IA64_UNWIND_EMIT.
225         * doc/tm.texi: Document TARGET_UNWIND_EMIT and TARGET_UNWIND_INFO.
226
227 2004-07-14  Richard Henderson  <rth@redhat.com>
228
229         * print-tree.c (print_node): Handle SSA_NAME.
230
231 2004-07-14  James E Wilson  <wilson@specifixinc.com>
232
233         PR target/16325
234         * config/mips/mips.h (STARTING_FRAME_OFFSET): When flag_profile_value
235         and ! TARGET_64BIT, include REG_PARM_STACK_SPACE.
236
237 2004-07-15  Jakub Jelinek  <jakub@redhat.com>
238
239         * expr.c (expand_assignment): Reenable bitfield += optimizations.
240         Use alias set 0 for memory, do proper mode calculations and adjust
241         address for memories.
242
243 2004-07-14  Per Bothner  <per@bothner.com>
244
245         * input.h:  If USE_MAPPED_LOCATION, define separate expanded_location
246         structure with extra column field.
247         * tree.c (expand_location):  Also fill in column field.
248         * gengtype-lex.l:  Ignore expanded_location typedef, sinze gengtype
249         gets confused by the two conditionally-compiled definitions.
250
251 2004-07-14  Eric Christopher  <echristo@redhat.com>
252
253         * calls.c (expand_call): Fix typo in comment.
254
255 2004-07-14  Steve Ellcey  <sje@cup.hp.com>
256
257         * config/ia64/ia64.c (ia64_expand_compare): Allow ORDERED
258         comparision of TFmode.
259
260 2004-07-14  Richard Henderson  <rth@redhat.com>
261
262         * config/alpha/alpha.c (alpha_gimplify_va_arg_1): Move indirect ...
263         (alpha_gimplify_va_arg): ... handling here.  Use pass_by_reference.
264         * config/c4x/c4x.c (c4x_gimplify_va_arg_expr): Use pass_by_reference.
265         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
266         * config/i860/i860.c (i860_gimplify_va_arg_expr): Likewise.
267         * config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
268         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
269         * config/sh/sh.c (sh_gimplify_va_arg_expr): Likewise.
270         * config/xtensa/xtensa.c (xtensa_gimplify_va_arg_expr): Likewise.
271
272 2004-07-14  Mike Stump  <mrs@apple.com>
273
274         * config/darwin.h (WINT_TYPE): Define to be int to match
275         system header files.
276
277 2004-07-14  Bob Wilson  <bob.wilson@acm.org>
278
279         * config/xtensa/xtensa.c (function_arg_advance): Check for args
280         that must be passed in the stack.
281         (xtensa_gimplify_va_arg_expr): Skip special-case padding for small
282         arguments if the size is not a constant.
283
284 2004-07-14  Per Bothner  <per@bothner.com>
285
286         * c-typeck.c (emit_side_effect_warnings):  Use EXPR_HAS_LOCATION
287         instead of EXPR_LOCUS in a boolean context, which is always true
288         if --enable-mapped-location.
289         * stmt.c (warn_if_unused_value):  Likewise.  Also use EXPR_LOCATION.
290
291 2004-07-14  Richard Henderson  <rth@redhat.com>
292
293         * dominance.c (struct dom_info): Add fake_exit_edge.
294         (init_dom_info): Allocate it.
295         (free_dom_info): Free it.
296         (calc_dfs_tree): Set it.  Handle noreturn and infinite loops
297         in two passes.
298         (calc_idoms): Honor fake_exit_edge.
299
300 2004-07-13  Jason Merrill  <jason@redhat.com>
301
302         * tree-gimple.c (is_gimple_reg_rhs, is_gimple_mem_rhs): New fns.
303         (rhs_test_for): New fn.
304         (is_gimple_tmp_rhs): Rename from is_gimple_rhs.
305         * tree-gimple.h: Declare them.
306         * gimplify.c (gimplify_modify_expr): Use the new fns.
307
308 2004-07-14  Richard Henderson  <rth@redhat.com>
309
310         * config/arm/arm-protos.h (arm_va_arg): Remove.
311         * config/arm/arm.c (arm_va_arg): Remove.
312         (arm_init_expanders): Fix alignment of arg_pointer_rtx.
313         * config/arm/arm.h (EXPAND_BUILTIN_VA_ARG): Remove.
314
315 2004-07-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
316
317         * pa.c (fix_range): New function to mark a range(s) of registers as
318         fixed registers.
319         (override_options): Call fix_range if the -mfixed-range option string
320         is not empty.
321         * pa.h (TARGET_OPTIONS): Add -mfixed-range option.
322         * doc/invoke.texi (-mfixed-range): Document new option.
323
324 2004-07-14  David Edelsohn  <edelsohn@gnu.org>
325
326         * config/rs6000/rs6000.c (function_arg_padding): Do not pad SFmode
327         for TARGET_64BIT.
328         (rs6000_gimplify_va_arg): Use size_int instead of build_int_2.
329
330 2004-07-14  Roger Sayle  <roger@eyesopen.com>
331
332         * expmed.c (expand_sdiv_pow2): New function to expand signed division
333         by a positive power of two, split out from expand_divmod.  Provide
334         an alternate implementation when shifts are expensive.  Lower the
335         threshold for using a branchless implementation to BRANCH_COST >= 2.
336         (expand_divmod): Call expand_sdiv_pow2 for suitable divisions.
337
338 2004-07-14  Paolo Bonzini  <bonzini@gnu.org>
339
340         * tree-dfa.c (make_rename_temp): *Really* work just
341         like create_tmp_var if called while outside SSA form.
342
343 2004-07-14  Ulrich Weigand  <uweigand@de.ibm.com>
344
345         * config/s390/s390.md ("udivsi3"): Ensure trap is generated
346         for division by zero.
347         ("umodsi3"): Likewise.
348
349 2004-07-14  Richard Sandiford  <rsandifo@redhat.com>
350
351         * config/mips/mips.c (mips_output_move): When generating mips16 code,
352         force loads of negative constants to be split.
353         * config/mips/mips.md (*movhi_mips16, *movqi_mips16): Likewise.
354         Generalize SImode li/neg splitter to cope with other modes.
355
356 2004-07-14  Paolo Bonzini  <bonzini@gnu.org>
357
358         * expmed.c: Remove more references to QUEUED in the comments.
359         * expr.c: Likewise.
360
361 2004-07-14  Richard Sandiford  <rsandifo@redhat.com>
362
363         Revert:
364         2004-07-13  Richard Henderson  <rth@redhat.com>
365         * config/mips/mips.c (mips_pass_by_reference): Handle mode sizes
366         correctly.
367
368 2004-07-14  Paolo Bonzini  <bonzini@gnu.org>
369
370         * tree-dfa.c (make_rename_temp): Work just like
371         create_tmp_var if called while outside SSA form.
372
373 2004-07-14  Paolo Bonzini  <bonzini@gnu.org>
374
375         * expr.c (enqueue_insn, finish_expr_for_function,
376         protect_from_queue, queued_subexp_p, mark_queue,
377         emit_insns_enqueued_after_mark, emit_queue,
378         expand_increment): Remove.
379         (store_constructor): Expand increment as an assignment.
380         (expand_expr_real_1 <case PREINCREMENT_EXPR,
381         case PREDECREMENT_EXPR, case POSTINCREMENT_EXPR,
382         case POSTDECREMENT_EXPR>): Abort.
383         * expr.h (QUEUED_VAR, QUEUED_INSN, QUEUED_COPY,
384         QUEUED_BODY, QUEUED_NEXT, finish_expr_for_function,
385         protect_from_queue, emit_queue, queued_subexp_p): Remove.
386         * function.h (pending_chain, x_pending_chain): Remove.
387         * rtl.def (QUEUED): Remove.
388
389         * emit-rtl.c (copy_insn_1, copy_most_rtx,
390         set_used_flags, verify_rtx_sharing): Remove references to QUEUED.
391         * genattrtab.c (attr_copy_rtx, clear_struct_flag,
392         encode_units_mask): Likewise.
393         * local-alloc.c (equiv_init_varies_p): Likewise.
394         * rtl.c (copy_rtx): Likewise.
395         * rtlanal.c (rtx_unstable_p, rtx_varies_p): Likewise.
396         * simplify-rtx.c (simplify_gen_subreg): Likewise.
397         * config/mn10300/mn10300.c (legitimate_pic_operand_p): Likewise.
398
399         * builtins.c (expand_builtin, expand_builtin_apply,
400         expand_builtin_mathfn, expand_builtin_mathfn_2,
401         expand_builtin_mathfn_3, expand_builtin_setjmp_setup):
402         Remove calls to emit_queue and protect_from_queue.
403         * calls.c (expand_call, precompute_arguments,
404         precompute_register_parameters, rtx_for_function_call,
405         store_one_arg): Likewise.
406         * dojump.c (do_compare_and_jump, do_jump): Likewise.
407         * explow.c (memory_address): Likewise.
408         * expmed.c (clear_by_pieces_1, clear_storage,
409         clear_storage_via_libcall, emit_group_load,
410         emit_group_store, emit_store_flag,
411         expand_expr_real_1, store_by_pieces,
412         store_constructor, store_expr, try_casesi,
413         try_tablejump): Likewise.
414         * function.c (expand_pending_sizes): Likewise.
415         * optabs.c (emit_cmp_and_jump_insns,
416         emit_conditional_add, emit_conditional_move,
417         expand_fix, expand_float, prepare_cmp_insn): Likewise.
418         * stmt.c (emit_case_bit_tests,
419         expand_asm_expr, expand_computed_goto,
420         expand_decl_init, expand_end_case_type,
421         expand_end_stmt_expr, expand_expr_stmt_value,
422         expand_return, expand_start_case,
423         optimize_tail_recursion): Likewise.
424         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
425         * config/s390/s390.c (s390_expand_cmpmem): Likewise.
426
427 2004-07-14  Ben Elliston  <bje@au.ibm.com>
428
429         * vec.h: Comment fix.
430
431 2004-07-13  Richard Henderson  <rth@redhat.com>
432
433         * target.h (struct gcc_target): Add calls.pass_by_reference.
434         * target-def.h (TARGET_PASS_BY_REFERENCE): New.
435         * function.c (pass_by_reference): Use the hook.
436         * system.h (FUNCTION_ARG_PASS_BY_REFERENCE): Poison.
437         * targhooks.c, targhooks.h (hook_pass_by_reference_false): New.
438         (hook_pass_by_reference_must_pass_in_stack): New.
439         * config/alpha/alpha.c (function_arg): Don't query pass-by-ref.
440         (alpha_pass_by_reference): New.
441         (TARGET_PASS_BY_REFERENCE): New.
442         * config/alpha/alpha.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
443         * config/arc/arc.c (arc_pass_by_reference): New.
444         (TARGET_PASS_BY_REFERENCE): New.
445         * config/arc/arc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
446         (FUNCTION_ARG_CALLEE_COPIES): True.
447         * config/arm/arm-protos.h (arm_function_arg_pass_by_reference): Remove.
448         * config/arm/arm.c (TARGET_PASS_BY_REFERENCE): New.
449         (arm_pass_by_reference): Rename from arm_function_arg_pass_by_reference.
450         * config/arm/arm.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
451         * config/c4x/c4x.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
452         * config/cris/cris.c (cris_pass_by_reference): New.
453         (TARGET_PASS_BY_REFERENCE): New.
454         * config/cris/cris.h (FUNCTION_ARG): Don't query pass-by-ref.
455         (FUNCTION_INCOMING_ARG, FUNCTION_ARG_ADVANCE): Likewise.
456         (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
457         * config/fr30/fr30.c (TARGET_PASS_BY_REFERENCE): New.
458         * config/fr30/fr30.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
459         * config/frv/frv-protos.h (frv_function_arg_pass_by_reference): Kill.
460         * config/frv/frv.c (TARGET_PASS_BY_REFERENCE): New.
461         (frv_function_arg_pass_by_reference): Remove.
462         * config/frv/frv.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
463         * config/i386/i386-protos.h (function_arg_pass_by_reference): Remove.
464         * config/i386/i386.c (TARGET_PASS_BY_REFERENCE): New.
465         (ix86_pass_by_reference): Rename from function_arg_pass_by_reference.
466         * config/i386/i386.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
467         * config/ia64/ia64-protos.h (ia64_function_arg_pass_by_reference): Kill.
468         * config/ia64/ia64.c (TARGET_PASS_BY_REFERENCE): New.
469         (ia64_pass_by_reference): Rename from
470         ia64_function_arg_pass_by_reference.
471         * config/ia64/ia64.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
472         * config/ip2k/ip2k.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
473         * config/iq2000/iq2000-protos.h (function_arg_pass_by_reference): Kill.
474         * config/iq2000/iq2000.c (TARGET_PASS_BY_REFERENCE): New.
475         (iq2000_pass_by_reference): Rename from function_arg_pass_by_reference.
476         * config/iq2000/iq2000.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
477         (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref.
478         * config/m32r/m32r-protos.h (m32r_pass_by_reference): Remove.
479         * config/m32r/m32r.c (TARGET_PASS_BY_REFERENCE): New.
480         (m32r_pass_by_reference): Adjust prototype.  Make static.
481         Handle mode sizes correctly.
482         * config/m32r/m32r.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
483         * config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c
484         (m68hc11_function_arg_pass_by_reference): Remove.
485         * config/m68hc11/m68hc11.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
486         (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref.
487         * config/mcore/mcore.c (TARGET_PASS_BY_REFERENCE): New.
488         * config/mcore/mcore.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
489         * config/mips/mips-protos.h (function_arg_pass_by_reference): Remove.
490         * config/mips/mips.c (TARGET_PASS_BY_REFERENCE): New.
491         (mips_va_arg): Use pass_by_reference.
492         (mips_pass_by_reference): Rename from function_arg_pass_by_reference.
493         Handle mode sizes correctly.
494         * config/mips/mips.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
495         (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref.
496         * config/mmix/mmix-protos.h (mmix_function_arg_pass_by_reference): Kill.
497         * config/mmix/mmix.c (TARGET_PASS_BY_REFERENCE): New.
498         (mmix_pass_by_reference): Rename from
499         mmix_function_arg_pass_by_reference.
500         * config/mmix/mmix.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
501         (FUNCTION_ARG_CALLEE_COPIES): True.
502         * config/mn10300/mn10300.c (TARGET_PASS_BY_REFERENCE): New.
503         (mn10300_pass_by_reference): New.
504         * config/mn10300/mn10300.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
505         (FUNCTION_ARG_CALLEE_COPIES): True.
506         * config/pa/pa.c (pa_pass_by_reference): New.
507         (TARGET_PASS_BY_REFERENCE): New.
508         * config/pa/pa.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
509         (FUNCTION_ARG_CALLEE_COPIES): True.
510         * config/rs6000/rs6000-protos.h (function_arg_pass_by_reference): Kill.
511         * config/rs6000/rs6000.c (TARGET_PASS_BY_REFERENCE): New.
512         (rs6000_pass_by_reference): Rename from function_arg_pass_by_reference.
513         * config/rs6000/rs6000.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
514         * config/s390/s390-protos.h (s390_function_arg_pass_by_reference): Kill.
515         * config/s390/s390.c (TARGET_PASS_BY_REFERENCE): New.
516         (s390_pass_by_reference): Rename from
517         s390_function_arg_pass_by_reference.
518         (s390_function_arg_advance): Don't query pass-by-ref.
519         (s390_function_arg): Likewise.
520         (s390_gimplify_va_arg): Use pass_by_reference.
521         (s390_call_saved_register_used): Likewise.
522         * config/s390/s390.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
523         * config/sh/sh.c (TARGET_PASS_BY_REFERENCE): New.
524         (shcompact_byref, sh_pass_by_reference): New.
525         * config/sh/sh.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
526         (SHCOMPACT_BYREF): Remove.
527         * config/sparc/sparc-protos.h (function_arg_pass_by_reference): Kill.
528         * config/sparc/sparc.c (TARGET_PASS_BY_REFERENCE): New.
529         (sparc_pass_by_reference): Rename from function_arg_pass_by_reference.
530         (sparc_gimplify_va_arg): Use pass_by_reference.
531         * config/sparc/sparc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
532         * config/stormy16/stormy16.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
533         * config/v850/v850.c (TARGET_PASS_BY_REFERENCE): New.
534         (v850_pass_by_reference): New.
535         * config/v850/v850.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
536         (FUNCTION_ARG_CALLEE_COPIES): True.
537         * doc/tm.texi (TARGET_PASS_BY_REFERENCE): Update from
538         FUNCTION_ARG_PASS_BY_REFERENCE docs.
539
540 2004-07-14  Richard Henderson  <rth@redhat.com>
541             Richard Sandiford  <rsandifo@redhat.com>
542
543         * config/mips/mips-protos.h (mips_va_arg): Delete.
544         * config/mips/mips.h (EXPAND_BUILTIN_VA_ARG): Delete.
545         * config/mips/mips.c: Include tree-gimple.h.
546         (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
547         (mips_arg_info): Remove special handling of must_pass_in_stck args.
548         (mips_gimplify_va_arg_expr): Rewritten from mips_va_arg.
549         (function_arg_pass_by_reference): Return true if must_pass_in_stack.
550
551 2004-07-13  Bob Wilson  <bob.wilson@acm.org>
552
553         * config/xtensa/xtensa.c (xtensa_gimplify_va_arg_expr): Swap
554         arguments for COND_EXPR in big-endian adjustment code.
555
556 2004-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
557
558         * pa-64.h (ARG_POINTER_REGNUM, STATIC_CHAIN_REGNUM): Delete.
559         * pa.h (ARG_POINTER_REGNUM, STATIC_CHAIN_REGNUM): Modify for hppa64.
560         * pa32-regs.h (REG_ALLOC_ORDER): Reorder caller-saved registers.
561         * pa64-regs.h (REG_ALLOC_ORDER): Likewise.
562
563 2004-07-13  Diego Novillo  <dnovillo@redhat.com>
564
565         PR tree-optimization/16443
566         * tree-ssa-alias.c: Add more description for
567         CALL_CLOBBERED_VARS and ADDRESSABLE_VARS.
568         * tree-ssa-operands.c (get_asm_expr_operands): Re-order the
569         clobbering of call-clobbered and addressable variables.  If
570         there are any before aliases have been computed, add them.
571
572 2004-07-13  Diego Novillo  <dnovillo@redhat.com>
573
574         * tree-optimize.c (execute_todo): Flush DUMP_FILE before
575         verification.
576
577 2004-07-13  Ulrich Weigand  <uweigand@de.ibm.com>
578
579         * config/s390/s390.c (s390_gimplify_va_arg): Use size_int instead
580         of build_int_2.  Convert both operands of PLUS_EXPR and MULT_EXPR
581         to the same type.
582
583 2004-07-13  Per Bothner  <per@bothner.com>
584
585         * collect2.c (main):  Handle --no-demangle and --demangle flags.
586
587 2004-07-13  Sebastian Pop  <pop@cri.ensmp.fr>
588
589         * Makefile.in (OBJS-common): Add tree-data-ref.o.
590         (tree-scalar-evolution.o): Add missing dependences on tree-pass.h flags.h.
591         (tree-data-ref.o): New rule.
592         * lambda.h: New file.
593         * tree-data-ref.c: New file.
594         * tree-data-ref.h: New file.
595         * tree.c (int_cst_value, tree_fold_gcd): New functions.
596         * tree.h (int_cst_value, tree_fold_gcd): Declared here.
597
598 2004-07-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
599
600         PR target/13926
601         * config/sparc/sparc-protos.h (output_ubranch): New prototype.
602         * config/sparc/sparc.c (output_ubranch): New function.
603         * config/sparc/sparc.md (jump pattern): Use it.
604
605 2004-07-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
606
607         PR target/16494
608         * config/sparc/sparc.c (output_cbranch): Properly guard
609         the code handling far branches with TARGET_V9.
610         * config/sparc/sparc.md (length attribute): Document the
611         side-effect of having a length greater or equal to 3.
612
613 2004-07-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
614             Lloyd Parkes  <lloyd@must-have-coffee.gen.nz>
615
616         PR target/15186
617         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Pass
618         /usr/ucblib/sparcv9 as -R path when -compat-bsd is specified.
619
620 2004-07-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
621             Martin Sebor  <sebor@roguewave.com>
622
623         PR target/12602
624         * doc/invoke.texi (SPARC options): Document -threads
625         and -pthreads on Solaris.
626
627 2004-07-13  Richard Henderson  <rth@redhat.com>
628
629         * builtins.c (std_gimplify_va_arg_expr): Handle types passed
630         by reference.
631         (ind_gimplify_va_arg_expr): Remove.
632         * tree.h (ind_gimplify_va_arg_expr): Remove.
633         * config/pa/pa.c (hppa_gimplify_va_arg_expr): Don't use it.
634         * config/mmix/mmix.c (mmix_function_arg_pass_by_reference): Allow
635         argsp to be null.
636
637         * config/arc/arc.c (arc_gimplify_va_arg_expr): Remove.
638         (TARGET_GIMPLIFY_VA_ARG_EXPR): Remove.
639         * config/cris/cris.c, config/fr30/fr30.c, config/frv/frv.c,
640         config/iq2000/iq2000.c, config/m32r/m32r.c, config/mmix/mmix.c,
641         config/mn10300/mn10300.c, config/v850/v850.c: Similarly.
642
643 2004-07-13  Richard Henderson  <rth@redhat.com>
644
645         * function.c (pass_by_reference): New.
646         (assign_parm_find_data_types): Use it.
647         * calls.c (initialize_argument_information): Likewise.
648         (emit_library_call_value_1): Likewise.
649         * expr.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
650         * function.h (pass_by_reference): Declare.
651
652 2004-07-13  Richard Henderson  <rth@redhat.com>
653
654         * target-def.h (TARGET_MUST_PASS_IN_STACK): New.
655         * target.h (struct gcc_target): Add calls.must_pass_in_stack.
656         * expr.h (MUST_PASS_IN_STACK): Remove.
657         * system.h (MUST_PASS_IN_STACK): Poison.
658         * tree.h (must_pass_in_stack_var_size): Declare.
659         (must_pass_in_stack_var_size_or_pad): Declare.
660         * calls.c (must_pass_in_stack_var_size): New.
661         (must_pass_in_stack_var_size_or_pad): Rename from
662         default_must_pass_in_stack.
663         * config/alpha/alpha.c (unicosmk_must_pass_in_stack): New.
664         (TARGET_MUST_PASS_IN_STACK): New.
665         * config/alpha/unicosmk.h (MUST_PASS_IN_STACK): Remove.
666         * config/fr30/fr30.c (fr30_must_pass_in_stack): New.
667         (TARGET_MUST_PASS_IN_STACK): New.
668         * config/fr30/fr30.h (MUST_PASS_IN_STACK): Remove.
669         * config/frv/frv.c (frv_must_pass_in_stack): New.
670         (TARGET_MUST_PASS_IN_STACK): New.
671         * config/frv/frv.h (MUST_PASS_IN_STACK): Remove.
672         * config/i386/i386-protos.h (ix86_must_pass_in_stack): Remove.
673         * config/i386/i386.c (TARGET_MUST_PASS_IN_STACK): New.
674         (ix86_must_pass_in_stack): Make static.
675         * config/i386/i386.h (MUST_PASS_IN_STACK): Remove.
676         * config/ia64/ia64.c (TARGET_MUST_PASS_IN_STACK): New.
677         * config/ia64/ia64.h (MUST_PASS_IN_STACK): Remove.
678         * config/m32r/m32r.c (TARGET_MUST_PASS_IN_STACK): New.
679         * config/m32r/m32r.h (MUST_PASS_IN_STACK): Remove.
680         * config/mcore/mcore-protos.h (mcore_must_pass_on_stack): Remove.
681         * config/mcore/mcore.c (TARGET_MUST_PASS_IN_STACK): New.
682         (mcore_must_pass_on_stack): Remove.
683         * config/mcore/mcore.h (MUST_PASS_IN_STACK): Remove.
684         * config/mips/mips.c (TARGET_MUST_PASS_IN_STACK): New.
685         * config/mips/mips.h (MUST_PASS_IN_STACK): Remove.
686         * config/pa/pa.c (TARGET_MUST_PASS_IN_STACK): New.
687         * config/pa/pa.h (MUST_PASS_IN_STACK): Remove.
688         * config/rs6000/aix.h (MUST_PASS_IN_STACK): Remove.
689         * config/rs6000/linux64.h (MUST_PASS_IN_STACK): Remove.
690         * config/rs6000/rs6000.c (rs6000_must_pass_in_stack): New.
691         (TARGET_MUST_PASS_IN_STACK): New.
692         * config/sh/sh.c (TARGET_MUST_PASS_IN_STACK): New.
693         * config/sh/sh.h (MUST_PASS_IN_STACK): Remove.
694         * config/sparc/sparc.c (TARGET_MUST_PASS_IN_STACK): New.
695         * config/sparc/sparc.h (MUST_PASS_IN_STACK): Remove.
696         * config/xtensa/xtensa.c (TARGET_MUST_PASS_IN_STACK): New.
697         * config/xtensa/xtensa.h (MUST_PASS_IN_STACK): Remove.
698         * doc/tm.texi (TARGET_MUST_PASS_IN_STACK): Update from
699         MUST_PASS_IN_STACK.
700
701         * calls.c, function.c, config/alpha/alpha.c, config/alpha/alpha.h,
702         config/alpha/unicosmk.h, config/alpha/vms.h, config/c4x/c4x.c,
703         config/cris/cris.h, config/fr30/fr30.c, config/fr30/fr30.h,
704         config/frv/frv.c, config/i386/i386.c, config/iq2000/iq2000.c,
705         config/mcore/mcore.c, config/mcore/mcore.h, config/mips/mips.c,
706         config/mmix/mmix.c, config/mmix/mmix.h, config/rs6000/rs6000.c,
707         config/sh/sh.c, config/sh/sh.h, config/stormy16/stormy16.c,
708         config/xtensa/xtensa.c: Use target hook.
709
710 2004-07-13  Anthony Heading  <aheading@jpmorgan.com>
711
712         * configure.ac (gcc_cv_as_offsetable_lo10): Fix a typo.
713         * configure: Rebuilt.
714
715 2004-07-13  Richard Sandiford  <rsandifo@redhat.com>
716
717         * doc/invoke.texi: Remove documentation for MIPS -mrnames option.
718         * config/mips/mips.h (mips_reg_names): Don't declare.
719         (MASK_NAME_REGS): Delete.  Shuffle other MASK_* values down.
720         (TARGET_NAME_REGS): Delete.
721         (TARGET_SWITCHES): Remove -mrnames.
722         (REGISTER_NAMES): Initialise with the old contents of mips_reg_names[].
723         (ADDITIONAL_REGISTER_NAMES): Remove entries for names mentioned
724         in REGISTER_NAMES.
725         * config/mips/mips.c (mips_reg_names, mips_sw_reg_names): Delete.
726         (override_options): Remove handling of TARGET_NAME_REGS.
727
728 2004-07-13  Richard Sandiford  <rsandifo@redhat.com>
729
730         * config/mips/mips.h (TARGET_*): Boolify.
731
732 2004-07-12  Nick Clifton  <nickc@redhat.com>
733
734         * config.gcc: Add sh-*-symbianelf target.
735         * config/sh/sh.c: Add new target macros:
736         TARGET_ENCODE_SECTION_INFO, TARGET_STRIP_NAME_ENCODING,
737         TARGET_CXX_IMPORT_EXPORT_CLASS.
738         (sh_file_start): Create a definition of the .directive section.
739         (sh_attribute): Add dllimport and dllexport attributes.
740         * config/sh/symbian-pre.h: New file.
741         * config/sh/symbian-post.h: New file.
742         * config/sh/symbian.c: New file. Contains Symbian specific
743         functions.
744         * config/sh/sh-protos.h: Add prototypes for new functions
745         provided by symbian.c.
746         * config/sh/t-symbian: New file.
747         * doc/extend.texi: Document support for dllimport and dllexport
748         attributes by the sh-symbianelf target.
749
750 2004-07-12  James E Wilson  <wilson@specifixinc.com>
751
752         * Makefile.in (AR): Use @AR@ not ar.
753         (NM): New.
754         (AR_FOR_TARGET): Use $(AR) not ar for native.
755         (NM_FOR_TARGET): Use $(NM) not nm for native.
756         * configure.ac: Add AC_CHECK_PROG calls for NM and AR.
757         * configure: Regenerate.
758
759 2004-07-12  David S. Miller  <davem@nuts.davemloft.net>
760
761         * config/sparc/sparc.md (ashlsi3): Eliminate const 1
762         special case.
763         (ashldi3_sp64): Likewise.
764
765 2004-07-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
766
767         PR target/16477
768         * pa.c (function_arg): Update comment.
769         * pa.h (BLOCK_REG_PADDING): Define.
770
771 2004-07-12  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
772
773         PR tree-optimization/16461
774         * tree-tailcall.c (independent_of_stmt_p): Handle non-SSA name
775         arguments of phi nodes.
776
777 2004-07-12  Devang Patel  <dpatel@apple.com>
778
779         * doc/invoke.texi (Darwin Options): Document -gused and -gfull.
780
781 2004-07-12  Steve Ellcey  <sje@cup.hp.com>
782
783         * function.c (expand_function_start): Ensure r_save is in Pmode.
784         * calls.c (prepare_call_address): Ensure static_chain_value is
785         in Pmode.
786         * builtins.c (expand_builtin_nonlocal_goto): Ensure r_label and
787         r_save_area are in Pmode.
788         * config/ia64/ia64.c (ia64_initialize_trampoline): Ensure addr,
789         fnaddr, and static_chain are in Pmode.
790
791 2004-07-12  Vladimir Makarov  <vmakarov@redhat.com>
792
793         PR target/16445
794         * config/ia64/ia64.c (bundling): Don't count ignored insns.
795
796 2004-07-12  Richard Henderson  <rth@redhat.com>
797
798         * target.h (struct gcc_target): Move gimplify_va_arg_expr
799         next to build_builtin_va_list.
800         * target-def.h (TARGET_GIMPLIFY_VA_ARG_EXPR): Update to match.
801         * builtins.c (gimplify_va_arg_expr): Likewise.
802         * gimplify.c (copy_if_shared_r): Likewise.
803
804 2004-07-12  Alexandre Oliva  <aoliva@redhat.com>
805
806         * passes.c (rest_of_decl_compilation): Don't defer call of
807         assemble_variable if its DECL_RTL is already set.
808
809 2004-07-12  Sebastian Pop  <pop@cri.ensmp.fr>
810
811         * cfgloop.h (struct loop): Add nb_iterations field.
812         (current_loops): Declare.
813         * tree-chrec.c (chrec_not_analyzed_yet,
814         chrec_dont_know, chrec_known, count_ev_in_wider_type,
815         chrec_contains_symbols_defined_in_loop): Remove the temporary
816         hooks.
817         * tree-flow-inline.h (loop_containing_stmt): New function.
818         * tree-scalar-evolution.c: Add implementation.
819         * tree-scalar-evolution.h: Add declarations.
820
821 2004-07-12 Vladimir Makarov <vmakarov@redhat.com>
822
823         PR rtl-optimization/15921
824         * Makefile.in (global.o): Add recog.h.
825
826         * global.c (recog.h): Add the include-clause.
827         (bb_info): New member earlyclobber.
828         (allocate_bb_info, free_bb_info): Initialize/finish the new
829         member.
830         (earlyclobber_regclass, earlyclobber_regclass_length): The new
831         global variables.
832         (check_earlyclobber, regclass_intersect,
833         mark_reg_use_for_earlyclobber, mark_reg_use_for_earlyclobber_1):
834         New functions.
835         (calculate_local_reg_bb_info): Calculate value of earlyclobber.
836         (make_accurate_live_analysis): Modify pavin.
837
838 2004-07-12  Diego Novillo  <dnovillo@redhat.com>
839
840         * tree-cfg.c (find_taken_edge): Statically compute the truth
841         value of a predicate comparing an SSA_NAME to itself.
842
843 2004-07-12  Roger Sayle  <roger@eyesopen.com>
844
845         * config/rs6000/rs6000.c (rs6000_rtx_costs): Indicate that the
846         rs6000 doesn't have shift-and-add or shift-and-sub instructions
847         by returning the cost of a multiplication plus an addition.
848
849 2004-07-12  Paolo Bonzini  <bonzini@gnu.org>
850
851         PR tree-optimization/14107
852         * gimplify.c (gimplify_return_expr): Accept a
853         RETURN_EXPR with an error argument.
854         * tree-optimize.c (init_tree_optimization_passes):
855         Run pass_warn_function_return at -O0.
856
857 2004-07-12  Roger Sayle  <roger@eyesopen.com>
858
859         * doc/invoke.texi: Correct -fasynchronous-unwind-tables option
860         index entry.
861
862 2004-07-12  Richard Sandiford  <rsandifo@redhat.com>
863
864         * config/mips/mips.c (mips_use_dfa_pipeline_interface): Delete.
865         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
866         * config/mips/3000.md: Add copyright notice.  Remove automota and
867         function units; use generic ones instead.  Only define reservations
868         for things that are different from generic.md.  Extend each clause
869         to include r3900.
870         * config/mips/{4000,4100,4300,4600,5000,6000,generic}.md: New files.
871         * config/mips/mips.md: Include them. Remove define_function_units.
872         (alu, imuldiv): New automata and units.
873
874 2004-07-12  Ben Elliston  <bje@au.ibm.com>
875
876         * doc/invoke.texi (Optimize Options): Document -frename-registers
877         not being enabled by default at -O3.
878
879 2004-07-11  Roger Sayle  <roger@eyesopen.com>
880
881         * fold-const.c (fold) <PLUS_EXPR>: Canonicalize X + -C as X - C for
882         floating point additions, to keep real immediate constant positive.
883         <MINUS_EXPR>:  For floating point subtractions, only transform X - -C
884         into X + C, and leave positive real constants as X - C.
885
886 2004-07-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
887
888         * pa.c (hppa_gimplify_va_arg_expr): Remove comment.
889
890 2004-07-11  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
891
892         PR tree-optimization/15654
893         * tree-tailcall.c (eliminate_tail_call): Remove unreachable code.
894
895 2004-07-11  Roger Sayle  <roger@eyesopen.com>
896
897         * builtins.c (fold_builtin_fputs): Don't bother converting the
898         return type to integer_type_node, as we've already checked that
899         the result will be ignored.
900
901         * tree-eh.c (tree_could_trap_p): Add support for -ftrapv such
902         that signed addition, subtraction, multiplication, division,
903         remainder, negation and absolute value may potentially trap.
904
905         * fold-const.c (fold_ignored_result): New function to strip
906         non-side-effecting tree nodes from an expression whose result
907         is ignored.
908         (fold_convert): Call fold_ignored_result when casting a value
909         to VOID_TYPE.
910         (omit_one_operand):  Call fold_ignored_result on the "omitted"
911         operand when building a COMPOUND_EXPR.
912         (pedantic_omit_one_operand): Likewise.
913         * tree.h (fold_ignored_result): Prototype here.
914         * tree-ssa-ccp.c (ccp_fold_builtin): Call fold_ignored_result
915         when we're going to ignore the result.
916
917 2004-07-11  Richard Henderson  <rth@redhat.com>
918
919         PR tree-opt/16383
920         * tree-ssa-ccp.c (fold_stmt_r): Split out...
921         * tree.c (fields_compatible_p, find_compatible_field): ... new.
922         * tree.h (fields_compatible_p, find_compatible_field): Declare.
923         * tree-sra.c (sra_hash_tree): Hash fields by offset.
924         (sra_elt_eq): Use fields_compatible_p.
925         (generate_one_element_ref): Use find_compatible_field.
926
927 2004-07-11  Richard Henderson  <rth@redhat.com>
928
929         PR tree-opt/16422
930         * tree-sra.c (generate_one_element_init): New.
931         (generate_element_init): Use it.
932         (scalarize_init): Push/pop gimplify context around it.
933         (find_new_referenced_vars_1, find_new_referenced_vars): New.
934         * gimplify.c (gimplify_expr): Allow SSA_NAME.
935
936 2004-07-11  Roger Sayle  <roger@eyesopen.com>
937
938         * rtlanal.c (insn_rtx_cost): New function, moved and renamed from
939         combine.c's combine_insn_cost.
940         * rtl.h (insn_rtx_cost): Prototype here.
941         * combine.c (combine_insn_cost): Delete function.
942         (combine_validate_cost): Update callers of combine_insn_cost to
943         call insn_rtx_cost instead.
944         (combine_instructions): Likewise.  Use NONJUMP_INSN_P to avoid
945         requesting the rtx_cost of call and/or jump instructions.
946
947         * ifcvt.c (total_bb_rtx_cost): Use insn_rtx_cost instead of calling
948         rtx_cost directly.  Don't request/use the cost of call or jump
949         instructions.  Return -1 if the cost of any instruction can't be
950         determined (or the BB contains a function call).
951         (find_if_case_1): Abort transformation if total_bb_rtx_cost returns
952         -1 (i.e. can't determine the cost of any instruction or the basic
953         block contains a subroutine call).
954         (find_if_case_2): Likewise.
955
956 2004-07-11  Roger Sayle  <roger@eyesopen.com>
957
958         * rs6000.c (struct processor_costs): Change semantics of fields to
959         include the COST_N_INSNS scaling, and update all initializers.
960         (rs6000_rtx_costs): Don't use COSTS_N_INSNS on rs6000_cost fields.
961         Use COSTS_N_INSNS(1) for NOT, SIGN_EXTEND, ZERO_EXTEND and COMPARE.
962         Use rs6000_cost->fp for both FLOAT_TRUNCATE and UNSPEC_FRSP.  When
963         optimizing for size, use COSTS_N_INSNS(1) for CALL and IF_THEN_ELSE.
964
965 2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>
966
967         * LANGUAGES: Remove obsolete information.
968
969 2004-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
970
971         * config/s390/linux.h (MD_FALLBACK_FRAME_STATE_FOR): For SIGSEGV and
972         SIGBUS signal frames, the PSW address points *to* the faulting
973         instruction, not after it.
974
975 2004-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
976
977         * config/s390/s390.c (legitimize_tls_address): Handle constant offsets
978         added to TLS symbol addresses.
979
980 2004-07-11  Richard Henderson  <rth@redhat.com>
981
982         * expmed.c (init_expmed): Use stack-local structures for
983         temporary rtl.  Don't recognize shifts.
984
985 2004-07-11  Richard Henderson  <rth@redhat.com>
986
987         * expr.c (store_expr): Don't fiddle subreg promotion for types
988         with precision smaller than the mode.
989
990 2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>
991
992         * tree.h (all_types_permanent): Remove.
993
994 2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>
995
996         * langhooks.h (estimate_num_insns, pushlevel, poplevel, set_block,
997         maybe_build_cleanup, update_decl_after_saving): Remove hooks.
998         * langhooks.c (lhd_clear_binding_stack): Remove.
999         * langhooks-def.h (lhd_clear_binding_stack,
1000         LANG_HOOKS_MAYBE_BUILD_CLEANUP,
1001         LANG_HOOKS_UPDATE_DECL_AFTER_SAVING,
1002         LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS, LANG_HOOKS_PUSHLEVEL,
1003         LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK): Remove.
1004         (LANG_HOOKS_CLEAR_BINDING_STACK): Define to lhd_do_nothing.
1005         * system.h (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS,
1006         LANG_HOOKS_PUSHLEVEL, LANG_HOOKS_SET_BLOCK,
1007         LANG_HOOKS_MAYBE_BUILD_CLEANUP,
1008         LANG_HOOKS_UPDATE_DECL_AFTER_SAVING, LANG_HOOKS_POPLEVEL): Poison.
1009         * tree.h (poplevel): Don't declare.
1010         * c-lang.c (LANG_HOOKS_CLEAR_BINDING_STACK, LANG_HOOKS_PUSHLEVEL,
1011         LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK): Remove.
1012         * objc/objc-lang.c (LANG_HOOKS_CLEAR_BINDING_STACK,
1013         LANG_HOOKS_PUSHLEVEL, LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK):
1014         Remove.
1015
1016 2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>
1017
1018         PR tree-optimization/16437
1019         * c-common.c (shorten_compare): Don't mark result of conversion to
1020         narrower signed type as overflowing.
1021         * fold-const.c (decode_field_reference): Determine whether
1022         signedness comes from outer type using precision rather than size.
1023
1024 2004-07-11  Phil Edwards  <phil@codesourcery.com>
1025
1026         * configure.ac:  Alphabetize --enable-checking list, add
1027         missing valgrind entry.
1028         * configure:  Regenerate.
1029
1030 2004-07-11  Phil Edwards  <phil@codesourcery.com>
1031
1032         * doc/install.texi (Testing):  Fix syntax in "make check" example.
1033
1034 2004-07-10  James E Wilson  <wilson@specifixinc.com>
1035
1036         * config/gofast.h (gofast_maybe_init_libfuncs): Use SImode for litodp.
1037
1038 2004-07-10  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
1039
1040         PR rtl-optimization/16001
1041         * loop-iv.c (iv_number_of_iterations): Prevent copy propagation in
1042         niter_expr.
1043
1044 2004-07-10  Geoffrey Keating  <geoffk@apple.com>
1045
1046         * config/darwin.h (LINK_COMMAND_SPEC): Don't call c++filt.
1047
1048 2004-07-10  Steve Kargl  <sgk@troutmask.apl.washington.edu>
1049             James Morrison  <phython@gcc.gnu.org>
1050
1051         * doc/contrib.texi (Contributors): Add gfortran contributors and
1052         fix a couple of typos.
1053
1054 2004-07-10  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
1055
1056         PR rtl-optimization/15387
1057         * calls.c (check_sibcall_argument_overlap_1): Handle pointers
1058         to incoming args space correctly.
1059
1060 2004-07-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1061
1062         * pa.c (output_indirect_call): Only use %r2 as the link register in
1063         indirect calls with the long PA 2.0 pc-relative branch.
1064
1065 2004-07-10  Daniel Jacobowitz  <dan@debian.org>
1066
1067         * config/i386/i386.c (override_options): Pick a 64-bit CPU
1068         for the default tuning if TARGET_64BIT.
1069
1070 2004-07-10  Richard Henderson  <rth@redhat.com>
1071
1072         * builtins.c (std_gimplify_va_arg_expr): Widen align/boundary
1073         to HOST_WIDE_INT.  Fold pad-args-down arithmetic.
1074
1075 2004-07-10  Jakub Jelinek  <jakub@redhat.com>
1076
1077         * expr.h (store_bit_field, extract_bit_field): Remove last argument.
1078         * expmed.c (store_bit_field, extract_bit_field): Remove last
1079         argument.
1080         * builtins.c (expand_builtin_signbit): Adjust callers.
1081         * optabs.c (expand_vector_binop, expand_vector_unop): Likewise.
1082         * calls.c (store_unaligned_arguments_into_pseudos): Likewise.
1083         * ifcvt.c (noce_emit_move_insn): Likewise.
1084         * stmt.c (expand_return): Likewise.
1085         * expr.c (emit_group_load, emit_group_store, copy_blkmode_from_reg,
1086         store_field, expand_expr_real_1): Likewise.
1087
1088 2004-07-10  Richard Henderson  <rth@redhat.com>
1089
1090         * builtins.c (std_gimplify_va_arg_expr): Fix borked BIT_AND_EXPR.
1091
1092 2004-07-09  Mike Stump  <mrs@apple.com>
1093
1094         * config/darwin.c (no_dead_strip): Add.
1095         (HAVE_DEAD_STRIP): Add.
1096         (darwin_emit_unwind_label): Ensure that we don't dead code strip
1097         the .eh label.
1098
1099 2004-07-09  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
1100
1101         * tree-ssa-loop-im.c: New file.
1102         * Makefile.in (tree-ssa-loop-im.o): Add.
1103         * cfgloop.c (superloop_at_depth): New function.
1104         * cfgloop.h (superloop_at_depth): Declare.
1105         * common.opt (ftree-lim): New flag.
1106         * expr.c (array_ref_up_bound): New function.
1107         * params.def (PARAM_LIM_EXPENSIVE): New parameter.
1108         * timevar.def (TV_LIM): New timevar.
1109         * tree-dfa.c (compute_immediate_uses): Respect TDFA_USE flags when
1110         computing immediate uses of a phi node.
1111         * tree-flow.h (struct tree_ann_common_d): Add aux field.
1112         (loop_commit_inserts, for_each_index, tree_ssa_lim): Declare.
1113         * tree-optimize.c (init_tree_optimization_passes): Add pass_lim.
1114         * tree-pass.h (pass_lim): Declare.
1115         * tree-ssa-loop.c (tree_ssa_loop_im, gate_tree_ssa_loop_im): New
1116         functions.
1117         (pass_lim): New pass structure.
1118         * tree-eh.c (tree_could_trap_p): Handle ARRAY_REFs correctly.
1119         * tree.c (in_array_bounds_p): New function.
1120         * tree.h (TREE_THIS_NOTRAP): Define also for ARRAY_REFs.
1121         (in_array_bounds_p, array_ref_up_bound): Declare.
1122         * doc/invoke.texi (-ftree-lim, --param lim-expensive): Document.
1123         * doc/passes.texi (tree-ssa-loop-im.c): Document.
1124
1125 2004-07-09  Richard Henderson  <rth@redhat.com>
1126
1127         * builtins.c (expand_builtin_stpcpy): Don't modify len.
1128
1129         * tree-ssa-ccp.c (ccp_fold_builtin): Strip conversion exprs
1130         with prejudice.
1131
1132 2004-07-10  Kelley Cook  <kcook@gcc.gnu.org>
1133
1134         * flags.h: Delete redundant prototypes that are being generated
1135         in options.h from common.opt.
1136         * common.opt: Add in the expository comments formerly in flags.h.
1137
1138 2004-07-09  Jan Beulich  <jbeulich@novell.com>
1139
1140         * config/i386/i386.c (init_cumulative_args): Set mmx/sse registers
1141         available for use only when TARGET_MMX/_SSE is set, and check for
1142         variable argument function if any register count is non-zero.
1143         (function_arg): Correctly suppress repeated warnings for passing SSE
1144         vectors are arguments without SSE enabled.
1145         (ix86_function_arg_boundary): Without SSE enabled, the use of what
1146         would be SSE register modes does no longer influence the alignment.
1147
1148 2004-07-09  Richard Henderson  <rth@redhat.com>
1149
1150         * builtins.c (std_gimplify_va_arg_expr): Deny ARGS_GROW_DOWNWARD.
1151         Always align upward to arg boundary.  Use size_in_bytes/round_up.
1152         Maintain type-correctness of constants.
1153         * stor-layout.c (round_up, round_down): Special-case powers of 2.
1154
1155 2004-07-09  David S. Miller  <davem@nuts.davemloft.net>
1156
1157         * config/sparc/sparc.c (*_costs): Scale instruction costs
1158         by COSTS_N_INSNS.
1159         (sparc_rtx_costs): Adjust as appropriate.
1160
1161 2004-07-09  Jan Beulich  <jbeulich@novell.com>
1162
1163         * config/i386/mm3dnow.h: New.
1164         * config.gcc: Add mm3dnow.h to extra_headers for i?86 and x86-64.
1165
1166 2004-07-09  Richard Henderson  <rth@redhat.com>
1167
1168         * simplify-rtx.c (simplify_const_relational_operation): Only
1169         look at bounds of scalar integers.
1170
1171 2004-07-09  Jan Beulich  <jbeulich@novell.com>
1172
1173         * config/i386/i386.md (sse2_clflush): Use correct operand for clflush.
1174
1175 2004-07-09  Andrew Pinski  <apinski@apple.com>
1176
1177         * objc/objc-act.c (build_module_descriptor): Mark UOBJC_MODULES_decl as
1178         always referenced.
1179         (synth_forward_declarations): Likewise for UOBJC_CLASS_decl and
1180         UOBJC_METACLASS_decl.
1181
1182 2004-07-09  James E Wilson  <wilson@specifixinc.com>
1183
1184         PR target/16364
1185         * config/ia64/ia64.c (ia64_function_arg): For a single element HFA,
1186         do return a parallel if hfa_mode == XFmode and mode == TImode.
1187
1188 2004-07-09  Jan Beulich  <jbeulich@novell.com>
1189
1190         * c-typeck.c (build_unary_op): include VECTOR_TYPE in set of codes
1191         permissible for unary plus.
1192
1193 2004-07-09  Jan Beulich  <jbeulich@novell.com>
1194
1195         * builtin-types.def (BT_UINT): Rename from BT_UNSIGNED.
1196         (BT_FN_UINT): Rename from BT_FN_UNSIGNED.
1197         (BT_FN_PTR_UINT): Rename from BT_FN_PTR_UNSIGNED.
1198         (BT_ULONG, BT_ULONGLONG, BT_UINTMAX, BT_FN_INT_UINT, BT_FN_INT_ULONG,
1199         BT_FN_INT_ULONGLONG, BT_FN_INT_INTMAX, BT_FN_INT_UINTMAX): New.
1200         * builtins.def (BUILTIN_CLZxxx, BUILTIN_CTXxxx, BUILTIN_PARITYxxx,
1201         BUILTIN_POPCOUNTxxx): Arguments are unsigned.
1202         (BUILTIN_xxxIMAX): New.
1203         * builtins.c (expand_builtin): Handle BUILT_IN_FFSIMAX,
1204         BUILT_IN_CLZIMAX, BUILT_IN_CTZIMAX, BUILT_IN_POPCOUNIMAX, and
1205         BUILT_IN_PARITYIMAX.
1206
1207 2004-07-09  David S. Miller  <davem@nuts.davemloft.net>
1208
1209         * config/sparc/sparc.h (processor_costs): Define.
1210         (sparc_costs): Declare.
1211         * config/sparc/sparc.c (cypress_costs, supersparc_costs,
1212         hypersparc_costs, sparclet_costs, ultrasparc_costs,
1213         ultrasparc3_costs): New.
1214         (sparc_override_options): Set sparc_costs as appropriate.
1215         (sparc_rtx_costs): Use sparc_costs instead of messy
1216         conditionals.
1217
1218 2004-07-09  Steven Bosscher  <stevenb@suse.de>
1219
1220         * doc/md.texi (Processor pipeline description): Mention that
1221         the old pipeline description is deprecated.
1222
1223         * config/rs6000/7450.md (automaton ppc7450): Split up, move
1224         mciu_7450 function unit to...
1225         (automaton ppc7450mciu): ...new automaton.
1226
1227         * haifa-sched.c (insert_schedule_bubbles_p): Remove.
1228         (schedule_block): Don't consider inserting bubbles.
1229         (sched_init): Don't initialize DFA bubbles.
1230         * target-def.h (TARGET_SCHED_INIT_DFA_BUBBLES,
1231         TARGET_SCHED_DFA_BUBBLE): Remove.
1232         * target.h (init_dfa_bubbles, dfa_bubble): Remove hooks.
1233         * doc/tm.texi (TARGET_SCHED_INIT_DFA_BUBBLES,
1234         TARGET_SCHED_DFA_BUBBLE): Remove documentation.
1235
1236         * stmt.c (conditional_context): Remove prototype.
1237         * tree.h (conditional_context): Remove.
1238         * tree-cfg.c (pre_insert_on_edge): Remove.
1239
1240         * c-common.h (c_expand_asm_operands): Remove prototype.
1241         * c-typeck.c (c_expand_asm_operands): Remove.
1242
1243 2004-07-09  Jan Beulich  <jbeulich@novell.com>
1244
1245         * config/i386/i386.c (classify_argument): Treat V1xx modes the same as
1246         their base modes. CTImode, TCmode, and XCmode must be passed in memory.
1247         TFmode (__float128) must be is an SSE/SSEUP pair. V2SImode, V4HImode,
1248         and V8QI are class SSE. All sufficiently small remaining vector modes
1249         must be passed in one or two integer registers.
1250         (ix86_libcall_value): TFmode must be returned in xmm0, XCmode must be
1251         returned in memory.
1252         (bdesc_2arg, ix86_init_mmx_sse_builtins): __builtin_ia32_pmuludq and
1253         __builtin_ia32_pmuludq128 have non-uniform argument and return types
1254         and must thus be handled explicitly.
1255         * config/i386/i386.md (*movdi_1_rex64): Add cases for moving between
1256         MMX and XMM regs.
1257         (movv8qi_internal, movv4hi_internal, movv2si_internal,
1258         movv2sf_internal): Permit moving between MMX and XMM registers (since
1259         MMX areguments and return values are passed in XMM registers).
1260         (sse2_umulsidi3): Correct type and mode.
1261
1262 2004-07-09  Richard Henderson  <rth@redhat.com>
1263
1264         * tree-cfg.c (dump_cfg_stats): Fix 64-bit format mismatch errors.
1265
1266 2004-07-09  Eric Christopher  <echristo@redhat.com>
1267
1268         * config/rs6000/40x.md: Split into two automatons.
1269
1270 2004-07-09  Zack Weinberg  <zack@codesourcery.com>
1271             Andrew Pinski  <apinski@apple.com>
1272
1273         * c-opts.c (c_common_post_options): Force unit-at-a-time mode
1274         on when we have more than one input file.
1275         (c_common_parse_file): Restore loop over all input files.
1276         Clarify diagnostic for -dy when YYDEBUG wasn't defined.
1277
1278         * c-decl.c (set_type_context): New function.
1279         (pop_scope): Use it to set context of types.  When we
1280         encounter a TYPE_DECL, set the context of the attached type too.
1281         (pop_file_scope): Don't call cpp_undef_all here.
1282         (diagnose_mismatched_decls): Do not complain about a second
1283         definition of an 'extern inline' function if it's not in the
1284         same translation unit.  Do not complain about inline
1285         declaration after use if the use was in a different
1286         translation unit.
1287         (merge_decls): Don't clobber olddecl's DECL_CONTEXT.
1288         (pushdecl): Do not put DECL_EXTERNAL, !TREE_PUBLIC decls in
1289         the external scope.
1290         (pushdecl_top_level): Likewise.
1291         (grokdeclarator): Clarify what is going on with setting
1292         DECL_EXTERNAL on function types, a little.
1293         (c_write_global_declarations): Don't do anything if
1294         -fsyntax-only or errors have been encountered.
1295
1296 2004-07-09  Zack Weinberg  <zack@codesourcery.com>
1297
1298         * vec.c, vec.h (vec_assert_fail): Use unsigned int for LINE argument.
1299
1300 2004-07-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1301
1302         PR target/16459
1303         * pa.c (output_indirect_call): Use %r2 as the link register when
1304         calling $$dyncall with a pc-relative branch.
1305
1306 2004-07-08  Gerald Pfeifer  <gerald@pfeifer.com>
1307
1308         * doc/install.texi (Binaries): Mention OpenPKG.
1309
1310 2004-07-09  Diego Novillo  <dnovillo@redhat.com>
1311
1312         Fix PR tree-optimization/15555
1313         * tree-dfa.c (dump_variable): If the variable is a pointer
1314         SSA_NAME, also dump its points-to information.
1315         * tree-flow.h (struct ptr_info_def): Add field
1316         is_dereferenced.
1317         (dump_points_to_info_for): Declare.
1318         (debug_points_to_info_for): Declare.
1319         * tree-optimize.c (init_tree_optimization_passes): Add a
1320         second alias analysis pass after DOM2.
1321         Move pass_del_pta to a later spot.
1322         * tree-ssa-alias.c (compute_points_to_and_addr_escape): Do not
1323         create a name tags when we find a dereferenced pointer.  Just
1324         mark the pointer dereferenced.
1325         (collect_points_to_info_for): Move code to clear points-to
1326         information to create_name_tags.
1327         (create_name_tags): New function.
1328         (compute_flow_sensitive_aliasing): Call it.
1329         (setup_pointers_and_addressables): Mark type tags for renaming
1330         here instead of ...
1331         (create_memory_tag): ... here.
1332         (merge_pointed_to_info): Do not merge PT_MALLOC attributes.
1333         (dump_points_to_info_for): Declare extern.
1334         (debug_points_to_info_for): New function.
1335
1336 2004-07-09  Paolo Bonzini  <bonzini@gnu.org>
1337
1338         * config/arc/arc.md: Switch to DFA-based scheduler description.
1339         * config/arc/arc.c: Switch to DFA-based scheduler description.
1340
1341 2004-07-09  Richard Earnshaw  <rearnsha@arm.com>
1342
1343         * arm/unknown-elf.h (TARGET_DEFAULT): Don't require an APCS frame
1344         pointer.
1345
1346 2004-07-09  Richard Henderson  <rth@redhat.com>
1347
1348         * config/xtensa/xtensa-protos.h (xtensa_va_arg): Remove.
1349         * config/xtensa/xtensa.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1350         (xtensa_gimplify_va_arg_expr): Rewrite from xtensa_va_arg.
1351         * config/xtensa/xtensa.h (EXPAND_BUILTIN_VA_ARG): Remove.
1352
1353         * config/v850/v850-protos.h (v850_va_arg): Remove.
1354         * config/v850/v850.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1355         (v850_gimplify_va_arg_expr): Rewrite from v850_va_arg.
1356         * config/v850/v850.h (EXPAND_BUILTIN_VA_ARG): Remove.
1357         (FUNCTION_ARG_PASS_BY_REFERENCE): Handle variable size types.
1358         (FUNCTION_ARG_CALLEE_COPIES): Use FUNCTION_ARG_PASS_BY_REFERENCE.
1359
1360 2004-07-09  Richard Earnshaw  <rearnsha@arm.com>
1361
1362         PR target/12133
1363         * arm.c (arm_legitimate_index_p) Allow DFmode for soft-float
1364         and DImode to use +/-4k offset.
1365
1366 2004-07-09  Richard Henderson  <rth@redhat.com>
1367
1368         * config/stormy16/stormy16-protos.h (xstormy16_expand_builtin_va_arg):
1369         Remove.
1370         * config/stormy16/stormy16.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1371         (xstormy16_gimplify_va_arg_expr): Rewrite from
1372         xstormy16_expand_builtin_va_arg.
1373         * config/stormy16/stormy16.h (EXPAND_BUILTIN_VA_ARG): Remove.
1374
1375         * config/sparc/sparc-protos.h (sparc_va_arg): Remove.
1376         * config/sparc/sparc.c (sparc_gimplify_va_arg): Mark static.
1377
1378         * config/sh/sh-protos.h (sh_va_arg): Remove.
1379         * config/sh/sh.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1380         (sh_gimplify_va_arg_expr): Rewrite from sh_va_arg.
1381         * config/sh/sh.h (EXPAND_BUILTIN_VA_ARG): Remove.
1382
1383         * config/pa/pa-protos.h (hppa_va_arg): Remove.
1384         * config/pa/pa.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1385         (hppa_gimplify_va_arg_expr): Rewrite from hppa_va_arg.
1386         * config/pa/pa.h (EXPAND_BUILTIN_VA_ARG): Remove.
1387
1388         * config/mn10300/mn10300-protos.h (mn10300_va_arg): Remove.
1389         * config/mn10300/mn10300.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1390         (mn10300_gimplify_va_arg_expr): Rewrite from mn10300_va_arg.
1391         * config/mn10300/mn10300.h (EXPAND_BUILTIN_VA_ARG): Remove.
1392
1393 2004-07-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
1394
1395         * config/sparc/sparc.md (return): Rewrite length formula.
1396         * config/sparc/sparc.c (output_return): Pass 1 as 5th
1397         argument to final_scan_insn when in a delay slot.
1398         (output_sibcall): Likewise.
1399
1400 2004-07-09  Richard Earnshaw  <rearnsha@arm.com>
1401
1402         * arm.c (arm_cpp_interwork): New variable.
1403         (arm_override_options): Set it if TARGET_INTERWORK was on the command
1404         line.
1405         * arm.h (arm_cpp_interwork): Declare it.
1406         (TARGET_CPU_CPP_BUILTINS): Use it to control definition of
1407         __THUMB_INTERWORK__ in the preprocessor.
1408
1409 2004-07-09  Nathan Sidwell  <nathan@codesourcery.com>
1410
1411         * vec.h (VEC_T_alloc): Fix MEM_STAT_DECL pasto.
1412
1413 2004-07-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
1414
1415         PR target/16416
1416         * config/sparc/sol2-bi.h (OPTION_DEFAULT_SPECS): New macro.
1417         Override default settings to account for -m32 and -m64.
1418
1419 2004-07-08  Randolph Chung  <tausq@debian.org>
1420
1421         * pa32-linux.h (MD_FALLBACK_FRAME_STATE_FOR): Define.
1422
1423 2004-07-09  Alexandre Oliva  <aoliva@redhat.com>
1424
1425         * builtins.c (fold_builtin_strncpy): Make sure len is a constant
1426         before comparing it as such.
1427
1428 2004-07-08  Richard Henderson  <rth@redhat.com>
1429
1430         * builtins.c (std_gimplify_va_arg_expr): Hoist valist into a
1431         temporary.  Use bit arithmetic to align.
1432
1433 2004-07-08  Jerry Quinn  <jlquinn@optonline.net>
1434
1435         * alias.c (nonlocal_mentioned_p, nonlocal_referenced_p,
1436         nonlocal_set_p, init_alias_analysis): Use, LABEL_P, JUMP_P, CALL_P,
1437         NONJUMP_INSN_P, INSN_P, NOTE_P, BARRIER_P.
1438         * bb-reorder.c (mark_bb_for_unlikely_executed_section,
1439         add_labels_and_missing_jumps, find_jump_block,
1440         fix_crossing_unconditional_branches, add_reg_crossing_jump_notes):
1441         Likewise.
1442         * bt-load.c (btr_referenced_p, compute_defs_uses_and_gen,
1443         link_btr_uses, move_btr_def): Likewise.
1444         * builtins.c (expand_builtin_longjmp, expand_builtin_nonlocal_goto,
1445         expand_builtin_expect_jump): Likewise.
1446         * caller-save.c (save_call_clobbered_regs, insert_one_insn): Likewise.
1447         * calls.c (expand_call, emit_library_call_value_1): Likewise.
1448         * cfganal.c (forwarder_block_p): Likewise.
1449         * cfgbuild.c (inside_basic_block_p, count_basic_blocks,
1450         make_label_edge, rtl_make_eh_edge, make_edges, find_basic_blocks_1,
1451         find_bb_boundaries): Likewise.
1452         * cfgcleanup.c (try_simplify_condjump, try_forward_edges,
1453         merge_blocks_move_predecessor_nojumps,
1454         merge_blocks_move_successor_nojumps, insns_match_p,
1455         flow_find_cross_jump, outgoing_edges_match, try_crossjump_to_edge,
1456         try_optimize_cfg): Likewise.
1457         * cfgexpand.c (expand_block, construct_exit_block): Likewise.
1458         * cfglayout.c (skip_insns_after_block, label_for_bb,
1459         record_effective_endpoints, insn_locators_initialize,
1460         fixup_reorder_chain, update_unlikely_executed_notes): Likewise.
1461         * cfgmainloop.c (create_loop_notes): Likewise.
1462         * cfgrtl.c (delete_insn, delete_insn_chain,
1463         create_basic_block_structure, rtl_delete_block, free_bb_for_insn,
1464         update_bb_for_insn, rtl_merge_blocks, rtl_can_merge_blocks,
1465         block_label, try_redirect_by_replacing_jump, last_loop_beg_note,
1466         redirect_branch_edge, force_nonfallthru_and_redirect,
1467         rtl_tidy_fallthru_edge, back_edge_of_syntactic_loop_p,
1468         rtl_split_edge, commit_one_edge_insertion, print_rtl_with_bb,
1469         update_br_prob_note, rtl_verify_flow_info_1, rtl_verify_flow_info,
1470         purge_dead_edges, cfg_layout_redirect_edge_and_branch,
1471         cfg_layout_delete_block, cfg_layout_can_merge_blocks_p,
1472         cfg_layout_merge_blocks, rtl_block_ends_with_call_p,
1473         need_fake_edge_p, rtl_flow_call_edges_add): Likewise.
1474         * combine.c (combine_instructions, can_combine_p, try_combine,
1475         find_split_point, record_dead_and_set_regs, reg_dead_at_p,
1476         distribute_notes, distribute_links, insn_cuid): Likewise.
1477         * cse.c (fold_rtx, cse_insn, cse_around_loop,
1478         invalidate_skipped_block, cse_set_around_loop,
1479         cse_end_of_basic_block, cse_main, cse_basic_block,
1480         cse_condition_code_reg): Likewise.
1481         * cselib.c (cselib_process_insn): Likewise.
1482         * ddg.c (create_ddg): Likewise.
1483         * df.c (df_insn_refs_record, df_bb_rd_local_compute, df_insns_modify):
1484         Likewise.
1485         * dwarf2out.c (dwarf2out_stack_adjust, dwarf2out_frame_debug,
1486         gen_label_die, dwarf2out_var_location): Likewise.
1487         * emit-rtl.c (get_first_nonnote_insn, get_last_nonnote_insn,
1488         next_insn, previous_insn, next_nonnote_insn, prev_nonnote_insn,
1489         last_call_insn, active_insn_p, next_label, prev_label,
1490         link_cc0_insns, next_cc0_user, try_split, add_insn_after,
1491         add_insn_before, remove_insn, add_function_usage_to,
1492         reorder_insns, find_line_note, remove_unnecessary_notes,
1493         emit_insn_after_1, classify_insn): Likewise.
1494         * except.c (convert_from_eh_region_ranges_1, emit_to_new_bb_before,
1495         connect_post_landing_pads, sjlj_mark_call_sites,
1496         sjlj_emit_function_enter, sjlj_emit_function_exit, reachable_handlers,
1497         can_throw_internal, can_throw_external, set_nothrow_function_flags,
1498         convert_to_eh_region_ranges): Likewise.
1499         * explow.c (optimize_save_area_alloca): Likewise.
1500         * expr.c (expand_expr_real): Likewise.
1501         * final.c (insn_current_reference_address, compute_alignments,
1502         shorten_branches, final, scan_ahead_for_unlikely_executed_note,
1503         final_scan_insn, output_asm_label, leaf_function_p): Likewise.
1504         * flow.c (first_insn_after_basic_block_note, delete_dead_jumptables,
1505         propagate_block_delete_insn, propagate_one_insn,
1506         init_propagate_block_info, propagate_block, libcall_dead_p,
1507         mark_set_1, attempt_auto_inc, find_auto_inc, try_pre_increment):
1508         Likewise.
1509         * function.c (instantiate_virtual_regs, reorder_blocks_1,
1510         expand_function_start, expand_function_end, contains,
1511         thread_prologue_and_epilogue_insns,
1512         reposition_prologue_and_epilogue_notes): Likewise.
1513         * gcse.c (constprop_register, bypass_conditional_jumps,
1514         insert_insn_end_bb, gcse_after_reload): Likewise.
1515         * genemit.c (gen_expand, gen_split): Likewise.
1516         * genpeep.c (gen_peephole, main): Likewise.
1517         * global.c (build_insn_chain): Likewise.
1518         * graph.c (node_data, print_rtl_graph_with_bb): Likewise.
1519         * haifa-sched.c (unlink_other_notes, unlink_line_notes,
1520         get_block_head_tail, no_real_insns_p, rm_line_notes, save_line_notes,
1521         restore_line_notes, rm_redundant_line_notes, rm_other_notes,
1522         ok_for_early_queue_removal, set_priorities, sched_init): Likewise.
1523         * ifcvt.c (count_bb_insns, first_active_insn, last_active_insn,
1524         cond_exec_process_insns, end_ifcvt_sequence, noce_process_if_block,
1525         merge_if_block, block_jumps_and_fallthru_p, find_if_block,
1526         dead_or_predicable): Likewise.
1527         * integrate.c (try_constants): Likewise.
1528         * jump.c (rebuild_jump_labels, cleanup_barriers,
1529         purge_line_number_notes, init_label_info, mark_all_labels,
1530         squeeze_notes, get_label_before, get_label_after,
1531         reversed_comparison_code_parts, simplejump_p, pc_set,
1532         returnjump_p, onlyjump_p, follow_jumps, mark_jump_label,
1533         delete_barrier, delete_prior_computation, delete_computation,
1534         delete_related_insns, delete_for_peephole, redirect_jump):
1535         Likewise.
1536         * lcm.c (optimize_mode_switching): Likewise.
1537         * local-alloc.c (validate_equiv_mem, update_equiv_regs, block_alloc):
1538         Likewise.
1539         * loop-doloop.c (doloop_valid_p, doloop_optimize): Likewise.
1540         * loop-invariant.c (find_exits, find_invariants_bb): Likewise.
1541         * loop-iv.c (simplify_using_assignment): Likewise.
1542         * loop.c (compute_luids, loop_optimize, scan_loop, libcall_other_reg,
1543         libcall_benefit, skip_consec_insns, move_movables, prescan_loop,
1544         find_and_verify_loops, labels_in_range_p, for_each_insn_in_loop,
1545         loop_bivs_init_find, strength_reduce, check_insn_for_bivs,
1546         check_insn_for_givs, check_final_value, update_giv_derive,
1547         basic_induction_var, product_cheap_p, check_dbra_loop,
1548         loop_insn_first_p, last_use_this_basic_block,
1549         canonicalize_condition, get_condition, loop_regs_scan, load_mems,
1550         try_copy_prop, LOOP_BLOCK_NUM, loop_dump_aux): Likewise.
1551         * modulo-sched.c (doloop_register_get, find_line_note, sms_schedule,
1552         sms_schedule_by_order): Likewise.
1553         * optabs.c (emit_no_conflict_block, emit_libcall_block): Likewise.
1554         * postreload.c (reload_cse_simplify_operands, reload_combine,
1555         reload_cse_move2add): Likewise.
1556         * predict.c (can_predict_insn_p, estimate_probability,
1557         expected_value_to_br_prob, process_note_predictions): Likewise.
1558         * print-rtl.c (print_rtx, print_rtl, print_rtl_single): Likewise.
1559         * profile.c (branch_prob): Likewise.
1560         * ra-build.c (live_out_1, livethrough_conflicts_bb,
1561         detect_webs_set_in_cond_jump): Likewise.
1562         * ra-debug.c (ra_print_rtx_object, ra_debug_insns,
1563         ra_print_rtl_with_bb): Likewise.
1564         * ra-rewrite.c (insert_stores, rewrite_program2): Likewise.
1565         * recog.c (next_insn_tests_no_inequality, find_single_use,
1566         split_all_insns, peephole2_optimize, if_test_bypass_p): Likewise.
1567         * reg-stack.c (next_flags_user, record_label_references,
1568         emit_swap_insn, swap_rtx_condition, subst_stack_regs,
1569         compensate_edge, convert_regs_1): Likewise.
1570         * regclass.c (scan_one_insn): Likewise.
1571         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
1572         regmove_optimize, fixup_match_1, single_set_for_csa,
1573         combine_stack_adjustments_for_block): Likewise.
1574         * regrename.c (build_def_use, copyprop_hardreg_forward_1): Likewise.
1575         * reload.c (find_reloads, find_reloads_address_1, subst_reloads,
1576         find_equiv_reg): Likewise.
1577         * reload1.c (reload, calculate_needs_all_insns, set_label_offsets,
1578         reload_as_needed, emit_input_reload_insns, do_output_reload,
1579         delete_output_reload, delete_address_reloads_1, fixup_abnormal_edges):
1580         Likewise.
1581         * reorg.c (find_end_label, emit_delay_sequence,
1582         delete_from_delay_slot, delete_scheduled_jump, optimize_skip,
1583         get_jump_flags, rare_destination, mostly_true_jump,
1584         try_merge_delay_insns, redundant_insn, own_thread_p,
1585         fill_simple_delay_slots, fill_slots_from_thread,
1586         fill_eager_delay_slots, relax_delay_slots, make_return_insns,
1587         dbr_schedule): Likewise.
1588         * resource.c (find_basic_block, next_insn_no_annul,
1589         find_dead_or_set_registers, mark_target_live_regs): Likewise.
1590         * rtl.h (RTX_PREV): Likewise.
1591         * rtlanal.c (global_reg_mentioned_p, no_labels_between_p,
1592         no_jumps_between_p, reg_used_between_p, reg_referenced_between_p,
1593         reg_set_p, find_last_value, dead_or_set_regno_p, find_reg_fusage,
1594         find_regno_fusage, pure_call_p, replace_label, rtx_referenced_p_1,
1595         tablejump_p, computed_jump_p, insns_safe_to_move_p,
1596         find_first_parameter_load, can_hoist_insn_p): Likewise.
1597         * sched-deps.c (get_condition, add_dependence, sched_analyze_2,
1598         sched_analyze_insn, sched_analyze, add_forward_dependence): Likewise.
1599         * sched-ebb.c (fix_basic_block_boundaries, add_deps_for_risky_insns,
1600         schedule_ebbs): Likewise.
1601         * sched-rgn.c (is_cfg_nonregular, find_conditional_protection,
1602         is_conditionally_protected, can_schedule_ready_p,
1603         add_branch_dependences, debug_dependencies): Likewise.
1604         * stmt.c (emit_nop, expand_start_case, emit_jump_if_reachable):
1605         Likewise.
1606         * unroll.c (unroll_loop, copy_loop_body, back_branch_in_range_p,
1607         reg_dead_after_loop, loop_find_equiv_value, loop_iterations,
1608         set_dominates_use, ujump_to_loop_cont): Likewise.
1609         * var-tracking.c (prologue_stack_adjust, vt_initialize): Likewise.
1610         * varasm.c (output_constant_pool_1): Likewise.
1611
1612 2004-07-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
1613
1614         * tree-scalar-evolution.c: New file.
1615         * tree-scalar-evolution.h: New file.
1616         * tree-ssa-loop-niter.c: New file.
1617         * Makefile.in (SCEV_H): New.
1618         (tree-scalar-evolution.o, tree-ssa-loop-niter.o): Add new files.
1619         * cfgloop.h (struct loop): Add bounds field.
1620         * tree-flow.h (struct tree_niter_desc): New type.
1621         (number_of_iterations_cond, number_of_iterations_exit,
1622         loop_niter_by_eval, find_loop_niter_by_eval,
1623         estimate_numbers_of_iterations, can_count_iv_in_wider_type,
1624         free_numbers_of_iterations_estimates): Declare.
1625         * tree.h (lower_bound_in_type, upper_bound_in_type): Declare.
1626         * params.def (PARAM_MAX_ITERATIONS_TO_TRACK): New parameter.
1627         * doc/invoke.texi (max-iterations-to-track): Document.
1628
1629 2004-07-08  Kaz Kojima  <kkojima@gcc.gnu.org>
1630
1631         * config/sh/sh.c (sh_va_arg): Initinalize lab_over.
1632         * config/sh/sh.h (CONST_OK_FOR_J16): Use parentheses.
1633         (MODE_AFTER): Add cast appropriately.
1634         * config/sh/sh.md (movdi splitter): Likewise.
1635         (casesi_worker_2): Add const qualifier appropriately.
1636         (eh_return): Remove unused variable.
1637         (insv): Initialize v;
1638
1639 2004-07-08  Richard Henderson  <rth@redhat.com>
1640
1641         * config/mmix/mmix-protos.h (mmix_expand_builtin_va_arg): Remove.
1642         * config/mmix/mmix.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1643         (mmix_gimplify_va_arg_expr): Rewrite from mmix_expand_builtin_va_arg.
1644         * config/mmix/mmix.h (EXPAND_BUILTIN_VA_ARG): Remove.
1645         (FRAME_POINTER_REQUIRED): Use current_function_has_nonlocal_label.
1646
1647         * config/m32r/m32r-protos.h (m32r_va_arg): Remove.
1648         * config/m32r/m32r.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1649         (m32r_gimplify_va_arg_expr): Rewrite from m32r_va_arg.
1650         * config/m32r/m32r.h (EXPAND_BUILTIN_VA_ARG): Remove.
1651
1652         * config/iq2000/iq2000-protos.h (iq2000_va_arg): Remove.
1653         * config/iq2000/iq2000.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1654         (iq2000_gimplify_va_arg_expr): Rewrite from iq2000_va_arg.
1655         * config/iq2000/iq2000.h (EXPAND_BUILTIN_VA_ARG): Remove.
1656
1657         * config/frv/frv-protos.h (frv_expand_builtin_va_arg): Remove.
1658         * config/frv/frv.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1659         (frv_gimplify_va_arg_expr): Rewrite from frv_expand_builtin_va_arg.
1660         * config/frv/frv.h (EXPAND_BUILTIN_VA_ARG): Remove.
1661
1662         * config/i860/i860-protos.h (i860_va_arg): Remove.
1663         * config/i860/i860.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1664         (i860_gimplify_va_arg_expr): Rewrite from i860_va_arg.
1665         * config/i860/i860.h (EXPAND_BUILTIN_VA_ARG): Remove.
1666
1667 2004-05-31  Aaron W. LaFramboise <aaronraolete36@aaronwl.com>
1668
1669         * system.h: Prototype getpagesize if missing.
1670         * configure.ac: Add getpagesize to gcc_AC_CHECK_DECLS.
1671         * configure: Regenerate.
1672         * config.in: Regenerate.
1673
1674 2004-07-08  Richard Henderson  <rth@redhat.com>
1675
1676         * config/fr30/fr30-protos.h (fr30_va_arg): Remove.
1677         * config/fr30/fr30.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1678         (fr30_gimplify_va_arg_expr): New.
1679         (fr30_pass_by_reference, fr30_pass_by_value, fr30_va_arg): Remove.
1680         * config/fr30/fr30.h (EXPAND_BUILTIN_VA_ARG): Remove.
1681
1682 2004-07-08  Vladimir Makarov  <vmakarov@redhat.com>
1683
1684         PR target/16414
1685         * config/ia64/ia64.c (ia64_dfa_new_cycle): Fix typo in comparison
1686         of asm_noperands result.
1687
1688 2004-07-08  Richard Henderson  <rth@redhat.com>
1689
1690         * config/cris/cris-protos.h (cris_expand_builtin_va_arg): Remove.
1691         * config/cris/cris.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1692         (cris_gimplify_va_arg_expr): Rewrite from cris_expand_builtin_va_arg.
1693         * config/cris/cris.h (EXPAND_BUILTIN_VA_ARG): Remove.
1694
1695 2004-07-08  Richard Henderson  <rth@redhat.com>
1696
1697         * builtins.c (ind_gimplify_va_arg_expr): New.
1698         * tree.h (ind_gimplify_va_arg_expr): Declare.
1699         * config/arc/arc.c (arc_gimplify_va_arg_expr): Use it.
1700
1701 2004-07-08  Jan Beulich  <jbeulich@novell.com>
1702
1703         * expmed.c (extract_bit_field): Correct condition to use vec_extract
1704         patterns also on vector elements other than the first one.
1705         * config/i386/i386.md (vec_extractv2df, vec_extractv4sf): Add missing
1706         break statements.
1707
1708 2004-07-08  Geoffrey Keating  <geoffk@apple.com>
1709
1710         * config/rs6000/darwin-ldouble.c: Correct reference
1711         to the Linnainmaa paper.
1712
1713 2004-07-08  Richard Henderson  <rth@redhat.com>
1714
1715         * config/arc/arc-protos.h (arc_va_arg): Remove.
1716         * config/arc/arc.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1717         (arc_gimplify_va_arg_expr): Rewrite from arc_va_arg.
1718         * config/arc/arc.h (EXPAND_BUILTIN_VA_ARG): Remove.
1719
1720         * config/c4x/c4x-protos.h (c4x_va_arg): Remove.
1721         * config/c4x/c4x.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
1722         (c4x_gimplify_va_arg_expr): Rewrite from c4x_va_arg.
1723         * config/c4x/c4x.h (EXPAND_BUILTIN_VA_ARG): Remove.
1724
1725 2004-07-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1726
1727         * pa.md (prefetch_32, prefetch_64): Simplify constraint checks.
1728
1729 2004-07-08  Zack Weinberg  <zack@codesourcery.com>
1730
1731         * c-decl.c (static_ctors, static_dtors): Make static.
1732         (pop_file_scope): Call c_common_write_pch and
1733         cgraph_finalize_compilation_unit here.
1734         (build_cdtor): Moved here from c-objc-common.c; simplify.
1735         (c_write_global_declarations_1): Clarify comment.
1736         (c_write_global_declarations): Close the external scope before
1737         doing anything else.  Call build_cdtor, cgraph_optimize, and
1738         mudflap_finish_file here.
1739         * c-lang.c (finish_file): Don't call c_objc_common_finish_file.
1740         Clarify comment.
1741         * c-objc-common.c: No need to include cgraph.h.
1742         (build_cdtor): Moved to c-decl.c.
1743         (c_objc_common_finish_file): Delete.
1744         * c-tree.h: Update to match.
1745         * objc/objc-act.c (finish_file): Don't call c_objc_common_finish_file.
1746         (generate_static_references): Set TREE_USED before calling finish_decl.
1747         Eliminate unnecessary dummy declaration.  Call rest_of_decl_compilation
1748         on the static_instances_decl.
1749
1750 2004-07-08  Zack Weinberg  <zack@codesourcery.com>
1751
1752         * c-decl.c (pop_scope): Do not set DECL_CONTEXT on file-scope
1753         decls when there is only one input translation unit.
1754         * langhooks.c (lhd_set_decl_assembler_name): Partially revert
1755         change of 2004-07-05; do not treat declarations with
1756         DECL_CONTEXT a TRANSLATION_UNIT_DECL specially.
1757         * opts.c (cur_in_fname): Delete.
1758         * opts.h: Likewise.
1759         * tree.c: Revert changes of 2004-07-05; no special treatment
1760         for TRANSLATION_UNIT_DECLs.
1761         * Makefile.in (tree.o): Update dependencies.
1762
1763 2004-07-08  Roger Sayle  <roger@eyesopen.com>
1764
1765         * builtins.c (fold_builtin_strcpy): Merge functionality from
1766         simplify_builtin_strcpy.  Add additional len argument.  No longer
1767         static.  Remove function prototype.
1768         (fold_builtin_strncpy): Likewise integrate functionality from
1769         simplify_builtin_strncpy.  Add additional slen argument.  No
1770         longer static.  Remove function prototype.
1771         (simplify_builtin_strcy, simplify_builtin_strncpy): Delete.
1772         (simplify_builtin_fputs): Rename to fold_builtin_fputs.  Change
1773         types of "ignore" and "unlocked" parameters to bool.
1774         (fold_builtin_1):  Add additional ignore argument.  Call renamed
1775         fold_builtin_fputs to simplify GCC "fputs" and "fputs_unlocked"
1776         builtins.  Update arguments to fold_builtin_strncpy and
1777         fold_builtin_strcpy.  Add function prototype.
1778         (fold_builtin): Add additional Boolean ignore argument to pass
1779         to fold_builtin_1.
1780         (simplify_builtin): Call fold_builtin_fputs, fold_builtin_strcpy
1781         and fold_builtin_strncpy instead of simplify_builtin_fputs,
1782         simplify_builtin_strcpy and simplify_builtin_strncpy respectively.
1783
1784         * expr.h (simplify_builtin_fputs, simplify_builtin_strcpy,
1785         simplify_builtin_strncpy): Delete function prototypes.
1786         * tree.h (fold_builtin_fputs, fold_builtin_strcpy,
1787         fold_builtin_strncpy): Add function prototypes here.
1788         (fold_builtin): Update function prototype with new "bool ignore".
1789
1790         * tree-ssa-ccp.c (ccp_fold): Update call to fold_builtin.
1791         (ccp_fold_builtin):  Update call to fold_builtin.  Call
1792         fold_builtin_fputs, fold_builtin_strcpy and fold_builtin_strncpy
1793         instead of simplify_builtin_fputs, simplify_builtin_strcpy and
1794         simplify_builtin_strncpy respectively.
1795         * fold-const.c (fold): Update call to fold_builtin.
1796
1797 2004-07-08  Alexandre Oliva  <aoliva@redhat.com>
1798
1799         * builtins.c (expand_builtin_stpcpy): Un-simplify decay of stpcpy
1800         to strcpy.
1801
1802         * expr.h (FUNCTION_ARG_PARTIAL_NREGS): Default to 0.
1803         (FUNCTION_ARG_PASS_BY_REFERENCE): Likewise.
1804         (FUNCTION_ARG_CALLEE_COPIES): Likewise.
1805         * calls.c: Remove ifdefs of macros above.
1806         * functions.c: Likewise.
1807         * expr.c: Likewise.
1808
1809 2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
1810
1811         * config/sparc/sparc.md (UNSPECV_GOTO_V9): Delete.
1812         (arch attribute): Delete.
1813         (current_function_calls_alloca attribute): Rename into calls_alloca.
1814         (calls_eh_return): New attribute.
1815         (leaf_function): Likewise.
1816         (length attribute): Fix formula for sibcalls.
1817         (return insn): Correctly compute the 'length' attribute.
1818         (do_builtin_setjmp_setup): Adjust use of current_function_calls_alloca.
1819
1820 2004-07-08  Richard Henderson  <rth@redhat.com>
1821
1822         * tree-cfg.c (make_exit_edges): Use get_call_expr_in.
1823         (remove_useless_stmts_1, is_ctrl_altering_stmt): Likewise.
1824         (tree_block_ends_with_call_p, need_fake_edge_p): Likewise.
1825         * tree-eh.c (lower_eh_constructs_1): Likewise.
1826         * tree-sra.c (sra_walk_modify_expr): Likewise.
1827         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1828         (eliminate_unnecessary_stmts): Likewise.
1829         * tree-ssa-dse.c (dse_optimize_stmt): Likewise.
1830         * tree-tailcall.c (optimize_tail_call): Likewise.
1831         * tree-ssa-ccp.c (get_rhs, set_rhs): Reorg to use switch.
1832
1833 2004-07-08  Paolo Bonzini  <bonzini@gnu.org>
1834             Jakub Jelinek  <jakub@redhat.com>
1835
1836         * config/i386/i386.c (override_options): Enable
1837         SSE prefetches with -mtune, as long as we are
1838         compiling for i686 or higher.  All i686 processors
1839         accept SSE prefetches as NOPS, some i586's don't.
1840
1841 2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
1842
1843         PR target/10567
1844         * config/sparc/sparc.md (update_return): Honor flag_delayed_branch.
1845
1846 2004-07-08  Diego Novillo  <dnovillo@redhat.com>
1847
1848         * tree-ssa-operands.c (get_asm_expr_operands): Fix thinkos in
1849         the handling of clobbering ASM_EXPRs.
1850
1851 2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
1852
1853         PR target/16430
1854         * config/sparc/sparc.c (function_value): In 64-bit mode,
1855         return the aggregates larger than 16 bytes like unions.
1856
1857 2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
1858
1859         PR target/16199
1860         * config/sparc/sparc.c (sparc_emit_set_symbolic_const64): When
1861         'temp' is zero, generate new pseudos as needed and emit the
1862         sequence of insns in single-assignment form.  Resync comments
1863         with code.
1864         (sparc_emit_set_const64): Pass zero as 'temp' argument to above
1865         function before reload.
1866
1867 2004-07-08  Nathan Sidwell  <nathan@codesourcery.com>
1868
1869         * vec.c (vec_assert_fail): Remove duplicate 'function'.
1870
1871         * vec.c (vec_p_reserve, vec_o_reserve): Allocation is signed.
1872
1873         * vec.h (VEC_alloc, VEC_embedded_size, VEC_embedded_init):
1874         Allocation is signed.
1875         (VEC_reserve): Return flag, allocation is signed.
1876
1877 2004-07-08  Richard Henderson  <rth@redhat.com>
1878
1879         * tree-ssa-ccp.c (fold_stmt): Get type directly from
1880         OBJ_TYPE_REF_OBJECT.
1881
1882 2004-07-08  Joseph S. Myers  <jsm@polyomino.org.uk>
1883             Neil Booth  <neil@daikokuya.co.uk>
1884
1885         PR c/2511
1886         PR c/3325
1887         * c-decl.c (finish_struct): Ensure bit-fields are given the
1888         correct type.
1889         * c-common.c (c_common_signed_or_unsigned_type): For C, require
1890         the precision to match as well as the mode.
1891         * expr.c (reduce_to_bit_field_precision): New function.
1892         (expand_expr_real_1): Reduce expressions of bit-field type to
1893         proper precision.
1894         * langhooks.h (reduce_bit_field_operations): New hook.
1895         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
1896         Define.
1897         * c-lang.c, objc/objc-lang.c
1898         (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define.
1899         * objc/objc-act.c (check_ivars): Convert types to bit-field types
1900         before checking.
1901         * tree.c (build_nonstandard_integer_type): New function.
1902         * tree.h (build_nonstandard_integer_type): New prototype.
1903         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Don't treat
1904         conversions between integer and boolean types as useless.
1905
1906 2004-07-08  Paolo Bonzini  <bonzini@gnu.org>
1907
1908         * c-common.c (c_common_nodes_and_builtins): Do not
1909         create __builtin_ptrdiff_t and __builtin_size_t.
1910
1911 2004-07-08  Andrew Pinski  <apinski@apple.com>
1912
1913         * Makefile.in (libbackend.o): Add -combine to the gcc
1914         command line.
1915
1916 2004-07-08  Nick Clifton  <nickc@redhat.com>
1917
1918         * config/stormy16/t-stormy16 (TARGET_LIBGCC2_CFLAGS): Define.
1919         Set to -Os.
1920
1921 2004-07-08  Richard Henderson  <rth@redhat.com>
1922
1923         * except.c (expand_eh_region_start, expand_eh_region_end,
1924         expand_eh_handler, expand_eh_region_end_cleanup,
1925         expand_start_all_catch, expand_start_catch, expand_end_catch,
1926         expand_end_all_catch, expand_eh_region_end_allowed,
1927         expand_eh_region_end_must_not_throw, expand_eh_region_end_throw,
1928         expand_eh_region_end_fixup): Remove.
1929         * stmt.c (struct nesting): Remove stack_level, innermost_stack_block,
1930         cleanups, outer_cleanups, label_chain, exception_region.
1931         (struct goto_fixup): Remove stack_level, cleanup_list_list.
1932         (struct label_chain): Remove.
1933         (struct stmt_status): Remove x_stack_block_stack.
1934         (stack_block_stack, expand_goto_internal, expand_fixup, expand_fixups,
1935         fixup_gotos, save_stack_pointer, expand_decl_cleanup,
1936         expand_decl_cleanup_eh, expand_cleanups, start_cleanup_deferral,
1937         end_cleanup_deferral, last_cleanup_this_contour,
1938         containing_blocks_have_cleanups_or_stack_level,
1939         any_pending_cleanups): Remove.
1940         (expand_null_return_1): Take no arguments.
1941         (expand_label, expand_naked_return, expand_return,
1942         expand_start_bindings_and_block, expand_end_bindings, expand_decl,
1943         expand_anon_union_decl, expand_start_case, pushcase, pushcase_range,
1944         expand_end_case_type): Don't use any of them.
1945         * calls.c (expand_call): Likewise.
1946         * dojump.c (do_jump): Likewise.
1947         * function.c (expand_function_end): Likewise.
1948         * expr.c (store_expr, expand_expr_real_1): Likewise.
1949         (safe_from_p): Don't handle WITH_CLEANUP_EXPR, CLEANUP_POINT_EXPR.
1950         (expand_expr_real_1): Don't handle WITH_CLEANUP_EXPR,
1951         CLEANUP_POINT_EXPR, TARGET_EXPR, TRY_CATCH_EXPR, CATCH_EXPR,
1952         EH_FILTER_EXPR, TRY_FINALLY_EXPR, GOTO_SUBROUTINE_EXPR.
1953         * fold-const.c (fold_checksum_tree): Use first_rtl_op.
1954         * gengtype.c (adjust_field_tree_exp): Remove rtl op handling.
1955         * gimplify.c (gimplify_cleanup_point_expr): Renumber operands
1956         for WITH_CLEANUP_EXPR.
1957         (gimple_push_cleanup): Likewise.
1958         * integrate.c (copy_decl_for_inlining): Don't DECL_TOO_LATE.
1959         * print-tree.c (print_node): Likewise.
1960         * tree-pretty-print.c (dump_generic_node): Remove GOTO_SUBROUTINE_EXPR.
1961         * tree.c (first_rtl_op): Always just TREE_CODE_LENGTH.
1962         (has_cleanups): Remove GOTO_SUBROUTINE_EXPR.
1963         * tree.def (WITH_CLEANUP_EXPR): Remove op1 and op2.
1964         (GOTO_SUBROUTINE_EXPR): Remove.
1965         * tree.h (WITH_CLEANUP_EXPR_RTL): Remove.
1966         (DECL_TOO_LATE): Remove.
1967         * except.h, tree.h: Update decls.
1968
1969 2004-07-08  Paolo Bonzini  <bonzini@gnu.org>
1970
1971         * explow.c (optimize_save_area_alloca): Do not accept parameters.
1972         * passes.c (rest_of_handle_final): Handle symout.
1973         (rest_of_handle_new_regalloc, rest_of_handle_old_regalloc):
1974         Push timevar here.
1975         (rest_of_handle_sched): Break out SMS.  Remove ifs for
1976         flag_schedule_insns and flag_modulo_sched.
1977         (rest_of_handle_addressof, rest_of_handle_cse2): Garbage
1978         collect at the end.
1979         (rest_of_handle_gcse2): Put under timevar TV_RELOAD_CSE_REGS.
1980         (rest_of_handle_partition_blocks, rest_of_handle_sms,
1981         rest_of_handle_if_after_reload, rest_of_handle_peephole2,
1982         rest_of_handle_mode_switching, rest_of_handle_jump,
1983         rest_of_handle_guess_branch_prob, rest_of_handle_eh,
1984         rest_of_handle_jump2, rest_of_handle_postreload,
1985         rest_of_handle_flow2, rest_of_clean_state,
1986         rest_of_handle_shorten_branches,
1987         rest_of_handle_prologue_epilogue,
1988         rest_of_handle_branch_target_load_optimize): New.
1989         (rest_of_compilation): Call the above.  Remove ggc_collect
1990         calls moved to rest_of_handle_*.
1991         * rtl.h (optimize_save_area_alloca): Do not accept parameters.
1992
1993         * dwarf2out.c (dwarf2out_begin_prologue): Use TREE_NOTHROW.
1994         * except.c (set_nothrow_function_flags): Set TREE_NOTHROW.
1995         * except.h (set_nothrow_function_flags): Update comment.
1996         * function.c (current_function_nothrow): Remove.
1997         * output.h (current_function_nothrow): Remove.
1998         * passes.c (rest_of_compilation): Do not set TREE_NOTHROW.
1999         * config/arm/arm.c (arm_compute_func_type): Use TREE_NOTHROW.
2000
2001 2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
2002
2003         PR bootstrap/16326
2004         * reorg.c: Revert 2004-06-30 change.
2005         (find_end_label): If HAVE_epilogue and !HAVE_return,
2006         return 0 instead of creating a label at the end of the insn chain.
2007         (optimize_skip): Account for the failure mode of find_end_label.
2008         (fill_simple_delay_slots): Likewise.
2009         (fill_slots_from_thread): Likewise.
2010         (relax_delay_slots): Likewise.
2011
2012 2004-07-08  Diego Novillo  <dnovillo@redhat.com>
2013
2014         * tree-flow.h (addressable_vars): Declare.
2015         * tree-ssa-alias.c (addressable_vars): Define.
2016         (setup_pointers_and_addressables): Add addressable variables
2017         to addressable_vars.
2018         * tree-ssa-operands.c (get_stmt_operands): Move
2019         handling of ASM_EXPRs ...
2020         (get_asm_expr_operands): ... here.
2021         When the ASM_EXPR clobbers memory, also clobber addressable
2022         variables.
2023         * tree-ssa.c (init_tree_ssa): Initialize addressable_vars.
2024         (delete_tree_ssa): Reset addressable_vars.
2025
2026 2004-07-07  Jan Beulich  <jbeulich@novell.com>
2027             Richard Henderson  <rth@redhat.com>
2028
2029         * varasm.c (assemble_variable): Use assemble_zeros for
2030         zero-initialized variables.
2031         (categorize_decl_for_section): Honor flag_zero_initialized_in_bss
2032         for SECCAT_BSS and SECCAT_TBSS.
2033
2034 2004-07-07  Jan Beulich  <jbeulich@novell.com>
2035
2036         * varasm.c (asm_output_bss): Don't declare unless BSS_SECTION_ASM_OP.
2037
2038         * expmed.c (emit_store_flag): Also special-case double-word
2039         (in-)equality comparison against -1.
2040
2041         * config/i386/i386.c (ix86_gimplify_va_arg): Don't need temporary for
2042         passing arguments the containers for which are registers.
2043
2044         * calls.c (emit_library_call_value_1): Use mode of function parameter
2045         rather than that of argument since constants have none.
2046
2047 2004-07-08  Alexandre Oliva  <aoliva@redhat.com>
2048
2049         Introduce H8SX support.
2050         * expr.c (expand_strcpy): Renamed and moved to...
2051         * builtins.c (expand_movstr): ... here.  Tweak.
2052         (expand_builtin_strcpy): Adjust.  Use movstr if len can't be
2053         computed or has side effects.
2054         (expand_builtin_stpcpy): Likewise.  Use strcpy if return value is
2055         unused, or if mempcpy fails.  Adjust the return value in the
2056         latter case.  Use movstr if everything else fails.
2057         * doc/md.texi (movstr): Document.
2058         (movmemM, clrmemM): Fix explanation of memory block operands.
2059         * config/h8300/h8300.md (stpcpy): Renamed to...
2060         (movstr): ... this.  Adjust.
2061         2004-07-07  Alexandre Oliva  <aoliva@redhat.com>
2062         * config/h8300/h8300.md: Rename movstr*, except for movstrict*, to
2063         movmem* and clrstr* to clrmem*.
2064         2004-06-27  Alexandre Oliva  <aoliva@redhat.com>
2065         * config/h8300/h8300.c (h8300_reg_class_from_letter): Map 'D' to
2066         GENERAL_REGS, always.
2067         (h8300_swap_into_er6, h8300_swap_into_er6): Handle the case of
2068         getting the stack pointer as addr.
2069         * config/h8300/h8300.h (PREDICATE_CODES): Remove constant rtxes
2070         from general_operand_dst.
2071         * config/h8300/h8300.md (movmd_internal_normal): New, normal-mode
2072         variant of...
2073         (movmd_internal): ... this.  Add modes to operands.  Disparage `D'
2074         instead of requiring it to match only before reload.
2075         (stpcpy_internal_normal): New, normal-mode variant of...
2076         (stpcpy_internal): ... this.  Add modes to operands.  Disparage
2077         `D' instead of requiring it to match only before reload.
2078         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Add
2079         mode argument.
2080         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Pass it to...
2081         * config/h8300/h8300.c (h8300_legitimate_address_p): Pass it to
2082         h8300_get_index.
2083         * config/h8300/h8300.md (attr type): Add call.
2084         (attr can_delay): If type is call, set it no.
2085         (call, call_value): Set type to call.
2086         2004-06-21  Alexandre Oliva  <aoliva@redhat.com>
2087         * config/h8300/h8300.md (logicalhi3_sn, logicalsi3_sn): New.
2088         2004-06-16  Alexandre Oliva  <aoliva@redhat.com>
2089         * tree.c (get_narrower): Don't narrow integral types into
2090         non-integral types.
2091         * config/h8300/h8300.c (h8300_expand_epilogue): Initialize
2092         frame_size *before* the first use.
2093         * config/h8300/h8300.md (movstrictqi): Reintroduce post-increment
2094         on input.
2095         (peephole2): Don't widen instructions that push SP.  Move
2096         decrement of SP to the end of all stm-generating peepholes.
2097         2003-07-24  Richard Sandiford  <rsandifo@redhat.com>
2098         * config/h8300/h8300.md (insv): Prefer to use AND to clear a bitfield
2099         and OR to set it to all ones.
2100         2003-07-24  Richard Sandiford  <rsandifo@redhat.com>
2101         * config/h8300/h8300.md (can_delay): Default to "no" for bit branches.
2102         (call, call_value): Set can_delay to "no".
2103         2003-07-22  Richard Sandiford  <rsandifo@redhat.com>
2104         * config/h8300/h8300.md (extzv): Make subreg check more robust.
2105         2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
2106         * config/h8300/h8300.md (*brabit): Remove.
2107         * config/h8300/h8300.md (*brabc, *brabs): Remove mode from
2108         zero_extract.  Use bit_memory_operand as the predicate for
2109         operand 1 and 'WU' as the constraint.  Check the difference
2110         between the base length and the final one when deciding which
2111         type of branch to use.
2112         2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
2113         * config/h8300/h8300.md (extzv): Remove mode from operands 0 and 1.
2114         Use convert_move to extend the result for TARGET_H8300SX.  Check
2115         for QImode memory references.  Optimize the case where the
2116         destination is a paradoxical subreg.
2117         2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
2118         * config/h8300/h8300.md (*movsf_h8sx): Add an r <- G alternative.
2119         * config/h8300/h8300.md (andqi): Remove bclr from h8sx version.
2120         2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
2121         * config/h8300/h8300.md: Include mova.md
2122         (length_table): Add mova and mova_zero.
2123         * config/h8300/h8300.c (print_operand): Handle '%o'.  Print a length
2124         after all constant addresses for '%R', '%X', '%T' and '%S'.
2125         (h8300_mova_length): New function.
2126         (h8300_insn_length_from_table): Use it to handle mova and mova_zero.
2127         * config/h8300/t-h8300 (mova.md): Generate from genmova.sh.  Add to
2128         dependencies for s-config, etc.
2129         * config/h8300/gemova.sh: New file.
2130         * config/h8300/mova.md: Generated.
2131         2003-07-20  Alexandre Oliva  <aoliva@redhat.com>
2132         * config/h8300/h8300.c (h8300_bitfield_length): New.
2133         (nibble_operand): Adjust.
2134         (h8300_binary_length): Handle conditional binary op.
2135         (h8300_insn_length_from_table): Handle bitfield and bitbranch.
2136         * config/h8300/h8300.h: Change constraints W# and Y# to P#>X and
2137         P#<X, respectively.  The original P is now IP4>X.  Introduced P#>0
2138         and P#<0, unused so far.  W and Y are now prefixes to multi-letter
2139         constraints.  WU is introduced as a variant of U that requires a
2140         mem, and is therefore considered an EXTRA_MEMORY_CONSTRAINT.
2141         * config/h8300/h8300.md (attr type): Added bitbranch.
2142         (attr length_table): Added bitfield and bitbranch.
2143         (attr length): Compute bitbranch length.
2144         (andqi): Separate pattern for H8300SX.  Use bfld for loading the
2145         least-significant bit of a byte.
2146         (brabit, brabc, brabs): New.
2147         (insv, extzv): Emit bfst and bfld on H8300SX.
2148         (bfld, bfst, seq, sne): New.
2149         (bstzhireg, cmpstz, bstz, bistz): New.
2150         (cmpcondbset, condbset, cmpcondbclr, condbclr): New.
2151         (cmpcondbsetreg, condbsetreg, cmpcondbclrreg, condbclrreg): New.
2152         2003-07-11  Richard Sandiford  <rsandifo@redhat.com>
2153         * config/h8300/h8300.c (h8sx_binary_memory_operator): New function.
2154         (h8sx_unary_memory_operator): New function.
2155         * config/h8300/h8300.h (EXTRA_MEMORY_CONSTRAINT): Disable.
2156         (PREDICATE_CODES): Add h8sx_{unary,binary}_memory_operator.
2157         * config/h8300/h8300.md: Add peepholes to combine reloads and
2158         arithmetic insns.
2159         2003-07-10  Richard Sandiford  <rsandifo@redhat.com>
2160         * config/h8300/h830.md (cmpqi): Use 'i' rather than 'n' in constraints.
2161         (*cmphi_h8300hs, *addqi3, *addhi3_h8sx, subhi3): Likewise.
2162         (and?i, ior?i, xor?i): Likewise.
2163         2003-07-10  Richard Sandiford  <rsandifo@redhat.com>
2164         * config/h8300/h8300.c: Move enums and prototypes to head of file.
2165         Various whitespace fixes.
2166         (h8300_constant_length): New function, split out from...
2167         (h8300_displacement_size): ...here.  Rename h8300_displacement_length.
2168         (h8300_classify_operand): Use IN_RANGE.
2169         (h8300_classify_operand): Use h8300_constant_length.
2170         (h8300_short_move_mem_p): Tighten size check.
2171         (h8sx_mergeable_memrefs_p): Tighten equality check.
2172         2003-06-30  Richard Sandiford  <rsandifo@redhat.com>
2173         * config/h8300/h8300.h (TARGET_CPU_CPP_BUILTINS): Define __H8300SX__
2174         for -msx.
2175         * config/h8300/crti.asm: Use .h8300sx or .h8300sxn for -msx code.
2176         * config/h8300/crtn.asm: Likewise.
2177         * config/h8300/lib1funcs.asm: Likewise.  Use 32-bit pointers
2178         if __H8300SX__ is defined.
2179         2003-06-27  Richard Sandiford  <rsandifo@redhat.com>
2180         * config/h8300/h8300-protos.h (h8300_get_index): Add mode parameter.
2181         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Update accordingly.
2182         (GO_IF_MODE_DEPENDENT_ADDRESS): Treat POST_DEC, PRE_INC and indexed
2183         addresses as mode-dependent.
2184         * config/h8300/h8300.c (print_operand_address): Update call to
2185         h8300_get_index.
2186         (h8300_get_index): Take a mode argument.  Rework to fix an
2187         earlier misunderstanding.
2188         2003-06-26  Richard Sandiford  <rsandifo@redhat.com>
2189         * config/h8300/h8300.c (zero_extendqisi2): Force the source operand
2190         into a register if TARGET_H8300SX.
2191         (*zero_extendqisi2_h8300hs, *extendqisi2_h8300): Disable for
2192         TARGET_H8300SX.  Also disable related define_splits.
2193         (*zero_extendqisi2_h8sx, *extendqisi2_h8sx): New patterns.
2194         2003-06-23  Richard Sandiford  <rsandifo@redhat.com>
2195         * config/h8300/h8300.c (h8300_rtx_costs): Add h8sx handling.
2196         2003-06-20  Richard Sandiford  <rsandifo@redhat.com>
2197         * config/h8300/h8300.h (OK_FOR_Z): New macro.
2198         (EXTRA_CONSTRAINT_STR): Check it.
2199         * config/h8300/h8300.c (h8300_classify_operand): Accept null
2200         class arguments.
2201         (h8300_insn_length_from_table): Handle LENGTH_TABLE_MOV_IMM4.
2202         * config/h8300/h8300.md (length_table): Add mov_imm4.
2203         (movqi, movhi): Add Z <- W4 alternatives to h8sx patterns.
2204         2003-06-20  Richard Sandiford  <rsandifo@redhat.com>
2205         * genattrtab.c (write_eligible_delay): Allow candidate_insn to
2206         be a label.
2207         * config/h8300/h8300.h (DELAY_SLOT_LENGTH): New macro.
2208         * config/h8300/h8300.c (h8300_reorg): New function.
2209         (TARGET_MACHINE_DEPENDENT_REORG): Define.
2210         * config/h8300/h8300.md (length): Subtract the length of the
2211         delay slot from (pc) when checking the range of forward branches.
2212         (delay_slot, can_delay): New attributes.
2213         (define_delay): Add bra/s handling.
2214         (movmd_internal, return_h8sx, *return_1): Set can_delay to no.
2215         (jump): Add delayed-branch handling.
2216         2003-06-17  Richard Sandiford  <rsandifo@redhat.com>
2217         * expr.c (expand_strcpy): New function.
2218         * builtins.c (expand_builtin_strcpy): Fall back on expand_strcpy.
2219         (expand_builtin_stpcpy): Likewise.
2220         * config/h8300/h8300-protos.h (h8sx_split_movmd): Remove.
2221         (h8300_swap_into_er6, h8300_swap_out_of_er6): Declare.
2222         * config/h8300/h8300.c (h8300_reg_class_from_letter): Tweak 'd'
2223         handling to improve register allocation for -fno-omit-frame-pointer.
2224         (h8sx_split_movmd): Delete, moving er6 handling into...
2225         (h8300_swap_into_er6, h8300_swap_out_of_er6): ...these new functions.
2226         * config/h8300/h8300.md (UNSPEC_STPCPY): New unspec constant.
2227         (movmd): Add calls to copy_rtx.
2228         (movmd_internal): In the second alternative, allow the initial and
2229         final destination registers to be different .  Update the splitter
2230         accordingly.  Call h8300_swap_into_er6 and h8300_swap_out_of_er6
2231         instead of h8sx_split_movmd.
2232         (stpcpy, movsd): New expanders.
2233         (movsd_internal): New define_insn.
2234         2003-06-13  Richard Sandiford  <rsandifo@redhat.com>
2235         * config/h8300/h8300-protos.h (h8300_reg_class_from_letter): Declare.
2236         (h8sx_emit_movmd, h8sx_split_movmd): Declare.
2237         * config/h8300/h8300.h (reg_class): Add COUNTER_REGS, SOURCE_REGS
2238         and DESTINATION_REGS.
2239         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
2240         (REGNO_REG_CLASS): Map er4, er5 and er6 to the new classes.
2241         (REG_CLASS_FROM_LETTER): Use h8300_reg_class_from_letter.
2242         (h8300_move_ratio): Declare.
2243         (MOVE_RATIO): Use it.
2244         * config/h8300/h8300.c (h8300_move_ratio): New variable.
2245         (h8300_init_once): Initialize it.
2246         (h8300_reg_class_from_letter): New function.
2247         (print_operand): Add an 'm' prefix for printing ".b", ".w" or ".l".
2248         (h8sx_emit_movmd, h8sx_split_movmd): New functions.
2249         * config/h8300/h8300.md (UNSPEC_MOVMD): New unspec constant.
2250         (COUNTER_REG, SOURCE_REG, DESTINATION_REG): New register constants.
2251         (movstrsi, movmd): New expanders.
2252         (movmd_internal): New insn.
2253         2003-06-06  Richard Sandiford  <rsandifo@redhat.com>
2254         * config/h8300/h8300.h (EXTRA_MEMORY_CONSTRAINT): Define.
2255         2003-06-04  Richard Sandiford  <rsandifo@redhat.com>
2256         * config/h8300/elf.h (LINK_SPEC): Use -m h8300sxnelf for -msx -mn.
2257         * config/h8300/h8300.c (asm_file_start): Use .h8300sxn likewise.
2258         2003-06-03  Richard Sandiford  <rsandifo@redhat.com>
2259         * config/h8300/h8300.c (nibble_operand): Fix warning.
2260         * config/h8300/h8300.md (movstricthi): Set adjust_length to no.
2261         (movsi_h8sx): Likewise here and the normal h8sx movhi pattern.
2262         (movsf_h8300h): Disable for TARGET_H8300SX.
2263         2003-06-03  Richard Sandiford  <rsandifo@redhat.com>
2264         * config/h8300/h8300.h (PREDICATE_CODES): Add h8300_ldm_parallel,
2265         h8300_stm_parallel and h8300_return_parallel.
2266         * config/h8300/h8300.c (h8300_push_pop, h8300_stack_offset_p,
2267         h8300_ldm_stm_regno, h8300_ldm_stm_parallel, h8300_ldm_parallel,
2268         h8300_stm_parallel, h8300_return_parallel): New functions.
2269         (h8300_expand_prologue): Don't enforce ldm/stm register alignment
2270         if TARGET_H8300SX.  Use h8300_push_pop.
2271         (h8300_expand_epilogue): Likewise.  Try to merge the return insn
2272         and final pop when generating h8sx code.  Always emit some form
2273         of return insn.
2274         * config/h8300/h8300.md: Don't enforce register alignment in
2275         stm peepholes if TARGET_H8300SX.
2276         (ldm_h8300s, stm_h8300s, return_h8sx): New patterns.
2277         (ldm_h8300s_[234], stm_h8300_[234]): Disable.
2278         (epilogue): Expect h8300_expand_epilogue to emit a return insn.
2279         2003-06-03  Richard Sandiford  <rsandifo@redhat.com>
2280         * config/h8300/t-h8300 (MULTILIB_OPTIONS): Add a -msx multilib.
2281         (MULTILIB_DIRNAMES): Add a directory for it.
2282         (MULTILIB_MATCHES): Delete.
2283         2003-05-28  Richard Sandiford  <rsandifo@redhat.com>
2284         * final.c (walk_alter_subreg): Handle addresses with subregs
2285         inside a ZERO_EXTEND or AND.
2286         * config/h8300/h8300-protos.h (h8300_get_index): Declare.
2287         * config/h8300/h8300.h (INDEX_REG_CLASS): Set to GENERAL_REGS
2288         if TARGET_H8300SX.
2289         (GO_IF_LEGITIMATE_ADDRESS): Use h8300_get_index.
2290         * config/h8300/h8300.c (print_operand_address): Handle @(dd,RnL.b),
2291         @(dd,Rn.w) and @(dd,ERn.L).
2292         (h8300_displacement_size): Take the whole address as argument.
2293         (h8300_classify_operand, h8300_short_move_mem_p): Adjust accordingly.
2294         2003-05-28  Richard Sandiford  <rsandifo@redhat.com>
2295         * config/mips/mips-protos.h (h8300_operands_match_p): Declare.
2296         (h8sx_mergeable_memrefs_p): Declare.
2297         * config/h8300/h8300.h (HAVE_POST_DECREMENT): Define to TARGET_H8300SX.
2298         (HAVE_PRE_INCREMENT): Likewise.
2299         (GO_IF_LEGITIMATE_ADDRESS): Accept pre/post increment/decrement
2300         addresses for TARGET_H8300SX,
2301         * config/h8300/h8300.c (print_operand_address): Deal with PRE_INC
2302         and POST_DEC.
2303         (movb_length_table, movl_length_table): New tables.
2304         (movw_length_table): Define to movb_length_table.
2305         (h8300_displacement_size): New, split out from...
2306         (h8300_classify_address): ...here.  Handle pre/post inc/dec.
2307         (h8300_short_immediate_length): Allow H8OP_MEM_COMPLEX operands.
2308         (h8300_insn_length_from_table): Add cases for movb, movw and movl.
2309         (h8sx_mergeable_memrefs_p, h8300_operands_match_p): New functions.
2310         (output_plussi): Use add.l #xx:3,Rn and sub.l #xx:3,Rn for h8sx.
2311         (compute_plussi_length, compute_plussi_cc): Update accordingly.
2312         (h8sx_unary_shift_operator): Get the mode from the operator.
2313         (binary_shift_operator): Likewise.
2314         * config/h8300/h8300.md: If a peephole2 applies gen_lowpart to
2315         a memory reference, check whether the reference is offsettable.
2316         (length_table): Add movb, movw and movl.
2317         (movqi): Add new h8sx pattern.  Don't force one operand to be a
2318         register when generating h8sx code.
2319         (movhi, movsi, movsf): Likewise.
2320         (movstrictqi): Use the length_table attribute.
2321         (movstricthi): Likewise.  Add h8sx alternative for mov.w #xx:3,Rn.
2322         (addqi3): Split into a define_expand and define_insn.  Don't accept
2323         memory operands in the expander.  Use h8300_operands_match_p to
2324         check for matching operands in the define_insn.
2325         (subqi3, negqi2, one_cmplqi2): Likewise.
2326         (add[hs]i3): Don't accept memory operands in the expander.  Likewise
2327         in any patterns that are unused in h8sx code.  In the h8sx patterns,
2328         use h8300_operands_match_p to check whether operands match.
2329         (sub[hs]i3, and[hi]3, ior[hs]i3, xor[hs]i3, neg[hsi]3,
2330         one_cmpl[hs]i3): Likewise.
2331         (andqi3, iorqi3, xorqi3): Likewise.  Don't call fix_bit_operand
2332         in the expander.
2333         2003-05-23  Richard Sandiford  <rsandifo@redhat.com>
2334         * config/h8300/h8300-protos.h (expand_a_shift): Return a bool.
2335         (h8300_insn_length_from_table): Add a second parameter.
2336         (output_h8sx_shift): Declare.
2337         * config/h8300/h8300.h (OK_FOR_W, OK_FOR_Y): New macros.
2338         (EXTRA_CONSTRAINT): Replace with...
2339         (EXTRA_CONSTRAINT_STR): ...this.  Use OK_FOR_W and OK_FOR_Y.
2340         (CONSTRAINT_LEN): Define, returning 2 for 'W' and 'Y'.
2341         (PREDICATE_CODES): Add entries for h8sx_unary_shift_operator
2342         and h8sx_binary_shift_operator.
2343         * config/h8300/h8300.c (two_insn_adds_subs_operand): Return false
2344         for TARGET_H8300SX.
2345         (bit_operand): Replace use of EXTRA_CONSTRAINT with OK_FOR_U.
2346         (bit_memory_operand, fix_bit_operand): Likewise.
2347         (h8300_length_table_for_insn): Remove.
2348         (h8300_classify_operand): Fix check for 16-bit operands in 32-bit
2349         instructions.
2350         (h8300_short_immediate_length, h8300_binary_length): New functions.
2351         (h8300_insn_length_from_table): Add an opcodes parameter.  Rework.
2352         (output_plussi): Use sub to add negative constants.
2353         (compute_plussi_length): Adjust accordingly.
2354         (h8sx_single_shift_type): New enum.
2355         (h8sx_single_shift, h8sx_unary_shift_operator,
2356         h8sx_binary_shift_operator, output_h8sx_shift): New functions.
2357         (expand_a_shift, expand_a_rotate): Emit nothing if the shift is a
2358         single h8sx instruction.  Return false in this case.
2359         * config/h8300/h8300.md (length_table): Add short_immediate.
2360         (length): Pass the operand array to h8300_insn_length_from_table.
2361         (adjust_length): Assume "no" for insns with a length_table attribute.
2362         (*cmphi_h8300hs, cmpsi): Add alternatives for #xx:3.
2363         (*addhi3_h8300hs): Don't use for h8sx.
2364         (*addhi3_h8sx): New pattern, with alternatives for add.w #xx:3
2365         and sub.w #xx:3.
2366         (ashl[qhs]i3, lshr[qhs]i3, ashr[qhs]i3, rotl[qhs]i3): Change operand
2367         1's predicate to nonimmediate_operand.  Only skip default expansion
2368         if expand_a_shift or expand_a_rotate returns true.  Add new patterns
2369         for single h8sx shift instructions.
2370         2003-05-22  Alexandre Oliva  <aoliva@redhat.com>
2371         * config/h8300/h8300.c (nibble_operand): Split out of...
2372         (reg_or_nibble_operand): ... this.
2373         * config/h8300/h8300.h (PREDICATE_CODES): Added nibble_operand.
2374         * config/h8300/h8300.md: (mulqihi3, mulhisi3, umulqihi3,
2375         umulhisi3): Introduce expand, and introduce separate insns for
2376         sign- or zero-extended REG and already-extended CONST_INT.
2377         2003-05-20  Richard Sandiford  <rsandifo@redhat.com>
2378         * config/h8300/h8300.c (h8300_unary_length): Fix miscounting.
2379         * config/h8300/h8300.md (subqi3): Generalize for h8sx.
2380         (subhi3): Likewise.  Don't accept immediates for operand 1.
2381         Remove the early clobber from second alternative of the h8300s pattern.
2382         (subsi3): Generalize for h8sx.  Force operand 2 into a register
2383         on plain h8300 targets.
2384         (subsi3_h8300): Use h8300_dst_operand for consistency with expander.
2385         (subsi3_h8300h): Generalize for h8sx.
2386         (one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise.
2387         2003-05-19  Alexandre Oliva  <aoliva@redhat.com>
2388         * config/h8300/h8300.c (reg_or_nibble_operand): New.
2389         * config/h8300/h8300.h (PREDICATE_CODES): Adjust.
2390         (TARGET_H8300SXMUL): New.
2391         (CONST_OK_FOR_P): New.
2392         (CONST_OK_FOR_LETTER_P): Adjust.
2393         * config/h8300/h8300.md (mulqihi3, mulhisi3, umulqihi3,
2394         umulhisi3): Accept 4-bit immediate on H8SX.
2395         (mulhi3, mulsi3, smulsi3_highpart, umulsi3_highpart): New.
2396         (udivsi3, divhi3, udivsi3, divsi3): New.
2397         2003-05-19  Richard Sandiford  <rsandifo@redhat.com>
2398         * config/h8300/h8300-protos.h (h8300_insn_length_from_table): Declare.
2399         * config/h8300/h8300.h (OK_FOR_Q): New macro.
2400         (EXTRA_CONSTRAINT): Use it to check the 'Q' constraint.
2401         (PREDICATE_CODES): Add h8300_src_operand and h8300_dst_operand.
2402         Add ADDRESSOF to the bit_operand entry.
2403         * config/h8300/h8300.c (h8300_dst_operand): New predicate.
2404         (h8300_src_operand): Likewise.
2405         (bit_operand): Check nonimmediate_operand rather than general_operand.
2406         Accept any nonimmediate_operand in h8sx code.
2407         (h8300_and_costs): Initialize operands[1].
2408         (h8300_rtx_costs) <AND>: Return false if the operands aren't valid.
2409         (h8300_operand_class): New enum.
2410         (h8300_length_table): New typedef.
2411         (addb_length_table, addw_length_table, addl_length_table,
2412         logicl_length_table): New tables.
2413         (logicb_length_table, logicw_length_table): New macros.
2414         (h8300_classify_operand, h8300_length_from_table,
2415         h8300_length_table_for_insn, h8300_unary_length,
2416         h8300_insn_length_from_table): New functions.
2417         (output_plussi): Only use adds and subs for register destinations.
2418         Disable redundant clause.
2419         (compute_plussi_cc): Likewise.
2420         (compute_plussi_length): Likewise.  Use h8300_length_from_table
2421         to work out the length of an insn.
2422         (output_logical_op): Only use narrower immediate instructions
2423         if the destination is a register.
2424         (compute_logical_op_cc): Likewise.
2425         (compute_logical_op_length): Likewise.  Use h8300_length_from_table.
2426         (h8300_adjust_insn_length): Tighten check for reg<->mem moves.
2427         * config/h8300/h8300.md (length_table): New attribute.
2428         (length): When an instruction has a length_table attribute, use
2429         h8300_insn_length_from_table to calculate its default length.
2430         (cmpqi): Use h8300_dst_operand for the first operand and
2431         h8300_src_operand for the second.
2432         (cmphi, *cmphi_h8300hs, cmpsi, negqi2, neghi2, neghi2_h8300h, negsi2,
2433         negsi2_h8300h, addqi3, addhi3, *addhi3_h8300, *addhi3_h8300hs, addsi3,
2434         addsi_h8300, addsi_h8300h, andhi3, andsi3, iorhi3,
2435         iorsi3, xorhi3, xorsi3): Likewise.
2436         (andqi3): Use h8300_src_operand for operand 2.  Adjust the condition
2437         so that it allows any combination of operands for TARGET_H8300SX.
2438         (iorqi3, xorqi3): Likewise.
2439         (cmpqi): Use the length_table attribute.
2440         (*cmphi_h8300hs, cmpsi, addqi, *addhi3_h8300hs, andqi3, iorqi3,
2441         xorqi3, negqi2, neghi2_h8300h, negsi2_h8300h): Likewise.
2442         (cmpqi): Add 'Q' constraint.
2443         (*cmphi_h8300hs, cmpsi, addqi, *addhi3_h8300hs, addsi_h8300h, andqi3,
2444         iorqi3, xorqi3, negqi2, neghi2_h8300h, negsi2_h8300h): Likewise.
2445         2003-05-14  Richard Sandiford  <rsandifo@redhat.com>
2446         * config/h8300/h8300.h (MASK_H8300SX): New macro.
2447         (TARGET_H8300S): True for both -ms and -msx.
2448         (TARGET_H8300SX): New macro.
2449         (TARGET_SWITCHES): Add entries for -msx and -mno-sx.
2450         * config/h8300/h8300.c (asm_file_start): Write .h8300sx for -msx.
2451         * config/h8300/elf.h (LINK_SPEC): Use -m h8300sxelf for -msx.
2452         * config/h8300/t-h8300 (MULTILIB_MATCHES): Use -ms multilibs for -msx.
2453         [Temporary change.]
2454         2003-02-28  Alexandre Oliva  <aoliva@redhat.com>
2455         * config/h8300/h8300.h (SIZE_TYPE, PTRDIFF_TYPE): Use short with
2456         16-bit pointers and 32-bit ints.
2457         * config/h8300/h8300.h (LEGITIMATE_CONSTANT_P): Accept
2458         CONST_DOUBLE with mode no wider than SImode.
2459         * config/h8300/h8300.md (extendqisi2_h8300): Add constraints for
2460         output operand.
2461         2003-02-27  Alexandre Oliva  <aoliva@redhat.com>
2462         * config/h8300/h8300.c (general_operand_src): Match CONSTANT_P_RTX
2463         or SUBREG thereof.
2464         * config/h8300/h8300.h (PREDICATE_CODES): Adjust.
2465         2003-02-22  Alexandre Oliva  <aoliva@redhat.com>
2466         * config/h8300/h8300.c (dosize): Truncate sign * size to Pmode.
2467
2468 2004-05-28  Aaron W. LaFramboise <aaronraolete36@aaronwl.com>
2469
2470         * config.gcc (i[34567]86-*-mingw32*): Enable threads by default.
2471
2472 2004-07-07  Per Bothner  <per@bothner.com>
2473
2474         * flow.c (attempt_auto_inc):  Remove now-redundant PUT_CODE.
2475
2476 2004-07-07  Mike Stump  <mrs@apple.com>
2477
2478         * darwin.h (ASM_OUTPUT_LABELREF): Fix -fno-leading-underscore.
2479         * darwin.c (machopic_non_lazy_ptr_name, machopic_stub_name)
2480         (machopic_finish): Likewise.
2481
2482 2004-07-07  Richard Henderson  <rth@redhat.com>
2483
2484         * tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): Look
2485         through any value-preserving cast.
2486
2487 2004-07-07  Alexandre Oliva  <aoliva@redhat.com>
2488
2489         * function.c (assign_parm_find_data_types): Call
2490         FUNCTION_ARG_PASS_BY_REFERENCE only if it's defined.
2491
2492 2004-07-07  Steven Bosscher  <stevenb@suse.de>
2493
2494         * tree-cfg.c (group_case_labels): Remove case labels that have
2495         the same target as the default case.
2496
2497 2004-07-07  Steven Bosscher  <stevenb@suse.de>
2498
2499         * tree-inline.c (optimize_inline_calls): Set DECL_INLINED_FNS
2500         regardless of DECL_LANG_SPECIFIC being present or not.
2501         * tree.h (DECL_NUM_STMTS): Purge.
2502
2503 2004-07-07  Andrew Pinski  <apinski@apple.com>
2504
2505         * configure: Regenerate with the right autoconf.
2506
2507 2004-07-07  David Edelsohn  <edelsohn@gnu.org>
2508
2509         * ifcvt.c (total_bb_rtx_cost): New function.
2510         (find_if_case_1): Compare rtx_cost of basic block to cost of
2511         BRANCH_COST insns.
2512         (find_if_case_2): Same.
2513
2514 2004-07-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
2515
2516         PR target/10567
2517         * config/sparc/sparc.c (load_pic_register): Honor flag_delayed_branch.
2518         (output_return): Likewise.
2519         (output_sibcall): Abort if !flag_delayed_branch.
2520         (sparc_function_ok_for_sibcall): Return 0 if !flag_delayed_branch.
2521         (emit_and_preserve): New function.
2522         (sparc_output_mi_thunk): Use it.  Honor flag_delayed_branch.  Emit an
2523         indirect jump to the thunked-to function if !flag_delayed_branch.
2524         * config/sparc/sparc.md (delayed_branch): New attribute.
2525         (load_pcrel_sym): Honor flag_delayed_branch.  Use above
2526         attribute to compute the length of the insn.
2527         (goto_handler_and_restore): Likewise.
2528
2529 2004-07-07  Andrew Pinski  <apinski@apple.com>
2530
2531         PR tree-optimization/15777
2532         * fold-const.c (fold_single_bit_test): Fold the x^1 expression.
2533
2534         * expr.c (expand_expr_real_1): Fix formating.
2535         BUFFER_REF and IN_EXPR are dead.
2536         * fold-const.c (non_lvalue): BUFFER_REF is dead.
2537         * tree-inline.c (estimate_num_insns_1): Likewise.
2538         * tree-pretty-print.c (dump_generic_node): BUFFER_REF,
2539         IN_EXPR, SET_LE_EXPR, and CARD_EXPR are dead.
2540         * tree.def (BUFFER_REF, IN_EXPR, SET_LE_EXPR, CARD_EXPR): Kill.
2541
2542 2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>
2543
2544         * collect2.c (dump_file): Don't call cplus_demangle if
2545         HAVE_LD_DEMANGLE is defined.
2546         (main): Pass "--demangle" to ld if no_demangle is not 0 and
2547         HAVE_LD_DEMANGLE is defined. Don't set current_demangling_style
2548         if HAVE_LD_DEMANGLE is defined.
2549
2550         * configure.ac (--with-demangler-in-ld): Added
2551         (HAVE_LD_DEMANGLE): Define if ld supports --demangle when
2552         --with-demangler-in-ld is used.
2553         * config.in: Regenerated.
2554         * configure: Likewise.
2555
2556 2004-07-07  Roger Sayle  <roger@eyesopen.com>
2557
2558         * config/rs6000/rs6000.c (struct processor_costs): Add new fields
2559         for simple floating point operations "fp", double precision
2560         multiplication "dmul", and single and double precision division
2561         "sdiv" and "ddiv".  Update all CPU variant tables as appropriate.
2562         (ppc630_cost): New table split from ppc620_cost, to distinguish
2563         differences in floating point latencies.
2564         (rs6000_override_options): Use ppc630_cost for PROCESSOR_PPC630.
2565         (rs6000_rtx_costs): Add support for single and double precision
2566         floating point addition, subtraction, multiplication, division,
2567         fused-multiply-add, fused-multiply-sub, negation, absolute value
2568         and negative absolute value.  Tweak MEM case to use prefered idiom.
2569
2570 2004-07-07  Richard Henderson  <rth@redhat.com>
2571
2572         * tree-flow-inline.h (may_propagate_copy): Move...
2573         * tree-ssa-copy.c (may_propagate_copy): ... here.  Fail if we
2574         attempt to copy between types requiring conversion.
2575         * tree-flow.h (may_propagate_copy): Update decl.
2576         * tree-ssa-dom.c (cprop_operand): Tidy redundant tests.
2577
2578 2004-07-07  Jakub Jelinek  <jakub@redhat.com>
2579
2580         * config/i386/i386.c (override_options): Don't set x86_prefetch_sse
2581         from -mtune= option.
2582
2583 2004-07-07  Alexandre Oliva  <aoliva@redhat.com>
2584
2585         * builtins.c: Rename movstr*, except for movstrict*, to
2586         movmem* and clrstr* to clrmem*.
2587         * expr.c: Likewise.
2588         * expr.h: Likewise.
2589         * genopinit.c: Likewise.
2590         * integrate.c: Likewise.
2591         * local-alloc.c: Likewise.
2592         * optabs.c: Likewise.
2593         * optabs.h: Likewise.
2594         * config/alpha/alpha.h: Likewise.
2595         * config/alpha/alpha.md: Likewise.
2596         * config/arm/arm-protos.h: Likewise.
2597         * config/arm/arm.c: Likewise.
2598         * config/arm/arm.md: Likewise.
2599         * config/avr/avr.md: Likewise.
2600         * config/c4x/c4x.c: Likewise.
2601         * config/c4x/c4x.md: Likewise.
2602         * config/frv/frv.md: Likewise.
2603         * config/i386/i386-protos.h: Likewise.
2604         * config/i386/i386.c: Likewise.
2605         * config/i386/i386.h: Likewise.
2606         * config/i386/i386.md: Likewise.
2607         * config/i860/i860.c: Likewise.
2608         * config/i860/i860.md: Likewise.
2609         * config/ip2k/ip2k.md: Likewise.
2610         * config/ip2k/libgcc.S: Likewise.
2611         * config/ip2k/t-ip2k: Likewise.
2612         * config/m32r/m32r.c: Likewise.
2613         * config/m32r/m32r.md: Likewise.
2614         * config/mcore/mcore.md: Likewise.
2615         * config/mips/mips.c: Likewise.
2616         * config/mips/mips.md: Likewise.
2617         * config/ns32k/ns32k.c: Likewise.
2618         * config/ns32k/ns32k.h: Likewise.
2619         * config/ns32k/ns32k.md: Likewise.
2620         * config/pa/pa.c: Likewise.
2621         * config/pa/pa.md: Likewise.
2622         * config/pdp11/pdp11.h: Likewise.
2623         * config/pdp11/pdp11.md: Likewise.
2624         * config/rs6000/rs6000.c: Likewise.
2625         * config/rs6000/rs6000.md: Likewise.
2626         * config/s390/s390-protos.h: Likewise.
2627         * config/s390/s390.c: Likewise.
2628         * config/s390/s390.md: Likewise.
2629         * config/sh/lib1funcs.asm: Likewise.
2630         * config/sh/sh.c: Likewise.
2631         * config/sh/sh.md: Likewise.
2632         * config/sh/t-sh: Likewise.
2633         * config/sparc/sparc.h: Likewise.
2634         * config/vax/vax.md: Likewise.
2635         * config/xtensa/xtensa.c: Likewise.
2636         * config/xtensa/xtensa.md: Likewise.
2637         * doc/invoke.texi: Likewise.
2638         * doc/md.texi: Likewise.
2639         * doc/rtl.texi: Likewise.
2640
2641 2004-07-07  Richard Sandiford  <rsandifo@redhat.com>
2642
2643         PR target/16407
2644         * config/mips/mips-protos.h (mips_declare_common_object): Declare.
2645         * config/mips/mips.c (mips_declare_common_object): New function,
2646         mostly split out from...
2647         (mips_output_aligned_decl_common): ...here.
2648         * config/mips/mips.h (ASM_OUTPUT_LOCAL): Remove in favor of...
2649         (ASM_OUTPUT_ALIGNED_LOCAL): ...this new definition.
2650         * config/mips/iris6.h (ASM_OUTPUT_ALIGNED_LOCAL): Undefine this
2651         rather than ASM_OUTPUT_LOCAL.  Call mips_declare_common_object.
2652
2653 2004-07-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2654
2655         PR c/16392
2656         * function.c (assign_parms): Fix typo from previous change.
2657
2658 2004-07-07  Jason Merrill  <jason@redhat.com>
2659
2660         PR c++/15815
2661         * doc/extend.texi (C++ Interface): Correct information and
2662         discourage use.
2663
2664 2004-07-07  Vladimir Makarov  <vmakarov@redhat.com>
2665
2666         PR target/16130
2667         PR target/16142
2668         PR target/16143
2669         * config/ia64/ia64.c (ia64_dfa_new_cycle): Reset DFA state for asm
2670         insn.
2671
2672 2004-07-06  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
2673
2674         PR target/1679.
2675         * config/m32r/m32r.c (m32r_function_symbol): New function:
2676         Generate a symbol name RTX with the correct m32r specific flags
2677         set.
2678         (block_move_call): Use new function to generate correct symbol.
2679         * config/m32r/m32r-protos.h: Add prototype for new funcion.
2680         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Use the new
2681         function.
2682
2683 2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>
2684
2685         * tree.h (TYPE_BINFO_OFFSET, TYPE_BINFO_VTABLE,
2686         TYPE_BINFO_VIRTUALS, TYPE_BINFO_BASETYPES,
2687         TYPE_BINFO_BASETYPE): Remove.
2688         (BINFO_BASETYPES, BINFO_N_BASETYPES, BINFO_BASETYPE): Rename
2689         to ...
2690         (BINFO_BASE_BINFOS, BINFO_N_BASE_BINFOS, BINFO_BASE_BINFO): ...
2691         here.
2692         (BINFO_BASEACCESSES, BINFO_BASEACCESS): Rename to ...
2693         (BINFO_BASE_ACCESSES, BINFO_BASE_ACCESS): ... here.
2694         (BINFO_INHERITANCE_CHAIN): Redocument as it is actually used.
2695         (struct tree_binfo): Rename base_types to base_binfos.
2696         * alias.c (record_component_aliases): Adjust BINFO macros.
2697         * dbxout.c (dbxout_type): Likewise.
2698         * dwarf2out.c (gen_member_die): Likewise.
2699         * sdbout.c (sdbout_one_type): Likewise.
2700         * tree-dump.c (deque_and_dump): Likewise.
2701         * config/i386/i386.c (classify_argument,
2702         contains_128bit_aligned_vector_p): Likewise.
2703
2704 2004-07-07  Nick Clifton  <nickc@redhat.com>
2705
2706         * config/fr30/fr30.c (fr30_setup_incoming_varargs): Change
2707         arguments to match TARGET_SETUP_INCOMING_VARARGS prototype.
2708
2709 2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>
2710
2711         * vec.h: Fix the example use.
2712
2713 2004-07-06  Richard Henderson  <rth@redhat.com>
2714
2715         * langhooks-def.h (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Remove.
2716         * langhooks.h (struct lang_hooks): Remove gimple_before_inlining.
2717         * tree-inline.c (copy_body_r, setup_one_parameter,
2718         initialize_inlined_parameters, expand_call_inline,
2719         declare_inline_vars): Don't check it.
2720         (expand_calls_inline): Remove old version, rename new version
2721         from gimple_expand_calls_inline.
2722         * tree-optimize.c (execute_gimple): Remove.
2723         (pass_gimple): Don't run anything.
2724
2725 2004-07-06  Joseph S. Myers  <jsm@polyomino.org.uk>
2726
2727         * doc/sourcebuild.texi: Use semicolons instead of commas in
2728         section title.
2729
2730 2004-07-06  Richard Henderson  <rth@redhat.com>
2731
2732         * tree-sra.c (struct sra_walk_fns): Revert 2004-07-05 change.
2733         (sra_walk_modify_expr, scan_init): Likewise.
2734         (generate_element_zero): Check visited before scanning children.
2735         (generate_element_init): Set visited on error.
2736         (scalarize_init): Handle generate_element_init failure similar
2737         to use_block_copy.
2738
2739 2004-07-06  Joseph S. Myers  <jsm@polyomino.org.uk>
2740
2741         * toplev.h (NO_FRONT_END_DIAG, ATTRIBUTE_GCC_FE_DIAG): Define.
2742         (warning, error, pedwarn, sorry): Use ATTRIBUTE_GCC_FE_DIAG.
2743
2744 2004-07-06  Richard Henderson  <rth@redhat.com>
2745
2746         * config/i386/i386.c (legitimize_pic_address): Make static.
2747         (legitimize_address): Handle CONST with TLS operand.
2748         (ix86_expand_move): Don't call legitimize_pic_address directly.
2749         * config/i386/i386-protos.h (legitimize_pic_address): Remove.
2750
2751 2004-07-06  Roger Sayle  <roger@eyesopen.com>
2752
2753         * ifcvt.c (struct noce_if_info): Add a Boolean b_unconditional field.
2754         (noce_try_sign_mask): Tweak rtx_cost check if t is evaluated anyway.
2755         (noce_process_if_block): Initialize if_info.b_unconditional if insn_b
2756         is currently executed unconditionally, i.e. not in "else_bb".
2757
2758 2004-07-06  Steven Bosscher  <stevenb@suse.de>
2759
2760         * config/alpha/alpha.c (alpha_use_dfa_pipeline_interface): Remove.
2761         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
2762         * config/arm/arm.c (arm_use_dfa_pipeline_interface): Remove.
2763         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
2764         * config/frv/frv.c (frv_use_dfa_pipeline_interface): Remove.
2765         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
2766         * config/i386/i386.c (ia32_use_dfa_pipeline_interface): Remove.
2767         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
2768         * config/ia64/ia64.c (ia64_use_dfa_pipeline_interface): Remove.
2769         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
2770         * config/pa/pa.c (hhpa_use_dfa_pipeline_interface): Remove.
2771         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
2772         * config/sparc/sparc.c (sparc_use_dfa_pipeline_interface): Remove.
2773         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
2774         * config/v850/v850.c (v850_use_dfa_pipeline_interface): Remove.
2775         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
2776
2777 2004-07-06  Daniel Berlin  <dberlin@dberlin.org>
2778
2779         * dojump.c (do_jump): REFERENCE_EXPR is dead.
2780         * expr.c (expand_expr_real_1): Ditto.
2781         * tree-inline.c (estimate_num_insns_1): Ditto.
2782         * tree-pretty-print.c (dump_generic_node): Ditto.
2783         (op_symbol): Ditto.
2784         * tree.def: Ditto.
2785
2786 2004-07-06  Daniel Berlin  <dberlin@dberlin.org>
2787
2788         * tree-ssa-pre.c (reference_node_pool): New pool.
2789         (find_or_generate_expression): Class 'r' is okay too.
2790         (create_value_expr_from): Ditto.
2791         (add_to_sets): LHS should not include vuses.
2792         (eliminate): Ditto.
2793         (compute_avail): Reverse ordering of tests.
2794         Valuize INDIRECT_REF as well.
2795
2796 2004-07-06  Richard Sandiford  <rsandifo@redhat.com>
2797
2798         PR rtl-optimization/16380
2799         * loop.c (check_dbra_loop): Sink comparison instructions if they
2800         do something other than set cc0.
2801
2802 2004-07-06  James E Wilson  <wilson@specifixinc.com>
2803
2804         * doc/interface.texi (longjmp and automatic variables): Delete
2805         paragraph recommending taking the address of a variable.
2806
2807 2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>
2808
2809         * vec.h (VEC_embedded_alloc): Remove.
2810         (VEC_embedded_size, VEC_embedded_init): New.
2811         (VEC_alloc, VEC_reserve, VEC_safe_push, VEC_safe_insert): Add
2812         MEM_STAT_INFO.
2813         (VEC_truncate): New.
2814         (vec_p_reserve, vec_o_reserve): Add MEM_STAT_DECL.
2815         (vec_embedded_alloc): Remove.
2816         * vec.c (vec_p_reserve, vec_o_reserve): Add MEM_STAT_DECL, adjust.
2817         (vec_embedded_alloc): Remove.
2818
2819 2004-07-06  Mark Mitchell  <mark@codesourcery.com>
2820
2821         * Makefile.in (langhooks.o): Do not depend on gt-langhooks.h.
2822         (gt-langhooks.h): Remove.
2823
2824 2004-07-06  George Helffrich <george@gly.bris.ac.uk>
2825
2826         * xcoffout.h (DBX_FINISH_SYMBOL): Fix typo.
2827
2828 2004-07-06  Eric Botcazou  <ebotcazou@libertysurf.fr>
2829
2830         * config/sparc/sparc.c (get_pc_symbol): Rename into
2831         add_pc_to_pic_symbol.
2832         (get_pc_symbol_name): Rename into add_pc_to_pic_symbol_name.
2833         (load_pic_register): Account for previous changes.
2834         Use reg_names.  Don't create the label twice.
2835         * config/sparc/sparc.md (UNSPEC_GET_PC): Rename into
2836         UNSPEC_LOAD_PCREL_SYM.
2837         (get_pc): Rename into load_pcrel_sym.  Add predicate to
2838         operands.  Remove condition.
2839
2840 2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>
2841
2842         * dbxout.c (dbxout_type): Don't test whether the binfo slot of
2843         RECORD, UNION & QUAL_UNION is actually a binfo.
2844
2845         * tree.h (TREE_VIA_VIRTUAL): Rename to ...
2846         (BINFO_VIRTUAL_P): ... here. Require TREE_BINFO only.
2847         (BINFO_MARKED, BINFO_FLAG_[16]): New binfo flags.
2848         * dbxout.c (dbxout_type): Use BINFO_VIRTUAL_P.
2849         * dwarf2out.c (add_data_member_location_attribute): Likewise.
2850         (gen_inheritance_die): Likewise.
2851         * tree-dump.c (deque_and_dump): Likewise.
2852         * doc/c-tree.texi (Binfos): Add under reconstruction note.
2853
2854 2004-07-06  Steven Bosscher  <stevenb@suse.de>
2855
2856         * config/mcore/mcore.c (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE):
2857         Define.
2858         * config/mcore/mcore.md: Model memory latency with a simple DFA
2859         pipeline description instead of a define_function_unit.
2860
2861 2004-07-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2862
2863         * langhooks-def.h (LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P): Extra arg.
2864         * langhooks.h (var_mod_type_p): Likewise.
2865         * c-decl.c (finish_decl): Add extra arg to variably_modified_type_p.
2866         * expr.c (count_type_elements): Properly handle return from
2867         array_type_nelts and properly test for overflow.
2868         * gimplify.c (gimplify_init_constructor): Properly handle return
2869         from array_type_nelts.
2870         (gimplify_addr_expr): Remove redundant clear of TREE_SIDE_EFFECTS.
2871         * integrate.c (copy_decl_for_inlining): Correct comments.
2872         * tree-inline.c (remap_decl): Update comments, remove dead code,
2873         and copy DECL_FIELD_OFFSET and DECL_QUALIFIER, if they exist.
2874         (remap_type): Only remap if variably modified by vars in function
2875         being inlined.
2876         (copy_body_r): Use compatible_type langhooks to see when can fold.
2877         (setup_one_parameter): Don't remap type.
2878         (inline_forbidden_p_1): Add arg to variably_modified_type_p.
2879         * tree.c (recompute_tree_invarant_for_addr_expr): Properly
2880         compute TREE_INVARIANT for decl case.
2881         (find_var_from_fn): New function.
2882         (variably_modified_type_p): Add arg and call new function.
2883         * tree.h (variably_modified_type_p): Add extra arg.
2884
2885 2004-07-05  Eric Botcazou  <ebotcazou@libertysurf.fr>
2886
2887         * config/sparc/sparc.md (nonlocal_goto): Remove disabled code.
2888         (goto_handler_and_restore_v9): Delete disabled insn.
2889         (goto_handler_and_restore_v9_sp64): Likewise.
2890
2891 2004-07-05  Roger Sayle  <roger@eyesopen.com>
2892
2893         * calls.c (load_register_parameters): Call expand_shift instead
2894         of expand_binop with ashl_optab (or other shift optab) directly.
2895         * expr.c (emit_group_load, emit_group_store): Likewise.
2896         * function.c (assign_parm_setup_block): Likewise.
2897         * stmt.c (shift_return_value): Likewise.
2898
2899 2004-07-05  Jakub Jelinek  <jakub@redhat.com>
2900
2901         * expr.c (expand_assignment): Disable the bitfield += optimizations.
2902
2903 2004-07-05  Joseph S. Myers  <jsm@polyomino.org.uk>
2904
2905         * doc/sourcebuild.texi: Revert previous patch.
2906
2907 2004-07-05  Joseph S. Myers  <jsm@polyomino.org.uk>
2908
2909         * c-decl.c, config/m32r/m32r.c, expr.c, optabs.c: Don't check
2910         TARGET_MEM_FUNCTIONS.
2911         * system.h: Poison TARGET_MEM_FUNCTIONS.
2912         * libfuncs.h (LTI_bcopy, LTI_bcmp, LTI_bzero, bcopy_libfunc,
2913         bcmp_libfunc, bzero_libfunc): Remove.
2914         * optabs.c (init_obtabs): Don't set bcopy_libfunc, bcmp_libfunc or
2915         bzero_libfunc.
2916         * doc/tm.texi (TARGET_MEM_FUNCTIONS): Remove.
2917         * doc/standards.texi: Don't mention calling BSD string functions.
2918         * doc/invoke.texi: Likewise.  Mention that memmove may be called.
2919         * config/vax/t-memfuncs: New.
2920         * config/memcmp.c, config/memcpy.c, config/memmove.c,
2921         config/memset.c: New.
2922         * config/pdp11/t-pdp11 (LIB2FUNCS_EXTRA): Use these files.
2923         * config.gcc (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*): Use
2924         vax/t-memfuncs.
2925         * config/alpha/alpha.h, config/arc/arc.h, config/arm/arm.h,
2926         config/avr/avr.h, config/c4x/c4x.h, config/cris/aout.h,
2927         config/elfos.h, config/gnu.h, config/h8300/h8300.h,
2928         config/i386/gas.h, config/ia64/ia64.h, config/interix.h,
2929         config/ip2k/ip2k.h, config/lynx-ng.h, config/m32r/m32r.h,
2930         config/mcore/mcore.h, config/mips/mips.h, config/mmix/mmix.h,
2931         config/netbsd.h, config/openbsd.h, config/pa/pa.h,
2932         config/rs6000/rs6000.h, config/rtems.h, config/s390/s390.h,
2933         config/sh/sh.h, config/sparc/sparc.h, config/stormy16/stormy16.h,
2934         config/svr3.h: Don't define TARGET_MEM_FUNCTIONS.
2935
2936 2004-07-05  Richard Henderson  <rth@redhat.com>
2937
2938         * function.c (assign_parm_setup_reg): Properly rename variables in
2939         FUNCTION_ARG_CALLEE_COPIES section.
2940
2941 2004-07-05  Zack Weinberg  <zack@codesourcery.com>
2942
2943         * tree-mudflap.c: Include cgraph.h.
2944         (mf_init_extern_trees): Rename to mudflap_init.  Export.
2945         Rewrite to create synthetic declarations instead of looking
2946         up declarations from mf-runtime.h.
2947         (mf_make_builtin, mf_make_cache_struct_type): New functions.
2948         (mf_cache_shift_decl, mf_cache_mask_decl, mf_unregister_fndecl):
2949         Correct commentary.
2950         (execute_mudflap_function_decls, mudflap_register_call):
2951         Don't call mf_init_extern_trees.
2952         (mudflap_finish_file): Use cgraph_build_static_cdtor.
2953
2954         * tree-mudflap.h: Update prototypes.
2955         * c-mudflap.c: Delete file.
2956         * c-common.c: Include tree-mudflap.h.
2957         (c_common_nodes_and_builtins): Call mudflap_init if appropriate.
2958         * Makefile.in: Remove all references to c-mudflap.o.
2959         Update dependencies.
2960
2961 2004-07-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2962
2963         * pa.md (prefetch, prefetch_32, prefetch_64): Only allow short
2964         displacements with the spatial-locality cache-control completer.
2965
2966 2004-07-05  Zack Weinberg  <zack@codesourcery.com>
2967
2968         * langhooks.c: Don't include gt-langhooks.h.
2969         (var_labelno): Delete.
2970         (lhd_set_decl_assembler_name): Do not append a distinguishing
2971         number to file-scope internal-linkage declarations for the first
2972         input file, even if they have DECL_CONTEXT set.  Use DECL_UID of
2973         the declaration itself (if at block scope), or its containing
2974         TRANSLATION_UNIT_DECL (if at file scope) for the distinguishing
2975         number.
2976
2977         * opts.c (cur_in_fname): New global.
2978         * opts.h: Declare it.
2979         * tree.c: Include opts.h.
2980         (make_node_stat): If creating a TRANSLATION_UNIT_DECL, give it
2981         DECL_UID equal to cur_in_fname.
2982         (copy_node_stat): Do not change DECL_UID when copying a
2983         TRANSLATION_UNIT_DECL.
2984         (build_common_tree_nodes): Adjust next_decl_uid to reserve the
2985         range 0 .. num_in_fnames-1 for TRANSLATION_UNIT_DECLs.
2986
2987         * c-decl.c (c_static_assembler_name): Delete.
2988         * c-tree.h (c_static_assembler_name): Delete prototype.
2989         * c-lang.c, objc/objc-lang.c: Don't override
2990         LANG_HOOKS_SET_DECL_ASSEMBLER_NAME.
2991
2992         * Makefile.in (tree.o): Update dependencies.
2993         (GTFILES): Remove langhooks.c.
2994
2995 2004-07-05  Roger Sayle  <roger@eyesopen.com>
2996
2997         * fold-const.c (fold) <TRUNC_MOD_EXPR>: Optimize unsigned modulus
2998         by a power of two into a bit-wise AND, i.e. "X % C" as "X & (C-1)".
2999         Normalize "X % C" as "X % -C" for signed modulus and negative C.
3000         Optimize "X % -Y" as "X % Y" for signed modulus.
3001         <EQ_EXPR>: Recursively call "fold" when transforming "(X % Y) == 0"
3002         into "((unsigned) X % Y) == 0".
3003
3004 2004-07-05  Joseph S. Myers  <jsm@polyomino.org.uk>
3005
3006         * sourcebuild.texi (Config Fragments): Use @comma{} in
3007         cross-reference to section title.
3008
3009 2004-07-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3010
3011         * tree.h (DECL_SEEN_IN_BIND_EXPR_P): New macro.
3012         * gimplify.c (gimple_add_tmp_var, gimplify_bind_expr): Use it.
3013         (gimplify_target_expr, gimplify_expr): Likewise.
3014         (copy_if_shared_r): No longer need special case for BIND_EXPR.
3015         (unshare_body, unvisit_body): Only look at nested if BODY_P is
3016         whole function.
3017         (gimplify_compound_lval): See if we can strip any useless conversion.
3018         (gimplify_modify_expr, gimplify_modify_expr_to_memcpy): Take size
3019         from RHS, not LHS.
3020         (gimplify_modify_expr_to_memset): Likewise.
3021         (gimplify_expr, case CONSTRUCTOR): Handle use as statement.
3022         * tree-inline.c (setup_one_parameter): Use DECL_SEEN_IN_BIND_EXPR_P.
3023         (declare_inline_vars): Likewise.
3024         (walk_type_fields): New function.
3025         (walk_tree): Use it.
3026         * tree-nested.c (create_tmp_var_for): Show seen in BIND_EXPR.
3027
3028         * tree-sra.c (struct sra_walk_fns): Init function now returns bool.
3029         (sra_walk_modify_expr): Allow init function to fail.
3030         (scan_init): Now returns bool.
3031         (generate_element_init): If can't understand INIT, return false.
3032         (scalarize_init): Return false if generate_element_init does.
3033
3034         * tree-pretty-print.c (dump_generic_node, case ARRAY_TYPE): Properly
3035         print bounds.
3036
3037         * expr.c (expand_expr_real_1, case SWITCH_EXPR): Don't check against
3038         bounds if bounds aren't constant.
3039
3040         * tree-cfg.c (verify_expr): Use CHECK_OP in binary case.
3041
3042         * function.c, langhooks-def.h, langhooks.h: Move max_size hook
3043         to type hooks; remove bogus PARAMS.
3044
3045 2004-07-05  Nathan Sidwell  <nathan@codesourcery.com>
3046
3047         * c-tree.h (TYPE_ACTUAL_ARG_TYPES): Use TYPE_LANG_SLOT_1.
3048         * dwarf2out.c (add_data_member_location_attribute): Check for
3049         TREE_BINFO.
3050         * tree.c (tree_node_kinds): Add "binfos".
3051         (binfo_lang_slots): New.
3052         (make_node_stat): Add TREE_BINFO.
3053         (make_tree_binfo_stat): New.
3054         (tree_node_structure): Add TREE_BINFO.
3055         * tree.def (TREE_BINFO): New.
3056         * tree.h (REC_OR_UNION_CHECK): Rename to ...
3057         (RECORD_OR_UNION_CHECK): ... here.
3058         (NOT_RECORD_OR_UNION_CHECK): New.
3059         (TRE_VIA_VIRTUAL): Allow TREE_LIST or TREE_BINFO.
3060         (TYPE_FIELDS, TYPE_METHODS, TYPE_VFIELD): Adjust for
3061         RECORD_OR_UNION_CHECK.
3062         (TYPE_BINFO): Use RECORD_OR_UNION_CHECK.
3063         (TYPE_LANG_SLOT_1): New.
3064         (BINFO_TYPE, BINFO_OFFSET, BINFO_VTABLE, BINFO_VIRTUALS,
3065         BINFO_BASETYPES, TYPE_BINFO_BASETYPES, BINFO_VPTR_FIELD,
3066         BINFO_BASEACCESSES, BINFO_INHERITANCE_CHAIN): Adjust.
3067         (BINFO_ELTS): Remove.
3068         (BINFO_LANG_SLOT): New.
3069         (struct tree_binfo): New.
3070         (binfo_lang_slots): Declare.
3071         (enum tree_node_structure_enum): Add TS_BINFO.
3072         (union tree_node): Add binfo.
3073         (make_tree_binfo_stat): Declare.
3074         (make_tree_binfo): New.
3075         (enum tree_node_kind): Add binfo_kind.
3076
3077         * objc/objc-act.c (start_class, objc_declare_protocols,
3078         start_protocols): Use TYPE_LANG_SLOT_1.
3079         * objc/objc-act.h (CLASS_BINFO_ELTS, PROTOCOL_BINFO_ELTS): Rename
3080         to ...
3081         (CLASS_LANG_SLOT_ELTS, PROTOCOL_LANG_SLOT_ELTS): ... here.
3082         (CLASS_IVARS, CLASS_RAW_IVARS, CLASS_STATIC_TEMPLATE,
3083         CLASS_CATEGORY_LIST, CLASS_PROTOCOL_LIST, CLASS_OWN_IVARS,
3084         PROTOCOL_LIST, PROTOCOL_FORWARD_DECL): Use TYPE_LANG_SLOT_1.
3085
3086 2004-07-05  Steven Bosscher  <stevenb@suse.de>
3087
3088         * rtl.h (struct rtx_def): Remove the integrated flag.
3089         Use the return_val flag for MEM_SCALAR_P.
3090         Reshuffle and update flags in CLEAR_RTX_FLAGS.
3091
3092 2004-07-05  Richard Sandiford  <rsandifo@redhat.com>
3093
3094         PR target/16357
3095         * config/mips/mips.c (mips_block_move_straight): Pass BLKmode memrefs
3096         to mips_expand_unaligned_load, mips_expand_unaligned_store, and
3097         move_by_pieces.
3098
3099 2004-07-05  Josef Zlomek  <zlomekj@suse.cz>
3100
3101         * var-tracking.c: Fix some comments.
3102         (frame_stack_adjust): New.
3103         (vt_stack_adjustments): Init stack_adjust of entry block to
3104         minus stack adjustment of function prologue.
3105         (adjust_stack_reference): Do not adjust if adjustment == 0.
3106         (compute_bb_dataflow): Use plus_constant instead of gen_rtx_PLUS.
3107         (emit_notes_in_bb): Likewise.
3108         (vt_add_function_parameters): Do not adjust locations of
3109         function arguments.
3110         (vt_initialize): Compute the stack adjustment of function
3111         prologue and offset the initial "location" of frame_base_decl
3112         from the stack pointer after prologue.
3113
3114 2004-07-04  Richard Henderson  <rth@redhat.com>
3115
3116         * function.c (struct assign_parm_data_all): New.
3117         (struct assign_parm_data_one): New.
3118         (assign_parms_initialize_all, assign_parms_augmented_arg_list,
3119         assign_parm_find_data_types, assign_parms_setup_varargs,
3120         assign_parm_find_entry_rtl, assign_parm_is_stack_parm,
3121         assign_parm_find_stack_rtl, assign_parm_adjust_entry_rtl,
3122         assign_parm_adjust_stack_rtl, assign_parm_setup_block_p,
3123         assign_parm_setup_block, assign_parm_setup_reg,
3124         assign_parm_setup_stack, assign_parms_unsplit_complex): Split from ...
3125         (assign_parms): ... here.
3126
3127 2004-07-04  Daniel Berlin  <dberlin@dberlin.org>
3128
3129         * tree-ssa-pre.c (bb_value_sets): phi_gen, tmp_gen, new_sets
3130         now are bitmap_set_t's.
3131         (bitmap_insert_into_set): No point in inserting the value if
3132         it's invariant.
3133         (bitmap_set_contains): New function.
3134         (bitmap_set_replace_value): Add comment on why we do it
3135         this way.
3136         (set_contains): Removed.
3137         (bitmap_set_subtract_from_value_set): New name of
3138         set_subtract now that it's arguments are two different
3139         types of sets.
3140         Update callers.
3141         (bitmap_find_leader): Change algorithm used.
3142         (find_or_generate_expression): Update use of functions for new
3143         bitmap sets.
3144         (create_expression_by_pieces): Ditto.
3145         (insert_aux): Ditto.
3146         (insert): Ditto.
3147         (add_to_sets): Ditto.
3148         (init_pre): Ditto.
3149         (execute_pre): Ditto.
3150         (compute_avail): Ditto.
3151         Also ignore virtual phis.
3152
3153 2004-07-04  Richard Sandiford  <rsandifo@redhat.com>
3154
3155         * combine.c (simplify_comparison): Fix comment typo.
3156
3157 2004-07-04  Eric Botcazou  <ebotcazou@libertysurf.fr>
3158
3159         * config/sparc/sparc.c (SIBCALL_SLOT_EMPTY_P): Rename
3160         into LEAF_SIBCALL_SLOT_RESERVED_P after negation.
3161         (eligible_for_sibcall_delay): Adjust use of SIBCALL_SLOT_EMPTY_P.
3162         (output_restore): Change parameter from 'insn' to 'pat'.
3163         (output_return): Adjust call to output_restore.
3164         (output_sibcall): Adjust use of SIBCALL_SLOT_EMPTY_P.
3165         Adjust call to output_restore.
3166
3167 2004-07-04  Neil Booth  <neil@duron.akihabara.co.uk>
3168
3169         * config/netbsd.h (NETBSD_OS_CPP_BUILTINS_COMMON): Define __unix__
3170         and assert system is bsd.
3171
3172 2004-07-04  Richard Sandiford  <rsandifo@redhat.com>
3173
3174         * config/mips/mips.h (MASK_DEBUG_C, TARGET_DEBUG_C_MODE): Delete.
3175         (TARGET_SWITCHES): Remove -mdebugc.
3176         * config/mips/mips.md (seq, sne, sgt, sge, slt, sle, sgtu, sgeu)
3177         (sltu, sleu): Remove TARGET_DEBUG_C_MODE handling.
3178         (seq_[sd]i, sne_[sd]i, sge_[sd]i, sle_[sd]i_reg, sgeu_[sd]i)
3179         (sle_[sd]i_reg): Delete.
3180
3181 2004-07-04  Steven Bosscher  <stevenb@suse.de>
3182
3183         * config/iq2000/iq2000.c (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE):
3184         Define.
3185         * config/iq2000/iq2000.md: Translate old pipeline description to an
3186         equivalent new one.
3187
3188 2004-07-04  Roger Sayle  <roger@eyesopen.com>
3189
3190         * tree-ssa-ccp.c (set_rhs): Change function to return a bool.
3191         Ensure the replacement rhs is valid gimple before performing
3192         the substitution.  Return false if these sanity checks fail.
3193         (fold_stmt): Only set changed to true, if set_rhs returns true.
3194         (execute_fold_all_builtins): Only call modify_stmt if set_rhs
3195         succeeds.
3196
3197 2004-07-04  Richard Henderson  <rth@redhat.com>
3198
3199         PR c/16348
3200         * c-typeck.c (c_finish_loop): Don't clear cond for cond_is_first loops.
3201
3202 2004-07-04  Mark Mitchell  <mark@codesourcery.com>
3203
3204         * configure.ac (ranlib_flags): New variable.
3205         * Makefile.in (RANLIB_FLAGS): New variable.
3206         (libbackend.a): Use it.
3207         * configure: Regenerated.
3208
3209 2004-07-04  Roger Sayle  <roger@eyesopen.com>
3210
3211         * ifcvt.c (noce_try_sign_mask): Call emit_store_flag to generate
3212         a "sign mask" instead of using ashr_optab directly.
3213
3214 2004-07-04  Neil Booth  <neil@duron.akihabara.co.uk>
3215
3216         * doc/cpp.texi: Don't document what we do for ill-formed expressions.
3217         * doc/cppopts.texi: Clarify processing of command-line defines.
3218
3219 2004-07-04  Gerald Pfeifer  <gerald@pfeifer.com>
3220
3221         * doc/contrib.texi (Contributors): Adjust link for GNU Classpath.
3222
3223 2004-07-04  Richard Henderson  <rth@redhat.com>
3224
3225         * rtl.def (ADDRESSOF): Remove.
3226         * alias.c (rtx_equal_for_memref_p): Don't handle addressof.
3227         (find_base_term, memrefs_conflict_p): Likewise.
3228         * cse.c (fixed_base_plus_p, find_best_addr: Likewise.
3229         (fold_rtx, cse_insn, set_live_p): Likewise.
3230         * dwarf2out.c (mem_loc_descriptor): Likewise.
3231         (add_location_or_const_value_attribute): Likewise.
3232         * emit-rtl.c (copy_insn_1): Likewise.
3233         * explow.c (memory_address): Likewise.
3234         * expmed.c (store_split_bit_field): Likewise.
3235         * expr.c (expand_expr_real_1): Likewise.
3236         * function.c (instantiate_decl
3237         (instantiate_virtual_regs_1, fix_lexical_addr): Likewise.
3238         * genrecog.c (preds, validate_pattern): Likewise.
3239         * integrate.c (copy_rtx_and_substitute): Likewise.
3240         * recog.c (general_operand, register_operand): Likewise.
3241         (memory_address_p): Likwise.
3242         * reload1.c (eliminate_regs, elimination_effects): Likewise.
3243         * rtl.c (copy_rtx): Likewise.
3244         * rtlanal.c (rtx_unstable_p, rtx_varies_p): Likewise.
3245         (rtx_addr_can_trap_p, nonzero_address_p, address_cost): Likewise.
3246         * rtlhooks.c (gen_lowpart_general): Likewise.
3247         * stmt.c (expand_asm_operands): Likewise.
3248         * web.c (entry_register, replace_ref, web_main): Likewise.
3249         * config/alpha/alpha.c (input_operand, alpha_legitimate_address_p,
3250         alpha_expand_block_move, alpha_expand_block_clear): Likewise.
3251         * config/arm/arm.c (thumb_rtx_costs): Likewise.
3252         * config/c4x/c4x.c (c4x_valid_operands): Likewise.
3253         * config/frv/frv.c (move_destination_operand, move_source_operand,
3254         condexec_dest_operand, condexec_source_operand,
3255         condexec_memory_operand): Likewise.
3256         * config/h8300/h8300.h (PREDICATE_CODES): Likewise.
3257         * config/ia64/ia64.c (general_xfmode_operand): Likewise.
3258         (destination_xfmode_operand): Likewise.
3259         * config/mips/mips.h (PREDICATE_CODES): Likewise.
3260         * config/mn10300/mn10300.c (mn10300_address_cost_1): Likewise.
3261         * config/s390/s390.c (general_s_operand): Likewise.
3262         * config/s390/s390.md (mov*): Likewise.
3263         * config/sparc/sparc.h (PREDICATE_CODES): Likewise.
3264
3265         * c-typeck.c (c_mark_addressable): Don't put_var_into_stack.
3266         * expr.c (expand_expr_real_1): Likewise.
3267         * stmt.c (expand_decl): Likewise.
3268         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
3269
3270         * function.c (struct fixup_replacement, struct insns_for_mem_entry,
3271         postponed_insns, put_var_into_stack, put_reg_into_stack,
3272         schedule_fixup_var_refs, fixup_var_refs, find_fixup_replacement,
3273         fixup_var_refs_insns, fixup_var_refs_insns_with_hash,
3274         fixup_var_refs_insn, fixup_var_refs_1, fixup_memory_subreg,
3275         walk_fixup_memory_subreg, fixup_stack_1, optimize_bit_field,
3276         gen_mem_addressof, flush_addressof, put_addressof_into_stack,
3277         purge_bitfield_addressof_replacements, purge_addressof_replacements,
3278         purge_addressof_1, insns_for_mem_hash, insns_for_mem_comp,
3279         struct insns_for_mem_walk_info, insns_for_mem_walk,
3280         compute_insns_for_mem, is_addressof, purge_addressof, setjmp_protect,
3281         setjmp_protect_args): Remove.
3282         (push_function_context_to): Don't handle var_refs_queue.
3283         (pop_function_context_from, free_after_compilation): Likewise.
3284         (instantiate_virtual_regs): Don't handle parm_reg_stack_loc.
3285         (assign_parms, allocate_struct_function): Likewise.
3286         (use_register_for_decl): New.
3287         (expand_function_end): Don't setjmp_protect.
3288         * function.h (struct emit_status): Update commentary.
3289         (struct function): Remove x_max_parm_reg, x_parm_reg_stack_loc.
3290         (max_parm_reg, parm_reg_stack_loc): Remove.
3291         * passes.c (DFI_addressof): Remove.
3292         (dump_file_info): Remove addressof.
3293         (rest_of_handle_addressof): Remove.
3294         (rest_of_compilation): Don't call it.
3295         * rtl.h (ADDRESSOF_REGNO, ADDRESSOF_DECL): Remove.
3296         * stmt.c (expand_decl): Use use_register_for_decl.
3297         * tree.h: Update decls.
3298         * web.c (mark_addressof): Remove.
3299         * doc/invoke.texi (-dF): Remove.
3300
3301 2004-07-03  Richard Henderson  <rth@redhat.com>
3302
3303         * config/ia64/ia64.c (spill_xfmode_operand): Use assign_stack_temp
3304         instead of gen_mem_addressof.
3305         * config/ia64/ia64.md (movxf): Use assign_stack_temp to handle
3306         TImode output register.
3307
3308 2004-07-03  Richard Henderson  <rth@redhat.com>
3309
3310         PR tree-optimization/16341
3311         * tree-sra.c (sra_walk_function): Increment to next stmt before
3312         processing the current stmt.
3313         (sra_insert_after): Always use BSI_SAME_STMT.
3314
3315 2004-07-03  Richard Henderson  <rth@redhat.com>
3316
3317         * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Don't fold
3318         fp plus with minus.
3319
3320 2004-07-03  Joseph S. Myers  <jsm@polyomino.org.uk>
3321
3322         * tree.c (type_hash_eq): Allow TYPE_MIN_VALUE which compares equal
3323         with tree_int_cst_equal.
3324
3325 2004-07-03  Andreas Schwab  <schwab@suse.de>
3326
3327         * config/ia64/ia64.md: Define new attribute "empty".
3328         (prologue_use, nop_x, insn_group_barrier): Set it.
3329
3330         * config/ia64/ia64.c (ia64_reorg): When looking for trailing call
3331         skip over "empty" insns.
3332
3333 2004-07-03  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3334
3335         * tree-inline.c (initialize_inlined_parameters): Pass proper function
3336         context to gimplify_body.
3337         (walk_tree): Don't walk into types twice.
3338         (walk_tree, case POINTER_TYPE): Deal with mutually recursive pointers.
3339
3340         * tree-sra.c (generate_element_init): Remove any useless conversions.
3341
3342         * gimplify.c (gimplify_conversion): Remove stripping useless
3343         conversions from here.
3344         (gimplify_expr): Put it here, in place of call to STRIP_MAIN_TYPE_NOPS.
3345         (gimplify_modify_expr_to_memcpy, gimplify_variable_sized_compare):
3346         Unshare before substituting PLACEHOLDER_EXPR.
3347         (gimplify_modify_expr_to_memset): Likewise.
3348         Pass address of TO to memset, not TO itself.
3349         (gimplify_init_constructor): Make copy of OBJECT so we have it each
3350         time we make an expression (to match a PLACEHOLDER_EXPR).
3351
3352         * tree-ssa.c (tree_ssa_useless_type_conversion): Also look at
3353         VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
3354         * tree-ssa-ccp.c (fold_stmt): Call just STRIP_USELESS_TYPE_CONVERSION.
3355         * tree-ssa-dom.c (local_fold): Likewise.
3356
3357         * langhooks-def.h (LANG_HOOKS_TYPE_MAX_SIZE): New langhook.
3358         * langhooks.h (strct lang_hooks): New field type_max_size.
3359         * function.c (assign_temp): Call it.
3360
3361 2004-07-03  Steven Bosscher  <stevenb@suse.de>
3362
3363         * config/sh/sh.c (sh_use_dfa_interface): Add TARGET_SH1.
3364         * config/sh/sh.md: Convert the SH1 pipeline description to
3365         a DFA model.
3366
3367 2004-07-02  Zack Weinberg  <zack@codesourcery.com>
3368
3369         * c-decl.c (struct c_binding): Remove contour field; add
3370         depth, invisible, nested fields.
3371         (B_IN_SCOPE, B_IN_CURRENT_SCOPE, B_IN_FILE_SCOPE)
3372         (B_IN_EXTERNAL_SCOPE): New convenience macros.
3373         (bind): Add invisible and nested arguments. Initialize
3374         new fields of struct c_binding; adjust loop scanning for
3375         insertion point.
3376         (free_binding_and_advance): Clear structure with memset.
3377         (pop_scope): Adjust to match.  Set DECL_CONTEXT on everything
3378         in file scope, even if it's in external scope too.
3379         (pushdecl): Adjust to match.  Create invisible file-scope
3380         declarations for block-scope forward declarations of static functions.
3381         (pushtag, warn_if_shadowing, pushdecl_top_level, implicitly_declare)
3382         (undeclared_variable, lookup_label, declare_label, define_label)
3383         (lookup_tag, lookup_name, lookup_name_in_scope, builtin_function)
3384         (c_make_fname_decl, store_parm_decls_newstyle, identifier_global_value)
3385         (store_parm_decls_oldstyle): Adjust to match.
3386         (diagnose_mismatched_decls): Correct handling of linkage clashes.
3387         (merge_decls): No need to copy C_DECL_IN_EXTERNAL_SCOPE.
3388
3389         * c-tree.h (C_DECL_IN_EXTERNAL_SCOPE): Delete.
3390         (C_DECL_DECLARED_BUILTIN, C_DECL_REGISTER): Slide down one.
3391
3392 2004-07-02  Richard Henderson  <rth@redhat.com>
3393
3394         * c-decl.c (grokdeclarator): Don't frob current_function_decl
3395         around variable_size.
3396         (set_decl_nonlocal): Remove.
3397         (store_parm_decls): Add stmts for pending sizes.
3398         * calls.c (calls_function, calls_function_1): Remove.
3399         (precompute_arguments): Don't call it.
3400         * cfgexpand.c (set_save_expr_context): Remove.
3401         (tree_expand_cfg): Don't call it.
3402         * dwarf2out.c (add_bound_info): Don't handle SAVE_EXPR.
3403         (dwarf2out_finish): Likewise.
3404         * expr.c (emit_block_move): Adjust addresses to BLKmode.
3405         (store_constructor): Don't pre-evaluate SAVE_EXPR.
3406         (safe_from_p): Don't queue SAVE_EXPRs.
3407         (expand_expr_real_1 <case SAVE_EXPR>): Rewrite to expect,
3408         or build plain VAR_DECLs.
3409         * fold-const.c (twoval_comparison_p): Don't look at SAVE_EXPR_RTL.
3410         (fold): Likewise.
3411         (fold_checksum_tree): Don't special-case SAVE_EXPR.
3412         * function.c (free_after_compilation): Don't clear x_save_expr_regs.
3413         (put_var_into_stack): Don't handle SAVE_EXPR.
3414         (gen_mem_addressof): Likewise.
3415         * function.h (struct function): Remove x_save_expr_regs.
3416         (save_expr_regs): Remove.
3417         * gengtype.c (adjust_field_tree_exp): Don't special-case SAVE_EXPR.
3418         * print-tree.c (print_node): Don't dump SAVE_EXPR_NOPLACEHOLDER.
3419         * stor-layout.c (variable_size): Don't set it.
3420         (force_type_save_exprs, force_type_save_exprs_1): Remove.
3421         * tree-inline.c (remap_save_expr): Remove fn argument.  Update
3422         all callers.  Don't set SAVE_EXPR_CONTEXT.
3423         * tree-inline.h (remap_save_expr): Update decl.
3424         * tree.c (save_expr): Update build size.
3425         (first_rtl_op): Don't handle SAVE_EXPR.
3426         (unsave_expr_1, contains_placeholder_p): Likewise.
3427         (decl_function_context): Likewise.
3428         * tree.def (SAVE_EXPR): Remove args 1 and 2.
3429         * tree.h (SAVE_EXPR_CONTEXT, SAVE_EXPR_RTL): Remove.
3430         (SAVE_EXPR_NOPLACEHOLDER, SAVE_EXPR_PERSISTENT_P): Remove.
3431
3432 2004-07-03  Joseph S. Myers  <jsm@polyomino.org.uk>
3433
3434         * doc/bugreport.texi, doc/configterms.texi, doc/contrib.texi,
3435         doc/contribute.texi, doc/cpp.texi, doc/cppinternals.texi,
3436         doc/extend.texi, doc/install.texi, doc/invoke.texi, doc/md.texi,
3437         doc/portability.texi, doc/tree-ssa.texi, doc/trouble.texi: Avoid
3438         some first-person references and patronizing comments.  Based on
3439         printed manual.
3440         * doc/invoke.texi: Don't reference fortran@gnu.org.
3441         * doc/trouble.texi (Warning when a non-void function value is
3442         ignored): Rewrite.  From Russ Allbery and Chris Devers.
3443
3444 2004-07-02  Daniel Berlin  <dberlin@dberlin.org)
3445
3446         * tree-ssa-pre.c (bitmap_set_t): New.
3447         (bb_value_sets): avail_out is now a bitmap_set_t.
3448         (bitmap_find_leader): New function.
3449         (bitmap_value_insert_into_set): Ditto.
3450         (bitmap_set_copy): Ditto.
3451         (bitmap_value_replace_in_set): Ditto.
3452         (bitmap_set_contains_value): Ditto.
3453         (bitmap_set_new): Ditto.
3454         (bitmap_set_pool): New pool.
3455         (find_or_generate_expression): Use bitmap_ functions on AVAIL sets.
3456         (insert_aux): Ditto.
3457         (add_to_sets): Ditto.
3458         (compute_avail): Ditto
3459         (eliminate): Ditto.
3460         (init_pre): Ditto.
3461         (fini_pre): Ditto.
3462         (execute_pre): Ditto.
3463
3464 2004-07-02  Roger Sayle  <roger@eyesopen.com>
3465
3466         * config/rs6000/rs6000.c (struct processor_costs): New structure
3467         used to hold instruction latencies/sizes for processor types.
3468         (rs6000_cost): New global variable pointing to current CPU's costs.
3469         (rs6000_override_options): Initialize rs6000_cost to point to the
3470         appropriate cost table based upon rs6000_cpu and optimize_size.
3471         (rs6000_rtx_costs): Use rs6000_cost to avoid hardcoding processor
3472         timings inline.
3473
3474 2004-07-02  Richard Henderson  <rth@redhat.com>
3475
3476         * expmed.c (make_tree): Don't use SET_DECL_RTL.
3477
3478 2004-07-02  Steven Bosscher  <stevenb@suse.de>
3479
3480         * tree-flow.h (bb_ann_d): Remove ephi_nodes field.
3481
3482 2004-07-01  Richard Henderson  <rth@redhat.com>
3483
3484         * config/alpha/alpha.c (struct machine_function): Add gp_save_rtx.
3485         (alpha_gp_save_rtx): Use assign_stack_local instead of
3486         gen_mem_addressof.
3487
3488 2004-07-01  Richard Henderson  <rth@redhat.com>
3489
3490         * config/alpha/alpha.c (struct alpha_rtx_cost_data): Add int_div.
3491         (alpha_rtx_cost_data): Update to match.
3492         (alpha_rtx_cost_size): New.
3493         (alpha_rtx_costs): Honor optimize_size.
3494
3495 2004-07-01  Richard Henderson  <rth@redhat.com>
3496
3497         * gimple-low.c (lower_function_body): Don't reset_block_changes here.
3498         * cfgexpand.c (tree_expand_cfg): Do it here.
3499         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): And here.
3500         * config/ia64/ia64.c (ia64_output_mi_thunk): And here.
3501         * config/mips/mips.c (mips_output_mi_thunk): And here.
3502         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): And here.
3503         * config/sh/sh.c (sh_output_mi_thunk): And here.
3504         * config/sparc/sparc.c (sparc_output_mi_thunk): And here.
3505
3506 2004-07-01  Richard Henderson  <rth@redhat.com>
3507
3508         * tree.def (RTL_EXPR): Remove.
3509         * c-typeck.c (lvalue_p): Don't handle it.
3510         * expr.c (safe_from_p): Likewise.
3511         (expand_expr_real_1): Likewise.
3512         * fold-const.c (non_lvalue, operand_equal_p, fold): Likewise.
3513         (fold_checksum_tree, tree_expr_nonnegative_p): Likewise.
3514         * gengtype.c (adjust_field_tree_exp): Likewise.
3515         * stmt.c (warn_if_unused_value): Likewise.
3516         * tree-gimple.c (recalculate_side_effects): Likewise.
3517         * tree-pretty-print.c (dump_generic_node): Likewise.
3518         * tree.c (make_node_stat, first_rtl_op, unsave_expr_1): Likewise.
3519         (unsafe_for_reeval, stabilize_reference, build1_stat): Likewise.
3520         * tree.h (RTL_EXPR_SEQUENCE, RTL_EXPR_RTL, RTL_EXPR_ALT_RTL): Remove.
3521
3522         * stmt.c (struct stmt_status): Remove x_last_expr_type,
3523         x_last_expr_value, x_last_expr_alt_rtl, x_expr_stmts_for_value.
3524         (last_expr_type, last_expr_value, last_expr_alt_rtl): Remove.
3525         (expand_expr_stmt): Merge with expand_expr_stmt_value.  Remove
3526         all the bits that tracked last_expr.
3527         (expand_end_bindings): Don't track last_expr.
3528         (expand_start_stmt_expr, expand_end_stmt_expr): Remove.
3529         (clear_last_expr): Remove.
3530         (expand_asm): Don't call it.
3531         (expand_asm_operands, expand_end_cond): Likewise.
3532         (expand_naked_return, expand_null_return_1): Likewise.
3533         * c-typeck.c (c_begin_compound_stmt): Likewise.
3534         * cfgexpand.c (expand_block): Use expand_expr_stmt.
3535         * expr.c (expand_expr_real_1): Likewise.
3536         * tree.h: Update prototypes.
3537
3538         * function.h (struct sequence_stack): Remove sequence_rtl_expr.
3539         (struct emit_status): Remove sequence_rtl_expr.
3540         (struct function): Remove x_rtl_expr_chain.
3541         (seq_rtl_expr, rtl_expr_chain): Remove.
3542         * function.c (struct temp_slot): Remove rtl_expr.
3543         (assign_stack_temp_for_type): Don't set it.
3544         (free_temp_slots, pop_temp_slots): Don't check it.
3545         (free_after_compilation): Don't clear x_rtl_expr_chain.
3546         (fixup_var_refs): Don't search it.
3547         (preserve_rtl_expr_result, free_temps_for_rtl_expr): Remove.
3548         * emit-rtl.c (start_sequence): Don't use sequence_rtl_expr
3549         or seq_rtl_expr.
3550         (push_topmost_sequence): Likewise.
3551         (end_sequence, init_emit): Likewise.
3552         (start_sequence_for_rtl_expr): Remove.
3553         * expmed.c (make_tree): Build a VAR_DECL instead of an RTL_EXPR.
3554         * rtl.h (preserve_rtl_expr_result): Remove.
3555
3556 2004-07-02  Kazu Hirata  <kazu@cs.umass.edu>
3557
3558         * ifcvt.c, modulo-sched.c, tree-alias-common.c, tree-sra.c,
3559         tree-ssa-copy.c, tree-ssa-dom.c, tree-ssa-pre.c: Fix comment
3560         typos.
3561
3562 2004-07-02  Aaron W. LaFramboise <aaronraolete36@aaronwl.com>
3563
3564         * gcc.c (STANDARD_STARTFILE_PREFIX_1): Define.
3565         (STANDARD_STARTFILE_PREFIX_2): Define.
3566         (standard_startfile_prefix_1): Initialize to
3567         STANDARD_STARTFILE_PREFIX_1.
3568         (standard_startfile_prefix_2): Initialize to
3569         STANDARD_STARTFILE_PREFIX_2.
3570         * config/i386/mingw32.h (MD_STARTFILE_PREFIX): Remove.
3571         (STANDARD_STARTFILE_PREFIX_1): Define.
3572         (STANDARD_STARTFILE_PREFIX_2): Define.
3573         * doc/tm.texi (STANDARD_STARTFILE_PREFIX_1): Document.
3574         (STANDARD_STARTFILE_PREFIX_2): Document.
3575
3576 2004-07-01  Richard Henderson  <rth@redhat.com>
3577
3578         * tree-sra.c (sra_walk_expr): Don't maybe_lookup_element_for_expr
3579         in order to disable scalarization.  Instead set a flag and wait
3580         for a candidate decl.
3581
3582 2004-07-01  Joseph S. Myers  <jsm@polyomino.org.uk>
3583
3584         * doc/cppinternals.texi, doc/install.texi, doc/invoke.texi,
3585         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi, doc/trouble.texi:
3586         Use terminology "testsuite" and "enumerated".
3587
3588 2004-07-01  Richard Henderson  <rth@redhat.com>
3589
3590         * dwarf2out.c (reg_save): Use INVALID_REGNUM.
3591         (dwarf2out_reg_save, dwarf2out_return_save): Likewise.
3592         (initial_return_save): Likewise.
3593         (flush_queued_reg_saves): Remap register numbers.
3594         (dwarf2out_return_reg): Likewise.
3595
3596 2004-07-01  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3597
3598         * gimplify.c (gimplify_one_sizepos): Don't do anything if any VAR_DECL.
3599
3600         * tree-pretty-print.c (dump_generic_node, case ARRAY_REF): Use
3601         access functions for lower bound and element size and only output
3602         if lower bound nonzero or element size not same as that of type.
3603         (dump_generic_node, case COMPONENT_REF): Use access func. for offset.
3604
3605 2004-07-01  Paolo Bonzini  <bonzini@gnu.org>
3606
3607         * c-pretty-print.c (pp_c_postfix_expression): Fix pasto.
3608
3609 2004-07-01  Per Bothner  <per@bothner.com>
3610
3611         * final.c (final):  Fix typo reported by Aaron W. LaFramboise.
3612
3613 2004-07-01  Jakub Jelinek  <jakub@redhat.com>
3614
3615         * expr.c (expand_assignment): Optimize bitfld += cst for 1 bit
3616         bitfields as well.  STRIP_NOPS from src operand and PLUS_EXPR's
3617         first operand.  Don't optimize if the bitfield is volatile.
3618
3619 2004-07-01  Paolo Bonzini  <bonzini@gnu.org>
3620
3621         * c-pretty-print.c (pp_c_postfix_expression): Handle
3622         floating-point comparison operators.
3623         (pp_c_expression): Pass floating-point comparison
3624         operators to pp_c_postfix_expression.
3625
3626 2004-07-01  Roger Sayle  <roger@eyesopen.com>
3627
3628         * simplify-rtx.c (simplify_binary_operation) <PLUS, MINUS>: Use
3629         rtx_cost instead of "had_mult" to determine whether the transformed
3630         expression is cheaper than the original.
3631
3632 2004-07-01  Jerry Quinn  <jlquinn@optonline.net>
3633
3634         * alias.c (get_alias_set, canon_rtx, get_addr,
3635         nonoverlapping_memrefs_p, nonlocal_referenced_p_1, memory_modified_1):
3636         Use MEM_P.
3637         * builtins.c (expand_builtin_prefetch, expand_builtin_profile_func,
3638         expand_builtin): Likewise.
3639         * calls.c (expand_call, emit_library_call_value_1, store_one_arg):
3640         Likewise.
3641         * combine.c (can_combine_p, combinable_i3pat, try_combine,
3642         find_split_point, combine_simplify_rtx, simplify_set, make_extraction,
3643         rtx_equal_for_field_assignment_p, gen_lowpart_for_combine,
3644         record_dead_and_set_regs_1, get_last_value_validate,
3645         mark_used_regs_combine, move_deaths, unmentioned_reg_p_1): Likewise.
3646         * cse.c (check_dependence, canon_hash, equiv_constant,
3647         gen_lowpart_if_possible, cse_insn, invalidate_from_clobbers,
3648         cse_around_loop, cse_check_loop_start, cse_set_around_loop,
3649         count_reg_usage): Likewise.
3650         * cselib.c (rtx_equal_for_cselib_p, add_mem_for_addr, cselib_lookup,
3651         cselib_invalidate_mem, cselib_invalidate_rtx, cselib_record_set,
3652         cselib_record_sets): Likewise.
3653         * dbxout.c (PARM_PASSED_IN_MEMORY, dbxout_symbol,
3654         dbxout_symbol_location, dbxout_parms, dbxout_reg_parms): Likewise.
3655         * ddg.c (mark_mem_use, mark_mem_store, rtx_mem_access_p): Likewise.
3656         * df.c (df_uses_record): Likewise.
3657         * dojump (do_jump): Likewise.
3658         * dwarf2out.c (stack_adjust_offset, mem_loc_descriptor,
3659         loc_descriptor_from_tree, rtl_for_decl_location, add_bound_info,
3660         decl_start_label): Likewise.
3661         * emit-rtl.c (gen_complex_constant_part, gen_highpart,
3662         operand_subword, change_address_1, make_safe_from): Likewise.
3663         * explow.c (break_out_memory_refs, copy_all_regs, validize_mem,
3664         stabilize, force_not_mem): Likewise.
3665         * expmed.c (store_bit_field, store_split_bit_field, extract_bit_field,
3666         expand_mult_const, expand_divmod, emit_store_flag): Likewise.
3667         * expr.c (convert_move, convert_modes, emit_block_move,
3668         emit_group_load, emit_group_store, clear_storage, emit_move_insn,
3669         emit_move_insn_1, expand_assignment, store_expr,
3670         store_constructor_field, store_constructor, store_field,
3671         force_operand, safe_from_p, expand_expr_real_1, expand_increment):
3672         Likewise.
3673         * final.c (cleanup_subreg_operands, alter_subreg,
3674         get_mem_expr_from_op): Likewise.
3675         * flow.c (notice_stack_pointer_modification_1,
3676         init_propagate_block_info, insn_dead_p, mark_set_1, mark_used_regs):
3677         Likewise.
3678         * function.c (mark_temp_addr_taken, preserve_temp_slots,
3679         preserve_rtl_expr_result, put_var_into_stack, fixup_var_refs_1,
3680         optimize_bit_field, flush_addressof, purge_addressof_1,
3681         instantiate_decl, instantiate_virtual_regs_1, assign_parms,
3682         setjmp_protect, setjmp_protect_args, fix_lexical_addr,
3683         keep_stack_depressed): Likewise.
3684         * ifcvt.c (noce_try_cmove_arith, noce_try_abs, noce_operand_ok,
3685         noce_process_if_block, find_memory): Likewise.
3686         * integrate.c (subst_constants, allocate_initial_values): Likewise.
3687         * local-alloc.c (validate_equiv_mem_from_store, memref_referenced_p,
3688         update_equiv_regs): Likewise.
3689         * loop.c (scan_loop, prescan_loop, note_addr_stored, check_store,
3690         maybe_eliminate_biv_1, find_mem_in_note_1): Likewise.
3691         * optabs.c (expand_abs, emit_unop_insn): Likewise.
3692         * passes.c (rest_of_handle_final): Likewise.
3693         * postreload.c (reload_cse_simplify_set, reload_cse_simplify_operands,
3694         move2add_note_store): Likewise.
3695         * ra-build.c (detect_remat_webs): Likewise.
3696         * ra-debug.c (dump_static_insn_cost): Likewise.
3697         * ra-rewrite.c (slots_overlap_p, insert_stores): Likewise.
3698         * recog.c (validate_change, apply_change_group, cancel_changes,
3699         validate_replace_rtx_1, general_operand, register_operand,
3700         nonmemory_operand, push_operand, pop_operand, memory_operand,
3701         indirect_operand, asm_operand_ok, offsettable_memref_p,
3702         offsettable_nonstrict_memref_p, constrain_operands,
3703         store_data_bypass_p): Likewise.
3704         * reg-stack.c (subst_stack_regs_pat): Likewise.
3705         * regclass.c (record_operand_costs, scan_one_insn, record_reg_classes,
3706         copy_cost, reg_scan_mark_refs): Likewise.
3707         * regmove.c (optimize_reg_copy_3, stack_memref_p,
3708         combine_stack_adjustments_for_block): Likewise.
3709         * regrename.c (copyprop_hardreg_forward_1): Likewise.
3710         * reload.c (can_reload_into, push_reload, decompose, immune_p,
3711         find_reloads, find_reloads_address, find_reloads_address_1,
3712         reg_overlap_mentioned_for_reload_p, refers_to_mem_for_reload_p,
3713         find_equiv_reg): Likewise.
3714         * reload1.c (reload, eliminate_regs, eliminate_regs_in_insn,
3715         reload_as_needed, choose_reload_regs, emit_input_reload_insns,
3716         do_input_reload, emit_reload_insns, gen_reload, delete_output_reload,
3717         delete_address_reloads): Likewise.
3718         * resource.c (mark_referenced_resources): Likewise.
3719         * rtlanal.c (get_jump_table_offset, count_occurrences,
3720         reg_referenced_p, reg_set_p, set_of_1, set_noop_p,
3721         reg_overlap_mentioned_p, note_uses, replace_regs, nonzero_bits1,
3722         num_sign_bit_copies1): Likewise.
3723         * rtlhooks.c (gen_lowpart_general): Likewise.
3724         * sched-deps.c (sched_analyze_1, sched_analyze_2): Likewise.
3725         * sdbout.c (PARM_PASSED_IN_MEMORY, sdbout_symbol,
3726         sdbout_toplevel_data, sdbout_parms, sdbout_reg_parms,
3727         sdbout_global_decl): Likewise.
3728         * simplify-rtx.c (simplify_subreg): Likewise.
3729         * stmt.c (expand_asm_operands, expand_expr_stmt_value, expand_decl,
3730         expand_anon_union_decl, expand_end_case_type): Likewise.
3731         * unroll.c (calculate_giv_inc): Likewise.
3732         * var-tracking.c (stack_adjust_offset_pre_post,
3733         bb_stack_adjust_offset, track_expr_p, count_uses, add_uses,
3734         add_stores, compute_bb_dataflow, vt_get_decl_and_offset,
3735         vt_add_function_parameters): Likewise.
3736         * varasm.c (make_var_volatile, notice_global_symbol,
3737         assemble_external, decode_addr_const, mark_weak,
3738         default_encode_section_info): Likewise.
3739
3740 2004-07-01  Steven Bosscher  <stevenb@suse.de>
3741
3742         * stmt.c (check_seenlabel): Remove.
3743         (pushcase, pushcase_range, expand_end_case_type): Don't call it.
3744
3745 2004-07-01  Richard Henderson  <rth@redhat.com>
3746
3747         * function.h (struct function): Remove x_function_call_count.
3748         (function_call_count): Remove.
3749         * calls.c (expand_call): Don't set it.
3750         * integrate.c (copy_rtx_and_substitute): Likewise.
3751
3752         * function.h (struct function): Remove x_cleanup_label.
3753         (cleanup_label): Remove.
3754         * stmt.c (expand_value_return): Don't use it.
3755         * function.c (free_after_compilation): Don't set it.
3756         (expand_function_start): Likewise.  Remove parms_have_cleanups arg.
3757         * cfgexpand.c (tree_expand_cfg): Update call.
3758         * tree.h (expand_function_start): Update decl.
3759
3760 2004-07-01  Joseph S. Myers  <jsm@polyomino.org.uk>
3761
3762         PR c/1027
3763         * c-lang.c (c_initialize_diagnostics): Move from here ...
3764         * c-objc-common.c: ... to here.  Include "c-pretty-print.h".
3765         (c_tree_printer): Use pretty-printer to format %T.
3766         * c-pretty-print.c (pp_c_specifier_qualifier_list): Include space
3767         before '*' if not C++.
3768         (pp_c_direct_abstract_declarator): Don't try to print array upper
3769         bound for flexible array members.
3770         * c-tree.h: Include "diagnostic.h".
3771         (c_initialize_diagnostics): Declare.
3772         * objc/objc-lang.c (LANG_HOOKS_INITIALIZE_DIAGNOSTICS): Define.
3773         * c-format.c (format_type_warning): New function.  Improve
3774         diagnostics for incorrect format argument types.
3775         (check_format_types): Use it.  Add two parameters.  Use the
3776         TYPE_MAIN_VARIANT of wanted_type.
3777         (check_format_info_main): Pass new parameters to
3778         check_format_types.
3779         (struct format_wanted_type): Update comment.
3780
3781 2004-07-01  Nick Clifton  <nickc@redhat.com>
3782
3783         * target.h (struct gcc_target): Add new field to struct cxx:
3784         import_export_class.
3785         * target-def.h (TARGET_CXX): Initialise the new field.
3786         (TARGET_CXX_IMPORT_EXPORT_CLASS): Provide a default value for
3787         the new field.
3788         * doc/tm.texi: Document the new target hook.
3789
3790 2004-07-01  Paolo Bonzini  <bonzini@gnu.org>
3791
3792         * builtins.c (fold_builtin_classify): Fix typo.
3793
3794 2004-07-01  Richard Henderson  <rth@redhat.com>
3795
3796         * function.c (identify_blocks, identify_blocks_1): Remove.
3797         * function.h (identify_blocks): Remove.
3798         * rtl.h (NOTE_INSN_BLOCK_BEG): Update comment.
3799
3800 2004-07-01  Paolo Bonzini  <bonzini@gnu.org>
3801
3802         * builtins.c (fold_builtin_classify): New.
3803         (fold_builtin_unordered_cmp): Fix commentary.
3804         (fold_builtin): Use it.
3805         * builtins.def: Define builtins for isnan,
3806         isnanf, isnanl, finite, finitef, finitel,
3807         isinf, isinff, isinfl.
3808
3809 2004-07-01  Richard Henderson  <rth@redhat.com>
3810
3811         * function.h (struct function): Remove dont_emit_block_notes.
3812         * gimple-low.c (lower_function_body): Don't set it.
3813         * cfgexpand.c (expand_block): Don't check it.
3814         * cfglayout.c (insn_locators_initialize): Likewise.
3815         * expr.c (expand_expr_real, expand_expr_real_1): Likewise.
3816         * passes.c (rest_of_compilation): Likewise.
3817         * stmt.c (expand_start_bindings_and_block): Likewise.
3818         (expand_end_bindings): Likewise.
3819
3820 2004-07-01  Richard Henderson  <rth@redhat.com>
3821
3822         * cgraph.h (cgraph_build_static_cdtor): Declare.
3823         * cgraphunit.c (cgraph_build_static_cdtor): New.
3824         * c-objc-common.c (build_cdtor): Use it.
3825         * coverage.c (create_coverage): Likewise.
3826         * libfuncs.h (LTI_gcov_init, gcov_init_libfunc): Remove.
3827         * optabs.c (init_optabs): Don't set gcov_init_libfunc.
3828
3829 See ChangeLog.11 for earlier changes.