OSDN Git Service

04974e53fe25b1e5e6766d5c0d2a8ddb905c0e31
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2005-06-07  Kazu Hirata  <kazu@codesourcery.com>
2
3         * sbitmap.h (sbitmap_iter_init): Consistently treat bit_num as
4         the current bit index with no modulo.
5
6 2005-06-07  Sebastian Pop  <pop@cri.ensmp.fr>
7
8         PR 18403 and meta PR 21861.
9         * Makefile.in (tree-chrec.o): Depend on CFGLOOP_H and TREE_FLOW_H.
10         * tree-chrec.c: Include cfgloop.h and tree-flow.h.
11         (evolution_function_is_invariant_rec_p,
12         evolution_function_is_invariant_p): New.
13         (chrec_convert): Use an extra parameter AT_STMT for refining the
14         information that is passed down to convert_step.  Integrate the 
15         code that was in count_ev_in_wider_type.
16         * tree-chrec.h (count_ev_in_wider_type): Removed.
17         (chrec_convert): Modify its declaration.
18         (evolution_function_is_invariant_p): Declared.
19         (evolution_function_is_affine_p): Use evolution_function_is_invariant_p.
20         * tree-flow.h (can_count_iv_in_wider_type): Renamed convert_step.
21         (scev_probably_wraps_p): Declared.
22         * tree-scalar-evolution.c (count_ev_in_wider_type): Removed.
23         (follow_ssa_edge_in_rhs, interpret_rhs_modify_expr):
24         Use an extra parameter AT_STMT for refining the information that is
25         passed down to convert_step.
26         (follow_ssa_edge_inner_loop_phi, follow_ssa_edge,
27         analyze_scalar_evolution_1): Initialize AT_STMT with the current
28         analyzed statement.
29         (instantiate_parameters_1): Don't know yet how to initialize AT_STMT.
30         * tree-ssa-loop-ivopts.c (idx_find_step): Update the use of 
31         can_count_iv_in_wider_type to use convert_step.
32         * tree-ssa-loop-niter.c (can_count_iv_in_wider_type_bound): Move 
33         code that is independent of the loop over the known iteration
34         bounds to convert_step_widening, the rest is moved to
35         proved_non_wrapping_p.
36         (scev_probably_wraps_p): New.
37         (can_count_iv_in_wider_type): Renamed convert_step.
38         * tree-vrp.c (adjust_range_with_scev): Take an extra AT_STMT parameter.
39         Use scev_probably_wraps_p for computing init_is_max.
40         (vrp_visit_assignment): Pass the current analyzed statement to 
41         adjust_range_with_scev.
42         (execute_vrp): Call estimate_numbers_of_iterations for refining the 
43         information provided by scev analyzer.
44
45 2005-06-07  Eric Christopher  <echristo@redhat.com>
46
47         * config/mips/predicates.md (sleu_operand): Use
48         IN_RANGE to specify range of operand.
49
50 2005-06-07  Steven Bosscher  <stevenb@suse.de>
51
52         PR tree-optimization/21847
53         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): With
54         -fnon-call-exceptions, also mark statements inherently
55         necessary if they may throw.
56
57 2005-06-07  Adrian Straetling  <straetling@de.ibm.com>
58
59         * config/s390/s390.md: ("UNSPECV_MB", "UNSPECV_CAS"): New constants.
60         ("type"): Add "sem" to 'type' attribute.
61         ("memory_barrier", "*memory_barrier", "sync_compare_and_swapdi",
62         "sync_compare_and_swapsi", "sync_compare_and_swap_ccdi",
63         "sync_compare_and_swap_ccsi", "*sync_compare_and_swap_ccdi",
64         "*sync_compare_and_swap_ccsi"): New patterns.
65         * config/s390/2064.md: ("z_sem"): New insn_reservation.
66         * config/s390/2084.md: ("x_sem"): New insn_reservation.
67         * config/s390/s390.c: (s390_compare_emitted): New global variable.
68         (s390_emit_compare): Do not emit comparison again after cas.
69         * config/s390/s390.h (s390_compare_emitted): Declare.
70
71 2005-06-07  Kazu Hirata  <kazu@codesourcery.com>
72
73         * sbitmap.h (sbitmap_iterator, sbitmap_iter_init,
74         sbitmap_iter_cond, sbitmap_iter_next): New.
75         * bt-load.c, cfganal.c, combine.c, ddg.c, flow.c,
76         modulo-sched.c, sbitmap.c, sched-rgn.c, tree-into-ssa.c,
77         tree-outof-ssa.c, tree-ssa-alias.c, tree-ssa-live.c: Update
78         uses of EXECUTE_IF_SET_IN_SBITMAP to the new style.
79
80 2005-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
81
82         * tree-ssa-address.c: New file.
83         * Makefile.in (tree-ssa-address.o): Add.
84         * expr.c (expand_expr_real_1): Do not handle REF_ORIGINAL on
85         INDIRECT_REFs.  Handle TARGET_MEM_REFs.
86         * tree-eh.c (tree_could_trap_p): Handle TARGET_MEM_REFs.
87         * tree-flow.h (struct mem_address): New.
88         (struct affine_tree_combination): Moved from tree-ssa-loop-ivopts.c.
89         (create_mem_ref, addr_for_mem_ref, get_address_description,
90         maybe_fold_tmr, multiplier_allowed_in_address_p,
91         multiply_by_cost):  Declare.
92         * tree-mudflap.c (mf_xform_derefs_1): Handle TARGET_MEM_REFs.
93         * tree-pretty-print.c (dump_generic_node): Ditto.
94         * tree-ssa-loop-im.c (for_each_index): Ditto.
95         * tree-ssa-loop-ivopts.c (may_be_unaligned_p,
96         find_interesting_uses_address): Ditto.
97         (rewrite_address_base, build_addr_strip_iref): Removed.
98         (struct affine_tree_combination): Moved to tree-flow.h.
99         (get_ref_tag, copy_ref_info): New functions.
100         (rewrite_use_address): Produce TARGET_MEM_REFs.
101         (tree_ssa_iv_optimize): Do not call update_ssa
102         and rewrite_into_loop_closed_ssa.
103         (tree_to_aff_combination): Use build_fold_addr_expr instead of
104         build_addr_strip_iref.
105         (unshare_aff_combination): New function.
106         (fold_affine_sum): Removed.
107         (get_computation_at): Use get_computation_aff.  Unshare the result.
108         (get_computation_aff, multiplier_allowed_in_address_p): New function.
109         (multiply_by_cost): Exported.
110         (get_address_cost): Use multiplier_allowed_in_address_p.
111         * tree-ssa-operands.c (get_tmr_operands): New function.
112         (get_expr_operands): Handle TARGET_MEM_REFs.
113         * tree.c (copy_node_stat): Copy annotations for TARGET_MEM_REFs.
114         (build): Handle 7 arguments.
115         (build7_stat): New function.
116         * tree.def (TARGET_MEM_DEF): New.
117         * tree.h (REF_ORIGINAL): Removed.
118         (TMR_SYMBOL, TMR_BASE, TMR_INDEX, TMR_STEP, TMR_OFFSET, TMR_ORIGINAL,
119         TMR_TAG, build7): New macros.
120         (build7_stat, tree_mem_ref_addr, copy_mem_ref_info): Declare.
121         * tree-ssa-ccp.c (fold_stmt_r): Call maybe_fold_tmr.
122         * doc/c-tree.texi: Document TARGET_MEM_REF.
123         * doc/tree-ssa.texi: Add TARGET_MEM_REF to gimple grammar.
124
125 2005-06-07  Jakub Jelinek  <jakub@redhat.com>
126
127         PR debug/21946
128         * dwarf2out.c (add_loc_descr_op_piece): New function.
129         (multiple_reg_loc_descriptor, concat_loc_descriptor,
130         loc_descriptor): Use it.
131         * var-tracking.c: Include regs.h and expr.h.
132         (emit_note_insn_var_location): Skip over pieces where offset
133         is smaller than previous offset plus previous piece mode size.
134         Optimize adjacent hard registers or memory locations.
135         * Makefile.in (var-tracking.o): Depend on $(REGS_H) and $(EXPR_H).
136
137 2005-06-07  Richard Guenther  <rguenth@gcc.gnu.org>
138
139         * c-typeck.c (c_finish_if_stmt): Use void_type_node as type
140         for COND_EXPR.
141         * gimplify.c (gimplify_cond_expr): No need to fix up the
142         type of COND_EXPRs.
143
144 2005-06-07  Richard Guenther  <rguenth@gcc.gnu.org>
145
146         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Fix
147         comments.
148
149 2005-06-07  Geoffrey Keating  <geoffk@apple.com>
150
151         * config/rs6000/host-darwin.c (segv_handler): Widen the possible
152         'stwux' instructions that are considered to be stack decrements.
153
154         * rtlanal.c (subreg_offset_representable_p): Handle objects
155         with holes.
156
157 2005-06-06  Uros Bizjak  <uros@kss-loka.si>
158
159         * mode-switching.c (optimize_mode_switching): Fix n_exprs parameter
160         in call to pre_edge_lcm.
161
162 2005-06-06  Kaz Kojima  <kkojima@gcc.gnu.org>
163
164         * config/sh/linux-unwind.h (SH_DWARF_FRAME_XD0): Remove for SH5.
165         (SH_DWARF_FRAME_PR, SH_DWARF_FRAME_GBR, SH_DWARF_FRAME_MACL)
166         (SH_DWARF_FRAME_MACH, SH_DWARF_FRAME_PC, SH_DWARF_FRAME_FPUL):
167         Likewise.
168         (SH_DWARF_FRAME_FP0, SH_DWARF_FRAME_FPSCR): Define to the correct
169         dwarf register number for SHmedia.
170         (shmedia_fallback_frame_state): New.
171         (MD_FALLBACK_FRAME_STATE_FOR): Define to it for SH5.
172
173         * config/sh/linux.h (FUNCTION_PROFILER): Provide SHMEDIA version.
174
175 2005-06-06  Gabriel Dos Reis  <gdr@integrable-solutions.net>
176
177         * c-lex.c (lex_string): Use XOBFINISH.
178         * collect2.c (extract_string, dump_file): Likewise.
179         * dbxout.c (dbxout_finish_complex_stabs): Likewise.
180         * gcc.c (init_spec, build_search_list, convert_filename, 
181         set_collect_gcc_options, do_spec_2, do_spec_1, main): Likewise.
182         * genpreds.c (write_predicate_subfunction): Likewise.
183         * genflags.c (main): Likewise.
184         * read-rtl.c (mode_attr_index, apply_macro_to_string, 
185         join_c_conditions, read_quoted_string, read_braced_string, 
186         read_rtx_1): Likewise.
187         * stringpool.c (ggc_alloc_string): Likewise.
188         * tlink.c (obstack_fgets, recompile_files): Likewise.
189
190 2005-06-06  Jakub Jelinek  <jakub@redhat.com>
191
192         * intl.h (G_): New macro.
193         * rtl-error.c (error_for_asm, warning_for_asm): Use gmsgid
194         instead of msgid for argument name.
195         * tree-ssa.c (warn_uninit): Likewise.
196         * c-parser.c (c_parser_error): Likewise.
197         * config/rs6000/rs6000-c.c (SYNTAX_ERROR): Likewise.
198         * config/darwin-c.c (BAD): Likewise.
199         * config/c4x/c4x-c.c (BAD): Likewise.
200         * c-pragma.c (GCC_BAD, GCC_BAD2): Likewise.
201         * c-errors.c (pedwarn_c99, pedwarn_c90): Likewise.
202         * c-common.c (c_parse_error): Likewise.
203         * diagnostic.c (diagnostic_set_info, verbatim, inform, warning,
204         warning0, pedwarn, error, sorry, fatal_error, internal_error):
205         Likewise.
206         (fnotice): Use cmsgid instead of msgid for argument name.
207         * gcov.c (fnotice): Likewise.
208         * protoize.c (notice): Likewise.
209         * final.c (output_operand_lossage): Likewise.
210         * gcc.c (fatal, notice): Likewise.
211         (error): Use gmsgid instead of msgid for argument name.
212         * collect2.c (notice, fatal_perror, fatal): Use cmsgid instead
213         of msgid for argument name.
214         (error): Use gmsgid instead of msgid for argument name.
215         * c-decl.c (locate_old_decl, implicit_decl_warning): Use G_()
216         instead of N_().
217         * c-typeck.c (readonly_error, convert_for_assignment): Likewise.
218         * tree-inline.c (inline_forbidden_p_1): Likewise.
219         * ABOUT-GCC-NLS: Require gettext 0.14.5 or later.  Mention the new
220         conventions for marking translations.
221         * doc/install.texi: Mention gettext 0.14.5 or later requirement.
222
223         * tree-chrec.c (reset_evolution_in_loop): Use build3 instead of
224         build2.
225
226         * fold-const.c (operand_equal_p): Don't return 1, if element
227         chains for 2 VECTOR_CSTs are not the same length.
228
229         PR regression/21897
230         * fold-const.c (fold_ternary) <case BIT_FIELD_REF>: Don't crash if
231         not all VECTOR_CST elements are given.
232
233         * combine.c (try_combine): Use hard_regno_nregs array instead of
234         HARD_REGNO_NREGS macro.
235         * config/rs6000/rs6000.c (rs6000_split_multireg_move,
236         rs6000_register_move_cost, rs6000_memory_move_cost): Likewise.
237         * config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
238
239 2005-06-06  Daniel Berlin  <dberlin@dberlin.org>
240
241         * tree-ssa-reassoc.o: New.
242         (OBJS-common): Add tree-ssa-reassoc.o
243         * timevar.def: Add TV_TREE_REASSOC
244         * tree-optimize.c (pass_reassoc): Add call.
245         * tree-pass.h (pass_reassoc): Add.
246         * tree-ssa-reassoc.c: New file.
247
248 2005-06-06  Eric Christopher  <echristo@redhat.com>
249
250         target/21927
251         * expr.c (do_store_flag): Remove check for non-negative BRANCH_COST.
252
253 2005-06-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
254
255         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Guard with
256         HAVE_GAS_MAX_SKIP_P2ALIGN.
257         (HAVE_AS_DWARF2_DEBUG_LINE): Remove.
258
259 2005-06-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
260
261         * Makefile.in (mips-tfile.o): Add $(srcdir)/../include prefix to
262         getopt.h dependency.
263         (mips-tdump.o): Likewise.
264
265 2005-06-06  Jan Hubicka  <jh@suse.cz>
266
267         * predict.c (tree_predict_edge): Don't drop useless predictions;
268         check that it is not called too late in the game.
269         (gate_estimate_probability): New gate.
270         (pass_profile): Gate.
271         * tree-mudflap.c (mf_build_check_statement_for): Do not drop
272         predictions; update CFG instead.
273         * cfgrtl.c (rtl_verify_flow_info): Check that predcitions are consumed.
274
275 2005-06-06  Jie Zhang  <jie.zhang@analog.com>
276
277         * config.gcc (bfin*-uclinux*): New.
278         * config/bfin/uclinux.h: New file.
279
280 2005-06-06  Ben Elliston  <bje@au.ibm.com>
281
282         * doc/md.texi (Insn Splitting): Fix some wording.
283
284 2005-06-05  David Edelsohn  <edelsohn@gnu.org>
285
286         * config/rs6000/rs6000.c (rs6000_emit_swdivsf): New function.
287         (rs6000_emit_swdivdf): New function.
288         * config/rs6000/rs6000.md (fres): New pattern.
289         (divsf3): Add approximation through rs6000_emit_swdivsf.
290         (fred): New pattern.
291         (divdf3): Add approximation through rs6000_emit_swdivdf.
292         * config/rs6000/rs6000-protos.h (rs6000_emit_swdivsf): Declare.
293         (rs6000_emit_swdivdf): Declare.
294         * config/rs6000/rs6000.opt (mswdiv): New option.
295         * doc/invoke.texi (RS/6000 and PowerPC Options): Document mswdiv.
296
297 2005-06-05  Zdenek Dvorak  <dvorakz@suse.cz>
298
299         PR tree-optimization/21846
300         * tree-cfg.c (replace_uses_by): Update information stored at loops.
301         * tree-flow.h (substitute_in_loop_info): Declare.
302         * tree-scalar-evolution.c (initialize_scalar_evolutions_analyzer):
303         Ensure that chrec_dont_know and chrec_known have a type.
304         * tree-ssa-loop-niter.c (substitute_in_loop_info): New function.
305
306 2005-06-05  Steven Bosscher  <stevenb@suse.de>
307
308         * config/i386/i386.c (x86_use_loop): Remove.
309         * config/i386/i386.h (x86_use_loop): Remove extern decl.
310         (TARGET_USE_LOOP): Remove.
311         * config/i386/i386.md (doloop_end, doloop_end_internal): Remove.
312         Also remove related define_splits.
313
314 2005-06-05  Dorit Nuzman  <dorit@il.ibm.com>
315
316         * tree-flow.h (stmt_ann_d): Move aux to ...
317         (tree_ann_common_d): ... here.
318         * tree-ssa-loop-im.c (LIM_DATA, determine_invariantness_stmt,
319         move_computations_stmt, schedule_sm): Update references to
320         aux.
321         * tree-vectorizer.h (set_stmt_info, vinfo_for_stmt): Likewise.
322         * tree-vect-transform.c (vect_create_index_for_vector_ref): Update
323         call to set_stmt_info.
324         (vect_transform_loop): Likewise.
325         * tree-vectorizer.c (new_loop_vec_info, destroy_loop_vec_info):
326         Likewise.
327
328         * tree-vect-analyze.c (vect_analyze_scalar_cycles): Made void instead of
329         bool.
330         (vect_mark_relevant): Takes two additional arguments - live_p and
331         relevant_p. Set RELEVANT_P and LIVE_P according to these arguments.
332         (vect_stmt_relevant_p): Differentiate between a live stmt and a
333         relevant stmt. Return two values = live_p and relevant_p.
334         (vect_mark_stmts_to_be_vectorized): Call vect_mark_relevant and
335         vect_stmt_relevant_p with additional arguments. Phis are no longer
336         put into the worklist (analyzed seperately in analyze_scalar_cycles).
337         (vect_determine_vectorization_factor): Also check for LIVE_P, because a
338         stmt that is marked as irrelevant and live, cause it's only used out
339         side the loop, may need to be vectorized (e.g. reduction).
340         (vect_analyze_operations): Examine phis. Call
341         vectorizable_live_operation for for LIVE_P stmts. Check if
342         need_to_vectorize.
343         (vect_analyze_scalar_cycles): Update documentation. Don't fail
344         vectorization - just classify the scalar cycles created by the loop
345         phis. Call vect_is_simple_reduction.
346         (vect_analyze_loop): Call to analyze_scalar_cycles moved earlier.
347         * tree-vect-transform.c (vect_create_index_for_vector_ref): Update
348         call to set_stmt_info.
349         (vect_get_vec_def_for_operand): Code reorganized - the code that
350         classifies the type of use was factored out to vect_is_simple_use.
351         (vectorizable_store, vect_is_simple_cond): Call vect_is_simple_use with
352         additional arguments.
353         (vectorizable_assignment): Likewise. Also make sure the stmt is relevant
354         and computes a loop_vec_def.
355         (vectorizable_operation, vectorizable_load, vectorizable_condition):
356         Likewise.
357         (vectorizable_live_operation): New.
358         (vect_transform_stmt): Handle LIVE_P stmts.
359         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new fields
360         STMT_VINFO_LIVE_P and STMT_VINFO_DEF_TYPE.
361         (new_loop_vec_info, destroy_loop_vec_info): Also handle phis.
362         (vect_is_simple_use): Determine the type of the def and return it
363         in a new function argument. Consider vect_reduction_def and
364         vect_induction_def, but for now these are not supported.
365         (vect_is_simple_reduction): New. Empty for now.
366         * tree-vectorizer.h (vect_def_type): New enum type.
367         (_stmt_vec_info): Added new fields - live and _stmt_vec_info.
368         (STMT_VINFO_LIVE_P, STMT_VINFO_DEF_TYPE): New accessor macros.
369         (vect_is_simple_use): New arguments added to function declaration.
370         (vect_is_simple_reduction): New function declaration.
371         (vectorizable_live_operation): New function declaration.
372
373         * tree-vect-analyze.c (vect_can_advance_ivs_p): Add debug printout.
374         (vect_can_advance_ivs_p): Likewise.
375         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Likewise.
376
377 2005-06-05  Eric Christopher  <echristo@redhat.com>
378
379         * config/mips/mips.c (mips_rtx_costs): Remove unused variable.
380
381 2005-06-05  Hans-Peter Nilsson  <hp@bitrange.com>
382
383         PR target/21914
384         * config/mmix/mmix.md ("*movdicc_real_foldable")
385         ("*movdfcc_real_foldable", "*bCC_foldable")
386         ("*bCC_inverted_foldable"): Specify DImode for register being
387         compared.
388
389 2005-06-04  Roger Sayle  <roger@eyesopen.com>
390
391         * reg-stack.c (struct block_info_def): Correct grammar typo.
392         (compensate_edge): Clean-up.  Perform as little work as possible
393         when src and dest stacks match.  Avoid modifying block_info.
394         Reorder and simplify assertion checks.  Avoid unnecessary copying
395         of regstack structure.
396         (convert_regs_1): Set the done flag here...
397         (convert_regs_2): ... instead of here.
398
399 2005-06-04  Dale Johannesen  <dalej@apple.com>
400
401         * config/rs6000/rs6000.c (no_global_regs_above): New.
402         (rs6000_emit_prologue):  Use it; cosmetic formatting fixes.
403         (rs6000_emit_epilogue):  Use it; cosmetic formatting fixes.
404         (rs6000_conditional_register_usage): Don't put Darwin PIC
405         register in global_regs.
406         (rs6000_stack_info):  Don't set lr_save_p just because Darwin 
407         PIC reg used.
408         (rs6000_emit_prologue):  Save LR in R0 around Darwin PIC setup,
409         if not done by lr_save_p.
410         * config/rs6000/rs6000.md (insnv1_internal1):  Back out 05-18 patch.
411         Use rotate instead of ashift.
412         (call_indirect_nonlocal_sysv):  Prefer CTR to LR.
413         (call_value_indirect_nonlocal_sysv):  Ditto.
414
415 2005-06-04  Jan Hubicka  <jh@suse.cz>
416
417         * cgraphunit.c (cgraph_reset_node): Break out from ...
418         (cgraph_finalize_function): ... here.
419         (cgraph_finalize_compilation_unit): Reset nodes where backend
420         removed the body.
421
422 2005-06-04  Richard Henderson  <rth@redhat.com>
423
424         PR target/21888
425         * config/alpha/alpha.c (alpha_align_insns): Don't insert nops
426         until we've passed initial ldgp.
427
428 2005-06-04  Daniel Berlin  <dberlin@dberlin.org>
429
430         * cfgexpand.c (expand_one_var): Use DECL_HAS_VALUE_EXPR_P.
431         * dwarf2out.c (loc_descriptor_from_tree_1): Ditto.
432         * expr.c (expand_var): Ditto.   
433         * function.c (gimplify_parameters): Use SET_DECL_VALUE_EXPR too.
434         * gimplify.c (gimplify_decl_expr): Ditto.
435         (gimplify_expr): Ditto.
436         * tree-mudflap.c (mf_decl_eligible_p): Use DECL_HAS_VALUE_EXPR_P.
437         * tree.c (value_expr_for_decl): New.
438         (print_value_expr_statistics): New.
439         (init_ttree): Init value_expr_for_decl.
440         (decl_value_expr_lookup): New.
441         (decl_value_expr_insert): Ditto.
442         (copy_node_stat): Copy DECL_VALUE_EXPR status.
443         * tree.h (DECL_VALUE_EXPR): Use hashtable.
444         (SET_DECL_VALUE_EXPR): New.
445         (DECL_HAS_VALUE_EXPR_P): New.
446
447 2005-06-04  Steven Bosscher  <stevenb@suse.de>
448
449         * lcm.c: Move all mode-switching related functions from here...
450         * mode-switching.c: ...to this new file.
451         * doc/passes.texi: Update accordingly.
452
453         * basic-block.h (label_value_list): Remove extern decl.
454         * cfgrtl.c (label_value_list): Remove.
455         (can_delete_label_p): Don't look at it.
456         * cfgcleanup.c (cleanup_cfg): Don't free it.
457
458         * common.opt: Don't refer to non-existing flag_alias_check.
459
460 2005-06-04  David Edelsohn  <edelsohn@gnu.org>
461
462         * config/rs6000/aix52.h (ASM_CPU_SPEC): Add power5.
463
464 2005-06-04  Kazu Hirata  <kazu@codesourcery.com>
465
466         * function.c (prologue, epilogue, sibcall_epilogue): Change
467         their types to VEC(int,heap)*.
468         (free_after_compilation): Free the three vectors above.
469         (init_function_for_compilation, record_insns, contains,
470         prologue_epilogue_contains, sibcall_epilogue_contains,
471         reposition_prologue_and_epilogue_notes): Use VEC instead of
472         VARRAY.  (init_function_once): Remove.
473         * function.h: Remove the prototype for init_function_once.
474         * toplev.c (backend_init): Don't call init_function_once.
475
476 2005-06-04  Jan Hubicka  <jh@suse.cz>
477
478         * predict.c (tree_predict_edge): Do not predict entry edge and
479         single succestor edge.
480
481 2005-06-04  Joseph S. Myers  <joseph@codesourcery.com>
482
483         PR c/21873
484         * c-typeck.c (push_init_level): Don't pop levels without braces if
485         implicit == 1.
486
487 2005-06-03  Sebastian Pop  <pop@cri.ensmp.fr>
488         
489         * tree-data-ref.c (compute_self_dependence): New function.
490         (compute_all_dependences): Use it.
491
492 2005-06-03  Geoffrey Keating  <geoffk@apple.com>
493
494         * c-parser.c (c_parser_parms_declarator): Don't use chainon().
495         (c_parser_expr_list): Don't use chainon().
496
497         * config/darwin.h (LINK_SPEC): Pass -syslibroot to linker
498         when -isysroot passed.
499
500 2005-06-03  Joseph S. Myers  <joseph@codesourcery.com>
501
502         PR c/21879
503         * c-decl.c (start_function): Restore label_context_stack_se and
504         label_context_stack_vm  if returning with an error.
505
506 2005-06-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
507
508         * configure.ac: Check declaration for asprintf, needed by
509         libiberty.h. 
510         * configure: Regenerate.
511         * config.in: Likewise.
512
513 2005-06-03  Diego Novillo  <dnovillo@redhat.com>
514
515         * tree-ssa-dom.c (record_edge_info): Use last_basic_block to
516         allocate info array.
517         * tree-vrp.c (extract_range_from_unary_expr): Set resulting
518         range to varying in cast expressions that change
519         TYPE_PRECISION.
520
521 2005-06-03  Eric Christopher  <echristo@redhat.com>
522
523         * config/mips/mips.opt: Add RejectNegative to divide-breaks and
524         divide-traps.
525
526 2005-06-03  Jan Hubicka  <jh@suse.cz>
527
528         * basic-block.h (remove_predictions_associated_with_edge): Declare.
529         * cfg.c (remove_edge): Use it.
530         * predict.c (remove_predictions_associated_with_edge): New function.
531
532 2005-06-03  Pat Haugen  <pthaugen@us.ibm.com>
533
534         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
535         Clear call_realy_used_regs[r2] when ABI_AIX.
536
537 2005-06-03  Richard Guenther  <rguenth@gcc.gnu.org>
538
539         PR middle-end/21858
540         * fold-const.c (fold_binary): Fix type mismatches in folding
541         of comparisons.
542
543 2005-06-03  Kazu Hirata  <kazu@codesourcery.com>
544
545         * cgraph.c, cgraphunit.c, config/mips/mips.c: Fix comment
546         typos.
547
548 2005-06-03  Joseph S. Myers  <joseph@codesourcery.com>
549
550         * collect2.c (maybe_unlink): Use unlink_if_ordinary.
551
552 2005-06-02  Bernd Schmidt  <bernd.schmidt@analog.com>
553
554         * reload1.c (reload): Revert my previous patch.
555
556 2005-06-03  Nick Clifton  <nickc@redhat.com>
557
558         * config/arm/semi.h (ASM_SPEC): Fix typo passing -mfloat-abi to
559         assembler.
560
561 2005-06-03  Kazu Hirata  <kazu@codesourcery.com>
562
563         PR tree-optimization/21849
564         * tree-ssa-copy.c (dump_copy_of): Call sbitmap_zero.
565
566 2005-06-02  Richard Henderson  <rth@redhat.com>
567
568         * Makefile.in (tree-vect-generic.o): New.
569         (OBJS-common, GTFILES, s-gtype): Add it.
570         * tree-complex.c (build_replicated_const, vector_inner_type,
571         vector_last_type, vector_last_nunits, build_word_mode_vector_type,
572         elem_op_func, tree_vec_extract, do_unop, do_binop, do_plus_minus,
573         do_negate, expand_vector_piecewise, expand_vector_parallel, 
574         expand_vector_addition, expand_vector_operation, 
575         type_for_widest_vector_mode, expand_vector_operations_1, 
576         gate_expand_vector_operations, expand_vector_operations, 
577         pass_lower_vector_ssa): Move to tree-vect-generic.c.
578         (tree_lower_complex): Rename from tree_lower_operations.
579         (pass_lower_complex): Rename from pass_pre_expand.
580         * tree-vect-generic.c: New file.
581         * tree-pass.h (pass_lower_complex): Rename from pass_pre_expand.
582         (pass_lower_vector): New.
583         * tree-optimize.c (init_tree_optimization_passes): Update to match.
584
585 2005-06-02  Richard Henderson  <rth@redhat.com>
586
587         * modulo-sched.c (doloop_register_get): Protect against 
588         doloop_end not defined.
589
590 2005-06-02  Kazu Hirata  <kazu@codesourcery.com>
591
592         * config/sh/sh.c (general_movsrc_operand,
593         general_movdst_operand, arith_reg_operand, arith_reg_dest,
594         logical_reg_operand, int_gpr_dest, fp_arith_reg_operand,
595         fp_arith_reg_dest, arith_operand, arith_reg_or_0_operand,
596         xor_operand, cmp_operand, logical_operand, and_operand,
597         fpscr_operand, fpul_operand, symbol_ref_operand,
598         commutative_float_operator, noncommutative_float_operator,
599         unary_float_operator, binary_float_operator,
600         binary_logical_operator, equality_comparison_operator,
601         greater_comparison_operator, less_comparison_operator,
602         shift_operator, logical_operator, target_reg_operand,
603         target_operand, mextr_bit_offset, extend_reg_operand,
604         trunc_hi_operand, extend_reg_or_0_operand, minuend_operand,
605         general_extend_operand, ua_address_operand,
606         cache_address_operand, inqhi_operand, sh_rep_vec, sh_1el_vec,
607         sh_const_vec, ua_offset, sh_register_operand, cmpsi_operand,
608         shift_count_reg_operand, shift_count_operand,
609         unaligned_load_operand): Move to ...
610         * config/sh/predicates.md: ... here.
611         * config/sh/sh.h (PREDICATE_CODES, SPECIAL_MODE_PREDICATES):
612         Remove.
613
614 2005-06-02  Andrew Pinski  <pinskia@physics.uc.edu>
615
616         * tree.c (build_common_builtin_nodes): Fix the return type on
617         __builtin_memcmp.
618
619 2005-06-02  Richard Guenther  <rguenth@gcc.gnu.org>
620
621         * tree-ssa-loop-ivopts.c (build_addr_strip_iref): Remove.
622         (find_interesting_uses_address): Use build_fold_addr_expr instead.
623         (strip_offset_1): Likewise.
624         (tree_to_aff_combination): Likewise.
625
626 2005-06-02  DJ Delorie  <dj@redhat.com>
627
628         * convert.c (convert_to_pointer): Avoid recursion if no conversion
629         is needed.
630
631 2005-06-02  Richard Guenther  <rguenth@gcc.gnu.org>
632
633         * tree-chrec.c (chrec_fold_plus_1): Ensure we build
634         binary operations with the correct types.
635         * tree-ssa-loo-ivopts.c (idx_find_step): Use sizetype
636         for all computation.
637
638 2005-06-02  Kazu Hirata  <kazu@codesourcery.com>
639
640         * tree-vrp.c, config/arm/arm.md, config/arm/arm1020e.md,
641         config/rs6000/rs6000.md: Fix comment typos.  Follow splling
642         conventions.
643         * doc/install.texi: Fix a typo.
644
645 2005-06-02  Jan Hubicka  <jh@suse.cz>
646
647         * cgraphunit.c (cgraph_function_and_variable_visibility): Extern
648         inline functions are not local.
649
650 2005-06-02  Kazu Hirata  <kazu@codesourcery.com>
651
652         * gimplify.c (gimplify_ctx): Change the type of case_labels to
653         VEC from VARRAY.
654         (gimplify_switch_expr, gimplify_case_label_expr): Adjust uses
655         of case_labels.
656
657 2005-06-02  Richard Guenther  <rguenth@gcc.gnu.org>
658
659         * c-typeck.c (build_indirect_ref): Build INDIRECT_REF
660         with correct type.
661
662 2005-06-02  Ulrich Weigand  <uweigand@de.ibm.com>
663
664         * config/s390/s390.c (s390_add_execute): Do not handle out-of-pool
665         execute templates.
666         (s390_dump_pool): Likewise.
667         (s390_mainpool_start, s390_mainpool_finish): Likewise.
668         (s390_chunkify_start): Likewise.
669         (s390_dump_execute): Remove.
670         (s390_reorg): Handle out-of-pool execute templates.
671
672 2005-06-02  Adrian Straetling  <straetling@de.ibm.com>
673
674         * optabs.c: (expand_bool_compare_and_swap): Emit barrier after
675           unconditional jump.
676
677 2005-06-02  Jan Hubicka  <jh@suse.cz>
678
679         * cgraph.c (cgraph_node): Maintain master clones.
680         (cgraph_remove_node): Likewise.
681         (availability_names): New static variable.
682         (dump_cgraph_node): Dump availability.
683         (dump_cgraph_varpool_node): Likewise.
684         (cgraph_is_master_clone, cgraph_master_clone,
685         cgraph_function_body_availability,
686         cgraph_variable_initializer_availability): New functions.
687         * cgraph.h (availability): New enum.
688         (struct cgraph_node): Add master_clone.
689         (cgraph_is_master_clone, cgraph_master_clone,
690         cgraph_function_body_availability,
691         cgraph_variable_initializer_availability): Declare.
692         * cgraphunit.c (cgraph_expand_function): Setcgraph_function_flags_ready.
693         (cgraph_remove_unreachable_nodes): Remove unreachable nodes.
694         * ipa-inline.c (cgraph_decide_inlining): Do not call
695         cgraph_remove_unreachable_nodes.
696
697         * cgraphunit.c (cgraph_function_and_variable_visibility): Fix typo in
698         previous patch.
699
700 2005-06-02  Diego Novillo  <dnovillo@redhat.com>
701
702         PR 21582
703         * tree-vrp.c (nonnull_arg_p): New.
704         (get_value_range): Call it.
705
706 2005-06-02  Eric Christopher  <echristo@redhat.com>
707
708         * config/mips/mips.h (processor_type): Remove PROCESSOR_DEFAULT,
709         add PROCESSOR_MAX.
710         (mips_rtx_cost_data): New datatype.
711         (MEMORY_MOVE_COST): Use data from structure.
712         (BRANCH_COST): Ditto.
713         (LOGICAL_OP_NON_SHORT_CIRCUIT): Define to zero.
714         * config/mips/mips.md (cpu): Rework for processor_type changes.
715         * config/mips/mips.c (mips_cost): New variable.
716         (DEFAULT_COSTS): Define.
717         (mips_rtx_cost_data): New.
718         (mips_rtx_costs): Use. Minor formatting changes. Use COSTS_N_INSNS
719         for NEG cost. Add support for FLOAT, UNSIGNED_FLOAT, FIX,
720         FLOAT_EXTEND, FLOAT_TRUNCATE, and SQRT.
721         (override_options): Set cost data.
722         (mips_register_move_cost): Formatting changes.
723         (bdesc_arrays): Use PROCESSOR_MAX.
724         (mips_init_builtins): Ditto.
725
726 2005-06-02  Diego Novillo  <dnovillo@redhat.com>
727
728         PR 21765
729         * doc/invoke.texi: Document -ftree-vrp.
730
731 2005-06-02  Dorit Nuzman  <dorit@il.ibm.com>
732
733         PR tree-optimization/21734
734         * tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop): Use the
735         phi_result when current_def is not available.
736         (slpeel_update_phi_nodes_for_guard1): Don't fail if current_def is not
737         available.      
738
739 2005-06-02  David Edelsohn  <edelsohn@gnu.org>
740
741         * config/rs6000/rs6000.c (rs6000_insn_valid_within_doloop): New.
742         (TARGET_INSN_VALID_WITHIN_DOLOOP): Define.
743
744 2005-06-02  Diego Novillo  <dnovillo@redhat.com>
745
746         * tree-vrp.c (has_assert_expr, maybe_add_assert_expr): Remove.
747
748 2005-06-02  Jan Hubicka  <jh@suse.cz>
749
750         * cgraph.c (dump_cgraph_node): Print new flags.
751         (dump_cgraph_varpool_node): Likewise.
752         (decide_variable_is_needed): Initialize externally_visible flag.
753         * cgraph.h (cgraph_local_info): Add externally_visible flag.
754         (cgraph_varpool_node): Likewise.
755         (cgraph_function_flags_ready): Declare.
756         * cgraph.c (cgraph_mark_local_functions): Rename to ...
757         (cgraph_function_and_variable_visibility) ... this one; handle
758         externally_visible flags.
759         (decide_is_function_needed): Set externally_visible flag.
760         (cgraph_finalize_function): Deal properly with early cleanups.
761         (cgraph_optimize): Update call of
762         cgraph_function_and_variable_visibility.
763
764 2005-06-02 Steven Bosscher  <stevenb@suse.de>
765            Mostafa Hagog <mustafa@il.ibm.com>
766
767         * cfgloop.h (doloop_condition_get): Make external.
768         * loop-doloop.c (doloop_condition_get): Generalize to make it
769         usable in modulo-sched.c.
770         * modulo-sched.c (doloop_register_get): Use
771         doloop_condition_get instead of duplicating it.
772
773 2005-06-02  Bernd Schmidt  <bernd.schmidt@analog.com>
774
775         * reload1.c (reload): Undo 2005-04-20 change.  Make sure we detect
776         the correct set of init_insns that need deletion.
777         * local-alloc.c (update_equiv_regs): When substituting sole definition
778         into sole use of a reg, delete it from liveness information.
779
780 2005-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
781
782         * config/sh/sh.h (TARGET_FPU_DOUBLE): Use MASK_SH4.
783
784 2005-06-01  Diego Novillo  <dnovillo@redhat.com>
785
786         PR 14341, PR 21332, PR 20701, PR 21029, PR 21086, PR 21090
787         PR 21289, PR 21348, PR 21367, PR 21368, PR 21458.
788         * fold-const.c (invert_tree_comparison): Make extern.
789         * tree-flow.h (enum value_range_type): Move to tree-ssa-propagate.
790         (struct value_range_def): Limewise.
791         (get_value_range): Remove.
792         (dump_value_range): Remove.
793         (dump_all_value_ranges): Remove.
794         (debug_all_value_ranges): Remove.
795         (vrp_evaluate_conditional): Declare.
796         * tree-ssa-propagate.c (struct prop_stats_d): Add field
797         num_pred_folded.
798         (substitute_and_fold): Add argument use_ranges_p.
799         Update all callers.
800         If use_ranges_p is true, call fold_predicate_in to fold
801         predicates using range information.
802         Ignore ASSERT_EXPRs.
803         Change debugging output to only show statements that have been
804         folded.
805         (replace_phi_args_in): Move debugging output code from
806         substitute and fold.
807         (fold_predicate_in): New local function.
808         * tree-ssa-propagate.h (enum value_range_type): Move from
809         tree-flow.h.
810         (struct value_range_d): Likewise.
811         Add field 'equiv'. 
812         (value_range_t): Rename from value_range.
813         * tree-vrp.c (found_in_subgraph): Rename from found.
814         (get_opposite_operand): Remove.
815         (struct assert_locus_d): Declare.
816         (assert_locus_t): Declare.
817         (need_assert_for): Declare.
818         (asserts_for): Declare.
819         (blocks_visited): Declare.
820         (vr_value): Declare.
821         (set_value_range): Add argument 'equiv'.
822         Don't drop to VARYING ranges that cover all values in the
823         type.
824         Make deep copy of equivalence set 'equiv'.
825         (copy_value_range): New local function.
826         (set_value_range_to_undefined): New local function.
827         (compare_values): Return -2 if either value has overflowed.
828         (range_includes_zero_p): New local function.
829         (extract_range_from_assert): Flip the predicate code if the
830         name being asserted is on the RHS of the predicate.
831         Avoid creating unnecessary symbolic ranges if the comparison
832         includes another name with a known numeric range.
833         Update the equivalnce set of the new range when asserting
834         EQ_EXPR predicates.
835         (extract_range_from_ssa_name): Update the equivalence set of
836         the new range with VAR.
837         (extract_range_from_binary_expr): Also handle TRUTH_*_EXPR.
838         If -fwrapv is used, set the resulting range to VARYING if the
839         operation overflows.  Otherwise, use TYPE_MIN_VALUE and
840         TYPE_MAX_VALUE to represent -INF and +INF.
841         Fix handling of *_DIV_EXPR.
842         (extract_range_from_unary_expr): Handle MINUS_EXPR and
843         ABS_EXPR properly by switching the range around if necessary.
844         (extract_range_from_comparison): New local function.
845         (extract_range_from_expr): Call it.
846         (adjust_range_with_scev): Do not adjust the range if using
847         wrapping arithmetic (-fwrapv).
848         (dump_value_range): Also show equivalence set.
849         Show -INF and +INF for TYPE_MIN_VALUE and TYPE_MAX_VALUE.
850         (build_assert_expr_for): Also build ASSERT_EXPR for EQ_EXPR.
851         (infer_value_range): Change return value to bool.
852         Add arguments 'comp_code_p' and 'val_p'.
853         Do not attempt to infer ranges from statements that may throw.
854         Store the comparison code in comp_code_p.
855         Store the other operand to be used in the predicate in val_p.
856         (dump_asserts_for): New.
857         (debug_asserts_for): New.
858         (dump_all_asserts): New.
859         (debug_all_asserts): New.
860         (register_new_assert_for): New.
861         (register_edge_assert_for): New.
862         (find_conditional_asserts): New.
863         (find_assert_locations): New.
864         (process_assert_insertions_for): New.
865         (process_assert_insertions): New.
866         (insert_range_assertions): Initialize found_in_subgraph,
867         blocks_visited, need_assert_for and asserts_for.
868         Call find_assert_locations and process_assert_insertions.
869         (remove_range_assertions): Add more documentation.
870         (vrp_initialize): Change return type to void.
871         Do not try to guess if running VRP is worth it.  
872         (compare_name_with_value): New.
873         (compare_names): New.
874         (vrp_evaluate_conditional): Add argument 'use_equiv_p'.  If
875         use_equiv_p is true, call compare_names and
876         compare_name_with_value to compare all the ranges for every
877         name in the equivalence set of the predicate operands.
878         Update all callers.
879         (vrp_meet): Try harder not to derive a VARYING range.
880         If two values meet, the resulting equivalence set is the
881         intersection of the two equivalence sets.
882         (vrp_visit_phi_node): Call copy_value_range to get the current
883         range information of the LHS.
884         (vrp_finalize): Create a value vector representing all the
885         names that ended up with exactly one value in their range.
886         Call substitute_and_fold.
887         (execute_vrp): Document equivalence sets in ranges.
888         * tree.h (SSA_NAME_VALUE_RANGE): Remove.
889         (struct tree_ssa_name): Remove field value_range.
890         (invert_tree_comparison): Declare.
891
892 2005-06-01  Daniel Berlin  <dberlin@dberlin.org>
893
894         Fix PR tree-optimization/21839
895
896         * gimplify.c (zero_sized_field_decl): New function.
897         (gimplify_init_ctor_eval): Use it.
898
899 2005-06-01  Josh Conner <jconner@apple.com>
900
901         PR 21478
902         * gimplify.c (gimplify_init_constructor): Don't spill initializer
903         to read-only memory if it's sparse.
904
905 2005-06-01  Ramana Radhakrishnan  <ramana@codito.com>
906
907         * doc/rtl.texi: Remove references to NOTE_INSN_SETJMP. 
908         Add documentation for REG_SETJMP
909
910 2005-06-01  Richard Guenther  <rguenth@gcc.gnu.org>
911
912         * stmt.c (expand_case): Use build_int_cst.
913         (node_has_low_bound): Likewise, and correct type mismatch.
914         (node_has_high_bound): Likewise.
915         * fold-const.c (fold_binary): Ensure we build trees
916         with the correct types - undo what STRIP_NOPS possibly did.
917
918 2005-06-01  Richard Guenther  <rguenth@gcc.gnu.org>
919
920         * tree.h (fold_indirect_ref_1): Export from fold-const.c.
921         * fold-const.c (fold_indirect_ref_1): No longer static.
922         * tree-inline.c (copy_body_r): Use fold_indirect_ref_1 for
923         folding, if possible.
924
925 2005-06-01  Joseph S. Myers  <joseph@codesourcery.com>
926
927         * common.opt (fjump-tables): New.
928         * doc/invoke.texi (-fno-jump-tables): Document.
929         * stmt.c (expand_end_case_type): Do not emit jump tables unless
930         flag_jump_tables.
931
932 2005-06-01  Richard Earnshaw  <richard.earnshaw@arm.com>
933
934         * arm.md (bunordered, bordered, bungt, bunlt, bunge, bunle, buneq)
935         (bltgt, arm_buneq, arm_bltgt, sunordered, sordered, sungt, sunge)
936         (sunlt, sunle): Enable patterns on VFP.
937
938         * arm.md (attribute 'type'): Add new types - f_loads floadd, f_stores,
939         f_stored, f_flag, f_cvt.
940         (generic_sched): No-longer used for the arm1020e and arm1022e cores.
941         Include arm1020e.md.
942         * vfp.md (fmstat): New cpu unit.  Add an exclusion set between it and
943         the ds and fmac pipelines.  Re-work all load and store patterns and
944         all conversion patterns to use new attributes.  Adjust reservation
945         descriptions accordingly.
946         * arm1020e.md: New file.
947         * t-arm: Add dependency.
948
949 2005-06-01  Jan Hubicka  <jh@suse.cz>
950
951         * except.c (struct eh_region): Kill unused fields.
952         * basic-block.h (struct basic_block_def): Likewise.
953
954 2005-06-01  J"orn Rennecke <joern.rennecke@st.com>
955
956         PR rtl-optimization/21767
957         * rtl.h (function_invariant_p): Re-add declaration.
958         * reload1.c (function_invariant_p): No longer static.
959         * ifcvt.c (dead_or_predicable): Remove REG_EQUAL notes that
960         might have become invalid.
961
962 2005-06-01  Jakub Jelinek  <jakub@redhat.com>
963
964         PR c/21536
965         PR c/20760
966         * gimplify.c (gimplify_decl_expr): Call gimplify_type_sizes
967         on variable sizes types if a decl is a pointer to a VLA.
968         (gimplify_type_sizes): Handle POINTER_TYPE and REFERENCE_TYPE.
969         Call gimplify_type_sizes on aggregate fields.  Prevent infinite
970         recursion.
971
972         * fold-const.c (fold_ternary): Optimize BIT_FIELD_REF of VECTOR_CST.
973
974         * config/i386/xmmintrin.h (_mm_setzero_ps, _mm_set_ss, _mm_set1_ps,
975         _mm_set_ps, _mm_setr_ps): Add __extension__.
976         * config/i386/emmintrin.h (_mm_set_sd, _mm_set1_pd, _mm_set_pd,
977         _mm_setr_pd, _mm_setzero_pd, _mm_set_epi64x, _mm_set_epi64x,
978         _mm_set_epi32, _mm_set_epi16, _mm_set_epi8, _mm_setzero_si128):
979         Likewise.
980         (_mm_clflush): Don't use return in void function.
981
982         * config/i386/emmintrin.h (_mm_castpd_ps, _mm_castpd_si128,
983         _mm_castps_pd, _mm_castps_si128, _mm_castsi128_ps, _mm_castsi128_pd):
984         Use __inline instead of inline.
985
986 2005-06-01  Richard Guenther  <rguenth@gcc.gnu.org>
987
988         * fold-const.c (fold_binary): Fix types in strlen vs.
989         zero comparison folding.
990
991 2005-06-01  Richard Henderson  <rth@redhat.com>
992
993         * configure.ac (HAVE_AS_JSRDIRECT_RELOCS): New.
994         * config.in, configure: Rebuild.
995         * config/alpha/alpha.c (print_operand): Add 'j'.
996         * alpha.md (divmodsi_internal_er_1): Use it.
997         (divmoddi_internal_er_1): Likewise.
998
999 2005-06-01  Richard Sandiford  <rsandifo@redhat.com>
1000
1001         * system.h (TARGET_OPTIONS, TARGET_SWITCHES): Poison.
1002         * opts.h (print_filtered_help): Delete.
1003         * opts.c (handle_option, decode_options): Remove calls to
1004         set_target_switch.
1005         (print_target_help): New function.
1006         (common_option, print_help): Call print_target_help instead of
1007         display_target_options.
1008         (print_filtered_help): Make static.
1009         * toplev.h (display_target_options, set_target_switch): Delete.
1010         * toplev.c (target_switches, target_options, display_target_options)
1011         (set_target_switch): Delete.
1012         (print_switch_values): Remove handling of TARGET_SWITCHES and
1013         TARGET_OPTIONS.
1014         (default_get_pch_validity): Likewise.  Only treat target_flags
1015         specially if targetm.check_pch_target_flags is nonnull.
1016         (pch_option_mismatch): New function.
1017         (default_pch_valid_p): Use it.  Remove handling of TARGET_SWITCHES
1018         and TARGET_OPTIONS.  Only treat target_flags specially if
1019         targetm.check_pch_target_flags is nonnull.
1020         * config/ia64/ia64.c (ia64_override_options): Don't mention
1021         TARGET_OPTIONS in comment.
1022         * config/m68k/m68k-none.h (CC1_SPEC): Likewise.
1023         * doc/invoke.texi: Remove a reference to TARGET_SWITCHES.
1024         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS): Don't mention the
1025         interaction with TARGET_SWITCHES.
1026         (TARGET_@var{featurename}, TARGET_SWITCHES, TARGET_OPTIONS): Delete.
1027
1028 2005-06-01  Richard Sandiford  <rsandifo@redhat.com>
1029
1030         * config/sh/sh.c (multcosts): Check sh_multcost rather than
1031         sh_multcost_str.
1032         (sh_register_move_cost): Likewise sh_gettrcost and sh_gettrcost_str.
1033         (sh_multcost_str, sh_gettrcost_str, sh_div_str, sh_divsi3_libfunc)
1034         (cut2_workaround_str): Delete.
1035         * config/sh/sh.h (SUBTARGET_OPTIONS, TARGET_OPTIONS)
1036         (TARGET_SH5_CUT2_WORKAROUND, sh_multcost_str, sh_gettrcost_str)
1037         (sh_div_str, sh_divsi3_libfunc, cut2_workaround_str): Delete.
1038         * config/sh/sh.opt (mcut2-workaround, mdiv=, mdivsi3_libfunc=)
1039         (mgettrcost=, multcost=): New options.
1040
1041 2005-06-01  Richard Sandiford  <rsandifo@redhat.com>
1042
1043         * opts.h (cl_option_state): New structure.
1044         (get_option_state): Declare.
1045         * opts.c (get_option_state): New function.
1046         * toplev.c (option_affects_pch_p): New function.
1047         (default_get_pch_validity): Store the state of all options for which
1048         option_affects_pch_p returns true.
1049         (default_pch_valid_p): Check the state of those options here.
1050         Only check target_flags separately if targetm.check_pch_target_Flags
1051         is nonnull or if TARGET_SWITCHES is defined.
1052
1053 2005-06-01  Richard Sandiford  <rsandifo@redhat.com>
1054
1055         * config/mips/mips-protos.h (mips_use_ins_ext_p): Remove parameter
1056         names.
1057
1058 2005-06-01 Mostafa Hagog <mustafa@il.ibm.com>
1059
1060         * modulo-sched.c (undo_generate_reg_moves ): Fix PR 21138.
1061
1062 2005-06-01 Mostafa Hagog <mustafa@il.ibm.com>
1063
1064         * gcse.c (compute_transp, load_killed_in_block): Use 
1065         MEM_READONLY_P.
1066
1067 2005-06-01  David.Billinghurst  <David.Billinghurst@riotinto.com>
1068
1069         PR target/21854
1070         * config/mips/mips-protos.h: Declare mips_use_ins_ext_p
1071         
1072 2005-05-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1073
1074         * errors.h (warning, error, fatal, internal_error): Add printf
1075         attribute.
1076         * genmodes.c (make_vector_mode): Fix format arguments.
1077
1078 2005-05-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1079
1080         * basic-block.h, bb-reorder.c, c-gimplify.c, config/darwin.c,
1081         config/rs6000/rs6000-c.c, dominance.c, gimple-low.c, gimplify.c,
1082         lambda-code.c, lambda-trans.c, tree-browser.c, tree-cfg.c,
1083         tree-chrec.c, tree-data-ref.c, tree-dfa.c, tree-eh.c,
1084         tree-if-conv.c, tree-into-ssa.c, tree-loop-linear.c,
1085         tree-mudflap.c, tree-nomudflap.c, tree-outof-ssa.c,
1086         tree-pretty-print.c, tree-scalar-evolution.c, tree-sra.c,
1087         tree-ssa-ccp.c, tree-ssa-copy.c, tree-ssa-dce.c, tree-ssa-dom.c,
1088         tree-ssa-dse.c, tree-ssa-forwprop.c, tree-ssa-live.c,
1089         tree-ssa-operands.c, tree-ssa-phiopt.c, tree-ssa-pre.c,
1090         tree-ssa-propagate.c, tree-ssa-sink.c, tree-ssa-threadupdate.c,
1091         tree-ssa-uncprop.c, tree-ssa.c, tree-vect-analyze.c,
1092         tree-vect-transform.c, tree-vectorizer.c, vec.c: Don't include
1093         errors.h and include toplev.h if necessary.
1094         
1095         * rtl.c, varray.c: If we're compiling as a GENERATOR_FILE, include
1096         errors.h otherwise include toplev.h.
1097         
1098         * Makefile.in: Update dependencies.
1099         
1100 2005-06-01  Danny Smith  <dannysmith@users.sourceforge.net>
1101
1102         * config/i386/cygming.h (NO_PROFILE_COUNTERS): Define.
1103
1104 2005-05-31  Geoffrey Keating  <geoffk@geoffk.org>
1105
1106         * config/rs6000/rs6000.md (sync_boolcshort_internal): New.
1107         * config/rs6000/rs6000.c (rs6000_emit_sync): Shift count must
1108         be complemented for big-endian.  Mask for AND must be rotated,
1109         not shifted.  Handle short operands with NOT on the memory
1110         operation.
1111
1112 2005-05-30  Daniel Berlin  <dberlin@dberlin.org>
1113
1114         * c-objc-common.c (c_tree_printer): Check flag before hashtable.
1115         Use DECL_DEBUG_EXPR and SET_DECL_DEBUG_EXPR.
1116         * dwarf2out.c (dwarf2out_var_location): Ditto.
1117         * toplev.c (default_tree_printer): Ditto.
1118         * tree-outof-ssa.c (create_temp): Ditto.
1119         * tree-sra.c (instantiate_element): Ditto.
1120         * var-tracking.c (track_expr_p): Ditto.
1121         * tree.c (struct tree_map): New structure.
1122         (debug_expr_for_decl): New.
1123         (tree_map_eq): New function.
1124         (tree_map_hash): Ditto.
1125         (tree_map_marked_p): Ditto.
1126         (print_debug_expr_statistics): Ditto.
1127         (decl_debug_expr_lookup): Ditto.
1128         (decl_debug_expr_insert): Ditto.
1129         (dump_tree_statistics): Dump debug_expr hashtable stats.
1130         * tree.h (DECL_DEBUG_EXPR): Change
1131         (SET_DECL_DEBUG_EXPR): Add.
1132         
1133 2005-06-01  Alan Modra  <amodra@bigpond.net.au>
1134
1135         * configure.ac: Add --enable-secureplt.
1136         (HAVE_AS_REL16): Test for R_PPC_REL16 relocs.
1137         * config.in: Regenerate.
1138         * configure: Regenerate.
1139         * config.gcc (powerpc64-*-linux*, powerpc-*-linux*): Add
1140         rs6000/secureplt.h to tm_file when enable_secureplt.
1141         * doc/invoke.texi (msecure-plt, mbss-plt): Document.
1142         * doc/install.texi: Document --enable-targets and --enable-secureplt.
1143         Correct xrefs to "Using the GNU Compiler Collection (GCC)".
1144         * config/rs6000/secureplt.h: New file.
1145         * config/rs6000/sysv4.h (TARGET_SECURE_PLT): Define.
1146         (SUBTARGET_OVERRIDE_OPTIONS): Error if -msecure-plt given without
1147         assembler support.
1148         (CC1_SECURE_PLT_DEFAULT_SPEC): Define.
1149         (CC1_SPEC): Delete duplicate mno-sdata.  Invoke cc1_secure_plt_default.
1150         (SUBTARGET_EXTRA_SPECS): Add cc1_secure_plt_default.
1151         * config/rs6000/sysv4.opt (msecure-plt, bss-plt): Add options.
1152         * config/rs6000/rs6000.h (TARGET_SECURE_PLT): Define.
1153         * config/rs6000/rs6000.c (rs6000_emit_load_toc_table): Handle
1154         TARGET_SECURE_PLT got register load sequence.
1155         (rs6000_emit_prologue): Call rs6000_emit_load_toc_table when
1156         TARGET_SECURE_PLT.
1157         (rs6000_elf_declare_function_name): Don't emit toc address offset
1158         word when TARGET_SECURE_PLT.
1159         * config/rs6000/rs6000.md (elf_high, elf_low): Move past load_toc_*.
1160         (load_toc_v4_PIC_1) Enable for TARGET_SECURE_PLT.
1161         (load_toc_v4_PIC_3b, load_toc_v4_PIC_3c): New insns.
1162         (call, call_value): Mark pic_offset_table_rtx used for sysv pic and
1163         TARGET_SECURE_PLT.
1164         (call_nonlocal_sysv, call_value_nonlocal_sysv, sibcall_nonlocal_sysv,
1165         sibcall_value_nonlocal_sysv): Add 32768 offset when TARGET_SECURE_PLT
1166         and -fPIC.
1167         * config/rs6000/tramp.asm (trampoline_initial): Use "bcl 20,31".
1168         (__trampoline_setup): Likewise.  Init r30 before plt call.
1169
1170 2005-05-31  DJ Delorie  <dj@redhat.com>
1171
1172         * expr.c (convert_move): When a partial_int requires multiple
1173         conversion steps, make sure successive steps convert the
1174         intermediate value, not the original value.
1175
1176         * expmed.c (expand_mult): Convert partial_int multiplies to
1177         shift/add combinations too.
1178
1179         * genmodes.c (mode_data): Add wider_2x.
1180         (calc_wider_mode): Calculate twice-wider mode too.
1181         (emit_mode_wider): Emit twice-wider mode too.
1182         * machmode.h (mode_2xwider, GET_MODE_2XWIDER_MODE): New.
1183         * expr.c (expand_expr_real_1): Use it for expanding
1184         multiplies.
1185
1186 2005-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
1187
1188         PR tree-optimization/21817
1189         * tree-ssa-loop-im.c (for_each_index): Handle VECTOR_CST.
1190
1191 2005-05-31  Pat Haugen  <pthaugen@us.ibm.com>
1192
1193         * loop.c (loop_invariant_p, valid_initial_value_p): Revert last
1194         change.
1195
1196 2005-05-31  Andrew Pinski  <pinskia@physics.uc.edu>
1197
1198         PR middle-end/20931
1199         PR middle-end/20946
1200         * fold-const.c (fold_checksum_tree): Copy types also if
1201         TYPE_CONTAINS_PLACEHOLDER_INTERNAL is set.
1202         Don't call fold_checksum_tree for TREE_LIST's TREE_CHAIN
1203         first.
1204         Tail recurse TREE_LIST's TREE_CHAIN.
1205
1206 2005-05-31  Andrew Pinski  <pinskia@physics.uc.edu>
1207
1208         PR tree-opt/21732
1209         * tree-ssa-copy.c (dump_copy_of): Create a bitmap and don't visit a
1210         SSA_NAME twice and cause the loop to become finite.  Remove the test
1211         for val.
1212
1213 2005-05-31  Andrew Pinski  <pinskia@physics.uc.edu>
1214
1215         * tree-cfg.c (verify_expr): Add checking for COND_EXPR's conditional
1216         expression.
1217
1218 2005-05-31  Richard Sandiford  <rsandifo@redhat.com>
1219
1220         * doc/tm.texi (TARGET_GET_PCH_VALIDITY, TARGET_PCH_VALID_P): Tweak
1221         the documentation to make it more future-proof.
1222         (TARGET_CHECK_PCH_TARGET_FLAGS): Document this new hook.
1223         * target.h (gcc_target): Add check_pch_target_flags.
1224         * target-def.h (TARGET_CHECK_PCH_TARGET_FLAGS): New macro.
1225         (TARGET_INITIALIZER): Include it.
1226         * toplev.c (default_pch_valid_p): Use targetm.check_pch_target_flags.
1227         * config/sh/sh-protos.h (sh_pch_valid_p): Delete.
1228         * config/sh/sh.c (TARGET_PCH_VALID_P, sh_pch_valid_p): Delete.
1229         (sh_check_pch_target_flags): New function.
1230         (TARGET_CHECK_PCH_TARGET_FLAGS): Override default.
1231
1232 2005-05-31  Richard Guenther  <rguenth@gcc.gnu.org>
1233
1234         * fold-const.c (extract_array_ref): Handle more cases,
1235         do some useful canonicalization of the base.
1236         (fold_binary): Explicitly deal with arrays of zero-sized
1237         structures during folding of &a[i] == &a[j].
1238
1239 2005-05-31  Eric Botcazou  <ebotcazou@libertysurf.fr>
1240
1241         * doc/install.texi (sparc-sun-solaris2*): Update note
1242         about Sun bug 4910101.
1243         (sparc-sun-solaris2.7): Document bootstrap
1244         failure with Sun WorkShop 6 99/08/18 as.
1245
1246 2005-05-30  Pat Haugen  <pthaugen@us.ibm.com>
1247
1248         * loop.c (loop_invariant_p, valid_initial_value_p): Use
1249         regs_invalidated_by_call instead of call_used_regs.
1250
1251 2005-05-30  Paolo Carlini  <pcarlini@suse.de>
1252
1253         PR middle-end/21743
1254         * builtins.def (BUILT_IN_CLOG, BUILT_IN_CLOGF, BUILT_IN_CLOGL):
1255         Enable.
1256         * doc/extend.texi: Add clog, clogf, clogl.
1257
1258 2005-05-30  H.J. Lu  <hongjiu.lu@intel.com>
1259
1260         PR middle-end/20303
1261         * c-pragma.c: Include "vec.h".
1262         (handle_pragma_visibility): Use VEC.
1263
1264         * doc/invoke.texi: Remove the nested visibility push limit.
1265
1266 2005-05-30  Roger Sayle  <roger@eyesopen.com>
1267
1268         PR rtl-optimization/15422
1269         * reg-stack.c (starting_stack_p): New static global.
1270         (straighten_stack): Delete prototype. Change to update the stack
1271         before the current insn.
1272         (subst_stack_regs): Update call to straighten stack.
1273         (emit_swap_insn): Delete prototype.  For the first insn in a
1274         basic block, update stack_in instead of emitting a real swap.
1275         (change_stack): When changing the stack before the first insn
1276         in a basic block, update stack_in instead of emitting real code.
1277         (compensate_edges): Clear starting_stack_p during compensation.
1278         (convert_regs_1): Keep track of starting_stack_p whilst processing
1279         a basic block.
1280
1281 2005-05-30  Kazu Hirata  <kazu@cs.umass.edu>
1282
1283         * tree-ssa-ccp.c (const_val): Make it static.
1284
1285 2005-05-29  Geoffrey Keating  <geoffk@apple.com>
1286
1287         PR target/21761
1288         * config/rs6000/rs6000.md: Remove stray TARGET_32BIT from
1289         pattern involving `:P'.
1290
1291         * Makefile.in (install-cpp): Depend on installdirs.
1292
1293 2005-05-30  Kazu Hirata  <kazu@cs.umass.edu>
1294
1295         * tree-outof-ssa.c (_elim_graph): Change the type of edge_list
1296         to VEC(int,heap)*.
1297         (new_elim_graph, clear_elim_graph, delete_elim_graph,
1298         elim_graph_add_edge, elim_graph_remove_succ_edge,
1299         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED): Use VEC
1300         instead of VARRAY.
1301
1302 2005-05-29  Kazu Hirata  <kazu@cs.umass.edu>
1303
1304         * cgraphunit.c, ipa-inline.c, loop-iv.c, modulo-sched.c,
1305         opts.c, postreload-gcse.c, tree-browser.def, tree-eh.c,
1306         tree-ssa-copyrename.c, tree-vect-analyze.c: Fix typos and
1307         follow spelling conventions in error/dump messages.
1308
1309 2005-05-29  Roger Sayle  <roger@eyesopen.com>
1310             Richard Henderson  <rth@redhat.com>
1311
1312         * ifcvt.c (noce_emit_move_insn): Construct a SET pattern directly
1313         if the RHS isn't suitable for calling emit_move_insn.
1314
1315 2005-05-29  Kazu Hirata  <kazu@cs.umass.edu>
1316
1317         * tree-ssa-ccp.c (ccp_fold): Return immediately after calling
1318         fold_unary and fold_binary.
1319
1320 2005-05-29  Roger Sayle  <roger@eyesopen.com>
1321
1322         * reg-stack.c (propagate_stack): Always copy the source stack to
1323         the destination.  This routine is now only called when this is safe.
1324         (better_edge): New function split out from convert_regs_1 to
1325         determine which of two edges is better to propagate across.
1326         (convert_regs_1):  We need only search for a best edge if the
1327         stack layout hasn't been defined yet.  Use better_edge to help
1328         find beste.  No longer traverse unnecessary edges.
1329
1330 2005-05-29  Keith Besaw  <kbesaw@us.ibm.com>
1331
1332         * tree-ssa-alias.c (new_type_alias): New procedure to
1333         create a type memory tag for a pointer with a may-alias
1334         set determined from a variable declaration.
1335         * tree-flow.h: export declaration of new_type_alias
1336         * tree-optimize.c (init_tree_optimization_passes): document
1337         that pass_may_alias cannot be called after pass_vectorize.
1338         * tree-vect-transform (vect_create_data_ref_ptr): Call
1339         new_type_alias when an type memory tag isn't available
1340         for a reference.
1341         (vectorizable_store): Use copy_virtual_operands to update
1342         virtual defs in place (so that loop_version can be called).
1343         Call mark_for_renaming for the virtual defs in case peeling
1344         is done and virtual uses outside the loop need to be updated.
1345
1346 2005-05-29  Dorit Naishlos  <dorit@il.ibm.com>
1347
1348         PR tree-optimization/21639
1349         * tree-complex.c (pass_lower_vector_s): Remove TODO_ggc_collect.
1350
1351 2005-05-29  Jan Hubicka  <jh@suse.cz>
1352
1353         PR tree-optimization/21562
1354         * cfgexpand.c (construct_init_block): Deal properly with the case
1355         of entry edge not pointing to very first basic block.
1356
1357 2005-05-28  Kazu Hirata  <kazu@cs.umass.edu>
1358
1359         * tree-ssa-ccp.c (ccp_fold): Remove code that produces
1360         non-gimple min invariant.
1361
1362         * Makefile.in (OBJS-common): Add tree-cfgcleanup.o.
1363         * tree-flow.h: Add prototypes for start_recording_case_labels
1364         and end_recording_case_labels.
1365         * tree-cfg.c (start_recording_case_labels,
1366         end_recording_case_labels): Export.
1367         (cleanup_tree_cfg_loop, modified_noreturn_calls,
1368         cleanup_control_flow, cleanup_control_expr_graph,
1369         remove_fallthru_edge, phi_alternatives_equal,
1370         tree_forwarder_block_p, has_abnormal_incoming_edge_p,
1371         remove_forwarder_block, cleanup_forwarder_blocks,
1372         remove_forwarder_block_with_phi, merge_phi_nodes,
1373         gate_merge_phi, pass_merge_phi): Move to ...
1374         * tree-cfgcleanup.c: ... here.
1375
1376         * basic-block.h: Remove forward declaration of bb_ann_d.
1377
1378 2005-05-28  Jan Hubicka  <jh@suse.cz>
1379
1380         * tree-ssa-threadupdate.c: (create_edge_and_update_destination_phis):
1381         Update profile.
1382         * value-prof.c (tree_divmod_fixed_value_transform): Be more verbose in
1383         debug output.
1384         (tree_mod_subtract): Fix profile updating code.
1385         (tree_divmod_values_to_profile): Do not produce useless value profilers
1386         for divisions.
1387
1388 2005-05-28  Kazu Hirata  <kazu@cs.umass.edu>
1389
1390         * tree-ssa-dom.c (vrp_element_p): Define.
1391         (vrp_hash_elt): Change the type of records to
1392         VEC(vrp_element_p,heap).
1393         (vrp_free): New.
1394         (tree_ssa_dominator_optimize): Pass vrp_free to htab_create.
1395         Update uses of VRP records.
1396         (simplify_cond_and_lookup_avail_expr, record_range): Update
1397         uses of VRP records.
1398
1399         * tree-inline.c (cfun_stack): Change the type to
1400         VEC(function_p,heap).
1401         (push_cfun, pop_cfun): Use VEC instead of VARRAY.
1402
1403 2005-05-27  Ian Lance Taylor  <ian@airs.com>
1404
1405         * c-decl.c (add_stmt): Add C frontend specific version.
1406         (stmts_are_full_exprs_p): Remove.
1407         * c-common.h (STMT_IS_FULL_EXPR_P): Remove.
1408         (stmts_are_full_exprs_p): Don't declare.
1409         * c-semantics.c (add_stmt): Remove.
1410
1411 2005-05-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1412
1413         * config/mips/mips-protos.h (mips_declare_object): Add printf
1414         attribute.
1415         * config/mips/mips.c (mips_declare_object_name): Fix format
1416         argument.
1417
1418 2005-05-27  Roger Sayle  <roger@eyesopen.com>
1419
1420         * reg-stack.c (compensate_edge): Remove original prototype.
1421         (propagate_stack): New function to copy the stack layout
1422         at the start of a basic block from the layout at the end of
1423         one of its predecessors.
1424         (compensate_edge): Assume that both source and destination
1425         blocks have already had their stack layouts defined.
1426         (compensate_edges): Traverse all non-entry edges in the CFG
1427         and call compensate_edge on each in turn.
1428         (convert_regs_1): Change return type to void.  Call
1429         propagate_stack instead of compensate_edge.
1430         (convert_regs_2): Change return type to void.  Update call
1431         to convert_regs_1 to ignore the (now void) return value.
1432         (convert_regs): Update calls to convert_regs_2 to ignore
1433         the (now void) return value.  After all the basic blocks have
1434         been processed, call compensate_edges to actually emit new
1435         insns.
1436         (reg_to_stack): Initialize the aux info for each basic block
1437         with FOR_EACH_BB instead of which FOR_EACH_BB_REVERSE.
1438
1439 2005-05-28  Jan Hubicka  <jh@suse.cz>
1440
1441         * except.c (can_throw_internal_1, can_throw_external_1): Add 
1442         "is_resx" argument.
1443         (can_throw_external, can_throw_internal): Bring into sync wrt
1444         dealing resx.
1445         * except.h (can_throw_internal_1, can_throw_external_1): Update
1446         prototype.
1447         * tree-eh.c (tree_can_throw_internal, tree_can_throw_external):
1448         Deal properly with resx.
1449
1450 2005-05-27  Kazu Hirata  <kazu@cs.umass.edu>
1451
1452         * basic-block.h (basic_block_def): Add phi_nodes and
1453         predictions.  Remove tree_annotations.
1454         * predict.c (tree_predicted_by_p, tree_predict_edge,
1455         combine_predictions_for_bb): Adjust references to predictions.
1456         * tree-cfg.c (init_empty_tree_cfg, create_bb): Don't call
1457         create_block_annotation.
1458         (create_block_annotation, free_blocks_annotatios,
1459         clear_blocks_annotations): Remove.
1460         (dump_cfg_stats): Don't print out the memory spent on
1461         bb_ann_d.
1462         (delete_tree_cfg_annotations): Don't call free_blocks_annotations.
1463         * tree-flow-inline.h (bb_ann): Remove.
1464         (phi_nodes, set_phi_nodes): Update references to phi_nodes.
1465         * tree-flow.h (bb_ann_d): Remove.
1466         * tree-if-conv.c (process_phi_nodes): Update a reference to
1467         phi_nodes.
1468         * tree-phinodes.c (reserve_phi_args_for_new_edge,
1469         create_phi_node, remove_phi_node): Likewise.
1470         * tree-pretty-print.c (dump_generic_bb_buff): Don't call bb_ann.
1471         * tree-ssa-dom.c (threaded_blocks): New.
1472         (tree_ssa_dominator_optimize): Initialize, clear, and free
1473         threaded_blocks. Update a call to thread_through_all_blocks.
1474         (thread_across_edge): Use threaded_blocks instead of setting
1475         incoming_edge_threaded.
1476         * tree-ssa-threadupdate.c (threaded_through_all_blocks): Take
1477         a bitmap of blocks that are threaded through.
1478         * tree.h: Move the prototype of threaded_through_blocks to
1479         tree-flow.h.
1480
1481         * domwalk.c (walk_dominator_tree, init_walk_dominator_tree,
1482         fini_walk_dominator_tree): Use VEC instead of VARRAY.
1483         * domwalk.h (dom_walk_data): Change the type of
1484         block_data_stack and free_block_data to VEC(void_p,heap)*.
1485         * tree-ssa-dse.c (dse_initialize_block_local_data,
1486         dse_optimize_stmt, dse_record_phis, dse_finalize_block): Use
1487         VEC instead of VARRAY.
1488
1489 2005-05-27  Jan Hubicka  <jh@suse.cz>
1490
1491         * cgraph.c: Include tree-gimple.h
1492         (cgraph_edge): Rename expr to stmt.
1493         (cgraph_create_edge): Likewise.
1494         (cgraph_clone_node): Likewise.
1495         * cgraph.h (cgraph_node): Use call_stmt instead of call_expr.
1496         * cgraphunit.c (record_call_1): Rename to ...
1497         (record_reference): ... this one; do not build edges.
1498         (cgraph_varpool_analyze_pending_decls): Call record_reference directly.
1499         (current_basic_block): Kill.
1500         (cgraph_create_edges): Rewrite to work on gimple statements nicely.
1501         (verify_cgraph_node): Likewise.
1502         * tree-inline.c (copy_body_r): Do not mess up with cgraph edges.
1503         (copy_bb): Mess up with cgraph edges here; simplify EH handling.
1504         (copy_edges_for_bb): Simplify EH handling.
1505         (expand_call_inline): Pass statement to cgraph_edge and
1506         cgraph_create_edge.
1507
1508 2005-05-27  Richard Guenther  <rguenth@gcc.gnu.org>
1509
1510         * tree-inline.c (copy_body_r): Manually fold *& to deal
1511         with ADDR_EXPRs with mismatched types for now.
1512
1513         * gimplify.c (fold_indirect_ref_rhs): New function.
1514         (gimplify_modify_expr_rhs): Use it instead of pessimistic
1515         fold_indirect_ref.
1516
1517         * fold-const.c (fold_indirect_ref_1): Add type argument;
1518         make sure the resulting expression is of this type.
1519         (build_fold_indirect_ref, fold_indirect_ref): Adjust callers.
1520
1521 2005-05-27  Kazu Hirata  <kazu@cs.umass.edu>
1522
1523         PR tree-optimization/21658
1524         * tree-ssa-ccp.c (ccp_fold): Call fold_binary instead of
1525         fold_binary_to_constant.  Likewise, call fold_unary instead of
1526         fold_unary_to_constant.
1527
1528 2005-05-27  Nathan Sidwell  <nathan@codesourcery.com>
1529
1530         * vec.h: Implement integral type vector specialization.
1531         (VEC_T): Define a non-GTY structure.
1532         (VEC_T_GTY): Define a GTY structure.
1533         (VEC_TA): Rename to ...
1534         (VEC_TA_GTY): ... here.
1535         (DEF_VEC_I, DEF_VEC_ALLOC_I): New.
1536         (DEF_VEC_P, DEF_VEC_ALLOC_P): Adjust.
1537         (DEF_VEC_FUNC_P, DEF_VEC_ALLOC_FUNC_P): New, broken out of
1538         DEF_VEC_P and DEF_VEC_ALLOC_P.
1539         (DEF_VEC_O, DEF_VEC_ALLOC_O): Adjust.
1540         (DEF_VEC_FUNC_O, DEF_VEC_ALLOC_FUNC_O): New, broken out of
1541         DEF_VEC_O and DEF_VEC_ALLOC_O.
1542         * global.c: Use DEF_VEC_I, DEF_VEC_ALLOC_I.
1543         * lambda-code.c: Likewise.
1544         * tree-into-ssa.c: Likewise.
1545         * tree-ssa-live.c: Likewise.
1546
1547 2005-05-27  Kazu Hirata  <kazu@cs.umass.edu>
1548
1549         * tree-into-ssa.c (update_ssa): Ensure that the operand cache
1550         is up-to-date.
1551         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Call
1552         update_stmt_if_modified before calling update_ssa.
1553
1554 2005-05-27  Ralf Corsepius  <ralf.corsepius@rtems.org>
1555
1556         * config/rs6000/t-rtems: Remove roe multilib variant.
1557
1558 2005-05-26  Roger Sayle  <roger@eyesopen.com>
1559
1560         PR tree-optimization/9814
1561         * ifcvt.c (noce_emit_move_insn): If we fail to recognize the move
1562         instruction, add the necessary clobbers by re-expanding the RTL
1563         for arithmetic operations via optab.c's expand_unop/expand_binop.
1564         (noce_try_bitop): New function to optimize bit manipulation idioms
1565         of the form "if (x & C) x = x op C" and "if (!(x & C) x = x op C".
1566         (noce_process_if_block): Call noce_try_bitop.
1567
1568 2005-05-26  Roger Sayle  <roger@eyesopen.com>
1569
1570         * reg-stack.c (convert_regs_entry, convert_regs_exit,
1571         convert_regs_1, convert_regs_2, convert_regs): Delete prototypes.
1572         (reg_to_stack): Move to end of the file.  Initialize the per
1573         basic block information here, instead of...
1574         (convert_regs_entry): Here.
1575         (convert_regs): Change unused return type to void.
1576
1577 2005-05-27  Kazu Hirata  <kazu@cs.umass.edu>
1578
1579         * c-pch.c, timevar.c, timevar.h, unwind-compat.c,
1580         unwind-dw2-fde-compat.c, unwind-dw2-fde.c, config/mmix/mmix.h,
1581         config/rs6000/eabispe.h, config/rs6000/lynx.h,
1582         config/sh/elf.h, config/sh/symbian-pre.h,
1583         config/sparc/sparc-protos.h: Update copyright.
1584
1585 2005-05-26  Mike Stump  <mrs@apple.com>
1586
1587         * darwin.h (ASM_OUTPUT_LABELREF): Handle quoted non-lazy pointers
1588         for Objective-C++.
1589         
1590 2005-05-26  Richard Guenther  <rguenth@gcc.gnu.org>
1591
1592         * tree-ssa-forwprop.c (forward_propagate_addr_expr):
1593         See through ADDR_EXPR in finding place to propagate into.
1594
1595 2005-05-26  Kazu Hirata  <kazu@cs.umass.edu>
1596
1597         * c-common.c, c-parser.c, cfgbuild.c, cfghooks.c, cfghooks.h,
1598         cfgrtl.c, cgraphunit.c, ddg.c, expr.h, gcse.c, ggc-page.c,
1599         ggc-zone.c, gimplify.c, ipa-inline.c, longlong.h, targhooks.c,
1600         tree-flow-inline.h, tree-pass.h, tree-ssa-dse.c,
1601         tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c,
1602         tree-ssa-operands.c, tree-vect-analyze.c,
1603         tree-vect-transform.c, tree-vectorizer.c, tree.c,
1604         config/arm/arm.c, config/bfin/bfin.c, config/frv/frv.c,
1605         config/frv/frv.md, config/i386/i386.c, config/i386/sse.md,
1606         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
1607         config/mcore/mcore.c, config/mips/mips.c, config/mips/mips.md,
1608         config/rs6000/darwin-ldouble.c, config/rs6000/rs6000.c,
1609         config/rs6000/rs6000.h, config/sh/sh.c, config/sh/sh.md,
1610         config/sh/ushmedia.h, config/sparc/sparc.c,
1611         config/sparc/sparc.md, config/stormy16/stormy-abi: Fix comment
1612         typos.  Follow spelling conventions.
1613         * doc/invoke.texi, doc/tm.texi, doc/tree-ssa.texi: Fix typos.
1614         Follow spelling conventions.
1615
1616 2005-05-26  David Ung  <davidu@mips.com>
1617
1618         * config/mips/mips.c (mips_use_ins_ext_p): New helper function
1619         that determines whether the MIPS32/64 R2 ext/ins should be used.
1620         * config/mips/mips.h (ISA_HAS_EXT_INS): New macro.
1621         * config/mips/mips.md (extzv): Changed predicate for operand to
1622         nonimmediate_operand. Add code to generate insn patterns for
1623         extzvsi and extzvdi.
1624         (extzv<mode>): New pattern to match mips32/64 r2 ext insn.
1625         (insv): Similarly for insertion.
1626         (insv<mode>): Similarly.
1627
1628 2005-05-26  Paolo Bonzini  <bonzini@gnu.org>
1629
1630         * simplify-rtx.c (avoid_constant_pool_reference): Support
1631         offsetted addresses in the constant pool.
1632
1633 2005-05-26  Paolo Bonzini  <bonzini@gnu.org>
1634
1635         * df.h (DF_SUBREGS, df_local_def_available_p, df_insn_modified_p): New.
1636         * df.c (DF_SUBREGS, df_local_def_available_p, df_insn_modified_p): New.
1637
1638 2005-05-26  Jakub Jelinek  <jakub@redhat.com>
1639
1640         PR target/21716
1641         * reg-stack.c (swap_rtx_condition): Don't crash if %ax user was not
1642         found in the basic block and last insn in the basic block is not
1643         INSN_P.  Remove explicit unspec numbers that are no longer valid
1644         from comments.
1645
1646 2005-05-26  Paolo Bonzini  <bonzini@gnu.org>
1647
1648         * tree-vect-transform.c (vectorizable_operation): Try word_mode
1649         vectorization if UNITS_PER_WORD == UNITS_PER_SIMD_WORD, even
1650         if a vector mode is available.
1651
1652 2005-05-25  Roger Sayle  <roger@eyesopen.com>
1653
1654         PR middle-end/21709
1655         * fold-const.c (const_binop): Check for division by zero during
1656         complex division.
1657
1658 2005-05-26  Ian Lance Taylor  <ian@airs.com>
1659
1660         * reload1.c (verify_initial_elim_offsets): Add braces to avoid
1661         having a declaration after a statement.
1662
1663 2005-05-26  Richard Sandiford  <rsandifo@redhat.com>
1664
1665         * opt-functions.awk (var_type): New function.
1666         (var_set): Use CLVC_STRING if var_type returns "const char *".
1667         * opth-gen.awk: Use var_type to find out the types of variables.
1668         Don't print comments above each "extern" definition.
1669         * optc-gen.awk: Use var_type in the same way.
1670         * opts.h (cl_var_cond): Rename to...
1671         (cl_var_type): ...this.  Add CLVC_STRING.
1672         (cl_option): Make "flag_var" a "void *" pointer.  Replace "var_cond"
1673         with "var_type".
1674         * opts.c (handle_option, option_enabled): Update after above name
1675         change.  Cast flag_var before using it.  Handle CLVC_STRING.
1676         
1677         * config/alpha/alpha.h (alpha_tls_size): Delete.
1678         * config/alpha/alpha.c (alpha_tls_size, alpha_cpu_string)
1679         (alpha_tune_string, alpha_tp_string, alpha_fprm_string)
1680         (alpha_fptm_string, alpha_mlat_string): Delete.
1681         (alpha_handle_option): Don't set the above variables here.  Use the
1682         integer argument to check the validity of -mtls-size=.
1683         * config/alpha/alpha.opt (mcpu=, mtune=, mfp-rounding-mode=)
1684         (mfp-trap-mode=, mtrap-precision=, mmemory-latency=): Add Var()s.
1685         (mtls-size=): Likewise.  Convert to a UInteger and initialize the
1686         variable to 32.
1687
1688         * config/arc/arc.c (arc_cpu_string, arc_text_string)
1689         (arc_data_string, arc_rodata_string): Delete.
1690         (arc_handle_option): Don't set the above variables here.
1691         * config/arc/arc.opt (mcpu=, mtext=, mdata=, mrodata=): Add Var()s
1692         and initialize them.
1693
1694         * config/arm/arm.c (target_fpu_name, target_fpe_name)
1695         (target_float_abi_name, target_abi_name, structure_size_string)
1696         (arm_pic_register_string): Delete.
1697         (arm_handle_option): Don't set the above variables here, except
1698         in the handling of -mhard-float and -msoft-float.
1699         * config/arm/arm.opt (mabi=, mfloat-abi=, mfp=, mfpe=, mfpu=)
1700         (mpic-register=, mstructure-size-boundary=): Add Var()s.
1701
1702         * config/avr/avr.c (avr_init_stack, avr_mcu_name, TARGET_HANDLE_OPTION)
1703         (avr_handle_option): Delete.
1704         * config/avr/avr.opt (mmcu=, minit-stack=): Add Var()s and initialize
1705         them.
1706
1707         * config/bfin/bfin.c (bfin_library_id): Delete.
1708         (bfin_handle_option): Don't set it.
1709         * config/bfin/bfin.opt (mshared-library-id=): Add Var().
1710
1711         * config/c4x/c4x.h (c4x_rpts_cycles): Delete.
1712         * config/c4x/c4x.c (c4x_rpts_cycles): Delete.
1713         (c4x_handle_option): Don't set c4x_rpts_cycles here.
1714         * config/c4x/c4x.opt (mrpts=): Add Var().
1715
1716         * config/cris/aout.h (CRIS_SUBTARGET_HANDLE_OPTION): Don't set
1717         cris_elinux_stacksize_str here.
1718         * config/cris/aout.opt (melinux-stacksize=): Add Var().
1719         * config/cris/cris.h (cris_max_stackframe_str, cris_cpu_str)
1720         (cris_tune_str, cris_elinux_stacksize_str): Delete.
1721         * config/cris/cris.c (cris_max_stackframe_str, cris_cpu_str)
1722         (cris_tune_str, cris_elinux_stacksize_str): Delete.
1723         (cris_handle_option): Don't set the above variables here.
1724         * config/cris/cris.opt (mcpu=, march=, mtune=, mmax-stackframe=)
1725         (max-stackframe=): Add Var()s.
1726
1727         * config/i386/i386.h (ix86_tune_string, ix86_arch_string): Delete.
1728         * config/i386/i386.c (ix86_cmodel_string, ix86_asm_string)
1729         (ix86_tls_dialect_string, ix86_tune_string, ix86_arch_string)
1730         (ix86_fpmath_string, ix86_regparm_string, ix86_align_loops_string)
1731         (ix86_align_jumps_string, ix86_preferred_stack_boundary_string)
1732         (ix86_branch_cost_string, ix86_align_funcs_string): Delete.
1733         (ix86_handle_option): Don't set the above variables here.
1734         * config/i386/i386.opt (malign-functions=, malign-jumps=)
1735         (malign-loops=, march=, masm=, mbranch-cost=, mcmodel=, mfpmath=)
1736         (mpreferred-stack-boundary=, mregparm=, mtls-dialect=, mtune=): Add
1737         Var()s.
1738
1739         * config/ia64/ia64.h (ia64_tls_size): Delete.
1740         * config/ia64/ia64.c (ia64_tls_size): Delete.
1741         (ia64_handle_option): Treat -mtls-size= as a UInteger option,
1742         reading the integer argument from the "value" parameter.  Don't
1743         set ia64_tls_size here.
1744         * config/ia64/ia64.opt (mtls-size=): Turn into a UInteger option.
1745         Add Var() and Init().
1746
1747         * config/m32r/m32r.h (m32r_cache_flush_func): Delete.
1748         (m32r_cache_flush_trap): Delete.
1749         * config/m32r/m32r.c (m32r_cache_flush_func): Delete.
1750         (m32r_cache_flush_trap): Delete.
1751         (m32r_handle_option): Don't set the above variables when handling
1752         -mflush-func= and -mflush-trap=.
1753         * config/m32r/m32r.opt (-mflush-func=, -mflush-trap=): Add Var()s
1754         and Init()s.
1755
1756         * config/mips/mips.h (mips_cache_flush_func): Delete.
1757         * config/mips/mips.c (mips_arch_string, mips_tune_string)
1758         (mips_cache_flush_func): Delete.
1759         (mips_handle_option): Don't set the above variables when handling
1760         -march=, -mtune= and -mflush-func=.
1761         * config/mips/mips.opt (march=, mflush-func=, mtune=): Add Var()s.
1762
1763         * config/s390/s390.c (s390_arch_string): Delete.
1764         (s390_handle_option): Don't set it here.
1765         * config/s390/s390.opt (march=): Add Var().
1766
1767         * config/sparc/sparc.h (sparc_cmodel_string): Delete.
1768         * config/sparc/sparc.c (sparc_cmodel_string): Delete.
1769         (sparc_handle_option): Don't set it here.
1770         * config/sparc/sparc.opt (mcmodel=): Add Var().
1771
1772 2005-05-25  Roger Sayle  <roger@eyesopen.com>
1773
1774         * convert.c (convert_to_integer) <POINTER_TYPE>: Avoid recursive
1775         call to convert_to_integer by building the NOP_EXPR directly.
1776
1777 2005-05-25  Richard Sandiford  <rsandifo@redhat.com>
1778
1779         * config/rs6000/rs6000.opt (mprioritize-restricted-insns=): Fix typo.
1780
1781 2005-05-25  Daniel Berlin  <dberlin@dberlin.org>
1782             Jeff Law  <law@redhat.com>
1783
1784         * tree-cfg.c (verify_expr, case ADDR_EXPR): Verify invariant,
1785         constant and side_effects of the ADDR_EXPR are consistent.
1786
1787         * tree-nested.c (convert_local_reference): Set CURRENT_FUNCTION_DECL
1788         appropriately around calls to recompute_tree_invarant_for_addr_expr.
1789
1790 2005-05-25  Ulrich Weigand  <uweigand@de.ibm.com>
1791
1792         * config/s390/s390.c (GP_ARG_NUM_REG, FP_ARG_NUM_REG): New defines.
1793         (s390_function_arg, s390_gimplify_va_arg): Use them.
1794         (s390_register_info): Save only required subset of argument
1795         registers into save area for va_list.
1796         (s390_va_start): Initialize only required elements of va_list struct.
1797         (s390_build_builtin_va_list): Set va_list_[gf]pr_counter_field.
1798
1799 2005-05-25  Ulrich Weigand  <uweigand@de.ibm.com>
1800
1801         * reload1.c (verify_initial_elim_offsets): Return boolean status
1802         instead of aborting.
1803         (reload): Adapt verify_initial_elim_offsets call site.  Restart
1804         main loop if some initial elimination offsets changed.
1805
1806 2005-05-25  Adam Nemet  <anemet@lnxw.com>
1807
1808         * config/rs6000/lynx.h (CC1_SPEC): Use -maix-struct-return instead
1809         of -mno-svr4-struct-return.
1810
1811 2005-05-25  Daniel Berlin  <dberlin@dberlin.org>
1812
1813         Fix PR tree-optimization/21705
1814         
1815         * tree-ssa-pre.c (in_fre): New static variable.
1816         (create_value_expr_from): Recursively value number reference ops
1817         in argument lists.
1818         (can_value_number_call): Temporary restrict only exists for
1819         PRE, not FRE.
1820
1821 2005-05-25  Kazu Hirata  <kazu@cs.umass.edu>
1822
1823         * tree-into-ssa.c (rewrite_into_ssa, update_ssa): Replace
1824         sizeof (bitmap *) with sizeof (bitmap).
1825
1826 2005-05-25  Daniel Berlin <dberlin@dberlin.org>
1827
1828         * lambda-code.c (perfect_nestify): Call update_stmt on the exit
1829         condition.
1830
1831 2005-05-25  Adrian Straetling  <straetling@de.ibm.com>
1832
1833         * config/s390/s390.c (TARGET_INSN_VALID_WITHIN_DOLOOP): Set to
1834         hook_bool_rtx_true.
1835
1836 2005-05-25  Jan Hubicka  <jh@suse.cz>
1837
1838         * Makefile.in (ipa-inline.o): Add COEVERAGE_H dependency.
1839         * cgraph.c (cgraph_create_node): Reset estimated_growth.
1840         * cgraph.h (cgraph_global_info): Add estimated_growth.
1841         * ipa-inline.c: Include coverage.h
1842         (max_insns, max_count): New static variables.
1843         (cgraph_estimate_size_after_inlining): Cache the result.
1844         (cgraph_estimate_growth):
1845         * passes.c (rest_of_clean_state): Kill coverage_end_function.
1846         * timevar.def (TV_INLINE_HEURISTICS): New timevar.
1847         * tree-optimize.c (init_tree_optimization_passes): Move profiling before
1848         inlining.
1849         (ipa_passes): Initialize bitmaps.
1850
1851 2005-05-25  Adrian Straetling  <straetling@de.ibm.com>
1852
1853         * loop-doloop.c: Include "target.h". 
1854           (doloop_valid_p): Move tests to function in targhooks.c.
1855         * target.h (struct gcc_target): New target hook
1856           "insn_valid_within_doloop".
1857         * target-def.h: Define default value for "insn_valid_within_doloop".
1858           (TARGET_INITIALIZER): Insert new target hook into initializer.
1859         * targhooks.c (default_insn_valid_within_doloop): New function.
1860         * targhooks.h (default_insn_valid_within_doloop): Declare.
1861         * hooks.c (hook_bool_rtx_true): New function.
1862         * hooks.h (hook_bool_rtx_true): Declare.
1863         * doc/tm.texi: Add documentation for new target hook.
1864
1865 2005-05-25  Eric Botcazou  <ebotcazou@libertysurf.fr>
1866
1867         PR target/21412
1868         * config/sparc/sparc.h (SPARC_SYMBOL_REF_TLS_P): New macro
1869         * config/sparc/sparc-protos.h (tls_symbolic_operand): Delete.
1870         (sparc_tls_referenced_p): New prototype.
1871         * config/sparc/sparc.c (tls_symbolic_operand): Delete.
1872         (sparc_expand_move): Look for TLS addresses with constant offsets.
1873         (legitimate_constant_p): Use SPARC_SYMBOL_REF_TLS_P instead of
1874         tls_symbolic_operand.
1875         (legitimate_pic_operand_p): Likewise.
1876         (legitimate_address_p): Likewise.
1877         (legitimize_address): Likewise.
1878         (sparc_tls_symbol_ref_1): New function.
1879         (sparc_tls_referenced_p): New function.
1880         * config/sparc/predicates.md (tgd_symbolic_operand): Use
1881         SYMBOL_REF_TLS_MODEL instead of tls_symbolic_operand.
1882         (tld_symbolic_operand): Likewise.
1883         (tie_symbolic_operand): Likewise.
1884         (tle_symbolic_operand): Likewise.
1885
1886 2005-05-24  DJ Delorie  <dj@redhat.com>
1887         
1888         * common.opt (-Wattributes): New.  Default true.
1889         * doc/invoke.texi (-Wno-attributes): Document.
1890         
1891         * attribs.c (decl_attributes): Move warning control from if() to
1892         warning(OPT_*).
1893         * c-common.c (handle_packed_attribute): Likewise.
1894         (handle_nocommon_attribute): Likewise.
1895         (handle_common_attribute): Likewise.
1896         (handle_noreturn_attribute): Likewise.
1897         (handle_noinline_attribute): Likewise.
1898         (handle_always_inline_attribute): Likewise.
1899         (handle_used_attribute): Likewise.
1900         (handle_unused_attribute): Likewise.
1901         (handle_const_attribute): Likewise.
1902         (handle_transparent_union_attribute): Likewise.
1903         (handle_constructor_attribute): Likewise.
1904         (handle_destructor_attribute): Likewise.
1905         (handle_mode_attribute): Likewise.
1906         (handle_alias_attribute): Likewise.
1907         (handle_visibility_attribute): Likewise.
1908         (handle_tls_model_attribute): Likewise.
1909         (handle_malloc_attribute): Likewise.
1910         (handle_returns_twice_attribute): Likewise.
1911         (handle_pure_attribute): Likewise.
1912         (handle_deprecated_attribute): Likewise.
1913         (handle_vector_size_attribute): Likewise.
1914         (handle_nothrow_attribute): Likewise.
1915         (handle_cleanup_attribute): Likewise.
1916         (handle_warn_unused_result_attribute): Likewise.
1917         (handle_sentinel_attribute): Likewise.
1918         * c-decl.c (diagnose_mismatched_decls): Likewise.
1919         (start_decl): Likewise.
1920         (grokdeclarator): Likewise.
1921         (start_function): Likewise.
1922         * c-format.c (check_function_format): Likewise.
1923         * stor-layout.c (place_field): Likewise.
1924         (finalize_record_size): Likewise.
1925         * tree.c (handle_dll_attribute)): Likewise.
1926         * varasm.c (default_assemble_visibility): Likewise.
1927         * config/darwin.c (darwin_handle_weak_import_attribute): Likewise.
1928         (darwin_assemble_visibility): Likewise.
1929         * config/arc/arc.c (arc_handle_interrupt_attribute): Likewise.
1930         * config/arm/arm.c (arm_handle_fndecl_attribute): Likewise.
1931         (arm_handle_isr_attribute): Likewise.
1932         * config/avr/avr.c (avr_handle_progmem_attribute): Likewise.
1933         (avr_handle_fndecl_attribute): Likewise.
1934         * config/bfin/bfin.c (handle_int_attribute): Likewise.
1935         * config/c4x/c4x.c (c4x_handle_fntype_attribute): Likewise.
1936         * config/h8300/h8300.c (h8300_handle_fndecl_attribute): Likewise.
1937         (h8300_handle_eightbit_data_attribute): Likewise.
1938         (h8300_handle_tiny_data_attribute): Likewise.
1939         * config/i386/i386.c (ix86_handle_cdecl_attribute): Likewise.
1940         (ix86_handle_regparm_attribute): Likewise.
1941         (ix86_handle_struct_attribute): Likewise.
1942         * config/i386/winnt.c (ix86_handle_shared_attribute): Likewise.
1943         (i386_pe_encode_section_info): Likewise.
1944         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
1945         * config/ip2k/ip2k.c (ip2k_handle_progmem_attribute): Likewise.
1946         (ip2k_handle_fndecl_attribute): Likewise.
1947         * config/m32r/m32r.c (m32r_handle_model_attribute): Likewise.
1948         * config/m68hc11/m68hc11 (m68hc11_handle_page0_attribute): Likewise.
1949         (m68hc11_handle_fntype_attribute): Likewise.
1950         (m68hc11_encode_section_info): Likewise.
1951         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
1952         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
1953         * config/ns32k/ns32k.c (ns32k_handle_fntype_attribute): Likewise.
1954         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute): Likewise.
1955         * config/sh/sh.c (sh_handle_interrupt_handler_attribute): Likewise.
1956         (sh_handle_sp_switch_attribute): Likewise.
1957         (sh_handle_trap_exit_attribute): Likewise.
1958         * config/sh/symbian.c (sh_symbian_dllimport_p): Likewise.
1959         (sh_symbian_handle_dll_attribute): Likewise.
1960         * config/stormy16/stormy16.c (xstormy16_handle_interrupt_attribute): Likewise.
1961         (xstormy16_handle_below100_attribute): Likewise.
1962         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
1963
1964         * c-common.c (unsigned_conversion_warning): Move warning control
1965         from if() to warning(OPT_*).
1966         (c_common_truthvalue_conversion): Likewise.
1967         (c_do_switch_warnings): Likewise.
1968         * c-decl.c (diagnose_mismatched_decls): Likewise.
1969         (diagnose_mismatched_decls): Likewise.
1970         (define_label): Likewise.
1971         (grokdeclarator): Likewise.
1972         * c-format.c (check_format_info): Likewise.
1973         * c-lex.c (interpret_integer): Likwise.
1974         (lex_string): Likewise.
1975         * c-opts.c (c_common_post_options): Likewise.
1976         * c-parser.c (c_parser_unary_expression): Likewise.
1977         * c-pragma.c (handle_pragma_redefine_extname): Likewise.
1978         (handle_pragma_extern_prefix): Likewise.
1979         * c-typeck.c (build_binary_op): Likewise.
1980         * gcse.c (is_too_expensive): Likewise.
1981         * opts.c (decode_options): Likewise.
1982         * stor-layout.c (place_field): Likewise.
1983         * tree-cfg.c (remove_bb): Likewise.
1984
1985         * c.opt (-Wreturn-type): Add Var(warn_return_type).
1986         * flags.h (warn_return_type): Remove.
1987         * toplev.c (warn_return_type): Likewise.
1988
1989 2005-05-24  Kelley Cook  <kcook@gcc.gnu.org>
1990
1991         * configure.ac: Don't use gcc_AC_C_LONG_LONG.  Check for
1992         existence of long long and __int64 before determining their size.
1993         * aclocal.m4: Delete gcc_AC_C_LONG_LONG.
1994         * configure, config.h.in:  Regenerate.
1995
1996 2005-05-24  Kelley Cook  <kcook@gcc.gnu.org>
1997
1998         * configure: Regenerate.
1999
2000 2005-05-24  Ziemowit Laski  <zlaski@apple.com>
2001
2002         * c-common.h (objc_comptypes): Remove prototype.
2003         (objc_compare_types): New prototype.
2004         (objc_volatilized_decl): Likewise.
2005         (objc_type_quals_match): Likewise.
2006         * c-decl.c (objc_mark_locals_volatile): Streamline by calling
2007         objc_volatilize_decl().
2008         * c-typeck.c (comp_target_types): Remove third parameter; do
2009         not call objc_comptypes().
2010         (comptypes): Remove calls to objc_comptypes().
2011         (build_function_call): Extend compatible prototype check to ObjC.
2012         (build_conditional_expr): Adjust call to comp_target_types().
2013         (convert_for_assignment): Call objc_compare_types() instead of
2014         objc_comptypes(); adjust calls to comp_target_types(); call
2015         objc_type_quals_match() before issuing qualifier mismatch
2016         warnings.
2017         (build_binary_op): Call objc_compare_types() before issuing
2018         pointer mismatch warnings; adjust calls to
2019         comp_target_types().
2020         * stub-objc.c (objc_comptypes): Remove stub.
2021         (objc_compare_types): New stub.
2022         (objc_volatilized_decl): Likewise.
2023         (objc_type_quals_match): Likewise.
2024
2025 2005-05-24  Paolo Carlini  <pcarlini@suse.de>
2026
2027         * config/ia64/ia64intrin.h: Define nothing for C++:
2028         overloaded builtins have been ported to C++.
2029
2030 2005-05-24  Jeff Law  <law@redhat.com>
2031
2032         * tree-nested.c (build_addr): New "context" argument.  Temporarily
2033         set current_function_decl around the call to build the ADDR_EXPR.
2034         (get_static_chain): Pass proper context to build_addr.
2035         (convert_nl_goto_reference): Likewise.
2036         (convert_tramp_reference): Likewise.
2037         (final_nesting_tree_1): Likewise.
2038         * tree-profile.c (tree_gen_interval_profiler): Likewise.
2039         (tree_gen_pow2_profiler): Likewise.
2040         (tree_gen_one_value_profiler): Likewise.
2041         * tree-ssa-loop-ivopts.c (build_addr_strip_iref): Likewise.
2042         * tree.h (build_addr): Update prototype.
2043
2044 2005-05-24  Kazu Hirata  <kazu@cs.umass.edu>
2045
2046         * tree-flow.h (bb_ann_d): Remove has_escape_site.
2047         * tree-ssa-alias.c (compute_points_to_addr_escape): Don't
2048         write to has_escape_site.
2049
2050 2005-05-24  Jeff Law  <law@redhat.com>
2051
2052         * Makefile.in (tree-cfg.o): Depend on tree-ssa-propagate.h.
2053         * tree-cfg.c: Include tree-ssa-propagate.h.
2054         (replace_uses_by): Call recompute_tree_invarant_for_addr_expr as
2055         needed.
2056
2057 2005-05-24  Nick Clifton  <nickc@redhat.com>
2058
2059         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
2060         __NO_FPRS__ when 'f' class registers will not be available. 
2061
2062 2005-05-24  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
2063
2064         * config/m32r/m32r.c (m32r_expand_block_move):  Return 0 if
2065         nothing was done.
2066         * config/m32r/m32r.md (movmemsi):  If m32r_expand_block_move did
2067         nothing then FAIL.
2068         * config/m32r/m32r/m32r-protos.h  (m32r_expand_block_move): Update
2069         prototype.
2070
2071 2005-05-23  Jeff Law  <law@redhat.com>
2072
2073         * tree-ssa-dom.c (cprop_into_stmt): Do not call
2074         recompute_tree_invariant_for_addr_expr here.
2075         (optimize_stmt): Call it here instead and do so if anything
2076         at all has changed in the statement and the RHS is an ADDR_EXPR.
2077         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): If
2078         needed, call recompute_tree_invariant_for_addr_expr.
2079         * tree-ssa-propagate.c (substitute_and_fold): Call
2080         recompute_tree_invariant_for_addr_expr as needed.
2081
2082 2005-05-23  Andreas Krebbel  <krebbel1@de.ibm.com>
2083
2084         * config/s390/s390.c (s390_optimize_prologue): Don't replace an insn
2085         saving less registers than the replacement.
2086
2087 2005-05-23  Jan Hubicka  <jh@suse.cz>
2088
2089         * tree-flow.h (stmt_ann_d): Kill GTY ((skip)) mark on BB.
2090
2091 2005-05-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
2092
2093         * config/sparc/sparc-protos.h (sparc_expand_move): New prototype.
2094         * config/sparc/sparc.c (sparc_expand_move): New function.
2095         (sparc_emit_set_const64): Rewrite assert condition on entry.
2096         (legitimate_constant_p) <CONST_VECTOR>: New case.
2097         (legitimize_pic_address): Use TARGET_ARCH64 to select the mode.
2098         * config/sparc/sparc.md (movqi, movhi, movsi, movdi, movV32,
2099         movV64, movtf): Use nonimmediate_operand for the first operand.
2100         Rewrite.  Only invoke sparc_expand_move.
2101         * config/sparc/predicates.md (input_operand): Reorder tests.
2102
2103 2005-05-23  Jan Beulich  <jbeulich@novell.com>
2104
2105         * gthr-posix.h (__gthread_recursive_mutex_init_function): Add
2106         missing return statement.
2107
2108 2005-05-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
2109
2110         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Use
2111         emit_move_insn for moves to TFmode stack slots.
2112
2113 2005-05-21  Richard Guenther  <rguenth@gcc.gnu.org>
2114
2115         * tree-stdarg.c (execute_optimize_stdarg): Handle references
2116         to va_list of the form &va[0].
2117
2118 2005-05-20  Jan Hubicka  <jh@suse.cz>
2119
2120         * Makefile.in (insn-emit.o): Add basic-block.h dependency.
2121         * genemit.c (main): Make insn-emit to include basic-block.h too.
2122
2123 2005-05-20  Jan Hubicka  <jh@suse.cz>
2124
2125         * cgraphunit.c (cgraph_expand_function): Force function being lowered.
2126
2127 2005-05-19  Richard Henderson  <rth@redhat.com>
2128
2129         * config/alpha/alpha.c (emit_unlikely_jump, emit_load_locked,
2130         emit_store_conditional): Split out from ...
2131         (alpha_split_atomic_op): ... here.
2132         (alpha_split_compare_and_swap): New; extract from .md file.
2133         (alpha_split_lock_test_and_set): Likewise.
2134         * config/alpha/alpha-protos.h: Update.
2135         * config/alpha/sync.md (sync_compare_and_swap<I48MODE>): Move
2136         split code into alpha.c.
2137         (sync_lock_test_and_set<I48MODE>): Likewise.
2138
2139 2005-05-19  Richard Henderson  <rth@redhat.com>
2140
2141         * unwind.h, unwind-pe.h: Revert gcc_unreachable change of 05-17.
2142
2143 2005-05-19  Richard Henderson  <rth@redhat.com>
2144
2145         * config/i386/sse.md (mulv4si3): Use all register inputs.
2146         (mulv2di3): Likewise.
2147
2148 2005-05-19  Richard Guenther  <rguenth@gcc.gnu.org>
2149
2150         * tree-ssa-loop-ivopts.c (determine_base_object): Use
2151         build_fold_addr_expr to generate trees of correct type.
2152         Use fold_buildN if possible.
2153
2154 2005-05-19  Jan Hubicka  <jh@suse.cz>
2155
2156         * basic-block.h (REG_BR_PROB_BASE): Define.
2157         * cgraph.c (cgraph_create_edge): Initialize loop_nest and count.
2158         (dump_cgraph_node): Dump count.
2159         (cgraph_clone_edge): Rescale counts.
2160         (cgraph_clone_node): Likewise.
2161         * cgraph.h: Include basic-block.h
2162         (cgraph_node): Add count.
2163         (cgraph_edge): Add count and loop_nest.
2164         (cgraph_node, cgraph_edge, cgraph_clone_edge, cgraph_clone_node):
2165         Update prototypes.
2166         * cgraphunit.c: Kill now redundant inlining comment.
2167         (cgraph_create_edges): Make static, maintain current basic block;
2168         fix pasto.
2169         (record_call_1): Fill in new fields.
2170         * ipa-inline.c (cgraph_clone_inlined_nodes): Update call of
2171         cgraph_clone_node.
2172         (cgraph_decide_recursive_inlining): Likewise.
2173         * rtl.h (REG_BR_PROB_BASE): Kill.
2174         * tree-inline.c (copy_body_r): Update call of cgraph_clone_edge.
2175         (expand_call_inline): Update call of cgraph_create_edge.
2176         * tree-optimize.c (tree_rest_of_compilation): Likewise.
2177
2178 2005-05-19  Nick Clifton  <nickc@redhat.com>
2179
2180         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use the
2181         new rs6000_explicit_options structure.
2182
2183 2005-05-19  Richard Henderson  <rth@redhat.com>
2184
2185         PR target/21390
2186         * config/alpha/alpha.c (alpha_emit_conditional_branch): Move 
2187         TFmode code swapping ...
2188         (alpha_emit_xfloating_compare): ... here.
2189         (alpha_emit_setcc): Update to match.
2190         (alpha_lookup_xfloating_lib_func): Assert TARGET_HAS_XFLOATING_LIBS.
2191
2192 2005-05-19  Richard Henderson  <rth@redhat.com>
2193
2194         PR target/21657
2195         * config/ia64/ia64.c (ia64_expand_tls_address): Remove extra
2196         memory indirection in local-dynamic case.
2197
2198 2005-05-18  Jie Zhang  <jie.zhang@analog.com>
2199             Bernd Schmidt  <bernd.schmidt@analog.com>
2200
2201         * config/bfin/bfin.c (branch_dest): Add comment why it's
2202         necessary.
2203         * config/bfin/bfin.md (attr "length" default): Change the offset of
2204         forward conditional branch of length 4 from 4096 to 4092.
2205
2206 2005-05-19  Jan Beulich  <jbeulich@novell.com>
2207
2208         * unwind-compat.c: Include tconfig.h and tsystem.h.
2209         * unwind-dw2-fde-compat.c: Likewise.
2210
2211 2005-05-18  Richard Henderson  <rth@redhat.com>
2212
2213         PR 21541
2214         * ifcvt.c (noce_process_if_block): Avoid conversion when the
2215         memory destination is readonly.
2216
2217 2005-05-18  Richard Henderson  <rth@redhat.com>
2218
2219         PR 21541
2220         * tree-ssa-operands.c (opf_non_specific): New.
2221         (get_asm_expr_operands): Set it.
2222         (add_call_clobber_ops, add_call_read_ops): Likewise.
2223         (add_stmt_operand): Test it instead of opf_kill_def when
2224         considering unmodifiable variables.
2225
2226         * tree-ssa-operands.c (get_expr_operands): Fix exact test.
2227
2228 2005-05-19  Kazu Hirata  <kazu@cs.umass.edu>
2229
2230         * cfgexpand.c, tree-cfg.c, tree-inline.c, tree-optimize.c,
2231         tree-ssa-forwprop.c: Fix comment typos.
2232         * doc/invoke.texi: Fix a typo.
2233
2234 2005-05-18  Richard Henderson  <rth@redhat.com>
2235
2236         * config.gcc (powerpc-*-linux*): Include linux64.opt when
2237         including linux64.h.
2238
2239 2005-05-18  Richard Henderson  <rth@redhat.com>
2240
2241         * tree-cfg.c (pass_remove_useless): Revert last change.
2242         * tree-optimize.c (init_tree_optimization_passes): Initialize
2243         all_lowering_passes with PROP_gimple_any.
2244
2245 2005-05-18  Devang Patel  <dpatel@apple.com>
2246
2247         * config/rs6000/rs6000.md (insvsi_internal1): Subtract shift from
2248         the mask end.
2249         
2250 2005-05-18  Richard Henderson  <rth@redhat.com>
2251
2252         * tree-ssa-forwprop.c (cfg_changed): New.
2253         (tidy_after_forward_propagate_addr): New.
2254         (forward_propagate_addr_expr): Use it, and fold_stmt_inplace.
2255         (forward_propagate_addr_into_variable_array_index): Likewise.
2256         (tree_ssa_forward_propagate_single_use_vars): Cleanup cfg if
2257         edges were removed.
2258
2259 2005-05-18  Geoffrey Keating  <geoffk@apple.com>
2260
2261         * dummy-checksum.c: New.
2262         * genchecksum.c: New.
2263         * c.opt (print_pch_checksum): New flag.
2264         * c-pch.c (struct c_pch_validity): Make much shorter.
2265         (no_checksum): New.
2266         (host_machine): Remove.
2267         (target_machine): Remove.
2268         (get_ident): Change PCH version number.
2269         (pch_init): When -fverbose-asm, print out the compiler fingerprint.
2270         Don't put triplets or version string in PCH validity data.
2271         Do put the compiler checksum in the validity data.
2272         (c_common_valid_pch): Don't check triplets or version string.  Do
2273         check checksum.
2274         (c_common_print_pch_checksum): New.
2275         * c-opts.c (c_common_handle_option): Add OPT_print_pch_checksum.
2276         Print fingerprint with -v.
2277         * c-common.h (c_common_print_pch_checksum): New.
2278         (executable_checksum): New.
2279         * Makefile.in (STAGEMOVESTUFF): Add cc1*-dummy, *-checksum.c.
2280         (cc1-dummy): New rule.
2281         (cc1-checksum.c): New rule.
2282         (cc1-checksum.o): New rule.
2283         (cc1): Add checksum support.
2284         (build/genchecksum): New.
2285         (build/genchecksum.o): New.
2286         (dummy-checksum.o): New.
2287         (genobjnames): Add genchecksum.o.
2288         (mostlyclean): Remove *-checksum.c.
2289         (gnucompare): Add libgcc to list of directories checked.
2290         Make comparison problems in libgcc/ and with checksum files only
2291         be warnings.
2292         * doc/invoke.texi (Precompiled Headers): Remove caution.
2293         Document that it must be the exact same binary.  Add a few
2294         known-safe flags to the list.
2295
2296         * rs6000/predicates.md (fix_trunc_dest_operand): New.
2297         * rs6000/rs6000.md (fix_truncdfsi2): Use fix_trunc_dest_operand.
2298         Check that a memory operand is valid before trying to use it.
2299         
2300         * tree-cfg.c (pass_remove_useless): This pass works on trees.
2301
2302 2005-05-18  Richard Guenther  <rguenth@gcc.gnu.org>
2303
2304         * tree.c (build1_stat): Don't try to handle two-operand
2305         tree codes.
2306
2307 2005-05-18  Richard Sandiford  <rsandifo@redhat.com>
2308
2309         * config.gcc (sh*-*-*): Define SUPPORT_* macros to 1.
2310         * config/sh/sh.h: Update mask names throughout.
2311         (target_flags, ISIZE_BIT, DALIGN_BIT, SH1_BIT, SH2_BIT, SH3_BIT)
2312         (SH_E_BIT, HARD_SH4_BIT, FPU_SINGLE_BIT, SH4_BIT, SH4A_BIT, FMOVD_BIT)
2313         (SH5_BIT, SPACE_BIT, BIGTABLE_BIT, RELAX_BIT, USERMODE_BIT)
2314         (HITACHI_BIT, NOMACSAVE_BIT, PREFERGOT_BIT, PADSTRUCT_BIT)
2315         (LITTLE_ENDIAN_BIT, IEEE_BIT, SAVE_ALL_TR_BIT, HARD_SH2A_BIT)
2316         (HARD_SH2A_DOUBLE_BIT, INDEXED_ADDRESS_BIT, PT_FIXED_BIT)
2317         (INVALID_SYMBOLS_BIT, ADJUST_UNROLL_BIT, TARGET_DUMPISIZE)
2318         (TARGET_ALIGN_DOUBLE, TARGET_SH1, TARGET_SH2, TARGET_SH3)
2319         (TARGET_HARD_SH4, TARGET_FPU_SINGLE, TARGET_SH5, TARGET_FMOVD)
2320         (TARGET_IEEE, TARGET_SMALLCODE, TARGET_BIGTABLE, TARGET_RELAX)
2321         (TARGET_HITACHI, TARGET_NOMACSAVE, TARGET_PADSTRUCT)
2322         (TARGET_LITTLE_ENDIAN, TARGET_USERMODE, TARGET_PREFERGOT)
2323         (TARGET_SAVE_ALL_TARGET_REGS, TARGET_ALLOW_INDEXED_ADDRESS)
2324         (TARGET_PT_FIXED, TARGET_INVALID_SYMBOLS, TARGET_ADJUST_UNROLL)
2325         (TARGET_SWITCH_SH1, TARGET_SWITCH_SH2, TARGET_SWITCH_SH2E)
2326         (TARGET_SWITCH_SH2A, TARGET_SWITCH_SH2A_SINGLE_ONLY)
2327         (TARGET_SWITCH_SH2A_SINGLE, TARGET_SWITCH_SH2A_NOFPU)
2328         (TARGET_SWITCH_SH3, TARGET_SWITCH_SH3E, TARGET_SWITCH_SH4_SINGLE_ONLY)
2329         (TARGET_SWITCH_SH4_SINGLE, TARGET_SWITCH_SH4_NOFPU, TARGET_SWITCH_SH4)
2330         (TARGET_SWITCH_SH4A, TARGET_SWITCH_SH4A_SINGLE_ONLY)
2331         (TARGET_SWITCH_SH4A_SINGLE, TARGET_SWITCH_SH4A_NOFPU)
2332         (TARGET_SWITCH_SH4AL, TARGET_SWITCH_SH5_64MEDIA)
2333         (TARGET_SWITCH_SH5_64MEDIA_NOFPU, TARGET_SWITCHES_SH5_32MEDIA)
2334         (TARGET_SWITCHES_SH5_32MEDIA_NOFPU, TARGET_SWITCH_SH5_32_ANY_EXTRA)
2335         (TARGET_SWITCH_SH5_MEDIA_ANY_EXTRA, TARGET_SWITCHES)
2336         (SUBTARGET_SWITCHES): Delete.
2337         (TARGET_SH2E, TARGET_SH2A, TARGET_SH2A_SINGLE, TARGET_SH2A_DOUBLE)
2338         (TARGET_SH3E, TARGET_CACHE32, TARGET_SUPERSCALAR, TARGET_HARVARD)
2339         (TARGET_FPU_DOUBLE, TARGET_SH4A_ARCH, TARGET_SHMEDIA32)
2340         (TARGET_SHMEDIA64): Redefine using other TARGET_* macros.
2341         (TARGET_SH4): Undefine options.h definition and check MASK_SH1 as well.
2342         (SUPPORT_SH1, SUPPORT_SH2E, SUPPORT_SH4, SUPPORT_SH4_SINGLE)
2343         (SUPPORT_SH2A, SUPPORT_SH2A_SINGLE): Make numeric.
2344         (SUPPORT_SH2): Define to 1 if SUPPORT_SH1.
2345         (SUPPORT_SH3): Likewise SUPPORT_SH2.
2346         (SUPPORT_SH4_NOFPU): Likewise SUPPORT_SH3.
2347         (SUPPORT_SH4A_NOFPU, SUPPORT_SH4AL, SUPPORT_SH2A_NOFPU): Likewise
2348         SUPPORT_SH4_NOFPU.
2349         (SUPPORT_SH3E): Likewise SUPPORT_SH2E.
2350         (SUPPORT_SH4_SINGLE_ONLY, SUPPORT_SH4A_SINGLE_ONLY)
2351         (SUPPORT_SH2A_SINGLE_ONLY): Likewise SUPPORT_SH3E.
2352         (SUPPORT_SH4A): Likewise SUPPORT_SH4.
2353         (SUPPORT_SH4A_SINGLE): Likewise SUPPORT_SH4_SINGLE.
2354         (SUPPORT_SH5_32MEDIA): Likewise SUPPORT_SH5_COMPACT.
2355         (SUPPORT_SH5_32MEDIA_NOFPU): Likewise SUPPORT_SH5_COMPACT_NOFPU.
2356         (SUPPORT_ANY_SH5_32MEDIA, SUPPORT_ANY_SH5_64MEDIA)
2357         (SUPPORT_ANY_SH5): New macros.
2358         (TARGET_NONE): Replace with...
2359         (MASK_ARCH): ...this new macro.
2360         * config/sh/elf.h: Update mask names
2361         * config/sh/linux.h: Likewise.
2362         * config/sh/little.h: Likewise.
2363         * config/sh/netbsd-elf.h: Likewise.
2364         * config/sh/symbian-pre.h: Likewise.
2365         * config/sh/sh.c (sh_handle_option): New function.
2366         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
2367         (calc_live_regs): Use MASK_FPU_SINGLE instead of FPU_SINGLE_BIT.
2368         (sh_target_switches, target_switches): Delete.
2369         (sh_pch_valid_p): Check for specific differences in the target_flags
2370         settings.
2371         (sh_init_cumulative_args): Use MASK_HITACHI instead of HITACHI_BIT.
2372         * config/sh/sh.opt: New file.
2373
2374 2005-05-18  Richard Henderson  <rth@redhat.com>
2375
2376         PR target/21632
2377         * config/ia64/ia64.c (ia64_extra_constraint) <'T'>: Use
2378         small_addr_symbolic_operand.
2379
2380 2005-05-18  Jeff Law  <law@redhat.com>
2381
2382         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
2383         propagate an ADDR_EXPR if the definition and use sites are
2384         in different EH regions.
2385
2386 2005-05-18  Ian Lance Taylor  <ian@airs.com>
2387
2388         * read-rtl.c (mode_attr_index): Use obstack_grow0, not
2389         obstack_grow.
2390
2391 2005-05-18  Daniel Berlin  <dberlin@dberlin.org>
2392
2393         * cfgrtl.c (purge_dead_edges): Don't remove fake edges.
2394
2395 2005-05-18  Daniel Berlin  <dberlin@dberlin.org>
2396         
2397         Fix PR tree-optimization/21407
2398
2399         * tree-ssa-operands.c (note_addressable): Change
2400         COMPONENT_REF handling in response to aliasing
2401         discussion.
2402
2403 2005-05-18  Eric Botcazou  <ebotcazou@libertysurf.fr>
2404
2405         * config/sparc/sol2.h (TARGET_DEFAULT): Add back MASK_APP_REGS.
2406         * config/sparc/sol2-64.h (TARGET_DEFAULT): Likewise.
2407         * config/sparc/sp-elf.h (TARGET_DEFAULT): Delete.
2408         * doc/invoke.texi (SPARC options): Document that -mapp-regs is
2409         the default on Solaris too.
2410
2411 2005-05-17  Daniel Berlin  <dberlin@dberlin.org>
2412
2413         * tree-ssa-pre.c (find_or_generate_expression): CALL_EXPR
2414         is okay too.
2415
2416 2005-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
2417
2418         * timevar.def (TV_SCEV_CONST): New timevar.
2419         * tree-optimize.c (init_tree_optimization_passes): Add
2420         pass_scev_cprop.
2421         * tree-pass.h (pass_scev_cprop): Declare.
2422         * tree-scalar-evolution.c (scev_const_prop): New function.
2423         * tree-scalar-evolution.h (scev_const_prop): Declare.
2424         * tree-ssa-loop.c (gate_scev_const_prop, pass_scev_cprop):
2425         New.
2426         * tree-cfg.c (replace_uses_by): Export.
2427         * tree-flow.h (replace_uses_by): Declare.
2428
2429 2005-05-17  Ziemowit Laski  <zlaski@apple.com>
2430             Mike Stump  <mrs@apple.com>
2431
2432         Yet more Objective-C++...
2433
2434         * c-common.h (objc_finish_try_stmt): Add.
2435         (objc_build_synchronized): Add.
2436         (objc_generate_write_barrier): Add.
2437         * stub-objc.c (objc_build_synchronized): Add return value.
2438         (objc_finish_try_stmt): Likewise.
2439         (objc_generate_write_barrier): Add.
2440
2441         * c-common.h (objc_rewrite_function_call): Add.
2442         * c-typeck.c (build_function_call): Allow objc to rewrite
2443         FUNCTION_DECLs.
2444         (build_modify_expr): Allow objc to generate write barriers.
2445         * c.opt (Wassign-intercept): Add.
2446         (Wstrict-selector-match): Add.
2447         (fobjc-call-cxx-cdtors): Add.
2448         (fobjc-direct-dispatch): Add.
2449         (fobjc-gc): Add.
2450         * dbxout.c (get_lang_number): Add Objective-C++ support.
2451         * doc/invoke.texi (-fobjc-call-cxx-cdtors): Likewise.
2452         (-Wstrict-selector-match): Likewise.
2453         (-fobjc-direct-dispatch): Likewise.
2454         (-Wassign-intercept): Likewise.
2455         (Overall Options): Likewise.
2456         * gengtype.c (get_output_file_with_visibility): Likewise.
2457         * stub-objc.c (objc_rewrite_function_call): Add.
2458         * config/darwin.h (ASM_OUTPUT_LABELREF): Improved quoting support.
2459
2460         * c-common.c (flag_objc_exceptions): Remove.
2461         (flag_objc_sjlj_exceptions): Remove.
2462         * c-decl.c (objc_mark_locals_volatile): Don't change decls
2463         that are already ok.
2464         * c-opts.c (c_common_handle_option, case
2465         OPT_fobjc_exceptions): Remove.
2466         (case OPT_fobjc_sjlj_exceptions): Remove
2467         * c.opt (fobjc-call-cxx-cdtors): Have opt create the flag.
2468         (fobjc-exceptions): Likewise.
2469         (fobjc-sjlj-exceptions): Likewise.
2470         * config/rs6000/darwin.h (OFFS_MSGSEND_FAST): Add.
2471         (OFFS_ASSIGNIVAR_FAST): Add.
2472         
2473 2005-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
2474
2475         * config/sparc/sparc.md (movhi): Do not test constness
2476         of operand #1 twice.
2477         (movsi): Likewise.
2478         (movdi): Unconditionally accept zero as second operand
2479         when the first is memory.
2480         (movdi_insn_sp32): Handle above case.
2481         (DImode splitter): Use predicates.
2482         (DImode splitter): Use const_zero_operand predicate.
2483         (movsf_insn): Swap 2 alternatives.
2484
2485 2005-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
2486
2487         * tree-ssa-loop-ivopts.c (find_bivs, find_givs_in_stmt_scev): Apply
2488         expand_simple_operations to bases of the ivs.
2489         (tree_int_cst_sign_bit): Export.
2490         * tree-flow.h (expand_simple_operations): Declare.
2491         * tree-ssa-loop-niter.c (number_of_iterations_cond): Use
2492         tree_int_cst_sign_bit.
2493         (expand_simple_operations): Export.
2494         * tree.h (tree_int_cst_sign_bit): Declare.
2495
2496 2005-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
2497
2498         * tree-cfg.c (tree_can_merge_blocks_p): Allow phi nodes in the
2499         merged block.
2500         (replace_uses_by): New function.
2501         (tree_merge_blocks): Eliminate the phi nodes in the merged block.
2502         * tree-flow.h (fold_stmt_inplace): Declare.
2503         * tree-ssa-ccp.c (fold_stmt_inplace): New function.
2504         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Update dominance
2505         info after cfg cleanup.
2506
2507 2005-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
2508
2509         * cfgloop.h (just_once_each_iteration_p): Declaration changed.
2510         * cfgloopanal.c (just_once_each_iteration_p): Make the loop argument
2511         const.
2512
2513 2005-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
2514
2515         * ggc-page.c (ggc_alloc_stat): Record amount of memory allocated.
2516         * ggc-zone.c (ggc_alloc_zone_1): Ditto.
2517         * timevar.c (timevar_ggc_mem_total): New variable.
2518         (GGC_MEM_BOUND): New constant.
2519         (get_time): Record ggc memory status.
2520         (timevar_accumulate): Accumulate amount of ggc memory.
2521         (timevar_print): Print consumption of ggc memory.
2522         * timevar.def (TV_FIND_REFERENCED_VARS, TV_TREE_REDPHI,
2523         TV_TREE_LOOP_BOUNDS, TV_TREE_LOOP_IVCANON, TV_TREE_VECTORIZATION,
2524         TV_TREE_LINEAR_TRANSFORM): Shorten strings to fit in 22 characters.
2525         * timevar.h (struct timevar_time_def): Add ggc_mem field.
2526         (timevar_ggc_mem_total): Declare.
2527
2528 2005-05-17  Kazu Hirata  <kazu@cs.umass.edu>
2529
2530         * tree-into-ssa.c (update_ssa): Clean up by shortening the
2531         live range of DFS.
2532
2533 2005-05-17  Hans-Peter Nilsson  <hp@axis.com>
2534
2535         * config/cris/cris.md (ncond, ocode, rcond): Remove separate
2536         define_code_attr.
2537         ("b<ncond:code>", "b<ocond:code>", "b<rcond:code>")
2538         ("*b<ncond:code>_reversed", "*b<ocond:code>_reversed")
2539         ("*b<rcond:code>_reversed", "s<ncond:code>", "s<rcond:code>")
2540         ("s<ocond:code>"): Rename from respectively "b<ncond>",
2541         "b<ocond>", "b<rcond>", ("*b<ncond>_reversed",
2542         "*b<ocond>_reversed", "*b<rcond>_reversed", "s<ncond>",
2543         "s<rcond>" and "s<ocond>".
2544         ("b<ocond:code>", "*b<ocond:code>_reversed")
2545         ("*b<rcond:code>_reversed"): Remove extraneous backslashes in
2546         output statement section.
2547
2548 2005-05-17  Roger Sayle  <roger@eyesopen.com>
2549
2550         * c-typeck.c (common_type): Also handle BOOLEAN_TYPEs.
2551
2552 2005-05-17  Steven Bosscher  <stevenb@suse.de>
2553             Stuart Hastings <stuart@apple.com>
2554             Jan Hubicka  <jh@suse.cz>
2555             Dale Johannesen  <dalej@apple.com>
2556
2557         * cgraph.h (cgraph_node): Add 'lowered' state.
2558         (cgraph_lower_function): Declare.
2559         * cgraphunit.c (cgraph_finalize_function): Initialize lowered flag.
2560         (cgraph_lower_function): New function.
2561         (cgraph_create_edges): Deal with lowered function bodies.
2562         (verify_cgraph_node): Likewise.
2563         (cgraph_analyze_function): Do lowering job.
2564         (cgraph_build_static_cdtor): Likewise.
2565         * function.h (struct function): Add saved_eh and saved_cfg.
2566         * integrate.c (copy_decl_for_inlining): Kill LABEL_DECL_UID field.
2567         * tree-cfg.c (fold_cond_expr_cond): Export.
2568         * tree-flow.h (fold_cond_expr_cond): Declare.
2569         * tree-inline.c: Include basic-block, ggc, tree-flow, except.h and
2570         pointer-set.
2571         (struct_inline_data): Kill fnd, first_inlined_fn, ret_label,
2572         in_target_cleanup_p, tree_pruner, tsi; add callee, caller and
2573         callee_cfun, block, eh_region, eh_region_offset.
2574         (inlining_p): New predicate.
2575         (remap_decl): Update for new inline_data; declare newly created inline
2576         vars in low gimple way.
2577         (copy_body_r): Update for new datastructure, simplify some of handling
2578         when we are in gimple; remap LABEL_DECLs for EH; copy TREE_BLOCK;
2579         deal with RESX_EXPRs.
2580         (copy_bb): New.
2581         (copy_edges_for_bb): Likewise.
2582         (remap_decl_1): New.
2583         (copy_cfg_body): New.
2584         (copy_generic_body): Rewrite to work on low gimple.
2585         (copy_body): Turn into simple wrapper around copy_cfg_body.
2586         (setup_one_parameter): Insert new statements into given basic block.
2587         (initialize_initialized_parameters): Likewise, reorganize way things are
2588         gimplified.
2589         (declare_return_variable): Update for new inline data datastructure.
2590         (inline_forbidden_p): Work on low gimple.
2591         (estimate_num_insns): Likewise.
2592         (expand_call_inline): Work on CFG.
2593         (push_cfun, pop_cfun): New functions.
2594         (cfun_stack): New stack.
2595         (add_lexical_block): New function.
2596         (gimple_expand_calls_inline): Work on basic block.
2597         (optimize_inline_calls): Likewise.
2598         (clone_body, save_body, unsave_ewpr_now): Update for new
2599         datastructures.
2600         (declare_inline_vars): Work on block instead of bind_expr.
2601         (inlining_p): New predicate.
2602         * tree-inline.h (push_cfun, pop_cfun): Declare.
2603         * tree-optimize.c: Include except.h
2604         (all_lowering_passes): New variable.
2605         (execute_fixup_cfg, pass_fixup_cfg): New pass.
2606         (init_tree_optimization_passes): Move some to all_lowering_passes.
2607         (tree_lowering_passes): New function.
2608         (tree_rest_of_compilation): Register cfg hooks; save/unsave eh.
2609         * tree-pass.h (tree_lowering_passes): Declare
2610
2611 2005-05-17  Nathan Sidwell  <nathan@codesourcery.com>
2612
2613         * unwind-dw2-fde-darwin.c: Include tsystem.h.
2614
2615 2005-05-17  Jeff Law  <law@redhat.com>
2616
2617         * Makefile.in (tree-ssa-forwprop.o): Depend on langhooks.h.
2618         * tree-ssa-forwprop.c: Include langhooks.h.
2619         (forward_propagate_addr_expr_into_variable_array_index): New.
2620         (forward_propagate_addr_expr): New.
2621         (tree_ssa_forward_propagate_single_use_vars): Loop over all
2622         the statements in the block instead of just the last statement.
2623         Call forward_propagate_addr_expr as needed.
2624         (pass_forwprop): Update the SSA graph after forward propagation is
2625         complete.
2626
2627 2005-05-17  Nathan Sidwell  <nathan@codesourcery.com>
2628
2629         * unwind-dw2-fde-glibc.c (base_from_cb_data,
2630         _Unwind_IteratePhdrCallback): Use gcc_assert and gcc_unreachable as
2631         appropriate.
2632         * unwind-dw2-fde.c (__deregister_frame_info_bases,
2633         base_from_object, fde_split, end_fde_sort): Likewise.
2634         * unwind-dw2.c (_Unwind_GetGR, _Unwind_SetGR, execute_stack_op, 
2635         execute_cfa_program, _Unwind_SetSpColumn, uw_update_context_1,
2636         uw_init_context_1): Likewise.
2637         * unwind.inc (_Unwind_RaiseException_Phase2, _Unwind_Resume,
2638         _Unwind_Resume_or_Rethrow): Likewise.
2639         * unwind-pe.h (__gxx_abort): Do not define.
2640         (size_of_encoded_value, base_of_encoded_value,
2641         read_encoded_value_with_base): Use gcc_unreachable.
2642         * unwind.h (_Unwind_GetTextRelBase): Likewise.
2643
2644 2005-05-17  Daniel Jacobowitz  <dan@codesourcery.com>
2645
2646         * config/arm/lib1funcs.asm (cfi_pop, cfi_push, cfi_start)
2647         (cfi_end): New macros.
2648         (RETLDM): Use cfi_pop.  Expect an eight byte stack frame.
2649         (ARM_LDIV0, THUMB_LDIV0, DIV_FUNC_END): Use CFI macros.  Create
2650         an eight byte stack frame.
2651         (__NR_tkill): Define.
2652         (__div0): Use gettid tkill on GNU/Linux.
2653         (_arm_return): Add CFI.
2654         (Lchange_\register, .Lchange_lr): Create an eight byte stack frame.
2655
2656 2005-05-17  Daniel Jacobowitz  <dan@codesourcery.com>
2657
2658         * configure.ac: Remove spaces around assignment to
2659         gcc_cv_ld_sysroot.
2660         * configure: Regenerated.
2661
2662 2005-05-17  David Edelsohn  <edelsohn@gnu.org>
2663
2664         * config/rs6000/aix.h (TARGET_ALTIVEC_VRSAVE): Delete.
2665         * config/rs6000/rs6000.c (rs6000_explicit_options): Add
2666         aix_struct_ret.
2667         (rs6000_override_options): Do not protect TARGET_ALTIVEC_VRSAVE.
2668         Modify aix_struct_return variable, not target_flags.
2669         (rs6000_handle_option): Do not protect TARGET_ALTIVEC_VRSAVE.
2670         (rs6000_return_in_memory): Test aix_struct_return.
2671         * config/rs6000/rs6000.opt (maix-struct-return): Convert to
2672         independent variable.  Report mxl-compat.
2673
2674 2005-05-17  Bernd Schmidt  <bernd.schmidt@analog.com>
2675
2676         * config/bfin/bfin.md (eh_return): Add missing DONE.
2677
2678 2005-05-17  Ian Lance Taylor  <ian@airs.com>
2679
2680         * read-rtl.c (struct macro_traverse_data): Add unknown_mode_attr
2681         field.
2682         (mode_attr_index): Remove check for defined attribute.  Remove
2683         infile parameter.  Change all callers.
2684         (apply_mode_maps): Add unknown parameter.  Change caller.  Always
2685         return after finding attribute.
2686         (apply_macro_to_rtx): Add unknown_mode_attr parameter.  Change
2687         callers.
2688         (apply_macro_traverse): Set mtd->unknown_mode_attr.
2689         (read_rtx): Use mtd.unknown_mode_attr to check for an undefined
2690         attribute used for a mode.
2691
2692 2005-05-17  Paolo Bonzini  <bonzini@gnu.org>
2693
2694         * tree-ssa-math-opts.c: New file.
2695
2696 2005-05-17  Paolo Bonzini  <bonzini@gnu.org>
2697
2698         * tree-ssa-math-opts.c: New file.
2699
2700 2005-05-17  Paolo Bonzini  <bonzini@gnu.org>
2701
2702         * Makefile.in: Add tree-ssa-math-opts.c.
2703         * expr.c (expand_expr_real_1) <case RDIV_EXPR>: Never emit as a*(1/b).
2704         * fold-const.c (distribute_real_division): New.
2705         (fold_binary) <case PLUS_EXPR, case MINUS_EXPR>: Use it.
2706         * tree-pass.h (pass_cse_reciprocals): New.
2707         * tree-optimize.c (init_tree_optimization_passes): Run it.
2708         * doc/passes.texi: Document the new pass.
2709
2710 2005-05-17  Richard Guenther  <rguenth@gcc.gnu.org>
2711
2712         PR middle-end/21595
2713         * builtins.c (fold_builtin_constant_p): Handle
2714         &"string cst"[0] as constant.
2715
2716 2005-05-17  Richard Henderson  <rth@redhat.com>
2717
2718         * config/i386/sse.md (mulv16qi3, mulv2di3): New.
2719
2720 2005-05-17  Jakub Jelinek  <jakub@redhat.com>
2721
2722         PR middle-end/21492
2723         * cfgcleanup.c (try_crossjump_to_edge): update_forwarder_flag for
2724         src2 if src2 has been split.
2725
2726         PR tree-optimization/21610
2727         * c-typeck.c (decl_constant_value_for_broken_optimization): If not
2728         returning DECL, call unshare_expr.
2729
2730 2005-05-17  Hans-Peter Nilsson  <hp@axis.com>
2731
2732         * config/cris/cris.md: Unquote preparation and output statements.
2733         (BWD, WD, BW): New, mode-macros.
2734         (S, s, m, mm, nbitsm1): New, mode-attrs.
2735         (szext, shift, shiftrt, ncond, ocond, rcond): New, code-macros.
2736         (u, su, shlr, slr, ncond, ocond, rcond, rCC, oCC, roCC): New,
2737         code-attrs.
2738         ("tst<mode>"): Replace "tstqi", "tsthi" and "tstsi".
2739         ("*cmp_ext<mode>"): Replace "*cmp_extsi" and "*cmp_exthi".
2740         ("*cmp_swapext<mode>"): Replace "*cmp_swapextqi" and
2741         "*cmp_swapexthi".
2742         ("cmp<mode>"): Replace "cmphi" and "cmpqi".
2743         ("movdi"): Move misplaced head comment regarding necessity of
2744         movdi from movsi to here.
2745         ("*mov_side<mode>_biap"): Replace "*mov_sideqi_biap" and
2746         "*mov_sidehi_biap".
2747         ("*mov_side<mode>"): Replace "*mov_sideqi" and "*mov_sidehi".
2748         ("*mov_side<mode>_biap_mem", "*mov_sidehi_biap_mem"): Replace
2749         "*mov_sideqi_biap_mem".
2750         ("*mov_side<mode>_mem"): Replace "*mov_sideqi_mem" and
2751         "*mov_sidehi_mem".
2752         ("*clear_side<mode>_biap"): Replace "*clear_sidesi_biap",
2753         "*clear_sidehi_biap" and "*clear_sideqi_biap".
2754         ("*clear_side<mode>"): Replace "*clear_sidesi", "*clear_sidehi"
2755         and "*clear_sideqi".
2756         ("*ext_side<mode>si_biap"): Replace "*ext_sideqisi_biap" and
2757         "*ext_sidehisi_biap".
2758         ("*ext_side<mode>si"): Replace "*ext_sideqisi" and
2759         "*ext_sidehisi".
2760         ("reload_in<mode>"): Replace "reload_inhi" and "reload_inqi".
2761         ("reload_out<mode>"): Replace "reload_outhi" and "reload_outqi".
2762         ("extend<mode>di2"): Replace "extendhidi2" and "extendqidi2".
2763         ("extend<mode>si2"): Replace "extendhisi2" and "extendqisi2".
2764         ("zero_extend<mode>si2"): Replace "zero_extendhisi2" and
2765         "zero_extendqisi2".
2766         ("*op_side<mode>_biap"): Replace "*op_sideqi_biap",
2767         "*op_sidehi_biap" and "*op_sidesi_biap".
2768         ("*op_side<mode>"): Replace "*op_sideqi", "*op_sidehi" and
2769         "*op_sidesi".
2770         ("*op_swap_side<mode>_biap"): Replace "*op_swap_sideqi_biap",
2771         "*op_swap_sidehi_biap" and "*op_swap_sidesi_biap".
2772         ("*op_swap_side<mode>"): Replace "*op_swap_sideqi",
2773         "*op_swap_sidehi" and "*op_swap_sidesi".
2774         ("sub<mode>3"): Replace "subhi3" and "subqi3", correcting a typo
2775         in the N alternative of "subqi3".
2776         ("*extop<mode>si_side_biap"): Replace "*extopqisi_side_biap" and
2777         "*extophisi_side_biap".
2778         ("*extop<mode>si_side"): Replace "*extopqisi_side" and
2779         "*extophisi_side".
2780         ("*extop<mode>si_swap_side_biap"): Replace
2781         "*extopqisi_swap_side_biap" and "*extophisi_swap_side_biap".
2782         ("*extop<mode>si_swap_side"): Replace "*extopqisi_swap_side" and
2783         "*extophisi_swap_side".
2784         ("*extop<mode>si"): Replace "*extopqisi" and "*extophisi".
2785         ("*extop<mode>si_swap"): Replace "*extopqisi_swap" and
2786         "*extophisi_swap".
2787         ("<u>mul<s><mode>3"): Replace "umulhisi3", "umulqihi3",
2788         "mulqihi3", "mulhisi3" and "mulhisi3".
2789         ("<u>mulsidi3"): Replace "mulsidi3" and "umulsidi3".
2790         ("<su>mulsi3_highpart"): Replace "smulsi3_highpart" and
2791         "umulsi3_highpart".
2792         ("xor<mode>3"): Replace "xorhi3" and "xorqi3".
2793         ("neg<mode>2"): Replace "negsi2", "neghi2" and "negqi2".
2794         ("one_cmpl<mode>2"): Replace "one_cmplhi2" and "one_cmplqi2".
2795         ("<shlr>si3"): Replace "ashrsi3", "lshrsi3" and "ashlsi3".
2796         ("ashr<mode>3"): Replace "ashrhi3" and "ashrqi3".
2797         ("*expanded_<shlr><mode>"): Replace "*expanded_ashrhi",
2798         "*expanded_ashrqi", "*expanded_lshrhi" and "*expanded_lshrqi".
2799         ("*<shlr><mode>_lowpart"): Replace "*ashrhi_lowpart",
2800         "*ashrqi_lowpart", "*lshrhi_lowpart" and "*lshrqi_lowpart".
2801         ("lshr<mode>3"): Replace "lshrhi3" and "lshrqi3".
2802         ("ashl<mode>3"): Replace "ashlhi3" and "ashlqi3".
2803         ("*ashl<mode>_lowpart"): Replace "*ashlqi_lowpart" and
2804         "*ashlhi_lowpart".
2805         ("abs<mode>2"): Replace "abshi2" and "absqi2".
2806         ("b<ncond>"): Replace "beq", "bne", "bgtu", "bltu", "bgeu" and
2807         "bleu".
2808         ("b<ocond>"): Replace "bgt" and "ble".
2809         ("b<rcond>"): Replace "blt" and "bge".
2810         ("*b<ncond>_reversed"): Replace "*beq_reversed", "*bne_reversed",
2811         "*bgtu_reversed", "*bltu_reversed", "*bgeu_reversed" and
2812         "*bleu_reversed".
2813         ("*b<ocond>_reversed"): Replace "*bgt_reversed" and
2814         "*ble_reversed".
2815         ("*b<rcond>_reversed"): Replace "*blt_reversed" and
2816         "*blt_reversed".
2817         ("s<ncond>"): Replace "sgeu", "sltu", "seq", "sgtu", "sleu" and
2818         "sne".
2819         ("s<rcond>"): Replace "sge" and "slt".
2820         ("s<ocond>"): Replace "sgt" and "sle".
2821         ("clear.[bwd] [rx=rx+rz.S2]"): Replace split clear.d
2822         [rx=rx+rz.S2], clear.w [rx=rx+rz.S2] and clear.b [rx=rx+rz.S2].
2823         ("clear.[bwd] [rx=rx+i]"): Replace splits clear.d [rx=rx+i],
2824         clear.w [rx=rx+i] and clear.b [rx=rx+i].
2825
2826 2005-05-17  Jakub Jelinek  <jakub@redhat.com>
2827
2828         * varasm.c (struct constant_descriptor_tree): Add hash field.
2829         (const_desc_hash): Just return hash field.
2830         (const_desc_eq): If hash values are different, return 0 immediately.
2831         (output_constant_def): Compute hash field of temporary key, use
2832         htab_find_slot_with_hash instead of htab_find_slot.  Set hash in
2833         newly built constant descriptor.
2834         (lookup_constant_def): Compute hash field of temporary key, use
2835         htab_find_with_hash instead of htab_find.
2836
2837 2005-05-16  Richard Henderson  <rth@redhat.com>
2838
2839         * config/i386/sse.md (mulv4si3): New.
2840
2841 2005-05-17  Hans-Peter Nilsson  <hp@axis.com>
2842
2843         * config/cris/cris.h (EXTRA_CONSTRAINT_T): Remove FIXME and
2844         tests for noncanonical versions of reg+constant and
2845         reg+reg*{1,2,4}.
2846
2847 2005-05-16  Richard Henderson  <rth@redhat.com>
2848             Steven Bosscher <stevenb@suse.de>
2849
2850         PR tree-opt/21399
2851         * tree-eh.c (maybe_clean_or_replace_eh_stmt): Rename from 
2852         maybe_clean_eh_stmt; take old stmt parameter.  Update EH
2853         region data structure to match replacement.
2854         * tree-flow.h: Update to match.
2855         * tree-ssa-ccp.c (execute_fold_all_builtins): Likewise.
2856         * tree-ssa-dom.c (optimize_stmt): Likewise.
2857         * tree-ssa-pre.c (eliminate): Likewise.
2858         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
2859
2860 2005-05-16  Caroline Tice  <ctice@apple.com>
2861
2862         * bb-reorder.c (verify_hot_cold_block_grouping):  Replace
2863         internal_error with gcc_assert.
2864         * dwarf2out.c (dwarf2out_switch_text_section):  Likewise.
2865         * function.h (struct function): Remove space between "*" and
2866         struct field names.
2867         * varasm.c (initialize_cold_section_name):   Add gcc_assert;
2868         modify to use alloca.
2869         (unlikely_text_section): Add check for flag_function_sections.
2870         (assemble_start_function):  Move call to resolve_section, so it
2871         comes before first call to unlikely_text_section.
2872         (assemble_end_function):  Add test and call to function_section
2873         if appropriate.
2874         
2875 2005-05-16  Roger Sayle  <roger@eyesopen.com>
2876
2877         * c-common.c (c_common_truthvalue_conversion): Use fold_build2
2878         instead of build_binary_op when performing code transformations
2879         to avoid error messages about constructs not it the user's code.
2880
2881 2005-05-16  Kazu Hirata  <kazu@cs.umass.edu>
2882
2883         * tree-ssa-pre.c: Fix a comment typo.
2884
2885 2005-05-16  Richard Henderson  <rth@redhat.com>
2886
2887         PR target/21556
2888         * config/ia64/ia64.md (load_dtpmod, load_ltoff_dtpmod, load_dtprel,
2889         load_dtprel64, load_dtprel22, load_dtprel_gd, load_ltoff_dtprel,
2890         add_dtprel, add_dtprel14, add_dtprel22, load_tprel, load_tprel64,
2891         load_tprel22, load_tprel_ie, load_ltoff_tprel, add_tprel, add_tprel14,
2892         add_tprel22): Remove mode from symbolic operand.
2893
2894 2005-05-16  Richard Sandiford  <rsandifo@redhat.com>
2895
2896         * optc-gen.awk: Include intl.h after the externally-provided files.
2897
2898 2005-05-16  Kazu Hirata  <kazu@cs.umass.edu>
2899
2900         * tree-ssa-copy.c (copy_prop_visit_assignment): Clean up by
2901         folding a COND_EXPR_COND in a nondestructive manner.
2902
2903 2005-05-16  Fariborz Jahanian <fjahanian@apple.com>
2904
2905         * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh, 
2906         altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw):
2907         New values for vec_select definitions and bitmask for element
2908         selection.
2909          
2910 2005-05-16  Kazu Hirata  <kazu@cs.umass.edu>
2911
2912         * dwarf2out.c (used_rtx_varray): Rename to used_rtx_array.
2913         Change the type to VEC(rtx,gc)*.
2914         (mem_loc_descriptor, add_const_value_attributes,
2915         dwarf2out_init): Adjust uses of used_rtx_varray.
2916
2917         * tree-data-ref.c (compute_all_dependences): Change the type
2918         of dependence_relations to VEC(ddr_p,heap)**.
2919         (compute_data_dependences_for_loop): Change the type of
2920         allrelations to VEC(ddr_p,heap)*.
2921
2922 2005-05-16  Richard Sandiford  <rsandifo@redhat.com>
2923
2924         * Makefile.in (options.c): Tell optc-gen.awk to include config.h,
2925         system.h, coretypes.h and tm.h.
2926         (options.o): Update dependencies accordingly.
2927         * optc-gen.awk: Allow header_name to be a list of filenames.
2928         Handle the "Condition" flag.
2929         * opts.h (CL_DISABLED): New flag.
2930         * opts.c (handle_option): Print an error for CL_DISABLED options.
2931         * doc/options.texi: Document the "Condition" option flag.
2932
2933 2005-05-16  Paolo Bonzini  <bonzini@gnu.org>
2934
2935         * tree-inline.c (estimate_num_insns_1): Handle VEC_COND_EXPR.
2936
2937 2005-05-15  Roger Sayle  <roger@eyesopen.com>
2938
2939         * tree-scalar-evolution.c (set_nb_iterations_in_loop): Only
2940         check for TREE_OVERFLOW on INTEGER_CST trees.
2941         * tree-chrec.c (chrec_convert): Only clear TREE_OVERFLOW on
2942         CONSTANT_CLASS_P tree nodes.
2943
2944 2005-05-15  H.J. Lu  <hongjiu.lu@intel.com>
2945
2946         PR target/21551
2947         * config/ia64/ia64.c (ia64_expand_move): Don't add addend twice.
2948
2949 2005-05-15  Daniel Berlin  <dberlin@dberlin.org>
2950             
2951         Fix PR tree-optimization/21576
2952         
2953         * tree-ssa-pre.c (expression_node_pool): New pool.
2954         (comparison_node_pool): Ditto.
2955         (list_node_pool): Ditto.
2956         (pool_copy_list): New function.
2957         (phi_translate): Handle CALL_EXPR.
2958         (valid_in_set): Ditto.
2959         (create_expression_by_pieces): Ditto.
2960         (insert_into_preds_of_block): Ditto.
2961         (insert_aux): Ditto.
2962         (compute_avail): Ditto.
2963         (create_value_expr_from): Handle TREE_LIST and CALL_EXPR.
2964         (can_value_number_call): New function.
2965         (find_leader): Update comment.
2966         (init_pre): Create new pools.
2967         (fini_pre): Free new pools.
2968         (pass_pre): Add TODO_update_ssa for the future when we are going
2969         to need vops.
2970         * tree-vn.c (expressions_equal_p): Handle TREE_LIST.
2971         (set_value_handle): Ditto.
2972         (get_value_handle): Ditto.
2973
2974 2005-05-15  Richard Earnshaw  <richard.earnshaw@arm.com>
2975
2976         * arm.c (thumb_unexpanded_epilogue): Delete unused variable 'mode'.
2977
2978 2005-05-15  Andreas Jaeger  <aj@suse.de>
2979
2980         * gcc.c (pfatal_pexecute): Remove unused local function.
2981
2982 2005-05-15  Richard Sandiford  <rsandifo@redhat.com>
2983
2984         * optc-gen.awk: Remove excess indentation.
2985         * opth-gen.awk: Likewise.
2986
2987 2005-05-14  Kaz Kojima  <kkojima@gcc.gnu.org>
2988
2989         * config/sh/sh.c (sh_output_mi_thunk): Check cfun->cfg instead
2990         of basic_block_info.  Call init_flow and find_basic_blocks
2991         before dbr_schedule if needed.
2992
2993 2005-05-14  Kazu Hirata  <kazu@cs.umass.edu>
2994
2995         * tree-optimize.c (init_tree_optimization_passes): Move
2996         pass_cd_dce in place of the last pass_dce.
2997
2998         PR tree-optimization/21563
2999         * tree-vrp.c (compare_value): Return boolean_false_node when
3000         SSA_NAME in "if (SSA_NAME == CST)" is strictly smaller than or
3001         strictly larger than CST.
3002
3003 2005-05-14  Nathan Sidwell  <nathan@codesourcery.com>
3004             Jan-Benedict Glaw  <jbglaw@lug-owl.de>
3005
3006         * config/vax/vax.c: (print_operand_address) Use gcc_unreachable() and
3007         gcc_assert().
3008         (rev_cond_name) Likewise.
3009         (vax_float_literal) Likewise.
3010         * config/vax/vax.md: Likewise.
3011
3012 2005-05-14  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
3013
3014         * config/vax/vax.md: define_constant VAXens AP, FP, SP and PC
3015         registers and use them (specifically the stack pointer).
3016         * config/vax/vax.h: Use above defines right here.
3017
3018         * config/vax/vax.c: (override_options) Remove 'register' keyword.
3019         (split_quadword_operands) Likewise. (rev_cond_name) Likewise.
3020         (vax_float_literal) Likewise. (vax_rtx_costs) Remove trailing
3021         whitespace.
3022         * config/vax/vax.h: Remove 'register' keyword. Misc. whitespace fixes,
3023         mostly removal of trailing spaces...
3024         * config/vax/vax-modes.def: Remove trailing whitespace.
3025
3026         * config/vax/elf.h: Update whitespace.
3027
3028 2005-05-14  Richard Guenther  <rguenth@gcc.gnu.org>
3029
3030         Revert
3031         2005-05-11  Richard Guenther  <rguenth@gcc.gnu.org>
3032         * fold-const.c (fold_indirect_ref_1): Avoid removing
3033         NOP_EXPRs with type qualifiers like const.
3034
3035 2005-05-14  Jan Hubicka  <jh@suse.cz>
3036
3037         Patch by Richard Henderson:
3038         * tree-eh.c (tree_can_throw_internal, tree_can_throw_external):
3039         Handle RESX expressions properly.
3040
3041         * tree-eh.c (record_stmt_eh_region): Use add_stmt_to_eh_region.
3042         (add_stmt_to_eh_region_fn): Nest into CALL_EXPR.
3043         (remove_stmt_from_eh_region_fn): Likewise.
3044
3045         * tree-cfg.c (execute_warn_function_return): Break out noreturn
3046         warning too..
3047         (execute_warn_function_noreturn): ... here.
3048         (pass_warn_function_noreturn): New pass.
3049         * tree-pass.h (pass_warn_function_noreturn): Declare
3050         * tree-optimize.c (init_tree_optimization_passes): Move return
3051         warnings early and add noreturn warnings at place of previous
3052         return warnings.
3053
3054 2005-05-14  Kazu Hirata  <kazu@cs.umass.edu>
3055
3056         * tree-ssa-live.c (tpa_init, tpa_delete, tpa_compact,
3057         root_var_init, type_var_init): Use VEC instead of VARRAY.
3058         * tree-ssa-live.h (tree_partition_associator_d): Change the
3059         type of trees to VEC(tree,heap)*.
3060         (tpa_tree): Use VEC instead of VARRAY.
3061
3062 2005-05-14  Richard Guenther  <rguenth@gcc.gnu.org>
3063
3064         * fold-const.c (div_if_zero_remainder): New function.
3065         (try_move_mult_to_index): Use it.
3066
3067 2005-05-14  Kazu Hirata  <kazu@cs.umass.edu>
3068
3069         * tree-eh.c (leh_tf_state): Change the type of dest_array to
3070         VEC(tree,heap)*.
3071         (maybe_record_in_goto_queue, lower_try_finally_onedest,
3072         lower_try_finally_copy, lower_try_finally_switch,
3073         lower_try_finally): Use VEC instead of VARRAY.
3074
3075 2005-05-14  Hans-Peter Nilsson  <hp@axis.com>
3076
3077         * config/cris/cris.h (Node: Register Classes): Remove obsoleted
3078         comment regarding defined register classes.
3079         (LEGITIMIZE_RELOAD_ADDRESS): Do not define.
3080
3081 2005-05-14  Kazu Hirata  <kazu@cs.umass.edu>
3082
3083         * tree-optimize.c (init_tree_optimization_passes): Move
3084         pass_merge_phi before the first pass_dominator.
3085
3086 2005-05-13  Richard Earnshaw  <richard.earnshaw@arm.com>
3087
3088         * arm.h (INITIALIZE_TRAMPOLINE): Make the call to __clear_cache
3089         unconditional.
3090
3091 2005-05-13  Josh Conner  <jconner@apple.com>
3092
3093         * config/arm/arm.c (arm_size_return_regs): New.
3094         (thumb_unexpanded_epilogue): replace in-line calculation
3095         of return registers with call to arm_size_return_regs.
3096         (use_return_insn): Include test of which registers are
3097         being used to hold return values, to accommodate
3098         vector return values.
3099
3100 2005-05-11  Aldy Hernandez  <aldyh@redhat.com>
3101
3102         * config/rs6000/sysv4.opt (mlittle): Handle.
3103
3104         * config/rs6000/rs6000.c (rs6000_handle_option): Set
3105         target_flags_explicit when appropriate.
3106
3107 2005-05-13  J"orn Rennecke <joern.rennecke@st.com>
3108
3109         PR middle-end/20714:
3110         * optabs.c (no_conflict_data): New struct.
3111         (no_conflict_move_test): New function.
3112         (emit_no_conflict_block): Use it.
3113
3114 2005-05-13  Adam Nemet  <anemet@lnxw.com>
3115
3116         * doc/invoke.texi (Debugging Options): Option
3117         -fdump-translation-unit only works with C++ now.
3118
3119 2005-05-13  Hans-Peter Nilsson  <hp@axis.com>
3120
3121         Replace calls to abort in CRIS port.
3122         * config/cris/cris.h (CRIS_ASSERT): New macro.
3123         * config/cris/cris.md ("*movsi_internal"): Use CRIS_ASSERT and
3124         internal_error instead of abort.
3125         ("movsi"): Ditto.  Unquote preparation statement section.
3126         ("call", "call_value"): Ditto, but use gcc_assert where
3127         appropriate.  Tweak comments.
3128         * config/cris/cris.c (ASSERT_PLT_UNSPEC): Define in terms of
3129         CRIS_ASSERT.
3130         (cris_op_str): Call internal_error, not abort.
3131         (cris_print_operand): Tweak "abort" reference to "die" in comment.
3132         (cris_initial_elimination_offset): Call gcc_unreachable, not abort.
3133         (cris_notice_update_cc): Call internal_error, not abort.
3134         (cris_expand_return, cris_expand_prologue, cris_gen_movem_load)
3135         (cris_emit_movem_store, cris_asm_output_symbol_ref)
3136         (cris_output_addr_const_extra): Use CRIS_ASSERT, don't call abort.
3137         (cris_symbol, cris_got_symbol): Use CRIS_ASSERT instead of
3138         ENABLE_CHECKING-guarded abort call.
3139         (cris_split_movdx): Use CRIS_ASSERT instead of abort with test.
3140         Use internal_error at end of test-chain.
3141
3142 2005-05-13  J"orn Rennecke <joern.rennecke@st.com>
3143
3144         PR rtl-optimization/20769:
3145         * bt-load.c (compute_defs_uses_and_gen): Check for the blockage
3146         pattern emitted by expand_nl_goto_receiver.
3147
3148         PR middle-end/20793:
3149         * integrate.c (allocate_initial_values): Update register liveness
3150         information.
3151
3152 2005-05-13  Josh Conner  <jconner@apple.com>
3153
3154         * arm.c (arm_return_in_memory): Add handling for vector return types.
3155
3156 2005-05-13  David Ung  <davidu@mips.com>
3157
3158         * config/mips/mips.h (processor_type): Add new PROCESSOR_4KP
3159         name.
3160         * config/mips/mips.c: Add 4km alias.
3161         * config/mips/mips.md: Add 4kp to cpu attrib and include 4k.md.
3162         * config/mips/4k.md: New file, add 4Kc/4Kp DFA pipeline
3163         description.
3164
3165 2005-05-13  Jan Hubicka  <jh@suse.cz>
3166
3167         * c-decl.c (finish_function): Suppress "control reaches end of
3168         non-void function" when "no return statement in function
3169         returning non-void" is issued.
3170
3171         * tree-inline.c (copy_body_r): Simplify substituted ADDR_EXPRs.
3172         * tree-optimize.c (pass_gimple): Kill.
3173         (init_tree_optimization_passes): Kill pass_gimple.
3174         * tree-cfg.c (build_tree_cfg): Do verify_stmts to check that we are gimple.
3175         * tree-dump.c (dump_files): Rename .generic to .gimple.*
3176
3177 2005-05-13  J"orn Rennecke <joern.rennecke@st.com>
3178
3179         PR rtl-optimization/20756:
3180         * basic-block.h (PROP_DEAD_INSN): Define.
3181         * flow.c (propagate_one_insn): Set during mark_set_regs call
3182         for a dead insn.
3183         (mark_set_1): Emit a clobber when we are about to delete a dead insn
3184         that kills a live register.
3185
3186 2005-05-13  Adrian Straetling  <straetling@de.ibm.com>
3187
3188         * config/s390/s390.md: ("DBL"): New mode attribute.
3189         ("*movmem_long_64", "*movmem_long_31"): Merge to "*movmem_long".
3190         ("*clrmem_long_64", "*clrmem_long_31"): Merge to "*clrmem_long".
3191         ("*cmpmem_long_64", "*cmpmem_long_31"): Merge to "*cmpmem_long".
3192
3193 2005-05-13  Richard Guenther  <rguenth@gcc.gnu.org>
3194
3195         * c-format.c (check_format_arg): Handle string literals of
3196         the form &"string"[offset].
3197
3198         * g++.dg/warn/format4.C: New testcase.
3199
3200 2005-05-13  Kazu Hirata  <kazu@cs.umass.edu>
3201
3202         * config/mips/3000.md, config/mips/4000.md,
3203         config/mips/4100.md, config/mips/4300.md, config/mips/4600.md,
3204         config/mips/5000.md, config/mips/7000.md, config/mips/9000.md,
3205         config/mips/generic.md, config/pdp11/pdp11.md,
3206         config/sh/crt1.asm, config/sh/lib1funcs.asm,
3207         config/sh/sh-modes.def, config/sh/sh-protos.h,
3208         config/sh/shmedia.md, config/sh/ushmedia.h: Update copyright.
3209
3210 2005-05-13  Richard Henderson  <rth@redhat.com>
3211
3212         * function.c (instantiate_virtual_regs_in_insn): Do not simplify
3213         addition to move unless dest is a register.  Do not skip
3214         instantiation in dest on addition simplification.
3215
3216 2005-05-13  Hans-Peter Nilsson  <hp@axis.com>
3217
3218         * config/cris/cris.c (cris_print_operand) <case 'H'; case
3219         CONST_INT>: Use operand_subword and HOST_WIDE_INT_PRINT_DEC for
3220         output; don't have special case for HOST_BITS_PER_WIDE_INT == 32.
3221
3222 2005-05-13  Jan Hubicka  <jh@suse.cz>
3223
3224         * basic-block.h (FOR_ALL_BB_FN): New macro.
3225         (init_flow): Initialize cfg structure.
3226         * function.c (allocate_struct_function): Do not initialize cfg structure.
3227         * tree-cfg.c (init_empty_tree_cfg): Break out from ...
3228         (build_tree_cfg): ... here.
3229         * tree-flow.h (init_empty_tree_cfg): Declare.
3230
3231 2005-05-12  Steven Bosscher <stevenb@suse.de>
3232
3233         Fix PR tree-optimization/21520
3234         * tree-ssa-pre.c (phi_translate): Use fully_constant_expression
3235         to attempt to fold constants.
3236
3237 2005-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3238
3239         * config/sh/sh.c: Declare the prototype of sh_adjust_unroll_max
3240         only when TARGET_ADJUST_UNROLL_MAX is defined.
3241         (general_movsrc_operand): Use the C style comment.
3242         (ua_offset): Use prototype.
3243
3244 2005-05-12  Zdenek Dvorak  <dvorakz@suse.cz>
3245
3246         * tree-ssa-loop-im.c (struct mem_ref): Add field "next".
3247         (struct hmr_data, hoist_memory_reference, memref_del,
3248         struct fmrv_data): Removed.
3249         (hoist_memory_references, free_mem_ref, free_mem_refs): New functions.
3250         (gather_mem_refs, gather_mem_refs_stmt): Add new references to the
3251         list.
3252         (find_more_ref_vops): Traverse the list of memory references.
3253         (determine_lsm_loop): Work with the list of memory references instead
3254         of traversing the hashtable.
3255
3256 2005-05-12  Steven Bosscher  <stevenb@suse.de>
3257             Stuart Hastings <stuart@apple.com>
3258             Jan Hubicka  <jh@suse.cz>
3259
3260         * except.c  (duplicate_eh_region_1, duplicate_eh_region_2,
3261         duplicate_eh_regions): New functions, based on old
3262         implementation removed with RTL inliner.
3263         (reachable_next_level): Modify behaviour pre-inline.
3264         * except.h (duplicate_eh_regions_map, duplicate_eh_regions):
3265         Declare.
3266         * function.h (struct function): Add after_inlining flag.
3267         * tree-optimize.c (tree_rest_of_compilation): Set it.
3268         * tree-eh.c (add_stmt_to_eh_region_fn): Initialize hashtable
3269         when needed.
3270         * tree-cfg.c (label_to_block_fn): Deal with cases where
3271         label was never insterted into code.
3272
3273 2005-05-12  Zack Weinberg  <zack@codesourcery.com>
3274
3275         * doc/cpp.texi: Document that #sccs is a synonym for #ident.
3276
3277 2005-05-12  Daniel Berlin  <dberlin@dberlin.org>
3278
3279         Fix PR tree-optimization/21532
3280         * tree-ssa-pre.c (create_expression_by_pieces): stmt
3281         needs to go onto the inserted_exprs list.
3282
3283 2005-05-12  Ian Lance Taylor  <ian@airs.com>
3284
3285         * c-common.h (statement_code_p): Don't declare.
3286         (STATEMENT_CODE_P): Don't define.
3287         (INIT_STATEMENT_CODES): Don't define.
3288         * c-common.c (statement_code_p): Don't define.
3289
3290 2005-05-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
3291
3292         * config/sparc/sparc.h: Remove dead code.
3293         * config/sparc/sparc.c (sparc_compute_frame_size): Use
3294         FIRST_PARM_OFFSET for the size of the register window area.
3295         (emit_save_regs): Rename into emit_save_or_restore_regs.
3296         Add 'action' parameter.  Use 4095 as upper bound for the offset.
3297         Pass 'action' to save_or_restore_regs.
3298         (emit_restore_regs): Delete.
3299         (sparc_expand_prologue): Call emit_save_or_restore_regs.
3300         (sparc_expand_epilogue): Likewise.
3301         * config/sparc/sparc.md (mode macro P): Move.
3302         (movdi_insn_sp32_v9, movdi_insn_sp32): Swap.
3303         (mov<V32:mode> expander): Move to the top of the V32 section.
3304         (movdf_insn_sp32_v9_no_fpu, movdf_insn_sp32_v9): Swap.
3305         (movtf_insn_sp64_hq, movtf_insn_sp64): Swap.
3306         (sibcall_epilogue): Move.
3307
3308 2005-05-12  Richard Earnshaw  <richard.earnshaw@arm.com>
3309
3310         PR target/21501
3311         * arm.c (arm_gen_constant): Sign-extend intermediate values when
3312         synthesizing a constant of the difference of two immediates.
3313
3314 2005-05-12  Richard Earnshaw  <richard.earnshaw@arm.com>
3315
3316         * arm/vfp.md (negsf2_vfp): Add alternative using integer registers.
3317         (negdf2_vfp): Likewise.  Convert to define_insn_and_split and split
3318         the alternatives using integer registers into the appropriate
3319         primitives.
3320
3321 2005-05-11 Kenneth Zadeck <zadeck@naturalbridge.com>
3322
3323         * bitmap.c (bitmap_elmt_to_freelist, bitmap_element_allocate,
3324         bitmap_elt_clear_from, bitmap_clear): Changed freelist structure.
3325         * bitmap.h: Fixed comments.
3326
3327 2005-05-11  Richard Henderson  <rth@redhat.com>
3328
3329         PR target/21412
3330         * config/ia64/ia64.c (TARGET_CANNOT_FORCE_CONST_MEM): New.
3331         (ia64_cannot_force_const_mem): New.
3332         (tls_symbolic_operand_type): New.
3333         (ia64_legitimate_constant_p): New.
3334         (ia64_expand_load_address): Return true on success.  Improve
3335         checks for when we should not split.
3336         (ia64_expand_tls_address): New addend operand.  Distribute it
3337         as appropriate to the tls_kind.  Delay referencing gp.
3338         (ia64_expand_move): Split symbolic addend as necessary.  Handle
3339         tls symbols with addends.
3340         * config/ia64/ia64-protos.h: Update.
3341         * config/ia64/ia64.h (CALL_REALLY_USED_REGISTERS): False for r0,
3342         p0, f0, f1, and r13.
3343         (LEGITIMATE_CONSTANT_P): Move to ia64_legitimate_constant_p.
3344         * config/ia64/ia64.md (UNSPEC_DTPMOD): New.
3345         (symbolic_operand splitter): Pass everything through
3346         ia64_expand_load_address and FAIL or DONE as appropriate.
3347         (load_fptr): Only accept after reload.
3348         (load_fptr_internal1, gprel64_offset, load_gprel64, load_symptr_high,
3349         load_symptr_low, load_ltoff_dtpmod,
3350         (load_dtpmod): New.
3351         (load_dtprel): Only accept tls symbols.
3352         (load_dtprel64, load_dtprel22): Likewise.
3353         (load_tprel, load_tprel64, load_tprel22): Likewise.
3354         (load_dtprel_gd, load_ltoff_dtprel, load_tprel_ie): New.
3355         (add_dtprel): Only accept tls symbols.  Canonicalize PLUS.
3356         (add_dtprel14, add_dtprel22): Likewise.
3357         (add_tprel, add_tprel14, add_tprel22): Likewise.
3358         * config/ia64/predicates.md (small_addr_symbolic_operand): New.
3359         (any_offset_symbol_operand, aligned_offset_symbol_operand): New.
3360         (got_symbolic_operand): Check CONST offsets.
3361         (tls_symbolic_operand, ld_tls_symbolic_operand): New.
3362         (ie_tls_symbolic_operand, le_tls_symbolic_operand): New.
3363         (move_operand): Don't handle tls here.  Check CONST offsets.
3364
3365 2005-05-11  Richard Sandiford  <rsandifo@redhat.com>
3366
3367         * config/mips/7000.md (rm7_impy_si_mult): Just match imul and imadd.
3368         Remove hilo_operand check.
3369         (rm7_impy_si_mul): Just match imul3.  Remove hilo_operand check.
3370         * config/mips/predicates.md (hilo_operand): Delete.
3371
3372 2005-05-11  Richard Sandiford  <rsandifo@redhat.com>
3373
3374         * config/mips/sr71k.md, config/mips/7000.md: Reformat.
3375
3376 2005-05-11  Kazu Hirata  <kazu@cs.umass.edu>
3377
3378         PR tree-optimizer/18472
3379         * tree-if-conv.c (tree_if_convert_stmt,
3380         if_convertible_modify_expr_p): Don't handle GOTO_EXPR.
3381
3382 2005-05-11  Jan Hubicka  <jh@suse.cz>
3383
3384         * Makefile.in (tree-eh.o: Kill gt-tree-eh.h dependency.
3385         (GTFILES): add except.h.
3386         * except.c (eh_status): Add throw_stmt_table.
3387         (set_eh_throw_stmt_table, get_eh_throw_stmt_table): New functions.
3388         * except.h (add_stmt_to_eh_region_fn, remove_stmt_from_eh_region_fn,
3389         lookup_stmt_eh_region_fn): Declare.
3390         (throw_stmt_node): New structure.
3391         (set_eh_throw_stmt_table, get_eh_throw_stmt_table): New.
3392         * gengtype.c (open_base_files): Add except.h to inlines.
3393         * tree-eh.c (throw_stmt_node): Kill.
3394         (record_stmt_eh_region): Update.
3395         (add_stmt_to_eh_region_fn): Break out from ...
3396         (add_stmt_to_eh_region): ... here.
3397         (remove_stmt_from_eh_region_fn): Break out from ...
3398         (remove_stmt_from_eh_region): ... here.
3399         (lookup_stmt_eh_region_fn): Break out from ...
3400         (lookup_stmt_eh_region): ... here.
3401         (honor_protect_cleanup_actions): Use build_resx.
3402         (lower_try_finally_onedest): Likewise.
3403         (lower_try_finally_copy): Likewise.
3404         (lower_try_finally_switch): Likewise.
3405         (lower_eh_constructs): Update eh table construction.
3406         * tree.c (build_resx): New.
3407         * tree.h (build_resx): Declare.
3408
3409 2005-05-11  H.J. Lu  <hongjiu.lu@intel.com>
3410
3411         * libgcov.c (gcov_exit): Set prefix_length to 0 if no relocation
3412         is needed.
3413
3414 2005-05-11  Kazu Hirata  <kazu@cs.umass.edu>
3415
3416         * fold-const.c, libgcov.c: Fix comment typos.
3417
3418         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove
3419         redundant code.
3420
3421 2005-05-11  Daniel Jacobowitz  <dan@codesourcery.com>
3422
3423         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
3424         * config/arm/arm.h (SUBTARGET_FRAME_POINTER_REQUIRED): Provide
3425         default definition.
3426         (FRAME_POINTER_REQUIRED): Use SUBTARGET_FRAME_POINTER_REQUIRED.
3427
3428 2005-05-11  Nathan Sidwell  <nathan@codesourcery.com>
3429
3430         PR bootstrap/21481
3431         * crtstuff.c: Include auto-host.h again, for now.
3432
3433 2005-05-11  Richard Sandiford  <rsandifo@redhat.com>
3434
3435         * config/mips/24k.md: Remove trailing whitespace.
3436
3437 2005-05-11  David Ung  <davidu@mips.com>
3438
3439         * config/mips/mips.md (type): Add imul3.
3440         (length, hazard, may_clobber_hilo): Check for imul3.
3441         (mulsi3_mult3, muldi3_mult3, *muls, <su>mulsi3_highpart_mulhi_internal)
3442         (*<su>mulsi3_highpart_neg_mulhi_internal): Set attr to imul3.
3443         * config/mips/24k.md (r24k_int_mul3): Enable this reservation
3444         for a 3 operand mul and its bypasses.
3445         * config/mips/3000.md (r3k_imul): Add imul3 to reservations.
3446         * config/mips/4000.md (r4k_imul): Likewise.
3447         * config/mips/4100.md (r4100_imul_si, r4100_imul_di):  Likewise.
3448         * config/mips/4130.md (vr4130_class, vr4130_mulsi)
3449         (vr4130_muldi): Likewise.
3450         * config/mips/4300.md (r4300_imul_si, r4300_imul_di): Likewise.
3451         * config/mips/4600.md (r4600_imul, r4650_imul): Likewise.
3452         * config/mips/5000.md (r5k_imul_si, r5k_imul_di): Likewise.
3453         * config/mips/5400.md (ir_vr54_imul_si, ir_vr54_imul_di)
3454         (ir_vr54_imadd_si): Likewise.
3455         * config/mips/5500.md (ir_vr55_imul_si, ir_vr55_imul_di):  Likewise.
3456         * config/mips/7000.md (rm7_impy_si_mult, rm7_impy_si_mul)
3457         (rm7_impy_di): Likewise.
3458         * config/mips/9000.md (rm9k_mulsi, rm9k_muldi):  Likewise.
3459         * config/mips/generic.md (generic_imul): Likewise.
3460         * config/mips/sb1.md (ir_sb1_mulsi, ir_sb1_muldi): Likewise.
3461         * config/mips/sr71k.md (ir_sr70_imul_si, ir_sr70_imul_di):  Likewise.
3462
3463 2005-05-11  J"orn Rennecke <joern.rennecke@st.com>
3464
3465         PR middle-end/20371:
3466         * tree.h (record_layout_info_s): New member prev_packed.
3467         * stor-layout.c (update_alignment_for_field): Fix comment about
3468         KNOWN_ALIGN.  For MS bitfields, if we start a new run, make sure
3469         we start it properly aligned.
3470         (place_field): At the beginning of a record, pass 0 as KNOWN_ALIGN
3471         to update_alignment_for_field, and recompute it afterwards using
3472         the alignment of the record.
3473         When a packed bitfield precedes an MS bitfield, don't add padding
3474         at the end of the packed bitfield on behalf of the base type of
3475         the packed bit field.
3476         Don't adjust rli->bitpos at the end
3477         of an MS bitfield run if we already adjusted bitpos/offset for an
3478         alignment as large or larger than the bitfield type size.
3479         Take possible record alignment > BIGGEST_ALIGNMENT into account
3480         when calculating actual_align.
3481         Only put packed buit fields into rli->prev_field if they end up
3482         suitably aligned.
3483         Also set rli->remaining_in_alignment when we re-set rli->prev_field.
3484         Update rli->remaining_in_alignment when we have already started a
3485         run of bit fields and we process a packed bit field.
3486
3487 2005-05-11  Sebastian Pop  <pop@cri.ensmp.fr>
3488
3489         * tree-data-ref.c (find_data_references_in_loop): Give up when
3490         the body of the loop contains a CALL_EXPR or an ASM_EXPR: they
3491         may embed arbitrary side effects.
3492         Remove the assumption that GIMPLE form contains a single array
3493         access per statement.
3494         When the statement contains virtual operands, fail if it is not
3495         a MODIFY_EXPR or a CALL_EXPR.
3496         Return after the dont know node is inserted.
3497
3498 2005-05-11  Richard Earnshaw  <richard.earnshaw@arm.com>
3499
3500         * arm.md (negsf2, negdf2): Permit these expands when compiling for VFP.
3501
3502 2005-05-11  Richard Guenther  <rguenth@gcc.gnu.org>
3503
3504         PR middle-end/19807
3505         PR tree-optimization/19639
3506         * fold-const.c (try_move_mult_to_index): Handle INTEGER_CST
3507         and generic summands for char* as s * delta, too, folding &a[i]
3508         CODE x to &a[i CODE x/s].  Use tree_int_cst_equal
3509         for comparison of steps.  Convert types for index addition.
3510         (fold_binary): Adjust the callers to always dispatch to
3511         try_move_mult_to_index.
3512         * tree-ssa-propagate.c (set_rhs): Avoid setting rhs to
3513         expr with non-gimple ARRAY_REF offset.
3514
3515 2005-05-11  Richard Guenther  <rguenth@gcc.gnu.org>
3516
3517         * fold-const.c (fold_indirect_ref_1): Avoid removing
3518         NOP_EXPRs with type qualifiers like const.
3519
3520 2005-05-11  Richard Henderson  <rth@redhat.com>
3521
3522         PR c/21502
3523         * c-decl.c (finish_decl): Propagate the completed array type of
3524         a global variable into the binding.
3525
3526 2005-05-10  Matt Kraai  <kraai@ftbfs.org>
3527
3528         * Makefile.in (gtype-desc.o, build/genautomata.o)
3529         (build/varray.o): Depend on $(VARRAY_H).
3530
3531 2005-05-10  Diego Novillo  <dnovillo@redhat.com>
3532
3533         * tree-optimize.c (init_tree_optimization_passes): Re-organize
3534         optimization passes to do an initial batch of scalar cleanups.
3535
3536 2005-05-10  Ian Lance Taylor  <ian@airs.com>
3537
3538         * read-rtl.c (struct macro_traverse_data): Define.
3539         (map_attr_string): New static function, broken out of
3540         apply_macro_to_string.
3541         (mode_attr_index, apply_mode_maps): New static functions.
3542         (apply_macro_to_string): Call map_attr_string.
3543         (apply_macro_to_rtx): Add mode_maps and infile parameters.  Change
3544         all callers.
3545         (apply_macro_traverse): Expect data to point to a struct
3546         macro_traverse_data.
3547         (read_rtx): Add mode_maps local variable.  Use mode_traverse_data
3548         to pass data through htab_traverse.
3549         (read_rtx_1): Add mode_maps parameter.  Change all callers.
3550         Handle mode names which are attribute strings.
3551         * doc/md.texi (Substitutions): Rename from String Substitutions.
3552         Change references.  Document using attributes as modes.
3553
3554 2005-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
3555
3556         * tree-cfg.c (tree_duplicate_sese_region): Update profile.
3557         * tree-optimize.c (init_tree_optimization_passes) Swap
3558         pass_ch and pass_profile.
3559         * tree-ssa-loop-ch.c (copy_loop_headers): Do not update profile
3560         here.  Remove rewrite_into_loop_closed_ssa call.
3561
3562 2005-05-10  Adrian Straetling  <straetling@de.ibm.com>
3563
3564         * config/s390/s390.c: (s390_const_double_ok_for_constraint_p): New
3565         function.
3566         (legitimate_reload_constant_p): Add check for const double zero.
3567         * config/s390/s390.md: Add comment for constraint letter 'G'.
3568         ("*movdf_64", "*movdf_31", "movsf"): Add constraint and proper
3569         attributes for new case.
3570         * config/s390/s390.h: (CONST_DOUBLE_OK_FOR_CONSTRAINT_P): Define it as
3571         s390_const_double_ok_for_constraint_p.
3572         * config/s390/s390-protos.h (s390_const_double_ok_for_constraint_p):
3573         Add prototype.
3574
3575 2005-05-10  Kazu Hirata  <kazu@cs.umass.edu>
3576
3577         PR tree-optimization/21170
3578         * tree-ssa-dom.c, tree-ssa-threadupdate.c: Replace
3579         rewrite_ssa_into_ssa in comments with update_ssa.
3580
3581 2005-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
3582
3583         * tree-ssa-loop-im.c: Include hashtab.h.
3584         (struct mem_ref_loc): New.
3585         (struct mem_ref): Describe the set of references with the same
3586         shape.
3587         (max_stmt_uid, get_stmt_uid, record_mem_ref, free_mem_refs,
3588         maybe_queue_var, fem_single_reachable_address,
3589         for_each_memref, single_reachable_address,
3590         is_call_clobbered_ref, determine_lsm_reg): Removed.
3591         (record_mem_ref_loc, free_mem_ref_locs, determine_lsm_ref,
3592         hoist_memory_reference, memref_hash, memref_eq, memref_del,
3593         gather_mem_refs_stmt, gather_mem_refs, find_more_ref_vops):
3594         New functions.
3595         (rewrite_mem_refs, schedule_sm): Use mem_ref_loc list.
3596         (determine_lsm_loop): Rewritten.
3597         (determine_lsm): Do not set stmt uids.
3598
3599 2005-05-10  Adrian Straetling  <straetling@de.ibm.com>
3600
3601         * config/s390/s390.md: Add comment lines for 'f' and 't' constraint
3602         letters.
3603
3604 2005-05-10  Adrian Straetling  <straetling@de.ibm.com>
3605
3606         * config/s390/s390.md: ("anddi3","andsi3","andhi3","andqi3"): Merge.
3607         ("iordi3", "iorsi3", "iorhi3", "iorqi3"): Merge.
3608         ("xordi3", "xorsi3", "xorhi3", "xorqi3"): Merge.
3609
3610 2005-05-10  Jeff Law  <law@redhat.com>
3611
3612         * tree-ssa-dom.c (dom_opt_finalize_block): Do not call
3613         thread_across_edge for any abnormal edges.
3614
3615 2005-05-10  Richard Henderson  <rth@redhat.com>
3616
3617         * config/ia64/ia64.c (ia64_expand_atomic_op): New.
3618         * config/ia64/ia64-protos.h: Declare it.
3619         * config/ia64/sync.md (I124MODE, FETCHOP, fetchop_name): New.
3620         (sync_add<I48MODE>, sync_old_add<I48MODE>): Remove.
3621         (sync_<FETCHOP><IMODE>, sync_nand<IMODE>): New.
3622         (sync_old_<FETCHOP><IMODE>, sync_old_nand<IMODE>): New.
3623         (sync_new_<FETCHOP><IMODE>, sync_new_nand<IMODE>): New.
3624         (cmpxchg_rel_<I124MODE>): Split from cmpxchg_acq_<IMODE>.  Zero
3625         extend result; use release semantics.
3626         (cmpxchg_rel_di): Rename from cmpxchg_acq_<IMODE>; use release.
3627         (sync_val_compare_and_swap_<IMODE>): Update to match.
3628
3629 2005-05-10  Richard Henderson  <rth@redhat.com>
3630
3631         * optabs.c (expand_compare_and_swap_loop): Don't clobber old value
3632         before comparing it for success.
3633
3634 2005-05-10  Richard Henderson  <rth@redhat.com>
3635
3636         * config/ia64/sync.md (sync_add<I48MODE>): Fix arguments for
3637         no return value pattern.
3638
3639 2005-05-10  Grigory Zagorodnev  <grigory.zagorodnev@intel.com>
3640             H.J. Lu  <hongjiu.lu@intel.com>
3641
3642         * libgcov.c (create_file_directory): New function. Create
3643         directory for the given file name.
3644         (gcov_max_filename): New static var. Keeps size of the longest
3645         file name.
3646         (gcov_exit): Always try to create directory for output
3647         file. Relocate each filename basing on environment vars.
3648         (__gcov_init): Remember the longest file name.
3649         * tsystem.h: include filenames.h to get IS_DIR_SEPARATOR
3650         * doc/gcov.texi (Cross-profiling): New node documenting
3651         cross-profiling management.
3652         * doc/invoke.texi (-fprofile-arcs): Add xref to cross-profiling.
3653
3654 2005-05-10  Eric Botcazou  <ebotcazou@libertysurf.fr>
3655
3656         * config/sparc/sparc.c (mem_min_alignment): Do not rely
3657         on MEM_ALIGN if TARGET_UNALIGNED_DOUBLES.
3658
3659 2005-05-10  Bob Wilson  <bob.wilson@acm.org>
3660
3661         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Rearrange special
3662         case code to avoid one move instruction.
3663         (__umodsi3, __modsi3): Merge duplicated code sequences.
3664
3665 2005-05-10  Kazu Hirata  <kazu@cs.umass.edu>
3666
3667         * config/mips/24k.md, config/sh/divtab.c, config/sh/sh.c,
3668         config/sh/sh.md, config/sh/superh.h: Fix comment typos.
3669         * doc/invoke.texi: Fix typos.
3670
3671         * tree-data-ref.c (analyze_array_indexes, analyze_array,
3672         init_data_ref, access_functions_are_affine_or_constant_p,
3673         free_data_refs): Use VEC instead of VARRAY.
3674         * tree-data-ref.h (data_reference): Change the type of
3675         access_fns to VEC(tree,gc)*.
3676         (DR_ACCESS_FN, DR_NUM_DIMENSIONS): Use VEC instead of VARRAY.
3677
3678 2005-05-10  Gabor Loki <loki@gcc.gnu.org>
3679
3680         PR c/17913
3681         * c-typeck.c (build_conditional_expr): Remove reducing cond_expr.
3682         * fold-const.c (fold): Expand the condition of reducing cond_expr.
3683         (contains_label_1, contains_label_p): New functions for checking
3684         labels in a sub-tree.
3685
3686 2005-05-10  Joseph S. Myers  <joseph@codesourcery.com>
3687
3688         PR c/21342
3689         * c-decl.c (pushdecl): When there is a declaration in the current
3690         scope and the declarations are external linkage, check for
3691         compatibility with the type in the external scope and update the
3692         type in the external scope with the composite type information.
3693         Do not form a composite type of the new type and the visible type
3694         if they are incompatible.
3695
3696 2005-05-10  Nathan Sidwell  <nathan@codesourcery.com>
3697
3698         * crtstuff.c: Revert part of 2005-05-08 Change.
3699         (IN_LIBGCC2): Define.
3700
3701 2005-05-10  Eric Botcazou  <ebotcazou@libertysurf.fr>
3702
3703         * config/sparc/sparc.c (fp_sethi_p): Test !SPARC_SIMM13_P and
3704         remove redundant test.
3705         (fp_mov_p): Accept 0.
3706         (fp_high_losum_p): Remove redundant test.
3707         * config/sparc/predicates.md (const_high_operand): Explicitly test
3708         (not small_int_operand).
3709         (fp_const_high_losum_operand): New.
3710         * config/sparc/sparc.md (movsi_insn): Do not emit 'clr'.  Reorder.
3711         (movdi_insn_sp32_v9): Use canonical predicates.
3712         (movdi_insn_sp32): Test !TARGET_V9 instead of !TARGET_ARCH64.
3713         (movdi_insn_sp64_novis): Delete.
3714         (movdi_insn_sp64_vis): Rename into movdi_insn_sp64.
3715         (movsf_insn_novis): Delete.
3716         (movsf_insn_vis): Rename into movsf_insn.
3717         (movsf_no_f_insn): Rename into movsf_insn_no_fpu.
3718         (movsf_lo_sum): Use fp_const_high_losum_operand.
3719         (movsf_high): Likewise.
3720         (movsf_high_losum splitter): Likewise.
3721         (mov<V32:mode> expander): Use register_or_zero_operand.
3722         (mov<V64:mode> expander): Likewise.
3723         (movdf_insn_sp32): Use register_or_zero_operand.
3724         (movdf_no_e_insn_sp32): Use register_or_zero_operand.
3725         Rename into movdf_insn_sp32_no_fpu.
3726         (movdf_no_e_insn_v9_sp32): Use register_or_zero_operand.
3727         Rename into movdf_insn_sp32_v9_no_fpu.
3728         (movdf_insn_v9only_novis): Delete.
3729         (movdf_insn_v9only_vis): Rename into movdf_insn_sp32_v9.
3730         (movdf_insn_sp64_novis): Delete.
3731         (movdf_insn_sp64_vis): Rename into movdf_insn_sp64.
3732         (movdf_no_e_insn_sp64): Use register_or_zero_operand.
3733         Rename into movdf_insn_sp64_no_fpu.
3734         (movtf expander): Use register_or_zero_operand.
3735         (movtf_insn_sp32): Delete.
3736         (movtf_insn_vis_sp32): Use register_or_zero_operand.
3737         Rename into movtf_insn_sp32.
3738         (movtf_no_e_insn_sp32): Use register_or_zero_operand.
3739         Rename into movtf_insn_sp32_no_fpu.
3740         (movtf_insn_hq_sp64): Delete.
3741         (movtf_insn_hq_vis_sp64): Use register_or_zero_operand.
3742         Rename into movtf_insn_sp64_hq.
3743         (movtf_insn_sp64): Delete.
3744         (movtf_insn_vis_sp64): Use register_or_zero_operand.
3745         Rename into movtf_insn_sp64.
3746         (movtf_no_e_insn_sp64): Use register_or_zero_operand.
3747         Rename into movtf_insn_sp64_no_fpu.
3748
3749 2005-05-10  Nathan Sidwell  <nathan@codesourcery.com>
3750
3751         * config/stormy16/stormy16.c (xstormy16_emit_cbranch): Use
3752         gcc_assert and gcc_unreachable as appropriate.
3753         (xstormy16_split_cbranch, xstormy16_output_cbranch_hi,
3754         xstormy16_output_cbranch_si, xstormy16_split_move,
3755         xstormy16_initial_elimination_offset,
3756         xstormy16_encode_section_info, xstormy16_print_operand_address,
3757         xstormy16_expand_call, xstormy16_expand_arith,
3758         xstormy16_output_shift, xstormy16_init_builtins): Likewise.
3759
3760 2005-05-10  Kazu Hirata  <kazu@cs.umass.edu>
3761
3762         * tree-outof-ssa.c (_elim_graph): Change the type of nodes and
3763         const_copies to VEC(tree,heap)*.
3764         (new_elim_graph, delete_elim_graph, elim_graph_size,
3765         elim_graph_add_node, eliminate_build, eliminate_phi): Use VEC
3766         instead of VARRAY.
3767
3768 2005-05-10  Joseph S. Myers  <joseph@codesourcery.com>
3769
3770         PR other/21052
3771         * doc/extend.texi (Type Attributes): Correct example syntax.
3772
3773 2005-05-09  Joseph S. Myers  <joseph@codesourcery.com>
3774
3775         PR c/21160
3776         * doc/invoke.texi (-Wuninitialized): Update documentation.
3777
3778 2005-05-09  Richard Earnshaw  <richard.earnshaw@arm.com>
3779
3780         * arm.c (const_ok_for_arm): Use a faster algorithm.
3781
3782 2005-05-09  David Edelsohn  <edelsohn@gnu.org>
3783
3784         PR target/21477
3785         * config/rs6000/rs6000.md (add_op2): New.
3786         (add<mode>3): Use it.
3787
3788 2005-05-09  Richard Earnshaw  <richard.earnshaw@arm.com>
3789
3790         * arm.c (arm_gen_constant): Add new heuristic for generating
3791         constant integers that can be expressed as the difference of two
3792         valid immediates.
3793
3794 2005-05-09  Roger Sayle  <roger@eyesopen.com>
3795
3796         * c-tree.h (parser_build_unary_op): New prototype.
3797         * c-typeck.c (parser_build_unary_op): New function to construct
3798         a unary operation in the C parser.
3799         * c-parser.c (c_parser_unary_expression):  Use the new function
3800         parser_build_unary_op when appropriate.
3801
3802 2005-05-09  Mark Mitchell  <mark@codesourcery.com>
3803
3804         PR 18655
3805         * dwarf2out.c (output_call_frame_info): Use DWARF2_FRAME_REG_OUT
3806         before outputting DWARF_FRAME_RETURN_COLUMN.
3807
3808 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
3809
3810         * config/s390/s390.c: (s390_branch_condition_mask,
3811         s390_branch_condition_mnemonic, s390_extra_constraint_str,
3812         s390_const_ok_for_constraint_p, s390_expand_plus_operand,
3813         legitimize_pic_address, s390_emit_tls_call_insn,
3814         legitimize_tls_address, legitimize_tls_address,
3815         s390_expand_addcc, print_shift_count_operand, print_operand,
3816         addr_generation_dependency_p, annotate_constant_pool_refs,
3817         s390_split_branches, find_constant_pool_ref,
3818         replace_constant_pool_ref, s390_add_constant, s390_find_constant,
3819         s390_find_execute, s390_mainpool_start, s390_chunkify_start,
3820         s390_output_pool_entry, s390_function_value,
3821         s390_call_saved_register_used, s390_emit_call): Replace
3822         conditional aborts by gcc_assert and unconditional by gcc_unreachable.
3823         (s390_select_ccmode, s390_match_ccmode_set, s390_extract_part,
3824         s390_cannot_force_const_mem, s390_output_dwarf_dtprel,
3825         get_some_local_dynamic_name, s390_function_arg_size,
3826         s390_function_arg_advance, s390_function_arg,
3827         s390_expand_builtin, s390_gen_rtx_const_DI): Replace abort in
3828         default case by gcc_unreachable.
3829         * config/s390/s390.md: ("*cjump_31", "*icjump_31", "*jump31"): Replace
3830         conditional abort by gcc_assert.
3831         ("doloop_si31"): Replace abort in last else by gcc_unreachable.
3832         ("main_pool", "pool"): Replace unconditional abort by gcc_unreachable.
3833
3834 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
3835
3836         * config/s390/s390.c: (s390_decompose_address,
3837         tls_symbolic_operand, legitimate_pic_operand_p,
3838         legitimate_constant_p, legitimate_reload_constant_p,
3839         s390_expand_plus_operand, legitimate_address_p,
3840         legitimate_la_operand_p, ): Remove 'register' from signature.
3841         (symbolic_reference_mentioned_p,
3842         tls_symbolic_reference_mentioned_p): Remove 'register' from local
3843         variable declarations.
3844         (legitimize_address): Remove 'register' from
3845         signature and local variable declarations.
3846
3847 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
3848
3849         * config/s390/s390-protos.h: (s390_match_ccmode,
3850         s390_match_ccmode_set, reg_used_in_mem_p,
3851         symbolic_reference_mentioned_p, tls_symbolic_reference_mentioned_p,
3852         legitimate_la_operand_p, preferred_la_operand_p,
3853         s390_short_displacement, addr_generation_dependency_p,
3854         legitimate_reload_constant_p, legitimate_address_p): Change return type
3855         into 'bool'.
3856         (s390_tm_ccmode): Change type of parameter "mixed" into 'bool'.
3857         * config/s390/s390.c: (s390_match_ccmode,
3858         symbolic_reference_mentioned_p, tls_symbolic_reference_mentioned_p,
3859         legitimate_reload_constant_p): Change return type into 'bool'.
3860         (preferred_la_operand_p,legitimate_la_operand_p, legitimate_address_p):
3861         Likewise.  Additionally adapted comment.
3862         (s390_extra_constraint_p): Change Comment to reflect 'int' return type.
3863         (s390_tm_ccmode): Change type of parameter "mixed" into 'bool'.
3864         (s390_decompose_address): Change the type of the internal flags
3865         "pointer", "base_ptr", "indx_ptr", and the return value into 'bool'.
3866         (struct s390_address): Change type of "pointer" into bool.
3867         * config/s390/s390.md: ("*tmdi_reg", "*tmsi_reg", "tm<mode>_full"):
3868         Adapt calls for 's390_tm_ccmode' to the new signature.
3869
3870 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
3871
3872         * config/s390/s390.c: (s390_match_ccmode_set,
3873         s390_branch_condition_mnemonic, s390_short_displacement,
3874         s390_decompose_address, get_thread_pointer, legitimize_tls_address,
3875         print_shift_count_operand, get_some_local_dynamic_name,
3876         get_some_local_dynamic_name_1, reg_used_in_mem_p,
3877         addr_generation_dependency_p, s390_split_branches,
3878         annotate_constant_pool_refs, find_constant_pool_ref,
3879         replace_constant_pool_ref, find_ltrel_base, replace_ltrel_base,
3880         s390_optimize_prologue, find_unused_clobbered_reg, s390_frame_area,
3881         s390_register_info, s390_frame_info, s390_init_frame_layout,
3882         s390_update_frame_layout, save_fpr, restore_fpr, save_gprs,
3883         restore_gprs, s390_function_arg_size, s390_function_arg_float,
3884         s390_init_machine_status, s390_assemble_integer, s390_handle_option,
3885         s390_encode_section_info, s390_cannot_force_const_mem,
3886         s390_delegitimize_address, s390_return_in_memory, s390_init_builtins,
3887         s390_expand_builtin, s390_output_mi_thunk, s390_safe_attr_type,
3888         s390_adjust_priority, s390_issue_rate,
3889         s390_first_cycle_multipass_dfa_lookahead, s390_cannot_copy_insn_p,
3890         s390_rtx_costs, s390_address_cost, s390_reorg, s390_valid_pointer_mode,
3891         s390_build_builtin_va_list, s390_gimplify_va_arg,
3892         s390_function_ok_for_sibcall, s390_call_saved_register_used,
3893         s390_pass_by_reference, s390_fixed_condition_code_regs,
3894         s390_cc_modes_compatible s390_mainpool_start,, s390_mainpool_finish,
3895         s390_mainpool_cancel, s390_chunkify_start, s390_chunkify_finish,
3896         s390_chunkify_cancel, s390_start_pool, s390_end_pool,
3897         s390_add_pool_insn, s390_find_pool, s390_add_constant,
3898         s390_find_constant, s390_add_execute, s390_find_execute,
3899         s390_execute_label, s390_execute_target, s390_dump_pool,
3900         s390_dump_execute, s390_alloc_pool, s390_free_pool): Remove prototypes.
3901         Move target macro definitions to the end of the file.  Move several
3902         functions within the file to assure correct compiling.
3903
3904 2005-05-09  Steven Bosscher  <stevenb@suse.de>
3905
3906         * calls.c (purge_reg_equiv_notes): Remove, fold into...
3907         (fixup_tail_calls): ...here.  Only look at insns between the
3908         start of the function and the FUNCTION_BEG insn note.
3909
3910         * gcse.c (one_cprop_pass): Fix typos in dumps.
3911
3912         * tree-ssa-operands.h (FOR_EACH_PHI_ARG): Fix typos.
3913
3914 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
3915
3916         * config/s390/s390.h: Move xxx_REGNUM definitions to s390.md.
3917         * config/s390/s390.md: ("SIBCALL_REGNUM", "BASE_REGNUM",
3918         "RETURN_REGNUM", "CC_REGNUM", "TP_REGNUM"): New constants.
3919         Replace every occurrence of '(reg:<MODE> 33)' by '(reg:<MODE>
3920         CC_REGNUM)'.
3921         ("get_tp_64", "get_tp_31", "set_tp_64", "set_tp_31"): Replace
3922         '(reg:<MODE> 36)' by '(reg:<MODE> TP_REGNUM)'.
3923         ("*sibcall_br", "*sibcall_value_br"): Replace '(reg:DI 1)' by '(reg:DI
3924         REG_SC)'.
3925
3926 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
3927
3928         * config/s390/s390.md: ("gf") New mode attribute.
3929         ("fixuns_truncdfdi2", "fixuns_truncdfsi2", "fixuns_truncsfdi2",
3930         "fixuns_truncsfsi2"): Merge.
3931         ("fix_truncdfdi2", "fix_truncsfdi2"): Merge.
3932         ("fix_truncdfdi2_ieee", "fix_truncdfsi2_ieee", "fix_truncsfdi2_ieee",
3933         "fix_truncsfsi2_ieee"): Merge.
3934
3935 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
3936
3937         * config/s390/s390.md: ("FPR") New mode macro.
3938         ("de", "dee"): New mode attributes.
3939         ("cmpdf", "cmpsf"): Merge.
3940         ("*cmpdf_ccs_0", "*cmpsf_ccs_0"): Merge.
3941         ("*cmpdf_ccs_0_ibm", "*cmpdf_ccs_0_ibm"): Merge.
3942         ("*cmpdf_ccs", "*cmpsf_ccs"): Merge.
3943         ("*cmpdf_ccs_ibm", "*cmpsf_ccs_ibm"): Merge.
3944         ("floatdidf2", "floatdisf2"): Merge.
3945         ("adddf3", "addsf3"): Merge.
3946         ("*adddf3", "*addsf3"): Merge.
3947         ("*adddf3_cc", "*addsf3_cc"): Merge.
3948         ("*adddf3_cconly", "*addsf3_cconly"): Merge.
3949         ("*adddf3_ibm", "*addsf3_ibm"): Merge.
3950         ("subdf3", "subsf3"): Merge.
3951         ("*subdf3", "*subsf3"): Merge.
3952         ("*subdf3_cc", "*subsf3_cc"): Merge.
3953         ("*subdf3_cconly", "*subsf3_cconly"): Merge.
3954         ("*subdf3_ibm", "*subsf3_ibm"): Merge.
3955         ("muldf3", "mulsf3"): Merge.
3956         ("*muldf3", "*mulsf3" "): Merge.
3957         ("*muldf3_ibm", "*mulsf3_ibm"): Merge.
3958         ("*fmadddf", "*fmaddsf"): Merge.
3959         ("*fmsubdf", "*fmsubsf"): Merge.
3960         ("divdf3", "divsf3"): Merge.
3961         ("*divdf3", "*divsf3"): Merge.
3962         ("*divdf3_ibm", "*divsf3_ibm"): Merge.
3963         ("negdf2", "negsf2"): Merge.
3964         ("*negdf2_cc", "*negsf2_cc"): Merge.
3965         ("*negdf2_cconly", "*negsf2_cconly"): Merge.
3966         ("*negdf2", "*negsf2"): Merge.
3967         ("*negdf2_ibm", "*negsf2_ibm"): Merge.
3968         ("absdf2", "abssf2"): Merge.
3969         ("*absdf2_cc", "*abssf2_cc"): Merge.