OSDN Git Service

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