OSDN Git Service

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