OSDN Git Service

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