OSDN Git Service

* builtins.c (ind_gimplify_va_arg_expr): New.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2004-07-08  Richard Henderson  <rth@redhat.com>
2
3         * builtins.c (ind_gimplify_va_arg_expr): New.
4         * tree.h (ind_gimplify_va_arg_expr): Declare.
5         * config/arc/arc.c (arc_gimplify_va_arg_expr): Use it.
6
7 2004-07-08  Jan Beulich  <jbeulich@novell.com>
8
9         * expmed.c (extract_bit_field): Correct condition to use vec_extract
10         patterns also on vector elements other than the first one.
11         * config/i386/i386.md (vec_extractv2df, vec_extractv4sf): Add missing
12         break statements.
13
14 2004-07-08  Geoffrey Keating  <geoffk@apple.com>
15
16         * config/rs6000/darwin-ldouble.c: Correct reference
17         to the Linnainmaa paper.
18
19 2004-07-08  Richard Henderson  <rth@redhat.com>
20
21         * config/arc/arc-protos.h (arc_va_arg): Remove.
22         * config/arc/arc.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
23         (arc_gimplify_va_arg_expr): Rewrite from arc_va_arg.
24         * config/arc/arc.h (EXPAND_BUILTIN_VA_ARG): Remove.
25
26         * config/c4x/c4x-protos.h (c4x_va_arg): Remove.
27         * config/c4x/c4x.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
28         (c4x_gimplify_va_arg_expr): Rewrite from c4x_va_arg.
29         * config/c4x/c4x.h (EXPAND_BUILTIN_VA_ARG): Remove.
30
31 2004-07-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32
33         * pa.md (prefetch_32, prefetch_64): Simplify constraint checks.
34
35 2004-07-08  Zack Weinberg  <zack@codesourcery.com>
36
37         * c-decl.c (static_ctors, static_dtors): Make static.
38         (pop_file_scope): Call c_common_write_pch and
39         cgraph_finalize_compilation_unit here.
40         (build_cdtor): Moved here from c-objc-common.c; simplify.
41         (c_write_global_declarations_1): Clarify comment.
42         (c_write_global_declarations): Close the external scope before
43         doing anything else.  Call build_cdtor, cgraph_optimize, and
44         mudflap_finish_file here.
45         * c-lang.c (finish_file): Don't call c_objc_common_finish_file.
46         Clarify comment.
47         * c-objc-common.c: No need to include cgraph.h.
48         (build_cdtor): Moved to c-decl.c.
49         (c_objc_common_finish_file): Delete.
50         * c-tree.h: Update to match.
51         * objc/objc-act.c (finish_file): Don't call c_objc_common_finish_file.
52         (generate_static_references): Set TREE_USED before calling finish_decl.
53         Eliminate unnecessary dummy declaration.  Call rest_of_decl_compilation
54         on the static_instances_decl.
55
56 2004-07-08  Zack Weinberg  <zack@codesourcery.com>
57
58         * c-decl.c (pop_scope): Do not set DECL_CONTEXT on file-scope
59         decls when there is only one input translation unit.
60         * langhooks.c (lhd_set_decl_assembler_name): Partially revert
61         change of 2004-07-05; do not treat declarations with
62         DECL_CONTEXT a TRANSLATION_UNIT_DECL specially.
63         * opts.c (cur_in_fname): Delete.
64         * opts.h: Likewise.
65         * tree.c: Revert changes of 2004-07-05; no special treatment
66         for TRANSLATION_UNIT_DECLs.
67         * Makefile.in (tree.o): Update dependencies.
68
69 2004-07-08  Roger Sayle  <roger@eyesopen.com>
70
71         * builtins.c (fold_builtin_strcpy): Merge functionality from
72         simplify_builtin_strcpy.  Add additional len argument.  No longer
73         static.  Remove function prototype.
74         (fold_builtin_strncpy): Likewise integrate functionality from
75         simplify_builtin_strncpy.  Add additional slen argument.  No
76         longer static.  Remove function prototype.
77         (simplify_builtin_strcy, simplify_builtin_strncpy): Delete.
78         (simplify_builtin_fputs): Rename to fold_builtin_fputs.  Change
79         types of "ignore" and "unlocked" parameters to bool.
80         (fold_builtin_1):  Add additional ignore argument.  Call renamed
81         fold_builtin_fputs to simplify GCC "fputs" and "fputs_unlocked"
82         builtins.  Update arguments to fold_builtin_strncpy and
83         fold_builtin_strcpy.  Add function prototype.
84         (fold_builtin): Add additional Boolean ignore argument to pass
85         to fold_builtin_1.
86         (simplify_builtin): Call fold_builtin_fputs, fold_builtin_strcpy
87         and fold_builtin_strncpy instead of simplify_builtin_fputs,
88         simplify_builtin_strcpy and simplify_builtin_strncpy respectively.
89
90         * expr.h (simplify_builtin_fputs, simplify_builtin_strcpy,
91         simplify_builtin_strncpy): Delete function prototypes.
92         * tree.h (fold_builtin_fputs, fold_builtin_strcpy,
93         fold_builtin_strncpy): Add function prototypes here.
94         (fold_builtin): Update function prototype with new "bool ignore".
95
96         * tree-ssa-ccp.c (ccp_fold): Update call to fold_builtin.
97         (ccp_fold_builtin):  Update call to fold_builtin.  Call
98         fold_builtin_fputs, fold_builtin_strcpy and fold_builtin_strncpy
99         instead of simplify_builtin_fputs, simplify_builtin_strcpy and
100         simplify_builtin_strncpy respectively.
101         * fold-const.c (fold): Update call to fold_builtin.
102
103 2004-07-08  Alexandre Oliva  <aoliva@redhat.com>
104
105         * builtins.c (expand_builtin_stpcpy): Un-simplify decay of stpcpy
106         to strcpy.
107
108         * expr.h (FUNCTION_ARG_PARTIAL_NREGS): Default to 0.
109         (FUNCTION_ARG_PASS_BY_REFERENCE): Likewise.
110         (FUNCTION_ARG_CALLEE_COPIES): Likewise.
111         * calls.c: Remove ifdefs of macros above.
112         * functions.c: Likewise.
113         * expr.c: Likewise.
114
115 2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
116
117         * config/sparc/sparc.md (UNSPECV_GOTO_V9): Delete.
118         (arch attribute): Delete.
119         (current_function_calls_alloca attribute): Rename into calls_alloca.
120         (calls_eh_return): New attribute.
121         (leaf_function): Likewise.
122         (length attribute): Fix formula for sibcalls.
123         (return insn): Correctly compute the 'length' attribute.
124         (do_builtin_setjmp_setup): Adjust use of current_function_calls_alloca.
125
126 2004-07-08  Richard Henderson  <rth@redhat.com>
127
128         * tree-cfg.c (make_exit_edges): Use get_call_expr_in.
129         (remove_useless_stmts_1, is_ctrl_altering_stmt): Likewise.
130         (tree_block_ends_with_call_p, need_fake_edge_p): Likewise.
131         * tree-eh.c (lower_eh_constructs_1): Likewise.
132         * tree-sra.c (sra_walk_modify_expr): Likewise.
133         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
134         (eliminate_unnecessary_stmts): Likewise.
135         * tree-ssa-dse.c (dse_optimize_stmt): Likewise.
136         * tree-tailcall.c (optimize_tail_call): Likewise.
137         * tree-ssa-ccp.c (get_rhs, set_rhs): Reorg to use switch.
138
139 2004-07-08  Paolo Bonzini  <bonzini@gnu.org>
140             Jakub Jelinek  <jakub@redhat.com>
141
142         * config/i386/i386.c (override_options): Enable
143         SSE prefetches with -mtune, as long as we are
144         compiling for i686 or higher.  All i686 processors
145         accept SSE prefetches as NOPS, some i586's don't.
146
147 2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
148
149         PR target/10567
150         * config/sparc/sparc.md (update_return): Honor flag_delayed_branch.
151
152 2004-07-08  Diego Novillo  <dnovillo@redhat.com>
153
154         * tree-ssa-operands.c (get_asm_expr_operands): Fix thinkos in
155         the handling of clobbering ASM_EXPRs.
156
157 2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
158
159         PR target/16430
160         * config/sparc/sparc.c (function_value): In 64-bit mode,
161         return the aggregates larger than 16 bytes like unions.
162
163 2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
164
165         PR target/16199
166         * config/sparc/sparc.c (sparc_emit_set_symbolic_const64): When
167         'temp' is zero, generate new pseudos as needed and emit the
168         sequence of insns in single-assignment form.  Resync comments
169         with code.
170         (sparc_emit_set_const64): Pass zero as 'temp' argument to above
171         function before reload.
172
173 2004-07-08  Nathan Sidwell  <nathan@codesourcery.com>
174
175         * vec.c (vec_assert_fail): Remove duplicate 'function'.
176
177         * vec.c (vec_p_reserve, vec_o_reserve): Allocation is signed.
178
179         * vec.h (VEC_alloc, VEC_embedded_size, VEC_embedded_init):
180         Allocation is signed.
181         (VEC_reserve): Return flag, allocation is signed.
182
183 2004-07-08  Richard Henderson  <rth@redhat.com>
184
185         * tree-ssa-ccp.c (fold_stmt): Get type directly from
186         OBJ_TYPE_REF_OBJECT.
187
188 2004-07-08  Joseph S. Myers  <jsm@polyomino.org.uk>
189             Neil Booth  <neil@daikokuya.co.uk>
190
191         PR c/2511
192         PR c/3325
193         * c-decl.c (finish_struct): Ensure bit-fields are given the
194         correct type.
195         * c-common.c (c_common_signed_or_unsigned_type): For C, require
196         the precision to match as well as the mode.
197         * expr.c (reduce_to_bit_field_precision): New function.
198         (expand_expr_real_1): Reduce expressions of bit-field type to
199         proper precision.
200         * langhooks.h (reduce_bit_field_operations): New hook.
201         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
202         Define.
203         * c-lang.c, objc/objc-lang.c
204         (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define.
205         * objc/objc-act.c (check_ivars): Convert types to bit-field types
206         before checking.
207         * tree.c (build_nonstandard_integer_type): New function.
208         * tree.h (build_nonstandard_integer_type): New prototype.
209         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Don't treat
210         conversions between integer and boolean types as useless.
211
212 2004-07-08  Paolo Bonzini  <bonzini@gnu.org>
213
214         * c-common.c (c_common_nodes_and_builtins): Do not
215         create __builtin_ptrdiff_t and __builtin_size_t.
216
217 2004-07-08  Andrew Pinski  <apinski@apple.com>
218
219         * Makefile.in (libbackend.o): Add -combine to the gcc
220         command line.
221
222 2004-07-08  Nick Clifton  <nickc@redhat.com>
223
224         * config/stormy16/t-stormy16 (TARGET_LIBGCC2_CFLAGS): Define.
225         Set to -Os.
226
227 2004-07-08  Richard Henderson  <rth@redhat.com>
228
229         * except.c (expand_eh_region_start, expand_eh_region_end,
230         expand_eh_handler, expand_eh_region_end_cleanup,
231         expand_start_all_catch, expand_start_catch, expand_end_catch,
232         expand_end_all_catch, expand_eh_region_end_allowed,
233         expand_eh_region_end_must_not_throw, expand_eh_region_end_throw,
234         expand_eh_region_end_fixup): Remove.
235         * stmt.c (struct nesting): Remove stack_level, innermost_stack_block,
236         cleanups, outer_cleanups, label_chain, exception_region.
237         (struct goto_fixup): Remove stack_level, cleanup_list_list.
238         (struct label_chain): Remove.
239         (struct stmt_status): Remove x_stack_block_stack.
240         (stack_block_stack, expand_goto_internal, expand_fixup, expand_fixups,
241         fixup_gotos, save_stack_pointer, expand_decl_cleanup,
242         expand_decl_cleanup_eh, expand_cleanups, start_cleanup_deferral,
243         end_cleanup_deferral, last_cleanup_this_contour,
244         containing_blocks_have_cleanups_or_stack_level,
245         any_pending_cleanups): Remove.
246         (expand_null_return_1): Take no arguments.
247         (expand_label, expand_naked_return, expand_return,
248         expand_start_bindings_and_block, expand_end_bindings, expand_decl,
249         expand_anon_union_decl, expand_start_case, pushcase, pushcase_range,
250         expand_end_case_type): Don't use any of them.
251         * calls.c (expand_call): Likewise.
252         * dojump.c (do_jump): Likewise.
253         * function.c (expand_function_end): Likewise.
254         * expr.c (store_expr, expand_expr_real_1): Likewise.
255         (safe_from_p): Don't handle WITH_CLEANUP_EXPR, CLEANUP_POINT_EXPR.
256         (expand_expr_real_1): Don't handle WITH_CLEANUP_EXPR,
257         CLEANUP_POINT_EXPR, TARGET_EXPR, TRY_CATCH_EXPR, CATCH_EXPR,
258         EH_FILTER_EXPR, TRY_FINALLY_EXPR, GOTO_SUBROUTINE_EXPR.
259         * fold-const.c (fold_checksum_tree): Use first_rtl_op.
260         * gengtype.c (adjust_field_tree_exp): Remove rtl op handling.
261         * gimplify.c (gimplify_cleanup_point_expr): Renumber operands
262         for WITH_CLEANUP_EXPR.
263         (gimple_push_cleanup): Likewise.
264         * integrate.c (copy_decl_for_inlining): Don't DECL_TOO_LATE.
265         * print-tree.c (print_node): Likewise.
266         * tree-pretty-print.c (dump_generic_node): Remove GOTO_SUBROUTINE_EXPR.
267         * tree.c (first_rtl_op): Always just TREE_CODE_LENGTH.
268         (has_cleanups): Remove GOTO_SUBROUTINE_EXPR.
269         * tree.def (WITH_CLEANUP_EXPR): Remove op1 and op2.
270         (GOTO_SUBROUTINE_EXPR): Remove.
271         * tree.h (WITH_CLEANUP_EXPR_RTL): Remove.
272         (DECL_TOO_LATE): Remove.
273         * except.h, tree.h: Update decls.
274
275 2004-07-08  Paolo Bonzini  <bonzini@gnu.org>
276
277         * explow.c (optimize_save_area_alloca): Do not accept parameters.
278         * passes.c (rest_of_handle_final): Handle symout.
279         (rest_of_handle_new_regalloc, rest_of_handle_old_regalloc):
280         Push timevar here.
281         (rest_of_handle_sched): Break out SMS.  Remove ifs for
282         flag_schedule_insns and flag_modulo_sched.
283         (rest_of_handle_addressof, rest_of_handle_cse2): Garbage
284         collect at the end.
285         (rest_of_handle_gcse2): Put under timevar TV_RELOAD_CSE_REGS.
286         (rest_of_handle_partition_blocks, rest_of_handle_sms,
287         rest_of_handle_if_after_reload, rest_of_handle_peephole2,
288         rest_of_handle_mode_switching, rest_of_handle_jump,
289         rest_of_handle_guess_branch_prob, rest_of_handle_eh,
290         rest_of_handle_jump2, rest_of_handle_postreload,
291         rest_of_handle_flow2, rest_of_clean_state,
292         rest_of_handle_shorten_branches,
293         rest_of_handle_prologue_epilogue,
294         rest_of_handle_branch_target_load_optimize): New.
295         (rest_of_compilation): Call the above.  Remove ggc_collect
296         calls moved to rest_of_handle_*.
297         * rtl.h (optimize_save_area_alloca): Do not accept parameters.
298
299         * dwarf2out.c (dwarf2out_begin_prologue): Use TREE_NOTHROW.
300         * except.c (set_nothrow_function_flags): Set TREE_NOTHROW.
301         * except.h (set_nothrow_function_flags): Update comment.
302         * function.c (current_function_nothrow): Remove.
303         * output.h (current_function_nothrow): Remove.
304         * passes.c (rest_of_compilation): Do not set TREE_NOTHROW.
305         * config/arm/arm.c (arm_compute_func_type): Use TREE_NOTHROW.
306
307 2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
308
309         PR bootstrap/16326
310         * reorg.c: Revert 2004-06-30 change.
311         (find_end_label): If HAVE_epilogue and !HAVE_return,
312         return 0 instead of creating a label at the end of the insn chain.
313         (optimize_skip): Account for the failure mode of find_end_label.
314         (fill_simple_delay_slots): Likewise.
315         (fill_slots_from_thread): Likewise.
316         (relax_delay_slots): Likewise.
317
318 2004-07-08  Diego Novillo  <dnovillo@redhat.com>
319
320         * tree-flow.h (addressable_vars): Declare.
321         * tree-ssa-alias.c (addressable_vars): Define.
322         (setup_pointers_and_addressables): Add addressable variables
323         to addressable_vars.
324         * tree-ssa-operands.c (get_stmt_operands): Move
325         handling of ASM_EXPRs ...
326         (get_asm_expr_operands): ... here.
327         When the ASM_EXPR clobbers memory, also clobber addressable
328         variables.
329         * tree-ssa.c (init_tree_ssa): Initialize addressable_vars.
330         (delete_tree_ssa): Reset addressable_vars.
331
332 2004-07-07  Jan Beulich  <jbeulich@novell.com>
333             Richard Henderson  <rth@redhat.com>
334
335         * varasm.c (assemble_variable): Use assemble_zeros for
336         zero-initialized variables.
337         (categorize_decl_for_section): Honor flag_zero_initialized_in_bss
338         for SECCAT_BSS and SECCAT_TBSS.
339
340 2004-07-07  Jan Beulich  <jbeulich@novell.com>
341
342         * varasm.c (asm_output_bss): Don't declare unless BSS_SECTION_ASM_OP.
343
344         * expmed.c (emit_store_flag): Also special-case double-word
345         (in-)equality comparison against -1.
346
347         * config/i386/i386.c (ix86_gimplify_va_arg): Don't need temporary for
348         passing arguments the containers for which are registers.
349
350         * calls.c (emit_library_call_value_1): Use mode of function parameter
351         rather than that of argument since constants have none.
352
353 2004-07-08  Alexandre Oliva  <aoliva@redhat.com>
354
355         Introduce H8SX support.
356         * expr.c (expand_strcpy): Renamed and moved to...
357         * builtins.c (expand_movstr): ... here.  Tweak.
358         (expand_builtin_strcpy): Adjust.  Use movstr if len can't be
359         computed or has side effects.
360         (expand_builtin_stpcpy): Likewise.  Use strcpy if return value is
361         unused, or if mempcpy fails.  Adjust the return value in the
362         latter case.  Use movstr if everything else fails.
363         * doc/md.texi (movstr): Document.
364         (movmemM, clrmemM): Fix explanation of memory block operands.
365         * config/h8300/h8300.md (stpcpy): Renamed to...
366         (movstr): ... this.  Adjust.
367         2004-07-07  Alexandre Oliva  <aoliva@redhat.com>
368         * config/h8300/h8300.md: Rename movstr*, except for movstrict*, to
369         movmem* and clrstr* to clrmem*.
370         2004-06-27  Alexandre Oliva  <aoliva@redhat.com>
371         * config/h8300/h8300.c (h8300_reg_class_from_letter): Map 'D' to
372         GENERAL_REGS, always.
373         (h8300_swap_into_er6, h8300_swap_into_er6): Handle the case of
374         getting the stack pointer as addr.
375         * config/h8300/h8300.h (PREDICATE_CODES): Remove constant rtxes
376         from general_operand_dst.
377         * config/h8300/h8300.md (movmd_internal_normal): New, normal-mode
378         variant of...
379         (movmd_internal): ... this.  Add modes to operands.  Disparage `D'
380         instead of requiring it to match only before reload.
381         (stpcpy_internal_normal): New, normal-mode variant of...
382         (stpcpy_internal): ... this.  Add modes to operands.  Disparage
383         `D' instead of requiring it to match only before reload.
384         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Add
385         mode argument.
386         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Pass it to...
387         * config/h8300/h8300.c (h8300_legitimate_address_p): Pass it to
388         h8300_get_index.
389         * config/h8300/h8300.md (attr type): Add call.
390         (attr can_delay): If type is call, set it no.
391         (call, call_value): Set type to call.
392         2004-06-21  Alexandre Oliva  <aoliva@redhat.com>
393         * config/h8300/h8300.md (logicalhi3_sn, logicalsi3_sn): New.
394         2004-06-16  Alexandre Oliva  <aoliva@redhat.com>
395         * tree.c (get_narrower): Don't narrow integral types into
396         non-integral types.
397         * config/h8300/h8300.c (h8300_expand_epilogue): Initialize
398         frame_size *before* the first use.
399         * config/h8300/h8300.md (movstrictqi): Reintroduce post-increment
400         on input.
401         (peephole2): Don't widen instructions that push SP.  Move
402         decrement of SP to the end of all stm-generating peepholes.
403         2003-07-24  Richard Sandiford  <rsandifo@redhat.com>
404         * config/h8300/h8300.md (insv): Prefer to use AND to clear a bitfield
405         and OR to set it to all ones.
406         2003-07-24  Richard Sandiford  <rsandifo@redhat.com>
407         * config/h8300/h8300.md (can_delay): Default to "no" for bit branches.
408         (call, call_value): Set can_delay to "no".
409         2003-07-22  Richard Sandiford  <rsandifo@redhat.com>
410         * config/h8300/h8300.md (extzv): Make subreg check more robust.
411         2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
412         * config/h8300/h8300.md (*brabit): Remove.
413         * config/h8300/h8300.md (*brabc, *brabs): Remove mode from
414         zero_extract.  Use bit_memory_operand as the predicate for
415         operand 1 and 'WU' as the constraint.  Check the difference
416         between the base length and the final one when deciding which
417         type of branch to use.
418         2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
419         * config/h8300/h8300.md (extzv): Remove mode from operands 0 and 1.
420         Use convert_move to extend the result for TARGET_H8300SX.  Check
421         for QImode memory references.  Optimize the case where the
422         destination is a paradoxical subreg.
423         2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
424         * config/h8300/h8300.md (*movsf_h8sx): Add an r <- G alternative.
425         * config/h8300/h8300.md (andqi): Remove bclr from h8sx version.
426         2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
427         * config/h8300/h8300.md: Include mova.md
428         (length_table): Add mova and mova_zero.
429         * config/h8300/h8300.c (print_operand): Handle '%o'.  Print a length
430         after all constant addresses for '%R', '%X', '%T' and '%S'.
431         (h8300_mova_length): New function.
432         (h8300_insn_length_from_table): Use it to handle mova and mova_zero.
433         * config/h8300/t-h8300 (mova.md): Generate from genmova.sh.  Add to
434         dependencies for s-config, etc.
435         * config/h8300/gemova.sh: New file.
436         * config/h8300/mova.md: Generated.
437         2003-07-20  Alexandre Oliva  <aoliva@redhat.com>
438         * config/h8300/h8300.c (h8300_bitfield_length): New.
439         (nibble_operand): Adjust.
440         (h8300_binary_length): Handle conditional binary op.
441         (h8300_insn_length_from_table): Handle bitfield and bitbranch.
442         * config/h8300/h8300.h: Change constraints W# and Y# to P#>X and
443         P#<X, respectively.  The original P is now IP4>X.  Introduced P#>0
444         and P#<0, unused so far.  W and Y are now prefixes to multi-letter
445         constraints.  WU is introduced as a variant of U that requires a
446         mem, and is therefore considered an EXTRA_MEMORY_CONSTRAINT.
447         * config/h8300/h8300.md (attr type): Added bitbranch.
448         (attr length_table): Added bitfield and bitbranch.
449         (attr length): Compute bitbranch length.
450         (andqi): Separate pattern for H8300SX.  Use bfld for loading the
451         least-significant bit of a byte.
452         (brabit, brabc, brabs): New.
453         (insv, extzv): Emit bfst and bfld on H8300SX.
454         (bfld, bfst, seq, sne): New.
455         (bstzhireg, cmpstz, bstz, bistz): New.
456         (cmpcondbset, condbset, cmpcondbclr, condbclr): New.
457         (cmpcondbsetreg, condbsetreg, cmpcondbclrreg, condbclrreg): New.
458         2003-07-11  Richard Sandiford  <rsandifo@redhat.com>
459         * config/h8300/h8300.c (h8sx_binary_memory_operator): New function.
460         (h8sx_unary_memory_operator): New function.
461         * config/h8300/h8300.h (EXTRA_MEMORY_CONSTRAINT): Disable.
462         (PREDICATE_CODES): Add h8sx_{unary,binary}_memory_operator.
463         * config/h8300/h8300.md: Add peepholes to combine reloads and
464         arithmetic insns.
465         2003-07-10  Richard Sandiford  <rsandifo@redhat.com>
466         * config/h8300/h830.md (cmpqi): Use 'i' rather than 'n' in constraints.
467         (*cmphi_h8300hs, *addqi3, *addhi3_h8sx, subhi3): Likewise.
468         (and?i, ior?i, xor?i): Likewise.
469         2003-07-10  Richard Sandiford  <rsandifo@redhat.com>
470         * config/h8300/h8300.c: Move enums and prototypes to head of file.
471         Various whitespace fixes.
472         (h8300_constant_length): New function, split out from...
473         (h8300_displacement_size): ...here.  Rename h8300_displacement_length.
474         (h8300_classify_operand): Use IN_RANGE.
475         (h8300_classify_operand): Use h8300_constant_length.
476         (h8300_short_move_mem_p): Tighten size check.
477         (h8sx_mergeable_memrefs_p): Tighten equality check.
478         2003-06-30  Richard Sandiford  <rsandifo@redhat.com>
479         * config/h8300/h8300.h (TARGET_CPU_CPP_BUILTINS): Define __H8300SX__
480         for -msx.
481         * config/h8300/crti.asm: Use .h8300sx or .h8300sxn for -msx code.
482         * config/h8300/crtn.asm: Likewise.
483         * config/h8300/lib1funcs.asm: Likewise.  Use 32-bit pointers
484         if __H8300SX__ is defined.
485         2003-06-27  Richard Sandiford  <rsandifo@redhat.com>
486         * config/h8300/h8300-protos.h (h8300_get_index): Add mode parameter.
487         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Update accordingly.
488         (GO_IF_MODE_DEPENDENT_ADDRESS): Treat POST_DEC, PRE_INC and indexed
489         addresses as mode-dependent.
490         * config/h8300/h8300.c (print_operand_address): Update call to
491         h8300_get_index.
492         (h8300_get_index): Take a mode argument.  Rework to fix an
493         earlier misunderstanding.
494         2003-06-26  Richard Sandiford  <rsandifo@redhat.com>
495         * config/h8300/h8300.c (zero_extendqisi2): Force the source operand
496         into a register if TARGET_H8300SX.
497         (*zero_extendqisi2_h8300hs, *extendqisi2_h8300): Disable for
498         TARGET_H8300SX.  Also disable related define_splits.
499         (*zero_extendqisi2_h8sx, *extendqisi2_h8sx): New patterns.
500         2003-06-23  Richard Sandiford  <rsandifo@redhat.com>
501         * config/h8300/h8300.c (h8300_rtx_costs): Add h8sx handling.
502         2003-06-20  Richard Sandiford  <rsandifo@redhat.com>
503         * config/h8300/h8300.h (OK_FOR_Z): New macro.
504         (EXTRA_CONSTRAINT_STR): Check it.
505         * config/h8300/h8300.c (h8300_classify_operand): Accept null
506         class arguments.
507         (h8300_insn_length_from_table): Handle LENGTH_TABLE_MOV_IMM4.
508         * config/h8300/h8300.md (length_table): Add mov_imm4.
509         (movqi, movhi): Add Z <- W4 alternatives to h8sx patterns.
510         2003-06-20  Richard Sandiford  <rsandifo@redhat.com>
511         * genattrtab.c (write_eligible_delay): Allow candidate_insn to
512         be a label.
513         * config/h8300/h8300.h (DELAY_SLOT_LENGTH): New macro.
514         * config/h8300/h8300.c (h8300_reorg): New function.
515         (TARGET_MACHINE_DEPENDENT_REORG): Define.
516         * config/h8300/h8300.md (length): Subtract the length of the
517         delay slot from (pc) when checking the range of forward branches.
518         (delay_slot, can_delay): New attributes.
519         (define_delay): Add bra/s handling.
520         (movmd_internal, return_h8sx, *return_1): Set can_delay to no.
521         (jump): Add delayed-branch handling.
522         2003-06-17  Richard Sandiford  <rsandifo@redhat.com>
523         * expr.c (expand_strcpy): New function.
524         * builtins.c (expand_builtin_strcpy): Fall back on expand_strcpy.
525         (expand_builtin_stpcpy): Likewise.
526         * config/h8300/h8300-protos.h (h8sx_split_movmd): Remove.
527         (h8300_swap_into_er6, h8300_swap_out_of_er6): Declare.
528         * config/h8300/h8300.c (h8300_reg_class_from_letter): Tweak 'd'
529         handling to improve register allocation for -fno-omit-frame-pointer.
530         (h8sx_split_movmd): Delete, moving er6 handling into...
531         (h8300_swap_into_er6, h8300_swap_out_of_er6): ...these new functions.
532         * config/h8300/h8300.md (UNSPEC_STPCPY): New unspec constant.
533         (movmd): Add calls to copy_rtx.
534         (movmd_internal): In the second alternative, allow the initial and
535         final destination registers to be different .  Update the splitter
536         accordingly.  Call h8300_swap_into_er6 and h8300_swap_out_of_er6
537         instead of h8sx_split_movmd.
538         (stpcpy, movsd): New expanders.
539         (movsd_internal): New define_insn.
540         2003-06-13  Richard Sandiford  <rsandifo@redhat.com>
541         * config/h8300/h8300-protos.h (h8300_reg_class_from_letter): Declare.
542         (h8sx_emit_movmd, h8sx_split_movmd): Declare.
543         * config/h8300/h8300.h (reg_class): Add COUNTER_REGS, SOURCE_REGS
544         and DESTINATION_REGS.
545         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
546         (REGNO_REG_CLASS): Map er4, er5 and er6 to the new classes.
547         (REG_CLASS_FROM_LETTER): Use h8300_reg_class_from_letter.
548         (h8300_move_ratio): Declare.
549         (MOVE_RATIO): Use it.
550         * config/h8300/h8300.c (h8300_move_ratio): New variable.
551         (h8300_init_once): Initialize it.
552         (h8300_reg_class_from_letter): New function.
553         (print_operand): Add an 'm' prefix for printing ".b", ".w" or ".l".
554         (h8sx_emit_movmd, h8sx_split_movmd): New functions.
555         * config/h8300/h8300.md (UNSPEC_MOVMD): New unspec constant.
556         (COUNTER_REG, SOURCE_REG, DESTINATION_REG): New register constants.
557         (movstrsi, movmd): New expanders.
558         (movmd_internal): New insn.
559         2003-06-06  Richard Sandiford  <rsandifo@redhat.com>
560         * config/h8300/h8300.h (EXTRA_MEMORY_CONSTRAINT): Define.
561         2003-06-04  Richard Sandiford  <rsandifo@redhat.com>
562         * config/h8300/elf.h (LINK_SPEC): Use -m h8300sxnelf for -msx -mn.
563         * config/h8300/h8300.c (asm_file_start): Use .h8300sxn likewise.
564         2003-06-03  Richard Sandiford  <rsandifo@redhat.com>
565         * config/h8300/h8300.c (nibble_operand): Fix warning.
566         * config/h8300/h8300.md (movstricthi): Set adjust_length to no.
567         (movsi_h8sx): Likewise here and the normal h8sx movhi pattern.
568         (movsf_h8300h): Disable for TARGET_H8300SX.
569         2003-06-03  Richard Sandiford  <rsandifo@redhat.com>
570         * config/h8300/h8300.h (PREDICATE_CODES): Add h8300_ldm_parallel,
571         h8300_stm_parallel and h8300_return_parallel.
572         * config/h8300/h8300.c (h8300_push_pop, h8300_stack_offset_p,
573         h8300_ldm_stm_regno, h8300_ldm_stm_parallel, h8300_ldm_parallel,
574         h8300_stm_parallel, h8300_return_parallel): New functions.
575         (h8300_expand_prologue): Don't enforce ldm/stm register alignment
576         if TARGET_H8300SX.  Use h8300_push_pop.
577         (h8300_expand_epilogue): Likewise.  Try to merge the return insn
578         and final pop when generating h8sx code.  Always emit some form
579         of return insn.
580         * config/h8300/h8300.md: Don't enforce register alignment in
581         stm peepholes if TARGET_H8300SX.
582         (ldm_h8300s, stm_h8300s, return_h8sx): New patterns.
583         (ldm_h8300s_[234], stm_h8300_[234]): Disable.
584         (epilogue): Expect h8300_expand_epilogue to emit a return insn.
585         2003-06-03  Richard Sandiford  <rsandifo@redhat.com>
586         * config/h8300/t-h8300 (MULTILIB_OPTIONS): Add a -msx multilib.
587         (MULTILIB_DIRNAMES): Add a directory for it.
588         (MULTILIB_MATCHES): Delete.
589         2003-05-28  Richard Sandiford  <rsandifo@redhat.com>
590         * final.c (walk_alter_subreg): Handle addresses with subregs
591         inside a ZERO_EXTEND or AND.
592         * config/h8300/h8300-protos.h (h8300_get_index): Declare.
593         * config/h8300/h8300.h (INDEX_REG_CLASS): Set to GENERAL_REGS
594         if TARGET_H8300SX.
595         (GO_IF_LEGITIMATE_ADDRESS): Use h8300_get_index.
596         * config/h8300/h8300.c (print_operand_address): Handle @(dd,RnL.b),
597         @(dd,Rn.w) and @(dd,ERn.L).
598         (h8300_displacement_size): Take the whole address as argument.
599         (h8300_classify_operand, h8300_short_move_mem_p): Adjust accordingly.
600         2003-05-28  Richard Sandiford  <rsandifo@redhat.com>
601         * config/mips/mips-protos.h (h8300_operands_match_p): Declare.
602         (h8sx_mergeable_memrefs_p): Declare.
603         * config/h8300/h8300.h (HAVE_POST_DECREMENT): Define to TARGET_H8300SX.
604         (HAVE_PRE_INCREMENT): Likewise.
605         (GO_IF_LEGITIMATE_ADDRESS): Accept pre/post increment/decrement
606         addresses for TARGET_H8300SX,
607         * config/h8300/h8300.c (print_operand_address): Deal with PRE_INC
608         and POST_DEC.
609         (movb_length_table, movl_length_table): New tables.
610         (movw_length_table): Define to movb_length_table.
611         (h8300_displacement_size): New, split out from...
612         (h8300_classify_address): ...here.  Handle pre/post inc/dec.
613         (h8300_short_immediate_length): Allow H8OP_MEM_COMPLEX operands.
614         (h8300_insn_length_from_table): Add cases for movb, movw and movl.
615         (h8sx_mergeable_memrefs_p, h8300_operands_match_p): New functions.
616         (output_plussi): Use add.l #xx:3,Rn and sub.l #xx:3,Rn for h8sx.
617         (compute_plussi_length, compute_plussi_cc): Update accordingly.
618         (h8sx_unary_shift_operator): Get the mode from the operator.
619         (binary_shift_operator): Likewise.
620         * config/h8300/h8300.md: If a peephole2 applies gen_lowpart to
621         a memory reference, check whether the reference is offsettable.
622         (length_table): Add movb, movw and movl.
623         (movqi): Add new h8sx pattern.  Don't force one operand to be a
624         register when generating h8sx code.
625         (movhi, movsi, movsf): Likewise.
626         (movstrictqi): Use the length_table attribute.
627         (movstricthi): Likewise.  Add h8sx alternative for mov.w #xx:3,Rn.
628         (addqi3): Split into a define_expand and define_insn.  Don't accept
629         memory operands in the expander.  Use h8300_operands_match_p to
630         check for matching operands in the define_insn.
631         (subqi3, negqi2, one_cmplqi2): Likewise.
632         (add[hs]i3): Don't accept memory operands in the expander.  Likewise
633         in any patterns that are unused in h8sx code.  In the h8sx patterns,
634         use h8300_operands_match_p to check whether operands match.
635         (sub[hs]i3, and[hi]3, ior[hs]i3, xor[hs]i3, neg[hsi]3,
636         one_cmpl[hs]i3): Likewise.
637         (andqi3, iorqi3, xorqi3): Likewise.  Don't call fix_bit_operand
638         in the expander.
639         2003-05-23  Richard Sandiford  <rsandifo@redhat.com>
640         * config/h8300/h8300-protos.h (expand_a_shift): Return a bool.
641         (h8300_insn_length_from_table): Add a second parameter.
642         (output_h8sx_shift): Declare.
643         * config/h8300/h8300.h (OK_FOR_W, OK_FOR_Y): New macros.
644         (EXTRA_CONSTRAINT): Replace with...
645         (EXTRA_CONSTRAINT_STR): ...this.  Use OK_FOR_W and OK_FOR_Y.
646         (CONSTRAINT_LEN): Define, returning 2 for 'W' and 'Y'.
647         (PREDICATE_CODES): Add entries for h8sx_unary_shift_operator
648         and h8sx_binary_shift_operator.
649         * config/h8300/h8300.c (two_insn_adds_subs_operand): Return false
650         for TARGET_H8300SX.
651         (bit_operand): Replace use of EXTRA_CONSTRAINT with OK_FOR_U.
652         (bit_memory_operand, fix_bit_operand): Likewise.
653         (h8300_length_table_for_insn): Remove.
654         (h8300_classify_operand): Fix check for 16-bit operands in 32-bit
655         instructions.
656         (h8300_short_immediate_length, h8300_binary_length): New functions.
657         (h8300_insn_length_from_table): Add an opcodes parameter.  Rework.
658         (output_plussi): Use sub to add negative constants.
659         (compute_plussi_length): Adjust accordingly.
660         (h8sx_single_shift_type): New enum.
661         (h8sx_single_shift, h8sx_unary_shift_operator,
662         h8sx_binary_shift_operator, output_h8sx_shift): New functions.
663         (expand_a_shift, expand_a_rotate): Emit nothing if the shift is a
664         single h8sx instruction.  Return false in this case.
665         * config/h8300/h8300.md (length_table): Add short_immediate.
666         (length): Pass the operand array to h8300_insn_length_from_table.
667         (adjust_length): Assume "no" for insns with a length_table attribute.
668         (*cmphi_h8300hs, cmpsi): Add alternatives for #xx:3.
669         (*addhi3_h8300hs): Don't use for h8sx.
670         (*addhi3_h8sx): New pattern, with alternatives for add.w #xx:3
671         and sub.w #xx:3.
672         (ashl[qhs]i3, lshr[qhs]i3, ashr[qhs]i3, rotl[qhs]i3): Change operand
673         1's predicate to nonimmediate_operand.  Only skip default expansion
674         if expand_a_shift or expand_a_rotate returns true.  Add new patterns
675         for single h8sx shift instructions.
676         2003-05-22  Alexandre Oliva  <aoliva@redhat.com>
677         * config/h8300/h8300.c (nibble_operand): Split out of...
678         (reg_or_nibble_operand): ... this.
679         * config/h8300/h8300.h (PREDICATE_CODES): Added nibble_operand.
680         * config/h8300/h8300.md: (mulqihi3, mulhisi3, umulqihi3,
681         umulhisi3): Introduce expand, and introduce separate insns for
682         sign- or zero-extended REG and already-extended CONST_INT.
683         2003-05-20  Richard Sandiford  <rsandifo@redhat.com>
684         * config/h8300/h8300.c (h8300_unary_length): Fix miscounting.
685         * config/h8300/h8300.md (subqi3): Generalize for h8sx.
686         (subhi3): Likewise.  Don't accept immediates for operand 1.
687         Remove the early clobber from second alternative of the h8300s pattern.
688         (subsi3): Generalize for h8sx.  Force operand 2 into a register
689         on plain h8300 targets.
690         (subsi3_h8300): Use h8300_dst_operand for consistency with expander.
691         (subsi3_h8300h): Generalize for h8sx.
692         (one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise.
693         2003-05-19  Alexandre Oliva  <aoliva@redhat.com>
694         * config/h8300/h8300.c (reg_or_nibble_operand): New.
695         * config/h8300/h8300.h (PREDICATE_CODES): Adjust.
696         (TARGET_H8300SXMUL): New.
697         (CONST_OK_FOR_P): New.
698         (CONST_OK_FOR_LETTER_P): Adjust.
699         * config/h8300/h8300.md (mulqihi3, mulhisi3, umulqihi3,
700         umulhisi3): Accept 4-bit immediate on H8SX.
701         (mulhi3, mulsi3, smulsi3_highpart, umulsi3_highpart): New.
702         (udivsi3, divhi3, udivsi3, divsi3): New.
703         2003-05-19  Richard Sandiford  <rsandifo@redhat.com>
704         * config/h8300/h8300-protos.h (h8300_insn_length_from_table): Declare.
705         * config/h8300/h8300.h (OK_FOR_Q): New macro.
706         (EXTRA_CONSTRAINT): Use it to check the 'Q' constraint.
707         (PREDICATE_CODES): Add h8300_src_operand and h8300_dst_operand.
708         Add ADDRESSOF to the bit_operand entry.
709         * config/h8300/h8300.c (h8300_dst_operand): New predicate.
710         (h8300_src_operand): Likewise.
711         (bit_operand): Check nonimmediate_operand rather than general_operand.
712         Accept any nonimmediate_operand in h8sx code.
713         (h8300_and_costs): Initialize operands[1].
714         (h8300_rtx_costs) <AND>: Return false if the operands aren't valid.
715         (h8300_operand_class): New enum.
716         (h8300_length_table): New typedef.
717         (addb_length_table, addw_length_table, addl_length_table,
718         logicl_length_table): New tables.
719         (logicb_length_table, logicw_length_table): New macros.
720         (h8300_classify_operand, h8300_length_from_table,
721         h8300_length_table_for_insn, h8300_unary_length,
722         h8300_insn_length_from_table): New functions.
723         (output_plussi): Only use adds and subs for register destinations.
724         Disable redundant clause.
725         (compute_plussi_cc): Likewise.
726         (compute_plussi_length): Likewise.  Use h8300_length_from_table
727         to work out the length of an insn.
728         (output_logical_op): Only use narrower immediate instructions
729         if the destination is a register.
730         (compute_logical_op_cc): Likewise.
731         (compute_logical_op_length): Likewise.  Use h8300_length_from_table.
732         (h8300_adjust_insn_length): Tighten check for reg<->mem moves.
733         * config/h8300/h8300.md (length_table): New attribute.
734         (length): When an instruction has a length_table attribute, use
735         h8300_insn_length_from_table to calculate its default length.
736         (cmpqi): Use h8300_dst_operand for the first operand and
737         h8300_src_operand for the second.
738         (cmphi, *cmphi_h8300hs, cmpsi, negqi2, neghi2, neghi2_h8300h, negsi2,
739         negsi2_h8300h, addqi3, addhi3, *addhi3_h8300, *addhi3_h8300hs, addsi3,
740         addsi_h8300, addsi_h8300h, andhi3, andsi3, iorhi3,
741         iorsi3, xorhi3, xorsi3): Likewise.
742         (andqi3): Use h8300_src_operand for operand 2.  Adjust the condition
743         so that it allows any combination of operands for TARGET_H8300SX.
744         (iorqi3, xorqi3): Likewise.
745         (cmpqi): Use the length_table attribute.
746         (*cmphi_h8300hs, cmpsi, addqi, *addhi3_h8300hs, andqi3, iorqi3,
747         xorqi3, negqi2, neghi2_h8300h, negsi2_h8300h): Likewise.
748         (cmpqi): Add 'Q' constraint.
749         (*cmphi_h8300hs, cmpsi, addqi, *addhi3_h8300hs, addsi_h8300h, andqi3,
750         iorqi3, xorqi3, negqi2, neghi2_h8300h, negsi2_h8300h): Likewise.
751         2003-05-14  Richard Sandiford  <rsandifo@redhat.com>
752         * config/h8300/h8300.h (MASK_H8300SX): New macro.
753         (TARGET_H8300S): True for both -ms and -msx.
754         (TARGET_H8300SX): New macro.
755         (TARGET_SWITCHES): Add entries for -msx and -mno-sx.
756         * config/h8300/h8300.c (asm_file_start): Write .h8300sx for -msx.
757         * config/h8300/elf.h (LINK_SPEC): Use -m h8300sxelf for -msx.
758         * config/h8300/t-h8300 (MULTILIB_MATCHES): Use -ms multilibs for -msx.
759         [Temporary change.]
760         2003-02-28  Alexandre Oliva  <aoliva@redhat.com>
761         * config/h8300/h8300.h (SIZE_TYPE, PTRDIFF_TYPE): Use short with
762         16-bit pointers and 32-bit ints.
763         * config/h8300/h8300.h (LEGITIMATE_CONSTANT_P): Accept
764         CONST_DOUBLE with mode no wider than SImode.
765         * config/h8300/h8300.md (extendqisi2_h8300): Add constraints for
766         output operand.
767         2003-02-27  Alexandre Oliva  <aoliva@redhat.com>
768         * config/h8300/h8300.c (general_operand_src): Match CONSTANT_P_RTX
769         or SUBREG thereof.
770         * config/h8300/h8300.h (PREDICATE_CODES): Adjust.
771         2003-02-22  Alexandre Oliva  <aoliva@redhat.com>
772         * config/h8300/h8300.c (dosize): Truncate sign * size to Pmode.
773
774 2004-05-28  Aaron W. LaFramboise <aaronraolete36@aaronwl.com>
775
776         * config.gcc (i[34567]86-*-mingw32*): Enable threads by default.
777
778 2004-07-07  Per Bothner  <per@bothner.com>
779
780         * flow.c (attempt_auto_inc):  Remove now-redundant PUT_CODE.
781
782 2004-07-07  Mike Stump  <mrs@apple.com>
783
784         * darwin.h (ASM_OUTPUT_LABELREF): Fix -fno-leading-underscore.
785         * darwin.c (machopic_non_lazy_ptr_name, machopic_stub_name)
786         (machopic_finish): Likewise.
787
788 2004-07-07  Richard Henderson  <rth@redhat.com>
789
790         * tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): Look
791         through any value-preserving cast.
792
793 2004-07-07  Alexandre Oliva  <aoliva@redhat.com>
794
795         * function.c (assign_parm_find_data_types): Call
796         FUNCTION_ARG_PASS_BY_REFERENCE only if it's defined.
797
798 2004-07-07  Steven Bosscher  <stevenb@suse.de>
799
800         * tree-cfg.c (group_case_labels): Remove case labels that have
801         the same target as the default case.
802
803 2004-07-07  Steven Bosscher  <stevenb@suse.de>
804
805         * tree-inline.c (optimize_inline_calls): Set DECL_INLINED_FNS
806         regardless of DECL_LANG_SPECIFIC being present or not.
807         * tree.h (DECL_NUM_STMTS): Purge.
808
809 2004-07-07  Andrew Pinski  <apinski@apple.com>
810
811         * configure: Regenerate with the right autoconf.
812
813 2004-07-07  David Edelsohn  <edelsohn@gnu.org>
814
815         * ifcvt.c (total_bb_rtx_cost): New function.
816         (find_if_case_1): Compare rtx_cost of basic block to cost of
817         BRANCH_COST insns.
818         (find_if_case_2): Same.
819
820 2004-07-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
821
822         PR target/10567
823         * config/sparc/sparc.c (load_pic_register): Honor flag_delayed_branch.
824         (output_return): Likewise.
825         (output_sibcall): Abort if !flag_delayed_branch.
826         (sparc_function_ok_for_sibcall): Return 0 if !flag_delayed_branch.
827         (emit_and_preserve): New function.
828         (sparc_output_mi_thunk): Use it.  Honor flag_delayed_branch.  Emit an
829         indirect jump to the thunked-to function if !flag_delayed_branch.
830         * config/sparc/sparc.md (delayed_branch): New attribute.
831         (load_pcrel_sym): Honor flag_delayed_branch.  Use above
832         attribute to compute the length of the insn.
833         (goto_handler_and_restore): Likewise.
834
835 2004-07-07  Andrew Pinski  <apinski@apple.com>
836
837         PR tree-optimization/15777
838         * fold-const.c (fold_single_bit_test): Fold the x^1 expression.
839
840         * expr.c (expand_expr_real_1): Fix formating.
841         BUFFER_REF and IN_EXPR are dead.
842         * fold-const.c (non_lvalue): BUFFER_REF is dead.
843         * tree-inline.c (estimate_num_insns_1): Likewise.
844         * tree-pretty-print.c (dump_generic_node): BUFFER_REF,
845         IN_EXPR, SET_LE_EXPR, and CARD_EXPR are dead.
846         * tree.def (BUFFER_REF, IN_EXPR, SET_LE_EXPR, CARD_EXPR): Kill.
847
848 2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>
849
850         * collect2.c (dump_file): Don't call cplus_demangle if
851         HAVE_LD_DEMANGLE is defined.
852         (main): Pass "--demangle" to ld if no_demangle is not 0 and
853         HAVE_LD_DEMANGLE is defined. Don't set current_demangling_style
854         if HAVE_LD_DEMANGLE is defined.
855
856         * configure.ac (--with-demangler-in-ld): Added
857         (HAVE_LD_DEMANGLE): Define if ld supports --demangle when
858         --with-demangler-in-ld is used.
859         * config.in: Regenerated.
860         * configure: Likewise.
861
862 2004-07-07  Roger Sayle  <roger@eyesopen.com>
863
864         * config/rs6000/rs6000.c (struct processor_costs): Add new fields
865         for simple floating point operations "fp", double precision
866         multiplication "dmul", and single and double precision division
867         "sdiv" and "ddiv".  Update all CPU variant tables as appropriate.
868         (ppc630_cost): New table split from ppc620_cost, to distinguish
869         differences in floating point latencies.
870         (rs6000_override_options): Use ppc630_cost for PROCESSOR_PPC630.
871         (rs6000_rtx_costs): Add support for single and double precision
872         floating point addition, subtraction, multiplication, division,
873         fused-multiply-add, fused-multiply-sub, negation, absolute value
874         and negative absolute value.  Tweak MEM case to use prefered idiom.
875
876 2004-07-07  Richard Henderson  <rth@redhat.com>
877
878         * tree-flow-inline.h (may_propagate_copy): Move...
879         * tree-ssa-copy.c (may_propagate_copy): ... here.  Fail if we
880         attempt to copy between types requiring conversion.
881         * tree-flow.h (may_propagate_copy): Update decl.
882         * tree-ssa-dom.c (cprop_operand): Tidy redundant tests.
883
884 2004-07-07  Jakub Jelinek  <jakub@redhat.com>
885
886         * config/i386/i386.c (override_options): Don't set x86_prefetch_sse
887         from -mtune= option.
888
889 2004-07-07  Alexandre Oliva  <aoliva@redhat.com>
890
891         * builtins.c: Rename movstr*, except for movstrict*, to
892         movmem* and clrstr* to clrmem*.
893         * expr.c: Likewise.
894         * expr.h: Likewise.
895         * genopinit.c: Likewise.
896         * integrate.c: Likewise.
897         * local-alloc.c: Likewise.
898         * optabs.c: Likewise.
899         * optabs.h: Likewise.
900         * config/alpha/alpha.h: Likewise.
901         * config/alpha/alpha.md: Likewise.
902         * config/arm/arm-protos.h: Likewise.
903         * config/arm/arm.c: Likewise.
904         * config/arm/arm.md: Likewise.
905         * config/avr/avr.md: Likewise.
906         * config/c4x/c4x.c: Likewise.
907         * config/c4x/c4x.md: Likewise.
908         * config/frv/frv.md: Likewise.
909         * config/i386/i386-protos.h: Likewise.
910         * config/i386/i386.c: Likewise.
911         * config/i386/i386.h: Likewise.
912         * config/i386/i386.md: Likewise.
913         * config/i860/i860.c: Likewise.
914         * config/i860/i860.md: Likewise.
915         * config/ip2k/ip2k.md: Likewise.
916         * config/ip2k/libgcc.S: Likewise.
917         * config/ip2k/t-ip2k: Likewise.
918         * config/m32r/m32r.c: Likewise.
919         * config/m32r/m32r.md: Likewise.
920         * config/mcore/mcore.md: Likewise.
921         * config/mips/mips.c: Likewise.
922         * config/mips/mips.md: Likewise.
923         * config/ns32k/ns32k.c: Likewise.
924         * config/ns32k/ns32k.h: Likewise.
925         * config/ns32k/ns32k.md: Likewise.
926         * config/pa/pa.c: Likewise.
927         * config/pa/pa.md: Likewise.
928         * config/pdp11/pdp11.h: Likewise.
929         * config/pdp11/pdp11.md: Likewise.
930         * config/rs6000/rs6000.c: Likewise.
931         * config/rs6000/rs6000.md: Likewise.
932         * config/s390/s390-protos.h: Likewise.
933         * config/s390/s390.c: Likewise.
934         * config/s390/s390.md: Likewise.
935         * config/sh/lib1funcs.asm: Likewise.
936         * config/sh/sh.c: Likewise.
937         * config/sh/sh.md: Likewise.
938         * config/sh/t-sh: Likewise.
939         * config/sparc/sparc.h: Likewise.
940         * config/vax/vax.md: Likewise.
941         * config/xtensa/xtensa.c: Likewise.
942         * config/xtensa/xtensa.md: Likewise.
943         * doc/invoke.texi: Likewise.
944         * doc/md.texi: Likewise.
945         * doc/rtl.texi: Likewise.
946
947 2004-07-07  Richard Sandiford  <rsandifo@redhat.com>
948
949         PR target/16407
950         * config/mips/mips-protos.h (mips_declare_common_object): Declare.
951         * config/mips/mips.c (mips_declare_common_object): New function,
952         mostly split out from...
953         (mips_output_aligned_decl_common): ...here.
954         * config/mips/mips.h (ASM_OUTPUT_LOCAL): Remove in favor of...
955         (ASM_OUTPUT_ALIGNED_LOCAL): ...this new definition.
956         * config/mips/iris6.h (ASM_OUTPUT_ALIGNED_LOCAL): Undefine this
957         rather than ASM_OUTPUT_LOCAL.  Call mips_declare_common_object.
958
959 2004-07-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
960
961         PR c/16392
962         * function.c (assign_parms): Fix typo from previous change.
963
964 2004-07-07  Jason Merrill  <jason@redhat.com>
965
966         PR c++/15815
967         * doc/extend.texi (C++ Interface): Correct information and
968         discourage use.
969
970 2004-07-07  Vladimir Makarov  <vmakarov@redhat.com>
971
972         PR target/16130
973         PR target/16142
974         PR target/16143
975         * config/ia64/ia64.c (ia64_dfa_new_cycle): Reset DFA state for asm
976         insn.
977
978 2004-07-06  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
979
980         PR target/1679.
981         * config/m32r/m32r.c (m32r_function_symbol): New function:
982         Generate a symbol name RTX with the correct m32r specific flags
983         set.
984         (block_move_call): Use new function to generate correct symbol.
985         * config/m32r/m32r-protos.h: Add prototype for new funcion.
986         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Use the new
987         function.
988
989 2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>
990
991         * tree.h (TYPE_BINFO_OFFSET, TYPE_BINFO_VTABLE,
992         TYPE_BINFO_VIRTUALS, TYPE_BINFO_BASETYPES,
993         TYPE_BINFO_BASETYPE): Remove.
994         (BINFO_BASETYPES, BINFO_N_BASETYPES, BINFO_BASETYPE): Rename
995         to ...
996         (BINFO_BASE_BINFOS, BINFO_N_BASE_BINFOS, BINFO_BASE_BINFO): ...
997         here.
998         (BINFO_BASEACCESSES, BINFO_BASEACCESS): Rename to ...
999         (BINFO_BASE_ACCESSES, BINFO_BASE_ACCESS): ... here.
1000         (BINFO_INHERITANCE_CHAIN): Redocument as it is actually used.
1001         (struct tree_binfo): Rename base_types to base_binfos.
1002         * alias.c (record_component_aliases): Adjust BINFO macros.
1003         * dbxout.c (dbxout_type): Likewise.
1004         * dwarf2out.c (gen_member_die): Likewise.
1005         * sdbout.c (sdbout_one_type): Likewise.
1006         * tree-dump.c (deque_and_dump): Likewise.
1007         * config/i386/i386.c (classify_argument,
1008         contains_128bit_aligned_vector_p): Likewise.
1009
1010 2004-07-07  Nick Clifton  <nickc@redhat.com>
1011
1012         * config/fr30/fr30.c (fr30_setup_incoming_varargs): Change
1013         arguments to match TARGET_SETUP_INCOMING_VARARGS prototype.
1014
1015 2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>
1016
1017         * vec.h: Fix the example use.
1018
1019 2004-07-06  Richard Henderson  <rth@redhat.com>
1020
1021         * langhooks-def.h (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Remove.
1022         * langhooks.h (struct lang_hooks): Remove gimple_before_inlining.
1023         * tree-inline.c (copy_body_r, setup_one_parameter,
1024         initialize_inlined_parameters, expand_call_inline,
1025         declare_inline_vars): Don't check it.
1026         (expand_calls_inline): Remove old version, rename new version
1027         from gimple_expand_calls_inline.
1028         * tree-optimize.c (execute_gimple): Remove.
1029         (pass_gimple): Don't run anything.
1030
1031 2004-07-06  Joseph S. Myers  <jsm@polyomino.org.uk>
1032
1033         * doc/sourcebuild.texi: Use semicolons instead of commas in
1034         section title.
1035
1036 2004-07-06  Richard Henderson  <rth@redhat.com>
1037
1038         * tree-sra.c (struct sra_walk_fns): Revert 2004-07-05 change.
1039         (sra_walk_modify_expr, scan_init): Likewise.
1040         (generate_element_zero): Check visited before scanning children.
1041         (generate_element_init): Set visited on error.
1042         (scalarize_init): Handle generate_element_init failure similar
1043         to use_block_copy.
1044
1045 2004-07-06  Joseph S. Myers  <jsm@polyomino.org.uk>
1046
1047         * toplev.h (NO_FRONT_END_DIAG, ATTRIBUTE_GCC_FE_DIAG): Define.
1048         (warning, error, pedwarn, sorry): Use ATTRIBUTE_GCC_FE_DIAG.
1049
1050 2004-07-06  Richard Henderson  <rth@redhat.com>
1051
1052         * config/i386/i386.c (legitimize_pic_address): Make static.
1053         (legitimize_address): Handle CONST with TLS operand.
1054         (ix86_expand_move): Don't call legitimize_pic_address directly.
1055         * config/i386/i386-protos.h (legitimize_pic_address): Remove.
1056
1057 2004-07-06  Roger Sayle  <roger@eyesopen.com>
1058
1059         * ifcvt.c (struct noce_if_info): Add a Boolean b_unconditional field.
1060         (noce_try_sign_mask): Tweak rtx_cost check if t is evaluated anyway.
1061         (noce_process_if_block): Initialize if_info.b_unconditional if insn_b
1062         is currently executed unconditionally, i.e. not in "else_bb".
1063
1064 2004-07-06  Steven Bosscher  <stevenb@suse.de>
1065
1066         * config/alpha/alpha.c (alpha_use_dfa_pipeline_interface): Remove.
1067         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
1068         * config/arm/arm.c (arm_use_dfa_pipeline_interface): Remove.
1069         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
1070         * config/frv/frv.c (frv_use_dfa_pipeline_interface): Remove.
1071         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
1072         * config/i386/i386.c (ia32_use_dfa_pipeline_interface): Remove.
1073         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
1074         * config/ia64/ia64.c (ia64_use_dfa_pipeline_interface): Remove.
1075         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
1076         * config/pa/pa.c (hhpa_use_dfa_pipeline_interface): Remove.
1077         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
1078         * config/sparc/sparc.c (sparc_use_dfa_pipeline_interface): Remove.
1079         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
1080         * config/v850/v850.c (v850_use_dfa_pipeline_interface): Remove.
1081         (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
1082
1083 2004-07-06  Daniel Berlin  <dberlin@dberlin.org>
1084
1085         * dojump.c (do_jump): REFERENCE_EXPR is dead.
1086         * expr.c (expand_expr_real_1): Ditto.
1087         * tree-inline.c (estimate_num_insns_1): Ditto.
1088         * tree-pretty-print.c (dump_generic_node): Ditto.
1089         (op_symbol): Ditto.
1090         * tree.def: Ditto.
1091
1092 2004-07-06  Daniel Berlin  <dberlin@dberlin.org>
1093
1094         * tree-ssa-pre.c (reference_node_pool): New pool.
1095         (find_or_generate_expression): Class 'r' is okay too.
1096         (create_value_expr_from): Ditto.
1097         (add_to_sets): LHS should not include vuses.
1098         (eliminate): Ditto.
1099         (compute_avail): Reverse ordering of tests.
1100         Valuize INDIRECT_REF as well.
1101
1102 2004-07-06  Richard Sandiford  <rsandifo@redhat.com>
1103
1104         PR rtl-optimization/16380
1105         * loop.c (check_dbra_loop): Sink comparison instructions if they
1106         do something other than set cc0.
1107
1108 2004-07-06  James E Wilson  <wilson@specifixinc.com>
1109
1110         * doc/interface.texi (longjmp and automatic variables): Delete
1111         paragraph recommending taking the address of a variable.
1112
1113 2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>
1114
1115         * vec.h (VEC_embedded_alloc): Remove.
1116         (VEC_embedded_size, VEC_embedded_init): New.
1117         (VEC_alloc, VEC_reserve, VEC_safe_push, VEC_safe_insert): Add
1118         MEM_STAT_INFO.
1119         (VEC_truncate): New.
1120         (vec_p_reserve, vec_o_reserve): Add MEM_STAT_DECL.
1121         (vec_embedded_alloc): Remove.
1122         * vec.c (vec_p_reserve, vec_o_reserve): Add MEM_STAT_DECL, adjust.
1123         (vec_embedded_alloc): Remove.
1124
1125 2004-07-06  Mark Mitchell  <mark@codesourcery.com>
1126
1127         * Makefile.in (langhooks.o): Do not depend on gt-langhooks.h.
1128         (gt-langhooks.h): Remove.
1129
1130 2004-07-06  George Helffrich <george@gly.bris.ac.uk>
1131
1132         * xcoffout.h (DBX_FINISH_SYMBOL): Fix typo.
1133
1134 2004-07-06  Eric Botcazou  <ebotcazou@libertysurf.fr>
1135
1136         * config/sparc/sparc.c (get_pc_symbol): Rename into
1137         add_pc_to_pic_symbol.
1138         (get_pc_symbol_name): Rename into add_pc_to_pic_symbol_name.
1139         (load_pic_register): Account for previous changes.
1140         Use reg_names.  Don't create the label twice.
1141         * config/sparc/sparc.md (UNSPEC_GET_PC): Rename into
1142         UNSPEC_LOAD_PCREL_SYM.
1143         (get_pc): Rename into load_pcrel_sym.  Add predicate to
1144         operands.  Remove condition.
1145
1146 2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>
1147
1148         * dbxout.c (dbxout_type): Don't test whether the binfo slot of
1149         RECORD, UNION & QUAL_UNION is actually a binfo.
1150
1151         * tree.h (TREE_VIA_VIRTUAL): Rename to ...
1152         (BINFO_VIRTUAL_P): ... here. Require TREE_BINFO only.
1153         (BINFO_MARKED, BINFO_FLAG_[16]): New binfo flags.
1154         * dbxout.c (dbxout_type): Use BINFO_VIRTUAL_P.
1155         * dwarf2out.c (add_data_member_location_attribute): Likewise.
1156         (gen_inheritance_die): Likewise.
1157         * tree-dump.c (deque_and_dump): Likewise.
1158         * doc/c-tree.texi (Binfos): Add under reconstruction note.
1159
1160 2004-07-06  Steven Bosscher  <stevenb@suse.de>
1161
1162         * config/mcore/mcore.c (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE):
1163         Define.
1164         * config/mcore/mcore.md: Model memory latency with a simple DFA
1165         pipeline description instead of a define_function_unit.
1166
1167 2004-07-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1168
1169         * langhooks-def.h (LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P): Extra arg.
1170         * langhooks.h (var_mod_type_p): Likewise.
1171         * c-decl.c (finish_decl): Add extra arg to variably_modified_type_p.
1172         * expr.c (count_type_elements): Properly handle return from
1173         array_type_nelts and properly test for overflow.
1174         * gimplify.c (gimplify_init_constructor): Properly handle return
1175         from array_type_nelts.
1176         (gimplify_addr_expr): Remove redundant clear of TREE_SIDE_EFFECTS.
1177         * integrate.c (copy_decl_for_inlining): Correct comments.
1178         * tree-inline.c (remap_decl): Update comments, remove dead code,
1179         and copy DECL_FIELD_OFFSET and DECL_QUALIFIER, if they exist.
1180         (remap_type): Only remap if variably modified by vars in function
1181         being inlined.
1182         (copy_body_r): Use compatible_type langhooks to see when can fold.
1183         (setup_one_parameter): Don't remap type.
1184         (inline_forbidden_p_1): Add arg to variably_modified_type_p.
1185         * tree.c (recompute_tree_invarant_for_addr_expr): Properly
1186         compute TREE_INVARIANT for decl case.
1187         (find_var_from_fn): New function.
1188         (variably_modified_type_p): Add arg and call new function.
1189         * tree.h (variably_modified_type_p): Add extra arg.
1190
1191 2004-07-05  Eric Botcazou  <ebotcazou@libertysurf.fr>
1192
1193         * config/sparc/sparc.md (nonlocal_goto): Remove disabled code.
1194         (goto_handler_and_restore_v9): Delete disabled insn.
1195         (goto_handler_and_restore_v9_sp64): Likewise.
1196
1197 2004-07-05  Roger Sayle  <roger@eyesopen.com>
1198
1199         * calls.c (load_register_parameters): Call expand_shift instead
1200         of expand_binop with ashl_optab (or other shift optab) directly.
1201         * expr.c (emit_group_load, emit_group_store): Likewise.
1202         * function.c (assign_parm_setup_block): Likewise.
1203         * stmt.c (shift_return_value): Likewise.
1204
1205 2004-07-05  Jakub Jelinek  <jakub@redhat.com>
1206
1207         * expr.c (expand_assignment): Disable the bitfield += optimizations.
1208
1209 2004-07-05  Joseph S. Myers  <jsm@polyomino.org.uk>
1210
1211         * doc/sourcebuild.texi: Revert previous patch.
1212
1213 2004-07-05  Joseph S. Myers  <jsm@polyomino.org.uk>
1214
1215         * c-decl.c, config/m32r/m32r.c, expr.c, optabs.c: Don't check
1216         TARGET_MEM_FUNCTIONS.
1217         * system.h: Poison TARGET_MEM_FUNCTIONS.
1218         * libfuncs.h (LTI_bcopy, LTI_bcmp, LTI_bzero, bcopy_libfunc,
1219         bcmp_libfunc, bzero_libfunc): Remove.
1220         * optabs.c (init_obtabs): Don't set bcopy_libfunc, bcmp_libfunc or
1221         bzero_libfunc.
1222         * doc/tm.texi (TARGET_MEM_FUNCTIONS): Remove.
1223         * doc/standards.texi: Don't mention calling BSD string functions.
1224         * doc/invoke.texi: Likewise.  Mention that memmove may be called.
1225         * config/vax/t-memfuncs: New.
1226         * config/memcmp.c, config/memcpy.c, config/memmove.c,
1227         config/memset.c: New.
1228         * config/pdp11/t-pdp11 (LIB2FUNCS_EXTRA): Use these files.
1229         * config.gcc (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*): Use
1230         vax/t-memfuncs.
1231         * config/alpha/alpha.h, config/arc/arc.h, config/arm/arm.h,
1232         config/avr/avr.h, config/c4x/c4x.h, config/cris/aout.h,
1233         config/elfos.h, config/gnu.h, config/h8300/h8300.h,
1234         config/i386/gas.h, config/ia64/ia64.h, config/interix.h,
1235         config/ip2k/ip2k.h, config/lynx-ng.h, config/m32r/m32r.h,
1236         config/mcore/mcore.h, config/mips/mips.h, config/mmix/mmix.h,
1237         config/netbsd.h, config/openbsd.h, config/pa/pa.h,
1238         config/rs6000/rs6000.h, config/rtems.h, config/s390/s390.h,
1239         config/sh/sh.h, config/sparc/sparc.h, config/stormy16/stormy16.h,
1240         config/svr3.h: Don't define TARGET_MEM_FUNCTIONS.
1241
1242 2004-07-05  Richard Henderson  <rth@redhat.com>
1243
1244         * function.c (assign_parm_setup_reg): Properly rename variables in
1245         FUNCTION_ARG_CALLEE_COPIES section.
1246
1247 2004-07-05  Zack Weinberg  <zack@codesourcery.com>
1248
1249         * tree-mudflap.c: Include cgraph.h.
1250         (mf_init_extern_trees): Rename to mudflap_init.  Export.
1251         Rewrite to create synthetic declarations instead of looking
1252         up declarations from mf-runtime.h.
1253         (mf_make_builtin, mf_make_cache_struct_type): New functions.
1254         (mf_cache_shift_decl, mf_cache_mask_decl, mf_unregister_fndecl):
1255         Correct commentary.
1256         (execute_mudflap_function_decls, mudflap_register_call):
1257         Don't call mf_init_extern_trees.
1258         (mudflap_finish_file): Use cgraph_build_static_cdtor.
1259
1260         * tree-mudflap.h: Update prototypes.
1261         * c-mudflap.c: Delete file.
1262         * c-common.c: Include tree-mudflap.h.
1263         (c_common_nodes_and_builtins): Call mudflap_init if appropriate.
1264         * Makefile.in: Remove all references to c-mudflap.o.
1265         Update dependencies.
1266
1267 2004-07-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1268
1269         * pa.md (prefetch, prefetch_32, prefetch_64): Only allow short
1270         displacements with the spatial-locality cache-control completer.
1271
1272 2004-07-05  Zack Weinberg  <zack@codesourcery.com>
1273
1274         * langhooks.c: Don't include gt-langhooks.h.
1275         (var_labelno): Delete.
1276         (lhd_set_decl_assembler_name): Do not append a distinguishing
1277         number to file-scope internal-linkage declarations for the first
1278         input file, even if they have DECL_CONTEXT set.  Use DECL_UID of
1279         the declaration itself (if at block scope), or its containing
1280         TRANSLATION_UNIT_DECL (if at file scope) for the distinguishing
1281         number.
1282
1283         * opts.c (cur_in_fname): New global.
1284         * opts.h: Declare it.
1285         * tree.c: Include opts.h.
1286         (make_node_stat): If creating a TRANSLATION_UNIT_DECL, give it
1287         DECL_UID equal to cur_in_fname.
1288         (copy_node_stat): Do not change DECL_UID when copying a
1289         TRANSLATION_UNIT_DECL.
1290         (build_common_tree_nodes): Adjust next_decl_uid to reserve the
1291         range 0 .. num_in_fnames-1 for TRANSLATION_UNIT_DECLs.
1292
1293         * c-decl.c (c_static_assembler_name): Delete.
1294         * c-tree.h (c_static_assembler_name): Delete prototype.
1295         * c-lang.c, objc/objc-lang.c: Don't override
1296         LANG_HOOKS_SET_DECL_ASSEMBLER_NAME.
1297
1298         * Makefile.in (tree.o): Update dependencies.
1299         (GTFILES): Remove langhooks.c.
1300
1301 2004-07-05  Roger Sayle  <roger@eyesopen.com>
1302
1303         * fold-const.c (fold) <TRUNC_MOD_EXPR>: Optimize unsigned modulus
1304         by a power of two into a bit-wise AND, i.e. "X % C" as "X & (C-1)".
1305         Normalize "X % C" as "X % -C" for signed modulus and negative C.
1306         Optimize "X % -Y" as "X % Y" for signed modulus.
1307         <EQ_EXPR>: Recursively call "fold" when transforming "(X % Y) == 0"
1308         into "((unsigned) X % Y) == 0".
1309
1310 2004-07-05  Joseph S. Myers  <jsm@polyomino.org.uk>
1311
1312         * sourcebuild.texi (Config Fragments): Use @comma{} in
1313         cross-reference to section title.
1314
1315 2004-07-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1316
1317         * tree.h (DECL_SEEN_IN_BIND_EXPR_P): New macro.
1318         * gimplify.c (gimple_add_tmp_var, gimplify_bind_expr): Use it.
1319         (gimplify_target_expr, gimplify_expr): Likewise.
1320         (copy_if_shared_r): No longer need special case for BIND_EXPR.
1321         (unshare_body, unvisit_body): Only look at nested if BODY_P is
1322         whole function.
1323         (gimplify_compound_lval): See if we can strip any useless conversion.
1324         (gimplify_modify_expr, gimplify_modify_expr_to_memcpy): Take size
1325         from RHS, not LHS.
1326         (gimplify_modify_expr_to_memset): Likewise.
1327         (gimplify_expr, case CONSTRUCTOR): Handle use as statement.
1328         * tree-inline.c (setup_one_parameter): Use DECL_SEEN_IN_BIND_EXPR_P.
1329         (declare_inline_vars): Likewise.
1330         (walk_type_fields): New function.
1331         (walk_tree): Use it.
1332         * tree-nested.c (create_tmp_var_for): Show seen in BIND_EXPR.
1333
1334         * tree-sra.c (struct sra_walk_fns): Init function now returns bool.
1335         (sra_walk_modify_expr): Allow init function to fail.
1336         (scan_init): Now returns bool.
1337         (generate_element_init): If can't understand INIT, return false.
1338         (scalarize_init): Return false if generate_element_init does.
1339
1340         * tree-pretty-print.c (dump_generic_node, case ARRAY_TYPE): Properly
1341         print bounds.
1342
1343         * expr.c (expand_expr_real_1, case SWITCH_EXPR): Don't check against
1344         bounds if bounds aren't constant.
1345
1346         * tree-cfg.c (verify_expr): Use CHECK_OP in binary case.
1347
1348         * function.c, langhooks-def.h, langhooks.h: Move max_size hook
1349         to type hooks; remove bogus PARAMS.
1350
1351 2004-07-05  Nathan Sidwell  <nathan@codesourcery.com>
1352
1353         * c-tree.h (TYPE_ACTUAL_ARG_TYPES): Use TYPE_LANG_SLOT_1.
1354         * dwarf2out.c (add_data_member_location_attribute): Check for
1355         TREE_BINFO.
1356         * tree.c (tree_node_kinds): Add "binfos".
1357         (binfo_lang_slots): New.
1358         (make_node_stat): Add TREE_BINFO.
1359         (make_tree_binfo_stat): New.
1360         (tree_node_structure): Add TREE_BINFO.
1361         * tree.def (TREE_BINFO): New.
1362         * tree.h (REC_OR_UNION_CHECK): Rename to ...
1363         (RECORD_OR_UNION_CHECK): ... here.
1364         (NOT_RECORD_OR_UNION_CHECK): New.
1365         (TRE_VIA_VIRTUAL): Allow TREE_LIST or TREE_BINFO.
1366         (TYPE_FIELDS, TYPE_METHODS, TYPE_VFIELD): Adjust for
1367         RECORD_OR_UNION_CHECK.
1368         (TYPE_BINFO): Use RECORD_OR_UNION_CHECK.
1369         (TYPE_LANG_SLOT_1): New.
1370         (BINFO_TYPE, BINFO_OFFSET, BINFO_VTABLE, BINFO_VIRTUALS,
1371         BINFO_BASETYPES, TYPE_BINFO_BASETYPES, BINFO_VPTR_FIELD,
1372         BINFO_BASEACCESSES, BINFO_INHERITANCE_CHAIN): Adjust.
1373         (BINFO_ELTS): Remove.
1374         (BINFO_LANG_SLOT): New.
1375         (struct tree_binfo): New.
1376         (binfo_lang_slots): Declare.
1377         (enum tree_node_structure_enum): Add TS_BINFO.
1378         (union tree_node): Add binfo.
1379         (make_tree_binfo_stat): Declare.
1380         (make_tree_binfo): New.
1381         (enum tree_node_kind): Add binfo_kind.
1382
1383         * objc/objc-act.c (start_class, objc_declare_protocols,
1384         start_protocols): Use TYPE_LANG_SLOT_1.
1385         * objc/objc-act.h (CLASS_BINFO_ELTS, PROTOCOL_BINFO_ELTS): Rename
1386         to ...
1387         (CLASS_LANG_SLOT_ELTS, PROTOCOL_LANG_SLOT_ELTS): ... here.
1388         (CLASS_IVARS, CLASS_RAW_IVARS, CLASS_STATIC_TEMPLATE,
1389         CLASS_CATEGORY_LIST, CLASS_PROTOCOL_LIST, CLASS_OWN_IVARS,
1390         PROTOCOL_LIST, PROTOCOL_FORWARD_DECL): Use TYPE_LANG_SLOT_1.
1391
1392 2004-07-05  Steven Bosscher  <stevenb@suse.de>
1393
1394         * rtl.h (struct rtx_def): Remove the integrated flag.
1395         Use the return_val flag for MEM_SCALAR_P.
1396         Reshuffle and update flags in CLEAR_RTX_FLAGS.
1397
1398 2004-07-05  Richard Sandiford  <rsandifo@redhat.com>
1399
1400         PR target/16357
1401         * config/mips/mips.c (mips_block_move_straight): Pass BLKmode memrefs
1402         to mips_expand_unaligned_load, mips_expand_unaligned_store, and
1403         move_by_pieces.
1404
1405 2004-07-05  Josef Zlomek  <zlomekj@suse.cz>
1406
1407         * var-tracking.c: Fix some comments.
1408         (frame_stack_adjust): New.
1409         (vt_stack_adjustments): Init stack_adjust of entry block to
1410         minus stack adjustment of function prologue.
1411         (adjust_stack_reference): Do not adjust if adjustment == 0.
1412         (compute_bb_dataflow): Use plus_constant instead of gen_rtx_PLUS.
1413         (emit_notes_in_bb): Likewise.
1414         (vt_add_function_parameters): Do not adjust locations of
1415         function arguments.
1416         (vt_initialize): Compute the stack adjustment of function
1417         prologue and offset the initial "location" of frame_base_decl
1418         from the stack pointer after prologue.
1419
1420 2004-07-04  Richard Henderson  <rth@redhat.com>
1421
1422         * function.c (struct assign_parm_data_all): New.
1423         (struct assign_parm_data_one): New.
1424         (assign_parms_initialize_all, assign_parms_augmented_arg_list,
1425         assign_parm_find_data_types, assign_parms_setup_varargs,
1426         assign_parm_find_entry_rtl, assign_parm_is_stack_parm,
1427         assign_parm_find_stack_rtl, assign_parm_adjust_entry_rtl,
1428         assign_parm_adjust_stack_rtl, assign_parm_setup_block_p,
1429         assign_parm_setup_block, assign_parm_setup_reg,
1430         assign_parm_setup_stack, assign_parms_unsplit_complex): Split from ...
1431         (assign_parms): ... here.
1432
1433 2004-07-04  Daniel Berlin  <dberlin@dberlin.org>
1434
1435         * tree-ssa-pre.c (bb_value_sets): phi_gen, tmp_gen, new_sets
1436         now are bitmap_set_t's.
1437         (bitmap_insert_into_set): No point in inserting the value if
1438         it's invariant.
1439         (bitmap_set_contains): New function.
1440         (bitmap_set_replace_value): Add comment on why we do it
1441         this way.
1442         (set_contains): Removed.
1443         (bitmap_set_subtract_from_value_set): New name of
1444         set_subtract now that it's arguments are two different
1445         types of sets.
1446         Update callers.
1447         (bitmap_find_leader): Change algorithm used.
1448         (find_or_generate_expression): Update use of functions for new
1449         bitmap sets.
1450         (create_expression_by_pieces): Ditto.
1451         (insert_aux): Ditto.
1452         (insert): Ditto.
1453         (add_to_sets): Ditto.
1454         (init_pre): Ditto.
1455         (execute_pre): Ditto.
1456         (compute_avail): Ditto.
1457         Also ignore virtual phis.
1458
1459 2004-07-04  Richard Sandiford  <rsandifo@redhat.com>
1460
1461         * combine.c (simplify_comparison): Fix comment typo.
1462
1463 2004-07-04  Eric Botcazou  <ebotcazou@libertysurf.fr>
1464
1465         * config/sparc/sparc.c (SIBCALL_SLOT_EMPTY_P): Rename
1466         into LEAF_SIBCALL_SLOT_RESERVED_P after negation.
1467         (eligible_for_sibcall_delay): Adjust use of SIBCALL_SLOT_EMPTY_P.
1468         (output_restore): Change parameter from 'insn' to 'pat'.
1469         (output_return): Adjust call to output_restore.
1470         (output_sibcall): Adjust use of SIBCALL_SLOT_EMPTY_P.
1471         Adjust call to output_restore.
1472
1473 2004-07-04  Neil Booth  <neil@duron.akihabara.co.uk>
1474
1475         * config/netbsd.h (NETBSD_OS_CPP_BUILTINS_COMMON): Define __unix__
1476         and assert system is bsd.
1477
1478 2004-07-04  Richard Sandiford  <rsandifo@redhat.com>
1479
1480         * config/mips/mips.h (MASK_DEBUG_C, TARGET_DEBUG_C_MODE): Delete.
1481         (TARGET_SWITCHES): Remove -mdebugc.
1482         * config/mips/mips.md (seq, sne, sgt, sge, slt, sle, sgtu, sgeu)
1483         (sltu, sleu): Remove TARGET_DEBUG_C_MODE handling.
1484         (seq_[sd]i, sne_[sd]i, sge_[sd]i, sle_[sd]i_reg, sgeu_[sd]i)
1485         (sle_[sd]i_reg): Delete.
1486
1487 2004-07-04  Steven Bosscher  <stevenb@suse.de>
1488
1489         * config/iq2000/iq2000.c (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE):
1490         Define.
1491         * config/iq2000/iq2000.md: Translate old pipeline description to an
1492         equivalent new one.
1493
1494 2004-07-04  Roger Sayle  <roger@eyesopen.com>
1495
1496         * tree-ssa-ccp.c (set_rhs): Change function to return a bool.
1497         Ensure the replacement rhs is valid gimple before performing
1498         the substitution.  Return false if these sanity checks fail.
1499         (fold_stmt): Only set changed to true, if set_rhs returns true.
1500         (execute_fold_all_builtins): Only call modify_stmt if set_rhs
1501         succeeds.
1502
1503 2004-07-04  Richard Henderson  <rth@redhat.com>
1504
1505         PR c/16348
1506         * c-typeck.c (c_finish_loop): Don't clear cond for cond_is_first loops.
1507
1508 2004-07-04  Mark Mitchell  <mark@codesourcery.com>
1509
1510         * configure.ac (ranlib_flags): New variable.
1511         * Makefile.in (RANLIB_FLAGS): New variable.
1512         (libbackend.a): Use it.
1513         * configure: Regenerated.
1514
1515 2004-07-04  Roger Sayle  <roger@eyesopen.com>
1516
1517         * ifcvt.c (noce_try_sign_mask): Call emit_store_flag to generate
1518         a "sign mask" instead of using ashr_optab directly.
1519
1520 2004-07-04  Neil Booth  <neil@duron.akihabara.co.uk>
1521
1522         * doc/cpp.texi: Don't document what we do for ill-formed expressions.
1523         * doc/cppopts.texi: Clarify processing of command-line defines.
1524
1525 2004-07-04  Gerald Pfeifer  <gerald@pfeifer.com>
1526
1527         * doc/contrib.texi (Contributors): Adjust link for GNU Classpath.
1528
1529 2004-07-04  Richard Henderson  <rth@redhat.com>
1530
1531         * rtl.def (ADDRESSOF): Remove.
1532         * alias.c (rtx_equal_for_memref_p): Don't handle addressof.
1533         (find_base_term, memrefs_conflict_p): Likewise.
1534         * cse.c (fixed_base_plus_p, find_best_addr: Likewise.
1535         (fold_rtx, cse_insn, set_live_p): Likewise.
1536         * dwarf2out.c (mem_loc_descriptor): Likewise.
1537         (add_location_or_const_value_attribute): Likewise.
1538         * emit-rtl.c (copy_insn_1): Likewise.
1539         * explow.c (memory_address): Likewise.
1540         * expmed.c (store_split_bit_field): Likewise.
1541         * expr.c (expand_expr_real_1): Likewise.
1542         * function.c (instantiate_decl
1543         (instantiate_virtual_regs_1, fix_lexical_addr): Likewise.
1544         * genrecog.c (preds, validate_pattern): Likewise.
1545         * integrate.c (copy_rtx_and_substitute): Likewise.
1546         * recog.c (general_operand, register_operand): Likewise.
1547         (memory_address_p): Likwise.
1548         * reload1.c (eliminate_regs, elimination_effects): Likewise.
1549         * rtl.c (copy_rtx): Likewise.
1550         * rtlanal.c (rtx_unstable_p, rtx_varies_p): Likewise.
1551         (rtx_addr_can_trap_p, nonzero_address_p, address_cost): Likewise.
1552         * rtlhooks.c (gen_lowpart_general): Likewise.
1553         * stmt.c (expand_asm_operands): Likewise.
1554         * web.c (entry_register, replace_ref, web_main): Likewise.
1555         * config/alpha/alpha.c (input_operand, alpha_legitimate_address_p,
1556         alpha_expand_block_move, alpha_expand_block_clear): Likewise.
1557         * config/arm/arm.c (thumb_rtx_costs): Likewise.
1558         * config/c4x/c4x.c (c4x_valid_operands): Likewise.
1559         * config/frv/frv.c (move_destination_operand, move_source_operand,
1560         condexec_dest_operand, condexec_source_operand,
1561         condexec_memory_operand): Likewise.
1562         * config/h8300/h8300.h (PREDICATE_CODES): Likewise.
1563         * config/ia64/ia64.c (general_xfmode_operand): Likewise.
1564         (destination_xfmode_operand): Likewise.
1565         * config/mips/mips.h (PREDICATE_CODES): Likewise.
1566         * config/mn10300/mn10300.c (mn10300_address_cost_1): Likewise.
1567         * config/s390/s390.c (general_s_operand): Likewise.
1568         * config/s390/s390.md (mov*): Likewise.
1569         * config/sparc/sparc.h (PREDICATE_CODES): Likewise.
1570
1571         * c-typeck.c (c_mark_addressable): Don't put_var_into_stack.
1572         * expr.c (expand_expr_real_1): Likewise.
1573         * stmt.c (expand_decl): Likewise.
1574         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
1575
1576         * function.c (struct fixup_replacement, struct insns_for_mem_entry,
1577         postponed_insns, put_var_into_stack, put_reg_into_stack,
1578         schedule_fixup_var_refs, fixup_var_refs, find_fixup_replacement,
1579         fixup_var_refs_insns, fixup_var_refs_insns_with_hash,
1580         fixup_var_refs_insn, fixup_var_refs_1, fixup_memory_subreg,
1581         walk_fixup_memory_subreg, fixup_stack_1, optimize_bit_field,
1582         gen_mem_addressof, flush_addressof, put_addressof_into_stack,
1583         purge_bitfield_addressof_replacements, purge_addressof_replacements,
1584         purge_addressof_1, insns_for_mem_hash, insns_for_mem_comp,
1585         struct insns_for_mem_walk_info, insns_for_mem_walk,
1586         compute_insns_for_mem, is_addressof, purge_addressof, setjmp_protect,
1587         setjmp_protect_args): Remove.
1588         (push_function_context_to): Don't handle var_refs_queue.
1589         (pop_function_context_from, free_after_compilation): Likewise.
1590         (instantiate_virtual_regs): Don't handle parm_reg_stack_loc.
1591         (assign_parms, allocate_struct_function): Likewise.
1592         (use_register_for_decl): New.
1593         (expand_function_end): Don't setjmp_protect.
1594         * function.h (struct emit_status): Update commentary.
1595         (struct function): Remove x_max_parm_reg, x_parm_reg_stack_loc.
1596         (max_parm_reg, parm_reg_stack_loc): Remove.
1597         * passes.c (DFI_addressof): Remove.
1598         (dump_file_info): Remove addressof.
1599         (rest_of_handle_addressof): Remove.
1600         (rest_of_compilation): Don't call it.
1601         * rtl.h (ADDRESSOF_REGNO, ADDRESSOF_DECL): Remove.
1602         * stmt.c (expand_decl): Use use_register_for_decl.
1603         * tree.h: Update decls.
1604         * web.c (mark_addressof): Remove.
1605         * doc/invoke.texi (-dF): Remove.
1606
1607 2004-07-03  Richard Henderson  <rth@redhat.com>
1608
1609         * config/ia64/ia64.c (spill_xfmode_operand): Use assign_stack_temp
1610         instead of gen_mem_addressof.
1611         * config/ia64/ia64.md (movxf): Use assign_stack_temp to handle
1612         TImode output register.
1613
1614 2004-07-03  Richard Henderson  <rth@redhat.com>
1615
1616         PR tree-optimization/16341
1617         * tree-sra.c (sra_walk_function): Increment to next stmt before
1618         processing the current stmt.
1619         (sra_insert_after): Always use BSI_SAME_STMT.
1620
1621 2004-07-03  Richard Henderson  <rth@redhat.com>
1622
1623         * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Don't fold
1624         fp plus with minus.
1625
1626 2004-07-03  Joseph S. Myers  <jsm@polyomino.org.uk>
1627
1628         * tree.c (type_hash_eq): Allow TYPE_MIN_VALUE which compares equal
1629         with tree_int_cst_equal.
1630
1631 2004-07-03  Andreas Schwab  <schwab@suse.de>
1632
1633         * config/ia64/ia64.md: Define new attribute "empty".
1634         (prologue_use, nop_x, insn_group_barrier): Set it.
1635
1636         * config/ia64/ia64.c (ia64_reorg): When looking for trailing call
1637         skip over "empty" insns.
1638
1639 2004-07-03  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1640
1641         * tree-inline.c (initialize_inlined_parameters): Pass proper function
1642         context to gimplify_body.
1643         (walk_tree): Don't walk into types twice.
1644         (walk_tree, case POINTER_TYPE): Deal with mutually recursive pointers.
1645
1646         * tree-sra.c (generate_element_init): Remove any useless conversions.
1647
1648         * gimplify.c (gimplify_conversion): Remove stripping useless
1649         conversions from here.
1650         (gimplify_expr): Put it here, in place of call to STRIP_MAIN_TYPE_NOPS.
1651         (gimplify_modify_expr_to_memcpy, gimplify_variable_sized_compare):
1652         Unshare before substituting PLACEHOLDER_EXPR.
1653         (gimplify_modify_expr_to_memset): Likewise.
1654         Pass address of TO to memset, not TO itself.
1655         (gimplify_init_constructor): Make copy of OBJECT so we have it each
1656         time we make an expression (to match a PLACEHOLDER_EXPR).
1657
1658         * tree-ssa.c (tree_ssa_useless_type_conversion): Also look at
1659         VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
1660         * tree-ssa-ccp.c (fold_stmt): Call just STRIP_USELESS_TYPE_CONVERSION.
1661         * tree-ssa-dom.c (local_fold): Likewise.
1662
1663         * langhooks-def.h (LANG_HOOKS_TYPE_MAX_SIZE): New langhook.
1664         * langhooks.h (strct lang_hooks): New field type_max_size.
1665         * function.c (assign_temp): Call it.
1666
1667 2004-07-03  Steven Bosscher  <stevenb@suse.de>
1668
1669         * config/sh/sh.c (sh_use_dfa_interface): Add TARGET_SH1.
1670         * config/sh/sh.md: Convert the SH1 pipeline description to
1671         a DFA model.
1672
1673 2004-07-02  Zack Weinberg  <zack@codesourcery.com>
1674
1675         * c-decl.c (struct c_binding): Remove contour field; add
1676         depth, invisible, nested fields.
1677         (B_IN_SCOPE, B_IN_CURRENT_SCOPE, B_IN_FILE_SCOPE)
1678         (B_IN_EXTERNAL_SCOPE): New convenience macros.
1679         (bind): Add invisible and nested arguments. Initialize
1680         new fields of struct c_binding; adjust loop scanning for
1681         insertion point.
1682         (free_binding_and_advance): Clear structure with memset.
1683         (pop_scope): Adjust to match.  Set DECL_CONTEXT on everything
1684         in file scope, even if it's in external scope too.
1685         (pushdecl): Adjust to match.  Create invisible file-scope
1686         declarations for block-scope forward declarations of static functions.
1687         (pushtag, warn_if_shadowing, pushdecl_top_level, implicitly_declare)
1688         (undeclared_variable, lookup_label, declare_label, define_label)
1689         (lookup_tag, lookup_name, lookup_name_in_scope, builtin_function)
1690         (c_make_fname_decl, store_parm_decls_newstyle, identifier_global_value)
1691         (store_parm_decls_oldstyle): Adjust to match.
1692         (diagnose_mismatched_decls): Correct handling of linkage clashes.
1693         (merge_decls): No need to copy C_DECL_IN_EXTERNAL_SCOPE.
1694
1695         * c-tree.h (C_DECL_IN_EXTERNAL_SCOPE): Delete.
1696         (C_DECL_DECLARED_BUILTIN, C_DECL_REGISTER): Slide down one.
1697
1698 2004-07-02  Richard Henderson  <rth@redhat.com>
1699
1700         * c-decl.c (grokdeclarator): Don't frob current_function_decl
1701         around variable_size.
1702         (set_decl_nonlocal): Remove.
1703         (store_parm_decls): Add stmts for pending sizes.
1704         * calls.c (calls_function, calls_function_1): Remove.
1705         (precompute_arguments): Don't call it.
1706         * cfgexpand.c (set_save_expr_context): Remove.
1707         (tree_expand_cfg): Don't call it.
1708         * dwarf2out.c (add_bound_info): Don't handle SAVE_EXPR.
1709         (dwarf2out_finish): Likewise.
1710         * expr.c (emit_block_move): Adjust addresses to BLKmode.
1711         (store_constructor): Don't pre-evaluate SAVE_EXPR.
1712         (safe_from_p): Don't queue SAVE_EXPRs.
1713         (expand_expr_real_1 <case SAVE_EXPR>): Rewrite to expect,
1714         or build plain VAR_DECLs.
1715         * fold-const.c (twoval_comparison_p): Don't look at SAVE_EXPR_RTL.
1716         (fold): Likewise.
1717         (fold_checksum_tree): Don't special-case SAVE_EXPR.
1718         * function.c (free_after_compilation): Don't clear x_save_expr_regs.
1719         (put_var_into_stack): Don't handle SAVE_EXPR.
1720         (gen_mem_addressof): Likewise.
1721         * function.h (struct function): Remove x_save_expr_regs.
1722         (save_expr_regs): Remove.
1723         * gengtype.c (adjust_field_tree_exp): Don't special-case SAVE_EXPR.
1724         * print-tree.c (print_node): Don't dump SAVE_EXPR_NOPLACEHOLDER.
1725         * stor-layout.c (variable_size): Don't set it.
1726         (force_type_save_exprs, force_type_save_exprs_1): Remove.
1727         * tree-inline.c (remap_save_expr): Remove fn argument.  Update
1728         all callers.  Don't set SAVE_EXPR_CONTEXT.
1729         * tree-inline.h (remap_save_expr): Update decl.
1730         * tree.c (save_expr): Update build size.
1731         (first_rtl_op): Don't handle SAVE_EXPR.
1732         (unsave_expr_1, contains_placeholder_p): Likewise.
1733         (decl_function_context): Likewise.
1734         * tree.def (SAVE_EXPR): Remove args 1 and 2.
1735         * tree.h (SAVE_EXPR_CONTEXT, SAVE_EXPR_RTL): Remove.
1736         (SAVE_EXPR_NOPLACEHOLDER, SAVE_EXPR_PERSISTENT_P): Remove.
1737
1738 2004-07-03  Joseph S. Myers  <jsm@polyomino.org.uk>
1739
1740         * doc/bugreport.texi, doc/configterms.texi, doc/contrib.texi,
1741         doc/contribute.texi, doc/cpp.texi, doc/cppinternals.texi,
1742         doc/extend.texi, doc/install.texi, doc/invoke.texi, doc/md.texi,
1743         doc/portability.texi, doc/tree-ssa.texi, doc/trouble.texi: Avoid
1744         some first-person references and patronizing comments.  Based on
1745         printed manual.
1746         * doc/invoke.texi: Don't reference fortran@gnu.org.
1747         * doc/trouble.texi (Warning when a non-void function value is
1748         ignored): Rewrite.  From Russ Allbery and Chris Devers.
1749
1750 2004-07-02  Daniel Berlin  <dberlin@dberlin.org)
1751
1752         * tree-ssa-pre.c (bitmap_set_t): New.
1753         (bb_value_sets): avail_out is now a bitmap_set_t.
1754         (bitmap_find_leader): New function.
1755         (bitmap_value_insert_into_set): Ditto.
1756         (bitmap_set_copy): Ditto.
1757         (bitmap_value_replace_in_set): Ditto.
1758         (bitmap_set_contains_value): Ditto.
1759         (bitmap_set_new): Ditto.
1760         (bitmap_set_pool): New pool.
1761         (find_or_generate_expression): Use bitmap_ functions on AVAIL sets.
1762         (insert_aux): Ditto.
1763         (add_to_sets): Ditto.
1764         (compute_avail): Ditto
1765         (eliminate): Ditto.
1766         (init_pre): Ditto.
1767         (fini_pre): Ditto.
1768         (execute_pre): Ditto.
1769
1770 2004-07-02  Roger Sayle  <roger@eyesopen.com>
1771
1772         * config/rs6000/rs6000.c (struct processor_costs): New structure
1773         used to hold instruction latencies/sizes for processor types.
1774         (rs6000_cost): New global variable pointing to current CPU's costs.
1775         (rs6000_override_options): Initialize rs6000_cost to point to the
1776         appropriate cost table based upon rs6000_cpu and optimize_size.
1777         (rs6000_rtx_costs): Use rs6000_cost to avoid hardcoding processor
1778         timings inline.
1779
1780 2004-07-02  Richard Henderson  <rth@redhat.com>
1781
1782         * expmed.c (make_tree): Don't use SET_DECL_RTL.
1783
1784 2004-07-02  Steven Bosscher  <stevenb@suse.de>
1785
1786         * tree-flow.h (bb_ann_d): Remove ephi_nodes field.
1787
1788 2004-07-01  Richard Henderson  <rth@redhat.com>
1789
1790         * config/alpha/alpha.c (struct machine_function): Add gp_save_rtx.
1791         (alpha_gp_save_rtx): Use assign_stack_local instead of
1792         gen_mem_addressof.
1793
1794 2004-07-01  Richard Henderson  <rth@redhat.com>
1795
1796         * config/alpha/alpha.c (struct alpha_rtx_cost_data): Add int_div.
1797         (alpha_rtx_cost_data): Update to match.
1798         (alpha_rtx_cost_size): New.
1799         (alpha_rtx_costs): Honor optimize_size.
1800
1801 2004-07-01  Richard Henderson  <rth@redhat.com>
1802
1803         * gimple-low.c (lower_function_body): Don't reset_block_changes here.
1804         * cfgexpand.c (tree_expand_cfg): Do it here.
1805         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): And here.
1806         * config/ia64/ia64.c (ia64_output_mi_thunk): And here.
1807         * config/mips/mips.c (mips_output_mi_thunk): And here.
1808         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): And here.
1809         * config/sh/sh.c (sh_output_mi_thunk): And here.
1810         * config/sparc/sparc.c (sparc_output_mi_thunk): And here.
1811
1812 2004-07-01  Richard Henderson  <rth@redhat.com>
1813
1814         * tree.def (RTL_EXPR): Remove.
1815         * c-typeck.c (lvalue_p): Don't handle it.
1816         * expr.c (safe_from_p): Likewise.
1817         (expand_expr_real_1): Likewise.
1818         * fold-const.c (non_lvalue, operand_equal_p, fold): Likewise.
1819         (fold_checksum_tree, tree_expr_nonnegative_p): Likewise.
1820         * gengtype.c (adjust_field_tree_exp): Likewise.
1821         * stmt.c (warn_if_unused_value): Likewise.
1822         * tree-gimple.c (recalculate_side_effects): Likewise.
1823         * tree-pretty-print.c (dump_generic_node): Likewise.
1824         * tree.c (make_node_stat, first_rtl_op, unsave_expr_1): Likewise.
1825         (unsafe_for_reeval, stabilize_reference, build1_stat): Likewise.
1826         * tree.h (RTL_EXPR_SEQUENCE, RTL_EXPR_RTL, RTL_EXPR_ALT_RTL): Remove.
1827
1828         * stmt.c (struct stmt_status): Remove x_last_expr_type,
1829         x_last_expr_value, x_last_expr_alt_rtl, x_expr_stmts_for_value.
1830         (last_expr_type, last_expr_value, last_expr_alt_rtl): Remove.
1831         (expand_expr_stmt): Merge with expand_expr_stmt_value.  Remove
1832         all the bits that tracked last_expr.
1833         (expand_end_bindings): Don't track last_expr.
1834         (expand_start_stmt_expr, expand_end_stmt_expr): Remove.
1835         (clear_last_expr): Remove.
1836         (expand_asm): Don't call it.
1837         (expand_asm_operands, expand_end_cond): Likewise.
1838         (expand_naked_return, expand_null_return_1): Likewise.
1839         * c-typeck.c (c_begin_compound_stmt): Likewise.
1840         * cfgexpand.c (expand_block): Use expand_expr_stmt.
1841         * expr.c (expand_expr_real_1): Likewise.
1842         * tree.h: Update prototypes.
1843
1844         * function.h (struct sequence_stack): Remove sequence_rtl_expr.
1845         (struct emit_status): Remove sequence_rtl_expr.
1846         (struct function): Remove x_rtl_expr_chain.
1847         (seq_rtl_expr, rtl_expr_chain): Remove.
1848         * function.c (struct temp_slot): Remove rtl_expr.
1849         (assign_stack_temp_for_type): Don't set it.
1850         (free_temp_slots, pop_temp_slots): Don't check it.
1851         (free_after_compilation): Don't clear x_rtl_expr_chain.
1852         (fixup_var_refs): Don't search it.
1853         (preserve_rtl_expr_result, free_temps_for_rtl_expr): Remove.
1854         * emit-rtl.c (start_sequence): Don't use sequence_rtl_expr
1855         or seq_rtl_expr.
1856         (push_topmost_sequence): Likewise.
1857         (end_sequence, init_emit): Likewise.
1858         (start_sequence_for_rtl_expr): Remove.
1859         * expmed.c (make_tree): Build a VAR_DECL instead of an RTL_EXPR.
1860         * rtl.h (preserve_rtl_expr_result): Remove.
1861
1862 2004-07-02  Kazu Hirata  <kazu@cs.umass.edu>
1863
1864         * ifcvt.c, modulo-sched.c, tree-alias-common.c, tree-sra.c,
1865         tree-ssa-copy.c, tree-ssa-dom.c, tree-ssa-pre.c: Fix comment
1866         typos.
1867
1868 2004-07-02  Aaron W. LaFramboise <aaronraolete36@aaronwl.com>
1869
1870         * gcc.c (STANDARD_STARTFILE_PREFIX_1): Define.
1871         (STANDARD_STARTFILE_PREFIX_2): Define.
1872         (standard_startfile_prefix_1): Initialize to
1873         STANDARD_STARTFILE_PREFIX_1.
1874         (standard_startfile_prefix_2): Initialize to
1875         STANDARD_STARTFILE_PREFIX_2.
1876         * config/i386/mingw32.h (MD_STARTFILE_PREFIX): Remove.
1877         (STANDARD_STARTFILE_PREFIX_1): Define.
1878         (STANDARD_STARTFILE_PREFIX_2): Define.
1879         * doc/tm.texi (STANDARD_STARTFILE_PREFIX_1): Document.
1880         (STANDARD_STARTFILE_PREFIX_2): Document.
1881
1882 2004-07-01  Richard Henderson  <rth@redhat.com>
1883
1884         * tree-sra.c (sra_walk_expr): Don't maybe_lookup_element_for_expr
1885         in order to disable scalarization.  Instead set a flag and wait
1886         for a candidate decl.
1887
1888 2004-07-01  Joseph S. Myers  <jsm@polyomino.org.uk>
1889
1890         * doc/cppinternals.texi, doc/install.texi, doc/invoke.texi,
1891         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi, doc/trouble.texi:
1892         Use terminology "testsuite" and "enumerated".
1893
1894 2004-07-01  Richard Henderson  <rth@redhat.com>
1895
1896         * dwarf2out.c (reg_save): Use INVALID_REGNUM.
1897         (dwarf2out_reg_save, dwarf2out_return_save): Likewise.
1898         (initial_return_save): Likewise.
1899         (flush_queued_reg_saves): Remap register numbers.
1900         (dwarf2out_return_reg): Likewise.
1901
1902 2004-07-01  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1903
1904         * gimplify.c (gimplify_one_sizepos): Don't do anything if any VAR_DECL.
1905
1906         * tree-pretty-print.c (dump_generic_node, case ARRAY_REF): Use
1907         access functions for lower bound and element size and only output
1908         if lower bound nonzero or element size not same as that of type.
1909         (dump_generic_node, case COMPONENT_REF): Use access func. for offset.
1910
1911 2004-07-01  Paolo Bonzini  <bonzini@gnu.org>
1912
1913         * c-pretty-print.c (pp_c_postfix_expression): Fix pasto.
1914
1915 2004-07-01  Per Bothner  <per@bothner.com>
1916
1917         * final.c (final):  Fix typo reported by Aaron W. LaFramboise.
1918
1919 2004-07-01  Jakub Jelinek  <jakub@redhat.com>
1920
1921         * expr.c (expand_assignment): Optimize bitfld += cst for 1 bit
1922         bitfields as well.  STRIP_NOPS from src operand and PLUS_EXPR's
1923         first operand.  Don't optimize if the bitfield is volatile.
1924
1925 2004-07-01  Paolo Bonzini  <bonzini@gnu.org>
1926
1927         * c-pretty-print.c (pp_c_postfix_expression): Handle
1928         floating-point comparison operators.
1929         (pp_c_expression): Pass floating-point comparison
1930         operators to pp_c_postfix_expression.
1931
1932 2004-07-01  Roger Sayle  <roger@eyesopen.com>
1933
1934         * simplify-rtx.c (simplify_binary_operation) <PLUS, MINUS>: Use
1935         rtx_cost instead of "had_mult" to determine whether the transformed
1936         expression is cheaper than the original.
1937
1938 2004-07-01  Jerry Quinn  <jlquinn@optonline.net>
1939
1940         * alias.c (get_alias_set, canon_rtx, get_addr,
1941         nonoverlapping_memrefs_p, nonlocal_referenced_p_1, memory_modified_1):
1942         Use MEM_P.
1943         * builtins.c (expand_builtin_prefetch, expand_builtin_profile_func,
1944         expand_builtin): Likewise.
1945         * calls.c (expand_call, emit_library_call_value_1, store_one_arg):
1946         Likewise.
1947         * combine.c (can_combine_p, combinable_i3pat, try_combine,
1948         find_split_point, combine_simplify_rtx, simplify_set, make_extraction,
1949         rtx_equal_for_field_assignment_p, gen_lowpart_for_combine,
1950         record_dead_and_set_regs_1, get_last_value_validate,
1951         mark_used_regs_combine, move_deaths, unmentioned_reg_p_1): Likewise.
1952         * cse.c (check_dependence, canon_hash, equiv_constant,
1953         gen_lowpart_if_possible, cse_insn, invalidate_from_clobbers,
1954         cse_around_loop, cse_check_loop_start, cse_set_around_loop,
1955         count_reg_usage): Likewise.
1956         * cselib.c (rtx_equal_for_cselib_p, add_mem_for_addr, cselib_lookup,
1957         cselib_invalidate_mem, cselib_invalidate_rtx, cselib_record_set,
1958         cselib_record_sets): Likewise.
1959         * dbxout.c (PARM_PASSED_IN_MEMORY, dbxout_symbol,
1960         dbxout_symbol_location, dbxout_parms, dbxout_reg_parms): Likewise.
1961         * ddg.c (mark_mem_use, mark_mem_store, rtx_mem_access_p): Likewise.
1962         * df.c (df_uses_record): Likewise.
1963         * dojump (do_jump): Likewise.
1964         * dwarf2out.c (stack_adjust_offset, mem_loc_descriptor,
1965         loc_descriptor_from_tree, rtl_for_decl_location, add_bound_info,
1966         decl_start_label): Likewise.
1967         * emit-rtl.c (gen_complex_constant_part, gen_highpart,
1968         operand_subword, change_address_1, make_safe_from): Likewise.
1969         * explow.c (break_out_memory_refs, copy_all_regs, validize_mem,
1970         stabilize, force_not_mem): Likewise.
1971         * expmed.c (store_bit_field, store_split_bit_field, extract_bit_field,
1972         expand_mult_const, expand_divmod, emit_store_flag): Likewise.
1973         * expr.c (convert_move, convert_modes, emit_block_move,
1974         emit_group_load, emit_group_store, clear_storage, emit_move_insn,
1975         emit_move_insn_1, expand_assignment, store_expr,
1976         store_constructor_field, store_constructor, store_field,
1977         force_operand, safe_from_p, expand_expr_real_1, expand_increment):
1978         Likewise.
1979         * final.c (cleanup_subreg_operands, alter_subreg,
1980         get_mem_expr_from_op): Likewise.
1981         * flow.c (notice_stack_pointer_modification_1,
1982         init_propagate_block_info, insn_dead_p, mark_set_1, mark_used_regs):
1983         Likewise.
1984         * function.c (mark_temp_addr_taken, preserve_temp_slots,
1985         preserve_rtl_expr_result, put_var_into_stack, fixup_var_refs_1,
1986         optimize_bit_field, flush_addressof, purge_addressof_1,
1987         instantiate_decl, instantiate_virtual_regs_1, assign_parms,
1988         setjmp_protect, setjmp_protect_args, fix_lexical_addr,
1989         keep_stack_depressed): Likewise.
1990         * ifcvt.c (noce_try_cmove_arith, noce_try_abs, noce_operand_ok,
1991         noce_process_if_block, find_memory): Likewise.
1992         * integrate.c (subst_constants, allocate_initial_values): Likewise.
1993         * local-alloc.c (validate_equiv_mem_from_store, memref_referenced_p,
1994         update_equiv_regs): Likewise.
1995         * loop.c (scan_loop, prescan_loop, note_addr_stored, check_store,
1996         maybe_eliminate_biv_1, find_mem_in_note_1): Likewise.
1997         * optabs.c (expand_abs, emit_unop_insn): Likewise.
1998         * passes.c (rest_of_handle_final): Likewise.
1999         * postreload.c (reload_cse_simplify_set, reload_cse_simplify_operands,
2000         move2add_note_store): Likewise.
2001         * ra-build.c (detect_remat_webs): Likewise.
2002         * ra-debug.c (dump_static_insn_cost): Likewise.
2003         * ra-rewrite.c (slots_overlap_p, insert_stores): Likewise.
2004         * recog.c (validate_change, apply_change_group, cancel_changes,
2005         validate_replace_rtx_1, general_operand, register_operand,
2006         nonmemory_operand, push_operand, pop_operand, memory_operand,
2007         indirect_operand, asm_operand_ok, offsettable_memref_p,
2008         offsettable_nonstrict_memref_p, constrain_operands,
2009         store_data_bypass_p): Likewise.
2010         * reg-stack.c (subst_stack_regs_pat): Likewise.
2011         * regclass.c (record_operand_costs, scan_one_insn, record_reg_classes,
2012         copy_cost, reg_scan_mark_refs): Likewise.
2013         * regmove.c (optimize_reg_copy_3, stack_memref_p,
2014         combine_stack_adjustments_for_block): Likewise.
2015         * regrename.c (copyprop_hardreg_forward_1): Likewise.
2016         * reload.c (can_reload_into, push_reload, decompose, immune_p,
2017         find_reloads, find_reloads_address, find_reloads_address_1,
2018         reg_overlap_mentioned_for_reload_p, refers_to_mem_for_reload_p,
2019         find_equiv_reg): Likewise.
2020         * reload1.c (reload, eliminate_regs, eliminate_regs_in_insn,
2021         reload_as_needed, choose_reload_regs, emit_input_reload_insns,
2022         do_input_reload, emit_reload_insns, gen_reload, delete_output_reload,
2023         delete_address_reloads): Likewise.
2024         * resource.c (mark_referenced_resources): Likewise.
2025         * rtlanal.c (get_jump_table_offset, count_occurrences,
2026         reg_referenced_p, reg_set_p, set_of_1, set_noop_p,
2027         reg_overlap_mentioned_p, note_uses, replace_regs, nonzero_bits1,
2028         num_sign_bit_copies1): Likewise.
2029         * rtlhooks.c (gen_lowpart_general): Likewise.
2030         * sched-deps.c (sched_analyze_1, sched_analyze_2): Likewise.
2031         * sdbout.c (PARM_PASSED_IN_MEMORY, sdbout_symbol,
2032         sdbout_toplevel_data, sdbout_parms, sdbout_reg_parms,
2033         sdbout_global_decl): Likewise.
2034         * simplify-rtx.c (simplify_subreg): Likewise.
2035         * stmt.c (expand_asm_operands, expand_expr_stmt_value, expand_decl,
2036         expand_anon_union_decl, expand_end_case_type): Likewise.
2037         * unroll.c (calculate_giv_inc): Likewise.
2038         * var-tracking.c (stack_adjust_offset_pre_post,
2039         bb_stack_adjust_offset, track_expr_p, count_uses, add_uses,
2040         add_stores, compute_bb_dataflow, vt_get_decl_and_offset,
2041         vt_add_function_parameters): Likewise.
2042         * varasm.c (make_var_volatile, notice_global_symbol,
2043         assemble_external, decode_addr_const, mark_weak,
2044         default_encode_section_info): Likewise.
2045
2046 2004-07-01  Steven Bosscher  <stevenb@suse.de>
2047
2048         * stmt.c (check_seenlabel): Remove.
2049         (pushcase, pushcase_range, expand_end_case_type): Don't call it.
2050
2051 2004-07-01  Richard Henderson  <rth@redhat.com>
2052
2053         * function.h (struct function): Remove x_function_call_count.
2054         (function_call_count): Remove.
2055         * calls.c (expand_call): Don't set it.
2056         * integrate.c (copy_rtx_and_substitute): Likewise.
2057
2058         * function.h (struct function): Remove x_cleanup_label.
2059         (cleanup_label): Remove.
2060         * stmt.c (expand_value_return): Don't use it.
2061         * function.c (free_after_compilation): Don't set it.
2062         (expand_function_start): Likewise.  Remove parms_have_cleanups arg.
2063         * cfgexpand.c (tree_expand_cfg): Update call.
2064         * tree.h (expand_function_start): Update decl.
2065
2066 2004-07-01  Joseph S. Myers  <jsm@polyomino.org.uk>
2067
2068         PR c/1027
2069         * c-lang.c (c_initialize_diagnostics): Move from here ...
2070         * c-objc-common.c: ... to here.  Include "c-pretty-print.h".
2071         (c_tree_printer): Use pretty-printer to format %T.
2072         * c-pretty-print.c (pp_c_specifier_qualifier_list): Include space
2073         before '*' if not C++.
2074         (pp_c_direct_abstract_declarator): Don't try to print array upper
2075         bound for flexible array members.
2076         * c-tree.h: Include "diagnostic.h".
2077         (c_initialize_diagnostics): Declare.
2078         * objc/objc-lang.c (LANG_HOOKS_INITIALIZE_DIAGNOSTICS): Define.
2079         * c-format.c (format_type_warning): New function.  Improve
2080         diagnostics for incorrect format argument types.
2081         (check_format_types): Use it.  Add two parameters.  Use the
2082         TYPE_MAIN_VARIANT of wanted_type.
2083         (check_format_info_main): Pass new parameters to
2084         check_format_types.
2085         (struct format_wanted_type): Update comment.
2086
2087 2004-07-01  Nick Clifton  <nickc@redhat.com>
2088
2089         * target.h (struct gcc_target): Add new field to struct cxx:
2090         import_export_class.
2091         * target-def.h (TARGET_CXX): Initialise the new field.
2092         (TARGET_CXX_IMPORT_EXPORT_CLASS): Provide a default value for
2093         the new field.
2094         * doc/tm.texi: Document the new target hook.
2095
2096 2004-07-01  Paolo Bonzini  <bonzini@gnu.org>
2097
2098         * builtins.c (fold_builtin_classify): Fix typo.
2099
2100 2004-07-01  Richard Henderson  <rth@redhat.com>
2101
2102         * function.c (identify_blocks, identify_blocks_1): Remove.
2103         * function.h (identify_blocks): Remove.
2104         * rtl.h (NOTE_INSN_BLOCK_BEG): Update comment.
2105
2106 2004-07-01  Paolo Bonzini  <bonzini@gnu.org>
2107
2108         * builtins.c (fold_builtin_classify): New.
2109         (fold_builtin_unordered_cmp): Fix commentary.
2110         (fold_builtin): Use it.
2111         * builtins.def: Define builtins for isnan,
2112         isnanf, isnanl, finite, finitef, finitel,
2113         isinf, isinff, isinfl.
2114
2115 2004-07-01  Richard Henderson  <rth@redhat.com>
2116
2117         * function.h (struct function): Remove dont_emit_block_notes.
2118         * gimple-low.c (lower_function_body): Don't set it.
2119         * cfgexpand.c (expand_block): Don't check it.
2120         * cfglayout.c (insn_locators_initialize): Likewise.
2121         * expr.c (expand_expr_real, expand_expr_real_1): Likewise.
2122         * passes.c (rest_of_compilation): Likewise.
2123         * stmt.c (expand_start_bindings_and_block): Likewise.
2124         (expand_end_bindings): Likewise.
2125
2126 2004-07-01  Richard Henderson  <rth@redhat.com>
2127
2128         * cgraph.h (cgraph_build_static_cdtor): Declare.
2129         * cgraphunit.c (cgraph_build_static_cdtor): New.
2130         * c-objc-common.c (build_cdtor): Use it.
2131         * coverage.c (create_coverage): Likewise.
2132         * libfuncs.h (LTI_gcov_init, gcov_init_libfunc): Remove.
2133         * optabs.c (init_optabs): Don't set gcov_init_libfunc.
2134
2135 See ChangeLog.11 for earlier changes.