OSDN Git Service

* config/rs6000/rs6000.md (UNSPEC constants): Add UNSPEC_STFIWX.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2005-03-25  Geoffrey Keating  <geoffk@apple.com>
2
3         * config/rs6000/rs6000.md (UNSPEC constants): Add UNSPEC_STFIWX.
4         (fix_truncdfsi2): Allow registers or memory as destination.
5         When TARGET_PPC_GFXOPT, generate simplified pattern.
6         (fix_truncdfsi2_internal): Use define_insn_and_split.
7         (fix_truncdfsi2_internal_gfxopt): New.
8         (fctiwz): Don't confuse register allocation by giving it no choices.
9         (stfiwx): New.
10         * config/rs6000/rs6000.h (EXTRA_CONSTRAINT): Add 'Z'.
11         (EXTRA_MEMORY_CONSTRAINT): Likewise.
12         * config/rs6000/rs6000.c (indexed_or_indirect_operand): New. 
13         * config/rs6000/rs6000-protos.h (indexed_or_indirect_operand): New.
14
15 2005-03-25  Kazu Hirata  <kazu@cs.umass.edu>
16
17         * dominance.c (free_dominance_info): Speed up by freeing et
18         data structures without maintaining other nodes.
19         * et-forest.c (et_free_tree_force): New.
20         * et-forest.h: Add a prototype for et_free_tree_force.
21
22         * tree.c (get_set_constructor_bits,
23         get_set_constructor_bytes): Remove.
24         * tree.h: Remove the corresponding prototypes.
25
26 2005-03-25  John David Anglin  <dave.anglin@nrc-crnc.gc.ca>
27
28         PR target/15491
29         * vax.c (vax_rtx_costs_1): Merge with vax_rtx_costs.
30         (vax_rtx_costs): Return false when passed unsupported rtx's.  Handle
31         FLOAT_EXTEND, FLOAT_TRUNCATE and TRUNCATE.  Fix costs for POST_INC,
32         PRE_DEC, NEG and NOT.
33
34 2005-03-25  Kazu Hirata  <kazu@cs.umass.edu>
35
36         * fold-const.c: Convert uses of fold (build (...)) to
37         fold_buildN.
38
39 2005-03-25  Zdenek Dvorak  <dvorakz@suse.cz>
40
41         PR rtl-optimization/20249
42         * cse.c (insert_regs): Do not record equivalence of registers in
43         different modes.
44
45 2005-03-24  Kazu Hirata  <kazu@cs.umass.edu>
46
47         * emit-rtl.c (reverse_comparison): Remove.
48         * rtl.h: Remove the corresponding prototype.
49
50 2005-03-24  James E Wilson  <wilson@specifixinc.com>
51
52         * doc/install.texi (--enable-altivec): Delete docs.
53
54 2005-03-24  David Edelsohn  <edelsohn@gnu.org>
55
56         * config/rs6000/predicates.md (easy_fp_constant): Return 0 for
57         SFmode and DFmode before reload when
58         flag_unsafe_math_optimizations not enabled.
59
60 2005-03-24  Geoffrey Keating  <geoffk@apple.com>
61
62         * c.opt (fvisibility-inlines-hidden): Allow for ObjC++.
63
64         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Add
65         MASK_128BIT_LONG_DOUBLE, MASK_ALIGN_DOUBLE.
66
67 2005-03-24  Nathan Sidwell  <nathan@codesourcery.com>
68
69         * configure.ac (enable-checking): Add 'runtime' option.
70         * doc/install.texi (enable-checking): Document 'runtime' checking.
71         * tsystem.h (gcc_assert, gcc_unreachable): Define.
72         * config.in: Regenerated.
73         * configure: Regenerated.
74
75 2005-03-23  Uros Bizjak  <uros@kss-loka.si>
76
77         * optabs.h (enum optab_index): Remove OTI_llrint.
78         (llrint_optab): Remove macro.
79         * optabs.c (init_optabs): Remove llrint_optab initialization.
80         * genopinit.c (optabs): Remove llrint_optab implementation.
81         * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_LLRINT{,F,L}
82         using lrint_optab.
83
84 2005-03-24  Alexandre Oliva  <aoliva@redhat.com>
85
86         PR rtl-optimization/20532
87         * simplify-rtx.c (simplify_binary_operation_1): Protect from
88         overflow when adding coefficients for PLUS or MINUS.
89         (simplify_binary_operation_1): Handle CONST_DOUBLE exact power of
90         two as multiplier.
91
92 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
93
94         * langhooks.h (truthvalue_conversion): Remove.
95         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
96         LANG_HOOKS_TRUTHVALUE_CONVERSION.
97         * system.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Poison.
98         * gimplify.c (gimple_boolify): Don't use truthvalue_conversion.
99         * c-objc-common.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
100
101 2005-03-23  Kazu Hirata  <kazu@cs.umass.edu>
102
103         * params.def: Fix a typo.
104         * config/mips/mips.c: Follow the spelling convensions.
105         * doc/invoke.texi: Fix typos.
106
107 2005-03-18  Dale Johannese  <dalej@apple.com>
108
109         * cp/tree.c (cp_tree_equal):  Handle SSA_NAME.
110
111 2005-03-23  Daniel Berlin  <dberlin@dberlin.org>
112
113         Fix PR tree-optimization/20601
114
115         * tree-ssa-pre.c (insert_aux): Add missing condition to
116         constification.
117
118 2005-03-23  Ian Lance Taylor  <ian@airs.com>
119
120         * final.c (final_scan_insn): Don't remove no-op instructions.
121         * reload1.c (reload): Remove simple no-op instructions even when
122         not optimizing.
123
124 2005-03-23  Dorit Naishlos  <dorit@il.ib.com>
125  
126         PR tree-optimization/20501
127         * tree-vect-analyze.c (vect_enhance_data_refs_alignment): Debug print
128         reporting that peeling for alignment is applied moved to...
129         * (vect_analyze_data_refs_alignment): Here.
130
131 2005-03-23  Ian Lance Taylor  <ian@airs.com>
132
133         * reorg.c (dbr_schedule): Remove #if 0 code to call final.
134
135 2005-03-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
136
137         * config.gcc (alpha*-dec-osf[45]*): Remove target_cpu_default.
138         Define TARGET_SUPPORT_ARCH except on Tru64 UNIX V4.0A.
139
140 2005-03-23  Hans-Peter Nilsson  <hp@axis.com>
141
142         * doc/tm.texi (TARGET_MD_ASM_CLOBBERS): Adjust wording to not
143         imply that this is called once, independent of asms in code.
144         Adjust to now being pased output and input lists.  Mention helper
145         function decl_overlaps_hard_reg_set_p.
146         * hooks.c (hook_tree_tree_tree_tree_3rd_identity): Rename from
147         hook_tree_tree_identity and to take three trees, returning third.
148         * hooks.h (hook_tree_tree_tree_tree_3rd_identity): Adjust the
149         prototype.
150         * stmt.c: include hard-reg-set.h before tree.h.
151         (decl_overlaps_hard_reg_set_p): New function, broken out from...
152         (decl_conflicts_with_clobbers_p): Call
153         decl_overlaps_hard_reg_set_p.
154         (expand_asm_operands): Pass output and input lists in call to
155         targetm.md_asm_clobbers.
156         * target-def.h (TARGET_MD_ASM_CLOBBERS): Define as
157         hook_tree_tree_tree_tree_3rd_identity.
158         * target.h (struct gcc_target.md_asm_clobbers): Take three tree
159         parameters.
160         * tree.h [HARD_CONST] (decl_overlaps_hard_reg_set_p): Prototype.
161         * config/i386/i386.c (ix86_md_asm_clobbers): Adjust to three
162         parameters, first two unused.
163         * config/cris/cris.c (cris_md_asm_clobbers): Adjust to added
164         parameters.  Only add MOF to clobbers if there's no 'h' mentioned
165         in constraint letters and MOF is not mentioned as a asm-declared
166         register in neither of the input and output lists.
167
168 2005-03-23  DJ Delorie  <dj@redhat.com>
169
170         * optabs.c (expand_binop): Make sure the first subword's result
171         gets stored.
172
173 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
174
175         * c-common.c (c_common_truthvalue_conversion): Adjust comment.
176         Call c_common_truthvalue_conversion rather than
177         lang_hooks.truthvalue_conversion.
178         * c-convert.c (convert): Call c_objc_common_truthvalue_conversion.
179         * c-objc-common.c (c_objc_common_truthvalue_conversion): Move to
180         c-typeck.c.
181         * c-objc-common.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Change to
182         c_common_truthvalue_conversion.
183         * c-parser.c (c_parser_paren_condition, c_parser_for_statement,
184         c_parser_conditional_expression, c_parser_binary_expression): Call
185         c_objc_common_truthvalue_conversion.
186         * c-typeck.c (build_unary_op): Call
187         c_objc_common_truthvalue_conversion.
188         (build_conditional_expr): Do not call
189         lang_hooks.truthvalue_conversion.
190         (build_binary_op): Call c_common_truthvalue_conversion.
191         (c_objc_common_truthvalue_conversion): Moved from
192         c-objc-common.c.  Call default_function_array_conversion instead
193         of default_conversion.
194
195 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
196
197         * c-common.h (default_conversion): Remove.
198         (perform_integral_promotions): Add.
199         * c-tree.h (default_conversion): Add.
200         * c-typeck.c (perform_integral_promotions): New, split out from
201         default_conversion.
202         * c-common.c (check_case_value): Use perform_integral_promotions,
203         not default_conversion.
204         (c_add_case_label): Don't continue processing case label after
205         found to be pointer.
206
207 2005-03-23  Mark Mitchell  <mark@codesourcery.com>
208
209         * gcc.c (do_spec_1): Do not add a -L path for a directory in
210         the prefix list if we have already added a multilib directory
211         based on that path.
212         (main): Do not add MD_EXEC_PREFIX to the list of directories to
213         search with -L.
214
215 2005-03-22  Kazu Hirata  <kazu@cs.umass.edu>
216
217         * reload1.c (indirect_symref_ok, reload_obstack): Make them
218         static.
219         * reload.h: Remove the prototype for indirect_symref_ok.
220
221         * reload1.c (indirect_symref_ok): Make it global.
222         * reload.h: Add a prototype for indirect_symref_ok.
223
224 2005-03-22  Kaz Kojima  <kkojima@gcc.gnu.org>
225
226         * config/sh/sh.md (ashlhi3): Rename to *ashlhi3_n and add a new
227         ashlhi3 expander.
228
229 2005-03-22  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
230
231         * tree.h (DECL_IGNORED_P, DECL_IN_SYSTEM_HEADER): Clarify comments.
232
233 2005-03-22  Daniel Berlin  <dberlin@dberlin.org>
234
235         * c-opts.c (c_common_parse_file): Only start/end main source file
236         if debug hooks says the writer wants it.
237         * dbxout.c (dbx_debug_hooks): Add start_end_main_source_file
238         member.
239         (xcoff_debug_hooks): Ditto.
240         * debug.c (do_nothing_hooks): Ditto.
241         * debug.h (gcc_debug_hooks): Ditto.
242         * dwarf2out.c (dwarf2_debug_hooks): Ditto.
243         * sdbout.c (sdb_debug_hooks): Ditto.
244         * vmsdbgout.c (vmsdbg_debug_hooks): Ditto.
245         
246 2005-03-22  Mark Mitchell  <mark@codesourcery.com>
247
248         * doc/extend.texi: Deprecate C++ min/max operators.
249
250 2005-03-22  Zdenek Dvorak  <dvorakz@suse.cz>
251
252         * tree-ssa-loop-ivopts.c (determine_iv_cost): Do not try to preserve
253         artificial original candidates.
254
255 2005-03-22  Richard Guenther <rguenth@tat.physik.uni-tuebingen.de>
256             Jan Hubicka  <jh@suse.cz>
257             Steven Bosscher <stevenb@suse.de
258
259         * cgraphunit.c (cgraph_estimate_size_after_inlining): Compute
260         call cost based on argument sizes.
261         (cgraph_mark_inline_edge): Avoid inline unit from shrinking by
262         inlining.
263         * params.def: (max-inline-inssn-single): Set to 450.
264         (max-inline-insns-auto): Set to 90.
265         (max-inline-insns-recursive): Set to 450
266         (max-inline-insns-recursive-auto): Set to 450.
267         (large-function-insns): Set to 2700.
268         (inline-call-cost): New parameter.
269         * tree-inline.c (estimate_move_cost): New function.
270         (estimate_num_insns_1): Compute move sizes costs by estimate_move_cost
271         for non-gimple-regs, set cost to 0 for gimple-regs.  Compute call size
272         based on arguments.
273         * tree-inline.h (estimate_move_cost): Declare.
274         * invoke.texi: (max-inline-inssn-single): Change default to 450.
275         (max-inline-insns-auto): Change default to 90.
276         (max-inline-insns-recursive): Change default to 450
277         (max-inline-insns-recursive-auto): Change default to 450.
278         (large-function-insns): Change default to 2700.
279         (inline-call-cost): Document new parameter.
280
281 2005-03-22  Richard Sandiford  <rsandifo@redhat.com>
282
283         * config/i860/i860.h (target_flags, TARGET_XP, TARGET_SWITCHES)
284         (TARGET_DEFAULT): Delete.
285         * config/i860/i860.opt: New file.
286
287 2005-03-22  Richard Sandiford  <rsandifo@redhat.com>
288
289         * config/frv/frv-protos.h (frv_branch_cost_string, frv_branch_cost_int)
290         (frv_cpu_string, frv_condexec_insns_str, frv_condexec_insns)
291         (frv_condexec_temps_str, frv_condexec_temps, frv_sched_lookahead_str)
292         (frv_sched_lookahead): Delete.
293         * config/frv/frv.h (MASK_DEFAULT_ALLOC_CC): Move to frv.c.
294         (target_flags, MASK_GPR_32, MASK_FPR_32, MASK_SOFT_FLOAT)
295         (MASK_ALLOC_CC, MASK_DWORD, MASK_DOUBLE, MASK_MEDIA, MASK_MULADD)
296         (MASK_LIBPIC, MASK_ACC_4,  MASK_PACK, MASK_LONG_CALLS)
297         (MASK_ALIGN_LABELS, MASK_LINKED_FP, MASK_BIG_TLS, MASK_DEBUG_ARG)
298         (MASK_DEBUG_ADDR, MASK_DEBUG_STACK, MASK_DEBUG, MASK_DEBUG_LOC)
299         (MASK_DEBUG_COND_EXEC, MASK_NO_COND_MOVE, MASK_NO_SCC)
300         (MASK_NO_COND_EXEC, MASK_NO_VLIW_BRANCH, MASK_NO_MULTI_CE)
301         (MASK_FDPIC, MASK_INLINE_PLT, MASK_GPREL_RO, MASK_DEFAULT)
302         (TARGET_GPR_32, TARGET_FPR_32, TARGET_SOFT_FLOAT, TARGET_ALLOC_CC)
303         (TARGET_DWORD, TARGET_DOUBLE, TARGET_MEDIA, TARGET_MULADD)
304         (TARGET_LIBPIC, TARGET_ACC_4, TARGET_DEBUG_ARG, TARGET_DEBUG_ADDR)
305         (TARGET_DEBUG_STACK, TARGET_DEBUG, TARGET_DEBUG_LOC)
306         (TARGET_DEBUG_COND_EXEC, TARGET_NO_COND_MOVE, TARGET_NO_SCC)
307         (TARGET_NO_COND_EXEC, TARGET_NO_VLIW_BRANCH, TARGET_NO_MULTI_CE)
308         (TARGET_NO_NESTED_CE, TARGET_FDPIC, TARGET_INLINE_PLT, TARGET_BIG_TLS)
309         (TARGET_GPREL_RO, TARGET_PACK, TARGET_LONG_CALLS, TARGET_ALIGN_LABELS)
310         (TARGET_LINKED_FP, TARGET_GPR_64, TARGET_FPR_64, TARGET_HARD_FLOAT)
311         (TARGET_FIXED_CC, TARGET_COND_MOVE, TARGET_SCC, TARGET_COND_EXEC)
312         (TARGET_VLIW_BRANCH, TARGET_MULTI_CE, TARGET_NESTED_CE, TARGET_ACC_8)
313         (TARGET_SWITCHES, TARGET_OPTIONS, DEFAULT_CONDEXEC_TEMPS)
314         (DEFAULT_BRANCH_COST, DEFAULT_CONDEXEC_INSNS): Delete.
315         * config/frv/frv.c (frv_branch_cost_string, frv_branch_cost_int)
316         (frv_cpu_string, frv_condexec_insns_str, frv_condexec_insns)
317         (frv_condexec_temps_str, frv_condexec_temps, frv_sched_lookahead_str)
318         (frv_sched_lookahead): Delete.
319         (MASK_DEFAULT_ALLOC_CC): Moved from frv.h.
320         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
321         (frv_handle_option): New function.  Move -mcpu= handling from...
322         (frv_override_options): ...here.  Remove handling of other
323         TARGET_OPTIONS.
324         (frv_ifcvt_modify_tests): Check !TARGET_COND_EXEC instead of
325         TARGET_NO_COND_EXEC and !TARGET_NESTED_CE to TARGET_NO_NESTED_CE.
326         (frv_ifcvt_modify_multiple_tests): Likewise !TARGET_MULTI_CE
327         and TARGET_NO_MULTI_CE.
328         (frv_for_each_packet): Likewise TARGET_NO_VLIW_BRANCH and
329         !TARGET_VLIW_BRANCH.
330         * config/frv/frv.opt: New file.
331
332 2005-03-22  Kazu Hirata  <kazu@cs.umass.edu>
333
334         * fold-const.c (fold_ternary): Take decomposed arguments of
335         CALL_EXPR.
336         (fold): Update a call to fold_ternary.
337
338         * fold-const.c (fold_build1, fold_build2, fold_build3): New.
339         * tree.h: Add corresponding prototypes.
340
341 2005-03-22  Jakub Jelinek  <jakub@redhat.com>
342
343         PR target/20561
344         * cfglayout.c (reemit_insn_block_notes): Don't put block notes in
345         between jump table and its label.
346         * final.c (shorten_branches): Handle notes in between ADDR_VEC
347         resp. ADDR_DIFF_VEC and the label preceeding it.
348         (final_scan_insn): Likewise.  Ensure ADDR_VEC resp. ADDR_DIFF_VEC
349         is emitted in the right section.
350
351 2005-03-22  Kazu Hirata  <kazu@cs.umass.edu>
352
353         * fold-const.c (fold_unary, fold_binary): Update comments
354         about arguments.
355
356 2005-03-22  Hans-Peter Nilsson  <hp@axis.com>
357
358         PR rtl-optimization/20527
359         * combine.c (can_combine_p) [AUTO_INC_DEC]: When INSN has an
360         REG_INC note, test that the register also isn't mentioned in PRED
361         or SUCC.
362
363 2005-03-22  Ben Elliston  <bje@au.ibm.com>
364
365         * dwarf2out.c (dwarf_type_encoding_name): Remove unused prototype
366         and definition.
367
368 2005-03-21  Mike Stump  <mrs@apple.com>
369
370         * varasm.c (default_assemble_visibility): Remove extra ().
371
372 2005-03-21  Roger Sayle  <roger@eyesopen.com>
373
374         PR middle-end/20557
375         * bb-reorder.c (duplicate_computed_gotos): Use can_duplicate_block_p
376         to determine whether a block can be duplicated, rather than test
377         whether the block contains noncopyable insns ourselves.
378
379 2005-03-21  Kazu Hirata  <kazu@cs.umass.edu>
380
381         * config/i860/i860.h (PREDICATE_CODES): Remove nonexistent
382         predicates.
383
384 2005-03-21  Richard Sandiford  <rsandifo@redhat.com>
385
386         * config/ip2k/ip2k.h (target_flags, TARGET_SWITCHES): Delete.
387
388 2005-03-21  Richard Sandiford  <rsandifo@redhat.com>
389
390         * config/fr30/fr30.h (TARGET_SMALL_MODEL_MASK, TARGET_SMALL_MODEL)
391         (TARGET_DEFAULT, target_flags, TARGET_SWITCHES): Delete.
392         * config/fr30/fr30.opt: New file.
393
394 2005-03-18  Daniel Berlin  <dberlin@dberlin.org>
395         
396         Fix PR tree-optimization/20542
397
398         * tree-flow-inline.h (overlap_subvar): Move to here.
399         * tree-ssa-operands.c: From here.
400         * tree-flow.h (overlap_subvar): Declare.
401         * tree-ssa-alias.c (add_pointed_to_var): Use overlap_subvar here.
402         * tree-ssa-loop-im.c (is_call_clobbered_ref): Return proper answer
403         for variables with subvars.
404         
405 2005-03-21 Mostafa Hagog <mustafa@il.ibm.com>
406
407         PR middle-end/20177
408         * ddg.c (create_ddg_dependence): Ignore reg-anti dependency.
409         * modulo-sched.c (const_iteration_count): Return on NULL
410         pre-header.
411         (print_node_sched_params): Return on NULL dump_file.
412         (generate_reg_moves): Handle reg-anti dependencies and disregard
413         closing branch when generating register moves.
414         (sms_schedule): Mark the SMSed block dirty.
415         * passes.c (rest_of_handle_sms): Call update_life_info for all
416         basic-blocks.
417         * testsuite/gcc.dg/20050321-1.c: New test.
418
419 2005-03-21  Bob Wilson  <bob.wilson@acm.org>
420
421         * config/xtensa/lib1funcs.asm (__mulsi3): Use symbolic name for ACCLO.
422         * config/xtensa/xtensa.md (movsi_internal, movhi_internal,
423         movqi_internal): Likewise.
424
425 2005-03-21  Bob Wilson  <bob.wilson@acm.org>
426
427         * config/xtensa/xtensa-protos.h: (xtensa_simm7, xtensa_uimm8,
428         xtensa_uimm8x2, xtensa_uimm8x4, xtensa_ai4const, xtensa_lsi4x4,
429         xtensa_b4const): Delete prototypes.
430         (xtensa_simm8, xtensa_simm8x256, xtensa_simm12b, xtensa_b4constu,
431         xtensa_mask_immediate, xtensa_mem_offset): Update prototypes.
432         (xtensa_b4const_or_zero, xtensa_const_ok_for_letter_p,
433         xtensa_extra_constraint): New prototypes.
434         (add_operand, arith_operand, nonimmed_operand, mem_operand,
435         mask_operand, extui_fldsz_operand, sext_operand, sext_fldsz_operand,
436         lsbitnum_operand, branch_operand, ubranch_operand, call_insn_operand,
437         move_operand, const_float_1_operand, fpmem_offset_operand,
438         branch_operator, ubranch_operator, boolean_operator): Delete prototypes.
439         * config/xtensa/xtensa.c (b4const_or_zero): Rename to ...
440         (xtensa_b4const_or_zero): ...this.  Change return type to bool and
441         argument type to HOST_WIDE_INT.
442         (xtensa_simm8, xtensa_simm8x256, xtensa_simm12b,
443         xtensa_mask_immediate): Likewise.
444         (xtensa_uimm8, xtensa_uimm8x2, xtensa_uimm8x4, xtensa_b4const):
445         Likewise.  Also make these functions static.
446         (xtensa_simm7, xtensa_ai4const, xtensa_lsi4x4): Delete.
447         (xtensa_const_ok_for_letter_p): New.
448         (add_operand, arith_operand, nonimmed_operand, mem_operand,
449         mask_operand, extui_fldsz_operand, sext_operand, sext_fldsz_operand,
450         lsbitnum_operand, branch_operand, ubranch_operand, call_insn_operand,
451         move_operand, const_float_1_operand, fpmem_offset_operand,
452         branch_operator, ubranch_operator, boolean_operator): Move to
453         predicates.md.
454         (smalloffset_mem_p): Inline code from xtensa_lsi4x4.
455         (xtensa_mem_offset): Change return type to bool.
456         (xtensa_extra_constraint): New.
457         (gen_int_relational): Update type of const_range_p function pointer.
458         Use xtensa_b4const_or_zero.
459         * config/xtensa/xtensa.h (CONST_OK_FOR_LETTER_P): Define to
460         xtensa_const_ok_for_letter_p.  Update comments.
461         (EXTRA_CONSTRAINT): Define to xtensa_extra_constraint.
462         (PREDICATE_CODES): Delete.
463         * config/xtensa/xtensa.md: Include predicates.md.
464         * config/xtensa/predicates.md: New file.
465
466 2005-03-21  Kazu Hirata  <kazu@cs.umass.edu>
467
468         * config/v850/v850-protos.h: Remove the prototypes for
469         reg_or_int9_operand, reg_or_const_operand,
470         pattern_is_ok_for_prepare, pattern_is_ok_for_dispose,
471         reg_or_0_operand, reg_or_int5_operand, call_address_operand,
472         movsi_source_operand, power_of_two_operand,
473         not_power_of_two_operand, special_symbolref_operand,
474         pattern_is_ok_for_prologue, pattern_is_ok_for_epilogue, and
475         register_is_ok_for_epilogue.
476         * config/v850/v850.c (reg_or_0_operand, reg_or_int5_operand,
477         reg_or_int9_operand, reg_or_const_operand,
478         call_address_operand, special_symbolref_operand,
479         movsi_source_operand, power_of_two_operand,
480         not_power_of_two_operand, register_is_ok_for_epilogue,
481         pattern_is_ok_for_epilogue, pattern_is_ok_for_prologue,
482         pattern_is_ok_for_dispose, pattern_is_ok_for_prepare): Move to
483         predicates.md.
484         * config/v850/v850.h (PREDICATE_CODES): Remove.
485         * config/v850/v850.md: Include predicates.md.
486         * config/v850/predicates.md: New.
487
488 2005-03-21  Zack Weinberg  <zack@codesourcery.com>
489
490         * Makefile.in (BASEVER, DEVPHASE, DATESTAMP)
491         (BASEVER_c, DEVPHASE_c, DATESTAMP_c)
492         (BASEVER_s, DEVPHASE_s, DATESTAMP_s, version): Set with :=.
493         (itoolsdir, itoolsdatadir): Move definition above new first use.
494         (install-itoolsdirs): New rule.
495         (install-mkheaders): Depend on install-itoolsdirs, not
496         install-include-dir.
497
498 2005-03-21  Kazu Hirata  <kazu@cs.umass.edu>
499
500         * tree-into-ssa.c: Remove obsolete comments.
501
502 2005-03-21  Richard Guenther  <rguenth@gcc.gnu.org>
503
504         * tree-ssa-loop.c (gate_tree_complete_unroll): Run complete
505         unrolling if -fpeel-loops is specified, too.
506         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
507         Remove superfluous check for flag_unroll_loops.
508
509 2005-03-21  Uros Bizjak  <uros@kss-loka.si>
510
511         * optabs.h (enum optab_index): Add new OTI_lrint and OTI_llrint.
512         (lrint_optab, llrint_optab): Define corresponding macros.
513         * optabs.c (init_optabs): Initialize lrint_optab and llrint_optab.
514         * genopinit.c (optabs): Implement lrint_optab using lrintsi2
515         pattern and llrint_optab using llrintdi2 patterns.
516         * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_LRINT{,F,L}
517         using lrint_optab and BUILT_IN_LLRINT{,F,L} using llrint_optab.
518         (expand_builtin): Expand BUILT_IN_LRINT{,F,L} and
519         BUILT_IN_LLRINT{,F,L} using expand_builtin_mathfn if
520         flag_unsafe_math_optimizations is set.
521
522 2005-03-21  Paolo Bonzini  <bonzini@gnu.org>
523
524         * combine.c (combine_simplify_rtx, simplify_if_then_else,
525         simplify_logical, if_then_else_cond, known_cond,
526         simplify_comparison): Adjust calls to reverse_comparison.
527         Don't use combine_reversed_comparison_code).
528         (combine_reversed_comparison_code): Remove.
529         (reversed_comparison): Using reversed_comparison_code, move it...
530         * jump.c (reversed_comparison): ... here.
531         * rtl.h (reversed_comparison): Add prototype.
532
533 2005-03-21  Kazu Hirata  <kazu@cs.umass.edu>
534
535         * builtins.c (fold_builtin): Take decomposed arguments of
536         CALL_EXPR.
537         * fold-const.c (fold_ternary): Update a call to fold_builtin.
538         * gimplify.c (gimplify_call_expr): Likewise.
539         * tree-ssa-ccp.c (ccp_fold, ccp_fold_builtin): Likewise.
540         * tree.h: Update the prototype of fold_builtin.
541
542 2005-03-21  Paolo Bonzini  <bonzini@gnu.org>
543
544         * rtl.h (struct rtx_hooks): Add gen_lowpart_no_emit.
545         * rtlhooks.c (gen_lowpart_no_emit_general): New.
546         * rtlhooks-def.h (gen_lowpart_no_emit_general): Declare.
547         (RTL_HOOKS_GEN_LOWPART_NO_EMIT): New.
548         * simplify-rtx.c (simplify_binary_operation_1): Use it.
549
550 2005-03-21  Kazu Hirata  <kazu@cs.umass.edu>
551
552         * builtins.c (fold_builtin_1): Take decomposed arguments of
553         CALL_EXPR.
554         (fold_builtin): Update a call to fold_builtin_1.
555
556 2005-03-21  Nathan Sidwell  <nathan@codesourcery.com>
557
558         PR other/20564
559         * gcov.c (output_lines): Only output function block summary when
560         outputting branch information.
561         * doc/gcov.texi: Document format of preamble and additional block
562         information lines.
563
564 2005-03-21  Richard Sandiford  <rsandifo@redhat.com>
565
566         * libgcc2.h (LIBGCC2_HAS_SF_MODE): New macro.
567         (LIBGCC2_HAS_DF_MODE, LIBGCC2_HAS_TF_MODE, LIBGCC2_HAS_XF_MODE): Make
568         the defaults false if BITS_PER_UNIT != 8.
569         (SFtype, SCtype, __fixsfdi, __floatdisf, __fixunssfSI, __fixunssfDI)
570         (__powisf2, __divsc3, __mulsc3): Guard with LIBGCC2_HAS_SF_MODE rather
571         than BITS_PER_UNIT != 8.
572         (L_fixdfdi, L_fixsfdi, L_fixtfdi, L_fixunsdfdi, L_fixunsdfsi)
573         (L_fixunssfdi, L_fixunssfsi, L_fixunstfdi, L_fixunsxfdi, L_fixunsxfsi)
574         (L_fixxfdi, L_floatdidf, L_floatdisf, L_floatditf, L_floatdixf): Remove
575         #undefs.
576         * libgcc2.c (__fixunssfDI, __fixsfdi, __floatdisf, __fixunssfSI)
577         (__powisf2, __divsc3, __mulsc3): Guard with LIBGCC2_HAS_SF_MODE.
578
579 2005-03-20  Roger Sayle  <roger@eyesopen.com>
580
581         PR middle-end/20539
582         * fold-const.c (fold_binary): Fix type mismatch between
583         TRUTH_{AND,OR,XOR}_EXPR nodes an their operands' types.
584         (fold_binary) <TRUTH_XOR_EXPR>: Avoid calling invert_truthvalue
585         for non-truth-valued expressions.
586
587         * c-common.c (c_common_truthvalue_conversion): Handle ERROR_MARK
588         and FUNCTION_DECL in the main switch.
589         <TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
590         TRUTH_XOR_EXPR>: When changing the result type of these tree nodes,
591         we also need to convert their operands to match.
592         <TRUTH_NOT_EXPR>: Likewise.
593
594 2005-03-21  Joseph S. Myers  <joseph@codesourcery.com>
595
596         * c-common.c (lvalue_or_else): Replace by lvalue_error; only give
597         diagnostic without checking whether an lvalue.
598         * c-common.h (lvalue_p): Remove.
599         (enum lvalue_use): Update comment.
600         (lvalue_or_else): Replace by lvalue_error.
601         * c-typeck.c (lvalue_p): Make static.
602         (lvalue_or_else): New.  Call lvalue_error.
603
604 2005-03-21  Alan Modra  <amodra@bigpond.net.au>
605
606         * config/rs6000/rs6000.c (rs6000_parm_start): New function.
607         (function_arg_advance): Use rs6000_parm_start.
608         (function_arg, rs6000_arg_partial_bytes): Likewise.
609
610 2005-03-20  Joseph S. Myers  <joseph@codesourcery.com>
611
612         * c-common.c (check_case_value): Adjust comment about stripping
613         NOPs.
614         (handle_vector_size_attribute): Don't strip NON_LVALUE_EXPR.
615         * c-typeck.c (default_conversion, convert_arguments,
616         build_modify_expr, convert_for_assignment, store_init_value,
617         digest_init): Use STRIP_TYPE_NOPS instead of stripping nops
618         manually.  Remove inaccurate comments.
619
620 2005-03-20  Roger Sayle  <roger@eyesopen.com>
621             Joseph S. Myers  <joseph@codesourcery.com>
622
623         * varasm.c (do_assemble_alias): Restore comment describing function.
624         Annotate the target parameter as potentially unused.
625
626 2005-03-20  Marek Michalkiewicz  <marekm@amelek.gda.pl>
627
628         PR target/18551
629         * config/avr/avr.c (avr_output_function_prologue): Do not use
630         current_function_name() in a label, use a local label instead.
631
632 2005-03-20  David Edelsohn  <edelsohn@gnu.org>
633
634         * config/rs6000/rs6000.c (rs6000_generate_compare): Test
635         flag_finite_math_only, not flag_unsafe_math_optimizations.
636
637 2005-03-20  Kazu Hirata  <kazu@cs.umass.edu>
638
639         * builtins.c (fold_builtin_1): Update a call to
640         targetm.fold_builtin.
641         * hooks.c (hook_tree_tree_bool_null): Rename to
642         hook_tree_tree_tree_bool_null.  Take one more argument of type
643         tree.
644         * hooks.h: Update the prototype of hook_tree_tree_bool_null.
645         * target-def.h (TARGET_FOLD_BUILTIN): Define it as
646         hook_tree_tree_tree_bool_null.
647         * target.h (gcc_target): Update the prototype of fold_builtin.
648         * config/alpha/alpha.c (alpha_fold_builtin): Take decomposed
649         arguments of CALL_EXPR.
650         * doc/tm.texi (TARGET_FOLD_BUILTIN): Update.  Mention the
651         new prototype.
652
653 2005-03-20  Jan Hubicka  <jh@suse.cz>
654
655         * cgraph.h (cgraph_node): Add prev_clone pointer.
656         * cgraph.c (cgraph_remove_node): Remove from doubly linked chain.
657         (cgraph_clone_node): Produce doubly linked chain.
658
659 2005-03-20  Joseph S. Myers  <joseph@codesourcery.com>
660
661         * c-common.c (handle_aligned_attribute, check_function_sentinel,
662         get_nonnull_operand, handle_sentinel_attribute,
663         check_function_arguments_recurse): Do not strip NOPS from
664         INTEGER_CSTs.
665         * c-decl.c (check_bitfield_type_and_width, build_enumerator):
666         Likewise.
667         * c-format.c (get_constant): Likewise.
668         * c-parser.c (c_parser_postfix_expression): Likewise.
669         * c-typeck.c (set_init_index): Likewise.
670         (convert_arguments): Don't check for NOP_EXPR containing integer
671         constant.
672
673 2005-03-20  Kazu Hirata  <kazu@cs.umass.edu>
674
675         * builtins.c (fold_fixed_mathfn, fold_builtin_trunc,
676         fold_builtin_floor, fold_builtin_ceil, fold_builtin_lround):
677         Take decomposed arguments of CALL_EXPR.
678         (fold_builtin_1): Update calls to the functions mentioned
679         above.
680
681 2005-03-20  Joseph S. Myers  <joseph@codesourcery.com>
682
683         * c-decl.c (check_bitfield_type_and_width): Require bit-field
684         width to have integer type.
685         (build_enumerator): Require enumerator value to have integer type.
686
687 2005-03-19  Joseph S. Myers  <joseph@codesourcery.com>
688
689         * doc/extend.texi (__builtin_inf): Move statement about INFINITY
690         to __builtin_inff.
691
692 2005-03-19  Joseph S. Myers  <joseph@codesourcery.com>
693
694         * c.opt (ansi, std=iso9899:1990, std=iso9899:1999,
695         std=iso9899:199x): Correct descriptions.
696
697 2005-03-19  Joseph S. Myers  <joseph@codesourcery.com>
698
699         * config.gcc: Consistently use solaris2.1[0-9]* instead of
700         solaris2.1[0-9].
701
702 2005-03-19  Kazu Hirata  <kazu@cs.umass.edu>
703
704         * builtins.c (fold_builtin_memcpy): Take decomposed arguments
705         of CALL_EXPR.
706         (expand_builtin_memcpy, fold_builtin_1): Update calls to
707         fold_builtin_memcpy.
708
709         * builtins.c (fold_trunc_transparent_mathfn): Take decomposed
710         arguments of CALL_EXPR.
711         (fold_builtin_trunc, fold_builtin_floor, fold_builtin_ceil,
712         fold_builtin_found, fold_builtin_1): Update calls to
713         fold_trunc_transparent_mathfn.
714
715 2005-03-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
716
717         PR middle-end/20493
718         * fold-const.c (fold_widened_comparison): Don't optimize casts of
719         function pointers on targets that require function pointer
720         canonicalization.
721         (fold_sign_changed_comparison): Likewise.
722
723 2005-03-19  Bernd Schmidt  <bernd.schmidt@analog.com>
724
725         * combine.c (try_combine): When changing the mode of a hard reg, make
726         sure that doing so is valid.
727
728 2005-03-19  Richard Sandiford  <rsandifo@redhat.com>
729
730         * config/avr/avr.c (avr_init_stack, avr_mcu_name): Make static.
731         (TARGET_HANDLE_OPTION): Override default.
732         (avr_handle_option): New function.
733         * config/avr/avr.h (MASK_ALL_DEBUG, MASK_ORDER_1, MASK_INSN_SIZE_DUMP)
734         (MASK_ORDER_2, MASK_NO_TABLEJUMP, MASK_INT8, MASK_NO_INTERRUPTS)
735         (MASK_CALL_PROLOGUES, MASK_TINY_STACK, MASK_SHORT_CALLS)
736         (TARGET_ORDER_1, TARGET_ORDER_2, TARGET_INT8, TARGET_NO_INTERRUPTS)
737         (TARGET_INSN_SIZE_DUMP, TARGET_CALL_PROLOGUES, TARGET_TINY_STACK)
738         (TARGET_NO_TABLEJUMP, TARGET_SHORT_CALLS, TARGET_ALL_DEBUG)
739         (TARGET_SWITCHES, avr_init_stack, avr_mcu_name)
740         (TARGET_OPTIONS): Delete.
741         * config/avr/avr.opt: New file.
742
743 2005-03-18  2005-03-18  Kazu Hirata  <kazu@cs.umass.edu>
744
745         * config/m32r/m32r-protos.h: Remove the prototypes for
746         call_address_operand, symbolic_operand, seth_add3_operand,
747         cmp_int16_operand, uint16_operand, reg_or_int16_operand,
748         reg_or_uint16_operand, reg_or_cmp_int16_operand,
749         two_insn_const_operand, move_src_operand,
750         move_double_src_operand, move_dest_operand,
751         eqne_comparison_operator, signed_comparison_operator,
752         large_insn_p, conditional_move_operand, carry_compare_operand,
753         m32r_block_immediate_operand, extend_operand,
754         reg_or_eq_int16_operand, int8_operand, and
755         reg_or_zero_operand.
756         * config/m32r/m32r.c (call_address_operand, symbolic_operand,
757         seth_add3_operand, int8_operand, cmp_int16_operand,
758         uint16_operand, reg_or_int16_operand, reg_or_uint16_operand,
759         reg_or_eq_int16_operand, reg_or_cmp_int16_operand,
760         reg_or_zero_operand, two_insn_const_operand, move_src_operand,
761         move_double_src_operand, move_dest_operand,
762         eqne_comparison_operator, signed_comparison_operator,
763         extend_operand, small_insn_p, large_insn_p,
764         conditional_move_operand, carry_compare_operand,
765         m32r_block_immediate_operand): Move to predicates.md.
766         (MAX_MOVE_BYTES): Move to m32r.h.
767         * config/m32r/m32r.h (PREDICATE_CODES): Remove.
768         * config/m32r/m32r.md: Include predicates.md.
769         * config/m32r/predicates.md: New.
770
771 2005-03-18  James E Wilson  <wilson@specifixinc.com>
772
773         PR c++/19769
774         * dwarf2out.c (declare_in_namespace): Ignore decls with an abstract
775         origin.
776
777 2005-03-18  Kazu Hirata  <kazu@cs.umass.edu>
778
779         * config/mn10300/mn10300-protos.h: Remove the prototypes for
780         call_address_operand, const_8bit_operand.
781         * config/mn10300/mn10300.c (call_address_operand,
782         const_8bit_operand, const_1f_operand): Move to predicates.md.
783         * config/mn10300/mn10300.h (PREDICATE_CODES): Remove.
784         * config/mn10300/mn10300.md: Include predicates.md.
785         * config/mn10300/predicates.md: New.
786
787 2005-03-18  Joseph S. Myers  <joseph@codesourcery.com>
788
789         * c-common.c, c-decl.c, c-format.c, c-typeck.c: Use %D for
790         declarations in diagnostics and %E for identifiers, not %s.
791
792 2005-03-18  Jan Hubicka  <jh@suse.cz>
793             Dale Johannesen  <dalej@apple.com>
794
795         * basic-block.h (scale_bbs_frequencies_int,
796         scale_bbs_frequencies_gcov_type): Declare.
797         * cfg.c (RDIV): New macro.
798         (update_bb_frequency_for_threading): Fix.
799         * basic-block.h (scale_bbs_frequencies_int,
800         scale_bbs_frequencies_gcov_type): New.
801         * cfgloopmanip.c (scale_bbs_frequencies): Kill.
802         (scale_loop_frequencies, duplicate_loop_to_header_edge): Use
803         scale_bbs_frequencies_int.
804         * tree-ssa-loop-ch.c (copy_loop_headers): Fix profiling info.
805
806 2005-03-18  Kazu Hirata  <kazu@cs.umass.edu>
807
808         * config/m32r/m32r-protos.h: Remove the prototypes for
809         call_address_operand, symbolic_operand, seth_add3_operand,
810         cmp_int16_operand, uint16_operand, reg_or_int16_operand,
811         reg_or_uint16_operand, reg_or_cmp_int16_operand,
812         two_insn_const_operand, move_src_operand,
813         move_double_src_operand, move_dest_operand,
814         eqne_comparison_operator, signed_comparison_operator,
815         large_insn_p, conditional_move_operand, carry_compare_operand,
816         m32r_block_immediate_operand, extend_operand,
817         reg_or_eq_int16_operand, int8_operand, and
818         reg_or_zero_operand.
819         * config/m32r/m32r.c (call_address_operand, symbolic_operand,
820         seth_add3_operand, int8_operand, cmp_int16_operand,
821         uint16_operand, reg_or_int16_operand, reg_or_uint16_operand,
822         reg_or_eq_int16_operand, reg_or_cmp_int16_operand,
823         reg_or_zero_operand, two_insn_const_operand, move_src_operand,
824         move_double_src_operand, move_dest_operand,
825         eqne_comparison_operator, signed_comparison_operator,
826         extend_operand, small_insn_p, large_insn_p,
827         conditional_move_operand, carry_compare_operand,
828         m32r_block_immediate_operand): Move to predicates.md.
829         (MAX_MOVE_BYTES): Move to m32r.h.
830         * config/m32r/m32r.h (PREDICATE_CODES): Remove.
831         * config/m32r/m32r.md: Include predicates.md.
832         * config/m32r/predicates.md: New.
833
834         * config/pa/pa-protos.h: Add prototypes for magic_milli and
835         shadd_constant_p.
836         * config/pa/pa.c (reg_or_0_operand, call_operand_address,
837         symbolic_operand, symbolic_memory_operand,
838         reg_or_0_or_nonsymb_mem_operand, reg_before_reload_operand,
839         indexed_memory_operand, move_dest_operand, move_src_operand,
840         prefetch_cc_operand, prefetch_nocc_operand,
841         reg_or_cint_move_operand, pic_label_operand, fp_reg_operand,
842         arith_operand, arith11_operand, pre_cint_operand,
843         post_cint_operan, arith_double_operand, ireg_or_int5_operand,
844         ireg_operand, int5_operand, uint5_operand, int11_operand,
845         uint32_operand, arith5_operand, and_operand, ior_operand,
846         lhs_lshift_operand, lhs_lshift_cint_operand, arith32_operand,
847         pc_or_label_operand, div_operand, plus_xor_ior_operator,
848         shadd_operand, movb_comparison_operator,
849         cmpib_comparison_operator): Move to predicates.md.
850         (magic_milli, shadd_constant_p): Make it extern.
851         * config/pa/pa.h (PREDICATE_CODES): Remove.
852         * config/pa/pa.md: Include predicates.md.
853         * config/pa/predicates.md: New.
854
855         * config/v850/v850.h (PREDICATE_CODES): Remove a nonexistent
856         predicate.
857
858 2005-03-18  Kazu Hirata  <kazu@cs.umass.edu>
859
860         * hooks.c, hooks.h, intl.c, opts.h, prefix.c, tree-gimple.c,
861         config/alpha/ev4.md, config/alpha/ev5.md, config/alpha/ev6.md,
862         config/alpha/freebsd.h, config/alpha/linux.h,
863         config/alpha/netbsd.h, config/alpha/osf5.h,
864         config/alpha/vms.h, config/arc/arc.c, config/arc/arc.h,
865         config/h8300/h8300-protos.h, config/h8300/h8300.c,
866         config/h8300/h8300.h, config/ia64/unwind-ia64.c,
867         doc/cppopts.texi: Update copyright.
868
869 2005-03-18  Jan Hubicka  <jh@suse.cz>
870
871         PR middle-end/20225
872         * cgraph.c (cgraph_mark_reachable_node): Assert that it is not called
873         too late.
874         * varasm.c (find_decl_and_mark_needed): Mark needed only when not
875         called too late.
876
877 2005-03-18  Kazu Hirata  <kazu@cs.umass.edu>
878
879         * tree-into-ssa.c (find_idf): Use VEC_quick_push instead of
880         VEC_safe_push.
881
882 2005-03-18  Paolo Bonzini  <bonzini@gnu.org>
883
884         * combine.c (gen_binary): Remove.
885         (known_cond, simplify_shift_const, find_split_point,
886         combine_simplify_rtx, simplify_if_then_else, simplify_set,
887         simplify_logical, expand_field_assignment, extract_left_shift,
888         force_to_mode, if_then_else_cond, apply_distributive_law,
889         simplify_and_const_int, simplify_shift_const, gen_lowpart_for_combine,
890         simplify_comparison, reversed_comparison): Replace with
891         simplify_gen_binary, simplify_gen_relational or
892         distribute_and_simplify_rtx.
893         (distribute_and_simplify_rtx): New function.
894
895 2005-03-18  Alexey Neyman  <alex.neyman@auriga.ru>
896             Paolo Bonzini  <gcc.gnu.org>
897
898         * calls.c (setjmp_call_p, special_function_p): Update comments
899         at the head of the functions.
900
901 2005-03-18  Jan Hubicka  <jh@suse.cz>
902
903         * tree-cfg.c (fold_cond_expr_cond): Use boolean types for condition.
904
905         * cgraph.c (cgraph_remove_node): Avoid loop in code deciding whether
906         function body should be released; do not proactively release function
907         bodies in non-unit-at-a-time mode.
908
909 2005-03-18  Ralf Corsepius  <ralf.corsepius@rtems.org>
910
911         * config/i386/t-rtems-i386 (MULTILIBS): Remove k6, athlon,
912         mno-fp-ret-in-387 multilib variants.
913
914 2005-03-18  Richard Sandiford  <rsandifo@redhat.com>
915
916         * common.opt (m): Remove.
917         * opts.c (handle_option): Pass 'm' options to set_target_switch if
918         table lookup fails.
919         (common_handle_option): Remove OPT_m case.
920
921 2005-03-18  Kazu Hirata  <kazu@cs.umass.edu>
922
923         * builtins.c (fold_builtin_bitop): Take decomposed arguments
924         of CALL_EXPR.
925         (fold_builtin_1): Update a call to fold_builtin_bitop.
926
927         * builtins.c (fold_builtin_signbit): Take decomposed arguments
928         of CALL_EXPR.
929         (fold_builtin_1): Update a call to fold_builtin_signbit.
930
931 2005-03-17  Dorit Naishlos  <dorit@il.ibm.com>
932
933         PR tree-optimization/20474
934         * tree-vect-analyze.c (vect_analyze_pointer_ref_access): Check the
935         size_type of the relevant pointer. Check for COMPLETE_TYPE_P.
936
937 2005-03-17  Kazu Hirata  <kazu@cs.umass.edu>
938
939         * config/h8300/h8300-protos.h: Remove prototypes for
940         general_operand_src, general_operand_dst, single_one_operand,
941         single_zero_operand, call_insn_operand,
942         two_insn_adds_subs_operand, small_call_insn_operand,
943         jump_address_operand, bit_operand, bit_memory_operand,
944         stack_pointer_operand, const_int_gt_2_operand,
945         const_int_ge_8_operand, const_int_qi_operand,
946         const_int_hi_operand, incdec_operand, bit_operator,
947         nshift_operator, eqne_operator, gtle_operator,
948         gtuleu_operator, iorxor_operator.
949         Add prototypes for h8sx_shift_type h8sx_classify_shift and
950         h8300_ldm_stm_parallel.
951         * config/h8300/h8300.c (h8sx_shift_type,): Move to
952         h8300-protos.h.
953         (SYMBOL_FLAG_FUNCVEC_FUNCTION, SYMBOL_FLAG_EIGHTBIT_DATA,
954         SYMBOL_FLAG_TINY_DATA): Move to h8300.h.
955         (h8300_ldm_stm_parallel): Make it extern.
956         (h8300_ldm_parallel, h8300_stm_parallel,
957         h8300_return_parallel, general_operand_src,
958         general_operand_dst, h8300_dst_operand, h8300_src_operand,
959         nibble_operand, reg_or_nibble_operand, single_one_operand,
960         single_zero_operand, call_insn_operand,
961         two_insn_adds_subs_operand, small_call_insn_operand,
962         jump_address_operand, bit_operand, bit_memory_operand,
963         stack_pointer_operand, const_int_gt_2_operand,
964         const_int_ge_8_operand, const_int_qi_operand,
965         const_int_hi_operand, incdec_operand, eqne_operator,
966         gtle_operator, gtuleu_operator, iorxor_operator, bit_operator,
967         h8sx_binary_memory_operator, h8sx_unary_memory_operator,
968         h8sx_unary_shift_operator, h8sx_binary_shift_operator,
969         nshift_operator): Move to predicates.md.
970         * config/h8300/h8300.h (PREDICATE_CODES): Remove.
971         * config/h8300/h8300.md: Include predicates.md.
972         * config/h8300/predicates.md: New.
973
974 2005-03-17  Richard Henderson  <rth@redhat.com>
975
976         * config.gcc (ia64*-*-hpux*): Add extra_options.
977         * config/ia64/hpux.h (SUBTARGET_SWITCHES): Remove.
978         (TARGET_DEFAULT): Remove MASK_INLINE_FLOAT_DIV_THR.
979         * config/ia64/ia64.c (ia64_fixed_range_string): Remove.
980         (ia64_tls_size_string, ia64_tune_string): Remove.
981         (ia64_tune): Init to PROCESSOR_ITANIUM2.
982         (TARGET_DEFAULT_TARGET_FLAGS): New.
983         (TARGET_HANDLE_OPTION): New.
984         (ia64_override_options): Move options parsing ...
985         (ia64_handle_option): ... here.  New.
986         * config/ia64/ia64.h (target_flags, MASK_BIG_ENDIAN, MASK_GNU_AS,
987         MASK_GNU_LD, MASK_NO_PIC, MASK_VOL_ASM_STOP, MASK_ILP32,
988         MASK_REG_NAMES, MASK_NO_SDATA, MASK_CONST_GP, MASK_AUTO_PIC,
989         MASK_INLINE_FLOAT_DIV_LAT, MASK_INLINE_FLOAT_DIV_THR,
990         MASK_INLINE_INT_DIV_LAT, MASK_INLINE_INT_DIV_THR,
991         MASK_INLINE_SQRT_LAT, MASK_INLINE_SQRT_THR, MASK_DWARF2_ASM,
992         MASK_EARLY_STOP_BITS, TARGET_BIG_ENDIAN, TARGET_GNU_AS, TARGET_GNU_LD,
993         TARGET_NO_PIC, TARGET_VOL_ASM_STOP, TARGET_ILP32, TARGET_REG_NAMES,
994         TARGET_NO_SDATA, TARGET_CONST_GP, TARGET_AUTO_PIC,
995         TARGET_INLINE_FLOAT_DIV_LAT, TARGET_INLINE_FLOAT_DIV_THR,
996         TARGET_INLINE_INT_DIV_LAT, TARGET_INLINE_INT_DIV_THR,
997         TARGET_INLINE_FLOAT_DIV, TARGET_INLINE_INT_DIV, TARGET_INLINE_SQRT_LAT,
998         TARGET_INLINE_SQRT_THR, TARGET_INLINE_SQRT, TARGET_DWARF2_ASM,
999         TARGET_EARLY_STOP_BITS): Remove.
1000         (TARGET_ILP32): Default false.
1001         (TARGET_SWITCHES, SUBTARGET_SWITCHES, TARGET_OPTIONS): Remove.
1002         (enum ia64_inline_type): New.
1003         (TARGET_DEFAULT): Remove MASK_INLINE_FLOAT_DIV_THR.
1004         * config/ia64/ia64.md: Update for new definitions of
1005         TARGET_INLINE_INT_DIV, TARGET_INLINE_FLOAT_DIV, TARGET_INLINE_SQRT.
1006         * config/ia64/ia64.opt: New file.
1007         * config/ia64/ilp32.opt: New file.
1008
1009 2005-03-17  H.J. Lu  <hongjiu.lu@intel.com>
1010
1011         PR target/18380
1012         * config/ia64/unwind-ia64.c (_Unwind_FindTableEntry): Removed.
1013
1014 2005-03-17  Kazu Hirata  <kazu@cs.umass.edu>
1015
1016         * config/h8300/h8300.c (h8300_init_once): Use MASK_H8300S_1
1017         instead of MASK_H8300S.
1018         * config/h8300/h8300.h (target_flags, MASK_H8300S, MASK_MAC,
1019         MASK_INT32, MASK_ADDRESSES, MASK_QUICKCALL, MASK_SLOWBYTE,
1020         MASK_NORMAL_MODE, MASK_RELAX, MASK_H8300H, MASK_ALIGN_300,
1021         MASK_H8300SX, TARGET_INT32, TARGET_ADDRESSES,
1022         TARGET_QUICKCALL, TARGET_SLOWBYTE, TARGET_H8300H,
1023         TARGET_H8300XS, TARGET_NORMAL_MODE, TARGET_ALIGN_300,
1024         TARGET_SWITCHES): Remove.
1025         (TARGET_H8300S): Redefine interms of TARGET_H8300S_1 and
1026         TARGET_H8300SX.
1027         * config/h8300/h8300.opt: New.
1028
1029         * config/alpha/alpha.opt, config/arc/arc.opt,
1030         config/h8300/h8300.opt, config/mips/mips.opt: Add copyright
1031         notices.
1032
1033 2005-03-17  Ian Lance Taylor  <ian@airs.com>
1034
1035         * gmon.c: Remove.
1036
1037 2005-03-17  Richard Sandiford  <rsandifo@redhat.com>
1038
1039         * config/arc/arc.c (arc_cpu_string): Make static.  Default to "base"
1040         (arc_text_string, arc_data_string, arc_rodata_string): Make static.
1041         (TARGET_HANDLE_OPTION): Override default.
1042         (arc_handle_option): New function.
1043         (arc_init): Remove code to set arch_cpu_string.
1044         * config/arc/arc.h (target_flags, TARGET_MASK_MANGLE_CPU)
1045         (TARGET_MANGLE_CPU, TARGET_MASK_MANGLE_CPU_LIBGCC)
1046         (TARGET_MANGLE_CPU_LIBGCC, TARGET_MASK_ALIGN_LOOPS, TARGET_ALIGN_LOOPS)
1047         (TARGET_MASK_BIG_ENDIAN, TARGET_BIG_ENDIAN, TARGET_MASK_NO_COND_EXEC)
1048         (TARGET_NO_COND_EXEC, TARGET_SWITCHES, TARGET_DEFAULT)
1049         (SUBTARGET_SWITCHES, arc_cpu_string, arc_text_string, arc_data_string)
1050         (arc_rodata_string, TARGET_OPTIONS): Delete.
1051         * config/arc/arc.opt: New file.
1052
1053 2005-03-17  Richard Henderson  <rth@redhat.com>
1054
1055         * doc/extend.texi (Weak Pragmas): New section.
1056         (attribute alias): Clarify that target must be in the same
1057         translation unit.
1058
1059 2005-03-17  Richard Henderson  <rth@redhat.com>
1060
1061         * config/alpha/alpha.opt: New file.
1062         * config/alpha/alpha.c (alpha_tune): New.  Rename all existing uses
1063         of alpha_cpu.
1064         (alpha_cpu_string, alpha_tune_string, alpha_tp_string,
1065         alpha_fprm_string, alpha_fptm_string): Make static.
1066         (alpha_tls_size_string): Remove.
1067         (alpha_handle_option): New.
1068         (override_options): Update for alpha_cpu/alpha_tune split.
1069         (alpha_file_start): Likewise.
1070         (TARGET_DEFAULT_TARGET_FLAGS): New.
1071         (TARGET_HANDLE_OPTION): New.
1072         * config/alpha/alpha.h (alpha_tune): Declare.
1073         (MASK_FP, MASK_FPREGS, TARGET_FPREGS, MASK_GAS, TARGET_GAS,
1074         MASK_IEEE_CONFORMANT, TARGET_IEEE_CONFORMANT, MASK_IEEE, TARGET_IEEE,
1075         MASK_IEEE_WITH_INEXACT, TARGET_IEEE_WITH_INEXACT, MASK_BUILD_CONSTANTS,
1076         TARGET_BUILD_CONSTANTS, MASK_FLOAT_VAX, TARGET_FLOAT_VAX, MASK_BWX,
1077         TARGET_BWX, MASK_MAX, TARGET_MAX, MASK_FIX, TARGET_FIX, MASK_CIX,
1078         TARGET_CIX, MASK_EXPLICIT_RELOCS, TARGET_EXPLICIT_RELOCS,
1079         MASK_SMALL_DATA, TARGET_SMALL_DATA, MASK_TLS_KERNEL, TARGET_TLS_KERNEL,
1080         MASK_SMALL_TEXT, TARGET_SMALL_TEXT, MASK_LONG_DOUBLE_128,
1081         TARGET_LONG_DOUBLE_128, MASK_CPU_EV5, TARGET_CPU_EV5, MASK_CPU_EV6,
1082         TARGET_CPU_EV6, MASK_SUPPORT_ARCH): Remove.
1083         (TARGET_SWITCHES, TARGET_OPTIONS): Remove.
1084         (TARGET_DEFAULT): Remove MASK_FP.
1085         (TARGET_FP): Redefined based on TARGET_SOFT_FP.
1086         (TARGET_SUPPORT_ARCH): Default on if HAVE_AS_EXPLICIT_RELOCS.
1087         (alpha_cpu_string, alpha_tune_string, alpha_fprm_string,
1088         alpha_fptm_string, alpha_tp_string, alpha_mlat_string,
1089         alpha_tls_size_string): Remove.
1090         * config/alpha/alpha.md (prefetch): Use alpha_cpu.
1091         (attribute tune): Rename from attribute cpu.
1092         * config/alpha/ev4.md: Update to match.
1093         * config/alpha/ev5.md, config/alpha/ev6.md: Likewise.
1094         * config/alpha/freebsd.h (TARGET_DEFAULT): Remove MASK_FP.
1095         * config/alpha/linux.h (TARGET_DEFAULT): Likewise.
1096         * config/alpha/netbsd.h (TARGET_DEFAULT): Likewise.
1097         * config/alpha/osf5.h (TARGET_DEFAULT): Likewise.
1098         * config/alpha/vms.h (TARGET_DEFAULT): Likewise.
1099
1100 2005-03-16  James E. Wilson  <wilson@specifixinc.com>
1101
1102         * config/ia64/ia64.c (issue_nops_and_insn): Check first_insn attribute,
1103         and return without creating new state if before_nops_num is nonzero.
1104         * config/ia64/ia64.md (first_insn): New attribute.
1105         (alloc): Set it to yes.
1106
1107 2005-03-16  Daniel Berlin  <dberlin@dberlin.org>
1108
1109         * tree-vectorizer.c (new_vec_stmt_info): Initialize
1110         STMT_VINFO_SUBVARS to NULL.
1111         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
1112
1113 2005-03-16 Dale Johannesen  <dalej@apple.com>
1114
1115         * rtlanal.c (find_first_parameter_load):  Rewrite to
1116         return actual first param load or the call if none,
1117         instead of first in block, when not all loads exist.
1118
1119 2005-03-16  Roger Sayle  <roger@eyesopen.com>
1120
1121         * optabs.c (expand_copysign_absneg): Make static.
1122         * optabs.h (expand_copysign_absneg): Delete prototype.
1123         * config/rs6000/rs6000.md (copysigntf3): Delete pattern.
1124
1125 2005-03-16  Richard Henderson  <rth@redhat.com>
1126
1127         PR middle-end/15700
1128         * varasm.c (struct alias_pair): Rename from struct output_def_pair.
1129         (alias_pairs): Rename from output_defs.
1130         (find_decl_and_mark_needed): Split out from assemble_alias.
1131         (do_assemble_alias): New.
1132         (assemble_output_def): Remove.
1133         (finish_aliases_1, finish_aliases_2): New.
1134         (process_pending_assemble_output_defs): Remove.
1135         (assemble_alias): Defer aliases for which we don't yet have a
1136         non-external decl for the target symbol.
1137         * passes.c (rest_of_decl_compilation): Register variables with cgraph.
1138         * cgraphunit.c (cgraph_finalize_compilation_unit): Use finish_aliases_1.
1139         * toplev.c (compile_file): Use finish_aliases_2 instead of
1140         process_pending_assemble_output_defs.
1141         * tree.h (finish_aliases_1, finish_aliases_2): Declare.
1142         (process_pending_assemble_output_defs): Remove.
1143
1144 2005-03-16  Daniel Berlin  <dberlin@dberlin.org>
1145
1146         Fix PR tree-optimization/20489
1147
1148         * tree-ssa-alias.c (push_fields_onto_fieldstack): DTRT
1149         for empty structures.
1150
1151 2005-03-16  Daniel Berlin  <dberlin@dberlin.org>
1152
1153         Fix PR tree-optimization/20490
1154
1155         * tree-ssa-pre.c (create_expression_by_pieces): Use
1156         force_gimple_operand on result of fold.
1157
1158 2005-03-16  Andrew Pinski  <pinskia@physics.uc.edu>
1159
1160         * config/i386/emmintrin.h (_mm_extract_epi16): Correct the number
1161         of closing parenthesis.
1162
1163 2005-03-16  Kazu Hirata  <kazu@cs.umass.edu>
1164
1165         * builtins.c (expand_movstr): Update a call to
1166         fold_builtin_strcpy.
1167         (expand_builtin_strncpy): Update a call to
1168         fold_builtin_strncpy.
1169         (fold_builtin_strcpy, fold_builtin_strncpy): Take decomosed
1170         arguments of CALL_EXPR.
1171         (fold_builtin_1): Update calls to fold_builtin_strcpy and
1172         fold_builtin_strncpy.
1173         * tree-ssa-ccp.c (ccp_fold_builtin): Likewise.
1174         * tree.h: Update the prototypes of fold_builtin_strcpy and
1175         fold_builtin_strncpy.
1176
1177 2005-03-16  Steven Bosscher  <stevenb@suse.de>
1178             Dorit Naishlos  <dorit@il.ibm.com>
1179
1180         * tree-vect-analyze.c (vect_enhance_data_refs_alignment): Copy
1181         UNITS_PER_SIMD_WORD to a local variable to avoid a "division by zero"
1182         error.
1183
1184 2005-03-16  Steven Bosscher  <stevenb@suse.de>
1185
1186         * tree-inline.c (walk_type_fields, walk_tree,
1187         walk_tree_without_duplicates): Move from here...
1188         * tree.c: ...to here.
1189
1190 2005-03-15  Zack Weinberg  <zack@codesourcery.com>
1191
1192         * BASE-VER, DATESTAMP, DEV-PHASE: New files.
1193         * Makefile.in (gcc_version, gcc_version_trigger, ): Delete.
1194         (BASEVER, DEVPHASE, DATESTAMP, BASEVER_c, DEVPHASE_c, DATESTAMP_c)
1195         (BASEVER_s, DEVPHASE_s, DATESTAMP_s): New variables.
1196         (version): Define using $(BASEVER_c).
1197         (Makefile, config.status, build/gcov-iov.o): No longer depends on
1198         version.c.
1199         (version.o): Depend on version files; add custom generation command.
1200         (prefix.o): Define BASEVER on command line.
1201         (s-iov): Depend on version files; adjust command.
1202         (TEXI_CPP_FILES, TEX_IGCC_FILES, TEXI_GCCINT_FILES, TEXI_CPPINT_FILES):
1203         Add gcc-vers.texi.
1204         (gcc-vers.texi): New rule.
1205         (doc/%.info, doc/%.dvi): Add -I . to command line.
1206         (doc/gccinstall.dvi): Likewise.
1207         (PACKAGE): Delete.  All uses replaced with "gcc".
1208         * aclocal.m4: Do not include gcc-version.m4.
1209         * configure.ac: Do not invoke TL_AC_GCC_VERSION.
1210         Do not AC_SUBST nor AC_DEFINE PACKAGE or VERSION.
1211         Set is_release based on contents of DEV-PHASE.
1212         Set gcc_version based on contents of BASE-VER.
1213         Define WIN32_REGISTRY_KEY only if the user overrode the default.
1214         * config.in, configure: Regenerate.
1215         * gccbug.in: Determine version of GCC in use at runtime.
1216         * gcov-iov.c: Get version number and development phase from
1217         command line, not by including version.c.
1218         * intl.c: Replace all uses of PACKAGE with "gcc".
1219         * libada-mk.in: Delete unused "gcc_version" variable.
1220         * prefix.c: Default WIN32_REGISTRY_KEY to BASEVER.
1221         * version.c: (VERSUFFIX): New hook for redistributors; adjust
1222         commentary to match.
1223         (version_string): Put together from pieces.
1224         * config/alpha/x-vms: Do not use $(gcc_version).
1225         * config/i386/t-nwld: Likewise.
1226         * doc/include/gcc-common.texi: Include gcc-vers.texi for
1227         version-GCC and DEVELOPMENT.
1228
1229 2005-03-15  Roger Sayle  <roger@eyesopen.com>
1230
1231         PR tree-optimization/17454
1232         * tree.c (tree_size): Add case for TREE_BINFO.
1233         * fold-const.c (fold_checksum_tree): Only clear the overloaded
1234         field TYPE_CACHED_VALUES if TYPE_CACHED_VALUES_P is set.
1235
1236 2005-03-15  Roger Sayle  <roger@eyesopen.com>
1237
1238         * optabs.c (expand_doubleword_mult): Avoid clobbering op0 and
1239         op1 whilst expanding the signed widenening multiply variant.
1240
1241 2005-03-15  Richard Sandiford  <rsandifo@redhat.com>
1242
1243         * toplev.c (display_target_options): Avoid unused variable warning if
1244         TARGET_SWITCHES and TARGET_OPTIONS are both undefined.
1245         * config/mips/mips.c (mips_arch_string, mips_tune_string): Make static.
1246         (mips_isa_string, mips_abi_string, mips_fix_vr4130_string): Delete.
1247         (mips_isa): Initialize to MIPS_ABI_DEFAULT.
1248         (mips_isa_info): New variable.
1249         (mips_parse_cpu): Remove the first argument and leave the caller
1250         to report errors.
1251         (TARGET_HANDLE_OPTION): Override default.
1252         (mips_handle_option): New function.  Move option validation code from...
1253         (override_options): ...here.  Update calls to mips_parse_cpu.
1254         * config/mips/mips.h (mips_arch_string, mips_tune_string)
1255         (mips_isa_string, mips_abi_string, TARGET_OPTIONS)
1256         (SUBTARGET_TARGET_OPTIONS): Delete.
1257         * config/mips/mips.opt (mabi=, march=, mflush-func=, mips)
1258         (mno-flush-func, mtune=): New options.
1259
1260 2005-03-15  Roger Sayle  <roger@eyesopen.com>
1261             Richard Henderson  <rth@redhat.com>
1262
1263         * real.c (c4x_single_format, c4x_extended_format): Provide values
1264         for signbit_ro for c4x's single and extended floating point formats.
1265         * optabs.c (expand_copysign): Use the floating point format's
1266         signbit_ro for expanding via expand_copysign_absneg, and it's
1267         signbit_rw field for expanding via expand_copysign_bit.
1268
1269 2005-03-15  Dorit Naishlos  <dorit@il.ibm.com>
1270
1271         * tree-vectorizer.h (unknown_alignment_for_access_p): Replaced by
1272         known_alignment_for_access_p.
1273         (known_alignment_for_access_p): New.
1274         (do_peeling_for_alignment): Field made int instead of bool and renamed
1275         to peeling_for_alignment.
1276         (LOOP_DO_PEELING_FOR_ALIGNMENT): Renamed to LOOP_PEELING_FOR_ALIGNMENT.
1277         * tree-vect-analyze.c (vect_determine_vectorization_factor): New. This
1278         functionality used to be in vect_analyze_operations.
1279         (vect_analyze_operations): Code to determine vectorization factor was
1280         moved to vect_determine_vectorization_factor.
1281         (vect_enhance_data_refs_alignment): Update to correct alignment when it
1282         is known instead of -1.  Set LOOP_PEELING_FOR_ALIGNMENT to peeling
1283         factor.
1284         (vect_analyze_loop): Call vect_determine_vectorization_factor (used to
1285         be part of vect_analyze_operations).
1286         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Use fold when
1287         creating the guard condition, as the number of iterations may be
1288         constant.
1289         (slpeel_tree_peel_loop_to_edge): Use new name of
1290         LOOP_DO_PEELING_FOR_ALIGNMENT. Set it to 0 instead of false.
1291         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Handle known
1292         alignment case more efficiently. Use LOOP_PEELING_FOR_ALIGNMENT.
1293         (vect_do_peeling_for_alignment): Use fold.
1294         (vect_transform_loop): Use new name of LOOP_DO_PEELING_FOR_ALIGNMENT.
1295
1296         (vect_update_inits_of_dr): Renamed to
1297         vect_update_init_of_dr.
1298         (vect_update_inits_of_drs): Use new name of vect_update_inits_of_dr.
1299         (vectorizable_store): Fix assertion to use == instead of =.
1300
1301 2005-03-15  Daniel Jacobowitz  <dan@codesourcery.com>
1302
1303         * config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Don't clear
1304         call_used_regs for wCG registers.
1305
1306 2005-03-15  Ulrich Weigand  <uweigand@de.ibm.com>
1307
1308         * config/s390/s390.c (s390_secondary_output_reload_class): Adapt check
1309         for non-offsettable memory references to cope with outstanding reload
1310         replacements, take 2.
1311
1312 2005-03-15  Uros Bizjak  <uros@kss-loka.si>
1313
1314         PR target/18668
1315         * config/i386/i386.h (x86_fisttp): New.
1316         (TARGET_FISTTP): New macro.
1317         * config/i386/i386.c (x86_fisttp): Set for NOCONA.
1318         (output_fix_trunc): Add fisttp parameter.  Generate fisttp x87
1319         instruction when fisttp flag is set.
1320         * config/i386/i386-protos.h (output_fix_trunc): Change declaration.
1321
1322         * config/i386/i386.md (type attribute): Add fisttp.
1323         (unit attribute): Set to i387 for fisttp type.
1324         (X87MODEF, X87MODEI, SSEMODEF, SSEMODEI24): New mode macros.
1325         (fix_truncxfdi2, fix_truncxfsi2): Generate fisttp patterns for
1326         TARGET_FISTTP.
1327         (fix_truncdfdi2, fix_truncsfdi2, fix_truncdfsi2, fix_truncsfsi2):
1328         Generate fisttp patterns for TARGET_FISTTP. Implement using mode
1329         macros.
1330         (fix_truncxfhi2, fix_truncdfhi2, fix_truncsfhi2): Generate fisttp
1331         patterns for TARGET_FISTTP.  Enable patterns for
1332         (TARGET_FISTTP && !TARGET_SSE_MATH). Implement using mode macros.
1333         (fix_trunc<mode>_i387_fisttp_1, fix_trunc<mode>_i387_fisttp,
1334         fix_trunc<mode>_i387_fisttp_with_temp): New instruction patterns to
1335         implement fisttp x87 insn.
1336         (fix_trunc*_i387_fisttp splitters): New patterns.
1337         (*fix_truncdi_i387, *fix_truncsi_i387, *fix_trunchi_i387):
1338         Rename to *fix_trunc<mode>_i387_1.  Implement using mode macros.
1339         Disable patterns for TARGET_FISTTP.  Add comment about FLAGS_REG
1340         clobber.
1341         (fix_truncdi_memory, fix_truncdi_nomemory, fix_trunchi_nomemory):
1342         Rename to fix_trunc<mode>_i387 and fix_trunc<mode>_i387_with_temp.
1343         Implement using mode macros. Disable patterns for TARGET_FISTTP.
1344         (fix_truncsi_memory, fix_truncsi_nomemory, fix_trunchi_memory,
1345         fix_trunchi_nomemory): Rename to fix_trunc<mode>_i387 and
1346         fix_trunc<mode>_i387_with_temp. Implement using mode macros.
1347         Disable patterns for TARGET_FISTTP.
1348         (fix_trunc*_i387 splitters): Implement usign mode macros.
1349         (fix_truncdfdi_sse, fix_truncsfdi_sse, fix_truncdfsi_sse,
1350         fix_truncsfsi_sse): Disable for (TARGET_FISTTP && !TARGET_SSE_MATH).
1351         (fix_trunx*_sse peephole2s): Implement using mode macros.
1352
1353 2005-03-15  J"orn Rennecke <joern.rennecke@st.com>
1354
1355         PR rtl-optimization/20291
1356         * combine.c (try_combine): If splitting fails, re-try with
1357         original combined pattern, i.e. before clobber stripping.
1358
1359 2005-03-14  Eric Christopher  <echristo@redhat.com>
1360
1361         * config/mips/mips.h (DWARF_CIE_DATA_ALIGNMENT): Change for
1362         STACK_GROWS_DOWNWARD.
1363
1364 2005-03-14  Roger Sayle  <roger@eyesopen.com>
1365
1366         * real.h (struct real_format): Split the signbit field into two
1367         two fields, signbit_ro and signbit_rw.
1368         * real.c (ieee_single_format, mips_single_format, ieee_double_format,
1369         mips_double_format, ieee_extended_motorola_format,
1370         ieee_extended_intel_96_format, ieee_extended_intel_96_round_53_format,
1371         ieee_extended_intel_128_format, ibm_extended_format,
1372         mips_extended_format, ieee_quad_format, mips_quad_format,
1373         vax_f_format, vax_d_format, vax_g_format, i370_single_format,
1374         i370_double_format, c4x_single_format, c4x_extended_format,
1375         real_internal_format): Update initializers for new field.
1376         * builtins.c (expand_builtin_signbit): Use signbit_ro field of the
1377         real_format structure.
1378         * optabs.c (expand_absneg_bit, expand_copysign): Use signbit_rw
1379         field of the real_format structure.
1380
1381 2005-03-14  Daniel Berlin <dberlin@dberlin.org>
1382
1383         Fix PR tree-optimization/20458
1384
1385         * tree-flow-inline.h (mark_call_clobbered): Don't fiddle
1386         DECL_EXTERNAL on STRUCT_FIELD tags.
1387         (clear_call_clobbered): Ditto.
1388         * tree-ssa-operands.c (note_addressable): Make sure the original
1389         variable doesn't slip into the addressable list if we have
1390         subvars.
1391         * tree-tailcall.c (suitable_for_tail_opt_p): Look at STRUCT_FIELD
1392         tags too.
1393
1394 2005-03-14  Geoffrey Keating  <geoffk@apple.com>
1395
1396         * doc/cppopts.texi (-fexec-charset): Add concept index entry.
1397         (-fwide-exec-charset): Likewise.
1398         (-finput-charset): Likewise.
1399         * doc/invoke.texi (Warning Options): Document -Wnormalized=.
1400         * c-opts.c (c_common_handle_option): Handle -Wnormalized=.
1401         * c.opt (Wnormalized): New.
1402
1403 2005-03-14  Devang Patel  <dpatel@apple.com>
1404
1405         * doc/invoke.texi: Add reference to Visibility document.
1406
1407 2005-03-14  Richard Sandiford  <rsandifo@redhat.com>
1408
1409         * config.gcc (mips*-*-*): Rename MASK_SPLIT_ADDRS to
1410         MASK_SPLIT_ADDRESSES.
1411         * config/mips/mips.h (target_flags, mips_fix_vr4130_string): Delete.
1412         (MASK_INT64, MASK_LONG64, MASK_SPLIT_ADDR, MASK_NO_FUSED_MADD)
1413         (MASK_EXPLICIT_RELOCS, MASK_MEMCPY, MASK_SOFT_FLOAT)
1414         (MASK_FLOAT64, MASK_ABICALLS, MASK_XGOT, MASK_LONG_CALLS)
1415         (MASK_64BIT, MASK_EMBEDDED_DATA, MASK_BIG_ENDIAN)
1416         (MASK_SINGLE_FLOAT, MASK_MAD, MASK_4300_MUL_FIX, MASK_MIPS16)
1417         (MASK_NO_CHECK_ZERO_DIV, MASK_BRANCHLIKELY)
1418         (MASK_UNINIT_CONST_IN_RODATA, MASK_FIX_R4000, MASK_FIX_R4400)
1419         (MASK_FIX_SB1, MASK_FIX_VR4120, MASK_VR4130_ALIGN)
1420         (MASK_FP_EXCEPTIONS, MASK_DIVIDE_BREAKS, MASK_PAIRED_SINGLE)
1421         (MASK_MIPS3D, MASK_SYM32, MASK_DEBUG, MASK_DEBUG_D)
1422         (MASK_MIPS_TFILE, TARGET_INT64, TARGET_LONG64, TARGET_FLOAT64)
1423         (TARGET_64BIT, TARGET_SPLIT_ADDRESSES, TARGET_DEBUG_MODE)
1424         (TARGET_DEBUG_D_MODE, TARGET_MEMCPY, TARGET_ABICALLS)
1425         (TARGET_XGOT, TARGET_SOFT_FLOAT, TARGET_HARD_FLOAT)
1426         (TARGET_LONG_CALLS, TARGET_EMBEDDED_DATA)
1427         (TARGET_UNINIT_CONST_IN_RODATA, TARGET_BIG_ENDIAN)
1428         (TARGET_SINGLE_FLOAT, TARGET_DOUBLE_FLOAT, TARGET_MAD)
1429         (TARGET_FUSED_MADD, TARGET_4300_MUL_FIX, TARGET_CHECK_ZERO_DIV)
1430         (TARGET_DIVIDE_TRAPS, TARGET_BRANCHLIKELY, TARGET_FIX_SB1)
1431         (TARGET_FIX_R4000, TARGET_FIX_R4400, TARGET_FIX_VR4120)
1432         (TARGET_FIX_VR4130, TARGET_VR4130_ALIGN, TARGET_FP_EXCEPTIONS)
1433         (TARGET_PAIRED_SINGLE_FLOAT, TARGET_MIPS3D, TARGET_SYM32)
1434         (TARGET_EXPLICIT_RELOCS): Delete.
1435         (TARGET_SWITCHES, SUBTARGET_TARGET_SWITCHES): Delete.
1436         (TARGET_OPTIONS): Remove entry for -mfix-vr4130.
1437         * config/mips/mips.c (TARGET_DEFAULT_TARGET_FLAGS): Define.
1438         (override_options): Set MASK_LONG64 if -mint64 is given and no
1439         -mlongXX option is.  Complain about -mint64 -mlong32.
1440         (override_options, CMP_BUILTINS, mips_bdesc, sb1_desc): Rename
1441         MASK_PAIRED_SINGLE to MASK_PAIRED_SINGLE_FLOAT.
1442         * config/mips/mips.opt: New file.
1443
1444 2005-03-14  Richard Sandiford  <rsandifo@redhat.com>
1445
1446         * config.gcc (extra_options): New variable for listing option files.
1447         Add ${cpu_type}/${cpu_type}.opt to it if that file exists.
1448         * configure.ac (extra_opt_files): New AC_SUBST variable.
1449         (tm_file_list, tm_include_list): Include options.h first.
1450         * configure: Regenerate.
1451         * Makefile.in (extra_opt_files, ALL_OPT_FILES): New variables.
1452         (s-options): Use $(ALL_OPT_FILES) instead of $(lang_opt_files)
1453         (s-options-h): New rule.
1454         (options.h): Depend on it.
1455         (TEXI_GCCINT_FILES): Add options.texi.
1456         * hooks.h (hook_bool_size_t_constcharptr_int_true): Declare.
1457         * hooks.c (hook_bool_size_t_constcharptr_int_true): New function.
1458         * target.h (gcc_target): Add default_target_flags and handle_option.
1459         * target-def.h (TARGET_DEFAULT_TARGET_FLAGS)
1460         (TARGET_HANDLE_OPTION): New macros.
1461         (TARGET_INITIALIZER): Include them.
1462         * opt-functions.awk (opt_args, nth_arg): New functions.
1463         (switch_flags): Handle the "Target" flag.
1464         (var_args): Delete.
1465         (var_name): Use opt_args and nth_arg.
1466         (var_set, var_ref): Likewise.  Handle "Mask" and "InverseMask".
1467         * opth-gen.awk: Declare target_flags.  Declare MASK_* and TARGET_*
1468         macros for the "Mask" and "InverseMask" options.
1469         * opts.h (cl_var_cond): New enum.
1470         (cl_option): Replace the "has_set_value" and "set_value" fields with
1471         "var_cond" and "var_value".
1472         (CL_TARGET): New macro.
1473         (option_enabled, print_filtered_help): Declare.
1474         (decode_options): Move definition.
1475         * opts.c (handle_option): Search for the original option before
1476         removing any "no-" prefix.  Handle CL_TARGET.  Adjust for the new
1477         var_cond and var_value fields.  Use targetm.handle_option to handle
1478         target options.
1479         (decode_options): Set target_flags to targetm.default_target_flags.
1480         (print_filtered_help): Make global.  Handle CL_TARGET.
1481         (option_enabled): New function.
1482         * toplev.c (target_switches): Guard with #ifdef TARGET_SWITCHES.
1483         (display_target_options, set_target_switch, print_switch_values)
1484         (default_pch_valid_p): Guard uses of target_switches with
1485         #ifdef TARGET_SWITCHES.  Also...
1486         (display_target_options): Display the CL_TARGET entries in cl_options.
1487         (set_target_option): Don't complain about the "" option when
1488         TARGET_SWITCHES is undefined.
1489         (print_switch_values): Use option_enabled.
1490         (default_pch_valid_p): Check cl_options[] when looking for something
1491         that has changed the value of target_flags.
1492         * c.opt: Remove documentation from top of file.
1493         * doc/gccint.texi: Add an "Options" chapter.  Include options.texi.
1494         * doc/sourecebuild.texi: Refer to the new options documentation
1495         instead of c.opt.  Document machine-specific .opt files.
1496         * doc/tm.texi (target_flags): Say that this variable is declared
1497         by options.h.
1498         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Document.
1499         (TARGET_SWITCHES, TARGET_OPTIONS): Refer to the option files as
1500         an alternative.
1501         * doc/options.texi: New file.
1502
1503 2005-03-14  Alexandre Oliva  <aoliva@redhat.com>
1504
1505         PR middle-end/18628
1506         * cse.c (fold_rtx_mem): Don't fold a load from a jumptable into a
1507         register.
1508
1509 2005-03-14  Alexandre Oliva  <aoliva@redhat.com>
1510
1511         PR c++/20280
1512         * gimplify.c (gimplify_cond_expr): Add fallback argument.  Use a
1513         temporary variable of pointer type if an lvalues is required.
1514         (gimplify_modify_expr_rhs): Request an rvalue from it.
1515         (gimplify_expr): Pass fallback on.
1516
1517 2005-03-14  Kazu Hirata  <kazu@cs.umass.edu>
1518
1519         * cfgbuild.c: Update comments.
1520
1521 2005-03-14  Roger Sayle  <roger@eyesopen.com>
1522
1523         PR rtl-optimization/17236
1524         * optabs.c (expand_doubleword_mult): New helper function split out
1525         from expand_binop.  Permute the order in which instructions are
1526         emitted to minimize the number of simultaneously live registers.
1527         (expand_binop): Call expand_doubleword_mult to synthesize a double
1528         word multiplication.
1529
1530 2005-03-14  Kazu Hirata  <kazu@cs.umass.edu>
1531
1532         * basic-block.h: Update the prototypes of cached_make_edge and
1533         rtl_make_eh_edge.
1534         * cfg.c (cached_make_edge): Take edge_cache representing one
1535         row of the adjacency matrix of edges.
1536         * cfgbuild.c (make_label_edge, rtl_make_eh_edge): Likewise.
1537         (make_edges): Initialize edge_cache to represent one row of
1538         the adjacency matrix of edges.
1539
1540 2005-03-14  Zdenek Dvorak  <dvorakz@suse.cz>
1541
1542         * tree-ssa-phiopt.c (minmax_replacement, blocks_in_phiopt_order):
1543         New functions.
1544         (tree_ssa_phiopt): Use blocks_in_phiopt_order and minmax_replacement.
1545         Remove unused removed_phis variable.
1546         (conditional_replacement): Use build1/build2.
1547         (abs_replacement): Use last_and_only_stmt and build1/build2.
1548
1549 2005-03-14  Zdenek Dvorak  <dvorakz@suse.cz>
1550
1551         * builtin-attrs.def (ATTR_NOVOPS, ATTR_NOVOPS_LIST,
1552         ATTR_PURE_NOTHROW_NOVOPS_LIST): New.
1553         * builtins.def (ATTR_MATHFN_FPROUNDING): Use NOVOPS.
1554         (BUILT_IN_PREFETCH): Set the NOVOPS attribute.
1555         * c-common.c (handle_novops_attribute): New function.
1556         (c_common_attribute_table): Add "no vops" entry.
1557         * c-decl.c (merge_decls): Copy DECL_IS_NOVOPS.
1558         * calls.c (flags_from_decl_or_type): Set ECF_NOVOPS.
1559         * tree-ssa-operands.c (get_call_expr_operands): Do not
1560         create virtual operands for calls with ECF_NOVOPS flag.
1561         * tree.h (DECL_IS_NOVOPS): New macro.
1562         (struct tree_decl): Add novops_flag.
1563         (ECF_NOVOPS): New constant.
1564
1565 2005-03-14  Uros Bizjak  <uros@kss-loka.si>
1566
1567         PR target/17688
1568         * config/i386/i386.c (x86_use_himode_fiop): New.
1569         (x86_use_simode_fiop): Rename from x86_use_fiop.
1570         * config/i386/i386.h (x86_use_himode_fiop): Declare.
1571         (TARGET_USE_HIMODE_FIOP): New.
1572         (x86_use_simode_fiop): Rename from x86_use_fiop.
1573         (TARGET_USE_SIMODE_FIOP): Rename from TARGET_USE_FIOP.
1574
1575         * config/i386/i386.md (X87MODEI12): New mode macro define.
1576         (*cmpfp_<mode>): Rename from *cmpfp_si.  Use X87MODEI12 mode macro
1577         to implement x87 FP compare with HImode input operands.
1578         (*fp_jcc_8<mode>_387, splitter): Rename from *fp_jcc_8_387.
1579         Use X87MODEI12 mode macro to handle HImode input operands.
1580         (*fop_sf_2<mode>_i387, *fop_sf_3<mode>_i387, *fop_df_2<mode>_i387,
1581         *fop_df_3<mode>_i387, *fop_xf_2<mode>_i387, *fop_xf_3<mode>_i387):
1582         Renamed from *fop_sf_2_i387, *fop_sf_3_i387, *fop_df_2_i387,
1583         *fop_df_3_i387, *fop_xf_2_i387, *fop_xf_3_i387. Use X87MODEI12 mode
1584         macro to implement x87 operators with HImode input operands.
1585         (fop splitters): Use X87MODEI12 mode macro to handle HImode
1586         input operands.
1587
1588 2005-03-14  Zdenek Dvorak  <dvorakz@suse.cz>
1589
1590         * tree-cfg.c (find_taken_edge_cond_expr): Use zero_p instead of
1591         integer_zerop.
1592         * tree-gimple.c (is_gimple_min_invariant): Consider overflowed
1593         constants invariant.
1594
1595 2005-03-14  Zdenek Dvorak  <dvorakz@suse.cz>
1596
1597         * basic-block.h (BB_VISITED): Removed.
1598         * cfganal.c (dfs_enumerate_from): Do not use BB_VISITED flag.
1599
1600 2005-03-14  Falk Hueffner  <falk@debian.org>
1601
1602         PR bootstrap/20424
1603         * config/alpha/alpha.c (alpha_fold_builtin_cmpbge): Fix typo.
1604
1605 2005-03-14  Kazu Hirata  <kazu@cs.umass.edu>
1606
1607         * ggc-zone.c: Fix comment typos.
1608
1609         * alloc-pool.c, except.h, ggc-common.c, ggc-zone.c, ggc.h,
1610         stringpool.c, config/mips/mips-protos.h: Update copyright.
1611
1612 2005-03-14  Alan Modra  <amodra@bigpond.net.au>
1613
1614         * config/rs6000/rs6000-protos.h: Replace "struct rtx_def *"
1615         throughout with its typedef, "rtx".
1616         * config/rs6000/rs6000.c: Likewise.  Formatting fixes.
1617         (rs6000_tls_symbol_ref_1): Remove inline keyword.
1618         * config/rs6000/rs6000.h (REG_ALLOC_ORDER): Formatting.  Reorder
1619         regs in comment to match code.
1620
1621 2005-03-14  Kazu Hirata  <kazu@cs.umass.edu>
1622
1623         * except.c (check_handled): Make it static.
1624         * except.h: Remove the corresponding prototype.
1625
1626         * function.c (get_func_frame_size): Make it static.
1627         * function.h: Remove the corresponding type.
1628
1629         * regclass.c (reg_class_superclasses, reg_class_subclasses):
1630         Make them static.
1631         * hard-reg-set.h: Remove the corresponding declarations.
1632
1633         * tree-cfg.c (verify_stmts): Check that
1634         bb_for_stmt (stmt) == bb for every PHI node and statement.
1635
1636 2005-03-14  Alan Modra  <amodra@bigpond.net.au>
1637
1638         * config.gcc: Remove excess indentation.
1639         (powerpc*-*-*, rs6000-*-*): Accept --with-cpu/tune power5 and 8548.
1640
1641 2005-03-13  Roger Sayle  <roger@eyesopen.com>
1642
1643         PR middle-end/19331
1644         * tree.c (get_unwidened): Treat CONVERT_EXPR and NOP_EXPR identically.
1645         * fold-const.c (fold_sign_changed_comparison): Likewise.
1646         (fold_binary): Optimize comparisons against widened operands if
1647         the extension is represented by a CONVERT_EXPR, same as a NOP_EXPR.
1648
1649 2005-03-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
1650
1651         * config/sparc/sparc.c (struct_value_alias_set): New global variable.
1652         (sparc_override_options): Initialize it.
1653         (sparc_struct_value_rtx): Set it on the MEM to be returned.
1654
1655 2005-03-13  David Edelsohn  <edelsohn@gnu.org>
1656
1657         * config/rs6000/predicates.md (mem_or_easy_const_operand): Delete.
1658         (reg_or_none500mem_operand): New predicate.
1659         (zero_reg_mem_operand): New predicate.
1660         * config/rs6000/rs6000.md (extendsfdf2): Change operand1 predicate
1661         to reg_or_none500mem_operand.
1662         (extendsfdf2_fpr): Add MEM alternative.
1663         (extenddftf2_internal): Change operand2 predicate to
1664         zero_reg_mem_operand.
1665
1666 2005-03-13  Daniel Jacobowitz  <dan@codesourcery.com>
1667
1668         * ggc-zone.c: Rewritten.
1669
1670         * alloc-pool.c (dump_alloc_pool_statistics): Don't print statistics
1671         if there are none.
1672         * configure.ac: Define GGC_ZONE for --with-gc=zone.
1673         * config.in: Regenerated.
1674         * configure: Regenerated.
1675         * gengtype.c (write_types_process_field, write_func_for_structure):
1676         Pass new argument to gt_pch_note_object.
1677         * ggc-common.c (struct ptr_data): Add TYPE.
1678         (gt_pch_note_object): Take TYPE argument and save it.
1679         (call_count): Update call to ggc_pch_count_object.
1680         (call_alloc): Update call to ggc_pch_alloc_object.
1681         (gt_pch_save): Call ggc_pch_prepare_write after paddng the PCH
1682         file.
1683         * ggc-none.c (rtl_zone, garbage_zone, ggc_alloc_zone_stat): Delete.
1684         * ggc-page.c (rtl_zone, tree_zone, garbage_zone)
1685         (ggc_alloc_zone_stat): Delete.
1686         (ggc_pch_count_object, ggc_pch_alloc_object): Add TYPE argument.
1687         * ggc.h (gt_pch_note_object, ggc_pch_count_object)
1688         (ggc_pch_alloc_object): Update prototypes.
1689         (garbage_zone): Delete.
1690         (tree_zone, rtl_zone, ggc_alloc_zone_stat, ggc_alloc_zone): Move to
1691         GGC_ZONE conditional.  Update.  Change tree_zone and rtl_zone into
1692         pointers.
1693         (tree_id_zone): New variable.
1694         (ggc_alloc_cleared_zone): Remove unused.
1695         (ggc_alloc_zone): Define.
1696         (ggc_alloc_rtvec, ggc_alloc_tree): Update to use ggc_alloc_zone.
1697         * rtl.c (rtx_alloc_stat, shallow_copy_rtx_stat): Use
1698         ggc_alloc_zone_stat.
1699         * stringpool.c (gt_pch_n_S): Update call to gt_pch_note_object.
1700         * tree.c (copy_node_stat, make_tree_binfo_stat, make_tree_vec_stat)
1701         (tree_cons_stat, build1_stat): Update call to ggc_alloc_zone_stat.
1702         (make_node_stat): Likewise.  Use tree_id_zone.
1703
1704 2005-03-13  Daniel Jacobowitz  <dan@codesourcery.com>
1705             Joseph S. Myers  <joseph@codesourcery.com>
1706
1707         * configure.ac: Check for MIPS TLS.
1708         * configure: Regenerated.
1709         * config/mips/mips-protos.h (enum mips_symbol_type): Add
1710         SYMBOL_TLS, SYMBOL_TLSGD, SYMBOL_TLSLDM, SYMBOL_DTPREL,
1711         SYMBOL_GOTTPREL, and SYMBOL_TPREL.
1712         * config/mips/mips.c (mips_regno_to_class): Handle V1_REG.
1713         (TARGET_HAVE_TLS, TARGET_CANNOT_FORCE_CONST_MEM): Define.
1714         (mips_classify_symbol, mips_symbolic_constant_p)
1715         (mips_symbolic_address_p, mips_symbol_insns): Handle TLS symbols.
1716         (mips_tls_operand_p, mips_call_tls_get_addr)
1717         (mips_legitimize_tls_address, mips_cannot_force_const_mem)
1718         (mips_tls_symbol_ref_1): New functions.
1719         (mips_legitimize_address, mips_legitimize_const_move): Call
1720         mips_legitimize_tls_address.
1721         (override_options): Handle V1_REG and TLS symbols.  Disable TLS
1722         for MIPS16.
1723         * config/mips/mips.h (enum reg_class, REG_CLASS_NAMES)
1724         (REG_CLASS_CONTENTS, GR_REG_CLASS_P): Include V1_REG.
1725         (mips_char_to_class): Document V1_REG.
1726         (HAVE_AS_TLS): Provide default.
1727         * config/mips/mips.md (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): New
1728         constants.
1729         (load_got<mode>): Renamed from *load_got<mode>.  Allow when
1730         !TARGET_ABICALLS.
1731         (tls_get_tp_<mode>): New instruction.
1732
1733 2005-03-13  Daniel Jacobowitz  <dan@codesourcery.com>
1734
1735         * configure.ac: Update checks for target tools.
1736         * configure: Regenerated.
1737
1738 2005-03-13  Daniel Jacobowitz  <dan@codesourcery.com>
1739
1740         * varasm.c (decl_tls_model): Check flag_shlib instead of flag_pic.
1741
1742 2005-03-13  Roger Sayle  <roger@eyesopen.com>
1743
1744         * expmed.c (expand_mult): Use synthetic multiplication sequences for
1745         more classes of DImode multiplication by constant.  Allow both
1746         multiplication by small negative constants (by performing a
1747         multiplication by a positive constant and negating the result) and
1748         multiplications by large powers of two, by using a left shift.
1749
1750 2005-03-13  Kazu Hirata  <kazu@cs.umass.edu>
1751
1752         * tree-into-ssa.c (find_idf): Speed up by putting the indexes
1753         of basic blocks into work_stack.
1754
1755         * builtin-attrs.def, c-lex.c, c-pragma.h, reg-stack.c,
1756         config/mips/vr.h: Update copyright.
1757
1758         * c-decl.c (c_init_decl_processing): Remove useless calls to
1759         build_function_type.
1760
1761         * builtins.c (fold_trunc_transparent_mathfn,
1762         fold_fixed_mathfn, fold_builtin_atan, fold_builtin_trunc,
1763         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
1764         fold_builtin_lround, fold_builtin_bitop, fold_builtin_memcpy,
1765         fold_builtin_strcpy, fold_builtin_strncpy,
1766         fold_builtin_signbit): Use TYPE (TYPE (fndecl)) instead of
1767         TREE_TYPE (exp).
1768
1769         * builtins.c (expand_builtin_mathfn_3): Remove local variable
1770         before_call.
1771
1772         * lambda-code.c (lambda_compute_auxillary_space): Remove local
1773         variable determinant.
1774
1775         * tree-cfg.c (group_case_labels): Remove local variable type.
1776
1777         * tree-ssa-live.c (build_tree_conflict_graph): Remove local
1778         variable ann.
1779
1780         * tree-ssa-phiopt.c (value_replacement): Remove local variable
1781         result.
1782
1783 2005-03-13  Andy Hutchinson  <HutchinsonAndy@netscape.net>
1784
1785         PR target/18251
1786         * config/avr/avr.md (movmemhi): Rewrite as RTL loop.
1787         (*movmemqi_insn): Delete.
1788         (*movmemhi): Delete.
1789
1790 2005-03-13  Kazu Hirata  <kazu@cs.umass.edu>
1791
1792         * builtins.c (fold_builtin_classify): Take decomposed
1793         arguments of CALL_EXPR.
1794         (fold_builtin_1): Update a call to fold_builtin_classify.
1795
1796 2005-03-13  Joseph S. Myers  <joseph@codesourcery.com>
1797
1798         PR c/20402
1799         * c-parser.c (c_parser_struct_or_union_specifier): Don't fall
1800         through into call to parser_xref_tag after parse error.
1801         (c_parser_struct_declaration): Consistently return NULL_TREE on
1802         error.
1803
1804 2005-03-12  Daniel Berlin  <dberlin@dberlin.org>
1805
1806         * tree-flow-inline.h (ref_contains_array_ref): New function.
1807         (lookup_subvars_for_var): Ditto.
1808         (get_subvars_for_var): Ditto.
1809         (var_can_have_subvars): Ditto.
1810
1811         * tree-flow.h (mem_tag_kind): Add STRUCT_FIELD.
1812         (struct subvar): New type.
1813
1814         * tree-dfa.c (okay_component_ref_for_subvars): New function.
1815
1816         * tree-optimize.c (init_tree_optimization_passes): Call
1817         pass_create_structure_vars.
1818
1819         * tree-ssa-alias.c: Include vec.h.
1820         (init_alias_info): Don't auto-clear call clobbered on struct-field
1821         tags.
1822         (compute_flow_insensitive_aliasing): Handle subvars.
1823         (group_aliases): Handle STRUCT_FIELD aliases.
1824         (setup_pointers_and_addressables): Ditto.
1825         Don't mark variables non-addressable if they still have
1826         addressable subvars.
1827         Also mark subvars addressable when the real variable is marked
1828         addressable.
1829         (add_pointed_to_var): Try to prune the pointed-to set by only
1830         pointing to subvars when possible.
1831         Otherwise, make sure we set addresses_needed and pt_vars to
1832         properly include subvars.
1833         (bitpos_of_field): New function.
1834         (push_fields_onto_fieldstack): Ditto.
1835         (get_or_create_used_part_for): Ditto.
1836         (create_overlap_variables_for): Ditto.
1837         (find_used_portions): Ditto.
1838         (create_structure_vars): Ditto.
1839         (pass_create_structure_vars): New structure.
1840
1841         * tree-ssa-operands.c (finalize_ssa_v_must_defs): Remove assert.
1842         (get_expr_operands): Handle subvars.  Also try to turn
1843         COMPONENT_REF accesses into must-defs now that we can accurately
1844         portray it.
1845         (note_addressable): Try to only mark as addressable those subvars
1846         we know a COMPONENT_REF touches.
1847         (overlap_subvar): New function.
1848
1849         * tree-vect-analyze.c (vect_object_analysis): Add new parameter.
1850         Handle subvar storing.
1851         (vect_address_analysis): Update caller of vect_object_analysis.
1852
1853         * tree-vect-transform.c (vect_create_data_ref_ptr): Copy subvars.
1854
1855         * tree-vectorizer.h (struct _stmt_vec_info): Add subvars member.
1856         (STMT_VINFO_SUBVARS): New macro.
1857
1858         * common.opts: add flag_tree_salias.
1859
1860         * opts.c (decode_options): flag_tree_salias defaults to on.
1861
1862         * doc/invoke.texi: Document fdump-tree-svars and -ftree-salias.
1863
1864         * doc/tree-ssa.texi: Document structural alias analysis.
1865
1866 2005-03-12  Steven Bosscher  <stevenb@suse.de>
1867
1868         * tree-cfg.c (make_goto_expr_edges): Don't use error_mark_node.
1869         * tree-ssa-dce.c (mark_stmt_necessary): Don't check for it.
1870         * tree-ssa-operands.c (get_expr_operands): Likewise.
1871         (get_expr_operands): Likewise for ERROR_MARK.
1872
1873 2005-03-12  Kazu Hirata  <kazu@cs.umass.edu>
1874
1875         * tree-ssa.c (kill_redundant_phi_nodes): Remove local variable
1876         var.
1877
1878         * tree-ssa-phiopt.c (tree_ssa_phiopt): Remove local variable
1879         removed_phis.
1880
1881         * tree-ssa-pre.c (compute_avail): Remove local variable val.
1882         (mark_operand_necessary): Remove local variable ver.
1883
1884         * tree-vect-transform.c (vect_get_new_vect_var): Remove local
1885         variable prefix_len.
1886
1887         * value-prof.c (mod_subtract_transform): Remove local variable
1888         value.
1889
1890         * builtins.c (fold_builtin_exponent): Take decomposed
1891         arguments of CALL_EXPR.
1892         (fold_builtin_1): Update a call to fold_builtin_exponent.
1893
1894         * builtins.c (fold_builtin_logarithm): Take decomposed
1895         arguments of CALL_EXPR.
1896         (fold_builtin_1): Update a call to fold_builtin_logarithm.
1897
1898         * c-decl.c (c_init_decl_processing): Remove local variables
1899         ptr_ftype_void and ptr_ftype_ptr.
1900
1901         * gimplify.c (gimplify_expr): Remove local variables r0 and
1902         r1.
1903
1904         * reg-stack.c (move_for_stack_reg): Remove local variable
1905         push_insn.
1906         (compare_for_stack_reg): Remove local variable flags_user.
1907         (convert_regs_1): Remove local variable deleted.
1908
1909         * tree-if-conv.c (tree_if_convert_cond_expr): Remove local
1910         variable new_cond.
1911         (combine_blocks): Remove local variables exits and new_e.
1912
1913         * tree-inline.c (expand_call_inline): Remove local variable
1914         decl.
1915
1916         * tree-ssa-live.c (create_ssa_var_map,
1917         calculate_live_on_entry): Remove local variable snn.
1918
1919 2005-03-12  Geoffrey Keating  <geoffk@apple.com>
1920
1921         * c-lex.c (c_lex_with_flags): Add parameter to call to
1922         cpp_spell_token.
1923
1924 2005-03-11  Per Bothner  <per@bothner.com>
1925
1926         * c-tree.h (struct c_declarator): New id_loc field.
1927         * c-pragma.h (c_lex_with_flags): Take position reference.
1928         * c-lex.c (c_lex_with_flags): Set passed-in location from cpp token,
1929         iff USE_MAPPED_LOCATION. (Type doesn't match otherwise.)
1930         (c_lex): Pass dummy location to c_lex_with_flags.
1931         * c-parser.c (c_lex_one_token): Set c_token's location using
1932         c_lex_with_flags, instead of input_location, which might be "ahead".
1933         (c_parser_direct_declarator): Set declarator's id_loc from
1934         c_token's id_loc.
1935         * c-decl.c (grokdeclarator): Set DECL_SOURCE_LOCATION from
1936         declarator's id_loc, rather than probably-imprecise input_location.
1937         (build_id_declarator): Initialize c_declarator's id_loc field.
1938
1939 2005-03-11  Roger Sayle  <roger@eyesopen.com>
1940
1941         PR middle-end/20419
1942         * builtins.c (expand_builtin_signbit): Force the signbit's word
1943         into an integer register to avoid SUBREGs of floating point modes.
1944
1945 2005-03-12  Kazu Hirata  <kazu@cs.umass.edu>
1946
1947         * cfglayout.c, loop-doloop.c, profile.c, target-def.h,
1948         target.h, targhooks.c, tracer.c, tree-ssa-loop-ch.c,
1949         tree-ssa-loop-unswitch.c, tree-ssa-loop.c, vec.c, vmsdbgout.c,
1950         config/m32r/m32r.md, config/xtensa/xtensa.h: Update copyright.
1951
1952 2005-03-11  David Edelsohn  <edelsohn@gnu.org>
1953
1954         PR rtl-optimization/20306
1955         * expr.c (emit_move_complex): Set try_int false if mode is
1956         MODE_COMPLEX_FLOAT and mov_optab exists for inner mode.  Only try
1957         emit_block_move if try_int is true.
1958
1959 2005-03-11  Richard Henderson  <rth@redhat.com>
1960
1961         PR target/20415
1962         * config/i386/mmx.md (vec_dupv4hi): Fix predicate.
1963         * config/i386/i386.c (ix86_expand_vector_init_duplicate): Update
1964         to match.
1965
1966 2005-03-11  Richard Sandiford  <rsandifo@redhat.com>
1967
1968         * config/mips/mips.h (mips_fix_vr4130_string): Declare.
1969         (TARGET_FIX_VR4130): New macro.
1970         (TARGET_OPTIONS): Add -mfix-vr4130.
1971         (ISA_HAS_MACCHI): New macro.
1972         (ASM_SPEC): Add -mfix-vr4130.
1973         * config/mips/mips.c (mips_fix_vr4130_string): New variable.
1974         (override_options): Handle mips_fix_vr4130_string.
1975         (mips_avoid_hazards): Clear all_noreorder_p
1976         if we're working around VR4130 errata and the macc alternatives
1977         are not available.
1978         * config/mips/mips.md (mfhilo_<mode>): Turn into a define_expand.
1979         (*mfhilo_<mode>, *mfhilo_<mode>_macc): New insns.
1980         * config/mips/vr.h (DEFAULT_VR_ARCH): Set to mfix-vr4130.
1981         (MULTILIB_DEFAULTS): Remove leading "march=".
1982         (DRIVER_SELF_SPECS): Likewise.  Make -mfix-vr4130 imply -march=vr4130
1983         if no architecture option is given.
1984         * config/mips/t-vr (MULTILIB_OPTIONS): Use -mfix-vr4130 for the
1985         VR4130 multilibs.
1986         (MULTILIB_MATCHES): Map -march=vr4130 to the -mfix-vr4130 multilibs.
1987         * doc/invoke.texi: Document -mfix-vr4130.
1988
1989 2005-03-11  Richard Sandiford  <rsandifo@redhat.com>
1990
1991         * config/mips/mips.c (override_options): Only warn about -mint64
1992         deprecation if TARGET_INT64.
1993
1994 2005-03-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1995
1996         * builtin-attrs.def (ATTR_NONNULL_LIST, ATTR_NOTHROW_NONNULL,
1997         ATTR_CONST_NOTHROW_NONNULL, ATTR_PURE_NOTHROW_NONNULL,
1998         ATTR_MALLOC_NOTHROW_NONNULL): New "nonnull" attribute lists which
1999         are non-specific regarding the nonnull parameter positions.
2000         (ATTR_NONNULL_1_2, ATTR_NONNULL_1_4, ATTR_NOTHROW_NONNULL_1_2,
2001         ATTR_NOTHROW_NONNULL_1_4, ATTR_CONST_NOTHROW_NONNULL_1,
2002         ATTR_PURE_NOTHROW_NONNULL_1, ATTR_PURE_NOTHROW_NONNULL_1_2,
2003         ATTR_MALLOC_NOTHROW_NONNULL_1): Delete.
2004
2005         * builtins.def: Use the non-specific "nonnull" attibute lists.
2006
2007 2005-03-11  Zdenek Dvorak  <dvorakz@suse.cz>
2008
2009         * basic-block.h (single_succ_p, single_pred_p, single_succ_edge,
2010         single_pred_edge, single_succ, single_pred): Improve comments.
2011
2012 2005-03-11  Zdenek Dvorak  <dvorakz@suse.cz>
2013
2014         * basic-block.h (single_succ_p, single_pred_p, single_succ_edge,
2015         single_pred_edge, single_succ, single_pred): New inline functions.
2016         * bb-reorder.c (rotate_loop, find_traces_1_round,
2017         add_labels_and_missing_jumps, fix_up_fall_thru_edges,
2018         duplicate_computed_gotos): Use the single_succ/pred functions.
2019         * cfganal.c (forwarder_block_p): Ditto.
2020         * cfgbuild.c (compute_outgoing_frequencies): Ditto.
2021         * cfgcleanup.c (try_simplify_condjump, try_forward_edges,
2022         outgoing_edges_match, try_crossjump_to_edge, try_optimize_cfg,
2023         merge_seq_blocks): Ditto.
2024         * cfghooks.c (split_edge, tidy_fallthru_edges): Ditto.
2025         * cfglayout.c (fixup_reorder_chain): Ditto.
2026         * cfgloop.c (mark_single_exit_loops, update_latch_info,
2027         canonicalize_loop_headers, verify_loop_structure): Ditto.
2028         * cfgloopmanip.c (remove_path, unloop, loop_delete_branch_edge,
2029         mfb_update_loops, create_preheader, force_single_succ_latches,
2030         create_loop_notes): Ditto.
2031         * cfgrtl.c (rtl_can_merge_blocks, try_redirect_by_replacing_jump,
2032         force_nonfallthru_and_redirect, rtl_tidy_fallthru_edge,
2033         commit_one_edge_insertion, purge_dead_edges,
2034         cfg_layout_can_merge_blocks_p): Ditto.
2035         * except.c (sjlj_emit_function_enter): Ditto.
2036         * flow.c (init_propagate_block_info): Ditto.
2037         * function.c (thread_prologue_and_epilogue_insns): Ditto.
2038         * gcse.c (find_implicit_sets, bypass_conditional_jumps,
2039         insert_insn_end_bb): Ditto.
2040         * ifcvt.c (merge_if_block, find_if_block, find_if_case_1,
2041         find_if_case_2): Ditto.
2042         * lambda-code.c (perfect_nestify): Ditto.
2043         * lcm.c (optimize_mode_switching): Ditto.
2044         * loop-doloop.c (doloop_modify): Ditto.
2045         * loop-init.c (loop_optimizer_init): Ditto.
2046         * loop-iv.c (simplify_using_initial_values): Ditto.
2047         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
2048         * loop-unswitch.c (unswitch_loop): Ditto.
2049         * modulo-sched.c (generate_prolog_epilog): Ditto.
2050         * predict.c (combine_predictions_for_insn, estimate_probability,
2051         tree_estimate_probability, last_basic_block_p,
2052         estimate_bb_frequencies): Ditto.
2053         * profile.c (branch_prob): Ditto.
2054         * regrename.c (copyprop_hardreg_forward): Ditto.
2055         * sched-rgn.c (is_cfg_nonregular, find_rgns, update_live): Ditto.
2056         * tracer.c (layout_superblocks): Ditto.
2057         * tree-cfg.c (tree_can_merge_blocks_p, tree_merge_blocks,
2058         cfg_remove_useless_stmts_bb, cleanup_control_flow,
2059         cleanup_control_expr_graph, disband_implicit_edges,
2060         tree_find_edge_insert_loc, bsi_commit_edge_inserts,
2061         tree_verify_flow_info, tree_make_forwarder_block,
2062         tree_forwarder_block_p, remove_forwarder_block,
2063         remove_forwarder_block_with_phi, merge_phi_nodes): Ditto.
2064         * tree-if-conv.c (tree_if_conversion): Ditto.
2065         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
2066         * tree-ssa-dce.c (remove_dead_stmt): Ditto.
2067         * tree-ssa-dom.c (dom_opt_finalize_block): Ditto.
2068         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p,
2069         copy_loop_headers): Ditto.
2070         * tree-ssa-loop-im.c (loop_commit_inserts): Ditto.
2071         * tree-ssa-loop-ivopts.c (compute_phi_arg_on_exit): Ditto.
2072         * tree-ssa-loop-manip.c (split_loop_exit_edge, ip_normal_pos,
2073         lv_adjust_loop_entry_edge, tree_ssa_loop_version): Ditto.
2074         * tree-ssa-loop-niter.c (simplify_using_initial_conditions): Ditto.
2075         * tree-ssa-loop-unswitch.c (simplify_using_entry_checks): Ditto.
2076         * tree-ssa-phiopt.c (tree_ssa_phiopt, value_replacement): Ditto.
2077         * tree-ssa-pre.c (compute_antic_aux, insert_aux, init_pre): Ditto.
2078         * tree-ssa-threadupdate.c (redirect_edges): Ditto.
2079         * tree-tailcall.c (independent_of_stmt_p, find_tail_calls,
2080         eliminate_tail_call, tree_optimize_tail_calls_1): Ditto.
2081         * tree-vect-analyze.c (vect_analyze_loop_form): Ditto.
2082         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
2083         * tree-vectorizer.c (slpeel_update_phi_nodes_for_guard,
2084         slpeel_add_loop_guard): Ditto.
2085
2086 2005-03-11  James A. Morrison  <phython@gcc.gnu.org>
2087
2088         PR tree-optimization/15784
2089         * fold-const.c (fold): Fold ~A + 1 to -A.  Fold -A - 1
2090         and -1 - A to ~A.
2091
2092         * stmt.c (expand_case): Don't change index_type.  Convert minval
2093         to the proper type.
2094
2095         PR tree-optimization/20130
2096         * fold-const.c (fold): Fold x * -1 into -x.
2097
2098 2005-03-11  Kaz Kojima  <kkojima@gcc.gnu.org>
2099
2100         PR rtl-optimization/20331
2101         * rtlanal.c (modified_between_p): Check its address first for MEM.
2102         (modified_in_p): Likewise.
2103
2104 2005-03-11  Joseph S. Myers  <joseph@codesourcery.com>
2105
2106         * config.gcc (hppa*64*-*-hpux11*): Use pa/t-hpux-shlib.
2107
2108 2005-03-10  Steven Bosscher  <stevenb@suse.de>
2109
2110         * expr.c (expand_expr_real_1): If possible, use a conditional
2111         move for expanding MIN_EXPR and MAX_EXPR.
2112         Use temp for moving around rtx-en.
2113
2114 2005-03-10  Andrew Pinski  <pinskia@physics.uc.edu>
2115
2116         PR rtl-opt/20412
2117         * simplify-rtx.c (simplify_relational_operation_1): Fix typo - check the
2118         correct mode.
2119
2120 2005-03-10  Roger Sayle  <roger@eyesopen.com>
2121
2122         * builtins.c (expand_builtin_signbit): Extend to handle floating
2123         point modes wider than the largest integer type, using the
2124         operand_subword_force function to obtain the signbit's word.
2125
2126 2005-03-10  Jakub Jelinek  <jakub@redhat.com>
2127
2128         PR target/20322
2129         * combine.c (try_combine): If recog_for_combine added CLOBBERs
2130         to NEWI2PAT, fail to combine if they are used by NEWPAT.
2131
2132 2005-03-10  Aldy Hernandez  <aldyh@redhat.com>
2133
2134         * doc/invoke.texi: Add 8540 to list of cpus in rs6000 cpu section.
2135
2136 2005-03-10  Kazu Hirata  <kazu@cs.umass.edu>
2137
2138         * tree-outof-ssa.c (analyze_edges_for_bb): Make the return
2139         type void.
2140         (perform_edge_inserts): Unconditionally call
2141         free_dominator_info.
2142
2143         * tree-outof-ssa.c (analyze_edges_for_bb): Update a comment.
2144
2145 2005-03-10  Bob Wilson  <bob.wilson@acm.org>
2146
2147         * config/xtensa/xtensa.h (MEMBER_TYPE_FORCES_BLK): Define.
2148
2149 2005-03-10  Nathan Sidwell  <nathan@codesourcery.com>
2150
2151         * bitmap.c (bitmap_copy): Remove manual loop unrolling.
2152
2153         * value-prof.c (rtl_find_values_to_profile): Use gcc_assert and
2154         gcc_unreachable.
2155         (rtl_register_value_prof_hooks,
2156         tree_value_profile_transformations,
2157         tree_register_value_prof_hooks): Likewise.
2158         * var-tracking.c (stack_adjust_offset_pre_post,
2159         variable_htab_free, variable_union, dataflow_set_different_2,
2160         count_uses, variable_was_changed, set_frame_base_location,
2161         set_variable_part, emit_note_insn_var_location, vt_emit_notes,
2162         vt_add_function_parameters): Likewise.
2163         * varasm.c (named_section_real, named_section, make_decl_rtl,
2164         asm_emit_uninitialised, assemble_integer, decode_addr_const,
2165         const_hash_1, compare_constant, copy_constant, force_const_mem,
2166         output_constant_pool_2, output_constant_pool_1, output_constant,
2167         output_constructor, make_decl_one_only, decl_tls_model,
2168         default_no_named_section, default_elf_select_section_1,
2169         default_unique_section_1): Likewise.
2170         * vec.c (vec_gc_o_reserve, vec_heap_o_reserve): Likewise.
2171         * vmsdbgout.c (addr_const_to_string): Likewise.
2172
2173         PR c++/20375
2174         * function.c (struct assign_parm_data_one): Remove last_named
2175         field.
2176         (assign_parm_find_data_types): Don't determine last_named.
2177         Reorder named_parm determination.
2178         (assign_parms): Only setup varargs on the last non-varadic
2179         parameter.
2180
2181 2005-03-10  Kazuhiro Inaoka  <inaoka.lazuhiro@renesas.com>
2182
2183         * config/m32r/m32r.md (load_sda_base_32): New pattern.  Loads
2184         sda base address on medium model.
2185
2186 2005-03-10  Zdenek Dvorak  <dvorakz@suse.cz>
2187
2188         * Makefile.in (tree-optimize.o): Add CFGLOOP_H dependence.
2189         * cfgloop.c (flow_loop_nodes_find): Export.
2190         * cfgloop.h (flow_loop_nodes_find, fix_loop_structure):
2191         Declare.
2192         * cfgloopmanip.c (fix_loop_structure): New function.
2193         * predict.c (predict_loops): Clean up the loops information.
2194         * tree-cfg.c (cleanup_tree_cfg_loop): New function.
2195         (tree_can_merge_blocks_p, remove_bb, tree_forwarder_block_p): Respect
2196         loop structure.
2197         * tree-flow.h (cleanup_tree_cfg_loop): Declare.
2198         (rewrite_into_loop_closed_ssa): Declaration changed.
2199         * tree-loop-linear.c (linear_transform_loops): Add argument to
2200         rewrite_into_loop_closed_ssa call.
2201         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
2202         * tree-ssa-loop-im.c (move_computations): Ditto.
2203         * tree-ssa-loop.c (tree_loop_optimizer_init): Ditto.
2204         * tree-vectorizer.c (vectorize_loops): Ditto.
2205         * tree-optimize.c: Include cfgloop.h.
2206         (execute_todo): Choose whether to call cleanup_tree_cfg or
2207         cleanup_tree_cfg_loop.
2208         * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables,
2209         (tree_unroll_loops_completely): Enable cleanup_tree_cfg_loop call.
2210         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Enable
2211         cleanup_tree_cfg_loop call.
2212         * tree-ssa-loop-manip.c (find_uses_to_rename_bb): New function.
2213         (find_uses_to_rename, rewrite_into_loop_closed_ssa): Support
2214         work on part of cfg.
2215
2216 2005-03-10  Jakub Jelinek  <jakub@redhat.com>
2217
2218         PR inline-asm/20314
2219         * gimplify.c (gimplify_asm_expr): Handle input/output constraints
2220         with multiple alternatives.
2221
2222         * stmt.c (parse_output_constraint): Fix a typo.
2223
2224 2005-03-09  Bob Wilson  <bob.wilson@acm.org>
2225
2226         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Use "no-transform"
2227         assembly directive instead of deprecated "no-generics".
2228
2229 2005-03-09  Ulrich Weigand  <uweigand@de.ibm.com>
2230
2231         * config/s390/s390.c (s390_secondary_output_reload_class): Adapt check
2232         for non-offsettable memory references to cope with outstanding reload
2233         replacements.
2234         * config/s390/s390.md ("reload_outti"): Call find_replacement to
2235         avoid losing outstanding address reloads.
2236         ("reload_outdi", "reload_outdf"): Likewise.
2237
2238 2005-03-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2239
2240         * builtins.c (fold_builtin_cbrt, fold_builtin_pow): Rearrange
2241         code.  Add more cbrt transformations.
2242
2243 2005-03-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2244
2245         * fold-const.c (fold_unary_to_constant): Add FIX_ROUND_EXPR case.
2246
2247 2005-03-09  Kazu Hirata  <kazu@cs.umass.edu>
2248
2249         * fold-const.c (fold_unary, fold_binary, fold_ternary): Return
2250         NULL_TREE when a given tree is not simplified.
2251         (fold): Return the original tree when any of the functions
2252         mentioned above NULL_TREE.
2253
2254         * fold-const.c (fold_unary, fold_binary): Take decomposed
2255         arguments, code, type, op0, and op1 in case of fold_binary.
2256         (fold): Update calls to fold_unary and fold_binary.
2257
2258 2005-03-09  Roger Sayle  <roger@eyesopen.com>
2259
2260         * builtins.c (fold_builtin_unordered_cmp): Change prototype to take
2261         a fndecl and an arglist instead of a CALL_EXPR, exp.
2262
2263 2005-03-09  Kazu Hirata  <kazu@cs.umass.edu>
2264
2265         * cfglayout.c (fixup_reorder_chain): Remove old_bb.
2266
2267         * cfgrtl.c (cfg_layout_merge_blocks): Remove new_e.
2268
2269         * expr.c (expand_assignment): Remove orig_to_rtx.
2270
2271         * fold-const.c (int_const_binop): Remove no_overflow.
2272
2273         * ifcvt.c (noce_emit_move_insn): Remove inmode.
2274
2275         * loop-iv.c (get_biv_step_1): Remove lhs.
2276
2277         * loop-unroll.c (analyze_insns_in_loop): Remove preheader.
2278
2279         * real.c (real_nan): Remove neg.
2280
2281         * function.c (thread_prologue_and_epilogue_insns): Remove i
2282         and newinsn.
2283
2284         * tree-data-ref.c (array_base_name_differ_p): Remove ta and
2285         tb.
2286
2287         * tree-eh.c (tree_could_trap_p): Remove idx.
2288
2289         * tree-into-ssa.c (ann): Remove ann.
2290
2291         * tree-outof-ssa.c (num_nodes): Remove num_nodes.
2292
2293         * tree-sra.c (decide_block_copy): Remove inst_count.
2294
2295         * tree-ssa-alias.c (may_alias_p): Remove v_ann.
2296
2297         * tree-ssa-loop-im.c (lhs): Remove.
2298
2299         * cfgbuild.c (state, STATE, SET_STATE,
2300         BLOCK_USED_BY_TABLEJUMP, FULL_STATE): Move just before
2301         make_edges.
2302         (make_edges): Speed up by skipping blocks with BLOCK_ORIGINAL.
2303         (find_basic_blocks): Set the state of each basic block to
2304         BLOCK_NEW.
2305
2306 2005-03-08  Jeff Law  <law@redhat.com>
2307
2308         * tree-cfg.c (cleanup_control_flow): If removal of a computed
2309         goto results in the removal of edges in the CFG, then we need
2310         to recompute dominators.
2311
2312 2005-03-09  Ben Elliston  <bje@au.ibm.com>
2313
2314         * c-common.c (c_do_switch_warnings): Comment fix.
2315
2316 2005-03-08  Julian Brown  <julian@codesourcery.com>
2317
2318         * Patch from 2005-03-08 reverted for causing regressions and
2319         ppc-darwin bootstrap failure.
2320
2321 2005-03-08  Fariborz Jahanian <fjahanian@apple.com>
2322
2323         * config/rs6000/rs6000.c (invalid_arg_for_unprototyped_fn):
2324         Define the real function for ppc-darwin.
2325         * c-typeck.c (convert_arguments): Check for target-specific
2326         invalid argument call to unprototyped function.
2327         * target-def.h (TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN):
2328         New Macro.
2329         * target.h (invalid_arg_for_unprototyped_fn): New field
2330         in struct calls.
2331         * targhooks.c (hook_invalid_arg_for_unprototyped_fn): New
2332         default target hook.
2333         * targhooks.h (hook_invalid_arg_for_unprototyped_fn):
2334         Declare.
2335
2336 2005-03-08  Kazu Hirata  <kazu@cs.umass.edu>
2337
2338         * c-typeck.c (constructor_stack, constructor_range_stack,
2339         initializer_stack): Make them static.
2340
2341         * cfg.c (rbi_pool): Make it static.
2342
2343         * gimple-low.c (lower_stmt_body): Make it static.
2344         * tree-flow.h: Remove the corresponding prototype.  Don't
2345         declare lower_data.
2346
2347         * sched-deps.c (cache_size): Make it static.
2348
2349         * stor-layout.c (lang_adjust_rli): Make it static.
2350
2351 2005-03-08  Julian Brown  <julian@codesourcery.com>
2352
2353         * config/elfos.h (MAKE_DECL_ONE_ONLY): Redefined to stop DECL_WEAK
2354         from being used for symbols with vague linkage when
2355         HAVE_GAS_COMDAT_GROUP is true.
2356
2357 2005-03-08  J"orn Rennecke <joern.rennecke@st.com>
2358
2359         * jump.c (invert_jump_1): Don't call redirect_jump_1 with
2360         nlabel == JUMP_LABEL (jump).
2361
2362 2005-03-08  Kazu Hirata  <kazu@cs.umass.edu>
2363
2364         * c-common.c, c-opts.c, combine.c, cse.c, dojump.c,
2365         gimplify.c, tree-dfa.c, tree-ssa-loop-ivopts.c,
2366         tree-ssa-phiopt.c, tree-ssa-pre.c, tree-ssa-sink.c,
2367         tree-vect-analyze.c, tree.def, tree.h: Fix comment formatting.
2368
2369 2005-03-08  Alexey Neyman  <alex.neyman@auriga.ru>
2370
2371         PR c/14411
2372         * calls.c (flags_from_decl_or_type): Handle eturns_twice' attribute.
2373         * c-common.c (handle_returns_twice): New function.
2374         (c_common_attribute_table): Declare eturns_twice' attribute.
2375         * doc/extend.texi: Document eturns_twice' attribute.
2376         * tree.h (DECL_IS_RETURNS_TWICE): New macro.
2377         (struct tree_decl): Add returns_twice_flag.
2378
2379 2005-03-08  Kazu Hirata  <kazu@cs.umass.edu>
2380
2381         * tree-ssa-phiopt.c: Fix a comment typo.
2382
2383         * c-semantics.c, cfghooks.c, diagnostic.h, loop-iv.c,
2384         loop-unswitch.c, modulo-sched.c, stor-layout.c, tree-gimple.h,
2385         config/i386/cygwin1.c, doc/cfg.texi, doc/objc.texi: Update
2386         copyright.
2387
2388 2005-03-08  Richard Henderson  <rth@redhat.com>
2389
2390         * config/alpha/alpha.c (code_for_builtin): Replace special-case
2391         builtin codes with ctzdi2, clzdi2, popcountdi2.
2392         (struct alpha_builtin_def): Add is_const.
2393         (zero_arg_builtins, one_arg_builtins, two_arg_builtins): Init it.
2394         (alpha_v8qi_u, alpha_v8qi_s, alpha_v4hi_u, alpha_v4hi_s): New.
2395         (alpha_init_builtins): Init them.  Set nothrow and const attributes
2396         on builtins.
2397         (alpha_fold_builtin_cmpbge, alpha_fold_builtin_zapnot,
2398         alpha_fold_builtin_extxx, alpha_fold_builtin_insxx,
2399         alpha_fold_builtin_mskxx, alpha_fold_builtin_umulh,
2400         alpha_fold_vector_minmax, alpha_fold_builtin_perr,
2401         alpha_fold_builtin_pklb, alpha_fold_builtin_pkwb,
2402         alpha_fold_builtin_unpkbl, alpha_fold_builtin_unpkbw,
2403         alpha_fold_builtin_cttz, alpha_fold_builtin_ctlz,
2404         alpha_fold_builtin_ctpop, alpha_fold_builtin): New.
2405         (TARGET_FOLD_BUILTIN): New.
2406         * config/alpha/alpha.md (UNSPEC_CTTZ): Remove.
2407         (UNSPEC_CTLZ, UNSPEC_CTPOP): Remove.
2408         (ffsdi2): Use ctz.
2409         (cttz, builtin_cttz, builtin_ctlz, builtin_ctpop): Remove.
2410
2411 2005-03-08  Ira Rosen  <irar@il.ibm.com>
2412
2413         PR tree-optimization/20122
2414         * tree-vect-analyze.c (vect_object_analysis): Analyze initial
2415         condition of access function instead of base.
2416
2417 2005-03-07  Jeff Law  <law@redhat.com>
2418             Steven Bosscher  <stevenb@suse.de>
2419
2420         * tree-cfg.c (find_taken_edge_computed_goto): New function.
2421         (find_taken_edge): Call find_taken_edge_computed_goto as
2422         appropriate.  Allow any gimple invariant rather than just
2423         INTEGER_CST for VAL.
2424         (cleanup_control_flow): Cleanup a computed goto which has turned
2425         into a simple goto.
2426         (tree_merge_blocks): If block B has any forced labels, move
2427         them to the start of block A.
2428         * tree-ssa-dom.c (thread_across_edge): Allow threading across
2429         computed gotos as well.
2430         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Handle
2431         removal of unnecessary computed gotos too.
2432         (lookup_redirection_data): Fix type of INSERT argument.  Callers
2433         updated.
2434
2435 2005-03-08  Kazu Hirata  <kazu@cs.umass.edu>
2436
2437         * tree-ssa-phiopt.c: Update copyright.  Fix indentations.
2438         Remove trailing spaces.
2439
2440         * gimplify.c (gimple_push_bind_expr, gimple_pop_bind_expr,
2441         unshare_all_trees): Make them static.
2442         * tree-gimple.h: Remove the corresponding prototypes.
2443
2444         * diagnostic.h: Remove unused prototype
2445         debug_output_buffer.
2446         * modulo-sched.c: Remove unused prototype
2447         set_row_column_for_ps.
2448
2449         * tree-ssa-phiopt.c (tree_ssa_phiopt,
2450         replace_phi_edge_with_variable): Remove unused variable i.
2451
2452 2005-03-07  Per Bothner  <per@bothner.com>
2453
2454         * tree.h (DECL_IS_BUILTIN): Reverted my patch from earlier today.
2455
2456 2005-03-06  Andrew Pinski  <pinskia@physics.uc.edu>
2457
2458         PR tree-opt/17671
2459         * tree-ssa-phiopt.c (tree_ssa_phiopt): Rewrite so we base the
2460         bbs on the COND_EXPR instead of the PHI_NODEs.
2461         (candidate_bb_for_phi_optimization): Remove.
2462         (replace_phi_with_stmt): Rename to ...
2463         (replace_phi_edge_with_variable): this and change so that we
2464         replace the phi argument instead of removing the PHI.
2465         (conditional_replacement): Change so we deal with PHI with more
2466         than two arguments.
2467         (value_replacement): Likewise.
2468         (abs_replacement): Likewise.
2469
2470 2005-03-07  Aldy Hernandez  <aldyh@redhat.com>
2471
2472         * config/rs6000/rs6000-protos.h: Rename output_e500_flip_eq_bit to
2473         output_e500_flip_gt_bit.
2474
2475         * config/rs6000/rs6000.c (print_operand): case D: Print out bit 31
2476         as bit 31.
2477         (rs6000_generate_compare): Fix logic to look at the correct bits.
2478         (output_e500_flip_eq_bit): Rename to output_e500_flip_gt_bit.
2479         Look at GT bit.
2480         (rs6000_emit_sCOND): Rename gen_e500_flip_eq_bit to
2481         gen_e500_flip_gt_bit.  Rename gen_move_from_CR_eq_bit to
2482         gen_move_from_CR_gt_bit.
2483
2484         * config/rs6000/rs6000.md ("move_from_CR_eq_bit"): Change bit
2485         ("move_from_CR_eq_bit"): Rename to move_from_CR_gt_bit.
2486         (UNSPEC_MV_CR_EQ): Rename to UNSPEC_MV_CR_GT.
2487
2488         * config/rs6000/spe.md ("e500_cr_ior_compare"): New.
2489         (E500_CR_IOR_COMPARE): New constant.
2490
2491 2005-03-08  Earl Chew <earl_chew@agilent.com>
2492             David Billinghurst <David.Billinghurst@riotinto.com>
2493
2494         * config/i386/host-cygwin.c: New file to support precompiled
2495         headers on cygwin
2496         * config/i386/x-cygwin: Use host-cygwin.c on cygwin host
2497         * config.host: Use above files for cygwin host.
2498
2499 2005-03-07  David Edelsohn  <edelsohn@gnu.org>
2500
2501         * fold-const.c (fold_binary_op_with_conditional_arg): Fix typo
2502         ordering ops from earlier change.
2503
2504 2005-03-07  Per Bothner  <per@bothner.com>
2505
2506         Various fixes to allow us to again build if --enable-mapped-location:
2507         * c-decl.c (finish_function): Use SET_EXPR_LOCATION instead of
2508         unavailable annotate_with_file_line, if USE_MAPPED_LOCATION.
2509         * tree-cfg.c (remove_bb): If USE_MAPPED_LOCATION, change type of
2510         local variable loc. Change logic appropriately.
2511         * tree-vect-transform.c (vect_finish_stmt_generation): Use
2512         EXPR_LOCATION rather than EXPR_LOCUS if USE_MAPPED_LOCATION.
2513         * c-parser.c (c_parser_for_statement): Initialize loc variable.
2514         * tree.h (DECL_IS_BUILTIN): Temporarily revert definition of
2515         DECL_IS_BUILTIN in the USE_MAPPED_LOCATION because of jc1 issues.
2516
2517 2005-03-07  Richard Sandiford  <rsandifo@redhat.com>
2518
2519         PR rtl-optimization/19683
2520         * reload1.c (choose_reload_regs): Pass the number of bits, not the
2521         number of bytes, to smallest_int_for_mode.  Fix arguments to
2522         REG_CANNOT_CHANGE_MODE_P.
2523
2524 2005-03-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
2525
2526         * reorg.c (relax_delay_slots): Check that the jump is
2527         conditional before trying to invert it.
2528
2529 2005-03-07  Kazu Hirata  <kazu@cs.umass.edu>
2530
2531         * bb-reorder.c (max_entry_frequency, max_entry_frequency):
2532         Make them static.
2533
2534         * calls (stack_arg_under_construction): Make it static.
2535
2536         * flow.c (regs_live_at_setjmp): Make it static.
2537         * flow.h: Remove the corresponding prototype.
2538
2539         * reload1.c (reload_startobj, reload_firstobj,
2540         something_needs_operands_changed, reload_inherited,
2541         reload_inheritance_insn, reload_override_in,
2542         reload_spill_index): Make them static.
2543
2544         * recog.c (verify_changes): Make it static.
2545         * recog.h: Remove the corresponding prototype.
2546
2547         * cfgbuild.c (find_sub_basic_blocks): Remove.
2548         * basic-block.h: Remove the corresponding prototype.
2549         * cfgexpand.c, cfgrtl.c: Don't mention find_sub_basic_blocks
2550         in comments.
2551         * doc/cfg.texi: Don't mention find_sub_basic_blocks.
2552
2553         * tree-ssa-operands.c (check_build_stmt): Remove.
2554
2555         * stor-layout.c (set_alignment): Remove.
2556         * tree.h: Remove the corresponding prototype.
2557
2558         * tree-ssa-pre.c (has_abnormal_preds): Make it static.
2559
2560         * tree-ssa-dce.c (control_dependence_map,
2561         visited_control_parents): Make them static.
2562
2563         * cfghooks.c (verify_flow_info): Remove local variable
2564         num_bb_notes.
2565
2566         * cfgrtl.c (rtl_verify_flow_info_1): Remove local variable
2567         last_bb_seen.
2568
2569         * loop-unswitch.c (unswitch_loop): Remove local variable src.
2570
2571 2005-03-07  David Billinghurst <David.Billinghurst@riotinto.com>
2572
2573         * config/i386/cygwin1.c(mingw_scan): Use xstrdup in calls to putenv.
2574
2575 2005-03-07  Joseph S. Myers  <joseph@codesourcery.com>
2576
2577         * config/ia64/hpux.h (LINK_SPEC): Add -z.
2578         * config/ia64/ia64.c (ia64_function_value): Return a REG not a
2579         PARALLEL for an empty structure.
2580
2581 2005-03-07  Kazu Hirata  <kazu@cs.umass.edu>
2582
2583         * fold-const.c (fold_binary): Remove handling of RANGE_EXPR.
2584
2585         * fold-const.c (fold_binary): Unroll the very first "for"
2586         loop.
2587
2588 2005-03-06  David Edelsohn  <edelsohn@gnu.org>
2589
2590         * config/rs6000/predicates.md (branch_comparison_operator): Remove
2591         redundant match_code test.
2592         (scc_comparison_operator): Swap match_operand and match_code
2593         tests.
2594         (branch_positive_comparison_operator): Same.
2595         (trap_comparison_operator): Use comparison_operator and swap with
2596         match_code test.
2597
2598 2005-03-06  Marek Michalkiewicz  <marekm@amelek.gda.pl>
2599
2600         PR target/20288
2601         * config/avr/avr.c (print_operand): Add 'p' and 'r'.
2602         (out_movhi_r_mr): Read low byte of volatile MEM first.
2603         (out_movhi_mr_r): Write high byte of volatile MEM first.
2604
2605 2005-03-05  Kazu Hirata  <kazu@cs.umass.edu>
2606
2607         * cselib.c (reg_values, reg_values_size): Make them static.
2608
2609         * cse.c (cse_reg_info_table): Make it static.
2610
2611         * fold-const.c (fold_unary): Use build1 instead of copy_node.
2612
2613 2005-03-06  Zdenek Dvorak  <dvorakz@suse.cz>
2614
2615         * cse.c (find_best_addr): Use canon_for_address.
2616
2617 2005-03-06  Kazu Hirata  <kazu@cs.umass.edu>
2618
2619         * cse.c (fold_rtx_subreg, fold_rtx_mem): New.
2620         (fold_rtx): Call fold_rtx_subreg and fold_rtx_mem to handle
2621         SUBREG and MEM, respectively.
2622
2623         * fold-const.c (fold_binary): Use code instead of t.
2624
2625         * fold-const.c (optimize_minmax_comparison): Take decomposed
2626         arguments code, type, op0, and op1 instead of t.
2627         (fold_binary): Update a call to optimize_minmax_comparison.
2628
2629         * fold-const.c (fold_range_test): Take decomposed arguments
2630         code, type, op0, and op1 instead of t.
2631         (fold_binary): Update a call to fold_range_test.
2632
2633         * fold-const.c (fold_binary_op_with_conditional_arg): Take
2634         decomposed arguments code, type, op0, and op1 instead of t.
2635         (fold_binary): Update a call to fold_range_test.
2636
2637 2005-03-06  Kazu Hirata  <kazu@cs.umass.edu>
2638
2639         * fold-const.c (fold_binary): Avoid directly using the original
2640         expression t as much as possible.
2641
2642 2005-03-05  Kazu Hirata  <kazu@cs.umass.edu>
2643
2644         * c-semantics.c (build_stmt): Use TYPE_P instead of
2645         IS_NON_TYPE_CODE_CLASS.
2646         * tree.h (IS_NON_TYPE_CODE_CLASS): Remove.
2647         (NON_TYPE_CHECK): Use TYPE_P instead of
2648         IS_NON_TYPE_CODE_CLASS.
2649
2650         * fold-const.c (fold): Remove handling of binary expressions.
2651
2652 2005-03-05  James A. Morrison  <phython@gcc.gnu.org>
2653
2654         * doc/c-tree.texi: Wrap comments in @r{}.
2655         * doc/cpp.texi: Likewise.
2656         * doc/cppinternals.texi: Likewise.
2657         * doc/extend.texi: Likewise.
2658         * doc/md.texi: Likewise.
2659         * doc/objc.texi: Likewise.
2660         * doc/sourcebuild.texi: Likewise.
2661         * doc/tm.texi: Likewise.
2662         * doc/tree-ssa.texi
2663
2664 2005-03-05  Kazu Hirata  <kazu@cs.umass.edu>
2665
2666         * predict.c (apply_return_prediction): Standardize PHI chain
2667         walking.
2668         * tree-ssa.c (ssa_redirect_edge): Likewise.
2669
2670         * genattrtab.c, genemit.c, genoutput.c, genrecog.c,
2671         gensupport.c, jump.c, tree-phinodes.c, unwind-dw2-fde-glibc.c:
2672         Update copyright.
2673
2674         * tree-phinodes.c (remove_phi_node): Drop the last argument.
2675         * tree-flow.h: Adjust the prototype for remove_phi_node.
2676         * lambda-code.c (perfect_nestify): Adjust a call to
2677         remove_phi_node.
2678         * tree-cfg.c
2679         (remove_phi_nodes_and_edges_for_unreachable_block): Likewise.
2680         * tree-outof-ssa.c (eliminate_virtual_phis, remove_ssa_form):
2681         Likewise.
2682         * tree-ssa-dce.c (remove_dead_phis): Likewise.
2683         * tree-ssa-loop-ivopts.c (remove_statement): Likewise.
2684         * tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
2685         * tree-ssa.c (kill_redundant_phi_nodes): Likewise.
2686
2687         * combine.c (simplify_and_const_int): Use gen_int_mode instead
2688         of GEN_INT (trunc_int_for_mode (...)).
2689         * loop-iv.c (iv_number_of_iterations): Likewise.
2690         * postreload.c (reload_cse_move2add): Likewise.
2691         * simplify-rtx.c (simplify_const_unary_operation,
2692         simplify_const_binary_operation): Likewise.
2693         * stor-layout.c (get_mode_bounds): Likewise.
2694
2695         * fold-const.c (fold_binary): New.
2696         (fold): Call fold_binary on binary expressions.
2697
2698 2005-03-05  Richard Sandiford  <rsandifo@redhat.com>
2699
2700         * doc/invoke.texi: Document new MIPS -msym32 and -mno-sym32 options.
2701         * config/mips/mips.h (MASK_SYM32, TARGET_SYM32): New macros.
2702         (TARGET_SWITCHES): Add -msym32 and -mno-sym32.
2703         (ABI_HAS_64BIT_SYMBOLS): Set to false if TARGET_SYM32.
2704         (ASM_SPEC): Pass down -msym32 and -mno-sym32.
2705
2706 2005-03-04  Devang Patel  <dpatel@apple.com>
2707
2708         PR tree-optimization/18815
2709         * tree-if-conv.c (combine_blocks): Adjust loop header edges for
2710         loops with zero exit edges.
2711
2712 2005-03-04  Devang Patel  <dpatel@apple.com>
2713
2714         * doc/invoke.texi: Remove reference to webpage that does not exist.
2715
2716 2005-03-04  John David Anglin  <dave.danglin@nrc-cnrc.gc.ca>
2717             Joseph S. Myers  <joseph@codesourcery.com>
2718
2719         PR c++/19797
2720         * pa/elf.h, pa64-hpux.h, som.h (ASM_OUTPUT_EXTERNAL_REAL): Define.
2721         (ASM_OUTPUT_EXTERNAL): Call pa_hpux_asm_output_external.
2722         * pa-protos.h (pa_hpux_asm_output_external): Add prototype.
2723         * pa.c (get_plabel): Change argument to symbol_ref.  Call
2724         maybe_get_identifier instead of get_identifier.
2725         (pa_hpux_asm_output_external, pa_hpux_file_end): New functions.
2726         (struct deferred_plabel): Replace name field with symbol field.
2727         (TARGET_ASM_FILE_END): Define as pa_hpux_file_end if
2728         ASM_OUTPUT_EXTERNAL_REAL is defined.
2729         (output_global_address): Use output_addr_const for output of all
2730         symbol_refs.
2731         (output_deferred_plabels): Use symbol_ref instead of name for address
2732         output.
2733         * pa.h (SYMBOL_FLAG_REFERENCED, SYMBOL_REF_REFERENCED_P,
2734         ASM_OUTPUT_SYMBOL_REF): New macros.
2735         * som.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Use assemble_name_raw.  Update
2736         comment.
2737         (ASM_WEAKEN_LABEL): Use targetm.asm_out.globalize_label to globalize
2738         label.
2739
2740 2005-03-05  Joseph S. Myers  <joseph@codesourcery.com>
2741
2742         * config.gcc (hppa*64*-*-hpux11*): Use pa/pa-hpux1111.h for
2743         *-*-hpux11.[1-9]*, not just for *-*-hpux11.11.
2744
2745 2005-03-04  Jeff Law  <law@redhat.com>
2746
2747         * basic-block.h (rediscover_loops_after_threading): Declare.
2748         * tree-ssa-dom.c: Include cfgloop.h.
2749         (tree_ssa_dominator_optimize): Discover loops and some basic
2750         properties.  Remove forwarder blocks recreated by loop header
2751         canonicalization.  Also mark backedges in the CFG.
2752         * tree-ssa-threadupdate.c: Include cfgloop.h
2753         (rediscover_loops_after_threading): Define.
2754         (struct local_info): New field, JUMP_THREADED.
2755         (prune_undesirable_thread_requests): New function.
2756         (redirect_edges): Clear EDGE_ABNORMAL.  If edges were threaded
2757         then record that fact for the callers of redirct_edges.
2758         (thread_block): If BB has incoming backedges, then call
2759         prune_undesirable_thraed_requests.    Note when we are
2760         going to have to rediscover loop information.  Return a
2761         boolean indicating if any jumps were threaded.
2762         (thread_through_all_blocks): Bubble up boolean indicating
2763         if any jumps were threaded.
2764         * Makefile.in (tree-ssa-dom.o): Depend on cfgloop.h
2765         (tree-ssa-threadupdate.o): Similarly.
2766
2767 2005-03-04  Kazu Hirata  <kazu@cs.umass.edu>
2768
2769         * fold-const.c (fold_ternary): Unroll the "for" loop to
2770         extract operands.
2771
2772 2005-03-04  Andrew Haley  <aph@redhat.com>
2773
2774         * unwind-dw2-fde-glibc.c (struct
2775         unw_eh_callback_data.check_cache): New field.
2776         (frame_hdr_cache): New.
2777         (_Unwind_IteratePhdrCallback): Add ext_dl_phdr_info.
2778         Cache frame header info.
2779
2780 2005-03-04  Richard Sandiford  <rsandifo@redhat.com>
2781
2782         * rtl.h (copy_rtx_ptr_loc, print_rtx_ptr_loc, join_c_conditions)
2783         (print_c_condition): Declare.
2784         * read-rtl.c (ptr_loc): New structure.
2785         (ptr_locs, ptr_loc_obstack, joined_conditions)
2786         (joined_conditions_obstack): New variables.
2787         (leading_ptr_hash, leading_ptr_eq_p, set_rtx_ptr_loc)
2788         (get_rtx_ptr_loc, copy_rtx_ptr_loc, print_rtx_ptr_loc)
2789         (join_c_conditions, print_c_condition): New functions.
2790         (apply_macro_to_string): Associate the new string with the same
2791         source location as the old one.
2792         (add_condition_to_string): Use join_c_conditions.
2793         (read_string): Use set_rtx_ptr_loc to record a filename and line
2794         number for the string.
2795         (read_rtx): Initialize the new variables above.
2796         * genattrtab.c (write_test_expr, write_attr_value): Use
2797         print_c_condition.
2798         * genconditions.c (write_header): Don't define MAYBE_EVAL.  Move its
2799         comment above the GCC_VERSION check.
2800         (write_one_condition): Use print_rtx_ptr_loc and print_c_condition.
2801         Inline the definition of MAYBE_EVAL.
2802         * genemit.c (gen_expand, gen_split): Use print_rtx_ptr_loc.
2803         * genoutput.c (process_template): Likewise.
2804         * genpreds.c (write_predicate_subfunction): Likewise.
2805         (write_predicate_expr): Use print_c_condition.
2806         * genrecog.c (write_cond): Likewise.
2807         * gensupport.c (process_rtx): Use join_c_conditions to join the
2808         conditions of a define_insn_and_split.  Record a source location
2809         for the string after the "&&".
2810         (alter_test_for_insn): Use join_c_conditions.
2811
2812 2005-03-04  Andrew Pinski  <pinskia@physics.uc.edu>
2813
2814         Revert for now:
2815         2005-03-03  James A. Morrison  <phython@gcc.gnu.org>
2816         PR tree-optimization/15784
2817         * fold-const.c (fold): Fold ~A + 1 to -A.  Fold -A - 1
2818         and -1 - A to ~A.
2819
2820 2005-03-04  Ben Elliston  <bje@au.ibm.com>
2821
2822         * gcc.c (option_map): Add --coverage.
2823         (LINK_COMMAND_SPEC): Pass -lgcov for `coverage'.
2824         (cc1_options): Pass -fprofile-arcs -ftest-coverage for `coverage'.
2825         * config/darwin.h: Pass -lgcov for `coverage'.
2826         * doc/invoke.texi (Debugging Options): Document --coverage.
2827
2828 2005-03-04  Kazu Hirata  <kazu@cs.umass.edu>
2829
2830         * gcse.c (bypass_block): Use find_edge wherever possible.
2831
2832 2005-03-03  Daniel Berlin <dberlin@dbrelin.org>
2833
2834         Fix PR debug/20253
2835
2836         * c-opts.c (c_common_parse_file): Call start_source_file
2837         and end_source_file at the approriate times.
2838
2839         * dwarf2out.c (dwarf2out_finish): Don't auto-end
2840         the main file, it will be done for us now.
2841
2842 2005-03-04  Kazu Hirata  <kazu@cs.umass.edu>
2843
2844         * fold-const.c (fold_ternary): New.
2845         (fold): Call fold_ternary on ternary expressions.  Remove
2846         handling of ternary expressions.
2847
2848 2005-03-03  James A. Morrison  <phython@gcc.gnu.org>
2849
2850         PR tree-optimization/15784
2851         * fold-const.c (fold): Fold ~A + 1 to -A.  Fold -A - 1
2852         and -1 - A to ~A.
2853
2854 2005-03-03  David Edelsohn  <edelsohn@gnu.org>
2855
2856         * config/rs6000/predicates.md (branch_comparison_operator):
2857         Convert from C block to conditional format.
2858
2859 2005-03-03  Jan Hubicka  <jh@suse.cz>
2860
2861         * tree-dfa.c (add_referenced_var): Don't walk initializer of external
2862         and non-constant public variables.
2863
2864 2005-03-03  Kazu Hirata  <kazu@cs.umass.edu>
2865
2866         * tree-cfg.c (stmt_starts_bb_p): Clean up by replacing code
2867         with LABEL_EXPR.
2868
2869         * cfgexpand.c (construct_exit_block): Use EDGE_PRED instead of
2870         EDGE_I.
2871
2872         * tree-phinodes.c (remove_phi_node): Clean up by factoring out
2873         calls to release_ssa_name and release_phi_node.
2874
2875         * fold-const.c (fold): Remove handling of unary expressions.
2876
2877         * fold-const.c (fold_unary): Avoid directly using the original
2878         expression t as much as possible.
2879
2880 2005-03-03  Roger Sayle  <roger@eyesopen.com>
2881             Andrew Pinski  <pinskia@physics.uc.edu>
2882
2883         * jump.c (redirect_exp_1): If nlabel is a NULL pointer create a
2884         RETURN rtx, and not a LABEL_REF containing a NULL pointer.
2885
2886 2005-03-03  Hans-Peter Nilsson  <hp@axis.com>
2887
2888         Describe special registers SRP and MOF as allocatable registers.
2889         * config/cris/cris.c (cris_md_asm_clobbers): New function.
2890         (TARGET_MD_ASM_CLOBBERS): Define to cris_md_asm_clobbers.
2891         (cris_conditional_register_usage): Enable CRIS_MOF_REGNUM if
2892         TARGET_HAS_MUL_INSNS.
2893         (cris_print_operand) <case 'd'>: New case.
2894         <case REG>: Allow CRIS_MOF_REGNUM and CRIS_SRP_REGNUM.
2895         * config/cris/cris.h (CRIS_PC_REGNUM, CRIS_SRP_REGNUM): Don't
2896         define.
2897         (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS, CALL_USED_REGISTERS)
2898         (REG_ALLOC_ORDER): Update for MOF.
2899         (enum reg_class): New members MOF_REGS, GENERAL_REGS and
2900         SPECIAL_REGS.
2901         (GENERAL_REGS): No longer a define of ALL_REGS.
2902         (REGNO_REG_CLASS, REG_CLASS_CONTENTS, REG_CLASS_NAMES)
2903         (PREFERRED_RELOAD_CLASS, REGISTER_NAMES, DBX_REGISTER_NUMBER):
2904         Adjust accordingly.
2905         (CRIS_SPECIAL_REGS_CONTENTS): New macro.
2906         (REG_CLASS_FROM_LETTER): Allocate 'h' and 'x'.
2907         (SECONDARY_RELOAD_CLASS): Define.
2908         (STACK_POINTER_REGNUM): Define as CRIS_SP_REGNUM.
2909         (FRAME_POINTER_REGNUM): Define as CRIS_FP_REGNUM.
2910         (ARG_POINTER_REGNUM): Define as CRIS_AP_REGNUM.
2911         (STATIC_CHAIN_REGNUM): Define as CRIS_STATIC_CHAIN_REGNUM.
2912         (REGISTER_MOVE_COST): Define.
2913         (PIC_OFFSET_TABLE_REGNUM): Define in terms of CRIS_GOT_REGNUM.
2914         * config/cris/cris.md (CRIS_GOT_REGNUM, CRIS_STATIC_CHAIN_REGNUM)
2915         (CRIS_FP_REGNUM, CRIS_SP_REGNUM, CRIS_SRP_REGNUM, CRIS_AP_REGNUM)
2916         (CRIS_MOF_REGNUM): New define_constants.
2917         ("*movsi_internal", "movhi", "movqi", "movsf"): Add alternatives for
2918         special registers.
2919         ("reload_inhi", "reload_outhi", "reload_inqi", "reload_outqi"):
2920         New patterns.
2921         ("umulhisi3", "umulqihi3", "mulsi3", "mulqihi3", "mulhisi3")
2922         ("mulsidi3", "umulsidi3", "smulsi3_highpart", "umulsi3_highpart"):
2923         Adjust for MOF being properly described as a register.
2924         (indir_to_reg_split): Name this split.  Conditionalize on the
2925         destination register being a general register.
2926         (movei): Conditionalize on on operands 0 and 1 having the same
2927         register class.
2928
2929 2005-03-03  Alan Modra  <amodra@bigpond.net.au>
2930
2931         PR target/20277
2932         * config/rs6000/rs6000.c (rs6000_override_options): Don't allow
2933         -mcpu to override any other explicitly given flags.
2934
2935 2005-03-02  J"orn Rennecke <joern.rennecke@st.com>
2936
2937         * recog.c (verify_changes, confirm_change_group): New functions,
2938         broken out of apply_change_group.
2939         (apply_change_group): Use them.
2940         * recog.h (verify_change, confirm_change_group): Declare.
2941         * rtl.h (redirect_jump_2): Declare.
2942         * jump.c (redirect_exp, invert_exp): Delete.
2943         (invert_exp_1): Take second parameter.  Return value.  Changed caller.
2944         (redirect_jump_2): New function, broken out of redirect_jump.
2945         (redirect_jump): Use redirect_jump_1 and redirect_jump_2.
2946         (invert_jump): Use invert_jump_1 and redirect_jump_2.
2947         * ifcvt.c (dead_or_predicable): Use redirect_jump_2.
2948
2949 2005-03-02  Geoffrey Keating  <geoffk@apple.com>
2950
2951         * varasm.c (named_section): Use xstrdup rather than doing it by
2952         hand.
2953
2954         * config/darwin8.h (LIB_SPEC): Switch -lmx and -lSystem.
2955
2956 2005-03-02  Devang Patel  <dpatel@apple.com>
2957
2958         Undo PR tree-optimization/18815 fix.
2959
2960 2005-03-02  Devang Patel  <dpatel@apple.com>
2961
2962         PR tree-optimization/18815
2963         * tree-if-conv.c (combine_blocks): Adjust loop header edges for
2964         loops with zero exit edges.
2965
2966 2005-03-02  Kazu Hirata  <kazu@cs.umass.edu>
2967
2968         * cfg.c (connect_src, connect_dest, disconnect_src,
2969         disconnct_dest): New.
2970         (unchecked_make_edge, remove_edge, redirect_edge_succ,
2971         redirect_edge_pred): Use the new functions.
2972
2973         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Call
2974         free_dominance_info only when needed.
2975
2976 2005-03-02  David Edelsohn  <edelsohn@gnu.org>
2977
2978         PR target/20276
2979         * config/rs6000/predicates.md (reg_or_cint64_operand): Fix typo.
2980         (reg_or_sub_cint64_operand): Same.
2981
2982 2005-03-02  Jeff Law  <law@redhat.com>
2983
2984         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Fix setting of
2985         CFG_ALTERED in the main DOM iteration loop.
2986
2987 2005-03-02  Mark Mitchell  <mark@codesourcery.com>
2988
2989         PR c++/19916
2990         * varasm.c (initializer_constant_valid_p): Allow conversions
2991         between OFFSET_TYPEs.  Tidy.
2992
2993 2005-03-02  Hans-Peter Nilsson  <hp@axis.com>
2994
2995         * config/cris/cris.md ("return"): Remove epilogue delay list
2996         sanity check.
2997
2998 2005-03-02  Daniel Jacobowitz  <dan@codesourcery.com>
2999
3000         * config/arm/linux-elf.h (ARM_FUNCTION_PROFILER): Do not use (PLT)
3001         for Thumb.
3002         * config/arm/netbsd-elf.h (ARM_FUNCTION_PROFILER): Likewise.
3003
3004 2005-03-02  Kazu Hirata  <kazu@cs.umass.edu>
3005
3006         * cfgloop.h, cfgloopanal.c, cfgloopmanip.c, conflict.c,
3007         loop-init.c, loop-unroll.c, print-tree.c, reg-notes.def,
3008         config/m68k/m68k.c, config/mips/mips.h,
3009         config/rs6000/rs6000-protos.h, doc/contrib.texi,
3010         doc/include/gcc-common.texi: Update copyright.
3011
3012         PR middle-end/18029 and PR middle-end/18030
3013         * expr.c (optimize_bitfield_assignment_op): Add a special case
3014         to handle BIT_IOR_EXPR and BIT_XOR_EXPR.
3015
3016         * fold-const.c (fold_unary): New.
3017         (fold): Call fold_unary on unary expressions.
3018
3019 2005-03-02  Richard Guenther  <rguenth@gcc.gnu.org>
3020
3021         * cgraph.h (struct cgraph_edge): Add prev_caller and
3022         prev_callee fields.
3023         (cgraph_node_remove_callees): Export.
3024         * cgraph.c (cgraph_create_edge): Initialize prev_caller
3025         and prev_callee.
3026         (cgraph_edge_remove_callee): New function.
3027         (cgraph_edge_remove_caller): Likewise.
3028         (cgraph_remove_edge): Use.
3029         (cgraph_redirect_edge_callee): Likewise.
3030         (cgraph_node_remove_callees): New function.
3031         (cgraph_node_remove_callers): Likewise.
3032         (cgraph_remove_node): Use.
3033         * tree-optimize.c (tree_rest_of_compilation): Use
3034         cgraph_node_remove_callees instead of manual loop.
3035         * cgraphunit.c (cgraph_finalize_function): Likewise.
3036         (cgraph_expand_function): Likewise.
3037         (cgraph_remove_unreachable_nodes): Likewise.
3038
3039 2005-03-02  Joseph S. Myers  <joseph@codesourcery.com>
3040
3041         PR c/8927
3042         * c-tree.h (undeclared_variable, build_external_ref): Add extra
3043         argument.
3044         * c-decl.c (undeclared_variable): Take location as argument.
3045         * c-typeck.c (build_external_ref): Likewise.
3046         * c-parser.c (c_parser_postfix_expression): Pass location of
3047         identifier to build_external_ref.
3048
3049 2005-03-01  David Edelsohn  <edelsohn@gnu.org>
3050
3051         * config/rs6000/rs6000.md (cceq splitter): Use operand mode, not
3052         CCEQ mode for branch_positive_comparison_operator test.
3053         * config/rs6000/predicates (branch_comparison_operator): Revert to
3054         define_predicate.
3055         (scc_comparison_operator): Same.
3056         (branch_positive_comparison_operator): Same.
3057
3058 2005-03-01  Hans-Peter Nilsson  <hp@axis.com>
3059
3060         * config/cris/cris.c (cris_eligible_for_epilogue_delay)
3061         (cris_delay_slots_for_epilogue): Remove.
3062         (save_last): Move into cris_target_asm_function_epilogue.
3063         (cris_target_asm_function_epilogue): Remove tests for file being
3064         NULL.
3065         * config/cris/cris-protos.h (cris_eligible_for_epilogue_delay)
3066         (cris_delay_slots_for_epilogue): Remove prototypes.
3067         * config/cris/cris.h (DELAY_SLOTS_FOR_EPILOGUE)
3068         (ELIGIBLE_FOR_EPILOGUE_DELAY): Do not define.
3069
3070 2005-03-01  David Edelsohn  <edelsohn@gnu.org>
3071
3072         * config/rs6000/predicates.md (branch_comparison_operator): Change
3073         to define_special_predicate.
3074         (scc_comparison_operator): Same.
3075         (branch_positive_comparison_operator): Same.
3076
3077 2005-03-01  Daniel Berlin <dberlin@dberlin.org>
3078
3079         * Makefile.in (tree-ssa-sink.o): New.
3080         (OBJS-common): Add tree-ssa-sink.o.
3081         * common.opt: Add -ftree-sink
3082         * opts.c (decode_options): flag_tree_sink is set at O1 or higher.
3083         * timevar.def (TV_TREE_SINK): new timevar.
3084         * tree-flow.h (is_hidden_global_store): Prototype.
3085         * tree-optimize.c (init_tree_optimization_passes): Add
3086         pass_sink_code.
3087         * tree-pass.h (pass_sink_code): New.
3088         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Move checking
3089         for non-obvious global store store to is_hidden_global_store, and
3090         call that new function.
3091         * tree-ssa-sink.c: New file.
3092         * doc/invoke.texi: Document -fdump-tree-sink and -ftree-sink.
3093         * doc/passes.texi: Document forward store motion.
3094         * testsuite/gcc.dg/tree-ssa/ssa-sink-1.c: New test
3095         * testsuite/gcc.dg/tree-ssa/ssa-sink-2.c: New test
3096         * testsuite/gcc.dg/tree-ssa/ssa-sink-3.c: New test
3097         * testsuite/gcc.dg/tree-ssa/ssa-sink-4.c: New test
3098
3099 2005-03-01  Per Bothner  <per@bothner.com>
3100
3101         * diagnostic.c (diagnostic_build_prefix): If USE_MAPPED_LOCATION
3102         and we have a non-zero column-number, add it to the message.
3103         Also factor out the diagnostic_kind_text.
3104
3105 2005-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
3106
3107         * cfgloop.c (flow_loop_entry_edges_find, flow_loop_exit_edges_find,
3108         flow_loop_pre_header_scan, flow_loop_pre_header_find,
3109         flow_loop_scan): Removed.
3110         (flow_loop_dump): Do not dump removed fields.
3111         (flow_loop_free): Do not free removed fields.
3112         (flow_loops_find): Flags argument removed.  Do not call flow_loop_scan.
3113         (loop_exit_edge_p): New function.
3114         * cfgloop.h (struct loop): Removed fields pre_header, pre_header_edges,
3115         num_pre_header_edges, entry_edges, num_entries, exit_edges,
3116         num_exits, exits_doms.
3117         (LOOP_TREE, LOOP_PRE_HEADER, LOOP_ENTRY_EDGES, LOOP_EXIT_EDGES,
3118         LOOP_EDGES, LOOP_ALL): Removed.
3119         (flow_loop_scan): Declaration removed.
3120         (loop_exit_edge_p, mark_loop_exit_edges): Declare.
3121         * cfgloopmanip.c (create_loop_notes): Do not pass flags to
3122         flow_loops_find.
3123         * ifcvt.c (mark_loop_exit_edges): Moved to cfgloopanal.c.
3124         (if_convert): Call flow_loops_find and flow_loops_free
3125         when calling mark_loop_exit_edges.
3126         * cfgloopanal.c (mark_loop_exit_edges): Moved from
3127         ifcvt.c.  Removed the flow_loops_find, flow_loops_free and
3128         free_dominance_info calls.
3129         * loop-init.c (flow_loops_find): Ditto.
3130         * passes.c (rest_of_handle_branch_prob): Ditto.
3131         * lambda-code.c (perfect_nestify): Do not call flow_loops_find.
3132         * loop-unroll.c (analyze_insns_in_loop): Do not use
3133         EDGE_LOOP_EXIT.
3134         * predict.c (predict_loops): Do not call flow_loop_scan.
3135         Use get_loop_exit_edges.
3136         (tree_estimate_probability): Do not pass flags to flow_loops_find.
3137         * tree-if-conv.c (bb_with_exit_edge_p): Take loop as argument.
3138         Do not use EDGE_LOOP_EXIT.
3139         (tree_if_convert_cond_expr, if_convertible_modify_expr_p): Pass loop
3140         to bb_with_exit_edge_p.
3141         (if_convertible_loop_p): Do not call flow_loop_scan.  Use
3142         loop->single_exit.  Do not use EDGE_LOOP_EXIT.  Pass loop
3143         to bb_with_exit_edge_p.
3144         (combine_blocks): Pass loop to bb_with_exit_edge_p.  Do not use
3145         EDGE_LOOP_EXIT.
3146         * tree-loop-linear.c (linear_transform_loops): Do not call
3147         flow_loop_scan.  Use loop->single_exit.
3148         * tree-vect-analyze.c (vect_analyze_operations): Use loop->single_exit.
3149         (vect_analyze_loop_form): Do not call flow_loop_scan.
3150         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Use
3151         loop->single_exit.
3152         (vect_do_peeling_for_loop_bound): Use loop_preheader_edge and
3153         loop->single_exit.
3154         * tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop,
3155         slpeel_make_loop_iterate_ntimes, slpeel_can_duplicate_loop_p,
3156         slpeel_tree_duplicate_loop_to_edge_cfg,
3157         slpeel_verify_cfg_after_peeling, slpeel_tree_peel_loop_to_edge):
3158         Use loop_preheader_edge and loop->single_exit.  Do not call
3159         flow_loop_scan.
3160
3161 2005-03-01  Nick Clifton  <nickc@redhat.com>
3162
3163         * config/arm/arm.c (thumb_find_work_register): Check all of the
3164         argument registers to see if they are free, and a couple of
3165         special cases where the last argument register but can be proved
3166         to be available during the function's prologue.
3167         (print_multi_reg, arm_compute_save_reg0_reg12_mask,
3168         output_return_instruction, emit_multi_reg_push, thumb_pushpop,
3169         thumb_unexpanded_epilogue): Use unsigned long as the type for the
3170         register bit-mask.
3171         (thumb_compute_save_reg_mask): Likewise.  Also use
3172         thumb_find_work_register() to ensure that there is agreement about
3173         which work register is going to be used in the prologue.
3174         (thumb_output_function_prologue): Use unsigned long as the type
3175         for the register bit-mask.  Also delay pushing the link register if
3176         other high registers are going to be pushed.
3177         (thumb_compute_save_reg_mask, emit_multi_reg_push,
3178         print_multi-reg, number_of_first_bit_set, thumb_pushpop): Remove
3179         redundant prototypes.
3180
3181 2005-02-28  John David Anglin  <dave.anglin#nrc-cnrc.gc.ca>
3182
3183         PR target/19819
3184         * pa.h (GO_IF_LEGITIMATE_ADDRESS): Allow allow hard registers during
3185         and after reload in REG+REG indexed addresses without REG_POINTER
3186         set in the base and not set in the index.
3187
3188 2005-02-28  Kaz Kojima  <kkojima@gcc.gnu.org>
3189
3190         * config/sh/linux.h (MD_EXEC_PREFIX, MD_STARTFILE_PREFIX):
3191         Don't undefine here.
3192         (HANDLE_PRAGMA_PACK_PUSH_POP): Delete.
3193         (NO_IMPLICIT_EXTERN_C, CPLUSPLUS_CPP_SPEC): Likewise.
3194         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
3195         (LIB_SPEC, LINK_EH_SPEC, STARTFILE_SPEC, ENDFILE_SPEC,
3196         LINK_GCC_C_SEQUENCE_SPEC, USE_LD_AS_NEEDED, TARGET_C99_FUNCTIONS):
3197         Delete.
3198         * config.gcc (sh*-*-linux*): Use config/linux.h.
3199
3200 2005-02-28  Dale Johannesen  <dalej@apple.com>
3201             Stan Shebs  <shebs@apple.com>
3202
3203         Rewrite of 64-bit Darwin structure-by-value pass/return.
3204         * config/rs6000/rs6000.h (CUMULATIVE_ARGS): New fields
3205         intoffset, use_stack, named.
3206         * config/rs6000/rs6000.c (rs6000_darwin64_function_arg):  Remove.
3207         (rs6000_darwin64_record_arg_advance_flush):  New.
3208         (rs6000_darwin64_record_arg_advance_recurse): New.
3209         (rs6000_darwin64_record_arg_flush):  New.
3210         (rs6000_darwin64_record_arg_recurse):  New.
3211         (rs6000_darwin64_record_arg):  New.
3212         (rs6000_return_in_memory):  Remove AGGREGATE_TYPE_P check.
3213         (function_arg_boundary):  Handle 128-bit aligned structs.
3214         (function_arg_advance):  Rewrite darwin64 struct handling.
3215         (function_arg):  Call rs6000_darwin64_record_arg.
3216         (function_arg_partial_nregs):  Handle darwin64 structs.
3217         (rs6000_darwin64_function_value):  Remove.
3218         (rs6000_function_value):  Call rs6000_darwin64_record_arg.
3219
3220 2005-02-28  Roger Sayle  <roger@eyesopen.com>
3221
3222         PR tree-optimization/20216
3223         * tree-chrec.c (tree_fold_factorial): Delete.
3224         (tree_fold_binomial): Change argument list to take a return type
3225         and change the type of K to unsigned int.  Rewrite to avoid explicit
3226         evaluation of factorials, and (recursively) calling fold to perform
3227         compile-time arithmetic.  Return NULL on (internal) overflow.
3228         (chrec_evaluate): Change type of K to an unsigned int.  Avoid
3229         calling tree_fold_binomial unnecessarily.  Return chrec_dont_know
3230         if any intermediate calculation overflows.
3231         (chrec_apply): Update call to chrec_evaluate.
3232
3233 2005-02-28  James E Wilson  <wilson@specifixinc.com>
3234
3235         * config/mips/mips.h (NO_PROFILE_COUNTERS): Define.
3236
3237 2005-02-28  Joseph S. Myers  <joseph@codesourcery.com>
3238
3239         PR c/20245
3240         * c-parser.c (c_parser_compound_statement): Return error_mark_node
3241         instead of NULL_TREE on error.
3242
3243 2005-02-28  David Edelsohn  <edelsohn@gnu.org>
3244
3245         * config/rs6000/rs6000.c (EASY_VECTOR_15): Remove.
3246         (EASY_VECTOR_15_ADD_SELF): Remove.
3247         (num_insns_constant_wide): Not static.
3248         (validate_condition_mode): Not static.
3249         (toc_relative_expr_p): Not static.
3250         (legitimate_indirect_address_p): Not static.
3251         (macho_lo_sum_memory_operand): Not static.
3252         (invalid_e500_subreg): Not static.
3253         (easy_vector_same): Not static.
3254         (easy_vector_splat_const): Not static.
3255         (RS6000_SYMBOL_REF_TLS_P): Remove.
3256         (any_operand): Delete.
3257         (any_parallel_operand): Delete.
3258         (count_register_operand): Delete.
3259         (altivec_register_operand): Delete.
3260         (xer_operand): Delete.
3261         (s8bit_cint_operand): Delete.
3262         (short_cint_operand): Delete.
3263         (u_short_cint_operand): Delete.
3264         (non_short_cint_operand): Delete.
3265         (exact_log2_cint_operand): Delete.
3266         (gpc_reg_operand): Delete.
3267         (cc_reg_operand): Delete.
3268         (cc_reg_not_cr0_operand): Delete.
3269         (reg_or_short_operand): Delete.
3270         (reg_or_neg_short_operand): Delete.
3271         (reg_or_aligned_short_operand): Delete.
3272         (reg_or_u_short_operand): Delete.
3273         (reg_or_cint_operand): Delete.
3274         (reg_or_arith_cint_operand): Delete.
3275         (reg_or_add_cint64_operand): Delete.
3276         (reg_or_sub_cint64_operand): Delete.
3277         (reg_or_logical_cint_operand): Delete.
3278         (got_operand): Delete.
3279         (got_no_const_operand): Delete.
3280         (easy_fp_constant): Delete.
3281         (easy_vector_constant): Delete.
3282         (easy_vector_constant_add_self): Delete.
3283         (zero_constant): Delete.
3284         (zero_fp_constant): Delete.
3285         (volatile_mem_operand): Delete.
3286         (offsettable_mem_operand): Delete.
3287         (mem_or_easy_const_operand): Delete.
3288         (add_operand): Delete.
3289         (non_add_cint_operand): Delete.
3290         (logical_operand): Delete.
3291         (non_logical_cint_operand): Delete.
3292         (mask_operand): Delete.
3293         (mask_operand_wrap): Delete.
3294         (mask64_operand): Delete.
3295         (mask64_2_operand): Delete.
3296         (and64_operand): Delete.
3297         (and64_2_operand): Delete.
3298         (and_operand): Delete.
3299         (reg_or_mem_operand): Delete.
3300         (lwa_operand): Delete.
3301         (symbol_ref_operand): Delete.
3302         (call_operand): Delete.
3303         (current_file_function_operand): Delete.
3304         (input_operand): Delete.
3305         (rs6000_nonimmediate_operand): Delete.
3306         (rs6000_tls_symbol_ref): Delete.
3307         (save_world_operation): Delete.
3308         (restore_world_operation): Delete.
3309         (load_multiple_operation): Delete.
3310         (store_multiple_operation): Delete.
3311         (vrsave_operation): Delete.
3312         (mfcr_operation): Delete.
3313         (mtcrf_operation): Delete.
3314         (lmw_operation): Delete.
3315         (stmw_operation): Delete.
3316         (branch_comparison_operator): Delete.
3317         (branch_positive_comparison_operator): Delete.
3318         (scc_comparison_operator): Delete.
3319         (trap_comparison_operator): Delete.
3320         (boolean_operator): Delete.
3321         (boolean_or_operator): Delete.
3322         (min_max_operator): Delete.
3323         * config/rs6000/rs6000.h (RS6000_SYMBOL_REF_TLS_P): Move to here.
3324         (EASY_VECTOR_15): Moved to here.
3325         (EASY_VECTOR_15_ADD_SELF): Move to here.
3326         (PREDICATE_CODES): Delete.
3327         * config/rs6000/rs6000-protos.h: Delete predicate functions.
3328         Declare functions no longer static.
3329         * config/rs6000/predicates.md: New.
3330         * config/rs6000/rs6000.md: Include predicates.md
3331
3332 2005-02-28  Kazu Hirata  <kazu@cs.umass.edu>
3333
3334         * calls.c (emit_call_1): Don't use  REG_ALWAYS_RETURN.
3335         (emit_library_call_value_1): Don't use LCT_ALWAYS_RETURN and
3336         REG_ALWAYS_RETURN.
3337         * cfgrtl.c (need_fake_edge_p): Likewise.
3338         * combine.c (distribute_notes): Likewise.
3339         * emit-rtl.c (try_split): Likewise.
3340         * recog.c (peephole2_opimize): Likewise.
3341         * reg-notes.def (ALWAYS_RETURN): Remove.
3342         * rtl.h (LCT_ALWAYS_RETURN): Remove.
3343         * tree-cfg.c (need_fake_edge_p): Don't use ECF_ALWAYS_RETURN.
3344         * tree.h (ECF_ALWAYS_RETURN): Remove.
3345
3346 2005-02-28  Roger Sayle  <roger@eyesopen.com>
3347
3348         PR middle-end/19874
3349         * tree-ssa.c (tree_ssa_useless_type_conversion_1): A conversion
3350         between different machine modes is never a "useless" conversion.
3351
3352 2005-02-28  Geert Bosch  <bosch@gnat.com>
3353
3354         PR ada/15977
3355         * doc/contrib.texi: List contributors for Ada front end
3356
3357 2005-02-28 Paolo Bonzini <bonzini@gnu.org>
3358
3359         * simplify-rtx.c (simplify_unary_operation_1,
3360         simplify_const_unary_operation): New, extracted from...
3361         (simplify_unary_operation): ... this one.
3362         (simplify_binary_operation_1,
3363         simplify_const_binary_operation): New, extracted from...
3364         (simplify_binary_operation): ... this one.
3365         * rtl.h (simplify_const_unary_operation,
3366         simplify_const_binary_operation): Add prototypes.
3367
3368 2005-02-28  Julian Brown  <julian@codesourcery.com>
3369
3370         * config/elfos.h: Revert my patch from 2005-02-25 since it broke
3371         building libjava and caused PR regression/20228.
3372
3373 2005-02-28  Paolo Bonzini  <bonzini@gnu.org>
3374
3375         PR bootstrap/17383
3376         * Makefile.in (host_subdir): New.
3377         (build_objdir): New.  Replace ../$(build_subdir) with it throughout.
3378         * configure: Regenerate.
3379
3380 2005-02-27  Zack Weinberg  <zack@codesourcery.com>
3381
3382         * config/alpha/t-osf4, config/arm/t-netbsd, config/ia64/t-hpux
3383         * config/pa/t-hpux-shlib (SHLIB_INSTALL): Create the
3384         installation directory first.
3385
3386 2005-02-28  Hans-Peter Nilsson  <hp@axis.com>
3387
3388         PR target/19065.
3389         * config/cris/cris.h (EXTRA_CONSTRAINT_Q): Accept only (mem (reg)),
3390         not including (reg). Do not check for reg being CRIS_PC_REGNUM.
3391         (EXTRA_MEMORY_CONSTRAINT): Define as 'Q'.
3392         * config/cris/cris.md: Tweak comments referring to Q.
3393         ("cmpsi", "cmphi", "cmpqi", "*movsi_internal", "movhi")
3394         ("movstricthi", "movqi", "movstrictqi", "movsf", "addsi3")
3395         ("addhi3", "addqi3", "subsi3", "subhi3", "subqi3")
3396         ("*expanded_andsi", "*expanded_andhi", "*andhi_lowpart", "andqi3")
3397         ("*andqi_lowpart", "iorsi3", "iorhi3", "iorqi3", "uminsi3"):
3398         Insert spaces in constraints to align alternatives vertically for
3399         readability.
3400         ("cmphi"): Ditto.  Add separate alternative for operand 0 "r",
3401         operand 1: "M".
3402
3403 2005-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3404
3405         PR rtl-optimization/17728
3406         * pa.md (mulsi3, divsi3, udivsi3, modsi3): Change predicate for
3407         operand 0 from general_operand to move_dest_operand.
3408
3409 2005-02-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3410
3411         * pa/elf.h, pa/som.h (ASM_OUTPUT_EXTERNAL): Use assemble_name_raw
3412         instead of trying to save and restore TREE_SYMBOL_REFERENCED.
3413         * pa/pa64-hpux.h (ASM_OUTPUT_TYPE_DIRECTIVE): Define.
3414         (ASM_OUTPUT_EXTERNAL): Don't save and restore TREE_SYMBOL_REFERENCED.
3415
3416 2005-02-26  Nathanael Nerode  <neroden@gcc.gnu.org>
3417
3418         * configure.ac: Rename cc_for_cross_gnattools to host_cc_for_libada.
3419         * configure: Regenerate.
3420   &n