OSDN Git Service

82d7ba0629da241c0001f40118b6c8dff2e2c56f
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2005-05-10  Nathan Sidwell  <nathan@codesourcery.com>
2
3         * crtstuff.c: Revert part of 2005-05-08 Change.
4         (IN_LIBGCC2): Define.
5
6 2005-05-10  Eric Botcazou  <ebotcazou@libertysurf.fr>
7
8         * config/sparc/sparc.c (fp_sethi_p): Test !SPARC_SIMM13_P and
9         remove redundant test.
10         (fp_mov_p): Accept 0.
11         (fp_high_losum_p): Remove redundant test.
12         * config/sparc/predicates.md (const_high_operand): Explicitly test
13         (not small_int_operand).
14         (fp_const_high_losum_operand): New.
15         * config/sparc/sparc.md (movsi_insn): Do not emit 'clr'.  Reorder.
16         (movdi_insn_sp32_v9): Use canonical predicates.
17         (movdi_insn_sp32): Test !TARGET_V9 instead of !TARGET_ARCH64.
18         (movdi_insn_sp64_novis): Delete.
19         (movdi_insn_sp64_vis): Rename into movdi_insn_sp64.
20         (movsf_insn_novis): Delete.
21         (movsf_insn_vis): Rename into movsf_insn.
22         (movsf_no_f_insn): Rename into movsf_insn_no_fpu.
23         (movsf_lo_sum): Use fp_const_high_losum_operand.
24         (movsf_high): Likewise.
25         (movsf_high_losum splitter): Likewise.
26         (mov<V32:mode> expander): Use register_or_zero_operand.
27         (mov<V64:mode> expander): Likewise.
28         (movdf_insn_sp32): Use register_or_zero_operand.
29         (movdf_no_e_insn_sp32): Use register_or_zero_operand.
30         Rename into movdf_insn_sp32_no_fpu.
31         (movdf_no_e_insn_v9_sp32): Use register_or_zero_operand.
32         Rename into movdf_insn_sp32_v9_no_fpu.
33         (movdf_insn_v9only_novis): Delete.
34         (movdf_insn_v9only_vis): Rename into movdf_insn_sp32_v9.
35         (movdf_insn_sp64_novis): Delete.
36         (movdf_insn_sp64_vis): Rename into movdf_insn_sp64.
37         (movdf_no_e_insn_sp64): Use register_or_zero_operand. 
38         Rename into movdf_insn_sp64_no_fpu.
39         (movtf expander): Use register_or_zero_operand.
40         (movtf_insn_sp32): Delete.
41         (movtf_insn_vis_sp32): Use register_or_zero_operand.
42         Rename into movtf_insn_sp32.
43         (movtf_no_e_insn_sp32): Use register_or_zero_operand.
44         Rename into movtf_insn_sp32_no_fpu.
45         (movtf_insn_hq_sp64): Delete.
46         (movtf_insn_hq_vis_sp64): Use register_or_zero_operand.
47         Rename into movtf_insn_sp64_hq.
48         (movtf_insn_sp64): Delete.
49         (movtf_insn_vis_sp64): Use register_or_zero_operand.
50         Rename into movtf_insn_sp64.
51         (movtf_no_e_insn_sp64): Use register_or_zero_operand.
52         Rename into movtf_insn_sp64_no_fpu.
53
54 2005-05-10  Nathan Sidwell  <nathan@codesourcery.com>
55
56         * config/stormy16/stormy16.c (xstormy16_emit_cbranch): Use
57         gcc_assert and gcc_unreachable as appropriate.
58         (xstormy16_split_cbranch, xstormy16_output_cbranch_hi,
59         xstormy16_output_cbranch_si, xstormy16_split_move,
60         xstormy16_initial_elimination_offset,
61         xstormy16_encode_section_info, xstormy16_print_operand_address,
62         xstormy16_expand_call, xstormy16_expand_arith,
63         xstormy16_output_shift, xstormy16_init_builtins): Likewise.
64
65 2005-05-10  Kazu Hirata  <kazu@cs.umass.edu>
66
67         * tree-outof-ssa.c (_elim_graph): Change the type of nodes and
68         const_copies to VEC(tree,heap)*.
69         (new_elim_graph, delete_elim_graph, elim_graph_size,
70         elim_graph_add_node, eliminate_build, eliminate_phi): Use VEC
71         instead of VARRAY.
72
73 2005-05-10  Joseph S. Myers  <joseph@codesourcery.com>
74
75         PR other/21052
76         * doc/extend.texi (Type Attributes): Correct example syntax.
77
78 2005-05-09  Joseph S. Myers  <joseph@codesourcery.com>
79
80         PR c/21160
81         * doc/invoke.texi (-Wuninitialized): Update documentation.
82
83 2005-05-09  Richard Earnshaw  <richard.earnshaw@arm.com>
84
85         * arm.c (const_ok_for_arm): Use a faster algorithm.
86
87 2005-05-09  David Edelsohn  <edelsohn@gnu.org>
88
89         PR target/21477
90         * config/rs6000/rs6000.md (add_op2): New.
91         (add<mode>3): Use it.
92
93 2005-05-09  Richard Earnshaw  <richard.earnshaw@arm.com>
94
95         * arm.c (arm_gen_constant): Add new heuristic for generating
96         constant integers that can be expressed as the difference of two
97         valid immediates.
98
99 2005-05-09  Roger Sayle  <roger@eyesopen.com>
100
101         * c-tree.h (parser_build_unary_op): New prototype.
102         * c-typeck.c (parser_build_unary_op): New function to construct
103         a unary operation in the C parser.
104         * c-parser.c (c_parser_unary_expression):  Use the new function
105         parser_build_unary_op when appropriate.
106
107 2005-05-09  Mark Mitchell  <mark@codesourcery.com>
108
109         PR 18655
110         * dwarf2out.c (output_call_frame_info): Use DWARF2_FRAME_REG_OUT
111         before outputting DWARF_FRAME_RETURN_COLUMN.
112
113 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
114
115         * config/s390/s390.c: (s390_branch_condition_mask,
116         s390_branch_condition_mnemonic, s390_extra_constraint_str,
117         s390_const_ok_for_constraint_p, s390_expand_plus_operand,
118         legitimize_pic_address, s390_emit_tls_call_insn,
119         legitimize_tls_address, legitimize_tls_address,
120         s390_expand_addcc, print_shift_count_operand, print_operand,
121         addr_generation_dependency_p, annotate_constant_pool_refs,
122         s390_split_branches, find_constant_pool_ref,
123         replace_constant_pool_ref, s390_add_constant, s390_find_constant,
124         s390_find_execute, s390_mainpool_start, s390_chunkify_start,
125         s390_output_pool_entry, s390_function_value,
126         s390_call_saved_register_used, s390_emit_call): Replace
127         conditional aborts by gcc_assert and unconditional by gcc_unreachable.
128         (s390_select_ccmode, s390_match_ccmode_set, s390_extract_part,
129         s390_cannot_force_const_mem, s390_output_dwarf_dtprel,
130         get_some_local_dynamic_name, s390_function_arg_size,
131         s390_function_arg_advance, s390_function_arg,
132         s390_expand_builtin, s390_gen_rtx_const_DI): Replace abort in
133         default case by gcc_unreachable.
134         * config/s390/s390.md: ("*cjump_31", "*icjump_31", "*jump31"): Replace
135         conditional abort by gcc_assert.
136         ("doloop_si31"): Replace abort in last else by gcc_unreachable.
137         ("main_pool", "pool"): Replace unconditional abort by gcc_unreachable.
138
139 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
140
141         * config/s390/s390.c: (s390_decompose_address,
142         tls_symbolic_operand, legitimate_pic_operand_p,
143         legitimate_constant_p, legitimate_reload_constant_p,
144         s390_expand_plus_operand, legitimate_address_p,
145         legitimate_la_operand_p, ): Remove 'register' from signature.
146         (symbolic_reference_mentioned_p,
147         tls_symbolic_reference_mentioned_p): Remove 'register' from local
148         variable declarations.
149         (legitimize_address): Remove 'register' from
150         signature and local variable declarations.
151
152 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
153
154         * config/s390/s390-protos.h: (s390_match_ccmode,
155         s390_match_ccmode_set, reg_used_in_mem_p,
156         symbolic_reference_mentioned_p, tls_symbolic_reference_mentioned_p,
157         legitimate_la_operand_p, preferred_la_operand_p,
158         s390_short_displacement, addr_generation_dependency_p,
159         legitimate_reload_constant_p, legitimate_address_p): Change return type
160         into 'bool'.
161         (s390_tm_ccmode): Change type of parameter "mixed" into 'bool'. 
162         * config/s390/s390.c: (s390_match_ccmode,
163         symbolic_reference_mentioned_p, tls_symbolic_reference_mentioned_p,
164         legitimate_reload_constant_p): Change return type into 'bool'.
165         (preferred_la_operand_p,legitimate_la_operand_p, legitimate_address_p):
166         Likewise.  Additionally adapted comment.  
167         (s390_extra_constraint_p): Change Comment to reflect 'int' return type.
168         (s390_tm_ccmode): Change type of parameter "mixed" into 'bool'. 
169         (s390_decompose_address): Change the type of the internal flags
170         "pointer", "base_ptr", "indx_ptr", and the return value into 'bool'.
171         (struct s390_address): Change type of "pointer" into bool.
172         * config/s390/s390.md: ("*tmdi_reg", "*tmsi_reg", "tm<mode>_full"):
173         Adapt calls for 's390_tm_ccmode' to the new signature.
174
175 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
176
177         * config/s390/s390.c: (s390_match_ccmode_set,
178         s390_branch_condition_mnemonic, s390_short_displacement,
179         s390_decompose_address, get_thread_pointer, legitimize_tls_address,
180         print_shift_count_operand, get_some_local_dynamic_name,
181         get_some_local_dynamic_name_1, reg_used_in_mem_p,
182         addr_generation_dependency_p, s390_split_branches,
183         annotate_constant_pool_refs, find_constant_pool_ref,
184         replace_constant_pool_ref, find_ltrel_base, replace_ltrel_base,
185         s390_optimize_prologue, find_unused_clobbered_reg, s390_frame_area,
186         s390_register_info, s390_frame_info, s390_init_frame_layout,
187         s390_update_frame_layout, save_fpr, restore_fpr, save_gprs,
188         restore_gprs, s390_function_arg_size, s390_function_arg_float,
189         s390_init_machine_status, s390_assemble_integer, s390_handle_option,
190         s390_encode_section_info, s390_cannot_force_const_mem,
191         s390_delegitimize_address, s390_return_in_memory, s390_init_builtins,
192         s390_expand_builtin, s390_output_mi_thunk, s390_safe_attr_type,
193         s390_adjust_priority, s390_issue_rate,
194         s390_first_cycle_multipass_dfa_lookahead, s390_cannot_copy_insn_p,
195         s390_rtx_costs, s390_address_cost, s390_reorg, s390_valid_pointer_mode,
196         s390_build_builtin_va_list, s390_gimplify_va_arg,
197         s390_function_ok_for_sibcall, s390_call_saved_register_used,
198         s390_pass_by_reference, s390_fixed_condition_code_regs,
199         s390_cc_modes_compatible s390_mainpool_start,, s390_mainpool_finish,
200         s390_mainpool_cancel, s390_chunkify_start, s390_chunkify_finish,
201         s390_chunkify_cancel, s390_start_pool, s390_end_pool,
202         s390_add_pool_insn, s390_find_pool, s390_add_constant,
203         s390_find_constant, s390_add_execute, s390_find_execute,
204         s390_execute_label, s390_execute_target, s390_dump_pool,
205         s390_dump_execute, s390_alloc_pool, s390_free_pool): Remove prototypes. 
206         Move target macro definitions to the end of the file.  Move several
207         functions within the file to assure correct compiling.
208
209 2005-05-09  Steven Bosscher  <stevenb@suse.de>
210
211         * calls.c (purge_reg_equiv_notes): Remove, fold into...
212         (fixup_tail_calls): ...here.  Only look at insns between the
213         start of the function and the FUNCTION_BEG insn note.
214
215         * gcse.c (one_cprop_pass): Fix typos in dumps.
216
217         * tree-ssa-operands.h (FOR_EACH_PHI_ARG): Fix typos.
218
219 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
220
221         * config/s390/s390.h: Move xxx_REGNUM definitions to s390.md.
222         * config/s390/s390.md: ("SIBCALL_REGNUM", "BASE_REGNUM",
223         "RETURN_REGNUM", "CC_REGNUM", "TP_REGNUM"): New constants.
224         Replace every occurrence of '(reg:<MODE> 33)' by '(reg:<MODE>
225         CC_REGNUM)'.
226         ("get_tp_64", "get_tp_31", "set_tp_64", "set_tp_31"): Replace
227         '(reg:<MODE> 36)' by '(reg:<MODE> TP_REGNUM)'.
228         ("*sibcall_br", "*sibcall_value_br"): Replace '(reg:DI 1)' by '(reg:DI
229         REG_SC)'.
230
231 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
232
233         * config/s390/s390.md: ("gf") New mode attribute.
234         ("fixuns_truncdfdi2", "fixuns_truncdfsi2", "fixuns_truncsfdi2",
235         "fixuns_truncsfsi2"): Merge.
236         ("fix_truncdfdi2", "fix_truncsfdi2"): Merge.
237         ("fix_truncdfdi2_ieee", "fix_truncdfsi2_ieee", "fix_truncsfdi2_ieee",
238         "fix_truncsfsi2_ieee"): Merge.
239
240 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
241
242         * config/s390/s390.md: ("FPR") New mode macro.
243         ("de", "dee"): New mode attributes.
244         ("cmpdf", "cmpsf"): Merge.
245         ("*cmpdf_ccs_0", "*cmpsf_ccs_0"): Merge.
246         ("*cmpdf_ccs_0_ibm", "*cmpdf_ccs_0_ibm"): Merge.
247         ("*cmpdf_ccs", "*cmpsf_ccs"): Merge.
248         ("*cmpdf_ccs_ibm", "*cmpsf_ccs_ibm"): Merge.
249         ("floatdidf2", "floatdisf2"): Merge.
250         ("adddf3", "addsf3"): Merge.
251         ("*adddf3", "*addsf3"): Merge.
252         ("*adddf3_cc", "*addsf3_cc"): Merge.
253         ("*adddf3_cconly", "*addsf3_cconly"): Merge.
254         ("*adddf3_ibm", "*addsf3_ibm"): Merge.
255         ("subdf3", "subsf3"): Merge.
256         ("*subdf3", "*subsf3"): Merge.
257         ("*subdf3_cc", "*subsf3_cc"): Merge.
258         ("*subdf3_cconly", "*subsf3_cconly"): Merge.
259         ("*subdf3_ibm", "*subsf3_ibm"): Merge.
260         ("muldf3", "mulsf3"): Merge.
261         ("*muldf3", "*mulsf3" "): Merge.
262         ("*muldf3_ibm", "*mulsf3_ibm"): Merge.
263         ("*fmadddf", "*fmaddsf"): Merge.
264         ("*fmsubdf", "*fmsubsf"): Merge.
265         ("divdf3", "divsf3"): Merge.
266         ("*divdf3", "*divsf3"): Merge.
267         ("*divdf3_ibm", "*divsf3_ibm"): Merge.
268         ("negdf2", "negsf2"): Merge.
269         ("*negdf2_cc", "*negsf2_cc"): Merge.
270         ("*negdf2_cconly", "*negsf2_cconly"): Merge.
271         ("*negdf2", "*negsf2"): Merge.
272         ("*negdf2_ibm", "*negsf2_ibm"): Merge.
273         ("absdf2", "abssf2"): Merge.
274         ("*absdf2_cc", "*abssf2_cc"): Merge.
275         ("*absdf2_cconly", "*abssf2_cconly"): Merge.
276         ("*absdf2", "*abssf2"): Merge.
277         ("*absdf2_ibm", "*abssf2_ibm"): Merge.
278         ("*negabsdf2_cc", "*negabssf2_cc"): Merge.
279         ("*negabsdf2_cconly", "*negabssf2_cconly"): Merge.
280         ("*negabsdf2", "*negabssf2"): Merge.
281         ("sqrtdf2", "sqrtsf2"): Merge.
282
283 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
284
285         * config/s390/s390.c: (s390_adjust_priority): Adapt to changed 
286         attribute names.
287         * config/s390/2084.md: ("x_fsimpd", "x_fsimps", "x_fdivd", "x_fdivs",
288         "x_floadd", "x_floads", "x_fstored", "x_fstores"): Rename to
289         ("x_fsimpdf", "x_fsimpsf", "x_fdivdf", "x_fdivsf", "x_floaddf",
290         "x_floadsf", "x_fstoredf", "x_fstoresf") and replace 'type'
291         attribute names.
292         * config/s390/s390.md: ("type"): Rename "fsimpd, fsimps, floadd, floads,
293         fstored, fstores, fmuld, fmuls, fdivd, fdivs, fsqrtd, fsqrts" to
294         "fsimpdf, fsimpsf, floaddf, floadsf, fstoredf, fstoresf, fmuldf,
295         fmulsf, fdivdf, fdivsf, fsqrtdf, fsqrtsf".
296         ("*cmpdf_ccs_0", "*cmpdf_css_0_ibm", "*cmpdf_ccs",
297         "*cmpdf_ccs_ibm", "*cmpsf_ccs_0", "*cmpsf_css_0_ibm",
298         "*cmpsf_ccs", "*cmpsf_ccs_ibm", "*movdi_64", "*movdi_31",
299         "*movsi_zarch", "*movsi_esa", "*movdf_64", "*movdf_31", "movsf",
300         "*muldf3", "*muldf3_ibm", "*fmadddf", "*fmsubdf", "*mulsf3",
301         "mulsf3_ibm", "*fmaddsf", "fmsubsf", "*divdf3", "*divdf3_ibm",
302         "*negdf2_cc", "*negdf2_cconly", "*negdf2", "*negdf2_ibm",
303         "*negsf2_cc", "*negsf2_cconly", "*negsf2", "*absdf2_cc",
304         "*absdf2_cconly", "*absdf2", "*absdf2_ibm", "*abssf2_cc",
305         "*abssf2_cconly", "*abssf2", "*abssf2_ibm", "*negabsdf2_cc",
306         "*negabsdf2_cconly", "*negabsdf2", "*negabssf2_cc",
307         "*negabssf2_cconly", "*negabssf2", "sqrtdf2", "sqrtsf2"): Rename
308         'type' value.
309         ("*divsf3"): Additionally rename second pattern to
310         "*divsf3_ibm".
311         ("truncdfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
312         "*adddf3", "*adddf3_cc", "*adddf3_cconly", "*adddf3_ibm",
313         "*addsf3", "*addsf3_cc", "*addsf3_cconly", "*subdf3",
314         "subdf3_cc", "*subdf3_cconly", "*subdf3_ibm", "*subsf3",
315         "subsf3_cc", "*subsf3_cconly", "*subsf3_ibm"): Merge identical
316         'type values' and rename 'type' value.
317         ("*addsf3"): Additionally rename second pattern to
318         "*addsf3_ibm".
319
320 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
321
322         * config/s390/s390.md: ("SHIFT"): New mode macro.
323         ("lr", "shift"): New mode attributes.
324         ("ashldi3", "lshrdi3"): Merge.
325         ("*ashldi3_31", "*lshrdi3"_31): Merge.
326         ("*ashldi3_64", "*lshrdi3"_64): Merge.
327         ("ashlsi3", "lshrsi3"): Merge.
328
329 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
330
331         * config/s390/s390.md: ("DSI", "SCOND"): New mode 
332         macros.
333         ("E", "g"): New mode attributes.
334         ("*adddi3_alc_cc", "*addsi3_alc_cc"): Merge.
335         ("*adddi3_alc", "*addsi3_alc"): Merge.
336         ("*subdi3_slb_cc", "*subsi3_slb_cc"): Merge.
337         ("*subdi3_slb", "*subsi3_slb"): Merge.
338         ("adddicc", "addsicc"): Merge.
339         ("*sconddi", "*scondsi"): Merge.
340         ("*sconddi_neg", "*scondsi_neg"): Merge.
341         ("sltu", "sgtu", "sleu", "sgeu"): Merge.
342         ("negdi2", "negsi2"): Extract expander pattern from
343         "negsi2" and merge with "negdi2".
344         ("*negdi2"): Merge with instruction pattern of "negsi2".
345         ("*negdi2_cc", "*negsi2_cc"): Merge.
346         ("*negdi2_cconly", "*negsi2_cconly"): Merge.
347         ("rotldi3", "rotlsi3"): Merge.
348
349 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
350
351         * config/s390/s390.md: ("hc"): New mode attribute.
352         ("extendhidi2", "extendqidi2"): Merge.
353         ("*extendhidi2", "*extendqidi2"): Merge.
354         ("extendhisi2", "extendqisi2"): Merge.
355         ("zero_extendhidi2", "zero_extendqidi2"): Merge.
356         ("*zero_extendhidi2", "*zero_extendqidi2"): Merge.
357         Merged 2 define_split.
358         ("*zero_extendhisi2", "*zero_extendqisi2"): Merge.
359         ("*zero_extendhisi2_64", "*zero_extendqisi2_64"): Merge.
360
361 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
362
363         * config/s390/s390.md: ("COMPARE"): New mode macro.
364         ("beq", "bne", "bgt", "bgtu", "blt", "bltu", "bge", "bgeu",
365         "ble", "bleu", "bunordered", "bordered", "buneq", "bunlt",
366         "bungt", "bunle", "bunge", "bltgt"): Merge.
367
368 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
369
370         * config/s390/s390.md: ("INT"): New mode macro.
371         ("one_cmpldi2", "one_cmplsi2", "one_cmplhi2", "one_cmplqi2"):
372         Merge.
373
374 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
375
376         * config/s390/s390.md: ("GPR", "P"): New mode macros.
377         ("cmpdi", "cmpsi"): Merge.
378         ("strlendi", "strlensi"): Merge.
379         ("*strlendi", "*strlensi"): Merge.
380         ("movmemdi", "movmemsi"): Merge.
381         ("clrmemdi", "clrmemsi"): Merge.
382
383 2005-05-09  Adrian Straetling  <straetling@de.ibm.com>
384
385         * config/s390/s390.md: ("HQI"): New mode macro.
386         ("icm_lo", "icm_hi", "max_uint"): New mode attributes.
387         ("*tmhi_full", "*tmqi_full"): Merge.
388         ("*tsthiCCT", "*tstqiCCT"): Merge.
389         ("*tsthi", "*tstqi"): Merge.
390         ("*tsthi_cconly", "tstqi_cconly"): Merge.
391         ("*sethighhisi", "*sethighqisi"): Merge.
392          
393 2005-05-09  Kazu Hirata  <kazu@cs.umass.edu>
394
395         * crtstuff.c, integrate.h, tree-scalar-evolution.h,
396         config/alpha/unicosmk.h, config/arc/arc.md,
397         config/arm/bpabi.h, config/arm/coff.h, config/arm/elf.h,
398         config/arm/ieee754-df.S, config/arm/ieee754-sf.S,
399         config/arm/netbsd.h, config/arm/pe.c, config/arm/pe.h,
400         config/arm/semi.h, config/arm/uclinux-elf.h,
401         config/arm/wince-pe.h, config/fr30/fr30.c,
402         config/rs6000/altivec.h: Update copyright.
403
404 2005-05-09  Nathan Sidwell  <nathan@codesourcery.com>
405
406         * config/pdp11/pdp11.c (pdp11_output_function_prologue): Use
407         gcc_assert and gcc_unreachable as appropriate.
408         (pdp11_output_function_epilogue, output_move_double,
409         output_move_quad, print_operand_address, output_jump,
410         output_addr_const_pdp11): Likewise.
411         * config/pdp11/pdp11.h (FUNCTION_PROFILER,
412         ASM_OUTPUT_ALIGN): Likewise.
413         * config/pdp11/pdp11.md: Likewise.
414         (extendhisi2, subhi3, subqi3): Likewise.
415
416 2005-05-09  David Edelsohn  <edelsohn@gnu.org>
417
418         PR middle-end/21237
419         * dojump.c (do_jump, MINUS_EXPR): Build NE_EXPR and fall through
420         to NE_EXPR case.
421
422 2005-05-09  Kazu Hirata  <kazu@cs.umass.edu>
423
424         * config/ia64/ia64.c: Fix a comment typo.
425
426 2005-05-09  Richard Earnshaw  <rearnsha@arm.com>
427
428         PR target/21397
429         * arm.c (ARM_OPT_SET_CPU, ARM_OPT_SET_ARCH, ARM_OPT_SET_TUNE): Define.
430         (arm_override_options): Use them instead of manifest constants.  Don't
431         allow -march to override the -mtune setting.
432
433 2005-05-09  Nathan Sidwell  <nathan@codesourcery.com>
434
435         * config/iq2000/iq2000.c (abort_with_insn): Use fancy_abort.
436         (gen_int_relational): Use gcc_unreachable and gcc_assert as necessary.
437         (function_arg_advance, function_arg, save_restore_insns,
438         iq2000_expand_prologue, iq2000_output_conditional_branch,
439         expand_one_builtin, print_operand):
440         * config/iq2000/iq2000.md (tablejump): Likewise.
441
442 2005-05-09  David Ung  <davidu@mips.com>
443
444         * config/mips/mips.h (processor_type): Add names for the 24K. 
445         * config/mips/mips.c (mips_cpu_info_table): Add names for the 24K
446         processor family.
447         * config/mips/mips.md (cnv_mode): New attribute for recording the
448         conversion types of float convert insns.
449         (cpu): Add 24k and 24kx.
450         (include): Include 24k.md file.
451         (truncdfsf2, extendsfdf2, fix_truncdfsi2_insn, fix_truncdfsi2_macro)
452         (fix_truncdfdi2, fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2)
453         (floatdisf2): Setup cnv_mode.
454         (fix_truncsfsi2_insn, fix_truncsfsi2_macro): Changed mode to SF and
455         setup cnv_mode.
456         * config/mips/24k.md: New file, contains 24k DFA pipeline
457         description. 
458
459 2005-05-09  Nathan Sidwell  <nathan@codesourcery.com>
460
461         * config/sh/sh.c (print_operand_address): Use gcc_assert and
462         gcc_unreachable as appropriate.
463         (print_operand, prepare_move_operands, prepare_scc_operands,
464         output_movedouble, output_branch, shift_insns_rtx, gen_shifty_op,
465         gen_shl_and, shl_sext_kind, gen_datalabel_ref, dump_table,
466         fixup_mova, gen_far_branch, sh_reorg, split_branches,
467         final_prescan_insn, output_stack_adjust, sh_expand_epilogue,
468         sh_set_return_address, sh_setup_incoming_varargs,
469         initial_elimination_offset, sh_pch_valid_p, get_free_reg,
470         sh_expand_builtin, sh_output_mi_thunk, extract_sfunc_addr,
471         check_use_sfunc_addr): Likewise.
472         * config/sh/netbsd-elf.h (FUNCTION_PROFILER): Likewise.
473         * config/sh/sh.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Likewise.
474         * config/sh/symbian.c (sh_symbian_mark_dllexport,
475         sh_symbian_mark_dllimport): Likewise.
476         * config/sh/sh.md: Likewise.
477         (movdicc, call_pop, call_value_pop, casesi_worker_1,
478         casesi_worker_2, casesi_shift_media, casesi_load_media,
479         return_media): Likewise.
480
481 2005-05-08  Roger Sayle  <roger@eyesopen.com>
482
483         PR inline-asm/8788
484         * stmt.c (expand_asm_operands): Avoid calling force_reg on BLKmode
485         operands.
486
487 2005-05-08  Richard Henderson  <rth@redhat.com>
488
489         * config/alpha/alpha.c (adjust_address): Fix typo last change.
490
491 2005-05-08  Stephane Carrez  <stcarrez@nerim.fr>
492
493         * config/m68hc11/m68hc11.h (REG_VALID_P): A regno must be >= 0
494         and -1 can happen in reg_renumber when no hard register is assigned.
495
496 2005-05-08  Steven Bosscher  <stevenb@suse.de>
497             Kazu Hirata  <kazu@cs.umass.edu>
498
499         PR tree-optimization/14841, tree-optimization/15838
500         * tree-ssa-ccp.c (fold_const_aggregate_ref): New.
501         (evaluate_stmt): Call it.
502
503 2005-05-08  Jakub Jelinek  <jakub@redhat.com>
504
505         * config/ia64/ia64.c (ia64_override_options): Don't set
506         ia64_flag_var_tracking and clear flag_var_tracking here...
507         (ia64_file_start): ... but here.
508
509 2005-05-08  Nathan Sidwell  <nathan@codesourcery.com>
510
511         * config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Use gcc_assert
512         and gcc_unreachable as appropriate.
513         (expand_prologue, expand_epilogue, m68hc11_gen_lowpart,
514         m68hc11_gen_highpart, print_operand, print_operand_address,
515         m68hc11_expand_compare, m68hc11_expand_compare_and_branch,
516         m68hc11_gen_movhi): Likewise.
517         * config/m68hc11/m68hc11.h (HARD_X_REGNUM): Reword comment.
518         * config/m68hc11/m68hc11.md: Reword comment.
519
520 2005-05-08  Stephane Carrez  <stcarrez@nerim.fr>
521
522         PR target/21281
523         * config/m68hc11/predicates.md (splitable_operand): An immediate is
524         allowed.
525
526 2005-05-08  Stephane Carrez  <stcarrez@nerim.fr>
527
528         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Do not allow
529         the 68HC12 address indirect addressing mode as it is not supported by
530         bset and bclr.
531         * config/m68hc11/m68hc11-protos.h
532         (m68hc11_valid_addressing_p): Declare.
533         (m68hc11_add_mode): Declare.
534         * config/m68hc11/m68hc11.c (m68hc11_valid_addressing_p): Rename from
535         register_indirect_p and export it.
536         (m68hc11_z_replacement): Use emit_insn_after when adding the save Z
537         instruction so that it is part of the good BB.
538         (m68hc11_gen_movhi): Fix invalid generation of indexed indirect
539         addressing with movw.
540         (m68hc11_gen_movqi): Use pula and pulb instead of lda and ldb for
541         68HC12.
542         * config/m68hc11/m68hc11.h (ADDR_STRICT, ADDR_INCDEC, ADDR_INDEXED,
543         ADDR_OFFSET, ADDR_INDIRECT, ADDR__CONST): Moved from m68hc11.c.
544         * config/m68hc11/m68hc11.md ("movhi_const0"): Use this pattern only
545         for 68HC11.
546         ("*movhi_68hc12"): Handle movhi_const0.
547         ("*subhi3", "subqi3"): Use general_operand for operand 1.
548         ("*subhi3_zext"): Likewise.
549
550 2005-05-08  Stephane Carrez  <stcarrez@nerim.fr>
551
552         PR target/19051
553         * config/m68hc11/m68hc11.md ("mulqi3"): Use general_operand for
554         operand 1 and fix constraints.
555         ("mulqihi3"): Use general_operand for operand 2.
556
557 2005-05-08  Julian Brown  <julian@codesourcery.com>
558             H.J. Lu  <hongjiu.lu@intel.com>
559             Paul Brook  <paul@codesourcery.com>
560
561         * configure.ac: Set ld_vers_major, ld_vers_minor and ld_vers_patch for
562         GNU linker. Support linker version x.x.x.x.x. Require GNU linker
563         20050308/2.16.0 or newer for comdat group.
564         * configure: Regenerated.
565         * config.in: Regenerated.
566         * varasm.c (default_function_rodata_section): Put .rodata section in
567         COMDAT group when necessary.
568         (default_elf_asm_named_section): Rename HAVE_GAS_COMDAT_GROUP to
569         HAVE_COMDAT_GROUP.
570         (default_unique_section_1): Don't use .gnu.linkonce when COMDAT is
571         available.
572
573 2005-05-08  Kazu Hirata  <kazu@cs.umass.edu>
574
575         * tree-dfa.c (referenced_vars, add_referenced_var): Use VEC
576         instead of VARRAY.
577         * tree-flow.h (num_referenced_var, referenced_var): Likewise.
578         * tree-into-ssa.c (mark_def_site_blocks): Likewise.
579         * tree-ssa.c (init_tree_ssa, delete_tree_ssa): Likewise.
580         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
581
582 2005-05-08  Stephane Carrez  <stcarrez@nerim.fr>
583
584         PR target/16925
585         * config/m68hc11/m68hc11.c (m68hc11_gen_highpart): Handle split of
586         64-bit constants on 64-bit hosts.
587         (m68hc11_split_logical): Simplify.
588         (m68hc11_split_move): Likewise.
589
590 2005-05-08  Nathan Sidwell  <nathan@codesourcery.com>
591             Paolo Bonzini  <bonzini@gnu.org>
592
593         * Makefile.in (cs-tconfig.h): Pass USED_FOR_TARGET to mkconfig.sh
594         * aclocal.m4 (GCC_TARGET_TEMPLATE, AH_TEMPLATE): New.
595         * configure.ac (enable_checking): Fix typos in runtime_checking.
596         (ENABLE_RUNTIME_CHECKING): Mark as target template.
597         (xm_file): Prepend auto-host.h
598         (HAVE_GAS_HIDDEN, HAVE_LD_EH_FRAME_HDR): Mark as target template.
599         * mkconfig.sh: Do not automatically define USED_FOR_TARGET in
600         tconfig.h.
601         * crtstuff.c: Do not include auto-host.h.
602         (IN_LIBGCC2): Do not define.
603         * gcov-io.h: Include tconfig.h, not auto-host.h.
604         * libgcc2.c: Do not include auto-host.h.
605         (abort): Do not undefine.
606         * libgcov.c: Remove unneeded comment about config.h.
607         * unwind-dw2-fde-glibc.c: Do not inlude auto-host.h.
608         * config.in, configure: Regenerated.
609         
610 2005-05-08  Nathan Sidwell  <nathan@codesourcery.com>
611             Falk Hueffner  <falk@debian.org>
612
613         * config/alpha/alpha.c (tls_symbolic_operand_1): Use gcc_assert
614         and gcc_unreachable as appropriate.
615         (get_aligned_mem, get_unaligned_address,
616         alpha_emit_set_long_const, alpha_emit_conditional_branch,
617         alpha_emit_setcc, alpha_emit_conditional_move,
618         alpha_lookup_xfloating_lib_func, alpha_compute_xfloating_mode_arg,
619         alpha_emit_xfloating_libcall, alpha_split_tfmode_pair,
620         alpha_expand_unaligned_load, alpha_expand_block_move,
621         alpha_expand_zap_mask, get_trap_mode_suffix,
622         get_round_mode_suffix, get_some_local_dynamic_name,
623         print_operand_address, function_arg, alpha_return_in_memory,
624         function_value, alpha_expand_builtin,
625         alpha_initial_elimination_offset, alpha_expand_epilogue,
626         summarize_insn, alpha_handle_trap_shadows, alphaev5_insn_pipe,
627         alphaev5_next_group, alpha_align_insns,
628         unicosmk_initial_elimination_offset, unicosmk_unique_section,
629         unicosmk_ssib_name): Likewise.
630         * config/alpha/alpha.h (ASM_OUTPUT_ADDR_VEC_ELT): Likewise.
631         * config/alpha/unicosmk.h (TRAMPOLINE_TEMPLATE,
632         ASM_OUTPUT_ADDR_DIFF_ELT, ASM_OUTPUT_ADDR_DIFF_VEC): Likewise.
633         * config/alpha/vms.h (INITIAL_ELIMINATION_OFFSET,
634         ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
635         * config/alpha/alpha.md (*divmodsi_internal_er,
636         *divmoddi_internal_er, ashldi3, *insxl, sibcall, call_osf,
637         call_nt, call_umk, call_vms, call_value, sibcall_value,
638         call_value_osf, call_value_nt, call_value_vms, call_value_umk,
639         *call_vms_1, *movmemdi_1, *clrmemdi_1, *call_value_vms_1): Likewise.
640         * config/alpha/predicates.md (input_operand): Likewise.
641
642 2005-05-08  Nathan Sidwell  <nathan@codesourcery.com>
643
644         * config/frv/frv.c (frv_default_flags_for_cpu): Use gcc_assert and
645         gcc_unreachable, as appropriate.
646         (frv_function_prologue, frv_alloc_temp_reg,
647         frv_initial_elimination_offset, frv_expand_block_move,
648         frv_expand_block_clear, frv_print_operand_jump_hint,
649         frv_legitimize_tls_address, unspec_got_name, frv_emit_move,
650         frv_emit_movsi, frv_split_cond_move, frv_split_minmax,
651         frv_ifcvt_modify_insn, frv_ifcvt_modify_final,
652         frv_adjust_field_align, frv_insn_unit, frv_cond_flags,
653         frv_sort_insn_group, frv_reorder_packet, frv_matching_accg_mode,
654         frv_in_small_data_p, frv_asm_out_constructor,
655         frv_asm_out_destructor, frv_output_dwarf_dtprel): Likewise.
656         * config/frv/frv.md (reload_incc_fp, *cond_exec_si_binary1,
657         *cond_exec_si_binary2, *cond_exec_si_divide, *cond_exec_si_unary1,
658         *cond_exec_sf_conv, *cond_exec_sf_add, call, sibcall, call_value,
659         sibcall_value, casesi): Likewise.
660
661         * config/mn10300/mn10300.c (print_operand): Use gcc_assert and
662         gcc_unreachable as appropriate.
663         (print_operand_address, mn10300_print_reg_list, expand_prologue,
664         expand_epilogue, notice_update_cc, initial_offset,
665         mn10300_address_cost_1): Likewise.
666         * config/mn10300/mn10300.md: Likewise.
667         (absdf2, abssf2, negdf2, negsf2): Likewise.
668
669 2005-05-08  Richard Sandiford  <rsandifo@redhat.com>
670
671         PR target/21416
672         * config/mips/mips.c (mips_emit_compare): Don't reverse UNGE and UNGT
673         comparisons.
674         * config/mips/mips.md (swapped_fcond): New code macro and attribute.
675         (sgt_<mode>, sge_<mode>): Generalize to all members of swapped_fcond,
676         including sunge_<mode> and sungt_<mode>.
677
678 2005-05-08  Richard Sandiford  <rsandifo@redhat.com>
679
680         * integrate.h (get_hard_reg_initial_val): Change type of register
681         parameter from int to unsigned int.
682         (has_hard_reg_initial_val): Likewise.
683         * integrate.c (get_hard_reg_initial_val): Likewise.
684         (has_hard_reg_initial_val): Likewise.  Remove cast to unsigned int.
685
686 2005-05-08  Kazu Hirata  <kazu@cs.umass.edu>
687
688         * except.c (eh_status): Change the type of ttype_data to
689         VEC(tree,gc)*.
690         (add_ttypes_entry, assign_filter_values,
691         output_function_exception_table): Use VEC instead of VARRAY.
692
693 2005-05-07  David Edelsohn  <edelsohn@gnu.org>
694
695         * config/rs6000/rs6000.md (popcount<mode>2): Fix non-C90 constant.
696
697 2005-05-07  Paul Brook  <paul@codesourcery.com>
698
699         * Makefile.in: Fix dependencies.
700         (GCOV_IO_H, VARRAY_H): Set.
701
702 2005-05-07  Anthony Green  <green@redhat.com>
703
704         PR bootstrap/21403
705         * configure.ac (STMP_FIXPROTO): Fix [ ] consumption problem in
706         x$STMP_FIXPROTO test.
707         * configure: Rebuilt.
708
709 2005-05-07  Joseph S. Myers  <joseph@codesourcery.com>
710
711         * config/pa/pa-hpux11.h (TARGET_OS_CPP_BUILTINS): Do not define
712         inappropriate feature test macros if flag_iso.
713
714 2005-05-07  Joseph S. Myers  <joseph@codesourcery.com>
715
716         * config/ia64/hpux.h (NO_IMPLICIT_EXTERN_C): Define.
717
718 2005-05-07  Hans-Peter Nilsson  <hp@axis.com>
719
720         PR target/21441
721         * config/cris/cris.md ("*movdi_insn", "*mov_sidesisf_biap")
722         ("*mov_sidesisf", "*mov_sidesisf_biap_mem", "*mov_sidesisf_mem"):
723         Handle moved operand being in special register.
724         ("smulsi3_highpart", "umulsi3_highpart"): Change .error into
725         presumed working insn.
726         (mover2side): Add FIXME.
727
728 2005-05-07  Richard Sandiford  <rsandifo@redhat.com>
729
730         * integrate.c (get_func_hard_reg_initial_val): Delete.
731         (has_func_hard_reg_initial_val): Delete.
732         (get_hard_reg_initial_val): Inline the old implementation of
733         get_func_hard_reg_initial_val.  Use has_hard_reg_initial_val
734         instead of has_func_hard_reg_initial_val to test for an existing
735         pseudo.  Only create an rtx if a new initial value entry is needed.
736         (has_hard_reg_initial_val): Scan the initial value list directly.
737         Don't create an rtx.
738
739 2005-05-07  David Edelsohn  <edelsohn@gnu.org>
740
741         * config.gcc ({powerpc,rs6000}-ibm-aix*): Remove rs6000/aix.opt
742         from extra_options.
743         * config.in (HAVE_AS_POPCNTB): New.
744         * configure.ac (HAVE_AS_MFCRF): Add .machine "pwr5" to AIX test.
745         (HAVE_AS_POPCNTB): New.
746         * configure: Regenerated.
747         * config/rs6000/aix.h (TARGET_XL_COMPAT): Delete.
748         * config/rs6000/rs6000.c (rs6000_override_options, power5): Add
749         MASK_POPCNTB.  Uncomment rs6000_sched_restricted_insns_priority
750         and rs6000_sched_costly_dep.
751         * config/rs6000/rs6000.h (TARGET_POPCNTB): New.
752         (TARGET_XL_COMPAT): Delete.
753         * config/rs6000/rs6000.md (UNSPEC_POPCNTB): New.
754         (popcount<mode>2): New.
755         (popcntb<mode>2): New.
756         * config/rs6000/rs6000.opt (mpopcntb): New.
757
758         * opt-functions.awk (var_set): Emit OPTION_MASK_ for InverseMask
759         if variable name exists.
760
761 2005-05-07  Matt Kraai  <kraai@ftbfs.org>
762
763         * Makefile.in (c-gimplify.o): Depend on $(RTL_H) instead of rtl.h.
764
765 2005-05-07  Richard Henderson  <rth@redhat.com>
766
767         PR target/21412
768         * config/rs6000/rs6000.c (rs6000_emit_move): Look for tls addresses
769         with constant offsets.
770
771 2005-05-07  Nathan Sidwell  <nathan@codesourcery.com>
772
773         * config/v850/v850.c (print_operand): Use gcc_assert and
774         gcc_unreachable, as appropriate.
775         (print_operand_address, v850_handle_data_area_attribute,
776         v850_encode_data_area, construct_restore_jr, construct_save_jarl,
777         v850_insert_attributes, construct_prepare_instruction): Likewise.
778         * config/v850/v850.h (INITIAL_ELIMINATION_OFFSET): Likewise.
779         * config/v850/v850.md (movsicc, *sasf_1): Likewise.
780
781 2005-05-07  Kazu Hirata  <kazu@cs.umass.edu>
782
783         * tree-ssa-loop-ivcanon.c, config/i386/i386.c,
784         config/rs6000/rs6000.h: Fix comment typos.
785
786 2005-05-07  Richard Sandiford  <rsandifo@redhat.com>
787
788         * doc/invoke.texi: Remove documentation for MIPS' -mint64 option.
789         * config/mips/mips.c (TARGET_SCALAR_MODE_SUPPORTED_P): Delete.
790         (mips_scalar_mode_supported_p): Delete.
791
792 2005-05-06  Eric Christopher  <echristo@redhat.com>
793
794         * config/mips/mips.opt: Remove -mint64 option.
795         * config/mips/mips.c (override_options): Remove -mint64
796         handling.
797         * config/mips/mips.h (INT_TYPE_SIZE): Define to 32.
798         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove
799         64-bit integer handling.
800         * doc/invoke.texi (Option Summary): Remove -mint64 for
801         mips.
802
803 2005-05-06  Zdenek Dvorak  <dvorakz@suse.cz>
804
805         PR tree-optimization/19401
806         * tree-flow.h (tree_unroll_loops_completely): Declaration changed.
807         * tree-ssa-loop-ivcanon.c (enum unroll_level): New.
808         (estimated_unrolled_size): New function.
809         (try_unroll_loop_completely, canonicalize_loop_induction_variables,
810         tree_unroll_loops_completely): Always unroll loops if the code size
811         does not increase.
812         * tree-ssa-loop.c (tree_complete_unroll): Indicate whether all
813         loops should be unrolled completely.
814         (gate_tree_complete_unroll): Run complete unrolling unconditionally.
815
816 2005-05-06  Zdenek Dvorak  <dvorakz@suse.cz>
817
818         PR rtl-optimization/21254
819         * loop-iv.c (iv_number_of_iterations): Simplify infiniteness
820         assumptions for loops that otherwise do not roll.
821         (find_simple_exit): Prefer # of iterations that is guaranteed
822         not to be infinite.
823         * loop-unroll.c (decide_peel_once_rolling,
824         decide_peel_completely): Check whether the loop is infinite.
825
826 2005-05-06  Pat Haugen  <pthaugen@us.ibm.com>
827
828         * config/rs6000/sysv4.opt: Fix typo.
829
830 2005-05-06  Denis Vlasenko  <vda@port.imtp.ilyichevsk.odessa.ua>
831             Jakub Jelinek  <jakub@redhat.com>
832
833         PR target/21329
834         * config/i386/i386.c (ix86_expand_movmem): Don't use rep; movsb
835         for -Os if (movsl;)*(movsw;)?(movsb;)? sequence is shorter.
836         Don't use rep; movs{l,q} if the repetition count is really small,
837         instead use a sequence of movs{l,q} instructions.
838
839 2005-05-06  Jeff Law  <law@redhat.com>
840
841         PR tree-optimization/21380
842         * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not
843         thread through a block with no preds.
844
845 2005-05-06  Kazu Hirata  <kazu@cs.umass.edu>
846
847         * tree-ssa-operands.c (clobbered_v_may_defs, clobbered_vuses,
848         ro_call_vuse, fini_ssa_operands, add_call_clobber_ops,
849         add_call_read_ops): Use VEC instead of VARRAY.
850
851 2005-05-06  Nathan Sidwell  <nathan@codesourcery.com>
852
853         * config/mcore/mcore.c (mcore_print_operand_address): Use
854         gcc_assert and gcc_unreachable as appropriate.
855         (mcore_print_operand, mcore_gen_compare_reg, mcore_output_call,
856         mcore_output_andn, output_inline_const, mcore_output_move,
857         mcore_output_movedouble, mcore_expand_block_move,
858         layout_mcore_frame, mcore_initial_elimination_offset,
859         mcore_expand_prolog, mcore_mark_dllexport,
860         mcore_mark_dllimport): Likewise.
861         * config/mcore/mcore.h (switch_to_section): Likewise.
862         * config/mcore/mcore.md: Likewise.
863
864 2005-05-06  Aldy Hernandez  <aldyh@redhat.com>
865
866         * config/rs6000/linux64.h: Remove MASK_PROFILE_KERNEL, and
867         TARGET_PROFILE_KERNEL.
868
869         * config/rs6000/rs6000.c (output_profile_hook): Add comment to
870         TARGET_PROFILE_KERNEL use.
871
872 2005-05-06  Nathan Sidwell  <nathan@codesourcery.com>
873
874         * config/m32r/m32r.c (m32r_encode_section_info): Use gcc_assert
875         and gcc_unreachable, as appropriate.
876         (gen_compare, gen_split_move_double, m32r_setup_incoming_varargs,
877         m32r_expand_prologue, m32r_output_function_epilogue,
878         m32r_legitimize_pic_address, m32r_print_operand_address,
879         emit_cond_move, m32r_function_symbol,
880         m32r_output_block_move): Likewise.
881         * config/m32r/m32r.h (INITIAL_ELIMINATION_OFFSET): Likewise.
882         * config/m32r/m32r.md ( *movsi_insn, *zero_branch_insn,
883         *rev_zero_branch_insn): Likewise.
884         
885 2005-05-06  Jakub Jelinek  <jakub@redhat.com>
886
887         PR c++/20961
888         * varasm.c (merge_weak): Remove NEWDECL from WEAK_DECLS chain
889         if both NEWDECL and OLDDECL are already weak.
890
891 2005-05-06  Richard Sandiford  <rsandifo@redhat.com>
892
893         * config/rs6000/sysv4.h (EXTRA_SUBTARGET_SWITCHES): Delete.
894
895 2005-05-05  J"orn Rennecke  <joern.rennecke@st.com>
896             Kaz Kojima  <kkojima@gcc.gnu.org>
897
898         * config/sh/sh.c (sh_builtin_saveregs): Use copy_to_mode_reg
899         and plus_constant.
900
901 2005-05-05  Aldy Hernandez  <aldyh@redhat.com>
902             David Edelsohn  <edelsohn@gnu.org>
903
904         * config.gcc: Add .opt magic for the rs6000 ports.
905
906         * doc/invoke.texi: Document -mabi= option properly.  Document
907         -misel and -mno-sel.  Document -mspe and -mno-spe.  Document
908         -mvrsave and -mno-vrsave.  Document deprecation of -mspe= and
909         -misel=.
910
911         * config/rs6000/aix.h: Remove XL_COMPAT stuff.  Remove
912         SUBTARGET_SWITCHES and SUBSUBTARGET_SWITCHES.  Define
913         TARGET_XL_COMPAT.
914
915         * config/rs6000/aix.opt: New.
916         * config/rs6000/aix41.opt: New.
917         * config/rs6000/aix64.opt: New.
918         * config/rs6000/darwin.opt: New.
919         * config/rs6000/linux64.opt: New.
920         * config/rs6000/rs6000.opt: New.
921         * config/rs6000/sysv4.opt: New.
922
923         * config/rs6000/sysv4.h: Delete definitions of MASK_* and
924         associated TARGET_*.  Remove SUBTARGET_OPTIONS,
925         SUBTARGET_SWITCHES.
926         Define TARGET_USES_SYSV4_OPT.
927         * config/rs6000/aix41.h: Remove SUBSUBTARGET_SWITCHES.
928         * config/rs6000/aix43.h: Remove SUBSUBTARGET_SWITCHES.  Define
929         TARGET_USES_AIX64_OPT.
930         * config/rs6000/aix51.h: Same.
931         * config/rs6000/aix52.h: Same.
932         * config/rs6000/darwin.h: Remove SUBTARGET_SWITCHES,
933         MASK_MACHO_DYNAMIC_NO_PIC, TARGET_MACHO_DYNAMIC_NO_PIC.
934         Use TARGET_ALTIVEC_VRSAVE instead of rs6000_altivec_vrsave.
935         Define TARGET_DYNAMIC_NO_PIC as TARGET_MACHO_DYNAMIC_NO_PIC.
936         * config/rs6000/linux64.h: Use
937         rs6000_explicit_options.  Remove EXTRA_SUBTARGET_SWITCHES.
938
939         * config/rs6000/rs6000.c: Remove definitions of
940         rs6000_sched_restricted_insns_priority,
941         rs6000_long_double_size_string, rs6000_altivec_vrsave,
942         rs6000_altivec_vrsave_string, rs6000_isel, rs6000_spe,
943         rs6000_float_gprs_string, rs6000_isel_string, rs6000_spe_string,
944         rs6000_abi_string, rs6000_warn_altivec_long, rs6000_longcall,
945         rs6000_alignment_string.  Define rs6000_explicit_options.
946         (rs6000_parse_abi_options): Remove.
947         (rs6000_parse_alignment_option): Remove.
948         (rs6000_parse_float_gprs_option): Remove.
949         (rs6000_handle_option): New.  Define TARGET_HANDLE_OPTION.  Define
950         TARGET_DEFAULT_TARGET_FLAGS.
951         (rs6000_override_options): Revamp to use new .opt machinery.
952
953         * config/rs6000/rs6000.h: Remove old MASK_* and TARGET_* in favor
954         of new .opt machinery.  Remove target_flags.  Redefine
955         TARGET_MFCRF and TARGET_POWERPC64.  Remove TARGET_SWITCHES,
956         SUBTARGET_SWITCHES, TARGET_OPTIONS, SUBTARGET_OPTIONS,
957         rs6000_float_gprs_string, rs6000_isel_string, rs6000_spe_string,
958         rs6000_altivec_vrsave_string, rs6000_altivec_vrsave,
959         rs6000_longcall_switch, rs6000_default_long_calls,
960         rs6000_sched_costly_dep_str, rs6000_sched_costly_dep,
961         rs6000_warn_altivec_long, rs6000_warn_altivec_long_switch, and
962         TARGET_ALTIVEC_VRSAVE.
963
964 2005-05-05  Ralf Corsepius  <ralf.corsepius@rtems.org>
965
966         * config.gcc (hppa1.1-*-rtems*): Remove.
967         * config/pa/rtems.h: Remove.
968
969 2005-05-05  Ralf Corsepius  <ralf.corsepius@rtems.org>
970
971         * config/rs6000/t-rtems (MULTILIB_NEW_EXCEPTIONS_ONLY):
972         Exclude roe/603e multilib variants.
973
974 2005-05-04  Denis Chertykov  <denisc@overta.ru>
975
976         PR target/21284
977         * config/avr/avr.c (avr_output_addr_vec_elt): Use special section
978         for output.
979
980 2005-05-05  Richard Sandiford  <rsandifo@redhat.com>
981
982         * config.gcc (arm*-wince-pe*, arm-*-pe*, strongarm-*-pe): Add
983         arm/pe.opt to $extra_options.
984         * config/arm/arm.h (target_flags, target_fpu_name, target_fpe_name)
985         (target_float_abi_name, target_float_switch, target_abi_name)
986         (ARM_FLAG_APCS_FRAME, ARM_FLAG_POKE, ARM_FLAG_FPE, ARM_FLAG_APCS_STACK)
987         (ARM_FLAG_APCS_FLOAT, ARM_FLAG_APCS_REENT, ARM_FLAG_BIG_END)
988         (ARM_FLAG_INTERWORK, ARM_FLAG_LITTLE_WORDS, ARM_FLAG_NO_SCHED_PRO)
989         (ARM_FLAG_ABORT_NORETURN, ARM_FLAG_SINGLE_PIC_BASE)
990         (ARM_FLAG_LONG_CALLS, ARM_FLAG_THUMB, THUMB_FLAG_BACKTRACE)
991         (THUMB_FLAG_LEAF_BACKTRACE, THUMB_FLAG_CALLEE_SUPER_INTERWORKING)
992         (THUMB_FLAG_CALLER_SUPER_INTERWORKING, CIRRUS_FIX_INVALID_INSNS)
993         (TARGET_APCS_FRAME, TARGET_POKE_FUNCTION_NAME, TARGET_FPE)
994         (TARGET_APCS_STACK, TARGET_APCS_FLOAT, TARGET_APCS_REENT)
995         (TARGET_BIG_END, TARGET_INTERWORK, TARGET_LITTLE_WORDS)
996         (TARGET_NO_SCHED_PRO, TARGET_ABORT_NORETURN, TARGET_SINGLE_PIC_BASE)
997         (TARGET_LONG_CALLS, TARGET_THUMB, TARGET_CALLER_INTERWORKING)
998         (TARGET_CIRRUS_FIX_INVALID_INSNS, SUBTARGET_SWITCHES, TARGET_SWITCHES)
999         (TARGET_OPTIONS, arm_cpu_select, arm_select,  structure_size_string)
1000         (arm_pic_register_string): Delete.
1001         (TARGET_BACKTRACE): Redefine using TARGET_TPCS_LEAF_FRAME and
1002         TARGET_TPCS_FRAME.
1003         (TARGET_DEFAULT, CONDITIONAL_REGISTER_USAGE): Update mask names.
1004         * config/arm/coff.h (TARGET_DEFAULT): Likewise.
1005         * config/arm/elf.h (TARGET_DEFAULT): Likewise.
1006         * config/arm/netbsd-elf.h (TARGET_DEFAULT): Likewise.
1007         * config/arm/netbsd.h (TARGET_DEFAULT): Likewise.
1008         * config/arm/semi.h (TARGET_DEFAULT): Likewise.
1009         * config/arm/uclinux-elf.h (TARGET_DEFAULT): Likewise.
1010         * config/arm/wince-pe.h (TARGET_DEFAULT): Likewise.
1011         * config/arm/pe.h (TARGET_DEFAULT): Likewise.
1012         (TARGET_FLAG_NOP_FUN, TARGET_NOP_FUN_DLLIMPORT): Delete.
1013         (SUBTARGET_SWITCHES): Delete.
1014         * config/arm/arm.c (target_float_switch): Delete.
1015         (arm_cpu_select): Moved from config/arm/arm.h.
1016         (target_fpu_name, target_fpe_name, target_float_abi_name)
1017         (target_abi_name, structure_size_string, arm_pic_register_string)
1018         (arm_select): Make static.
1019         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
1020         (arm_handle_option): New function.
1021         (arm_override_options): Update target_flags checks for new mask names.
1022         Remove target_float_switch code.
1023         (arm_expand_prologue, thumb_expand_prologue): Check
1024         !TARGET_SCHED_PROLOG instead of TARGET_NO_SCHED_PRO.
1025         * config/arm/arm.opt, config/arm/pe.opt: New files.
1026
1027 2005-05-05  Nathan Sidwell  <nathan@codesourcery.com>
1028
1029         * config/arc/arc.c (get_arc_condition_code): Use gcc_assert &
1030         gcc_unreachable as appropriate.
1031         (arc_double_limm_p, arc_setup_incoming_varargs,
1032         arc_compute_function_type, arc_output_function_prologue,
1033         arc_output_function_epilogue, arc_eligible_for_epilogue_delay,
1034         output_shift, arc_print_operand, arc_print_operand_address,
1035         arc_final_prescan_insn): Likewise.
1036         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
1037
1038 2005-05-04  Geoffrey Keating  <geoffk@apple.com>
1039
1040         * config/rs6000/rs6000.md (P): Use TARGET_*BIT rather than
1041         comparing Pmode.
1042         (SDI): New.
1043         (cmp): Delete.
1044         (wd): New.
1045         (add<mode>3, add<mode>3_internal1, add<mode>3_internal2,
1046         add<mode>3_internal3, one_cmpl<mode>2, sub<mode>3, neg<mode>2,
1047         clz<mode>2, ctz<mode>2, ffs<mode>2): New.
1048         (addsi3, addsi3_internal1, addsi3_internal2, addsi3_internal3,
1049         (one_cmplsi2, subsi3, negsi2, clzsi2, ctzsi2, ffssi2): Remove.
1050         (adddi3, adddi3_internal1, adddi3_internal2, adddi3_internal3,
1051         (one_cmpldi2, subdi3, negdi2, clzdi2, ctzdi2, ffsdi2): Remove.
1052         (sync_compare_and_swap<mode>): Use <wd> rather than <cmp>.
1053
1054 2005-05-05  Paul Brook  <paul@codesourcery.com>
1055
1056         * Makefile.in: Replace dependencies on basic-block.h, c-pragma.h,
1057         cfgloop.h, diagnostic.h, insn-attr.h, langhooks-def.h, params.h,
1058         regs.h, system.h, tree-dump.h, tree-gimple.h, tree-scalar-evolution.h
1059         and tree-data-ref.h with *_H variables.
1060
1061 2005-05-05  Kelley Cook  <kcook@gcc.gnu.org>
1062
1063         * config/m32r/xm-m32r.h, config/m32r/xm-linux.h: Delete files.
1064
1065 2005-05-05  Kelley Cook  <kcook@gcc.gnu.org>
1066
1067         * system.h: Poison BYTEORDER and HOST_WORDS_BIG_ENDIAN.
1068
1069 2005-05-04  Gerald Pfeifer  <gerald@pfeifer.com>
1070
1071         * doc/contrib.texi (Contributors): Add Mostafa Hagog and Ayal Zaks.
1072
1073 2005-05-04 Fariborz Jahanian <fjahanian@apple.com>
1074
1075         * config/rs6000/rs6000.c (rs6000_emit_prologue): Emit
1076         setting of vrsave register for current function after
1077         call to save_world is emitted.
1078
1079 2005-05-05  Hans-Peter Nilsson  <hp@bitrange.com>
1080
1081         * config/mmix/predicates.md: New file.
1082         * config/mmix/mmix.c (mmix_symbolic_or_address_operand)
1083         (mmix_reg_or_constant_operand, mmix_reg_cc_operand)
1084         (mmix_foldable_comparison_operator, mmix_comparison_operator)
1085         (mmix_reg_or_0_operand, mmix_reg_or_8bit_operand): Remove.
1086         * config/mmix/mmix.h (PREDICATE_CODES, SPECIAL_MODE_PREDICATES):
1087         Don't define.
1088         * config/mmix/mmix.md: Include predicates.md.
1089         ("call", "call_value"): Force address to register if it isn't a
1090         mmix_symbolic_or_address_operand.
1091
1092 2005-05-04  Andrew MacLeod  <amacleod@redhat.com>
1093
1094         * tree-flow-inline.h (op_iter_init_use, op_iter_init_def): Assert that
1095         the flags are of appropriate types.
1096         (num_ssa_operands): Generalize using the generic interface.
1097         * tree-ssa-dce.c (remove_dead_stmt): Don't ask for kills on a DEF
1098         iterator.
1099
1100 2005-05-04  Richard Sandiford  <rsandifo@redhat.com>
1101
1102         * protoize.c (version_flag, quiet_flag, nochange_flag, nosave_flag)
1103         (keep_flag, local_flag, global_flag, cplusplus_flag): Make extern.
1104
1105 2005-05-04  Kazu Hirata  <kazu@cs.umass.edu>
1106
1107         * tree-outof-ssa.c (edge_leader, stmt_list,
1108         analyze_edges_for_bb): Use VEC instead of VARRAY.
1109         (init_analayze_edges_for_bb, fini_analayze_edges_for_bb): New.
1110         (perform_edge_inserts): Call init_analayze_edges_for_bb and
1111         fini_analayze_edges_for_bb.
1112
1113 2005-05-04  James E Wilson  <wilson@specifixinc.com>
1114
1115         PR driver/21112
1116         * gcc.c (process_command): In the second argv scan loop, ignore
1117         Xassembler and Xpreprocessor, along with their argument.
1118
1119 2005-05-04  Kazu Hirata  <kazu@cs.umass.edu>
1120
1121         * tree-flow-inline.h, tree-ssa-operands.c,
1122         tree-ssa-operands.h, tree-ssa-opfinalize.h:
1123         Likewise. tree-vn.c: Fix comment typos.
1124         * doc/passes.texi, doc/tree-ssa.texi: Fix typos.
1125
1126 2005-05-04  Paolo Bonzini  <bonzini@gnu.org>
1127
1128         * doc/tm.texi (Target Hooks): Document
1129         TARGET_RESOLVE_OVERLOADED_BUILTIN.
1130
1131 2005-05-04  Paul Brook  <paul@codesourcery.com>
1132
1133         * Makefile.in: Change dependencies on target.h to $(TARGET_H).
1134
1135 2005-05-04  Kazu Hirata  <kazu@cs.umass.edu>
1136
1137         * dwarf2out.c (incomplete_types, retry_incomplete_types,
1138         gen_struct_or_union_type_die, dwarf2out_init): Use VEC instead
1139         of VARRAY.
1140
1141         * loop-unroll.c (var_to_expand, analyze_insn_to_expand_var,
1142         get_expansion, expand_var_during_unrolling,
1143         insert_var_expansion_initialization,
1144         combine_var_copies_in_loop_exit, release_var_copies): Use VEC
1145         instead of VARRAY.
1146
1147         * tree-ssa-loop-ivopts.c (rewrite_address_base): Don't call
1148         update_stmt.
1149
1150 2004-05-03  Andrew Pinski  <pinskia@physics.uc.edu>
1151
1152         PR middle-end/15618
1153         * fold-const.c (fold_widened_comparison): Treat BOOLEAN_TYPE
1154         the same as INTEGER_TYPE.
1155         (fold_binary): Fold "bool_var != 0" to bool_var.
1156         Fold "bool_var == 1" to bool_var.
1157
1158 2004-05-03  Richard Henderson  <rth@redhat.com>
1159
1160         PR middle-end/21318
1161         * function.c (instantiate_virtual_regs_in_insn): Use the mode
1162         from recog_data instead of insn_data.
1163
1164 2005-05-03  DJ Delorie  <dj@redhat.com>
1165
1166         * common.opt (fdiagnostics-show-option): No variable is needed.
1167         * diagnostic.h (diagnostic_context): Add show_option_requested flag.
1168         * diagnostic.c (diagnostic_initialize): Initialize show_option_requested.
1169         (diagnostic_report_diagnostic): Test for enabled diagnostics here.
1170         Save and restore original message format.  Use flag in context
1171         instead of global.
1172         (warning): Don't test for enabled warnings here.
1173         * opts.c (common_handle_option): Handle -fdiagnostics-show-option
1174         here.
1175
1176 2005-05-04  Kelley Cook  <kcook@gcc.gnu.org>
1177
1178         * config/m32r/xm-m32r.h: Don't define HOST_WORDS_BIG_ENDIAN.
1179         * config/m32r/xm-linux.h: Don't undefine HOST_WORDS_BIG_ENDIAN.
1180         * mips-tfile.c: Use WORDS_BIG_ENDIAN instead of HOST_WORDS_BIG_ENDIAN.
1181         * aclocal.m4: Don't include accross.m4.
1182         * configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS.
1183         Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF.
1184         * configure, config.in: Regenerate.
1185         
1186 2005-05-04  Jakub Jelinek  <jakub@redhat.com>
1187
1188         PR middle-end/21265
1189         * expr.h (enum block_op_methods): Add BLOCK_OP_TAILCALL.
1190         (clear_storage): Add argument.
1191         * expr.c (emit_block_move_via_libcall, clear_storage_via_libcall):
1192         Add tailcall argument, set CALL_EXPR_TAILCALL of the CALL_EXPR to
1193         tailcall.
1194         (emit_block_move): Handle BLOCK_OP_TAILCALL method.
1195         (clear_storage): Add method argument, handle BLOCK_OP_TAILCALL.
1196         (store_expr, store_constructor): Adjust callers.
1197         * builtins.c (expand_builtin_memcpy): Pass BLOCK_OP_TAILCALL
1198         to emit_block_move if CALL_EXPR_TAILCALL (exp).
1199         (expand_builtin_memmove): Add ORIG_EXP argument, copy
1200         CALL_EXPR_TAILCALL from ORIG_EXP to the new CALL_EXPR.
1201         (expand_builtin_bcopy): Replace ARGLIST and TYPE arguments
1202         with EXP.  Pass EXP to expand_builtin_memmove.
1203         (expand_builtin_memset): Add ORIG_EXP argument, pass
1204         BLOCK_OP_TAILCALL to clear_storage if CALL_EXPR_TAILCALL (orig_exp).
1205         (expand_builtin_bzero): Replace ARGLIST argument with EXP.
1206         Pass EXP to expand_builtin_memset.
1207         (expand_builtin_strcmp): Copy CALL_EXPR_TAILCALL from EXP to
1208         the new CALL_EXPR.
1209         (expand_builtin_strncmp): Likewise.
1210         (expand_builtin_printf): Replace ARGLIST argument with EXP.
1211         Copy CALL_EXPR_TAILCALL from EXP to the new CALL_EXPR.
1212         (expand_builtin_fprintf): Likewise.
1213         (expand_builtin): Adjust calls to
1214         expand_builtin_{memmove,bcopy,memset,bzero,{,f}printf}.
1215
1216         * config/i386/i386.c (ix86_expand_vector_set): Fix setting 3rd and 4th
1217         item in V4SF mode.
1218
1219         PR rtl-optimization/21239
1220         * combine.c (combine_simplify_rtx) <case VEC_SELECT>: Fix a typo.
1221
1222 2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>
1223
1224         * tree-flow.h (tree_ann_common_d): Move aux to ...
1225         (stmt_ann_d): ... here.
1226         * tree-ssa-loop-im.c (LIM_DATA, determine_invariantness_stmt,
1227         move_computations_stmt, schedule_sm): Update references to
1228         aux.
1229         * tree-vectorizer.h (set_stmt_info, vinfo_for_stmt): Likewise.
1230
1231         * tree-cfg.c (remove_bb): Remove a redundant call to
1232         set_bb_for_stmt.
1233         * tree-if-conv.c (replace_phi_with_cond_modify_expr):
1234         Likewise.
1235
1236 2005-05-03  Richard Henderson  <rth@redhat.com>
1237
1238         * config/rs6000/rs6000.c: Remove conflict markers.
1239
1240         * cfg.c (dump_flow_info): Use max_reg_num, not max_regno.
1241
1242 2005-05-03  James E Wilson  <wilson@specifixinc.com>
1243
1244         * dwarf2out.c (lookup_filename): Call maybe_emit_file.
1245
1246 2005-05-03  DJ Delorie  <dj@redhat.com>
1247
1248         * c-decl.c (store_parm_decls_oldstyle): Let diagnostic machinery
1249         decide if the warning will be printed.
1250         * calls.c (expand_call): Likewise.
1251         * function.c (init-function_start): Likewise.
1252
1253         * common.opt (-fdiagnostics-show-option): New.
1254         * opts.c (option_enabled): Accept the option index instead of a
1255         pointer to the option descriptor.
1256         * opts.h (option_enabled): Likewise.
1257         * toplev.c (print_switch_values): Pass option index, not option
1258         descriptor.
1259         * diagnostic.h (diagnostic_info): Add option_index.
1260         * diagnostic.c: Include opts.h.
1261         (diagnostic_set_info): Initialize option_index.
1262         (diagnostic_report_diagnostic): Amend option name if appropriate.
1263         (warning): Check to see if the specified warning is enabled.
1264         Store option index.
1265         * doc/invoke.texi (-fdiagnostics-show-options): Document.
1266
1267 2005-05-03  Richard Henderson  <rth@redhat.com>
1268
1269         * config/rs6000/rs6000.h (REG_CLASS_CONTENTS): Fix ALL_REGS and
1270         SPEC_OR_GEN_REGS definitions.
1271
1272 2005-05-03  Alexandre Oliva  <aoliva@redhat.com>
1273
1274         PR target/16888
1275         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Clear reg names
1276         for unavailable registers.
1277
1278 2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>
1279
1280         * tree-cfg.c (tree_forwarder_block_p): Fix a typo.
1281
1282         * cfglayout.c (block_locators_blocks,
1283         insn_locators_initialize, insn_scope): Use VEC instead of
1284         VARRAY.
1285
1286         * tree-mudflap.c (deferred_static_decls, mudflap_enqueue_decl,
1287         mudflap_finish_file, mudflap_finish_file): Use VEC instead of
1288         VARRAY.
1289
1290 2005-05-03  Eric Botcazou  <ebotcazou@libertysurf.fr>
1291
1292         * config/sparc/predicates.md (const_compl_high_operand): New.
1293         * config/sparc/sparc.c (sparc_emit_set_safe_HIGH64): Rename into
1294         gen_safe_HIGH64.
1295         (sparc_emit_set_const64_quick1): Adjust for above change.
1296         (sparc_emit_set_const64_quick2): Likewise.
1297         (sparc_emit_set_const64_longway): Likewise.
1298         (sparc_emit_set_const64): Likewise.
1299         * config/sparc/sparc.md (movhi_const64_special, movsi_const64_special,
1300         movdi_const64_special): Delete.
1301         (logical constant splitters): Use const_compl_high_operand.
1302
1303 2005-05-03  Richard Guenther  <rguenth@gcc.gnu.org>
1304
1305         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Use STRIP_TYPE_NOPS
1306         rather than STRIP_NOPS.
1307
1308 2005-05-03  Jakub Jelinek  <jakub@redhat.com>
1309
1310         PR rtl-optimization/21330
1311         * loop-unswitch.c (may_unswitch_on): Set *cinsn only when
1312         returning non-NULL.
1313         (unswitch_single_loop): Clear cinsn when retrying.
1314
1315         PR target/21297
1316         * config/i386/i386.c (legitimize_address): When canonicalizing
1317         ASHIFT into MULT, multiply by 1 << shift_count instead of
1318         1 << log2 (shift_count).
1319
1320 2005-05-03  Andrew MacLeod  <amacleod@redhat.com>
1321
1322         * lambda-code.c (gcc_loop_to_lambda_loop, 
1323         lambda_loopnest_to_gcc_loopnest, phi_loop_edge_uses_def,
1324         stmt_is_bumper_for_loop, perfect_nest_p, replace_uses_of_x_with_y): Use
1325         generic operand interface.
1326         * tree-data-ref.c (find_data_references_in_loop): Use generic interface.
1327         * tree-dfa.c (collect_dfa_stats_r, mark_new_vars_to_rename): Use
1328         generic operand interface.
1329         * tree-flow-inline.h (delink_imm_use, link_imm_use_to_list, 
1330         link_imm_use, link_imm_use_stmt, relink_imm_use, relink_imm_use_stmt,
1331         next_safe_imm_use, has_zero_uses, has_single_use, single_imm_use,
1332         num_imm_uses): Use ssa_use_operand_t.
1333         (get_def_ops, get_use_ops, get_v_may_def_ops, get_vuse_ops,
1334         get_v_must_def_ops): Delete.
1335         (get_def_from_ptr, get_phi_result_ptr): Get def directly now.
1336         (get_use_op_ptr, get_def_op_ptr, get_v_may_def_result_ptr,
1337         get_v_may_def_op_ptr, get_vuse_op_ptr, get_v_must_def_result_ptr,
1338         get_v_must_def_kill_ptr): Delete.
1339         (delink_stmt_imm_use): Move and use new operand interface.
1340         (op_iter_next_use, op_iter_next_def, op_iter_next_tree, op_iter_init,
1341         op_iter_next_tree): Use new operand implementation.
1342         (clear_and_done_ssa_iter): New.  Initialize a blank operand iterator.
1343         (op_iter_init_use, op_iter_init_def, op_iter_init_tree): Add iterator 
1344         type check.
1345         (op_iter_next_mustdef, op_iter_next_maydef, 
1346         op_iter_next_must_and_may_def): Delete. Replace with...
1347         (op_iter_next_maymustdef): New.  Combine must and may next operations.
1348         (op_iter_init_maydef, op_iter_init_mustdef, 
1349         op_iter_init_must_and_may_def): Use new interface.
1350         (single_ssa_tree_operand ): New.  Process single operands only as trees.
1351         (single_ssa_use_operand): New.  Process single operands only as uses.
1352         (single_ssa_def_operand): New.  Process single operands only as defs.
1353         (zero_ssa_operands): New.  Return TRUE if there are zero operands of the
1354         specified types.
1355         (num_ssa_operands): New.  Count the number of specified operands.
1356         (compare_ssa_operands_equal): New.  Compare two statements' operands.
1357         (single_phi_def): New.  Return true if PHI has one def of the specified
1358         operand type.
1359         (op_iter_init_phiuse): New.  Initialize the iterator for PHI arguments.
1360         (op_iter_init_phidef): New.  Initialize the iterator for the PHI def.
1361         * tree-flow.h (struct immediate_use_iterator_d): Use ssa_use_operand_t.
1362         (struct stmt_ann_d): Operands field no longer require GTY().
1363         (vn_compute, vn_lookup_or_add, vn_add, vn_lookup): Change prototype.
1364         * tree-into-ssa.c (mark_def_sites): Use SSA_OP_VMUSTKILL.
1365         * tree-outof-ssa.c (check_replaceable, find_replaceable_in_bb, 
1366         dump_replaceable_exprs, rewrite_trees): Use generic interface.
1367         * tree-phinodes.c (make_phi_node, release_phi_node, resize_phi_node): 
1368         Use use_operand_p instead of ssa_imm_use_t *.
1369         * tree-pretty-print.c (dump_vops): check if operands are active before
1370         dumping virtual operands.
1371         * tree-sra.c (sra_walk_function): Use ZERO_SSA_OPERANDS.
1372         * tree-ssa-ccp.c (likely_value): Use ZERO_SSA_OPERANDS.
1373         (ccp_fold): Use new interface.
1374         (ccp_visit_stmt): Remove unused variables and code.
1375         (convert_to_gimple_builtin): Insert statements before calling 
1376         mark_new_vars_to_rename.
1377         * tree-ssa-copy.c (stmt_may_generate_copy): Use ZERO_SSA_OPERANDS.
1378         (copy_prop_visit_cond_stmt): Use generic interface.
1379         * tree-ssa-dom.c (struct expr_hash_elt): Use stmt pointer, not the 
1380         annotation in table.
1381         (thread_across_edge): Use generic interface.
1382         (initialize_hash_element): Initialzie with stmt, not annotation.
1383         (eliminate_redundant_computations): Use generic interface.
1384         (record_equivalences_from_stmt): Pass stmt, not annotation.
1385         (avail_expr_hash, real_avail_expr_hash, avail_expr_eq): Use generic
1386         interface.
1387         * tree-ssa-dse.c (dse_optimize_stmt): Use ZERO_SSA_OPERANDS.
1388         * tree-ssa-loop-ivopts.c (find_invariants_stmt, 
1389         find_interesting_uses_stmt, protect_loop_closed_ssa_form_use): Use 
1390         generic operand interface.
1391         * tree-ssa-loop-niter.c (chain_of_csts_start, get_val_for): Use generic
1392         interface.
1393         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Use Generic operand
1394         Interface.
1395         * tree-ssa-operands.c (struct opbuild_list_d): New.  Operand build type.
1396         (build_defs, build_uses, build_v_may_defs, build_vuses, 
1397         build_v_must_defs): Change type to struct opbuild_list_d.
1398         (ops_active): New.  Operands active boolean.
1399         (operand_memory, operand_memory_index): New.  Operand memory managers.
1400         (allocate_def_optype, allocate_use_optype, allocate_v_may_def_optype,
1401         allocate_vuse_optype, allocate_v_must_def_optype): Delete.
1402         (free_uses, free_defs, free_vuses, free_v_may_defs, free_v_must_defs): 
1403         Change from functions to static variable list heads.
1404         (opbuild_initialize_virtual): New.  Initialize a virtual build list.
1405         (opbuild_initialize_real): New.  Initialize a virtual build list.
1406         (opbuild_free): New.  Free a build list.
1407         (opbuild_num_elems): New.  Number of items in a list.
1408         (opbuild_append_real): New.  Add a real (tree *) operand.
1409         (opbuild_append_virtual): New.  Add and sort a virtual (tree) operand.
1410         (opbuild_first): New.  Return first element index in a list.
1411         (opbuild_next): New.  Return next element in a list.
1412         (opbuild_elem_real): New.  Return real element.
1413         (opbuild_elem_virtual): New.  Return virtual element.
1414         (opbuild_elem_uid): New.  Return UID of virtual element.
1415         (opbuild_clear): New.  Reset an operand list.
1416         (opbuild_remove_elem): New.  Remove an element form a list.
1417         (ssa_operands_active): New.  Return true if operand cache is active.
1418         (init_ssa_operands, fini_ssa_operands): Initialize new implementation.
1419         (ssa_operand_alloc): New.  Allocate memory from an operand chunk.
1420         (correct_use_link): Use use_operand_p.
1421         (finalize_ssa_uses, finalize_ssa_v_may_defs, finalize_ssa_defs,
1422         finalize_ssa_vuses, finalize_ssa_v_must_defs): New implmentation. 
1423         (cleanup_v_may_defs): Use new implmentation.
1424         (finalize_ssa_stmt_operands, start_ssa_stmt_operands): New 
1425         implementation.
1426         (append_def, append_use, append_v_may_def, append_vuse, 
1427         append_v_must_def): Call opbuild_append routine instead of using varray.
1428         (build_ssa_operands): Simplify to simply use stmt, don't maintain a 
1429         global parse_old_ops variable.
1430         (free_ssa_operands): New implementation.
1431         (update_stmt_operands): Move.  Change argument to build_ssa_operands.
1432         (copy_virtual_operands): Move. New generic implementation.
1433         (create_ssa_artficial_load_stmt): Move. New implementation.
1434         (swap_tree_operands): Update for new implementation.
1435         (get_expr_operands): Add stmt parameter to calls to swap_tree_operands.
1436         (add_call_clobber_ops, add_call_read_ops): Initialize opbuild list
1437         rather than a varray.
1438         (verify_imm_links): Use use_operand_p.
1439         (dump_immediate_uses_for): If the immediate use variable is a virtual 
1440         variable, show the virtual ops in the stmt.
1441         * tree-ssa-operands.h (def_operand_p): No longer a structure.
1442         (NULL_DEF_OPERAND_P): Now a #define.
1443         (def_optype_d, use_optype_d, v_def_use_operand_type, v_may_def_optype_d,
1444         vuse_operand_type, vuse_optype_d, v_must_def_optype_d): Delete.
1445         (def_optype_d, use_optype_d, maydef_optype_d, vuse_optype_d,
1446         mustdef_optype_d): New.  Use Linked list representation.
1447         (SSA_OPERAND_MEMORY_SIZE): New.  Size of operand memory chunk.
1448         (struct ssa_operand_memory_d): New.  Allocated Chunk node.
1449         (struct stmt_operands_d): Change to new pointers that are not GTY.
1450         (STMT_USE_OPS, NUM_USES, SET_USE_OP, STMT_DEF_OPS, NUM_DEFS, SET_DEF_OP,
1451         STMT_V_MAY_DEF_OPS, NUM_V_MAY_DEFS, SET_V_MAY_DEF_RESULT,
1452         SET_V_MAY_DEF_OP, STMT_VUSE_OPS, NUM_VUSES, SET_VUSE_OP,
1453         STMT_V_MUST_DEF_OPS, NUM_V_MUST_DEFS, SET_V_MUST_DEF_RESULT, 
1454         SET_V_MUST_DEF_KILL): Delete.
1455         (V_MAY_DEF_OPS, V_MAY_DEF_RESULT_PTR, V_MAY_DEF_RESULT, 
1456         V_MAY_DEF_OP_PTR, V_MAY_DEF_OP): Rename to MAYDEF_*.
1457         (V_MUST_DEF_OPS, V_MUST_DEF_RESULT_PTR, V_MUST_DEF_RESULT, 
1458         V_MUST_DEF_KILL_PTR, V_MUST_DEF_KILL): Rename to MUSTDEF_*.
1459         (enum ssa_op_iter_type): Operand iterator typechecking values.
1460         (struct ssa_operand_iterator_d): Use linked lists of operands.
1461         (SSA_OP_VMUSTDEFKILL): Rename to SSA_OP_VMUSTKILL.
1462         (FOR_EACH_SSA_MAYDEF_OPERAND, FOR_EACH_SSA_MUSTDEF_OPERAND,
1463         FOR_EACH_SSA_MUST_AND_MAY_DEF_OPERAND): Use op_iter_next_maymustdef.
1464         (FOR_EACH_PHI_ARG): New.  Iterate over PHI arguments.
1465         (FOR_EACH_PHI_OR_STMT_USE): New.  Iterate over PHI or stmt uses.
1466         (FOR_EACH_PHI_OR_STMT_DEF): New.  Iterate over PHI or stmt defs.
1467         (SINGLE_SSA_TREE_OPERAND, SINGLE_SSA_USE_OPERAND, 
1468         SINGLE_SSA_DEF_OPERAND, ZERO_SSA_OPERANDS, NUM_SSA_OPERANDS): New.
1469         * tree-ssa-opfinalize.h: New.  Function templates for expansion.
1470         (FINALIZE_ALLOC): Expands into alloc_def, alloc_use, alloc_maydef,
1471         alloc_vuse, and alloc_mustdef.
1472         (FINALIZE_FUNC): Expands into finalize_ssa_def_ops, 
1473         finalize_ssa_use_ops, finalize_ssa_v_may_def_ops, finalize_ssa_vuse_ops,
1474         and finalize_ssa_v_must_def_ops.
1475         * tree-ssa-pre.c (add_to_sets): Pass tree to vn_add.
1476         (create_value_expr_from): Use stmt not vuse_optype as a parameter. Pass
1477         stmt around.
1478         (compute_avail): Use generic iterator interface.
1479         * tree-ssa-propagate.c (first_vdef): Use generic operand interface.
1480         (stmt_makes_single_load, stmt_makes_single_store): Use 
1481         ZERO_SSA_OPERANDS.
1482         * tree-ssa-sink.c (is_hidden_global_store): Use ZERO_SSA_OPERANDS.
1483         (statement_sink_location): Use generic interface.
1484         * tree-ssa.c (verify_ssa):  Use %p in fprintf.  Use generic interface.
1485         (delete_tree_ssa): Don't call release_defs.  Call release_ssa_name and
1486         reset the immediate use link nodes.
1487         (stmt_references_memory_p): Use ZERO_SSA_OPERANDS.
1488         * tree-ssanames.c (make_ssa_name): Use use_operand_p.
1489         * tree-tailcall.c (find_tail_calls): Use ZERO_SSA_OPERANDS.
1490         (eliminate_tail_call): Use generic operand interface.
1491         * tree-vect-analyze.c (vect_analyze_data_refs): Use ZERO_SSA_OPERANDS.
1492         (vect_mark_relevant, vect_mark_stmts_to_be_vectorized): Use generic 
1493         interface.
1494         * tree-vect-transform.c (update_vuses_to_preheader): Use generic 
1495         interface.
1496         * tree-vectorizer.c (rename_variables_in_bb): Use generic interface.
1497         * tree-vn.c (struct val_expr_pair_d): Cache statment pointer instead of
1498         vuse_optype.
1499         (vn_compute, val_expr_pair_hash, vn_add, vn_lookup, vn_lookup_or_add): 
1500         Use statement pointer instead of vuse_optype.  Use generic interface.
1501         * tree-vrp.c (maybe_add_assert_expr): Use generic interface.
1502         (stmt_interesting_for_vrp, vrp_visit_stmt): Use ZERO_SSA_OPERANDS.
1503         * tree.h (struct ssa_imm_use_d): Renamed to ssa_use_operand_d.
1504         (tree_ssa_name, phi_arg_d): Use ssa_use_operand_d.
1505         * doc/tree-ssa.texi: Update documentation for operand interface.
1506
1507 2005-05-03  Nathan Sidwell  <nathan@codesourcery.com>
1508
1509         * config/darwin.c (machopic_define_symbol): Use gcc_assert or
1510         gcc_unreachable as appropriate.
1511         (machopic_function_base_name, machopic_indirect_data_reference,
1512         machopic_legitimize_pic_address, darwin_non_lazy_pcrel): Likewise.
1513         * config/host-darwin.c (darwin_gt_pch_use_address): Likewise
1514         * config/rs6000/altivec.md (*mov<mode>_internal,
1515         build_vector_mask_for_load): Likewise.
1516         * config/rs6000/darwin.md (movdf_low_si, movdf_low_di,
1517         *call_nonlocal_darwin64, *call_value_nonlocal_darwin64,
1518         *sibcall_symbolic_64, *sibcall_value_symbolic_64): Likewise.
1519         * config/rs6000/predicates.md (easy_fp_constant,
1520         logical_operand): Likewise.
1521         * config/rs6000/rs6000.c (spe_expand_predicate_builtin,
1522         compute_save_world_info, rs6000_emit_prologue,
1523         rs6000_output_mi_thunk): Reword comments to avoid 'abort'.
1524         * config/rs6000/host-darwin.c (segv_handler): Use fancy_abort
1525         directly.
1526
1527 2005-05-03  Uros Bizjak  <uros@kss-loka.si>
1528
1529         PR middle-end/21282
1530         * convert.c (convert_to_integer): Convert ceil and floor in
1531         c99 mode only.
1532
1533 2005-04-29  Geoffrey Keating  <geoffk@apple.com>
1534
1535         PR target/20813
1536         * config/rs6000/rs6000.md (floatsidf2_internal): Merge to create
1537         define_insn_and_split.  Split only when memory operand is
1538         offsettable.  Use adjust_address rather than plus_constant.
1539         (floatunssidf2_internal): Likewise.
1540         (fix_truncdfsi2_internal): Split only when memory operand is
1541         offsettable.  Use adjust_address rather than plus_constant.
1542         (fix_trunctfsi2_internal): Likewise.
1543         (floatsidf2_internal): Likewise.
1544
1545 2005-05-02  Diego Novillo  <dnovillo@redhat.com>
1546
1547         * tree-vrp.c (set_value_range_to_nonnull): Declare inline.
1548         (set_value_range_to_null): Likewise.
1549         (set_value_range_to_varying): New function.  Use it in all
1550         call sites that used to call set_value_range (vr, VR_VARYING, ...).
1551         (extract_range_from_assert): If the integral type has a
1552         super-type, and LIMIT is not within MIN and MAX values of that
1553         type, set the resulting range to VR_VARYING.
1554
1555 2005-05-02  Hans-Peter Nilsson  <hp@bitrange.com>
1556
1557         * config/mmix/mmix.opt: New file.
1558         * config/mmix/mmix.h: Move options-related comments to mmix.opt.
1559         (mmix_cc1_ignored_option): Don't declare.
1560         (TARGET_OPTIONS, TARGET_MASK_LIBFUNCS, TARGET_MASK_ABI_GNU)
1561         (TARGET_MASK_FCMP_EPSILON, TARGET_MASK_ZERO_EXTEND)
1562         (TARGET_MASK_KNUTH_DIVISION, TARGET_MASK_TOPLEVEL_SYMBOLS)
1563         (TARGET_MASK_BRANCH_PREDICT, TARGET_MASK_USE_RETURN_INSN)
1564         (TARGET_MASK_BASE_ADDRESSES, TARGET_LIBFUNC, TARGET_ABI_GNU,
1565         (TARGET_FCMP_EPSILON, TARGET_ZERO_EXTEND, TARGET_KNUTH_DIVISION)
1566         (TARGET_TOPLEVEL_SYMBOLS, TARGET_BRANCH_PREDICT)
1567         (TARGET_BASE_ADDRESSES, TARGET_USE_RETURN_INSN, TARGET_SWITCHES):
1568         Don't define.
1569         (TARGET_DEFAULT): Change TARGET_MASK_... to MASK_...
1570         * config/mmix/mmix.c (mmix_cc1_ignored_option): Remove.
1571         (TARGET_DEFAULT_TARGET_FLAGS): Override default.
1572
1573 2005-05-02  Joseph S. Myers  <joseph@codesourcery.com>
1574
1575         PR c/15698
1576         * c-tree.h (C_DECL_BUILTIN_PROTOTYPE): New.
1577         * c-decl.c (current_function_prototype_built_in,
1578         current_function_prototype_arg_types): New.
1579         (merge_decls): Keep source location of prototype followed by
1580         nonprototype declaration.  Update C_DECL_BUILTIN_PROTOTYPE.
1581         (builtin_function): Set C_DECL_BUILTIN_PROTOTYPE.
1582         (start_function): Always set current_function_prototype_locus,
1583         current_function_prototype_built_in and
1584         current_function_prototype_arg_types.  Check for external
1585         prototype whether or not visible for external function and set
1586         current_function_prototype_arg_types accordingly.
1587         (store_parm_decls_oldstyle): Use
1588         current_function_prototype_arg_types for checking old-style
1589         definition against prototype.  Give warnings only if
1590         current_function_prototype_built_in).
1591
1592 2005-05-02  Daniel Jacobowitz  <dan@codesourcery.com>
1593
1594         * ggc.h (ggc_alloc_zone_pass_stat): New macro.
1595         (ggc_alloc_zone_stat): Don't define.
1596         * ggc-zone.c (ggc_alloc_typed_stat, ggc_alloc_stat): Use
1597         ggc_alloc_zone_pass_stat.
1598         * rtl.c (rtx_alloc_stat, shallow_copy_rtx_stat): Likewise.
1599         * tree.c (make_node_stat, copy_node_stat, make_tree_binfo_stat)
1600         (make_tree_vec_stat, tree_cons_stat, build1_stat): Likewise.
1601
1602 2005-05-02  Daniel Jacobowitz  <dan@codesourcery.com>
1603
1604         * calls.c (expand_call): Handle current_function_pretend_args_size
1605         when checking for sibcalls.
1606
1607 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
1608
1609         PR tree-optimization/21294
1610         * tree-vrp.c (vrp_expr_computes_nonzero): New.
1611         (extract_range_from_expr): Call vrp_expr_computes_nonzero.
1612
1613 2005-05-02  Janis Johnson  <janis187@us.ibm.com>
1614
1615         PR 19985
1616         * gcov-io.h: Declare gcov external functions hidden.
1617
1618 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
1619
1620         * tree-ssa-uncprop.c (equiv_hash_elt, remove_equivalence,
1621         record_equiv, tree_ssa_uncprop, uncprop_into_successor_phis):
1622         Use VEC instead of VARRAY.
1623         (equiv_free): New.
1624
1625         * tree-ssa-sink.c (nearest_common_dominator_of_uses): Factor
1626         out common code.
1627
1628 2005-05-02  Paolo Bonzini  <bonzini@gnu.org>
1629
1630         * c-common.c (resolve_overloaded_builtin): Forward to target
1631         hook for BUILT_IN_MD built-ins.
1632         * c-typeck.c (finish_call_expr): Call resolve_overloaded_builtin
1633         for all types of built-in.
1634         * target-def.h (TARGET_RESOLVE_OVERLOADED_BUILTIN): New.  Use it
1635         in the definition of the target hooks struct.
1636         * target.h (struct gcc_target): Add resolve_overloaded_builtin.
1637         * config/rs6000/altivec.h: Rewritten.
1638         * config/rs6000/rs6000-c.c (struct altivec_builtin_types,
1639         altivec_resolve_overloaded_builtin, altivec_build_resolved_builtin,
1640         rs6000_builtin_type, rs6000_builtin_type_compatible,
1641         altivec_overloaded_builtins, rs6000_builtin_type,
1642         rs6000_builtin_type_compatible): New.
1643         * config/rs6000/rs6000.c (rs6000_builtin_types, rs6000_builtin_decls):
1644         New.
1645         (def_builtin): Turn into a function.  Check for duplicates and store
1646         the builtin into rs6000_builtin_decls.
1647         (bdesc_3arg, bdesc_dst, bdesc_altivec_preds, bdesc_2arg,
1648         bdesc_1arg): Add overloaded builtins.
1649         (altivec_expand_builtin): Check for unresolved overloaded builtins,
1650         do not support ALTIVEC_COMPILETIME_ERROR.
1651         (rs6000_init_builtins): Add opaque 128-bit vector, and internal
1652         nodes to represent front-end types.
1653         (altivec_init_builtins, rs6000_common_init_builtins): Create builtins
1654         with opaque arguments and/or return values.
1655         * config/rs6000/rs6000.h (enum rs6000_builtins): Remove
1656         ALTIVEC_COMPILETIME_ERROR and add Altivec overloaded builtins.
1657         (rs6000_builtin_type_index): New.
1658         (is_ev64_opaque_type): Rename to...
1659         (rs6000_is_opaque_type): ... this.
1660         (rs6000_cpu_cpp_builtins): Install the resolve_overloaded_builtin
1661         target hook.
1662
1663 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
1664
1665         * function.c (reorder_blocks, reorder_blocks_1): Use VEC
1666         instead of VARRAY.
1667
1668 2005-05-02  Nathan Sidwell  <nathan@codesourcery.com>
1669             Bernd Schmidt  <bernd.schmidt@analog.com>
1670
1671         * config/bfin/bfin.c (emit_link_insn, effective_address_32bit_p,
1672         print_address_operand, print_operand, legitimize_pic_address,
1673         asm_conditional_branch, bfin_gen_compare, output_push_multiple,
1674         output_pop_multiple): Use gcc_assert or gcc_unreachable as
1675         appropriate.
1676         * config/bfin/bfin.md (movsf splitter, beq, bne): Likewise.
1677
1678 2005-05-02  Dorit Naishlos  <dorit@il.ibm.com>
1679
1680         * doc/passes.texi: Document vectorization pass.
1681
1682 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
1683
1684         * tree-scalar-evolution.c (get_exit_conditions_rec,
1685         select_loops_exit_conditions,
1686         number_of_iterations_for_all_loops,
1687         analyze_scalar_evolution_for_all_loop_phi_nodes,
1688         scev_analysis): Use VEC instead of VARRAY.
1689
1690 2005-05-02  Michael Matz  <matz@suse.de>
1691
1692         PR c++/19542
1693         * c-common.c (c_common_nodes_and_builtins): Create global null_node.
1694         (warn_strict_null_sentinel): Define.
1695         (check_function_sentinel): Check for null_node as valid sentinel too.
1696         * c-common.h (c_tree_index): Added CTI_NULL.
1697         (null_node) Define global_tree[CTI_NULL].
1698         (warn_strict_null_sentinel): Declare.
1699         * c-opts.c: (c_common_handle_option): Handle -Wstrict-null-sentinel.
1700         * c.opt: (Wstrict-null-sentinel): New C++ option.
1701         * doc/invoke.texi (C++ Options): Document -Wstrict-null-sentinel.
1702
1703 2005-05-01  Kazu Hirata  <kazu@cs.umass.edu>
1704
1705         * gimplify.c (gimplify_compound_lval): Use VEC instead of
1706         VARRAY.
1707
1708         * global.c (calculate_reg_pav): Use VEC instead of VARRAY.
1709
1710         * dwarf2out.c (decl_scope_table, push_decl_scope,
1711         pop_decl_scope, scope_die_for, dwarf2out_init): Use VEC
1712         instead of VARRAY.
1713
1714 2005-05-01  Mark Mitchell  <mark@codesourcery.com>
1715
1716         PR C++/14391
1717         * c-cppbuiltin.c (c_cpp_builtins): Do not define __GXX_WEAK__ to 1
1718         if !flag_weak.
1719         * doc/cpp.texi (__DEPRECATED): Document.
1720         (__EXCEPTIONS): Likewise.
1721         (__GXX_WEAK__): Likewise.
1722
1723         * function.c (INVOKE__main): Do not define.
1724         (expand_main_function): Check HAS_INIT_SECTION when determining
1725         whether or not to call __main.
1726
1727 2005-05-01  Kazu Hirata  <kazu@cs.umass.edu>
1728
1729         * tree-ssa-loop-ivopts.c: Fix a comment typo.
1730
1731 2005-01-05  Paul Brook  <paul@codesourcery.com>
1732
1733         * config/arm/arm.h (ARM_EMIT_TRAMPOLINE_CACHE_CLEAR): Define.
1734         (INITIALIZE_TRAMPOLINE): Use it.
1735         * config/arm/linux-gas.h (INITIALIZE_TRAMPOLINE): Remove.
1736         * config/arm/netbsd.h (INITIALIZE_TRAMPOLINE): Remove.
1737         * config/arm/netbsd-elf.h (INITIALIZE_TRAMPOLINE): Remove.
1738
1739 2005-05-01  Gerald Pfeifer  <gerald@pfeifer.com>
1740
1741         * doc/install.texi (Specific): Omit dots in the @anchors names
1742         for i?86-*-sco3.2v5*, i?86-*-solaris2.10, and sparc-sun-solaris2.7.
1743         Omit underscores for x86_64-*-* and the "all ELF targets" entry.
1744
1745 2005-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
1746
1747         PR tree-optimization/18316
1748         PR tree-optimization/19126
1749         * tree.c (build_int_cst_type): Avoid shift by size of type.
1750         * tree-scalar-evolution.c (simple_iv): Add allow_nonconstant_step
1751         argument.
1752         * tree-scalar-evolution.h (simple_iv): Declaration changed.
1753         * tree-ssa-loop-ivopts.c (struct iv_cand): Add depends_on
1754         field.
1755         (dump_cand): Dump depends_on information.
1756         (determine_biv_step): Add argument to simple_iv call.
1757         (contains_abnormal_ssa_name_p): Handle case expr == NULL.
1758         (find_bivs, find_givs_in_stmt_scev): Do not require step to be a
1759         constant.
1760         (add_candidate_1): Record depends_on for candidates.
1761         (tree_int_cst_sign_bit, constant_multiple_of): New functions.
1762         (get_computation_at, get_computation_cost_at, may_eliminate_iv):
1763         Handle ivs with nonconstant step.
1764         (iv_ca_set_remove_invariants, iv_ca_set_add_invariants): New functions.
1765         (iv_ca_set_no_cp, iv_ca_set_cp): Handle cand->depends_on.
1766         (create_new_iv): Unshare the step before passing it to create_iv.
1767         (free_loop_data): Free cand->depends_on.
1768         (build_addr_strip_iref): New function.
1769         (find_interesting_uses_address): Use build_addr_strip_iref.
1770         (strip_offset_1): Split the recursive part from strip_offset.
1771         Strip constant offset component_refs and array_refs.
1772         (strip_offset): Split the recursive part to strip_offset_1.
1773         (add_address_candidates): Removed.
1774         (add_derived_ivs_candidates): Do not use add_address_candidates.
1775         (add_iv_value_candidates): Add candidates with stripped constant
1776         offset.  Consider all candidates with initial value 0 important.
1777         (struct affine_tree_combination): New.
1778         (aff_combination_const, aff_combination_elt, aff_combination_scale,
1779         aff_combination_add_elt, aff_combination_add,
1780         tree_to_aff_combination, add_elt_to_tree, aff_combination_to_tree,
1781         fold_affine_sum): New functions.
1782         (get_computation_at): Use fold_affine_sum.
1783         * tree-ssa-loop-manip.c (create_iv): Handle ivs with nonconstant step.
1784         * tree-ssa-loop-niter.c (number_of_iterations_exit): Add argument
1785         to simple_iv call.
1786
1787 2005-04-30  Michael Matz  <matz@suse.de>
1788
1789         * config/i386/i386.md (movmemsi): Also active when
1790         TARGET_INLINE_ALL_STRINGOPS.
1791
1792 2005-04-30  Eric Botcazou  <ebotcazou@libertysurf.fr>
1793
1794         PR bootstrap/20633
1795         * config/freebsd-spec.h (FBSD_CPP_SPEC): Add %(cpp_arch).
1796
1797 2005-04-30  Paul Brook  <paul@codesourcery.com>
1798
1799         * config/arm/bpabi.h (RENAME_LIBRARY_SET): Always use .thumb_set in
1800         thumb mode.
1801         * config/arm/ieee754-df.S: Use __INTERWORKING_STUBS__.
1802         * config/arm/ieee754-sf.S: Ditto.
1803         * config/arm/lib1funcs.asm: Define and use __INTERWORKING_STUBS__.
1804         (FUNC_ALIAS): Use .thumb_set for thumb routines.
1805
1806 2005-04-30  Kazu Hirata  <kazu@cs.umass.edu>
1807
1808         * tree-ssanames.c: Fix a comment typo.
1809         * doc/options.texi: Fix a typo.
1810
1811 2005-04-30  Nathan Sidwell  <nathan@codesourcery.com>
1812
1813         * config/h8300/h8300.c (byte_reg): Use gcc_assert and
1814         gcc_unreachable as appropriate.
1815         (split_adds_subs, cond_string, print_operand,
1816         h8300_initial_elimination_offset, h8300_classify_operand,
1817         h8300_unary_length, h8300_short_immediate_length,
1818         h8300_bitfield_length, h8300_binary_length,
1819         h8300_insn_length_from_table, compute_mov_length, output_plussi,
1820         compute_plussi_length, compute_plussi_cc, output_logical_op,
1821         compute_logical_op_length, compute_logical_op_cc,
1822         output_h8sx_shift, get_shift_alg, h8300_shift_needs_scratch_p,
1823         output_a_shift, compute_a_shift_length, compute_a_shift_cc,
1824         output_a_rotate, compute_a_rotate_length, fix_bit_operand,
1825         h8300_regs_ok_for_stm): Likewise.
1826         * config/h8300/h8300.md (*movsi_h8300, *movsf_h8300,
1827         monitor_prologue): Likewise.
1828
1829 2005-04-30  Kazu Hirata  <kazu@cs.umass.edu>
1830
1831         * loop-invariant.c (invariants, create_new_invariant,
1832         get_inv_cost, best_gain_for_invariant,
1833         find_invariants_to_move, move_invariants,
1834         init_inv_motion_data, free_inv_motion_data): Use VEC instead
1835         of VARRAY.
1836
1837 2005-04-29  Richard Henderson  <rth@redhat.com>
1838
1839         * function.c (instantiate_decls): Remove valid_only argument.
1840         (instantiate_decls_1, instantiate_decl): Likewise.
1841         (instantiate_virtual_regs_1): Delete.
1842         (instantiate_virtual_regs_lossage): Delete.
1843         (instantiate_virtual_regs_in_rtx): New.
1844         (safe_insn_predicate): New.
1845         (instantiate_virtual_regs_in_insn): New.
1846         (instantiate_virtual_regs): Update to match all that.  Only run
1847         instantiate_decls once.
1848
1849 2005-04-29  Richard Henderson  <rth@redhat.com>
1850             Daniel Jacobowitz  <dan@codesourcery.com>
1851
1852         * gengtype.c (write_func_for_structure): Split out ...
1853         (output_type_enum): ... new function.  Fix thinko accessing
1854         TYPE_PARAM_STRUCT data.
1855
1856 2005-04-29  Tom Tromey  <tromey@redhat.com>
1857
1858         * tree.c (build_block): Removed unused 'tags' argument.
1859         * tree.h (build_block): Removed argument.
1860
1861 2005-04-29  Michael Matz  <matz@suse.de>
1862
1863         PR rtl-optimization/21144
1864         * postreload.c (reload_cse_move2add): Check for VOIDmode.
1865
1866 2005-04-29  Bob Wilson  <bob.wilson@acm.org>
1867
1868         * config/xtensa/xtensa.h (OPTIMIZATION_OPTIONS): Define to disable
1869         flag_reorder_blocks.
1870
1871 2005-04-28  Kazu Hirata  <kazu@cs.umass.edu>
1872
1873         PR tree-optimization/21030
1874         * tree-vrp.c (adjust_range_with_scev): Do not create invalid
1875         ranges where VR->MAX is smaller than VR->MIN.
1876
1877 2005-04-29  Devang Patel  <dpatel@apple.com>
1878
1879         PR tree-optimization/21272
1880         PR tree-optimization/21266
1881         * tree-if-conv.c (find_phi_replacement_condition): Fix think-o.
1882         
1883 2005-04-29  Kazu Hirata  <kazu@cs.umass.edu>
1884
1885         * tree-flow-inline.h: Fix a comment typo.
1886         * doc/tree-ssa.texi: Fix a typo.
1887
1888         * tree-flow-inline.h, tree-ssa-operands.c: Fix comment typos.
1889
1890 2005-04-29  Nathan Sidwell  <nathan@codesourcery.com>
1891
1892         * config/fr30/fr30.c (fr30_expand_prologue): Use gcc_assert and
1893         gcc_unreachable as appropriate.
1894         (fr30_expand_epilogue, fr30_setup_incoming_varargs,
1895         fr30_print_operand, fr30_move_double): Likewise.
1896         * config/fr30/fr30.md (*movsi_internal, *movsf_internal): Likewise.
1897
1898 2005-04-29  Mark Mitchell  <mark@codesourcery.com>
1899
1900         * config/arm/arm.h (ARM_EABI_CTORS_SECTION_OP): Do not define if a
1901         definition has already been provided.
1902         (ARM_EABI_DTORS_SECTION_OP): Likewise.
1903         * config/arm/symbian.h (ARM_EABI_CTORS_SECTION_OP): Define.
1904         (ARM_EABI_DTORS_SECTION_OP): Likewise.
1905
1906 2005-04-29  Jim Tison  <jtison@us.ibm.com>
1907
1908         * config/s390/s390.md ("prologue_tpf", "epilogue_tpf"): Alter
1909         trace hooks calls to improve performance.
1910
1911 2005-04-29  Julian Brown  <julian@codesourcery.com>
1912             Mark Mitchell  <mark@codesourcery.com>
1913             Paul Brook  <paul@codesourcery.com>
1914
1915         * crtstuff.c: Handle targets that use .init_array.
1916         * function.c (HAS_INIT_SECTION): Do not define. Instead, make sure
1917         that INVOKE__main is set correctly.
1918         (expand_main_function): Test INVOKE__main.
1919         * libgcc2.c: Do not define __main when using .init_array.
1920         * config/arm/arm.c (arm_elf_asm_constructor): New function.
1921         * config/arm/arm.h (CTORS_SECTION_ASM_OP): Define, with specialized
1922         libgcc version.
1923         (DTORS_SECTION_ASM_OP): Likewise.
1924         (CTOR_LIST_BEGIN): Define specially when in libgcc.
1925         (CTOR_LIST_END): Likewise.
1926         (DTOR_LIST_BEGIN): Likewise.
1927         (DTOR_LIST_END): Likewise.
1928         * config/arm/bpapi.h (INIT_SECTION_ASM_OP): Do not define it.
1929         (FINI_SECTION_ASM_OP): Likewise.
1930         (INIT_ARRAY_SECTION_ASM_OP): Define.
1931         (FINI_ARRAY_SECTION_ASM_OP): Likewise.
1932         * config/arm/elf.h (TARGET_ASM_CONSTRUCTOR): Define.
1933         (SUPPORTS_INIT_PRIORITY): Evaluate to false for EABI based targets.
1934         * doc/tm.texi (INIT_ARRAY_SECTION_ASM_OP): Document.
1935         (FINI_ARRAY_SECTION_ASM_OP): Likewise.  
1936
1937 2005-04-29  Nathan Sidwell  <nathan@codesourcery.com>
1938
1939         * config/m68k/m68k.c (m68k_initial_elimination_offset): Use
1940         gcc_assert and gcc_unreachable as appropriate.
1941         (output_dbcc_and_branch, output_scc_di, legitimize_pic_address,
1942         const_int_cost, output_move_const_into_data_reg,
1943         output_move_qimode, output_move_double, find_addr_reg,
1944         print_operand, print_operand_address): Likewise.
1945         * config/m68k/m68k.md (adddi3, subdi3, negsf2, negdf2, abssf2,
1946         absdf2, sordered, sunordered, suneq, sunge, sungt, sunle, sunlt,
1947         sltgt, bordered, bunordered, buneq, bunge, bungt, bunle, bunlt,
1948         bltgt, *bordered_rev, *bunordered_rev, *buneq_rev, *bunge_rev,
1949         *bunle_rev, *bunlt_rev, *bltgt_rev, negxf2, absxf2,
1950         conditional_trap): Likewise.
1951         * config/m68k/m68kelf.h (ASM_OUTPUT_ALIGN): Remove unreachable code.
1952
1953 2005-04-29  Nathan Sidwell  <nathan@codesourcery.com>
1954
1955         * config/xtensa/xtensa.c (gen_int_relational): Use gcc_assert and
1956         gcc_unreachable as appropriate.
1957         (gen_conditional_move, xtensa_split_operand_pair,
1958         xtensa_split_operand_pair, xtensa_copy_incoming_a7,
1959         xtensa_copy_incoming_a7, xtensa_copy_incoming_a7,
1960         xtensa_copy_incoming_a7, xtensa_output_literal,
1961         xtensa_output_literal, xtensa_output_literal): Likewise.
1962         * config/xtensa/xtensa.h (INITIAL_ELIMINATION_OFFSET): Likewise.
1963         * config/xtensa/xtensa.md (*btrue, *bfalse, *ubtrue, *ubfalse,
1964         *bittrue, *bitfalse, *masktrue, *maskfalse, movsicc_internal0,
1965         movsicc_internal1, movsfcc_internal0,
1966         movsfcc_internal1): Likewise.
1967
1968 2005-04-28  James E Wilson  <wilson@specifixinc.com>
1969
1970         * config/i386/i386.h (HI_REGISTER_NAMES): Fix typos in comment.
1971         (ADDITIONAL_REGISTER_NAMES): Delete obsolete mmx register entries.
1972
1973 2005-04-28  DJ Delorie  <dj@redhat.com>
1974
1975         * opt-functions.awk (var_set): Emit proper initializer for
1976         non-target bitfields.
1977
1978 2005-04-28  Devang Patel  <dpatel@apple.com>
1979
1980         * dbxout.c (have_used_extensions): Remove.
1981         (dbxout_type_fileds, dbxout_type, dbxout_symbol): Remove use of
1982         have_used_extensions.
1983         
1984 2005-04-28  James E Wilson  <wilson@specifixinc.com>
1985
1986         * doc/install.texi: Update -enable-languages info.  Correct path to
1987         html docs.
1988
1989 2005-04-28  DJ Delorie  <dj@redhat.com>
1990
1991         * optc-gen.awk (END): Make sure no variable is defined more
1992         than once.
1993         * opth-gen.awk (END): Allocate bits on a per-variable basis.
1994         Allow for bitfield variables other than target_flags.
1995         * doc/options.text (Mask): Document that you may specify a
1996         variable other than target_flags.
1997
1998 2005-04-28  Martin Koegler <mkoegler@auto.tuwien.ac.at>
1999
2000         PR rtl-optimization/18877
2001         * reload.c (decompose) <case REG, case SUBREG>: Handle pseudo reg
2002         number in val.start.
2003
2004 2005-04-28  David Edelsohn  <edelsohn@gnu.org>
2005
2006         PR target/20813
2007         * config/rs6000/aix43.h (SUBSUBTARGET_SWITCHES, aix64): Add
2008         MASK_PPC_GFXOPT.
2009         * config/rs6000/aix51.h (SUBSUBTARGET_SWITCHES, aix64): Same.
2010         * config/rs6000/aix52.h (SUBSUBTARGET_SWITCHES, aix64): Same.
2011         * config/rs6000/sysv4.h (SUBTARGET_SWITCHES, 64): Same.
2012
2013 2005-04-28  Richard Earnshaw  <richard.earnshaw@arm.com>
2014
2015         * arm.c (legitimize_pic_address): Fix sense of assertion test for
2016         creating pseudos when the base offset is too large.
2017
2018 2005-04-28  Kazu Hirata  <kazu@cs.umass.edu>
2019
2020         * global.c (earlyclobber_regclass): Change the type to
2021         VEC(int,heap).
2022         (check_earlyclobber): Update uses of earlyclobber_regclass.
2023         (mark_reg_use_for_earlyclobber): Likewise.
2024         (calculate_local_reg_bb_info): Allocate and free
2025         earlyclobber_regclass using the VEC API.
2026
2027 2005-04-28  Nathan Sidwell  <nathan@codesourcery.com>
2028
2029         * tree-ssa-alias.c (push_fields_onto_fieldstack): Remove bogus
2030         assert.
2031
2032 2005-04-28  Kazu Hirata  <kazu@cs.umass.edu>
2033
2034         * modulo-sched.c, tree-stdarg.c: Use targetm.foo instead of
2035         (*targetm.foo).
2036
2037         * config.gcc: Obsolete c4x-* and tic4x-*.
2038
2039         * tree.h (edge_def): Remove.
2040
2041         * bt-load.c, cfgexpand.c, dwarf2out.c, emit-rtl.c, expr.c,
2042         function.c, global.c, lcm.c, loop-invariant.c, optabs.c,
2043         reorg.c, resource.c, tree-ssa-loop-ivopts.c, value-prof.c: Use
2044         JUMP_P, LABEL_P, REG_P, MEM_P, NONJUMP_INSN_P, and INSN_P
2045         where appropriate.
2046
2047         * attribs.c, c-pragma.c, caller-save.c, cfghooks.h,
2048         coverage.c, cselib.h, domwalk.c, domwalk.h, errors.c,
2049         errors.h, gcov-dump.c, gcov-io.c, gcov-io.h, gen-protos.c,
2050         genattrtab.h, genextract.c, gthr-win32.h, insn-notes.def,
2051         integrate.c, lambda-mat.c, lambda.h, libgcov.c, local-alloc.c,
2052         machmode.def, mips-tfile.c, params.c, pretty-print.c,
2053         print-rtl.c, protoize.c, regmove.c, sched-vis.c, tree-chrec.h,
2054         tree-data-ref.h, vec.h, config/darwin-c.c, config/sol2-c.c,
2055         config/sol2.c, config/arm/arm-cores.def, config/arm/cirrus.md,
2056         config/arm/symbian.h, config/c4x/c4x.c, config/c4x/c4x.h,
2057         config/i386/cygming.h, config/i386/djgpp.h,
2058         config/i386/lynx.h, config/i386/netware.c,
2059         config/i386/winnt.c, config/ia64/ia64-c.c,
2060         config/iq2000/iq2000.c, config/m32r/little.h,
2061         config/m68k/m68k-protos.h, config/m68k/m68k.h,
2062         config/m68k/m68k.md, config/mcore/mcore.c,
2063         config/mcore/mcore.h, config/mmix/mmix.c, config/mmix/mmix.md,
2064         config/mn10300/mn10300-protos.h, config/mn10300/mn10300.c,
2065         config/mn10300/mn10300.h, config/ns32k/netbsd.h,
2066         config/ns32k/ns32k.c, config/ns32k/ns32k.h,
2067         config/pa/pa-hpux11.h, config/pdp11/pdp11.c,
2068         config/pdp11/pdp11.h, config/rs6000/darwin.h,
2069         config/rs6000/default64.h, config/rs6000/rs6000-c.c,
2070         config/s390/2064.md, config/s390/2084.md,
2071         config/s390/s390-modes.def, config/s390/s390-protos.h,
2072         config/s390/tpf.h, config/sh/sh.h, config/sh/symbian.c,
2073         config/stormy16/stormy16.c, config/vax/vax-protos.h,
2074         config/vax/vax.c, config/vax/vax.h,
2075         config/xtensa/lib1funcs.asm, config/xtensa/xtensa.md: Update
2076         copyright.
2077
2078 2005-04-28  Joseph S. Myers  <joseph@codesourcery.com>
2079
2080         * c-typeck.c (build_compound_expr): Correct logic in last change.
2081
2082 2005-04-27  James E. Wilson  <wilson@specifixinc.com>
2083
2084         * config/ia64/ia64.c (update_set_flags): Delete ppred and pcond
2085         parameters.  Replace conditional move code with assert checking for
2086         ar.lc.  Delete obsolete comments.
2087         (set_src_needs_barrier): Delete cond parameter, and code using it.
2088         (rtx_needs_barrier): Delete initialization of cond.  Fix typo in
2089         assert checking for PR_REGS.  Fix calls to update_set_flags and
2090         set_src_needs_barrier.
2091         (group_barrier_needed): Renamed from group_barrier_needed_p.  Fix all
2092         callers.  Rewrite explanatory comment before the function.
2093         (safe_group_barrier_needed): Renamed from safe_group_barrier_needed_p.
2094         Fix all callers.
2095
2096 2005-04-27  Mike Stump  <mrs@apple.com>
2097
2098         * doc/cpp.texi: gcc now implements universal character names.
2099
2100 2005-04-27  Joseph S. Myers  <joseph@codesourcery.com>
2101
2102         PR c/21159
2103         * c-typeck.c (build_compound_expr): Don't warn for left-hand side
2104         being a compound expression whose right-hand side is cast to void.
2105
2106 2005-04-27  Caroline Tice  <ctice@apple.com>
2107
2108         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
2109         Remove targetm.have_named_sections test.
2110         (fix_edges_for_rarely_executed_code): Likewise.
2111         (insert_section_boundary_note): Likewise.
2112         (reorder_basic_blocks): Check partitioning flag before calling
2113         verify_hot_cold_block_grouping.
2114         * dbxout.c (dbxout_function_end): Get hot/cold section labels from
2115         the function struct rather than global variables.
2116         * dwarf2out.c (COLD_TEXT_SECTION_LABEL): New macro.
2117         (COLD_END_LABEL): Likewise
2118         (cold_text_section_label): New static global variable.
2119         (cold_end_label): Likewise.
2120         (dwarf2out_switch_text_section): Get hot/cold section labels from
2121         the function struct rather than global variables; test to make sure
2122         cfun is defined.
2123         (output_aranges): Use cold_text_section_label and cold_end_label;
2124         check partitioning flag before putting out delta.
2125         (output_ranges): Remove incorrect code attempting to use
2126         hot/cold labels.
2127         (output_line_info): Get cold section label from function struct; test
2128         to make sure cfun is defined.
2129         (add_location_or_const_value_attribute): Likewise.
2130         (dwarf2out_var_location): Likewise.
2131         (dwarf2out_init): Generate cold_text_section_label and cold_end_label;
2132         write out cold_text_section_label if partition flag is set.
2133         (dwarf2out_finish): Write out cold_end_label if partition flag is set;
2134         * function.h (struct function): Add new fields to point to hot/cold
2135         section labels: hot_section_label, cold_section_label,
2136         hot_section_end_label and cold_section_end_label; also add new field
2137         for cold text section name, unlikely_text_section_name.
2138         * opts.c (decode_options): Turn off partitioning flag if
2139         !targetm.have_named_sections.
2140         * output.h (hot_section_label): Remove.
2141         (hot_section_end_label): Remove.
2142         (cold_section_end_label): Remove.
2143         (unlikely_section_label): Remove.
2144         (unlikely_text_section_name): Remove.
2145         * passes.c (rest_of_handle_final):  Remove extra blank line.
2146         * varasm.c (unlikely_section_label): Remove.
2147         (hot_section_label): Remove.
2148         (hot_section_end_label): Remove.
2149         (cold_section_end_label): Remove.
2150         (unlikely_text_section_name):  Remove.
2151         (initialize_cold_section_name): Modify to call
2152         targetm.strip_name_encoding; to store cold section name in current
2153         function struct, if it exists; and to only use the decl_section_name
2154         if flag_named_sections is true.
2155         (unlikely_text_section): Modify to get section name out of current
2156         function struct, if there is one; otherwise build it from
2157         UNLIKELY_EXECUTED_TEXT_SECTION_NAME.
2158         (in_unlikely_text_section): Likewise.
2159         (named_section): Modify to get/put cold section name in current function
2160         struct, if there is one.
2161         (function_section):  Change 'bool unlikely' to 'int reloc'; check
2162         targetm.have_named_sections before calling named_section.
2163         (current_function_section): Likewise.
2164         (assemble_start_function): Modify to get/put unlikely_text_section_name
2165         in current function struct; modify to get hot/cold section labels
2166         from function struct; initialize labels using
2167         ASM_GENERATE_INTERNAL_LABEL;
2168         test partitioning flag before writing out hot section label.
2169         (assemble_end_function): Test partitioning flag before writing out
2170         hot/cold section labels.
2171         (default_section_type_flags_1):  Get cold text section name from
2172         function struct if there is one; Set flags correctly for
2173         cold text section if there is not a current function struct.
2174         
2175 2005-04-27  Richard Guenther  <rguenth@gcc.gnu.org>
2176
2177         * tree-ssa-propagate.c (set_rhs): Revert last change.
2178
2179 2005-04-27  Steve Ellcey  <sje@cup.hp.com>
2180
2181         * explow.c (convert_memory_address): Add gcc_assert.
2182
2183 2005-04-27  Mark Mitchell  <mark@codesourcery.com>
2184
2185         * configure.ac: Check for ld --sysroot support.
2186         * gcc.c: Document %R specifier for specs.
2187         (SYSROOT_SPEC): New macro.
2188         (sysroot_spec): New variable.
2189         (static_specs): Add sysroot_spec.
2190         (main): Pass the sysroot spec to the linker if appropriate.
2191         * configure: Regenerated.
2192         * config.in: Likewise.
2193
2194 2005-04-27  Richard Guenther  <rguenth@gcc.gnu.org>
2195
2196         * fold-const.c (fold_binary): Use build_fold_addr_expr
2197         for address calculation and INDIRECT_REF handling.
2198
2199 2005-04-27  Andrew Haley  <aph@redhat.com>
2200
2201         * postreload-gcse.c (hash_scan_set): Remove bogus assertion.
2202
2203 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
2204
2205         * config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Reserve arm frame
2206         pointer when thumb backtracing is on.
2207
2208         * config/fp-bit.c (abort): Revert change.
2209
2210 2005-04-27  Ian Lance Taylor  <ian@airs.com>
2211
2212         * c-semantics.c (add_stmt): Don't test STATEMENT_CODE_P.
2213
2214 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
2215
2216         * tree-ssa-dce.c: Fix a comment typo.
2217
2218 2005-04-27  David S. Miller  <davem@davemloft.net>
2219
2220         * explow.c (allocate_dynamic_stack_space SETJMP_VIA_SAVE_AREA):
2221         Kill setjmpless_size.  current_function_calls_setjmp is completely
2222         computed when we are called, so just use the optimized size value
2223         instead of using REG_SAVE_AREA notes.
2224         (optimize_save_area_alloca): Delete....
2225         * rtl.h (optimize_save_area_alloca): Likewise...
2226         * passes.c (rest_of_compilation): and don't call it any more.
2227         * reg-notes.def (SAVE_AREA): Delete.
2228         
2229 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
2230
2231         * config/fp-bit.c (abort): Add noreturn attribute.
2232
2233         * config/avr/avr.c (avr_naked_function_p): Use gcc_assert and
2234         gcc_unreachable as appropriate.
2235         (ptrreg_to_str, cond_string, avr_normalize_condition): Likewise.
2236         * config/avr/avr.h (ASM_OUTPUT_REG_PUSH,
2237         ASM_OUTPUT_REG_POP): Likewise.
2238
2239 2005-04-27  Paolo Bonzini  <bonzini@gnu.org>
2240
2241         * tree-complex.c (expand_vector_operations_1): Do not build
2242         VIEW_CONVERT_EXPR's for the lhs.
2243
2244 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
2245
2246         * config/pa/pa.h (PRINT_OPERAND_ADDRESS): Use gcc_assert, remove
2247         unnecessary noncanonical RTL handling.
2248         * config/pa/pa64-linux.h (INITIAL_ELIMINATION_OFFSET): Use
2249         gcc_assert and gcc_unreachable.
2250
2251         * config/arm/arm.h (ARM_PRINT_OPERAND_ADDRESS): Use gcc_assert and
2252         gcc_unreachable as appropriate.
2253         (THUMB_PRINT_OPERAND_ADDRESS): Likewise.
2254         * config/arm/arm.c (arm_override_options, arm_compute_func_type,
2255         use_return_insn, const_ok_for_op, arm_gen_constant,
2256         arm_canonicalize_comparison, legitimize_pic_address,
2257         thumb_find_work_register, arm_load_pic_register, arm_rtx_costs_1,
2258         arm_cirrus_insn_p, cirrus_reorg, minmax_code,
2259         load_multiple_sequence, emit_ldm_seq, store_multiple_sequence,
2260         emit_stm_seq, arm_gen_movmemqi, arm_select_dominance_cc_mode,
2261         arm_select_cc_mode, arm_reload_in_hi, arm_reload_out_hi,
2262         move_minipool_fix_forward_ref, move_minipool_fix_backward_ref,
2263         dump_minipool, create_fix_barrier, push_minipool_fix, arm_reorg,
2264         fp_immediate_constant, fp_const_from_val, vfp_output_fstmx,
2265         output_call, output_mov_long_double_fpa_from_arm,
2266         output_mov_long_double_arm_from_fpa,
2267         output_mov_double_fpa_from_arm, output_mov_double_arm_from_fpa,
2268         output_move_double, arithmetic_instr, shift_op, int_log2,
2269         output_return_instruction, arm_output_function_prologue,
2270         arm_output_epilogue, arm_output_function_epilogue,
2271         emit_multi_reg_push, arm_get_frame_offsets,
2272         arm_compute_initial_elimination_offset, arm_expand_prologue,
2273         arm_print_operand, arm_assemble_integer, get_arm_condition_code,
2274         arm_final_prescan_insn, arm_init_iwmmxt_builtins,
2275         arm_expand_binop_builtin, thumb_pushpop, thumb_far_jump_used_p,
2276         thumb_compute_initial_elimination_offset,
2277         thumb_output_function_prologue, thumb_load_double_from_address,
2278         thumb_output_move_mem_multiple, thumb_reload_out_hi,
2279         arm_emit_vector_const, arm_dbx_register_number): Likewise.
2280         * config/arm/pe.c (arm_mark_dllexport, arm_mark_dllimport): Likewise.
2281         * config/arm/arm.md (thumb_extendhisi2,
2282         *thumb_extendhisi2_insn_v6, *thumb_extendqisi2,
2283         *thumb_extendqisi2_v6, movhi, *thumb_movhi_insn,
2284         thumb_movhi_clobber, movqi, *arm_buneq, *arm_bltgt,
2285         *arm_buneq_reversed, *arm_bltgt_reversed, suneq, sltgt): Likewise.
2286         * config/arm/cirrus.md (*cirrus_arm_movdi,
2287         *cirrus_movdf_hard_insn): Likewise.
2288         * config/arm/vfp.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
2289
2290 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
2291
2292         * tree-flow.h (ssa_names): Change the type to VEC(tree,gc).
2293         (num_ssa_names): Use VEC_length.
2294         (ssa_names): Use VEC_index.
2295         * tree-ssanames.c (ssa_names): Change the type to
2296         VEC(tree,gc).
2297         (init_ssanames, fini_ssa_names, make_ssanames,
2298         release_ssa_name): Update uses of ssa_names.
2299
2300         * dojump.c, emit-rtl.c, expmed.c, expr.c, stmt.c, stor-layout.c:
2301         Use fold_buildN instead of fold (buildN (...)).
2302
2303 2005-04-27  Devang Patel <dpatel@apple.com>
2304
2305         * dbxout.c (dbxout_type): Check use_gnu_debug_info_extensions.
2306
2307 2005-04-27  Matt Thomas <matt@3am-software.com>
2308             Jan-Benedict Glaw <jbglaw@microdata-pos.de>
2309
2310         * config/vax/vax.c (vax_rtx_costs): Whitespace cleanup.
2311         (vax_output_mi_thunk): Ditto.
2312         (vax_notice_cc_update): Ditto.
2313         (INDEX_REGISTER_P): Add trailing \.
2314         (BASE_REGISTER_P): Add trailing \.
2315         (legitimate_address_p): Whitespace cleanup.  Remove trailing \.
2316
2317 2005-04-27  Richard Guenther  <rguenth@gcc.gnu.org>
2318
2319         * tree-ssa-propagate.c (set_rhs): Check operand of
2320         ADDR_EXPR for gimpliness, too.
2321
2322 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
2323
2324         * tree-ssa-pre.c: Fix a comment typo.
2325
2326 2005-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
2327
2328         PR tree-optimization/21171
2329         * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Do not
2330         record address uses if the reference is volatile.
2331
2332 2004-04-27  Paolo Bonzini  <bonzini@gnu.org>
2333
2334         * tree-complex.c (expand_vector_operation): New, extracted from
2335         expand_vector_operations_1.
2336         (tree_vec_extract): Build a NOP_EXPR.
2337         (expand_vec_parallel): Do not care about returning the correct type.
2338         (expand_vector_operations_1): Call expand_vector_operation.
2339         Build the VIEW_CONVERT_EXPR on the left side of MODIFY_EXPRs.
2340
2341         * tree-complex.c (gate_expand_vector_operations): New.
2342         (pass_lower_vector_ssa): Use it.
2343         * tree-optimize.c (init_tree_optimization_passes): Include
2344         pass_lower_vector_ssa.
2345         * tree-vect-transform.c (vect_min_worthwhile_factor): New.
2346         (vectorizable_operation): Use it.
2347         * tree-vectorizer.c (get_vectype_for_scalar_type): Accept
2348         integer modes for the vector type.
2349
2350         * defaults.h (UNITS_PER_SIMD_WORD): Default to UNITS_PER_WORD.
2351         * tree-vect-analyze.c (vect_enhance_data_refs_alignment):
2352         Do not cope with UNITS_PER_SIMD_WORD == 0.
2353         * tree-vectorizer.c (get_vectype_for_scalar_type): Check
2354         if the scalar type is not bigger than UNITS_PER_SIMD_WORD.
2355         (vectorize_loops): Do not check that UNITS_PER_SIMD_WORD > 0.
2356         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Default to UNITS_PER_WORD.
2357         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
2358         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
2359         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
2360
2361         * config/alpha/alpha.h (UNITS_PER_SIMD_WORD): Remove.
2362         * config/bfin/bfin.h (UNITS_PER_SIMD_WORD): Remove.
2363         * config/ia64/ia64.h (UNITS_PER_SIMD_WORD): Remove.
2364
2365         * doc/tm.texi (UNITS_PER_WORD): Rephrase more accurately.
2366         (UNITS_PER_SIMD_WORD): New.
2367
2368 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
2369
2370         * config/ia64/ia64.c (ia64_encode_addr_area): Use gcc_assert and
2371         gcc_unreachable as appropriate.
2372         (ia64_expand_load_address, ia64_expand_tls_address,
2373         ia64_split_tmode, ia64_split_tmode_move, ia64_expand_compare,
2374         ia64_expand_vecint_compare, ia64_expand_vecint_minmax,
2375         next_scratch_gr_reg, ia64_initial_elimination_offset,
2376         ia64_expand_prologue, ia64_expand_epilogue,
2377         ia64_output_dwarf_dtprel, ia64_print_operand,
2378         ia64_register_move_cost, first_instruction, rws_access_regno,
2379         update_set_flags, rtx_needs_barrier, group_barrier_needed_p,
2380         ia64_sched_init, ia64_variable_issue,
2381         ia64_first_cycle_multipass_dfs_lookahead_guard,
2382         ia64_dfa_new_cycle, issue_nops_and_insn, get_template, bundling,
2383         ia64_st_address_bypass_p, ia64_ld_address_bypass_p, process_set,
2384         process_for_unwind_directive, ia64_hpux_file_end): Likewise.
2385         * config/ia64/ia64.h (ASM_OUTPUT_ADDR_VEC_ELT): Likewise.
2386         * config/ia64/ia64.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
2387         * config/ia64/predicates.md (got_symbolic_operand,
2388         sdata_symbolic_operand): Likewise.
2389         * config/ia64/vect.md (vcondv2sf): Likewise.
2390
2391 2005-04-27  Matt Thomas <matt@3am-software.com>
2392
2393         * config/vax/vax.c (legitimate_constant_address_p): New.  Formerly
2394         CONSTANT_ADDRESS_P in config/vax/vax.h
2395         (legitimate_constant_p): Added.  Formerly CONSTANT_P in vax.h. 
2396         (INDEX_REGISTER_P): New.
2397         (BASE_REGISTER_P): New.
2398         (indirectable_constant_address_p): New.  Adapted from
2399         INDIRECTABLE_CONSTANT_ADDRESS_P in vax.h. Use SYMBOL_REF_LOCAL_P.
2400         (indirectable_address_p): New.  Adapted from
2401         INDIRECTABLE_ADDRESS_P in vax.h.
2402         (nonindexed_address_p): New.  Adapted from
2403         GO_IF_NONINDEXED_ADDRESS in vax.h.
2404         (index_temp_p): New.  Adapted from INDEX_TERM_P in vax.h.
2405         (reg_plus_index_p): New.  Adapted from GO_IF_REG_PLUS_INDEX in vax.h.
2406         (legitimate_address_p): New.  Adapted from
2407         GO_IF_LEGITIMATE_ADDRESS in vax.h.
2408         (vax_mode_dependent_address_p): New.  Adapted from
2409         GO_IF_MODE_DEPENDENT_ADDRESS in vax.h.
2410         * config/vax/vax.h (CONSTANT_ADDRESS_P): Use
2411         legitimate_constant_address_p.
2412         (CONSTANT_P): Use legitimate_constant_p.
2413         (INDIRECTABLE_CONSTANT_ADDRESS_P): Removed.
2414         (INDIRECTABLE_ADDRESS_P): Removed.
2415         (GO_IF_NONINDEXED_ADDRESS): Removed.
2416         (INDEX_TEMP_P): Removed.
2417         (GO_IF_REG_PLUS_INDEX): Removed.
2418         (GO_IF_LEGITIMATE_ADDRESS): Use legitimate_address_p. Two
2419         definitions, depending on whether REG_OK_STRICT is defined.
2420         (GO_IF_MODE_DEPENDENT_ADDRESS): Use vax_mode_dependent_address_p.
2421         Two definitions, depending on whether REG_OK_STRICT is defined.
2422         * config/vax/vax-protos.h (legitimate_constant_address_p): Prototype
2423         added.
2424         (legitimate_constant_p): Prototype added.
2425         (legitimate_address_p): Prototype added.
2426         (vax_mode_dependent_address_p): Prototype added.
2427
2428 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
2429
2430         * tree.h (phi_arg_d): Expand a comment in phi_arg_d.
2431
2432 2005-04-27  Joseph S. Myers  <joseph@codesourcery.com>
2433
2434         PR c/21213
2435         * c-decl.c (finish_struct): Don't dereference NULL TYPE_FIELDS of
2436         transparent union.
2437
2438 2005-04-27  Joseph S. Myers  <joseph@codesourcery.com>
2439
2440         PR c/20740
2441         * c-format.c (init_dynamic_asm_fprintf_info): Give errors, not
2442         assertion failures, if __gcc_host_wide_int__ is not properly
2443         defined.
2444         (init_dynamic_diag_info): Give errors, not assertion failures, if
2445         location_t, tree or __gcc_host_wide_int__ are not properly
2446         defined.
2447
2448 2005-04-26  Kazu Hirata  <kazu@cs.umass.edu>
2449
2450         * tree-ssa-loop-ivopts.c (ivopts_data, decl_rtl_to_reset,
2451         n_iv_uses, iv_use, n_iv_cands, iv_cand,
2452         tree_ssa_iv_optimize_init, record_use, add_candidate_1,
2453         prepare_decl_rtl, free_loop_data,
2454         tree_ssa_iv_optimize_finalize): Use the VEC API instead of
2455         VARRAY.
2456
2457         * tree.h (tree_phi_node): Add a comment about the order of PHI
2458         arguments.
2459
2460 2005-04-26  Paul Brook  <paul@codesourcery.com>
2461
2462         * config/arm/arm.md (thumb_mulsi3): Use two-operand assembly form.
2463
2464 2005-04-26  Nathan Sidwell  <nathan@codesourcery.com>
2465
2466         * config/mips.mips.c (mips_legitimize_tls_address): Use
2467         gcc_unreachable.
2468
2469         * config/mmix/mmix.c (mmix_assemble_integer): Use gcc_assert.
2470         * config/mmix/crti.asm (_init): Reword comment to avoid 'abort'.
2471         * config/mmix/mmix.md (nonlocal_goto_receiver): Likewise.
2472
2473         * config/sparc/sparc.h (enum reg_class): Reword comment to avoid
2474         'abort'.
2475
2476 2005-04-26  Jeff Law  <law@redhat.com>
2477
2478         * tree-flow-inline.h (op_iter_next_must_and_may_def): New.
2479         (op_iter_init_must_and_may_def): Likewise.
2480         (unmodifiable_var_p): Move to a later point in the file.
2481         * tree-ssa-operands.h (FOR_EACH_SSA_MUST_AND_MAY_DEF_OPERAND): New.
2482         * tree-ssa-dse.c (need_imm_uses_for): Remove, no longer needed.
2483         (dse_record_phis): Directly check for virtual operands rather than
2484         using need_imm_uses_for.
2485         (dse_optimize_stmt): Handle V_MUST_DEF operands.  Handle case where
2486         store has multiple V_{MAY,MUST}_DEF operands.
2487
2488 2005-04-26  Andrew MacLeod  <amacleod@redhat.com>
2489
2490         * tree-cfg.c (bsi_replace): Delink immediate uses for the original
2491         stmt.
2492
2493 2005-04-26  Kazu Hirata  <kazu@cs.umass.edu>
2494
2495         * tree-cfg.c (lv_adjust_loop_header_phi): Speed up moving a
2496         call to find_edge outside a loop to go through a PHI chain.
2497
2498 2004-04-26  Richard Guenther  <rguenth@gcc.gnu.org>
2499
2500         PR tree-optimization/17598
2501         * fold-const.c (fold_binary): Fold comparisons of addresses
2502         of COMPONENT_REFs which reference the same field to
2503         comparisons of the addresses of the base objects.
2504
2505 2005-04-26  Julian Brown  <julian@codesourcery.com>
2506
2507         * config/arm/arm.c (arm_return_in_msb): New function.
2508         (arm_must_pass_in_stack): New function.
2509         (TARGET_RETURN_IN_MSB): Define target hook.
2510         (TARGET_MUST_PASS_IN_STACK): Define target hook.
2511         (arm_function_value): Pad small aggregate return.
2512         (arm_pad_arg_upward): New function.
2513         (arm_pad_reg_upward): New function.
2514         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Include complex values.
2515         (FUNCTION_ARG_PADDING): Define macro.
2516         (BLOCK_REG_PADDING): Define macro.
2517         (PAD_VARARGS_DOWN): Correct padding for AAPCS.
2518         * config/arm/arm-protos.h (arm_pad_arg_upward): Declare function.
2519         (arm_pad_reg_upward): Declare function.
2520
2521 2005-04-26  Kazu Hirata  <kazu@cs.umass.edu>
2522
2523         * basic-block.h (ei_cond): New.
2524         (FOR_EACH_EDGE): Call ei_cond.
2525
2526         PR tree-optimization/21047
2527         * fold-const.c (fold_binary): Abort on ASSERT_EXPR.
2528         (fold): Don't handle ASSERT_EXPR.
2529
2530 2005-04-25  Roger Sayle  <roger@eyesopen.com>
2531
2532         * sched-deps.c (sched_analyze_1): On STACK_REGS targets, x87, treat
2533         all writes to any stack register as a read/write dependency on
2534         FIRST_STACK_REG.
2535         (sched_analyze_2): Likewise, for reads from any stack register.
2536
2537 2005-04-25  Richard Henderson  <rth@redhat.com>
2538
2539         * final.c (output_addr_const): Revert 2005-04-09 change.
2540
2541 2005-04-25  Mike Stump  <mrs@apple.com>
2542
2543         * config/darwin.c (darwin_encode_section_info): Always set
2544         MACHO_SYMBOL_STATIC for all ! TREE_PUBLIC symbols.
2545
2546 2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2547
2548         * collect2.c, gcc.c, gcov-dump.c, gcov.c, gen-protos.c,
2549         gensupport.c, protoize.c, toplev.c: Replace calls to
2550         `unlock_stream' with `unlock_std_streams'.
2551
2552 2005-04-25  Devang Patel <dpatel@apple.com>
2553
2554         * dbxout.c (dbxout_type): Emit attribute vector.
2555         
2556 2005-04-05  Paul Brook  <paul@codesourcery.com>
2557
2558         * target-def.h (TARGET_CXX_USE_AEABI_ATEXIT): Define.
2559         * target.h (struct gcc_target): Add cxx.use_aeabi_atexit.
2560         * config/arm/arm.c (arm_cxx_atexit_name): New function.
2561         (TARGET_CXX_USE_AEABI_ATEXIT): New macro.
2562         * cp/decl.c (get_atexit_node): Reorder arguments for __aeabi_atexit.
2563         (register_dtor_fn): Likewise.
2564         * doc/tm.texi: Document TARGET_CXX_USE_AEABI_ATEXIT.
2565
2566 2005-04-25  Ian Lance Taylor  <ian@airs.com>
2567
2568         * c-common.def (EXPR_STMT): Remove, moved to C++ frontend.
2569         * c-common.h (EXPR_STMT_EXPR): Don't define.
2570         (c_common_stmt_codes): Don't define.
2571         * c-dump.c (c_dump_tree): Remove EXPR_STMT case.
2572         * c-gimplify.c (gimplify_expr_stmt): Remove.
2573         (c_gimplify_expr): Remove EXPR_STMT case.
2574         * c-objc-common.c (c_objc_common_init): Remove stmt_codes and call
2575         to INIT_STATEMENT_CODES.
2576         * c-pretty-print.c (pp_c_statement): Just call dump_generic_node.
2577
2578 2005-04-25  Jan Hubicka  <jh@suse.cz>
2579
2580         * tree-cfg.c (tree_duplicate_bb): Duplicate EH region too.
2581
2582         * except.c: Include diagnostic.h
2583         (dump_eh_tree, verify_eh_tree): New functions.
2584         * except.h (verify_eh_tree, dump_eh_tree, verify_eh_edges): Declare.
2585         * tree-cfg.c (tree_verify_flow_info): verify eh edges.
2586         (dump_function_to_file): dump eh tree.
2587         * tree-eh.c (mark_eh_edge): New function.
2588         (mark_eh_edge_found_error): New static variable.
2589         (verify_eh_edges): New function.
2590
2591 2005-04-25  Nathan Sidwell  <nathan@codesourcery.com>
2592
2593         * tree-ssa-alias.c (fieldoff_t): Remove.
2594         (fieldoff_s): typedef the structure itself.  Create a vector of
2595         objects.
2596         (push_fields_onto_fieldstack): Return count of fields pushed.
2597         Remove peeling of first field.  Adjust.
2598         (fieldoff_compare): Adjust.
2599         (create_overlap_variables_for): Adjust.
2600
2601 2005-04-25  Joseph S. Myers  <joseph@codesourcery.com>
2602
2603         * doc/invoke.texi (Blackfin Options): Avoid empty @opindex line.
2604
2605 2005-04-25  Joseph S. Myers  <joseph@codesourcery.com>
2606
2607         PR bootstrap/21215
2608         * doc/install.texi: Document correct assembler and linker to use
2609         on i?86-*-solaris2.10.
2610
2611 2005-04-25  Steven Bosscher  <stevenb@suse.de>
2612
2613         Fix PR tree-optimization/21173
2614
2615         * tree-ssa-pre.c (create_expression_by_pieces): Simplify code.
2616         Unshare expression we pass to force_gimple_operand.
2617
2618 2005-04-25  J"orn Rennecke <joern.rennecke@st.com>
2619             Stephen Clarke <stevec@superh.com>
2620             Roger Sayle <roger@eyesopen.com>
2621
2622         PR rtl-optimization/20413
2623         * cfgrtl.c (redirect_edge_and_branch): Use Pmode instead of
2624         VOIDmode for LABEL_REF.
2625         * final.c (shorten_branches): Likewise.
2626         * jump.c (mark_all_labels, redirect_exp_1): Likewise.
2627         * loop.c (reg_dead_after_loop): Likewise.
2628         * varasm.c (decode_addr_const): Likewise.
2629         * doc/rtl.texi: Document mode requirement for LABEL_REF.
2630
2631 2005-04-25  Ralf Corsepius  <ralf.corsepius@rtems.org>
2632
2633         * config.gcc (avr-*-*): Remove redundant "case".
2634
2635 2005-04-25  Kazu Hirata  <kazu@cs.umass.edu>
2636
2637         * tree-vect-analyze.c (vect_mark_relevant): Take
2638         VEC(tree,heap) instead of varray_type as an argument.
2639         (vect_mark_stmts_to_be_vectorized): Change the type of
2640         worklist to VEC(tree,heap).  Adjust uses of worklist.
2641
2642 2005-04-24  Devang Patel  <dpatel@apple.com>
2643
2644         *  config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New.
2645         
2646 2005-04-24  Ian Lance Taylor  <ian@airs.com>
2647
2648         * c-semantics.c (build_stmt): Remove test of specific tree codes
2649         for TREE_SIDE_EFFECTS handling.
2650
2651 2005-04-24  Per Bothner  <per@bothner.com>
2652
2653         * c-opts.c (finish_options):  Make the line-number of the <built-in>
2654         location 0, as assumed elsewhere, rather than 1.
2655
2656 2005-04-24  Kazu Hirata  <kazu@cs.umass.edu>
2657
2658         * tree-ssa-uncprop.c (equiv_stack): Change the type o
2659         VEC(tree,heap).
2660         (tree_ssa_uncprop, uncprop_finalize_block,
2661         uncprop_initialize_block): Update uses of equiv_stack.
2662
2663 2005-04-24  Richard Henderson  <rth@redhat.com>
2664
2665         PR rtl-opt/21163
2666         * simplify-rtx.c (simplify_binary_operation) <IOR>: Check
2667         for SCALAR_INT_MODE_P instead of not MODE_CC before returning
2668         constm1_rtx.
2669         <AND, LSHIFTRT, UMIN>: Use CONST0_RTX.
2670         <UDIV, UMOD>: Use CONST0_RTX and CONST1_RTX.
2671         <DIV, MOD>: Likewise.
2672
2673 2005-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2674
2675         * collect2.c (main): Unlock the stdio streams.
2676         * gcc.c (main): Likewise.
2677         * gcov-dump.c (main): Likewise.
2678         * gcov.c (main): Likewise.
2679         * gen-protos.c (main): Likewise.
2680         * gensupport.c (init_md_reader_args_cb): Likewise.
2681         * protoize.c (main): Likewise.
2682         * toplev.c (general_init): Likewise.
2683
2684 2005-04-24  Jakub Jelinek  <jakub@redhat.com>
2685
2686         PR middle-end/20991
2687         * cgraph.h (cgraph_local_info): Add vtable_method field.
2688         * varasm.c (mark_decl_referenced): If cgraph_global_info_ready
2689         and node is vtable_method, finalized and not reachable, don't do
2690         anything.
2691
2692 2005-04-24  Kazu Hirata  <kazu@cs.umass.edu>
2693
2694         * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Use
2695         COMPARISON_CLASS_P.
2696         * tree-ssa-pre.c (create_value_expr_from): Use
2697         CONSTANT_CLASS_P and REFERENCE_CLASS_P.
2698         * tree-ssa-propagate.c (stmt_makes_single_load,
2699         stmt_makes_single_store): Use REFERENCE_CLASS_P.
2700         * tree-vect-transform.c (vect_is_simple_cond): Use
2701         COMPARISON_CLASS_P.
2702         * tree-vrp.c (extract_range_from_assert,
2703         build_assert_expr_for, fp_predicate, has_assert_expr): Use
2704         COMPARISON_CLASS_P.
2705
2706         * tree-ssa-live.c (build_tree_conflict_graph): Change the type
2707         of tpa_to_clear to VEC(int,heap).  Update uses of
2708         tpa_to_clear.  Free tpa_to_clear at the end.
2709
2710 2005-04-24  Andrew Pinski  <pinskia@physics.uc.edu>
2711
2712         * tree.h (TREE_THIS_VOLATILE): Document the effect on a
2713         function decl.
2714
2715 2005-04-24  Nathan Sidwell  <nathan@codesourcery.com>
2716
2717         * config/rs6000/rs6000.c (rs6000_override_options): Use gcc_assert
2718         and gcc_unreachable as appropriate.
2719         (num_insns_constant, output_vec_const_move,
2720         build_mask64_2_operands, rs6000_output_dwarf_dtprel,
2721         rs6000_emit_set_const, rs6000_emit_move,
2722         spe_build_register_parallel, function_arg,
2723         rs6000_move_block_from_reg, altivec_expand_predicate_builtin,
2724         spe_expand_predicate_builtin, spe_expand_evsel_builtin,
2725         rs6000_expand_builtin, spe_init_builtins, altivec_init_builtins,
2726         rs6000_common_init_builtins, expand_block_clear,
2727         expand_block_move, validate_condition_mode, ccr_bit, extract_MB,
2728         extract_ME, rs6000_get_some_local_dynamic_name,
2729         rs6000_output_function_entry, print_operand,
2730         print_operand_address, rs6000_generate_compare, rs6000_emit_sCOND,
2731         output_cbranch, output_e500_flip_gt_bit,
2732         rs6000_emit_vector_compare, rs6000_emit_vector_compare,
2733         rs6000_emit_cmove, rs6000_emit_minmax, rs6000_split_multireg_move,
2734         compute_save_world_info, rs6000_stack_info,
2735         rs6000_emit_load_toc_table, rs6000_frame_related,
2736         spe_synthesize_frame_save, rs6000_emit_epilogue,
2737         rs6000_output_function_epilogue, rs6000_hash_constant, output_toc,
2738         output_function_profiler, rs6000_trampoline_size,
2739         rs6000_initialize_trampoline, find_addr_reg,
2740         rs6000_machopic_legitimize_pic_address,
2741         rs6000_initial_elimination_offset,
2742         rs6000_dbx_register_number): Likewise.
2743         * config/rs6000/rs6000.md (*fix_truncdfsi2_internal,
2744         *movdf_hardfloat32, *movdf_softfloat32, *fix_trunctfsi2_internal,
2745         *movti_power, *movti_string, call, call_value, sibcall,
2746         sibcall_value): Likewise.
2747         * config/rs6000/spe.md (*movdf_e500_double,
2748         *movv2si_internal): Likewise.
2749         * config/rs6000/rs6000.h (PREFERRED_RELOAD_CLASS): Remove 'abort'
2750         from comment.
2751
2752 2005-04-24  Richard Henderson  <rth@redhat.com>
2753
2754         PR target/21101
2755         * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Move guts to ...
2756         * config/i386/i386.c (ix86_cannot_change_mode_class): ... here.
2757         Deny modes smaller than 4 bytes.
2758         * config/i386/i386-protos.h: Update.
2759
2760 2005-04-24  Ralf Corsepius  <ralf.corsepius@rtems.org>
2761
2762         * config.gcc (h8300-*-rtems*): Add h8300-*-rtemscoff*.
2763         Switch h8300-*-rtems* to ELF.
2764
2765 2005-04-24  Kazu Hirata  <kazu@cs.umass.edu>
2766
2767         * vec.h (VEC_safe_grow): Replace grow with safe_grow.
2768
2769 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
2770
2771         * ipa-inline.c, tree-ssa-operands.h: Fix comment typos.
2772
2773 2005-04-23  Richard Guenther  <rguenth@gcc.gnu.org>
2774
2775         PR middle-end/21082
2776         * fold-const.c: Fold &a[i]-&a[j] to i-j.
2777
2778 2005-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
2779
2780         * tree-ssa-loop-niter.c (tree_simplify_using_condition): Expand simple
2781         definitions of ssa names in condition.  Split recusive part to ...
2782         (tree_simplify_using_condition_1): New function.
2783         (expand_simple_operations): New function.
2784
2785 2005-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
2786
2787         * tree-ssa-loop-ivopts.c (struct cost_pair): Add value field.
2788         (find_interesting_uses_cond): Do not use integer_zerop and
2789         integer_nonzerop to check for integer constants.
2790         (set_use_iv_cost): Record the value field.
2791         (determine_use_iv_cost_generic, determine_use_iv_cost_address,
2792         determine_use_iv_cost_outer): Set the value field of the cost pair.
2793         (may_eliminate_iv): Do not return the comparison code.
2794         (iv_elimination_compare): New function.
2795         (determine_use_iv_cost_condition): Set the value field.  Record
2796         noneliminable invariants correctly.
2797         (rewrite_use_compare, rewrite_use_outer): Use the value field.
2798
2799 2005-04-23  DJ Delorie  <dj@redhat.com>
2800
2801         * diagnostic.c (warning): Accept parameter to classify warning option.
2802         (warning0): New, for when a pointer to an error() like function is needed.
2803         * errors.c (warning): Likewise.
2804         * errors.h (warning, warning0): Adjust prototypes.
2805         * toplev.h (warning, warning0): Likewise.
2806
2807         * attribs.c, builtins.c, c-common.c, c-decl.c, c-format.c,
2808         c-gimplify.c, c-lex.c, c-objc-common.c, c-opts.c, c-parser.c,
2809         c-pragma.c, c-typeck.c, calls.c, cgraph.c, coverage.c, emit-rtl.c,
2810         fold-const.c, fortran/trans-decl.c, function.c, gcse.c,
2811         genautomata.c, haifa-sched.c, opts.c, passes.c, regclass.c,
2812         reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c,
2813         tree-dump.c, tree-inline.c, tree-mudflap.c, tree-optimize.c,
2814         tree-ssa.c, tree.c, varasm.c: Adjust warning() callers.
2815
2816         * config/alpha/alpha.c, config/arc/arc.c, config/arm/arm.c,
2817         config/avr/avr.c, config/bfin/bfin.c, config/c4x/c4x-c.c,
2818         config/c4x/c4x.c, config/cris/cris.c, config/darwin-c.c,
2819         config/darwin.c, config/darwin.h, config/h8300/h8300.c,
2820         config/i386/cygming.h, config/i386/djgpp.h, config/i386/i386.c,
2821         config/i386/winnt.c, config/ia64/ia64-c.c, config/ia64/ia64.c,
2822         config/ip2k/ip2k.c, config/m32r/m32r.c, config/m68hc11/m68hc11.c,
2823         config/m68k/m68k.c, config/mcore/mcore.c, config/mips/mips.c,
2824         config/mmix/mmix.c, config/ns32k/ns32k.c, config/pa/pa-hpux11.h,
2825         config/pa/pa.c, config/rs6000/aix43.h, config/rs6000/aix51.h,
2826         config/rs6000/aix52.h, config/rs6000/darwin.h,
2827         config/rs6000/rs6000-c.c, config/rs6000/rs6000.c,
2828         config/s390/s390.c, config/sh/sh.c, config/sh/sh.h,
2829         config/sh/symbian.c, config/sol2-c.c, config/sol2.c,
2830         config/stormy16/stormy16.c, config/v850/v850-c.c,
2831         config/v850/v850.c, config/xtensa/xtensa.c: Adjust warning()
2832         callers.
2833         
2834 2005-04-23  Richard Henderson  <rth@redhat.com>
2835
2836         PR rtl-opt/21102
2837         * simplify-rtx.c (simplify_binary_operation): Fix mode check before
2838         performing some integral scalar simplifications.
2839
2840 2005-04-23  Richard Henderson  <rth@redhat.com>
2841
2842         PR target/21099
2843         * config/i386/i386.c (ix86_split_to_parts): Use proper mode when
2844         simplifying CONST_VECTOR.
2845
2846 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
2847
2848         * tree-ssa-live.c (live_worklist): Take a stack allocated on
2849         heap as an argument.  Update uses of stack.
2850         (calculate_live_on_entry): Allocate stack on heap.
2851
2852         * tree-ssa-live.c (build_tree_conflict_graph): Allocate
2853         partition_link and tpa_nodes on heap.
2854
2855         * tree-ssa-dce.c (worklist): Change to VEC(tree,heap).
2856         (mark_stmt_necessary, propagate_necessity,
2857         mark_really_necessary_kill_operand_phis): Update uses of
2858         worklist.
2859         (tree_dce_init): Allocate worklist using VEC_alloc.
2860         (tree_dce_done): Free worklist using VEC_free.
2861
2862 2005-04-23  Mike Stump  <mrs@apple.com>
2863
2864         * config/darwin.c (machopic_indirection_name): Don't use
2865         quotes needlessly.
2866         (darwin_emit_unwind_label): Use user_label_prefix instead of
2867         "_".
2868
2869 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
2870
2871         * final.c, ipa-inline.c, varasm.c: Fix comment typos.
2872
2873 2005-04-23  Hans-Peter Nilsson  <hp@axis.com>
2874
2875         * config.gcc <cris-*>: Specify .opt files.
2876         * config/cris/cris.opt, config/cris/elf.opt, config/cris/aout.opt,
2877         config/cris/linux.opt: New files.
2878         * config/cris/aout.h (CRIS_SUBTARGET_SWITCHES)
2879         (CRIS_SUBTARGET_LONG_OPTIONS): Don't define.
2880         (TARGET_ELF): Override to 0.
2881         (CRIS_SUBTARGET_HANDLE_OPTION): Override to handle -melinux and
2882         -melinux-stacksize=N.
2883         * config/cris/cris.c: (cris_handle_option): New function.
2884         (TARGET_DEFAULT_TARGET_FLAGS): Override.
2885         (TARGET_HANDLE_OPTION): Override to cris_handle_option.
2886         (cris_override_options): Use MASK_*, not TARGET_MASK_*.
2887         * config/cris/cris.h (TARGET_MASK_SVINTO, TARGET_SVINTO,
2888         (TARGET_MASK_CCINIT, TARGET_CCINIT, TARGET_MASK_PDEBUG)
2889         (TARGET_PDEBUG, TARGET_MASK_SIDE_EFFECT_PREFIXES)
2890         (TARGET_SIDE_EFFECT_PREFIXES, TARGET_MASK_EXPAND_MUL)
2891         (TARGET_EXPAND_MUL, TARGET_MASK_STACK_ALIGN, TARGET_STACK_ALIGN)
2892         (TARGET_MASK_CONST_ALIGN, TARGET_CONST_ALIGN)
2893         (TARGET_MASK_DATA_ALIGN, TARGET_DATA_ALIGN)
2894         (TARGET_MASK_PROLOGUE_EPILOGUE, TARGET_PROLOGUE_EPILOGUE)
2895         (TARGET_MASK_ETRAX4_ADD, TARGET_ETRAX4_ADD)
2896         (TARGET_MASK_ALIGN_BY_32, TARGET_ALIGN_BY_32, TARGET_MASK_ELF)
2897         (TARGET_ELF, TARGET_MASK_LINUX, TARGET_LINUX)
2898         (TARGET_MASK_AVOID_GOTPLT, TARGET_AVOID_GOTPLT)
2899         (TARGET_MASK_MUL_BUG, TARGET_MUL_BUG, TARGET_SWITCHES)
2900         (CRIS_SUBTARGET_SWITCHES, TARGET_OPTIONS)
2901         (CRIS_SUBTARGET_LONG_OPTIONS): Don't define.
2902         (TARGET_LINUX): Define 0.
2903         (TARGET_DEFAULT): Use MASK_*, not TARGET_MASK_*.
2904         (CRIS_SUBTARGET_DEFAULT): Define to 0, not TARGET_MASK_ELF.
2905         (CRIS_SUBTARGET_DEFAULT): New empty default macro.
2906         * config/cris/linux.h (CRIS_SUBTARGET_SWITCHES): Don't define.
2907         (TARGET_LINUX): Override to 1.
2908         (CRIS_SUBTARGET_DEFAULT): Use MASK_*, not TARGET_MASK_*.
2909
2910 2005-04-23  Nathan Sidwell  <nathan@codesourcery.com>
2911
2912         * haifa-sched.c (schedule_block): Fix thinko in previous
2913         assertification patch.
2914
2915 2005-04-23  Richard Sandiford  <rsandifo@redhat.com>
2916
2917         * config.gcc (hppa[12]*-*-hpux10*): Add pa/pa-hpux.opt to
2918         $extra_options.  Also add pa/pa-hpux1010.opt for hpux10.[1-9]*.
2919         (hppa*64*-*-hpux11*): Add pa/pa-hpux1010.h to $tm_file.  Add
2920         pa/pa-hpux.opt, pa/pa-hpux1010.opt and pa/pa64-hpux.opt to
2921         $extra_options.  Also add pa/pa-hpux1111.opt for hpux11.[1-9]*.
2922         (hppa[12]*-*-hpux11*): Add pa/pa-hpux1010.h to $tm_file.  Add
2923         pa/pa-hpux.opt to $extra_options.  Also add pa/pa-hpux1111.opt
2924         for hpux11.[1-9]*.
2925         * config/pa/pa.h (architecture_type, rtx_def, pa_arch_string, pa_arch)
2926         (pa_fixed_range_string, pa_cpu_string, pa_unix_string, target_flags)
2927         (MASK_PA_11, MASK_DISABLE_FPREGS, TARGET_DISABLE_FPREGS)
2928         (MASK_NO_SPACE_REGS, TARGET_NO_SPACE_REGS, MASK_JUMP_IN_DELAY)
2929         (TARGET_JUMP_IN_DELAY, MASK_DISABLE_INDEXING, TARGET_DISABLE_INDEXING)
2930         (MASK_PORTABLE_RUNTIME, TARGET_PORTABLE_RUNTIME, MASK_GAS, TARGET_GAS)
2931         (MASK_SOFT_FLOAT, TARGET_SOFT_FLOAT, MASK_LONG_LOAD_STORE)
2932         (TARGET_LONG_LOAD_STORE, MASK_FAST_INDIRECT_CALLS)
2933         (TARGET_FAST_INDIRECT_CALLS, MASK_BIG_SWITCH, TARGET_BIG_SWITCH)
2934         (MASK_PA_20, MASK_SIO, TARGET_SIO, MASK_GNU_LD, TARGET_GNU_LD)
2935         (MASK_LONG_CALLS, TARGET_LONG_CALLS, TARGET_PA_11, TARGET_PA_20)
2936         (TARGET_SWITCHES, SUBTARGET_SWITCHES, TARGET_OPTIONS)
2937         (SUBTARGET_OPTIONS): Delete.
2938         (TARGET_PA_10): Redefine in terms of TARGET_PA_11 and TARGET_PA_20.
2939         (TARGET_SCHED_DEFAULT): Define to a PROCESSOR_* enum (PROCESSOR_8000)
2940         instead of a string.
2941         * config/pa/pa.c (pa_arch, pa_arch_string, pa_fixed_range_string)
2942         (pa_cpu_string, pa_unix_string): Delete.
2943         (pa_cpu): Initialize to TARGET_SCHED_DEFAULT.
2944         (flag_pa_unix): Initialize based on TARGET_HPUX_11_11 and
2945         TARGET_HPUX_10_10.
2946         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
2947         (pa_handle_option): New function.
2948         (override_options): Remove handling of -march=, -mfixed-range=,
2949         -mschedule= and -munix=.
2950         * config/pa/pa-hpux.h (SUBTARGET_SWITCHES): Delete.
2951         * config/pa/pa-hpux1010.h (SUBTARGET_OPTIONS): Delete.
2952         * config/pa/pa-hpux10.h (SUBTARGET_OPTIONS): Delete.
2953         * config/pa/pa-hpux1111.h (SUBTARGET_OPTIONS): Delete.
2954         * config/pa/pa-hpux11.h (SUBTARGET_OPTIONS): Delete.
2955         * config/pa/pa64-hpux.h (SUBTARGET_SWITCHES): Delete.
2956         * config/pa/pa64-start.h (TARGET_PA_11, TARGET_PA_20): #undef before
2957         redefining.
2958         * config/pa/pa.opt: New file.
2959         * config/pa/pa-hpux.opt: New file.
2960         * config/pa/pa-hpux1010.opt: New file.
2961         * config/pa/pa-hpux1111.opt: New file.
2962         * config/pa/pa64-hpux.opt: New file.
2963
2964 2005-04-22  David S. Miller  <davem@davemloft.net>
2965
2966         * rtl.h (CONST_DOUBLE): Fix comment, a CONST_DOUBLE holds an
2967         integer when it's mode is VOIDmode not DImode.
2968
2969 2005-04-22  Geoffrey Keating  <geoffk@apple.com>
2970
2971         * config/rs6000/rs6000.md (sync_add<mode>_internal,
2972         sync_addshort_internal, sync_sub<mode>_internal, sync_andsi_internal,
2973         sync_anddi_internal, sync_boolsi_internal, sync_booldi_internal,
2974         sync_boolc<mode>_internal, sync_boolc<mode>_internal2,
2975         sync_boolcc<mode>_internal, sync_lock_test_and_set<mode>): Use
2976         "bne- $-xxx" rather than local labels.
2977         (sync_lock_release<mode>): Add second operand.
2978         (lwsync): Use .long rather than a more meaningful opcode.
2979         * doc/md.texi (Standard Names): Add description of second
2980         parameter to sync_lock_test_and_set.
2981
2982 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
2983
2984         PR tree-optimization/21088
2985         * fold-const.c (fold_unary, fold_binary, fold_ternary):
2986         Export.
2987         * tree-vrp.c (compare_values): Use fold_binary to compare
2988         pointers.  Use boolean_type_node as the type of a comparison
2989         expression being folded.
2990         * tree.h: Add prototypes for fold_unary, fold_binary,
2991         fold_ternary.
2992
2993         * tree-ssa-dom.c: Fix formatting.
2994
2995 2005-04-22  Diego Novillo  <dnovillo@redhat.com>
2996
2997         * Makefile.in (tree-into-ssa.o): Add dependency on PARAMS_H.
2998         * lambda-code.c (perfect_nestify): Mark virtual operands in
2999         the moved statement for renaming.
3000         * params.def (PARAM_MIN_VIRTUAL_MAPPINGS): Define.
3001         (PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
3002         * params.h (MIN_VIRTUAL_MAPPINGS): Define.
3003         (VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
3004         * tree-flow.h (struct var_ann_d): Update comments.
3005         (rewrite_to_new_ssa_names_bb, rewrite_to_new_ssa_names,
3006         allocate_ssa_names, find_phi_node_for, dump_tree_ssa,
3007         debug_tree_ssa, debug_def_blocks, dump_tree_ssa_stats,
3008         debug_tree_ssa_stats, rewrite_ssa_into_ssa,
3009         dump_repl_tbl, debug_repl_tbl, dump_names_replaced_by,
3010         debug_names_replaced_by): Remove declarations.
3011         (delete_update_ssa, get_current_def, set_current_def): Declare.
3012         (rewrite_into_loop_closed_ssa): Add new argument.  Update
3013         all callers.
3014         * tree-into-ssa.c: Include params.h.
3015         (old_virtual_ssa_names): Remove.  Update all users.
3016         (need_to_replace_names_p): Remove.  Update all users.
3017         (struct update_ssa_stats_d): Declare.
3018         (update_ssa_stats): New local.
3019         (dump_tree_ssa, debug_tree_ssa, debug_def_blocks,
3020         dump_tree_ssa_stats, debug_tree_ssa_stats,
3021         dump_update_ssa, debug_update_ssa,
3022         dump_names_replaced_by, debug_names_replaced_by): Declare.
3023         (get_current_def, set current_def): Make extern.
3024         (is_old_name, is_new_name): Protect against references
3025         past the end of the sets.
3026         (add_new_name_mapping): Assert that OLD and NEW are
3027         different SSA names for the same symbol.
3028         When adding a virtual mapping, update stats for virtual
3029         mapping heuristic.
3030         (insert_phi_nodes_for): If UPDATE_P is true, create the
3031         LHS of the new PHI by duplicating SSA name VAR.
3032         (insert_phi_nodes_1): Remove.  Update all users.
3033         (insert_phi_nodes): Remove second argument.  Update all
3034         users.
3035         (maybe_replace_use, maybe_replace_def): New.
3036         (rewrite_update_stmt): Call them.
3037         (mark_def_interesting): Remove calls to is_gimple_reg.
3038         (prepare_phi_args_for_update): Remove.  Update all users.
3039         (prepare_block_for_update): Only process virtual operands
3040         and GIMPLE registers in normal form.
3041         (prepare_use_sites_for): New.
3042         (prepare_names_to_update): Rename from prepare_def_sites.
3043         Call prepare_use_sites_for.
3044         (dump_update_ssa): Rename from dump_repl_tbl.
3045         Update all users.
3046         Show statistics for virtual mapping heuristic.
3047         (debug_update_ssa): Rename from debug_debug_repl_tbl.
3048         (init_update_ssa): Initialize UPDATE_SSA_STATS.
3049         (delete_update_ssa): Make extern.
3050         (mark_set_for_renaming): If the set is empty, do nothing.
3051         (release_ssa_name_after_update_ssa): Update comment.
3052         (insert_updated_phi_nodes_for): Do not remove existing
3053         PHI nodes for symbols.
3054         (switch_virtuals_to_full_rewrite_p): New.
3055         (switch_virtuals_to_full_rewrite): New.
3056         (update_ssa): Call them.
3057         Clear REWRITE_THIS_STMT and REGISTER_DEFS_IN_THIS_STMT
3058         for every statement before updating.
3059         If all the names in NEW_SSA_NAMES have been marked for
3060         removal, do nothing.
3061         Only start at the top of the CFG if there are symbols in
3062         SYMS_TO_RENAME.
3063         (ssa_rewrite_finalize_block): Remove.
3064         (ssa_register_new_def): Remove.
3065         (ssa_rewrite_stmt): Remove.
3066         (ssa_rewrite_phi_arguments): Remove.
3067         (ssa_rewrite_initialize_block): Remove.
3068         (ssa_mark_def_sites): Remove.
3069         (ssa_mark_def_sites_initialize_block): Remove.
3070         (ssa_mark_phi_uses): Remove.
3071         (rewrite_ssa_into_ssa): Remove.
3072         * tree-phinodes.c (find_phi_node_for): Remove.
3073         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
3074         Call update_ssa.
3075         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops):
3076         Remove calls to verify_dominators and
3077         verify_loop_structure.
3078         (tree_unswitch_single_loop): Call update_ssa.
3079         * tree-ssa.c (verify_ssa): Assert that need_ssa_update_p
3080         returns false.
3081         Call verify_stmts.
3082         (delete_tree_ssa): Assert that need_ssa_update_p returns
3083         false.
3084         * tree-vect-transform.c (vect_transform_loop): Call update_ssa.
3085         * tree-vectorizer.c (allocate_new_names, rename_def_op,
3086         free_new_names): Remove.  Update all users.
3087         (rename_use_op): Call get_current_def.
3088         (rename_variables_in_bb): Do not handle any real or
3089         virtual definition.
3090         (slpeel_update_phis_for_duplicate_loop): Call
3091         get_current_def and set_current_def instead of using
3092         SSA_NAME_AUX.
3093         (slpeel_update_phi_nodes_for_guard2): Reformat comments.
3094         (slpeel_can_duplicate_loop_p): Call need_ssa_update_p,
3095         ssa_names_to_replace and delete_update_ssa.
3096         * doc/invoke.texi: Document --param min-virtual-mappings
3097         and --param virtual-mappings-ratio.
3098
3099 2005-04-22  Diego Novillo  <dnovillo@redhat.com>
3100
3101         * tree-cfg.c (tree_duplicate_bb): Call create_new_def_for
3102         for newly created PHI nodes.
3103         Call create_new_def_for for every new V_MAY_DEF and
3104         V_MUST_DEF on the copied statement.
3105         (struct ssa_name_map_entry): Remove.
3106         (ssa_name_map_entry_hash): Remove.
3107         (ssa_name_map_entry_eq): Remove.
3108         (allocate_ssa_names): Remove.
3109         (rewrite_to_new_ssa_names_def): Remove.
3110         (rewrite_to_new_ssa_names_use): Remove.
3111         (rewrite_to_new_ssa_names_bb): Remove.
3112         (rewrite_to_new_ssa_names): Remove.
3113         (tree_duplicate_sese_region): Remove variables ver,
3114         definitions, phi, ssa_name_map and bi.
3115         Call need_ssa_update_p instead of any_marked_for_rewrite_p.
3116         Call update_ssa.
3117         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Call
3118         update_ssa instead of rewrite_ssa_into_ssa.
3119         * tree-ssa-loop-manip.c (add_exit_phis_edge): Call
3120         create_new_def_for.
3121         (find_uses_to_rename_use): Add argument 'need_phis'.
3122         (find_uses_to_rename_stmt): Do not scan virtual operands.
3123         (find_uses_to_rename): Only scan PHI nodes for
3124         non-virtual names.
3125         (rewrite_into_loop_closed_ssa): Call update_ssa.
3126         (check_loop_closed_ssa_use): Ignore virtual operands.
3127         (check_loop_closed_ssa_stmt): Likewise.
3128         (verify_loop_closed_ssa): Do nothing if CURRENT_LOOPS is
3129         NULL.
3130         (rename_variables, set_phi_def_stmts): Remove.
3131         (tree_duplicate_loop_to_header_edge): Reformat comment.
3132         Remove variables BB, I and DEFINITIONS.
3133         Call need_ssa_update_p.
3134         Call update_ssa.
3135         (lv_adjust_loop_header_phi): Reformat comment.
3136         * tree-ssanames.c (ssa_names_to_rewrite): Remove.
3137         (marked_for_rewrite_p, any_marked_for_rewrite_p,
3138         mark_for_rewrite, unmark_all_for_rewrite,
3139         marked_ssa_names): Remove.  Update all users.
3140         (release_ssa_name): If VAR has been registered for SSA
3141         updating, do nothing.
3142         * tree-vrp.c (new_ssa_names, old_ssa_names): Remove.
3143         (build_assert_expr_for): Call register_new_name_mapping.
3144         (insert_range_assertions): Update call to update_ssa.
3145         * tree.h (mark_for_rewrite, unmark_all_for_rewrite,
3146         marked_for_rewrite_p, any_marked_for_rewrite_p,
3147         marked_ssa_names): Remove.
3148
3149 2005-04-22  Jeff Law  <law@redhat.com>
3150
3151         * tree-ssa-dom.c (block_defs_stack): Remove, no longer needed.
3152         (restore_currdefs_to_original_value): Likewise.
3153         (register_definitions_for_stmt): Likewise.
3154         (tree_ssa_dominator_optimize): No longer initialize CURRENT_DEF
3155         for each variable.  Do not allocate/free block_defs_stack either.
3156         Do not iterate if we just thread jumps.  Only iterate if the
3157         tree_cleanup_cfg does useful work (temporary).
3158         (dom_opt_initialize_block): No longer push a marker on
3159         BLOCK_DEFS_STACK.
3160         (dom_opt_finalize_block): Removal call to restore currdefs.
3161         Relax restrictions for recording edge equivalences.
3162         (record_equivalences_from_phis): No longer need to track
3163         CURRENT_DEF.
3164         (optimize_stmt): Similarly.
3165         (thread_across_edge): Simplify by removing the requirement that
3166         statements in the block we are threading through must be nops.
3167         (initialize_hash_element): Handle GOTO_EXPR.
3168
3169 2005-04-22  David S. Miller  <davem@davemloft.net>
3170
3171         * sched-vis.c (print_value): Use CONST_DOUBLE_LOW and
3172         CONST_DOUBLE_HIGH.
3173         * config/sparc/sparc.c (sparc_rtx_costs): Likewise, and
3174         fix check on CONST_DOUBLE mode.  It should be VOIDmode
3175         when it is representing an integer.
3176
3177 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
3178
3179         * builtins.c (gimplify_va_arg_expr): Reword comments to avoid
3180         'abort'. Use gcc_assert and gcc_unreachable as appropriate.
3181         * c-format.c (get_constant, decode_format_attr, get_flag_spec, 
3182         find_char_info_specifier_index,
3183         find_length_info_modifier_index): Likewise.
3184         * c-typeck.c (composite_type, pop_init_level): Likewise.
3185         * combine.c (cant_combine_insn_p, try_combine): Likewise.
3186         * cse.c (cse_insn): Likewise
3187         * dominance.c (calc_dfs_tree): Likewise
3188         dwarf2out.c (loc_descriptor_from_tree_1,
3189         add_abstract_origin_attribute, force_decl_die,
3190         force_type_die): Likewise
3191         emit-rtl.c (operand_subword_force): Likewise
3192         explow.c (hard_function_value): Likewise
3193         expmed.c (store_bit_field, expand_divmod,
3194         emit_store_flag_force): Likewise
3195         expr.c (emit_move_multi_word, store_expr,
3196         expand_expr_real_1): Likewise
3197         final.c (this_is_asm_operands, shorten_branches, final_scan_insn,
3198         output_operand): Likewise
3199         flow.c (recompute_reg_usage): Likewise
3200         * function.c (assign_stack_temp_for_type, assign_temp, 
3201         handle_epilogue_set): Likewise
3202         * genextract.c (main): Likewise
3203         * gimplify.c (mostly_copy_tree_r, gimplify_return_expr,
3204         gimplify_modify_expr_rhs, gimplify_expr): Likewise
3205         * haifa-sched.c (ready_lastpos, ready_remove_first, ready_element,
3206         ready_remove, rm_line_notes, rm_other_notes,
3207         schedule_block): Likewise
3208         mips-tfile.c (copy_object, out_of_bounds): Likewise
3209
3210 2005-04-22 David Edelsohn  <edelsohn@gnu.org>
3211
3212         PR target/20813
3213         * config/rs6000/default64.h (TARGET_DEFAULT): Add MASK_PPC_GFXOPT.
3214         * config/rs6000/rs6000.c (processor_target_table): Rename rs64a to
3215         rs64.  Add MASK_PPC_GFXOPT to powerpc64 and rs64.
3216         (rs6000_init_libfuncs): Set TFmode optabs to xlq names if
3217         TARGET_XL_COMPAT.
3218         * doc/invoke.texi (PowerPC options): Change rs64a to rs64.
3219
3220 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
3221
3222         * lambda-code.c: Define VEC(int,heap), VEC(lambda_loop,heap).
3223         (gcc_tree_to_linear_expression): Convert to heap allocated
3224         vectors.
3225         (gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
3226         lbv_to_gcc_expression, lle_to_gcc_expression,
3227         lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest, 
3228         perfect_nestify): Likewise.
3229         lambda.h (gcc_loopnest_to_lambda_loopnest,
3230         lambda_loopnest_to_gcc_loopnest): Likewise.
3231         tree-loop-linear.c (linear_transform_loops): Likewise.
3232
3233 2005-04-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
3234
3235         * config/sparc/predicates.md (arith_double_operand): Use
3236         trunc_int_for_mode if HOST_BITS_PER_WIDE_INT >=64.
3237         * config/sparc/sparc.md (movqi, movhi, movsi, movqi): Use gen_int_mode.
3238         (DImode, DFmode constant splitters): Likewise.  Remove code for
3239         TARGET_ARCH64 && HOST_BITS_PER_WIDE_INT < 64.
3240         (logical constant splitters): Use const_int_operand predicate.
3241         (lshrsi3_extend): Remove code for TARGET_ARCH64 &&
3242         HOST_BITS_PER_WIDE_INT < 64.
3243
3244 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
3245
3246         * config/pa/pa.c (legitimize_pic_address): Use gcc_assert and
3247         gcc_unreachable as appropriate.
3248         (force_mode, emit_move_sequence, singlemove_string,
3249         output_move_double, output_fp_move_double, find_addr_reg,
3250         output_block_move, output_block_clear, output_and,
3251         output_64bit_and, output_ior, output_64bit_ior, store_reg_modify,
3252         pa_adjust_cost, pa_issue_rate, print_operand,
3253         output_global_address, output_arg_descriptor, output_cbranch,
3254         output_lbranch, output_bb, output_bvb, output_dbra, output_movb,
3255         output_call): Likewise.
3256         * config/pa/pa.md (call, call_value, sibcall, sibcall_value,
3257         prefetch, prefetch_cc, prefetch_nocc): Likewise.
3258
3259 2005-04-22  Zdenek Dvorak  <dvorakz@suse.cz>
3260
3261         * Makefile.in (LIBGCOV): Add _gcov_interval_profiler,
3262         _gcov_pow2_profiler and _gcov_one_value_profiler.
3263         (tree-profile.o): Add GGC_H and gt-tree-profile.h dependency.
3264         (GTFILES): Add $(srcdir)/tree-profile.c.
3265         * gcov-io.h (__gcov_interval_profiler, __gcov_pow2_profiler,
3266         __gcov_one_value_profiler): Declare.
3267         * gimplify.c (force_gimple_operand): Check whether the statements
3268         should be produced in ssa form.
3269         (force_gimple_operand_bsi): New function.
3270         * libgcov.c (__gcov_interval_profiler, __gcov_pow2_profiler,
3271         __gcov_one_value_profiler): New functions.
3272         * rtl-profile.c (rtl_gen_pow2_profiler): Only measure whether
3273         the profiled value is a power of two or not.
3274         * tree-cfg.c (tree_block_ends_with_condjump_p): Handle empty blocks.
3275         * tree-flow.h (in_ssa_p): Declare.
3276         (force_gimple_operand_bsi): Declare.
3277         * tree-into-ssa.c (in_ssa_p): New variable.
3278         (rewrite_into_ssa): Set in_ssa_p.
3279         * tree-outof-ssa.c (rewrite_out_of_ssa): Set in_ssa_p.
3280         * tree-profile.c: Include ggc.h and gt-tree-profile.h.
3281         (gcov_type_node, tree_interval_profiler_fn, tree_pow2_profiler_fn,
3282         tree_one_value_profiler_fn): New variables.
3283         (tree_init_edge_profiler): Initialize the profiler function decls.
3284         (tree_gen_edge_profiler): Use global gcov_type_node.
3285         (prepare_instrumented_value): New function.
3286         (tree_gen_interval_profiler, tree_gen_interval_profiler,
3287         tree_gen_one_value_profiler): Call the library functions instead of
3288         creating instrumentation code.
3289         * tree.c (build_fn_decl): New function.
3290         * tree.h (build_fn_decl): Declare.
3291         * value-prof.c (rtl_divmod_values_to_profile,
3292         rtl_find_values_to_profile, rtl_mod_pow2_value_transform,
3293         tree_mod_pow2_value_transform, tree_find_values_to_profile):
3294         Do not handle may_be_other and precise values of exponents at pow2
3295         profiler.
3296         (tree_mod_subtract_transform): Reflect that value field of
3297         histogram has changed meaning.
3298         (tree_divmod_values_to_profile): Record the values correctly.
3299         (tree_values_to_profile): Update comment.
3300         * value-prof.h (struct histogram_value_t): Remove pow2 data.
3301
3302 2005-04-22  Joseph S. Myers  <joseph@codesourcery.com>
3303
3304         * varasm.c (do_assemble_alias): Return early if TREE_ASM_WRITTEN
3305         (decl).
3306
3307 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
3308
3309         * config/i386/i386.md (length_immediate): Use gcc_assert or
3310         gcc_unreachable, as appropriate.
3311         (*movsi_1, *movqi_1, reload_outqi, *movdi_1_rex64, *pushsf,
3312         *pushsf_rex64, *truncxfsf2_mixed, *truncxfsf2_i387,
3313         *truncxfdf2_mixed, *truncxfdf2_i387, *adddi_1_rex64,
3314         *adddi_2_rex64, *adddi_3_rex64, *adddi_4_rex64, *adddi_5_rex64,
3315         *addsi_1, addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
3316         *addsi_3_zext, *addsi_4, *addsi_5, *addhi_1_lea, *addhi_1,
3317         *addhi_2, *addhi_3, *addhi_4, *addhi_5, *addqi_1_lea, *addqi_1,
3318         *addqi_1_slp, *addqi_2, *addqi_3, *addqi_4, *addqi_5, addqi_ext_1,
3319         *addqi_ext_1_rex64, *anddi_1_rex64, *andsi_1, *andhi_1,
3320         *ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashlsi3_1, *ashlsi3_1_zext,
3321         *ashlsi3_cmp, *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1,
3322         *ashlhi3_cmp, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
3323         pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64,
3324         pro_epilogue_adjust_stack_rex64_2, prefetch, *prefetch_sse,
3325         *prefetch_sse_rex): Likewise.
3326         * config/i386/predicates.md (x86_64_immediate_operand,
3327         x86_64_zext_immediate_operand, symbolic_operand,
3328         no_seg_address_operand, aligned_operand,
3329         memory_displacement_operand): Likewise.
3330         * config/i386/sse.md (*mov<mode>_internal,
3331         *movv2df_internal): Likewise.
3332
3333 2005-04-22  Jan Hubicka  <jh@suse.cz>
3334
3335         * Makefile.in (ipa.o, ipa-inline.o): New files.
3336         * cgraph.h (cgraph_remove_unreachable_nodes, cgraph_postorder,
3337         cgraph_decide_inlining_incrementally, cgraph_clone_inlined_nodes,
3338         cgraph_mark_inline_edge, cgraph_default_inline_p): Declare.
3339         * cgraphunit.c (cgraph_default_inline_p,
3340         cgraph_decide_inlining_incrementally,  ncalls_inlined,
3341         nfunctions_inlined, initial_insns, overall_insns, 
3342         cgraph_estimate_size_after_inlining, cgraph_estimate_growth,
3343         cgraph_clone_inlined_nodes, cgraph_mark_inline_edge,
3344         cgraph_mark_inline, cgraph_check_inline_limits,
3345         cgraph_default_inline_p, cgraph_recursive_inlining_p,
3346         update_callee_keys, lookup_recursive_calls,
3347         cgraph_decide_recursive_inlining, cgraph_set_inline_failed,
3348         cgraph_decide_inlining_of_small_functions, cgraph_decide_inlining,
3349         cgraph_decide_inlining_incrementally, cgraph_gate_inlining,
3350         pass_ipa_inline): Move to ipa-inline.c
3351         (cgraph_postorder, cgraph_remove_unreachable_nodes): Move to ipa.c
3352         * ipa.c: New file.
3353         * ipa-inline.c: New file.
3354
3355 2005-04-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
3356
3357         * doc/invoke.texi (SPARC options): Document that -mapp-regs
3358         is turned off by default on Solaris.
3359
3360 2005-04-21  Roger Sayle  <roger@eyesopen.com>
3361
3362         * c-common.h (objc_build_method_signature): Update prototype.
3363         * stub-objc.c (objc_build_method_signature): Update the stub
3364         implementation to accept and ignore additional parameter.
3365         * c-parser.c (c_parser_objc_method_decl): Reorgnize to pass
3366         the value of ellipsis to objc_build_method_signature instead
3367         of setting TREE_OVERFLOW on the parms TREE_LIST node.
3368
3369 2005-04-21  Geoffrey Keating  <geoffk@apple.com>
3370
3371         * config/rs6000/rs6000-protos.h (rs6000_emit_sync): New.
3372         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Use
3373         gen_rtx_* not gen_rtx_fmt_*.
3374         (rs6000_emit_vector_select): Likewise.
3375         (rs6000_emit_sync): New.
3376         * config/rs6000/rs6000.md (GPR, INT, INT1): New mode macros.
3377         (larx, stcx, cmp): New mode substitutions.
3378         (UNSPEC_SYNC, UNSPEC_SYNC_OP, UNSPEC_SYNC_SWAP, UNSPEC_LWSYNC,
3379         UNSPEC_ISYNC): New constants.
3380         (rlwinm): Give name.
3381         (memory_barrier, isync, lwsync): New insns.
3382         (sync_compare_and_swap<mode>, sync_lock_test_and_set<mode>): New insn.
3383         (sync_lock_release<mode>): New expander.
3384         (sync_add<mode>, sync_sub<mode>, sync_ior<mode>, sync_and<mode>,
3385         sync_xor<mode>, sync_nand<mode>, sync_old_add<mode>,
3386         sync_old_sub<mode>, sync_old_ior<mode>, sync_old_and<mode>,
3387         sync_old_xor<mode>, sync_old_nand<mode>, sync_new_add<mode>,
3388         sync_new_sub<mode>, sync_new_ior<mode>, sync_new_and<mode>,
3389         sync_new_xor<mode>, sync_new_nand<mode>): New expanders.
3390         (sync_add<mode>_internal, sync_addshort_internal,
3391         sync_sub<mode>_internal, sync_andsi_internal, sync_anddi_internal,
3392         sync_boolsi_internal, sync_booldi_internal, sync_boolc<mode>_internal,
3393         sync_boolc<mode>_internal2, sync_boolcc<mode>_internal): New insns.
3394
3395         * doc/md.texi (Standard Names): sync_compare_and_swap's operand 0
3396         is the memory before, not after, the operation.  Clarify
3397         barrier requirements.
3398
3399 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
3400
3401         * cfghooks.h (struct cfg_hooks): Reword comments to avoid 'abort'.
3402         * lambda.h (lambda_vector_min_nz): Likewise.
3403         * langhooks.h (struct lang_hooks_for_types,
3404         struct lang_hooks): Likewise.
3405         * output.h (assemble_integer, this_is_asm_operands): Likewise.
3406         * tree.h: Likewise.
3407         * vec.h: Likewise.
3408         * tree-flow-inline.h (relink_imm_use): Use gcc_assert.
3409         
3410         * optabs.c (prepare_cmp_insn, emit_cmp_and_jump_insns): Reword
3411         comments to avoid 'abort'.  Use gcc_assert as necessary.
3412         * opts.c (common_handle_option): Likewise.
3413         * pretty-print.c (pp_base_format_text): Likewise.
3414         * print-rtl.c (print_rtx): Likewise.
3415         * read-rtl.c (read_rtx_filename, read_rtx_1): Likewise.
3416         * regmove.c (try_auto_increment): Likewise.
3417         * reload.c (find_valid_class, find_reloads_toplev,
3418         find_equiv_reg): Likewise.
3419         * reload1.c (reload, forget_old_reloads_1, function_invariant_p, 
3420         merge_assigned_reloads): Likewise.
3421         * tree-inline.c (inline_forbidden_p_1,
3422         estimate_num_insns_1): Likewise.
3423         * tree-optimize.c (execute_todo): Likewise.
3424         * tree-outof-ssa.c (eliminate_phi): Likewise.
3425         * tree-ssa-alias.c (add_pointed_to_expr): Likewise.
3426         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Likewise.
3427         * tree-ssa-operands.c (parse_ssa_operands,
3428         get_indirect_ref_operands, create_ssa_artficial_load_stmt): Likewise.
3429         * tree-ssa-pre.c (find_or_generate_expression): Likewise.
3430         * tree-ssanames.c (release_ssa_name): Likewise.
3431         * tree.c (int_bit_position, int_byte_position, tree_low_cst, 
3432         walk_tree): Likewise.
3433
3434         * tree-ssa-operands.c (verify_abort): Fold into ..
3435         (verify_imm_links): ... here.
3436
3437 2005-04-21  Richard Henderson  <rth@redhat.com>
3438
3439         * config/alpha/sync.md (sync_new_nand<I48MODE>): Fix constraints
3440         on non-memory operand for previous inversion.
3441
3442 2005-04-21  Devang Patel  <dpatel@apple.com>
3443
3444         PR optimization/20994
3445         * tree-if-conv.c (find_phi_replacement_condition): Avoid generating
3446         x = !(a == b) : p , q;.
3447         (pass_if_conversion): Verify stmts and flow.
3448         
3449 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
3450
3451         * optabs.c (gen_conditional_trap): Restore #define.
3452
3453         * alias.c (true_dependence): Remove 'abort' from comments. Use
3454         gcc_assert and gcc_unreachable as appropriate.
3455         (canon_true_dependence): Likewise.
3456         * bb-reorder.c (connect_traces): Likewise.
3457         * c-common.c (c_add_case_label): Likewise.
3458         * c-decl.c (finish_function): Likewise.
3459         * caller-save.c (insert_restore, insert_save): Likewise.
3460         * cfg.c (update_bb_profile_for_threading): Likewise.
3461         * cfganal.c (flow_active_insn_p): Likewise.
3462         * cfgexpand.c (add_reg_br_prob_note): Likewise.
3463         * cfgrtl.c (rtl_redirect_edge_and_branch_force, rtl_split_edge,
3464         cfg_layout_merge_blocks): Likewise.
3465         * ifcvt.c (cond_exec_process_insns, merge_if_block,
3466         find_if_block): Likewise.
3467         * integrate.c (allocate_initial_values): Likewise.
3468         * jump.c (reverse_condition, reverse_condition_maybe_unordered,
3469         swap_condition, unsigned_condition, signed_condition,
3470         mark_jump_label, invert_jump_1, rtx_renumbered_equal_p,
3471         reg_or_subregno): Likewise.
3472         * lambda-code.c (lambda_compute_auxillary_space,
3473         lambda_transform_legal_p): Likewise.
3474         * lambda-mat.c (lambda_matrix_inverse_hard): Likewise.
3475         * langhooks.c (lhd_set_decl_assembler_name, lhd_type_promotes_to,
3476         lhd_incomplete_type_error, lhd_expand_expr,
3477         lhd_types_compatible_p, lhd_tree_size): Likewise.
3478         * lcm.c (create_pre_exit, optimize_mode_switching): Likewise.
3479         * local-alloc.c (update_equiv_regs): Likewise.
3480         * loop-unroll.c (peel_loop_completely
3481         unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
3482         peel_loop_simple, unroll_loop_stupid,
3483         analyze_iv_to_split_insn): Likewise.
3484         * loop.c (gen_prefetch, find_and_verify_loops,
3485         basic_induction_var): Likewise.
3486         * modulo-sched.c (normalize_sched_times, check_nodes_order): Likewise.
3487         * value-prof.c (tree_find_values_to_profile): Likewise.
3488         * varasm.c (named_section, default_assemble_integer,
3489         decode_addr_const): Likewise.
3490
3491 2005-04-21 Alan Modra  <amodra@bigpond.net.au>
3492            Fariborz Jahanian <fjahanian@apple.com>
3493
3494         * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Fix size of
3495         portion of argument passed in fpr.
3496         * expr.c (emit_push_insn): Fix computation of 'offset' used to
3497         decide on partial argument save on stack.
3498
3499 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
3500
3501         * config/sparc/predicates.md, config/sparc/sparc.md: Fix
3502         comment typos.
3503
3504 2005-04-21  Jan Hubicka  <jh@suse.cz>
3505
3506         * cgraphunit.c: Include tree-pass.h
3507         (cgraph_decide_recursive_inlining,
3508         cgraph_decide_inlining_of_small_function, cgraph_set_inline_failed,
3509         cgraph_decide_inlining): Dump goes to dump_file.
3510         (cgraph_optimize): Call ipa passes instead of inliner.
3511         (cgraph_gate_inlining, pass_ipa_inline): New.
3512         * tree-optimize.c (all_ipa_passes): New static variable.
3513         (register_one_dump_file): Dead with IPA passes.
3514         (register_dump_files): Likewise.
3515         (init_tree_optimization_passes): Initialize IPA passes.
3516         (execute_todo): Do cgraph dump when asked to, do not dump function body
3517         for IPA pass.
3518         * tree-pass.h (TODO_dump_cgraph): New macro.
3519         (ipa_passes): Declare.
3520         * Makefile.in (cgraphunit.o): Add dependency on cgraphunit.h
3521
3522 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
3523
3524         * config/i386/i386.c (type_natural_mode): Use gcc_unreachable and
3525         gcc_assert instead of abort.
3526         (classify_argument, examine_argument, construct_container,
3527         contains_128bit_aligned_vector_p, ix86_check_movabs,
3528         standard_80387_constant_opcode, standard_80387_constant_rtx,
3529         ix86_initial_elimination_offset, ix86_compute_frame_layout,
3530         pro_epilogue_adjust_stack, ix86_expand_epilogue,
3531         ix86_address_cost, legitimate_address_p, legitimize_pic_address,
3532         legitimize_tls_address, output_pic_addr_const,
3533         i386_output_dwarf_dtprel, put_condition_code, print_reg,
3534         get_some_local_dynamic_name, print_operand, print_operand_address,
3535         output_387_binary_op, emit_i387_cw_initialization,
3536         output_fix_trunc, output_fp_compare, ix86_output_addr_vec_elt,
3537         ix86_expand_clear, ix86_expand_binary_operator,
3538         ix86_expand_unary_operator, ix86_match_ccmode, ix86_cc_mode,
3539         ix86_cc_modes_compatible, ix86_fp_comparison_codes,
3540         ix86_fp_comparison_arithmetics_cost, ix86_expand_fp_compare,
3541         ix86_expand_branch, ix86_expand_setcc,
3542         ix86_expand_carry_flag_compare, ix86_expand_fp_movcc,
3543         ix86_expand_int_addcc, ix86_split_to_parts, ix86_split_long_move,
3544         ix86_expand_movmem, ix86_expand_call, assign_386_stack_local,
3545         memory_address_length, ix86_attr_length_immediate_default,
3546         ix86_attr_length_address_default, ix86_agi_dependant,
3547         x86_initialize_trampoline, ix86_init_mmx_sse_builtins,
3548         ix86_expand_binop_builtin, ix86_force_to_memory,
3549         ix86_secondary_memory_needed, ix86_avoid_jump_misspredicts,
3550         x86_emit_floatuns): Likewise.
3551         * config/i386/netware.c (gen_regparm_prefix,
3552         i386_nlm_strip_name_encoding): Likewise.
3553         * config/i386/winnt.c (i386_pe_mark_dllexport): Likewise.
3554
3555 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
3556
3557         * optabs.c (gen_condiational_trap): Remove #define.
3558         (add_equal_note): Assertify. Remove explicit indirection from
3559         call via function pointer.
3560         (expand_ternary_op, expand_simple_binop, expand_binop,
3561         expand_twoval_unop, expand_twoval_binop,
3562         expand_twoval_binop_libfunc, expand_simple_unop expand_unop,
3563         emit_unop_insn,  emit_no_conflict_block,  prepare_cmp_insn,
3564         prepare_operand emit_cmp_and_jump_insn_1, emit_cmp_and_jump_insns,
3565         prepare_float_lib_cmp, emit_conditional_move,
3566         emit_conditional_add, gen_add2_insn, gen_add3_insn,
3567         have_add2_insn, gen_sub2_insn, gen_sub3_insn, have_sub2_insn,
3568         expand_float, expand_fix, debug_optab_libfuncs, gen_cond_trap,
3569         vector_compare_rtx, expand_vec_cond_expr): Likewise.
3570
3571 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
3572
3573         * vec.h: Update API to separate allocation mechanism from type.
3574         (VEC_safe_grow): New.
3575         * vec.c (calculate_allocation): New.
3576         (vec_gc_o_reserve, vec_heap_o_reserve): Adjust.
3577         (vec_gc_free, vec_heap_free): Remove.
3578         * gengtype-lex.l (DEF_VEC_): Process mult-argument macros.  Adjust.
3579         (VEC): Likewise.
3580         (mangle_macro_name): New.
3581         (struct macro_def): New.
3582         (struct macro): Add multiple argument values.
3583         (macro_expans_end): New.
3584         (push_macro_expansion):  Chain on new macro. Process multiple
3585         args, create follow on expansion. Return follow on argument.
3586         (macro_input): Deal with multiple arguments.
3587         
3588         * tree.h: Define VEC(tree,heap) and VEC(tree,gc).
3589         (struct tree_binfo): Adjust.
3590         * basic-block.h: Define VEC(edge,gc).
3591         (struct edge_def): Adjust.
3592         (struct basic_block_def, struct edge_iterator): Likewise.
3593         (ei_container, ei_start_1, ei_last_1): Likewise.
3594         * cfg.c (connect_src, connect_dest): Likewise.
3595         * cfgrtl.c (force_nonfallthru_and_redirect)
3596         * dbxout.c (dbxout_type)
3597         * dwarf2out.c (gen_member_die)
3598         * lambda-code.c: Define VEC(int,gc), VEC(lambda_loop,gc).
3599         (gcc_tree_to_linear_expression): Adjust.
3600         (gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
3601         lbv_to_gcc_expression, lle_to_gcc_expression,
3602         lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
3603         perfect_nestify): Likewise.
3604         * lambda.h (gcc_loopnest_to_lambda_loopnest,
3605         lambda_loopnest_to_gcc_loopnest): Adjust prototypes.
3606         * profile.c (instrument_values): Adjust.
3607         * tree-cfg.c (modified_noreturn_calls): Adjust.
3608         (remove_fallthru_edge): Likewise.
3609         * tree-dump.c (dequeue_and_dump): Adjust.
3610         * tree-flow-inline.h (mark_stmt_modified): Adjust.
3611         * tree-flow.h (modified_noreturn_calls): Adjust.
3612         (tree_on_heap): Remove. (yay!)
3613         (register_new_def): Adjust.
3614         * tree-into-ssa.c: Define VEC(int,heap).
3615         (block_defs_stack): Adjust.
3616         (find_idf, insert_phi_nodes, register_new_def,
3617         rewrite_initialize_block, rewrite_finalize_block,
3618         register_new_update_single, rewrite_update_init_block,
3619         rewrite_update_fini_block, rewrite_blocks,
3620         ssa_rewrite_finalize_block, ssa_register_new_def,
3621         ssa_rewrite_initialize_block, rewrite_ssa_into_ssa): Likewise.
3622         * tree-loop-linear.c (linear_transform_loops): Adjust.
3623         * tree-ssa-alias.c: Define VEC(fieldoff_t,heap).
3624         (push_fields_onto_fieldstack, create_overlap_variables_for): Adjust.
3625         * tree-ssa-dom.c (avail_exprs_stack, block_defs_stack,
3626         stmts_to_rescan, const_and_copies_stack, nonzero_vars_stack,
3627         vrp_variables_stack): Adjust declarations.
3628         (tree_ssa_dominator_optimize): Adjust.
3629         (dom_opt_initialize_block, remove_local_expressions_from_table,
3630         restore_nonzero_vars_to_original_value,
3631         restore_vars_to_original_value,
3632         restore_currdefs_to_original_value, dom_opt_finalize_block,
3633         record_var_is_nonzero, record_cond, record_const_or_copy_1,
3634         optimize_stmt, update_rhs_and_lookup_avail_expr,
3635         lookup_avail_expr, record_range): Likewise.
3636         * tree-ssa-pre.c: Define VEC(basic_block,heap).
3637         (compute_antic_aux): Adjust.
3638         (inserted_exprs, create_expression_by_pieces, 
3639         insert_into_preds_of_block, eliminate, mark_operand_necessary, 
3640         remove_dead_inserted_code, fini_pre): Likewise.
3641         * tree-ssa-propagate.c (interesting_ssa_edges): Adjust.
3642         (varying_ssa_edges, add_ssa_edge, process_ssa_edge_worklist. 
3643         ssa_prop_init): Likewise.
3644         * tree-ssa.c: Define VEC(bitmap,heap).
3645         (verify_name_tags): Adjust.
3646         * value-prof.c (rtl_divmod_values_to_profile): Adjust.
3647         (insn_prefetch_values_to_profile, rtl_find_values_to_profile,
3648         tree_divmod_values_to_profile, tree_find_values_to_profile,
3649         value_profile_transformations): Likewise.
3650         * value-prof.h: Define VEC(histogram_value,heap).
3651         * varasm.c: Remove alias_pair pointer typedef, define
3652         VEC(alias_pair,gc).
3653         (finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.
3654         
3655         * config/pa/pa.c (typedef extern_symbol): Typedef the structure,
3656         not a pointer to it.  Create an object vector.
3657         (extern_symbols): Turn into an object vector.
3658         (pa_hpux_asm_output_external, pa_hpux_file_end): Adjust.
3659
3660 2005-04-21  Sebastian Pop  <pop@cri.ensmp.fr>
3661
3662         PR/20742
3663         * Makefile.in (tree-chrec.o): Depend on params.h.
3664         * params.def (PARAM_SCEV_MAX_EXPR_SIZE): New parameter with
3665         default value 20.
3666         * tree-chrec.c: Depend on params.h.  Replace build with buildN,
3667         and fold build with fold_buildN.
3668         (chrec_fold_plus_1): Fail with a chrec_don_know when the size of
3669         the expression exceeds PARAM_SCEV_MAX_EXPR_SIZE.
3670         (tree_contains_chrecs): Compute an estimation of the size of the
3671         given expression.
3672         * tree-chrec.h (tree_contains_chrecs): Modify its declaration.
3673         (tree_does_not_contain_chrecs): Update the use of tree_contains_chrecs.
3674         * tree-scalar-evolution.c (simple_iv): Ditto.
3675         * doc/invoke.texi (scev-max-expr-size): Documented.
3676
3677 2005-04-21  Richard Sandiford  <rsandifo@redhat.com>
3678
3679         * config.gcc (*-*-darwin*): Add darwin.opt to $extra_options.
3680         (i[34567]86-pc-msdosdjgpp*): Likewise i386/djgpp.opt.
3681         (i[34567]86-*-lynxos*, powerpc-*-lynxos*): Likewise lynx.opt.
3682         (i[34567]86-*-sco3.2v5*): Likewise i386/sco5.opt.
3683         (i[34567]86-*-pe, i[34567]86-*-cygwin*, i[34567]86-*-mingw32*)
3684         (i[34567]86-*-uwin*): Likewise i386/cygming.opt.
3685         * config/darwin.h (darwin_one_byte_bool, darwin_fix_and_continue)
3686         (darwin_fix_and_continue_switch, SUBTARGET_OPTIONS): Delete.
3687         * config/darwin.c (darwin_one_byte_bool, darwin_fix_and_continue)
3688         (darwin_fix_and_continue_switch): Delete.
3689         * config/lynx.h (SUBTARGET_OS_LYNX_SWITCHES): Delete.
3690         (SUBTARGET_SWITCHES): Delete.
3691         * config/i386/i386.h (target_flags, MASK_80387, MASK_RTD)
3692         (MASK_ALIGN_DOUBLE, MASK_SVR3_SHLIB, MASK_IEEE_FP, MASK_FLOAT_RETURNS)
3693         (MASK_NO_FANCY_MATH_387, MASK_OMIT_LEAF_FRAME_POINTER)
3694         (MASK_STACK_PROBE, MASK_NO_ALIGN_STROPS, MASK_INLINE_ALL_STROPS)
3695         (MASK_NO_PUSH_ARGS, MASK_ACCUMULATE_OUTGOING_ARGS, MASK_MMX)
3696         (MASK_SSE, MASK_SSE2, MASK_SSE3, MASK_3DNOW, MASK_3DNOW_A)
3697         (MASK_128BIT_LONG_DOUBLE, MASK_64BIT, MASK_MS_BITFIELD_LAYOUT)
3698         (MASK_TLS_DIRECT_SEG_REFS, MASK_NO_RED_ZONE, TARGET_80387)
3699         (TARGET_RTD, TARGET_ALIGN_DOUBLE, TARGET_PUSH_ARGS)
3700         (TARGET_ACCUMULATE_OUTGOING_ARGS, TARGET_SVR3_SHLIB, TARGET_IEEE_FP)
3701         (TARGET_128BIT_LONG_DOUBLE, TARGET_NO_FANCY_MATH_387)
3702         (TARGET_USE_FANCY_MATH_387, TARGET_OMIT_LEAF_FRAME_POINTER)
3703         (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Delete.
3704         (TARGET_FLOAT_RETURNS_IN_80387): Make an alias of TARGET_FLOAT_RETURNS.
3705         (TARGET_64BIT): Undef before redefining.
3706         (TARGET_TLS_DIRECT_SEG_REFS, TARGET_STACK_PROBE)
3707         (TARGET_ALIGN_STRINGOPS, TARGET_INLINE_ALL_STRINGOPS, TARGET_SSE)
3708         (TARGET_SSE2, TARGET_SSE3, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A)
3709         (TARGET_RED_ZONE, TARGET_USE_MS_BITFIELD_LAYOUT, TARGET_SWITCHES)
3710         (TARGET_OPTIONS, SUBTARGET_SWITCHES, SUBTARGET_OPTIONS)
3711         (ix86_fpmath_string, ix86_tls_dialect_string, ix86_cmodel_string)
3712         (ix86_asm_string, ix86_regparm, ix86_regparm_string)
3713         (ix86_preferred_stack_boundary_string, ix86_branch_cost_string)
3714         (ix86_debug_arg_string, ix86_debug_addr_string)
3715         (ix86_align_loops_string, ix86_align_jumps_string)
3716         (ix86_align_funcs_string): Delete.
3717         * config/i386/cygming.h (MASK_NOP_FUN_DLLIMPORT)
3718         (TARGET_NOP_FUN_DLLIMPORT, SUBTARGET_SWITCHES): Delete.
3719         * config/i386/djgpp.h (MASK_BNU210, SUBTARGET_SWITCHES): Delete.
3720         (SUBTARGET_OVERRIDE_OPTIONS): Check TARGET_BNU210.
3721         * config/i386/lynx.h (SUBTARGET_SWITCHES): Delete.
3722         * config/i386/sco5.h (MASK_COFF, TARGET_ELF)
3723         (SUBTARGET_SWITCHES): Delete.
3724         * config/i386/i386.c (ix86_debug_arg_string): Delete.
3725         (ix86_debug_addr_string): Delete.
3726         (ix86_cmodel_string, ix86_asm_string, ix86_tls_dialect_string)
3727         (ix86_fpmath_string, ix86_regparm_string, ix86_regparm)
3728         (ix86_align_loops_string, ix86_align_jumps_string)
3729         (ix86_preferred_stack_boundary_string, ix86_branch_cost_string)
3730         (ix86_align_funcs_string): Make static.
3731         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
3732         (ix86_handle_option): New function.
3733         (TARGET_USE_MS_BITFIELD_LAYOUT): Delete.
3734         (ix86_ms_bitfield_layout_p): Check TARGET_MS_BITFIELD_LAYOUT.
3735         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Remove handling
3736         of darwin_fix_and_continue_switch.
3737         (darwin_one_byte_bool): Delete.
3738         * config/rs6000/lynx.h (EXTRA_SUBTARGET_SWITCHES): Delete.
3739         * config/rs6000/rs6000.c (rs6000_override_options): Update assignment
3740         to darwin_one_byte_bool.
3741         * config/darwin.opt, config/lynx.opt, config/i386/cygming.opt,
3742         * config/i386/djgpp.opt, config/i386/i386.opt,
3743         * config/i386/sco5.opt: New files.
3744
3745 2005-04-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
3746
3747         * config/sparc/sparc.c (reg_or_0_operand, const1_operand,
3748         fp_zero_operand, fp_register_operand, intreg_operand,
3749         fcc_reg_operand, fcc0_reg_operand, icc_or_fcc_reg_operand,
3750         call_operand, call_operand_address, tgd_symbolic_operand,
3751         tld_symbolic_operand, tie_symbolic_operand, tle_symbolic_operand,
3752         symbolic_operand, symbolic_memory_operand, label_ref_operand,
3753         sp64_medium_pic_operand, data_segment_operand,
3754         text_segment_operand, splittable_symbolic_memory_operand,
3755         reg_or_nonsymb_mem_operand, splittable_immediate_memory_operand,
3756         eq_or_neq, normal_comp_operator, noov_compare_op,
3757         noov_compare64_op, v9_regcmp_op, extend_op, cc_arithop,
3758         cc_arithopn, arith_operand, arith_4096_operand, arith_add_operand,
3759         const64_operand, const64_high_operand, arith11_operand,
3760         arith10_operand, arith_double_operand, arith_double_4096_operand,
3761         arith_double_add_operand, arith11_double_operand,
3762         arith10_double_operand, small_int, small_int_or_double,
3763         uns_small_int, uns_arith_operand, clobbered_register,
3764         input_operand, compare_operand): Delete.
3765         (sparc_emit_set_const32): Use predicates in assertion.  Remove special
3766         code for TARGET_ARCH64 && HOST_BITS_PER_WIDE_INT != 64.
3767         (sparc_emit_set_const64): Call gcc_unreachable if H_B_P_W_I == 32.
3768         (GEN_HIGHINT64, GEN_INT64): Delete.
3769         (sparc_emit_set_safe_HIGH64, gen_safe_SET64, gen_safe_OR64,
3770         gen_safe_XOR64): Adjust for above deletion.
3771         (sparc_emit_set_const64): Support only H_B_P_W_I == 64 and CONST_INTs.
3772         Use 'unsigned HOST_WIDE_INT' instead of 'long' for bitmask.
3773         (legitimate_constant_p): Use const_zero_operand instead.
3774         (sparc_extra_constraint_check): Likewise.
3775         * config/sparc/sparc.h (CONST_DOUBLE_OK_FOR_LETTER_P): Remove 'O'.
3776         (PREFERRED_RELOAD_CLASS): Use const_zero_operand.
3777         (PREDICATE_CODES): Delete.
3778         * config/sparc/sparc.md: Include predicates.md.
3779         (All patterns): Adjust for new predicate names.
3780         (cmpdi, cmpdi_sp64): Use arith_operand predicate.
3781         (movhi_const64_special, movsi_const64_special): Add 'K' constraint.
3782         (movdi): Use general_operand predicate.
3783         (movdi_sp64_dbl): Delete.
3784         (movdi_const64_special): Add 'N' constraint.
3785         (movdicc): Use arith10_operand predicate.
3786         (movdi_cc_sp64, movdi_cc_sp64_trunc): Use arith11_operand predicate.
3787         (movdi_cc_reg_sp64): Use arith10_operand predicate.
3788         (movdi_cc_reg_sp64_trunc): Delete.
3789         (cmp_zero_extract, cmp_zero_extract_sp64): Use small_int_operand.
3790         (adddi3_sp64, cmp_ccx_plus, cmp_ccx_plus_set): Use arith_operand.
3791         (subdi3_sp32): Delete.
3792         (subdi3_insn_sp32): Change to define_insn_and_split.
3793         (subdi3_sp64, cmp_minus_ccx, cmp_minus_ccx_set): Use arith_operand.
3794         (muldi3, muldi3_sp64, muldi3_v8plus): Likewise.
3795         (smulsi3_highpart_v8plus, const_smulsi3_highpart_v8plus,
3796         umulsi3_highpart_v8plus, const_umulsi3_highpart_v8plus): Use
3797         small_int_operand predicate.
3798         (divdi3, udivdi3): Use arith_operand predicate.
3799         (udivsi3, udivsi3_sp32, udivsi3_sp64): Use nonimmediate_operand.
3800         (and<V64I>3_sp64, ior<V64I>3_sp64, xor<V64I:mode>3_sp64,
3801         xor_not_<V64I:mode>_sp64) : Use arith_operand predicate.
3802         (xordi3_sp64_dbl): Delete.
3803         (cmp_ccx_arith_op, cmp_ccx_arith_op_set, cmp_ccx_xor_not,
3804         cmp_ccx_xor_not_set, cmp_ccx_arith_op_not, cmp_ccx_arith_op_not_set,
3805         cmp_ccx_neg, cmp_ccx_set_neg, one_cmpl<V64I>2_sp64, cmp_ccx_not,
3806         cmp_ccx_set_not): Use arith_operand predicate.
3807         (ashrsi3_extend2, lshrsi3_extend2 et al.): Use small_int_operand.
3808         * config/sparc/predicates.md: New file.
3809
3810 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
3811
3812         PR tree-optimization/14846
3813         * fold-const.c (fold_single_bit_test_into_sign_test): New,
3814         split out from ...
3815         (fold_single_bit_test): ... here.
3816         (fold_binary): Call fold_single_bit_test_into_sign_test
3817         instead of fold_single_bit_test.
3818
3819 2005-04-20  James E Wilson  <wilson@specifixinc.com>
3820
3821         PR c++/20805
3822         * dwarf2out.c (gen_variable_die): Don't emit a specification if this
3823         is another declaration.
3824
3825 2005-04-21  Hans-Peter Nilsson  <hp@axis.com>
3826
3827         * config/cris/predicates.md: New file.
3828         * config/cris/cris-protos.h (cris_store_multiple_op_p)
3829         (cris_movem_load_rest_p): Declare.
3830         * config/cris/cris.c (cris_store_multiple_op): Return bool, not int.
3831         (cris_movem_load_rest_p): Ditto.  Globalize.
3832         (cris_bdap_operand, cris_bdap_biap_operand,
3833         cris_orthogonal_operator, cris_commutative_orth_op,
3834         cris_operand_extend_operator,
3835         cris_additive_operand_extend_operator, cris_extend_operator,
3836         cris_plus_or_bound_operator, cris_mem_op,
3837         cris_general_operand_or_symbol,
3838         cris_general_operand_or_gotless_symbol,
3839         cris_general_operand_or_plt_symbol, cris_mem_call_operand,
3840         cris_load_multiple_op): Remove predicate functions.
3841         (cris_symbol, cris_gotless_symbol) <case UNSPEC>: Return 0, don't
3842         abort, for UNSPECs other than CRIS_UNSPEC_PLT.
3843         * config/cris/cris.h (PREDICATE_CODES): Don't define.
3844         * config/cris/cris.md: Include predicates.md.
3845         ("call", "call_value"): Generate CONSTs of Pmode, not VOIDmode.
3846
3847 2005-04-20  Ian Lance Taylor  <ian@airs.com>
3848
3849         * c-common.def: Remove STMT_EXPR (moved to cp/cp-tree.def).
3850         * c-common.h (STMT_EXPR_STMT): Don't define.
3851         (STMT_EXPR_NO_SCOPE): Don't define.
3852         * c-dump.c (c_dump_tree): Don't handle STMT_EXPR.
3853         * c-pretty-print.c (pp_c_primary_expression): Likewise.
3854         (pp_c_expression): Likewise.
3855
3856 2005-04-20  Richard Henderson  <rth@redhat.com>
3857
3858         PR target/21100
3859         * config/i386/mmx.md (push<MMXMODE>1): Fix predicate thinko.
3860
3861 2005-04-20  Jeff Law  <law@redhat.com>
3862
3863         * reload1.c (reload): Ignore equivalences between pseudos and
3864         read only memory.
3865
3866 2005-04-20  Joseph S. Myers  <joseph@codesourcery.com>
3867
3868         PR c/12913
3869         * c-tree.h (struct c_label_list): Update comment.
3870         (struct c_label_context): Rename to struct c_label_context_se.
3871         (label_context_stack): Rename to label_context_stack_se.
3872         (C_DECL_UNJUMPABLE_VM, C_DECL_UNDEFINABLE_VM, struct
3873         c_label_context_vm, label_context_stack_vm, c_begin_vm_scope,
3874         c_end_vm_scope): New.
3875         (C_DECL_DECLARED_BUILTIN, C_DECL_USED): Use FUNCTION_DECL_CHECK.
3876         * c-decl.c (pop_scope): Call c_end_vm_scope.
3877         (pushdecl): Call c_begin_vm_scope for variably modified
3878         declarations.
3879         (define_label): Check for jumping into scope of identifier with
3880         variably modified type.  Push label on stack for those defined at
3881         current context of identifiers with variably modified type.
3882         (start_function): Create stack level for context of identifiers
3883         with variably modified type.
3884         (finish_function): Pop stack level for context of identifiers with
3885         variably modified type.
3886         * c-typeck.c (label_context_stack): Rename to
3887         label_context_stack_se.
3888         (label_context_stack_vm, c_begin_vm_scope, c_end_vm_scope): New.
3889         (c_finish_goto_label): Check for jumping into scope of identifier
3890         with variably modified type.  Push label on stack for those jumped
3891         to from current context of identifiers with variably modified
3892         type.
3893         (struct c_switch): Add blocked_vm.
3894         (c_start_case): Initialize blocked_vm.
3895         (do_case): Check blocked_vm.
3896         (c_finish_case): Add comment.
3897         (c_begin_stmt_expr, c_finish_stmt_expr): Update for renamed
3898         variable label_context_stack.
3899
3900 2005-04-20  Kazu Hirata  <kazu@cs.umass.edu>
3901
3902         * tree-ssa-phiopt.c (tree_ssa_phi_opt): Update calls to
3903         conditional_replacement, value_replacement, abs_replacement,
3904         minmax_replacement.
3905         (replace_phi_edge_with_variable): Remove argument BB.
3906         (conditional_replacement, value_replacement,
3907         minmax_replacement, abs_replacement): Remove argument PHI_BB.
3908         Update a call to replace_phi_edge_with_variable.
3909
3910         * tree-ssa-phiopt.c: Fix comments.
3911
3912 2005-04-20  Michael Matz  <matz@suse.de>
3913
3914         PR20973
3915         * reload.c (push_reload, find_dummy_reload): Check for uninitialized
3916