OSDN Git Service

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