OSDN Git Service

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