OSDN Git Service

gcc/
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
2             Richard Sandiford  <richard@codesourcery.com>
3
4         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
5         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
6         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
7         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
8         as being live on exit from an interrupt function.
9         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
10         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
11         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
12         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
13         (m68k_interrupt_function_p): Globalize.
14         (m68k_compute_frame_layout): Remove reverse mask code.
15         (m68k_emit_movem, m68k_set_frame_related): New functions.
16         (m68k_output_function_prologue): Delete in favor of...
17         (m68k_expand_prologue): ...this new function.
18         (m68k_output_function_epilogue): Delete in favor of...
19         (m68k_expand_epilogue): ...this new function.
20         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
21         functions.
22         (print_operand): Handle %?.
23         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
24         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
25         (prologue, epilogue): New patterns.
26         (return): Turn into a define_expand.
27         (*return): New pattern, derived from old "return" pattern.  Use rte
28         rather than rts for interrupt functions.  Only use rtd if the pop
29         count is nonzero.
30         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
31         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
32         (link, *link, unlink, *unlink, load_got): Likewise.
33
34 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
35
36         PR target/23482
37         PR target/17114
38         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
39         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
40         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
41         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
42         and m68k_matches_u_p.
43         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
44         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
45         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
46         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
47         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
48         (REG_STRICT_P): New macro.
49         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
50         PCREL_GENERAL_OPERAND_OK.
51         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
52         m68k_legitimate_base_reg_p.
53         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
54         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
55         (PIC_CASE_VECTOR_ADDRESS): Update comment.
56         * config/m68k/m68k.c (m68k_address): New structure.
57         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
58         (m68k_decompose_index, m68k_legitimate_constant_address_p)
59         (m68k_jump_table_ref_p, m68k_decompose_address)
60         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
61         (m68k_matches_u_p): New functions.
62         (print_operand_address): Rewrite to use m68k_decompose_index.
63
64 2007/03/05  David Taylor  <dtaylor@emc.com>
65
66         * gcc.c: Correct copyright date in --version output.
67
68 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
69
70         * pa.md: In unamed move patterns, disparge copies between general
71         and floating point registers using '?' modifier.  Don't include 'f'
72         constraint for register preferences in DImode, SImode, HImode and
73         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
74         Remove constraints for copies between general and floating registers
75         in soft-float DFmode pattern.
76         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
77         floating register.
78         (movsf): Likewise. 
79
80 2007-03-05  Mike Stump  <mrs@apple.com>
81
82         * c-common.c (targetcm): Add.   
83         * c-opts.c (c_common_handle_option): Handle language specific
84         target options.
85         * opts.c (handle_option): Verify language for target options, if
86         any are given.
87         * opth-gen.awk: Add CL_LANG_ALL.
88         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
89         (TARGETCM_INITIALIZER): Add.
90         * target.h (struct gcc_targetcm): Add.
91         (targetcm): Add.
92         * targhooks.c (default_handle_c_option): Add.
93         * targhooks.h (default_handle_c_option): Add.
94         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
95
96         * config/darwin.opt (iframework): Add.
97         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
98         * config/darwin-c.c (handle_c_option): Add.
99         (TARGET_HANDLE_C_OPTION): Add.
100         (targetcm): Add.
101         * doc/invoke.texi (Darwin Options): Add -iframework.
102
103 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
104
105         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
106         conversion.
107
108 2007-03-05  Ian Lance Taylor  <iant@google.com>
109
110         * c.opt (fgnu89-inline): New option.
111         * c-opts.c (c_common_post_options): Set default value for
112         flag_gnu89_inline.
113         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
114         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
115         inline functions.
116         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
117         (grokdeclarator, start_function): Likewise.
118         * c-cppbuiltin.c (c_cpp_builtins): Define either
119         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
120         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
121         (C Dialect Options): Document -fgnu89-inline.
122         * doc/extend.texi (Function Attributes): Explain what the
123         gnu_inline attribute does.
124         * doc/cpp.texi (Common Predefined Macros): Document
125         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
126
127 2007-03-05  Ian Lance Taylor  <iant@google.com>
128
129         PR tree-optimization/31034
130         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
131         half-range if the other side is an overflow infinity.
132
133 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
134
135         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
136         (bfin*-linux-uclibc*): New configuration.
137         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
138         defining.
139         * config/bfin/linux.h: New file.
140         * config/bfin/libgcc-bfin.ver: New file.
141         * config/bfin/t-bfin-uclinux: New file.
142         * config/bfin/t-bfin-linux: New file.
143         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
144         (TARGET_OS_CPP_BUILTINS): New macro.
145
146 2007-03-05  Richard Guenther  <rguenther@suse.de>
147
148         * fold-const.c (fold_binary): Remove duplicate folding
149         of comparison of non-null ADDR_EXPR against null.
150
151 2007-03-05  Richard Guenther  <rguenther@suse.de>
152         Dorit Nuzman  <dorit@il.ibm.com>
153
154         PR tree-optimization/26420
155         * tree-vectorizer.c (vectorize_loops): Bail out early if there
156         are no loops in the function.  Only print the number of
157         vectorized loops if it is greater than zero or we are supposed
158         to print information about unvectorized loops.
159
160 2007-03-05  Revital Eres  <eres@il.ibm.com>
161
162       * gcc.dg/var-expand1.c: New test.
163       * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
164       when an accumulator is expanded.
165
166 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
167
168         PR other/30465
169         * c-common.c (convert_and_check): Don't give warnings for
170         conversion if 'expr' already overflowed.
171         
172 2007-03-04  Roger Sayle  <roger@eyesopen.com>
173
174         PR middle-end/30744
175         * fold-const.c (fold_comparison): Enforce type consistency when
176         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
177
178 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
179
180         * tree-ssa-address.c (create_mem_ref): Do not put an expression
181         containing a cast to the base of TARGET_MEM_REF.
182
183 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
184
185         * tree.c (tree_contains_struct_check_failed): Remove spurious
186         whitespace from error message.
187
188 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
189
190         PR target/30406
191         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
192         instead of precision.
193
194 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
195             Nathan Sidwell  <nathan@codesourcery.com>
196
197         * emit-rtl.c (find_auto_inc): New.
198         (try_split): recreate REG_INC notes,
199         Use regular for loops rather than whiles.
200
201 2007-03-03  Andreas Schwab  <schwab@suse.de>
202
203         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
204         * configure: Regenerate.
205
206 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
207
208         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
209         flag_rounding_math, not flag_unsafe_math_optimizations.
210
211         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
212         fold_build2.
213         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
214         alpha_fold_vector_minmax): Likewise.
215         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
216         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
217
218 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
219
220         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
221         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
222         if the lhs has side-effects.
223         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
224
225 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
226
227         * config/i386/i386.h (TUNEMASK): Remove define.
228         (ARCHMASK): Remove define.
229         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
230          Use ix86_arch_mask variable instead of ARCHMASK.
231         * config/i386/i386.c (override_options): Ditto.
232         (standard_80387_constant_p): Ditto.
233
234 2007-03-02  Ian Lance Taylor  <iant@google.com>
235
236         Used signed infinities in VRP.
237         * tree-vrp.c (uses_overflow_infinity): New static function.
238         (supports_overflow_infinity): New static function.
239         (make_overflow_infinity): New static function.
240         (negative_overflow_infinity): New static function.
241         (positive_overflow_infinity): New static function.
242         (is_negative_overflow_infinity): New static function.
243         (is_positive_overflow_infinity): New static function.
244         (is_overflow_infinity): New static function.
245         (overflow_infinity_range_p): New static function.
246         (compare_values_warnv): New function split out of compare_values.
247         (compare_value): Call it.
248         (set_value_range_to_nonnegative): Add overflow_infinity
249         parameter.  Change caller.
250         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
251         Change callers.
252         (vrp_expr_computes_nonzero): Likewise.
253         (compare_ranges, compare_range_with_value): Likewise.
254         (compare_name_with_value, compare_names): Likewise.
255         (vrp_evaluate_conditional): Likewise.
256         (set_value_range): Handle infinity
257         (vrp_operand_equal_p, operand_less_p): Likewise.
258         (extract_range_from_assert): Likewise.
259         (vrp_int_const_binop): Likewise.
260         (extract_range_from_binary_expr): Likewise.
261         (extract_range_from_unary_expr): Likewise.
262         (extract_range_from_comparison): Likewise.
263         (extract_range_from_expr): Likewise.
264         (dump_value_range): Likewise.
265         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
266         (test_for_singularity): Likewise.
267         (vrp_int_const_binop): Remove inline qualifier.
268         (adjust_range_with_scev): Add comment.
269         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
270
271 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
272
273         * tree-ssa-structalias.c (could_have_pointers): Tidy.
274         (get_constraint_for): Likewise.
275         (do_structure_copy): Likewise.
276         (find_func_aliases): Fix references to MODIFY_EXPR.
277         (intra_create_variable_infos): Tidy.
278         * tree-ssa-operands.c (add_virtual_operand): Add argument
279         IS_CALL_SITE.
280         When adding members of alias sets, if IS_CALL_SITE is true and
281         the symbol is not call-clobbered, skip it.
282         Adjust all callers.
283
284 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
285
286         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
287         entry by means of emit_insn_at_entry.
288
289 2007-03-02  Richard Henderson  <rth@redhat.com>
290
291         * expr.h (promoted_input_arg): Remove decl.
292         * function.c (promoted_input_arg): Merge into ...
293         * combine.c (setup_incoming_promotions): ... only caller.
294         Rearrange to avoid double loop.
295
296 2007-03-02  Ben Elliston  <bje@au.ibm.com>
297             Peter Bergner  <bergner@vnet.ibm.com>
298             Janis Johnson  <janis187@us.ibm.com>
299
300         * config/rs6000/dfp.md: New file.
301         * config/rs6000/rs6000.md: Include dfp.md.
302         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
303         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
304         and TDmode decimal float modes in FP registers.
305         (num_insns_constant): Likewise.
306         (rs6000_legitimate_offset_address_p): Likewise.
307         (rs6000_legitimize_address): Likewise.
308         (rs6000_legitimize_reload_address): Likewise.
309         (rs6000_legitimate_address): Likewise.
310         (rs6000_emit_move): Likewise.
311         (function_arg_boundary): Likewise.
312         (function_arg_advance): Likewise.
313         (rs6000_darwin64_record_arg_recurse): Likewise.
314         (function_arg): Likewise.
315         (rs6000_gimplify_va_arg): Likewise.
316         (rs6000_split_multireg_move): Likewise.
317         (rs6000_output_function_epilogue): Likewise.
318         (rs6000_output_function_epilogue): Likewise.
319         (rs6000_register_move_cost): Likewise.
320         (rs6000_function_value): Likewise.
321         (rs6000_libcall_value): Likewise.
322
323 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
324
325         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
326
327 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
328
329         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
330         Use $MULTIDIR to choose between the kernel and RTP headers,
331         and use $WIND_BASE and $WIND_USR to locate them.
332
333 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
334
335         * config/i386/i386.c (override_options): Put initialization of
336         ix86_tune_mask and ix86_arch_mask to the correct place.
337
338 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
339             Michael Meissner  <michael.meissner@amd.com>
340
341         PR target/31019
342         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
343         (ARCHMASK): Define.
344         (TARGET_CMOVE): Use ARCHMASK.
345         (TARGET_CMPXCHG): Ditto.
346         (TARGET_CMPXCHG8B): Ditto.
347         (TARGET_XADD): Ditto.
348         (TARGET_BSWAP): Ditto.
349         * config/i386/i386.c (ix86_tune_mask): New global variable.
350         (ix86_arch_mask): Ditto.
351         (override_options): Initialize ix86_tune_mask and
352         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
353         target_flags.
354
355 2007-03-02  Ben Elliston  <bje@au.ibm.com>
356
357         PR 30992
358         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
359
360 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
361
362         * target.h (init_dwarf_reg_sizes_extra): New target hook.
363         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
364         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
365         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
366         hook.
367         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
368         rs6000_init_dwarf_reg_sizes_extra): New.
369         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
370         SPE register high parts.
371
372 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
373
374         * Makefile.in: Add install-pdf target as
375         copied from automake v1.10 rules.
376         * configure.ac: Add install-pdf to target list.
377         * configure: Regenerate.
378
379 2007-03-01  Paul Brook  <paul@codesourcery.com>
380
381         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
382         modes to LDRD for DImode.
383         (output_move_double): Fixup out of range ldrd/strd.
384         (vfp_secondary_reload_class): Rename...
385         (coproc_secondary_reload_class): ... to this.  Add wb argument.
386         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
387         coproc_secondary_reload_class for CLASS_IWMMXT.
388         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
389         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
390
391 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
392
393         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
394         factor by the estimated number of iterations.
395         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
396         prefetch latency.
397
398         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
399         decode_caches_intel, detect_caches_intel): New functions.
400         (host_detect_local_cpu): Use detect_caches_amd and
401         detect_caches_intel.
402
403 2007-03-01  Richard Henderson  <rth@redhat.com>
404
405         * expr.c (emit_move_complex_push): Export.
406         (emit_move_complex_parts): Split out from ...
407         (emit_move_complex): ... here.
408         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
409         * config/i386/i386.md (movcdi): New.
410
411 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
412
413         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
414         size of mode1 to check for tieable modes in MMX case.
415
416 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
417
418         * Makefile.in (rtlanal.o): Depend on tree.h.
419         * rtl.h (offset_within_section_p, split_const): Declare.
420         * rtlanal.c: Include tree.h.
421         (offset_within_block_p): New function, taken from
422         mips_offset_within_object_p.
423         (split_const): New function, taken from mips_split_const.
424         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
425         Declare.
426         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
427         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
428         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
429         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
430         (m68k_illegitimate_symbolic_constant_p): New function.
431         * config/m68k/m68k.md (movsi): Remove misleading predicates.
432         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
433         symbolic constant that might be outside the symbol's section,
434         move the symbol first and then add the offset.
435         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
436         Override.
437         * config/mips/mips.c (mips_split_const): Delete.
438         (mips_offset_within_object_p): Delete.
439         (mips_symbolic_constant_p): Use offset_within_section_p and
440         split_const instead of mips_offset_within_object_p and
441         mips_split_const.
442         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
443         (mips_legitimize_const_move, print_operand_reloc)
444         (mips_dangerous_for_la25_p): Use split_const instead of
445         mips_split_const.
446
447 2007-02-28  Eric Christopher  <echristo@apple.com>
448
449         * Makefile.in (install-include-dir): Don't rm -rf include.
450
451 2007-02-28  Richard Guenther  <rguenther@suse.de>
452
453         PR middle-end/30364
454         * fold-const.c (fold_binary): Do not associate expressions
455         with more than one variable for integer types that do not wrap.
456
457 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
458
459         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
460         Delete, and replace with...
461         (fold_builtin_call_array): This.  Update callers to use it.
462         * fold-const.c (fold_build_call_list): Delete, and replace with...
463         (fold_build_call_array): This.
464         (fold_build_call_list_initializer): Delete, and replace with...
465         (fold_build_call_array_initializer): This.
466         * tree.h: Update declarations to reflect above changes.
467
468         * c-typeck.c (build_function_call): Store converted arguments
469         in a stack-allocated array instead of building a list.
470         (convert_arguments): Store arguments in the array passed in as an
471         argument, and return the actual number of arguments.
472         * c-format.c: (check_function_format): Pass arguments in an
473         array instead of a list.
474         * c-common.c (check_function_nonnull): Likewise.
475         (check_function_sentinel): Likewise.
476         (check_function_arguments): Likewise.
477         * c-common.h: Update declarations to reflect above changes.
478
479 2007-02-28  Jan Hubicka  <jh@suse.cz>
480
481         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
482         PRED_NEGATIVE_RETURN): Update outcomes.
483
484 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
485
486         * calls.c (emit_library_call_value_1): Handle partial registers
487         correctly when building up CALL_INSN_FUNCTION_USAGE.
488
489 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
490
491         * pa/predicates.md (move_src_operand): Allow zero for mode.
492         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
493         move pattern.
494
495 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
496
497         PR target/30970
498         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
499         *movv2df_internal): Enable pattern only for valid operand
500         combinations.
501         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
502         tie only 128bit modes. For MMX registers, tie only 64bit modes.
503
504 2007-02-27  Mike Stump  <mrs@apple.com>
505
506         * config/darwin-crt3.c: Avoid compilation when compiling for a
507         kext multilib.
508
509 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
510
511         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
512         FIXED_INCLUDE_DIR.
513         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
514         for fixed headers and limits.h.
515         (install-include-dir, install-headers-tar, install-headers-cpio,
516         install-headers-cp, real-install-headers-tar,
517         real-install-headers-cpio, real-install-headers-cp): Handle
518         include-fixed as well as include.
519         (install-mkheaders): Don't install files that go only in include
520         not include-fixed.
521         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
522         from GCC_INCLUDE_DIR.
523         * gcc.c (process_command): Remove special -BstageN/ handling.
524         (do_spec_1): Add include-fixed directories.
525
526 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
527
528         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
529         _smulsi3_highpart.
530         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
531         New functions.
532         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
533         patterns.
534
535 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
536
537         * c-common.c (get_priority): Add check for
538         SUPPORTS_INIT_PRIORITY.
539
540 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
541
542         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
543
544         * config/bfin/bfin.c: Include "cfglayout.h".
545         (MAX_LSETUP_DISTANCE): New macro.
546         (struct loop_info): New members incoming, incoming_src and
547         incoming_dest.  Delete member predecessor.
548         (length_for_loop): New function.
549         (bfin_optimize_loop): Handle more different loop structures.
550         (bfin_discover_loop): Rework detection of predecessor blocks by
551         examining incoming edges.
552         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
553         bfin_reorg_loops.
554         (bfin_reorder_loops): New function.
555         (bfin_reorg_loops): Use these three new functions.
556
557         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
558         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
559         (CONSTRAINT_LEN): Add entry for 'q'.
560         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
561         Add 'q' constraints.
562         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
563         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
564
565         * config/bfin/bfin.md (add_with_carry): New pattern.
566         (s_or_u, su_optab, su_modifier): New code macros/attrs.
567         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
568         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
569         support unsigned multiplies too.  Removed incorrect commutativity from
570         operand 1 constraint where appropriate.
571         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
572         patterns.
573         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
574         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
575         New patterns.
576         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
577         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
578         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
579         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
580         usmulhisi_hh_huh): New patterns.
581
582         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
583         lshifthi3): Fix output template to use half reg for operand 2.
584
585         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
586         instead of R2.
587
588         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
589
590 2007-02-27  Andreas Schwab  <schwab@suse.de>
591
592         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
593
594 2007-02-27  Jan Hubicka  <jh@suse.cz>
595
596         * predict.c (last_basic_block_p): Remove.
597         (tree_estimate_probability): Update return heuristic for commonized
598         return blocks.
599
600 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
601
602         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
603
604 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
605
606         * doc/include/gcc-common.texi (versionsubtitle): New macro.
607         * doc/cpp.texi: Standardize title page.
608         * doc/cppinternals.texi: Likewise.
609         * doc/gcc.texi: Standardize title page, remove version number
610         from copyright page.
611         * doc/gccint.texi: Likewise.
612         * doc/install.texi: Standardize title page, add table of
613         contents.
614
615 2007-02-26  Jan Hubicka  <jh@suse.cz>
616
617         * predict.def: Set outcomes according to more recent results.
618         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
619         Remove dead predictors.
620         * predict.c (return_prediction): Fix pasto.
621
622 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
623
624         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
625         change; avoid a memory leak when returning early.
626
627 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
628
629         * c-decl.c (static_ctors): Move to c-common.c.
630         (static_dtors): Likewise.
631         (finish_function): Use c_record_cdtor_fn.
632         (build_cdtor): Move to c-common.c.
633         (c_write_global_declarations): Use c_build_cdtor_fns.
634         * c-common.h (static_ctors): Declare.
635         (static_dtors): Likewise.
636         (c_record_cdtor_fn): Likewise.
637         (c_build_cdtor_fns): Likewise.
638         * c-common.c (static_ctors): New variable.
639         (static_dtors): Likewise.
640         (c_record_cdtor_fn): New function.
641         (build_cdtor): Move from c-decl.c
642         (c_build_cdtor_fns): New function.
643
644         * output.h (assemble_addr_to_section): Declare.
645         (get_cdtor_priority_section): Likewise.
646         * varasm.c (assemble_addr_to_section): New function.
647         (get_cdtor_priority_section): Likewise.
648         (default_named_section_asm_out_destructor): Use them.
649         (destor_dtor_section_asm_out_destructor): Likewise.
650         (default_named_section_asm_out_constructor): Likewise.
651         (default_ctor_section_asm_out_constructor): Likewise.
652         * config.gcc (*-*-vxworks*): Include vxworks.o.
653         * config/t-vxworks (vxworks.o): New target.
654         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
655         (TARGET_ASM_CONSTRUCTOR): Define.
656         (TARGET_ASM_DESTRUCTOR): Likewise.
657         (vxworks_asm_out_constructor): Declare.
658         (vxworks_asm_out_destructor): Likewise.
659
660         * c-common.c (get_priority): Check that we have not just an
661         INTEGER_CST, but an integer constant with integeral type.
662
663 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
664
665         PR tree-optimization/30938
666         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
667         use &dt[nargs-1] instead of &dt[nargs] in the call to
668         vect_is_simple_use().
669
670 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
671
672         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
673         from register elimination as PRE_MODIFY / POST_MODIFY increments.
674         Do not attempt to handle MEM inside auto-inc expressions.
675         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
676         of a register modified by an auto-inc expression.  However, do handle
677         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
678         (elimination_effects): Prohibit elimination of a register modified
679         by an auto-inc expression.  Disable register elimination rules whose
680         target register is modified by an auto-inc expression with variable
681         increment.
682
683 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
684
685         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
686         off-by-one error.
687         (array_at_struct_end_p): New function.
688         (idx_infer_loop_bounds): Use it.
689         (estimate_numbers_of_iterations_loop): Export.
690         * predict.c (predict_loops): Use estimated_loop_iterations_int.
691         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
692         (tree_estimate_probability): Call record_loop_exits.
693         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
694         (estimated_loop_iterations, estimated_loop_iterations_int,
695         estimated_loop_iterations_tree): New functions.
696         (analyze_siv_subscript_cst_affine,
697         compute_overlap_steps_for_affine_1_2,
698         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
699         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
700         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
701         (PRED_LOOP_ITERATIONS_GUESSED): New.
702         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
703         * cfgloop.h (estimate_numbers_of_iterations_loop,
704         estimated_loop_iterations_int): Declare.
705
706 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
707
708         * doc/extend.texi: Document optional priority argument to
709         constructors and destructors.
710         * tree.c (init_priority_for_decl): Adjust GTY markers.
711         (init_ttree): Use priority-info hash functions for
712         init_priority_for_decl.
713         (tree_map_eq): Rename to ...
714         (tree_map_base_eq): ... this.
715         (tree_map_marked_p): Rename to ...
716         (tree_map_base_marked_p): ... this.
717         (tree_map_base_hash): New function.
718         (decl_init_priority_lookup): Rework.
719         (decl_fini_priority_lookup): New function.
720         (decl_priority_info): New function.
721         (decl_init_priority_insert): Use it.
722         (decl_fini_priority_insert): Likewise.
723         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
724         hierarchy.
725         (decl_restrict_base_insert): Likewise.
726         (decl_debug_expr_insert): Likewise.
727         (decl_value_expr_lookup): Likewise.
728         (decl_value_expr_insert): Likewise.
729         * tree.h (priority_type): New type.
730         (decl_init_priority_lookup): Use priority_type.
731         (decl_fini_priority_lookup): New function.
732         (decl_init_priority_insert): Use priority_type.
733         (decl_fini_priority_insert): New function.
734         (DECL_HAS_INIT_PRIORITY): Tweak comments.
735         (DECL_INIT_PRIORITY): Likewise.
736         (SET_DECL_INIT_PRIORITY): Add comment.
737         (DECL_FINI_PRIORITY): New macro.
738         (SET_DECL_FINI_PRIORITY): Likewise.
739         (DEFAULT_INIT_PRIORITY): Document.
740         (MAX_INIT_PRIORITY): Likewise.
741         (MAX_RESERVED_INIT_PRIORITY): Likewise.
742         (tree_map_base): New type.
743         (tree_map_base_eq): New function.
744         (tree_map_base_hash): Likewise.
745         (tree_map_base_marked_p): Likewise.
746         (tree_map): Inherit from tree_map_base.
747         (tree_map_eq): Make it a macro.
748         (tree_map_marked_p): Likewise.
749         (tree_int_map): Inherit from tree_map_base.
750         (tree_int_map_eq): Make it a macro.
751         (tree_int_map_hash): Likewise.
752         (tree_int_map_marked_p): Likewise.
753         (tree_priority_map): New type.
754         (tree_priority_map_eq): New macro.
755         (tree_priority_map_hash): Likewise.
756         (tree_priority_map_marked_p): Likewise.
757         * varasm.c (emults_decl): Adjust for refactoring of tree_map
758         hierarchy.
759         (emutls_common_1): Likewise.
760         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
761         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
762         of tree_map hierarchy.
763         * tree-cfg.c (move_stmt_r): Likewise.
764         (new_label_mapper): Likewise.
765         * c-tree.h (c_expand_body): Move to ...
766         * c-common.h (c_expand_body): ... here.
767         * c-decl.c (c_expand_body): Move to ...
768         * c-common.c (c_expand_body): ... here.
769         (c_common_attribute_table): Allow 1 argument for the constructor
770         and destructor attributes.
771         (get_priority): New function.
772         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
773         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
774
775 2007-02-24  Jan Hubicka  <jh@suse.cz>
776
777         PR middle-end/30509
778         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
779
780 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
781             Jan Hubicka  <jh@suse.cz>
782
783         PR target/30778
784         * i386.c (counter_mode): New function.
785         (expand_set_or_movmem_via_loop): Use it.
786         (expand_movmem_epilogue): Likewise; fix pasto.
787         (ix86_expand_movmem): Do emit guard even for constant counts.
788         (ix86_expand_setmem): Likewise.
789
790 2007-02-25  Nick Clifton  <nickc@redhat.com>
791
792         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
793         (JUMP_TABLES_IN_TEXT_SECTION): Define.
794
795 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
796
797         PR target/30770
798         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
799         count argument with 0x10, not with 0x16.
800         (expand_setmem_epilogue): Ditto.
801
802 2007-02-24  Mike Stump  <mrs@apple.com>
803
804         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
805         symbols.
806
807 2007-02-24  Richard Guenther  <rguenther@suse.de>
808
809         PR middle-end/30951
810         * fold-const.c (fold_binary): Fold x +- CST op x for
811         EQ_EXPR and NE_EXPR.
812
813 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
814
815         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
816
817 2007-02-24  Jan Hubicka  <jh@suse.cz>
818
819         * cgraphunit.c (decide_is_function_needed): Honor
820         -fkeep-inline-functions.
821
822 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
823
824         * builtins.c (fold_builtin_modf): New.
825         (fold_builtin_2): Use it.
826
827 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
828
829         * loop-iv.c (implies_p): Detect additional cases where A implies B.
830         (determine_max_iter): Take additional LOOP arg; all callers changed.
831         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
832         one using simplifications.
833         (simplify_using_initial_values): Return if the expression becomes
834         invalid due to altered regs.
835
836 2007-02-23  DJ Delorie  <dj@redhat.com>
837
838         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
839
840 2007-02-23  Mike Stump  <mrs@apple.com>
841
842         * tlink.c (scan_linker_output): Parse linker messages from
843         darwin9's linker better.
844
845 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
846
847         PR debug/29614
848         * varpool.c (varpool_assemble_pending_decls):  Set
849         varpool_last_needed_node to null.
850
851 2007-02-23  DJ Delorie  <dj@redhat.com>
852
853         * config/i386/i386.c (ix86_data_alignment): Don't specify an
854         alignment bigger than the object file can handle.
855
856 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
857
858         PR target/30825
859         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
860         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
861         (*movsf_1): Penalize MMX moves.
862
863 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
864
865         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
866         2^32-1 or more times unless flag_unsafe_loop_optimizations.
867
868         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
869
870 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
871
872         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
873         (fold_builtin_1): Use them.
874         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
875         BUILT_IN_SIGNIFICAND.
876
877 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
878
879         * config/i386/i386.c (bdesc_1arg): Initialize
880         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
881         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
882         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
883         and IX86_BUILTIN_MOVSLDUP.
884
885 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
886
887         PR rtl-optimization/30841
888         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
889
890 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
891
892         * builtins.c (fold_builtin_frexp): New.
893         (fold_builtin_2): Use it.
894
895 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
896
897         * doc/invoke.texi (Spec Files): Document getenv spec function.
898
899         * gcc.c (getenv_spec_function): New function.
900         (static_spec_functions): Add it.
901         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
902         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
903         header files.
904
905 2007-02-22  Michael Matz  <matz@suse.de
906
907         PR c++/29433
908         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
909         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
910
911 2007-02-22  Ian Lance Taylor  <iant@google.com>
912
913         PR debug/30898
914         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
915         (mem_loc_descriptor): Call it.
916
917 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
918             Ira Rosen  <irar@il.ibm.com>
919
920         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
921
922 2007-02-22  Ira Rosen  <irar@il.ibm.com>
923
924         PR tree-optimization/30843
925         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
926         stores only after all the group is vectorized.
927
928 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
929
930         PR tree-optimization/30858
931         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
932         in the reduction cycle have a single use in the loop.
933         * tree-vectorizer.h (relevant): Add documentation.
934
935 2007-02-20  Mike Stump  <mrs@apple.com>
936
937         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
938         * configure: Regenerate.
939
940 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
941
942         Change the defaults of some parameters and options.
943         * config/spu/spu-protos.h (spu_optimization_options): Declare.
944         * config/spu/spu.c (spu_optimization_options): Add.
945         (spu_override_options): Change params in spu_optimization_options.
946         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
947
948         Register 127 is only 16 byte aligned when used as a frame pointer.
949         * config/spu/spu-protos.h (spu_init_expanders): Declare.
950         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
951         HARD_FRAME_POINTER_REGNUM.
952         (spu_legitimate_address):  Use regno_aligned_for_reload.
953         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
954         aligned when frame_pointer_needed is true.
955         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
956         to 8 bits.
957         * config/spu/spu.h (INIT_EXPANDERS): Define.
958
959         Make sure shift and rotate instructions have valid immediate operands.
960         * config/spu/predicates.md (spu_shift_operand): Remove.
961         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
962         * config/spu/constraints.md (W, O): Extend range.
963         * config/spu/spu.md (umask, nmask): Define.
964         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
965         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
966         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
967         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
968         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
969         (lshr<mode>3_reg):  Fix rtl description.
970
971         Make sure mulhisi immediate operands are valid.
972         * config/spu/predicates.md (imm_K_operand): Add.
973         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
974
975         Generate constants using fsmbi and andi.
976         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
977         (print_operand, spu_split_immediate, classify_immediate,
978         fsmbi_const_p): Handle IC_FSMBI2.
979
980         Correctly handle a CONST_VECTOR containing symbols.
981         * config/spu/spu.c (print_operand): Handle HIGH correctly.
982         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
983         (immediate_load_p): Allow symbols that use 2 instructions to create.
984         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
985         with symbols when flag_pic is set.
986         (const_vector_immediate_p): New.
987         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
988         accept a CONST_VECTOR with symbols.
989         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
990         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
991         correctly.
992         * config/spu/spu.md (high, low): Delete.
993         (low_<mode>): Define.
994
995         Remove INTRmode and INTR_REGNUM, which didn't work.
996         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
997         of INTR_REGNUM.
998         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
999         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
1000         peephole2 pattern): Don't use INTR or 131.
1001         (movintrcc): Delete.
1002         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
1003         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
1004         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
1005         (UNSPEC_SET_INTR): Add.
1006         * config/spu/spu-modes.def (INTR): Remove.
1007
1008         More accurate warnings about run-time relocations.
1009         * config/spu/spu.c (reloc_diagnostic): Test in_section.
1010
1011         Correctly warn about immediate arguments to specific intrinsics.
1012         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
1013         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
1014         the instruction predicate.
1015
1016         Fix tree check errors with latest update.
1017         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
1018         CALL_EXPR_ARG.
1019         (spu_expand_builtin): Use CALL_EXPR_FN.
1020
1021         Add missing specific intrinsics.
1022         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
1023         si_bislede.
1024         * config/spu/spu_internals.h: Ditto.
1025
1026         Fix incorrect operand modifiers.
1027         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
1028         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
1029
1030         Optimize one case of zero_extend of a vec_select.
1031         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
1032
1033         Accept any immediate for hbr.
1034         * config/spu/spu.md (hbr):  Change s constraints to i.
1035
1036 2007-02-21  Paul Brook  <paul@codesourcery.com>
1037
1038         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
1039         condexec_count when skipping USE and CLOBBER.
1040
1041 2007-02-21  Nick Clifton  <nickc@redhat.com>
1042
1043         * common.opt (Warray-bounds): Add Warning attribute.
1044         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
1045         Likewise.
1046         (fsized-zeroes): Add Optimization attribute.
1047         (fsplit-wide-types, ftree-scev-cprop): Likewise.
1048         * c.opt (Wc++0x-compat): Add Warning attribute.
1049
1050 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
1051
1052         PR middle-end/30761
1053         * reload1.c (eliminate_regs_in_insn): In the single_set special
1054         case, attempt to re-recognize the insn before falling back to
1055         having reload fix it up.
1056
1057 2007-02-20  Eric Christopher  <echristo@gmail.com>
1058
1059         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
1060         Rewrite accordingly.
1061         (frv_read_iacc_argument): Ditto.
1062         (frv_expand_set_builtin): Take a call instead of arglist, update for
1063         above changes.
1064         (frv_expand_unop_builtin): Ditto.
1065         (frv_expand_binop_builtin): Ditto.
1066         (frv_expand_cut_builtin): Ditto.
1067         (frv_expand_binopimm_builtin): Ditto.
1068         (frv_expand_voidbinop_builtin): Ditto.
1069         (frv_expand_int_void2arg): Ditto.
1070         (frv_expand_prefetches): Ditto.
1071         (frv_expand_voidtriop_builtin): Ditto.
1072         (frv_expand_voidaccop_builtin): Ditto.
1073         (frv_expand_load_builtin): Ditto.
1074         (frv_expand_store_builtin): Ditto.
1075         (frv_expand_mdpackh_builtin): Ditto.
1076         (frv_expand_mclracc_builtin): Ditto.
1077         (frv_expand_mrdacc_builtin): Ditto.
1078         (frv_expand_mwtacc_builtin): Ditto.
1079         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
1080         calls for above.
1081
1082 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
1083
1084         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
1085         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
1086         cmpb instruction.
1087         (HAVE_GAS_DFP): Check for assembler support of decimal floating
1088         point instructions.
1089         * configure: Regenerate.
1090         * config.in: Regenerate.
1091         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
1092         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
1093         masks to power6 and power6x and to POWERPC_MASKS.
1094         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
1095         _ARCH_PWR6.
1096         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
1097         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
1098         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
1099         Access PROTOTYPE as variable, not mask.
1100
1101 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
1102
1103         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
1104         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
1105         * combine.c (adjust_for_new_dest): Use it.
1106         * postreload.c (reload_combine): Likewise.
1107
1108 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
1109
1110         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
1111         notes on an insn with multiple sets, even if single_set returns
1112         non-NULL for that insn.
1113
1114 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1115
1116         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
1117         scalbn and scalbln.
1118
1119 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
1120
1121         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
1122         if user didn't pass it.
1123         * config/i386/darwin.h (CC1_SPEC): Likewise.
1124         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
1125         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
1126         -mmacosx-version-min.
1127
1128 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1129             Uros Bizjak  <ubizjak@gmail.com>
1130
1131         * optabs.h (enum optab_index): Add new OTI_scalb.
1132         (scalb_optab): Define corresponding macro.
1133         * optabs.c (init_optabs): Initialize scalb_optab.
1134         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
1135         patterns.
1136         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
1137         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
1138         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
1139         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
1140         flag_unsafe_math_optimizations is set.
1141
1142         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
1143         to implement scalbf, scalb and scalbl built-ins as inline x87
1144         intrinsics.
1145
1146 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1147             DJ Delorie <dj@redhat.com>
1148
1149         PR other/30824
1150         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
1151         (diagnostic_report_diagnostic): ... here, and turn them into real
1152         errors. If warnings are inhibited, no need to do anything.
1153
1154 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
1155
1156         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
1157         better code generation.
1158
1159 2007-02-20  Ben Elliston  <bje@au.ibm.com>
1160
1161         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
1162
1163 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
1164
1165         * config/alpha/alpha.c, config/alpha/alpha.md,
1166         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
1167         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
1168         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
1169         config/arm/lib1funcs.asm: Follow spelling conventions.
1170
1171         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
1172         config/fr30/fr30.md, config/i386/i386.h,
1173         config/iq2000/iq2000.h, config/iq2000/predicates.md,
1174         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
1175         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
1176         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
1177         config/rs6000/altivec.md, config/rs6000/rs6000.c,
1178         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
1179         config/sparc/sparc.c, config/sparc/sparc.h,
1180         config/sparc/sparc.md, config/spu/constraints.md,
1181         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
1182         conventions.
1183
1184 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
1185
1186         PR target/29943
1187         * varasm.c (use_blocks_for_decl_p): Return false for decls with
1188         alias attribute.
1189
1190 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
1191
1192         * doc/invoke.texi (-ftree-lrs): Remove.
1193
1194 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
1195
1196         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
1197         NULL.
1198
1199 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
1200
1201         * config/ia64/ia64.c (ia64_expand_builtin): Use the
1202         new CALL_EXPR_FN macro for retrieving the function
1203         declaration of the input expression.
1204
1205 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1206
1207         * c.opt (Waddress): New.
1208         * common.opt (Walways-true): Delete.
1209         (Wstring-literal-comparison): Delete.
1210         * doc/invoke.texi (Warning Options): Delete -Walways-true and
1211         -Wstring-literal-comparison. Add -Waddress.
1212         (Waddress): New.
1213         (Walways-true): Delete.
1214         (Wstring-literal-comparison): Delete.
1215         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
1216         consistently instead of -Walways-true in example.
1217         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
1218         * c-typeck.c (parser_build_binary_op): Replace
1219         -Wstring-literal-comparison and -Walways-true with -Waddress.
1220         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
1221         with -Waddress.
1222
1223 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
1224
1225         * tree-cfg.c (dump_function_to_file): Be prepared for functions
1226         without DECL_STRUCT_FUNCTION initialized.
1227
1228 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
1229
1230         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
1231         due to calls to functions taking pointers as parameters.
1232
1233 2007-02-19  Richard Henderson  <rth@redhat.com>
1234
1235         PR debug/29558
1236         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
1237         in memory.
1238
1239 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1240
1241         * config/s390/s390.c (s390_call_saved_register_used,
1242         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
1243         accessed to the new scheme.
1244
1245 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1246
1247         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
1248         (cris_print_index, cris_print_operand, cris_print_operand_address)
1249         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
1250         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
1251         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
1252         GET_CODE () == xxx.
1253         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
1254         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
1255         GO_IF_LEGITIMATE_ADDRESS): Ditto.
1256         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
1257         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
1258         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
1259         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
1260         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
1261         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
1262         (uminsi3, call, call_value): Ditto.
1263         (define_split: indir_to_reg_split, unnamed): Ditto.
1264
1265 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
1266
1267         PR tree-optimization/30975
1268         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
1269         wrong assert.
1270
1271 2007-02-18  Eric Christopher  <echristo@gmail.com>
1272
1273         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
1274         Remove use of arglist.
1275         (mips_expand_builtin): Remove use of arglist, pass in expr.
1276         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
1277         (mips_expand_builtin_movtf): Ditto.
1278         (mips_expand_builtin_compare): Ditto.
1279
1280 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
1281
1282         * tree-sra.c (sra_build_assignment): Replace assertion
1283         checking with a comment explaining why it can't be done.
1284
1285 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
1286
1287         PR middle-end/30833
1288         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
1289         during CALL_EXPR representation conversion.
1290         * tree-ssa-propagate.c (set_rhs): Likewise.
1291
1292 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
1293
1294         * tree-sra.c (sra_build_assignment): Disable assertion checking
1295         for now.
1296
1297 2007-02-18  Roger Sayle  <roger@eyesopen.com>
1298
1299         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
1300         instead of calling build2 with a GIMPLE_MODIFY_STMT.
1301         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
1302         Likewise.
1303         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
1304         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
1305         gimplify_init_ctor_eval_range, gimple_push_cleanup,
1306         gimplify_omp_for, gimplify_omp_atomic_pipeline,
1307         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
1308         force_gimple_operand): Likewise.
1309         * ipa-cp.c (constant_val_insert): Likewise.
1310         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
1311         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
1312         perfect_nestify): Likewise.
1313         * langhooks.c (lhd_omp_assignment): Likewise.
1314         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
1315         lower_copyprivate_clauses, lower_send_clauses,
1316         lower_send_shared_vars, expand_parallel_call,
1317         expand_omp_for_generic, expand_omp_for_static_nochunk,
1318         expand_omp_for_static_chunk, expand_omp_sections,
1319         lower_omp_single_copy, lower_omp_for_lastprivate,
1320         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
1321         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
1322         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
1323         Likewise.
1324
1325 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
1326
1327         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
1328         config/sh/sh.md: Follow spelling conventions.
1329
1330         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
1331         config/frv/predicates.md: Follow spelling conventions.
1332
1333         * config/m68k/linux-unwind.h: Fix a comment typo.
1334         * target.h: Follow spelling conventions.
1335
1336 2007-02-18  Roger Sayle  <roger@eyesopen.com>
1337
1338         PR rtl-optimization/28173
1339         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
1340         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
1341         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
1342         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
1343         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
1344
1345 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1346
1347         * builtins.c (fold_builtin_load_exponent): New.
1348         (fold_builtin_2): Use it.
1349
1350 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
1351
1352         PR rtl-optimization/30773
1353         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
1354         if we fail to attach a REG_EQUIV note.
1355
1356 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
1357             Roger Sayle  <roger@eyesopen.com>
1358
1359         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
1360
1361 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
1362
1363         * calls.c (initialize_argument_information): Pass original EXP
1364         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
1365         code to split complex arguments here, as part of initializing the
1366         ARGS array.
1367         (expand_call): Remove code that builds a list of arguments and
1368         inserts implicit arguments into it.  Instead, just count how many
1369         implicit arguments there will be so we can determine the size of
1370         the ARGS array, and let initialize_argument_information do the work.
1371         (split_complex_values): Delete unused function.
1372
1373 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
1374
1375         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
1376
1377 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
1378
1379         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
1380         for arg pointer based indexed addressing.
1381
1382 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
1383
1384         * config/ia64/ia64.h, config/ia64/ia64.md,
1385         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
1386         spelling conventions.
1387
1388 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
1389
1390         * config/m68k/m68k.c (split_di): New.
1391         * config/m68k/m68k-protos.h: Declare split_di.
1392         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
1393           Improve predicate handling and split constant shifts.
1394
1395 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
1396
1397         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
1398         parameter for register bitfield operations, general predicates
1399         cleanup
1400
1401 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
1402
1403         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
1404         * config/m68k/linux-unwind.h: New file.
1405
1406 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
1407
1408         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
1409         config/i386/athlon.md, config/ia64/ia64.md,
1410         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
1411         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
1412         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
1413         tree-ssa-loop-niter.c, tree-vect-analyze.c,
1414         tree-vect-transform.c: Fix comment typos.
1415
1416 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
1417
1418         * sched-deps.c (find_insn_list): Remove.
1419         * sched-int.h: Remove the prototype for find_insn_list.
1420
1421 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
1422
1423         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
1424         to linker.
1425         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
1426         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
1427         darwin_rs6000_override_options.
1428         (C_COMMON_OVERRIDE_OPTIONS): Expect
1429         darwin_macosx_version_min to be non-NULL always.
1430         (TARGET_C99_FUNCTIONS): Likewise.
1431         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
1432         (DARWIN_MINVERSION_SPEC): New.
1433         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
1434         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
1435         to cc1*.
1436         (DARWIN_MINVERSION_SPEC): New.
1437         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
1438         value.
1439         * config/darwin-c.c (darwin_cpp_builtins): Expect
1440         darwin_macosx_version_min to be non-NULL always.
1441
1442         * config/rs6000/rs6000.c: Clean up trailing whitespace.
1443
1444 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
1445
1446         * config/i386/i386.h (x86_use_xchgb): New.
1447         (TARGET_USE_XCHGB): New macro.
1448         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
1449         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
1450         Split after reload into bswaphi for shifts of 8.
1451         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
1452         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
1453         or when optimizing for size.
1454
1455 2007-02-16  Richard Guenther  <rguenther@suse.de>
1456             Christian Bruel  <christian.bruel@st.com>
1457
1458         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
1459         DECLs but prefer SSA_NAMEs over DECLs.
1460
1461 2007-02-16  Richard Guenther  <rguenther@suse.de>
1462
1463         * tree-flow-inline.h (single_imm_use_p): Remove.
1464         (zero_imm_uses_p): Likewise.
1465         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
1466         instead of single_imm_use_p.
1467         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
1468         zero_imm_uses_p.
1469
1470 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1471
1472         PR other/27843
1473         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
1474         nested double- and backquotes.
1475
1476 2007-02-15  Roger Sayle  <roger@eyesopen.com>
1477
1478         PR middle-end/30391
1479         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
1480         should be unreachable.
1481         (build2_stat): Allow construction of MODIFY_EXPR at any time.
1482         For the time being redirect GIMPLE_MODIFY_STMT to the new
1483         (renamed) build_gimple_modify_stmt_stat.
1484         (build2_gimple_stat): Rename to...
1485         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
1486         Always build a GIMPLE_MODIFY_STMT node.
1487         * tree.h (build2_gimple, build2_gimple_stat): Delete.
1488         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
1489         declarations.
1490
1491         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
1492         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
1493         * tree-complex.c (set_component_ssa_name, expand_complex_move,
1494         expand_complex_div_wide): Likewise.
1495         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
1496         * tree-ssa-loop-im.c (schedule_sm): Likewise.
1497         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
1498         * tree-ssa-loop-manip.c (create_iv): Likewise.
1499         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
1500         abs_replacement): Likewise.
1501         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
1502         realify_fake_stores): Likewise.
1503
1504         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
1505         node rather than a GIMPLE_MODIFY_STMT node.
1506         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
1507         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
1508         Likewise.
1509         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
1510         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
1511         GIMPLE_MODIFY_STMT.
1512
1513 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1514
1515         PR middle-end/30433
1516         * fold-const.c (fold_comparison): Add back the
1517         folding of constant complex comparisions.
1518
1519 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1520
1521         PR middle-end/30729
1522         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
1523         effects unknown to this function, return early.
1524
1525 2007-02-15  Ian Lance Taylor  <iant@google.com>
1526
1527         * lower-subreg.c (move_eh_region_note): New static function.
1528         (resolve_simple_move): Call it.
1529         (decompose_multiword_subregs): Track blocks for which we resolve a
1530         simple move which is also a control flow insn.  Pass them to
1531         find_many_sub_basic_blocks.
1532         (pass_lower_subreg): Add TODO_verify_flow.
1533         (pass_lower_subreg2): Likewise.
1534
1535 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
1536             Brooks Moses  <brooks.moses@codesourcery.com>
1537             Lee Millward  <lee.millward@codesourcery.com>
1538
1539         * tree.h (enum tree_code_class): Add tcc_vl_exp.
1540         (VL_EXP_CLASS_P): New.
1541         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
1542         TREE_CODE_LENGTH.
1543         (TREE_OPERAND_CHECK_CODE): Likewise.
1544         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
1545         (TREE_RTL_OPERAND_CHECK): Likewise.
1546         (tree_operand_check_failed): Make second parameter the whole tree
1547         instead of its code.  Fixed callers.
1548         (VL_EXP_CHECK): New.
1549         (TREE_OPERAND_LENGTH): New.
1550         (VL_EXP_OPERAND_LENGTH): New.
1551         (CALL_EXPR_FN): New.
1552         (CALL_EXPR_STATIC_CHAIN): New.
1553         (CALL_EXPR_ARGS): New.
1554         (CALL_EXPR_ARG): New.
1555         (call_expr_nargs): New.
1556         (CALL_EXPR_ARGP): New.
1557         (build_nt_call_list): Declare.
1558         (build_vl_exp_stat): Declare.
1559         (build_vl_exp): New.
1560         (build_call_list): Declare.
1561         (build_call_nary): Declare.
1562         (build_call_valist): Declare.
1563         (build_call_array): Declare.
1564         (call_expr_arg): Declare.
1565         (call_expr_argp): Declare.
1566         (call_expr_arglist): Declare.
1567         (fold_build_call_list): Declare.
1568         (fold_build_call_list_initializer): Declare.
1569         (fold_call_expr): Declare to replace fold_builtin.
1570         (fold_builtin_fputs): Update to agree with modified definition.
1571         (fold_builtin_strcpy): Likewise.
1572         (fold_builtin_strncpy): Likewise.
1573         (fold_builtin_memory_chk): Likewise.
1574         (fold_builtin_stxcpy_chk): Likewise.
1575         (fold_builtin_strncpy_chk): Likewise.
1576         (fold_builtin_next_arg): Likewise.
1577         (fold_build_call_expr): Declare.
1578         (fold_builtin_call_list): Declare.
1579         (fold_builtin_call_valist): Declare.
1580         (build_call_expr): Declare.
1581         (validate_arglist): Update to agree with modified definition.
1582         (tree_operand_length): New.
1583         (call_expr_arg_iterator): New.
1584         (init_call_expr_arg_iterator): New.
1585         (next_call_expr_arg): New.
1586         (first_call_expr_arg): New.
1587         (more_call_expr_args_p): New.
1588         (FOR_EACH_CALL_EXPR_ARG): New.
1589
1590         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
1591         and tcc_gimple_stmt.
1592         (tree_code_size): Update documentation.  Use sizeof (tree) rather
1593         than sizeof (char *).
1594         (tree_size): Likewise.  Add case for tcc_vl_exp.
1595         (tree_node_structure): Add case for tcc_vl_exp.
1596         (contains_placeholder_p): Likewise.
1597         (substitute_in_expr): Likewise.
1598         (substitute_placeholder_in_expr): Likewise.
1599         (stabilize_reference_1): Likewise.
1600         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
1601         to diagnose breakage of this interface for constructing CALL_EXPRs.
1602         (build_nt): Add similar assertion here.
1603         (build_nt_call_list): New.
1604         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
1605         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
1606         TREE_CODE_LENGTH.
1607         (get_callee_fndecl): Use new CALL_EXPR accessors.
1608         (tree_operand_check_failed): Change parameters to pass entire node
1609         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
1610         (process_call_operands): New.
1611         (build_vl_exp_stat): New.
1612         (build_call_list): New.
1613         (build_call_nary): New.
1614         (build_call_valist): New.
1615         (build_call_array): New.
1616         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1617         (call_expr_arglist): New.
1618
1619         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
1620         tcc_vl_exp instead of a fixed-size tcc_expression.
1621
1622         * doc/c-tree.texi (CALL_EXPR): Document new representation and
1623         accessors for CALL_EXPRs.
1624         (AGGR_INIT_EXPR): Likewise.
1625
1626 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
1627             Brooks Moses  <brooks.moses@codesourcery.com>
1628             Lee Millward  <lee.millward@codesourcery.com>
1629
1630         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
1631         (expand_builtin_nonlocal_goto): Change parameter to be entire
1632         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
1633         (expand_builtin_prefetch): Likewise.
1634         (expand_builtin_classify_type): Likewise.
1635         (mathfn_built_in): Return NULL_TREE instead of 0.
1636         (expand_errno_check): Use new CALL_EXPR accessors.
1637         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
1638         Return NULL_RTX instead of 0.
1639         (expand_builtin_mathfn_2): Likewise.
1640         (expand_builtin_mathfn_3): Likewise.
1641         (expand_builtin_interclass_mathfn): Likewise.
1642         (expand_builtin_sincos): Likewise.
1643         (expand_builtin_cexpi): Likewise.
1644         (expand_builtin_int_roundingfn): Likewise.
1645         (expand_builtin_int_roundingfn_2): Likewise.
1646         (expand_builtin_pow): Likewise.
1647         (expand_builtin_powi): Likewise.
1648         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
1649         of arglist, fixing callers appropriately.  Use new CALL_EXPR
1650         accessors and constructors.  Return NULL_RTX instead of 0.
1651         (expand_builtin_strstr): Likewise.
1652         (expand_builtin_strchr): Likewise.
1653         (expand_builtin_strrchr): Likewise.
1654         (expand_builtin_strpbrk): Likewise.
1655         (expand_builtin_memcpy): Likewise.
1656         (expand_builtin_mempcpy): Likewise.
1657         (expand_builtin_mempcpy_args): New.
1658         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
1659         (expand_builtin_memmove_args): New.
1660         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
1661         (expand_movstr): Likewise.
1662         (expand_builtin_strcpy): Likewise.
1663         (expand_builtin_strcpy_args): New.
1664         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
1665         (expand_builtin_strncpy): Likewise.
1666         (expand_builtin_memset): Likewise.
1667         (expand_builtin_memset_args): New.
1668         (expand_builtin_bzero): Similarly to expand_builtin_memset.
1669         (expand_builtin_memcmp): Likewise.
1670         (expand_builtin_strcmp): Likewise.
1671         (expand_builtin_strncmp): Likewise.
1672         (expand_builtin_strcat): Likewise.
1673         (expand_builtin_strncat): Likewise.
1674         (expand_builtin_strspn): Likewise.
1675         (expand_builtin_strcspn): Likewise.
1676         (expand_builtin_args_info): Likewise.
1677         (expand_builtin_va_start): Likewise.
1678         (gimplify_va_arg_expr): Likewise.
1679         (expand_builtin_va_end): Likewise.
1680         (expand_builtin_va_copy): Likewise.
1681         (expand_builtin_frame_address): Likewise.
1682         (expand_builtin_alloca): Likewise.
1683         (expand_builtin_bswap): Likewise.
1684         (expand_builtin_unop): Likewise.
1685         (expand_builtin_fputs): Likewise.
1686         (expand_builtin_expect): Likewise.
1687         (expand_builtin_fabs): Likewise.
1688         (expand_builtin_copysign): Likewise.
1689         (expand_builtin_printf): Likewise.
1690         (expand_builtin_fprintf): Likewise.
1691         (expand_builtin_sprintf): Likewise.
1692         (expand_builtin_init_trampoline): Likewise.
1693         (expand_builtin_signbit): Likewise.
1694         (expand_builtin_fork_or_exec): Likewise.
1695         (expand_builtin_sync_operation): Likewise.
1696         (expand_builtin_compare_and_swap): Likewise.
1697         (expand_builtin_lock_test_and_set): Likewise.
1698         (expand_builtin_lock_release): Likewise.
1699         (expand_builtin): Likewise.
1700         (builtin_mathfn_code): Likewise.
1701
1702         (fold_builtin_constant_p): Pass call arguments individually instead
1703         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
1704         accessors and constructors.  Return NULL_TREE instead of 0.
1705         (fold_builtin_expect): Likewise.
1706         (fold_builtin_classify_type): Likewise.
1707         (fold_builtin_strlen): Likewise.
1708         (fold_builtin_nan): Likewise.
1709         (integer_valued_real_p): Likewise.
1710         (fold_trunc_transparent_mathfn): Likewise.
1711         (fold_fixed_mathfn): Likewise.
1712         (fold_builtin_cabs): Likewise.
1713         (fold_builtin_sqrt): Likewise.
1714         (fold_builtin_cbrt): Likewise.
1715         (fold_builtin_cos): Likewise.
1716         (fold_builtin_cosh): Likewise.
1717         (fold_builtin_tan): Likewise.
1718         (fold_builtin_sincos): Likewise.
1719         (fold_builtin_cexp): Likewise.
1720         (fold_builtin_trunc): Likewise.
1721         (fold_builtin_floor): Likewise.
1722         (fold_builtin_ceil): Likewise.
1723         (fold_builtin_round): Likewise.
1724         (fold_builtin_int_roundingfn): Likewise.
1725         (fold_builtin_bitop): Likewise.
1726         (fold_builtin_bswap): Likewise.
1727         (fold_builtin_logarithm): Likewise.
1728         (fold_builtin_hypot): Likewise.
1729         (fold_builtin_pow): Likewise.
1730         (fold_builtin_powi): Likewise.
1731         (fold_builtin_exponent): Likewise.
1732         (fold_builtin_memset): Likewise.
1733         (fold_builtin_bzero): Likewise.
1734         (fold_builtin_memory_op): Likewise.
1735         (fold_builtin_bcopy): Deleted; call site changed to invoke
1736         fold_builtin_memory_op directly.
1737         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
1738         (fold_builtin_strncpy): Likewise.
1739         (fold_builtin_memcmp): Likewise.
1740         (fold_builtin_strcmp): Likewise.
1741         (fold_builtin_strncmp): Likewise.
1742         (fold_builtin_signbit): Likewise.
1743         (fold_builtin_copysign): Likewise.
1744         (fold_builtin_isascii): Likewise.
1745         (fold_builtin_toascii): Likewise.
1746         (fold_builtin_isdigit): Likewise.
1747         (fold_builtin_fabs): Likewise.
1748         (fold_builtin_abs): Likewise.
1749         (fold_builtin_fmin_fmax): Likewise.
1750         (fold_builtin_carg): Likewise.
1751         (fold_builtin_classify): Likewise.
1752         (fold_builtin_unordered_cmp): Likewise.
1753
1754         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
1755         New functions split out from fold_builtin_1.
1756         (fold_builtin_n): New.
1757         (fold_builtin_varargs): New.
1758         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
1759         instead.
1760         (fold_call_expr): New.
1761         (build_function_call_expr): Rewrite to use new helper function.
1762         (fold_builtin_call_list): New.
1763         (build_call_expr): New.
1764         (fold_builtin_call_valist): New.
1765         (rewrite_call_expr): New.
1766         (validate_arg): New.
1767         (validate_arglist): Change parameter to be entire CALL_EXPR instead
1768         of an arglist.  Change return type to bool.  Use new CALL_EXPR
1769         accessors.
1770
1771         (fold_builtin_strstr):  Pass call arguments individually instead
1772         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
1773         accessors and constructors.  Return NULL_TREE instead of 0.
1774         (fold_builtin_strchr): Likewise.
1775         (fold_builtin_strrchr): Likewise.
1776         (fold_builtin_strpbrk): Likewise.
1777         (fold_builtin_strcat): Likewise.
1778         (fold_builtin_strncat): Likewise.
1779         (fold_builtin_strspn): Likewise.
1780         (fold_builtin_strcspn): Likewise.
1781         (fold_builtin_fputs): Likewise.
1782         (fold_builtin_next_arg): Likewise.
1783         (fold_builtin_sprintf): Likewise.
1784
1785         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
1786         NULL_RTX instead of 0.
1787         (expand_builtin_memory_chk): Likewise.
1788         (maybe_emit_chk_warning): Likewise.
1789         (maybe_emit_sprintf_chk_warning): Likewise.
1790
1791         (fold_builtin_object_size): Pass call arguments individually instead
1792         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
1793         accessors and constructors.  Return NULL_TREE instead of 0.
1794         (fold_builtin_memory_chk): Likewise.
1795         (fold_builtin_stxcpy_chk): Likewise.
1796         (fold_builtin_strncpy_chk): Likewise.
1797         (fold_builtin_strcat_chk): Likewise.
1798         (fold_builtin_strcat_chk): Likewise.
1799         (fold_builtin_strncat_chk): Likewise.
1800         (fold_builtin_sprintf_chk): Likewise.
1801         (fold_builtin_snprintf_chk): Likewise.
1802         (fold_builtin_printf): Likewise.
1803         (fold_builtin_vprintf): Likewise.
1804
1805         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
1806         constructors.
1807         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
1808         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1809         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
1810         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
1811         (fold_unary): Likewise.
1812         (fold_binary): Likewise.
1813         (fold_ternary): Remove CALL_EXPR case, since they are no longer
1814         ternary expressions.
1815         (fold): Add logic for tcc_vl_exp.
1816         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
1817         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1818         (fold_build3_stat): Add assertion to flag broken interface for
1819         constructing CALL_EXPRs.
1820         (fold_build_call_list): New.
1821         (fold_build_call_list_initializer): New.
1822         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
1823         constructors.
1824         (fold_strip_sign_ops): Likewise.
1825
1826 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
1827             Brooks Moses  <brooks.moses@codesourcery.com>
1828             Lee Millward  <lee.millward@codesourcery.com>
1829
1830         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
1831         accessors and dump arguments explicitly.
1832
1833         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
1834         TREE_CODE_LENGTH.
1835         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
1836         explicitly.
1837         (print_call_name): Use new CALL_EXPR accessors.
1838
1839         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
1840         CALL_EXPR arguments explicitly instead of as a list.  Use
1841         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1842
1843         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
1844         (vrp_visit_stmt): Likewise.
1845
1846         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
1847         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
1848         TREE_CODE_LENGTH.
1849         (force_move_till_expr): Likewise.
1850
1851         * targhooks.c (default_external_stack_protect_fail): Use
1852         build_call_expr instead of build_function_call_expr.
1853         (default_hidden_stack_protect_fail): Likewise.
1854
1855         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
1856         build the call.
1857
1858         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
1859         and walk arguments explicitly.
1860
1861         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
1862         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1863         (expand_simple_operations): Likewise.
1864         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
1865
1866         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
1867         of TREE_CODE_LENGTH.
1868         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
1869
1870         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
1871         instead of TREE_CODE_LENGTH.
1872
1873         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
1874         (tree_ic_transform): Likewise.
1875         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
1876         parameter instead of arglist.  Fix callers.
1877         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
1878         (tree_stringops_transform): Likewise.
1879         (tree_indirect_call_to_profile): Likewise.
1880         (tree_stringops_values_to_profile): Likewise.
1881
1882         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
1883         (eliminate_tail_call): Likewise.
1884
1885         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
1886
1887         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
1888         Use TREE_OPERAND_LENGTH and generalize to handle any number of
1889         operands.
1890         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
1891
1892         * omp-low.c (build_omp_barrier): Use build_call_expr.
1893         (lower_rec_input_clauses): Likewise.
1894         (lower_reduction_clauses): Likewise.
1895         (expand_parallel_call): Likewise.
1896         (maybe_catch_exception): Likewise.
1897         (expand_omp_for_generic): Likewise.
1898         (expand_omp_for_static_nochunk): Likewise.
1899         (expand_omp_sections): Likewise.
1900         (lower_omp_single_simple): Likewise.
1901         (lower_omp_single_copy): Likewise.
1902         (lower_omp_master): Likewise.
1903         (lower_omp_ordered): Likewise.
1904         (lower_omp_critical): Likewise.
1905
1906         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
1907         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
1908
1909         * tree-gimple.c (is_gimple_call_addr): Fix doc.
1910         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
1911         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
1912
1913         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
1914         and generalize to handle any number of operands.
1915         (chrec_contains_undetermined): Likewise.
1916         (tree_contains_chrecs): Likewise.
1917         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
1918
1919         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
1920
1921         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
1922         fold_call_expr instead of fold_builtin.
1923         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
1924         match declarations there.
1925         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
1926         updates.
1927
1928         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
1929         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1930
1931         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
1932         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
1933
1934         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
1935         accessors.
1936
1937         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
1938         (execute_cse_sincos): Use new CALL_EXPR accessors.
1939
1940         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
1941
1942         * gimple-low.c (lower_function_body): Use build_call_expr.
1943         (lower_builtin_setjmp): Likewise.
1944
1945         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
1946         (set_storage_via_libcall): Likewise.
1947         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
1948         instead of TREE_CODE_LENGTH.
1949         (expand_expr_real_1): Use new CALL_EXPR accessors.
1950
1951         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
1952         generalize to handle any number of operands.
1953         (TB_parent_eq): Likewise.
1954
1955         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
1956         (strip_builtin_expect): Likewise.
1957
1958         * function.c (gimplify_parameters): Use build_call_expr.
1959
1960         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
1961         instead of TREE_CODE_LENGTH.
1962
1963         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
1964         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
1965
1966         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
1967         iterators.
1968
1969         * gimplify.c (build_stack_save_restore): Use build_call_expr.
1970         (gimplify_decl_expr): Likewise.
1971         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
1972         Use new CALL_EXPR iterators.
1973         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
1974         (gimplify_modify_expr_to_memset): Likewise.
1975         (gimplify_variable_sized_compare): Likewise.
1976         (gimplify_omp_atomic_fetch_op): Likewise.
1977         (gimplify_omp_atomic_pipeline): Likewise.
1978         (gimplify_omp_atomic_mutex): Likewise.
1979         (gimplify_function_tree): Likewise.
1980
1981         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
1982         (call_expr_flags): Likewise.
1983         (expand_call): Likewise.
1984
1985         * except.c (expand_builtin_eh_return_data_regno): Pass entire
1986         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
1987         accessors.
1988
1989         * coverage.c (create_coverage): Use build_call_expr.
1990
1991         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
1992         (temp_call_expr_obstack): New.
1993         (pool_copy_list): Delete.
1994         (temp_copy_call_expr): New.
1995         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
1996         CALL_EXPR accessors.  Get rid of special goo for copying argument
1997         lists and use temp_copy_call_expr instead.
1998         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
1999         CALL_EXPR accessors.
2000         (create_expression_by_pieces): Likewise.  Use build_call_array
2001         to construct the result instead of fold_build3.
2002         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
2003         dealing with argument lists.
2004         (init_pre): Remove references to expression_node_pool and
2005         list_node_pool.  Init temp_call_expr_obstack instead.
2006         (fini_pre): Remove references to expression_node_pool and
2007         list_node_pool.
2008
2009         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
2010         and walk arguments explicitly instead of as a list.
2011
2012         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
2013         (mx_register_decls): Likewise.
2014         (mudflap_register_call): Likewise.
2015         (mudflap_finish_file): Likewise.
2016
2017         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
2018         (ipa_callsite_compute_param): Likewise.
2019
2020         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
2021         accessors and constructor.
2022
2023         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
2024         accessors and constructor.
2025         (convert_tramp_reference): Likewise.
2026         (convert_call_expr): Likewise.
2027         (finalize_nesting_tree_1): Likewise.
2028
2029         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
2030         accessors.
2031
2032         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
2033
2034         * tree-inline.c (initialize_inlined_parameters): Pass entire
2035         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
2036         accessors.
2037         (estimate_num_insns_1): Use new CALL_EXPR accessors.
2038         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
2039
2040         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
2041         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2042         (vectorizable_reduction): Likewise.
2043         (vectorizable_call): Use new CALL_EXPR iterators.
2044         (vectorizable_conversion): Use build_call_expr.
2045         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
2046         (vect_gen_widened_results_half): Use build_call_expr.
2047         (vect_setup_realignment): Likewise.
2048         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
2049
2050         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
2051         (pass_through_call): Likewise.
2052         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
2053         fold_builtin.
2054
2055         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
2056         (tree_gen_pow2_profiler): Likewise.
2057         (tree_gen_one_value_profiler): Likewise.
2058         (tree_gen_ic_func_profiler): Likewise.
2059         (tree_gen_average_profiler): Likewise.
2060         (tree_gen_ior_profiler): Likewise.
2061
2062         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
2063         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
2064         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2065
2066         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
2067         of TREE_CODE_LENGTH.
2068
2069         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
2070         of TREE_CODE_LENGTH.
2071
2072         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
2073         constructor.
2074         (convert_to_integer): Likewise.
2075
2076         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
2077         accessors.
2078
2079 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2080             Brooks Moses  <brooks.moses@codesourcery.com>
2081             Lee Millward  <lee.millward@codesourcery.com>
2082
2083         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
2084         accessors.
2085         * config/frv/frv.c (frv_expand_builtin): Likewise.
2086         * config/s390/s390.c (s390_expand_builtin): Likewise.
2087
2088         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
2089         (sparc_expand_builtin): Use new CALL_EXPR accessors.
2090
2091         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
2092         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
2093         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
2094         (ix86_expand_store_builtin): Likewise.
2095         (ix86_expand_unop_builtin): Likewise.
2096         (ix86_expand_unop1_builtin): Likewise.
2097         (ix86_expand_sse_compare): Likewise.
2098         (ix86_expand_sse_comi): Likewise.
2099         (ix86_expand_vec_init_builtin): Likewise.
2100         (ix86_expand_vec_ext_builtin): Likewise.
2101         (ix86_expand_vec_set_builtin): Likewise.
2102         (ix86_expand_builtin): Use new CALL_EXPR accessors.
2103
2104         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
2105         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
2106
2107         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
2108         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
2109         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
2110
2111         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
2112         build_call_expr.
2113         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
2114         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
2115         arglist.  Use new CALL_EXPR accessors.  Fix callers.
2116         (altivec_expand_abs_builtin): Likewise.
2117         (rs6000_expand_binop_builtin): Likewise.
2118         (altivec_expand_predicate_builtin): Likewise.
2119         (altivec_expand_lv_builtin): Likewise.
2120         (spe_expand_stv_builtin): Likewise.
2121         (altivec_expand_stv_builtin): Likewise.
2122         (rs6000_expand_ternop_builtin): Likewise.
2123         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
2124         (altivec_expand_st_builtin): Likewise.
2125         (altivec_expand_dst_builtin): Likewise.
2126         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
2127         arglist.  Use new CALL_EXPR accessors.  Fix callers.
2128         (altivec_expand_vec_set_builtin): Likewise.
2129         (altivec_expand_vec_ext_builtin): Likewise.
2130         (altivec_expand_builtin): Use new CALL_EXPR accessors.
2131         (spe_expand_builtin): Likewise.
2132         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
2133         arglist.  Use new CALL_EXPR accessors.  Fix callers.
2134         (spe_expand_evsel_builtin): Likewise.
2135         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
2136         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
2137
2138         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
2139         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
2140         (arm_expand_unop_builtin): Likewise.
2141         (arm_expand_builtin): Use new CALL_EXPR accessors.
2142
2143         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
2144         accessors.
2145
2146         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
2147         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
2148         (bfin_expand_unop_builtin): Likewise.
2149         (bfin_expand_builtin): Use new CALL_EXPR accessors.
2150
2151 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2152             Brooks Moses  <brooks.moses@codesourcery.com>
2153             Lee Millward  <lee.millward@codesourcery.com>
2154
2155         * c-semantics.c (build_stmt): Add internal diagnostic check.
2156
2157         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
2158         accessors.  Print arguments explicitly instead of as a list.
2159
2160         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
2161
2162         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
2163         (c_finish_omp_flish): Likewise.
2164
2165         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
2166         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
2167         instead of TREE_CODE_LENGTH.
2168         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
2169         (c_warn_unused_result): Likewise.
2170
2171 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2172
2173         PR c/26494
2174         * doc/invoke.texi (Warning Options): Remove
2175         -Werror-implicit-function-declaration.
2176         (Wimplicit-function-declaration): Update description.
2177         * opts.c (common_handle_option): Move handling of -Werror=* to...
2178         (enable_warning_as_error): ...here.
2179         * opts.h (enable_warning_as_error): Declare.
2180         * c-decl.c (implicit_decl_warning): Unless
2181         -Wno-implicit-function-declaration is given, emit a pedwarn if
2182         -std=c99 or emit a warning if -Wimplicit-function-declaration.
2183         * c.opt (Wimplicit-function-declaration): Replace
2184         mesg_implicit_function_declaration with
2185         warn_implicit_function_declaration.
2186         * c-opts.c (c_common_handle_option):
2187         -Werror-implicit-function-declaration is exactly equal as
2188         -Werror=implicit-function-declaration.
2189         (set_Wimplicit): Replace mesg_implicit_function_declaration with
2190         warn_implicit_function_declaration.
2191         (c_common_post_options): -Wimplict-function-declaration is enabled
2192         by default by -std=c99, otherwise is disabled by default.
2193         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
2194
2195 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
2196
2197         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
2198         DECL on the rhs to a DECL on the lhs for debug info purposes if the
2199         former is ignored but not the latter.
2200
2201 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
2202
2203         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
2204         is made and the reference doesn't use the alias set of its type,
2205         do not create the temporary using that type.
2206
2207 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
2208
2209         * jump.c: Remove prototypes for delete_computation and
2210         delete_prior_computation.
2211
2212 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
2213
2214         * jump.c (get_label_after): Delete.
2215         (get_label_before, delete_computation, delete_jump,
2216         delete_prior_computation, follow_jumps): Move...
2217         * reorg.c (delete_computation, delete_prior_computation): ... here...
2218         (get_label_before, delete_jump): ... making these static ...
2219         (follow_jumps): ... and simplifying this since it only runs after
2220         reload.
2221         * rtl.h (get_label_after, get_label_before, delete_jump,
2222         follow_jumps): Delete prototypes.
2223
2224 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
2225
2226         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
2227
2228 2007-02-15  Nick Clifton  <nickc@redhat.com>
2229
2230         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
2231         order to prevent it from being munged by the target.
2232
2233 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
2234
2235         * config/i386/i386.md: Remove misleading comment.
2236
2237 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
2238
2239         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
2240         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
2241         invalid patterns.
2242
2243 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
2244
2245         * tree-sra.c (instantiate_missing_elements): Canonicalize
2246         bit-field types.
2247         (sra_build_assignment): New.
2248         (generate_copy_inout, generate_element_copy,
2249         generate_element_zero, generate_one_element_init): Use it.
2250
2251 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
2252
2253         * tree-sra.c (instantiate_missing_elements): Canonicalize
2254         bit-field types.
2255         (sra_build_assignment): New.
2256         (generate_copy_inout, generate_element_copy,
2257         generate_element_zero, generate_one_element_init): Use it.
2258
2259 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
2260
2261         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
2262         limbo die nodes.
2263
2264 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
2265
2266         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
2267         types as aggregates not scalars.
2268         * function.c (assign_stack_temp_for_type): Likewise.
2269
2270 2007-02-14  Roger Sayle  <roger@eyesopen.com>
2271             Zdenek Dvorak  <dvorakz@suse.cz>
2272
2273         * tree-dump.c (dump_switch_p_1): Require exact match of the option
2274         name.
2275
2276 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
2277
2278         * passes.c (next_pass_1): Clear the next field of the copied
2279         pass structure.
2280
2281 2007-02-14  Richard Henderson  <rth@redhat.com>
2282
2283         * tree-sra.c (early_sra): New.
2284         (decl_can_be_decomposed_p): Deny va_list if early_sra.
2285         (tree_sra_early, pass_sra_early): New.
2286         * tree-pass.h (pass_sra_early): Declare.
2287         * passes.c (init_optimization_passes): Use it.
2288
2289 2007-02-14  Richard Guenther  <rguenther@suse.de>
2290
2291         * flags.h (issue_strict_overflow_warning): Convert to a macro.
2292
2293 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
2294
2295          PR tree-optimization/30771
2296         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
2297         also phi nodes.
2298         (vect_analyze_operations): Induction phis can now be marked as
2299         used_in_loop.
2300         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
2301         Update documentation accordingly.
2302
2303 2007-02-14  Nick Clifton  <nickc@redhat.com>
2304
2305         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
2306         most 3 arguments are supported.
2307         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
2308
2309 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
2310
2311         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
2312         Ensure dst->current is valid.
2313
2314 2007-02-13  Paul Brook  <paul@codesourcery.com>
2315
2316         * config.gcc: Add arm*-*-uclinux-*eabi.
2317         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
2318         (SUBTARGET_EXTRA_LINK_SPEC): Define.
2319         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
2320         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
2321         (LINK_SPEC): Define.
2322         (LIB_SPEC): Define.
2323         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
2324         register.
2325         * config/arm/uclinux-eabi.h: New file.
2326         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
2327         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
2328         based targets.
2329
2330 2007-02-13  Ian Lance Taylor  <iant@google.com>
2331
2332         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
2333         * flags.h (warn_strict_overflow): Declare.
2334         (enum warn_strict_overflow_code): Define.
2335         (issue_strict_overflow_warning): New static inline function.
2336         * opts.c (warn_strict_overflow): New variable.
2337         (common_handle_option): Handle OPT_Wstrict_overflow and
2338         OPT_Wstrict_overflow_.
2339         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
2340         OPT_Wall.
2341         * fold-const.c: Include intl.h.
2342         (fold_deferring_overflow_warnings): New static variable.
2343         (fold_deferred_overflow_warning): New static variable.
2344         (fold_deferred_overflow_code): New static variable.
2345         (fold_defer_overflow_warnings): New function.
2346         (fold_undefer_overflow_warnings): New function.
2347         (fold_undefer_and_ignore_overflow_warnings): New function.
2348         (fold_deferring_overflow_warnings_p): New function.
2349         (fold_overflow_warning): New static function.
2350         (make_range): Add strict_overflow_p parameter.  Change all
2351         callers.
2352         (extract_muldiv, extract_muldiv_1): Likewise.
2353         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
2354         tree_expr_nonnegative_p.
2355         (fold_negate_expr): Call fold_overflow_warning.
2356         (fold_range_test): Likewise.
2357         (fold_comparison): Likewise.
2358         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
2359         instead of tree_expr_nonnegative_p.
2360         (tree_expr_nonnegative_warnv_p): Rename from
2361         tree_expr_nonnegative_p, add strict_overflow_p parameter.
2362         (tree_expr_nonnegative_p): New function.
2363         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
2364         strict_overflow_p parameter.
2365         (tree_expr_nonzero_p): New function.
2366         * passes.c (verify_interpass_invariants): New static function.
2367         (execute_one_pass): Call it.
2368         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
2369         warnings.
2370         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
2371         (estimate_numbers_of_iterations): Likewise.
2372         (scev_probably_wraps_p): Likewise.
2373         * tree-ssa-ccp.c: Include "toplev.h".
2374         (evaluate_stmt): Defer fold overflow warnings until we know we are
2375         going to optimize.
2376         (struct fold_stmt_r_data): Add stmt field.
2377         (fold_stmt_r): Defer fold overflow warnings until we know we
2378         optimized.
2379         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
2380         (fold_stmt_inplace): Likewise.
2381         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
2382         (cleanup_control_expr_graph): Defer fold overflow warnings until
2383         we know we are going to optimize.
2384         * tree-cfg.c (fold_cond_expr_cond): Likewise.
2385         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
2386         Likewise.
2387         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
2388         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
2389         * tree-ssa-loop-manip.c (create_iv): Likewise.
2390         * c-typeck.c (build_conditional_expr): Likewise.
2391         (build_binary_op): Likewise.
2392         * tree-vrp.c (vrp_expr_computes_nonzero): Call
2393         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
2394         (extract_range_from_unary_expr): Likewise.
2395         * simplify-rtx.c (simplify_const_relational_operation): Warn when
2396         assuming that signed overflow does not occur.
2397         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
2398         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
2399         (fold_defer_overflow_warnings): Declare.
2400         (fold_undefer_overflow_warnings): Declare.
2401         (fold_undefer_and_ignore_overflow_warnings): Declare.
2402         (fold_deferring_overflow_warnings_p): Declare.
2403         (tree_expr_nonzero_warnv_p): Declare.
2404         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
2405         of warning options.
2406         (Warning Options): Document -Wstrict-overflow.
2407         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
2408         (tree-ssa-ccp.o): Likewise.
2409         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
2410         (fold-const.o): Depend on intl.h.
2411
2412 2007-02-13  Ian Lance Taylor  <iant@google.com>
2413
2414         PR middle-end/30751
2415         * lower-subreg.c (resolve_simple_move): Decompose subregs in
2416         addresses.
2417
2418 2007-02-13  Stuart Hastings  <stuart@apple.com>
2419
2420         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
2421
2422 2007-02-13  Richard Henderson  <rth@redhat.com>
2423
2424         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
2425         handled_component_p before looking for the indirect_ref.
2426
2427 2007-02-13  Richard Henderson  <rth@redhat.com>
2428
2429         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
2430         remove flags clobber.
2431         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
2432         (bswaphi_lowpart): New.
2433         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
2434         remove TARGET_BSWAP test.  Delete expander of the same name.
2435
2436         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
2437         (expand_unop): Use them.
2438
2439 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
2440
2441         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
2442         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
2443         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
2444         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
2445         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
2446         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
2447         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
2448         assembler dialect choice from asm templates.
2449
2450 2007-02-12  Richard Henderson  <rth@redhat.com>
2451
2452         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
2453         (fixuns_trunc<SSEMODEF>si2): Use it.
2454         * config/i386/sse.md (vec_setv4sf_0): Export.
2455         * config/i386/i386.c (ix86_build_const_vector): Export.
2456         (ix86_split_convert_uns_si_sse): Rename from
2457         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
2458         * config/i386/i386-protos.h: Update.
2459
2460 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2461
2462         PR c/29521
2463         * c-typeck.c (c_finish_return): Improve warning message.
2464
2465 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2466
2467         * alias.c (find_symbolic_term): Delete unused function.
2468
2469 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
2470
2471         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
2472         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
2473         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
2474
2475 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
2476
2477         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
2478         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
2479         the function, temporarily point the debug interface to the null one.
2480
2481 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
2482
2483         * dwarf2out.c (round_up_to_align): New static function.
2484         (field_byte_offset): Use it to round the offset.
2485
2486 2007-02-12  Richard Henderson  <rth@redhat.com>
2487
2488         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
2489         (inswl_const): Export.
2490
2491 2007-02-12  Richard Henderson  <rth@redhat.com>
2492
2493         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
2494         result mode of the libcall, convert back to outmode.
2495
2496 2007-02-12  Roger Sayle  <roger@eyesopen.com>
2497
2498         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
2499         (bswapdi2): New define_expand to implement 32-bit implementation.
2500
2501 2007-02-12  Nick Clifton  <nickc@redhat.com>
2502
2503         * doc/invoke.texi (Overall Options): Document --help=.
2504         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
2505         (cc1_options): Pass --help= on to cc1.
2506         (display_help): Add description of --help=.
2507         (process_command): Add code to handle --help=.  Allow translated
2508         --help and --target-help switches to be passed on to compiler
2509         sub-process.
2510         (main): Remove unused if statement.
2511         * opts.c (columns): Remove.
2512         (LEFT_COLUMN): Define.
2513         (wrap_help): Add columns argument.
2514         (print_filtered_help): Change parameters to be an include bitmask,
2515         an exclude bitmask, an any bitmask and the column width.  Move the
2516         code to display the params list here.  Add code to display the
2517         status of options rather than their descriptions if the quiet flag
2518         is not active.
2519         (print_specific_help): Change parameters to be an include bitmask,
2520         an exclude bitmask and an any bitmask.  Move code to look up the
2521         column width here.  Decide upon the title for an options listing.
2522         (common_handle_options): Add code to handle --help=.  Adapt code
2523         for --help and --target-help to use the revised form of the
2524         print_specific_help function.
2525         (print_help): Delete.
2526         (print_param_help): Delete.
2527         (print_switch): Delete.
2528         * opts.h (cl_lang_count): Add prototype.
2529         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
2530         CL_MAX_OPTION_CLASS): New defines.
2531         * optc-gen.awk: Add construction of cl_lang_count.
2532         * c.opt: Add Warning attribute to warning options and Optimization
2533         attribute to optimization options.
2534         * common.opt: Likewise.
2535         Add --help=.
2536         Add -fhelp and -ftarget-help as aliases for the transformed --help
2537         and --target-help options.
2538         * opt-functions.awk: Add code to handle Warning and Optimization
2539         attributes.
2540
2541 2007-02-12  Richard Henderson  <rth@redhat.com>
2542
2543         * config/alpha/constraints.md: New file.
2544         * config/alpha/alpha.c: Include tm-constrs.h.
2545         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
2546         alpha_extra_constraint): Remove.
2547         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
2548         * config/alpha/alpha-protos.h: Update.
2549         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
2550         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
2551         (EXTRA_CONSTRAINT): Remove.
2552         * config/alpha/alpha.md: Include constraints.md.
2553         (adddi splitter): Use satisfies_constraint_*.
2554         * config/alpha/predicates.md (add_operand): Likewise.
2555         (sext_add_operand, addition_operation): Likewise.
2556
2557 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
2558
2559         PR tree-optimization/29145
2560         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
2561         in our handling of restrict qualified pointers.
2562
2563 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2564
2565         PR middle-end/7651
2566         * doc/invoke.texi (Wunused-value): Update description.
2567         (Wextra): Delete item.
2568         * opts.c (set_Wextra): Don't use the value of Wextra to set the
2569         value of Wunused-value.
2570         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
2571         (c_finish_stmt_expr): Don't check extra_warnings.
2572         (emit_side_effect_warnings): The caller is responsible to check
2573         warn_unused_value.
2574
2575 2007-02-11  Roger Sayle  <roger@eyesopen.com>
2576             Matt Thomas  <matt@3am-software.com>
2577
2578         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
2579
2580 2007-02-11  Roger Sayle  <roger@eyesopen.com>
2581
2582         * simplify-rtx.c (simplify_relational_operation_1): Optimize
2583         comparisons of POPCOUNT against zero.
2584         (simplify_const_relational_operation): Likewise.
2585
2586 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2587
2588         * doc/invoke.texi (Wextra): Delete outdated paragraph.
2589
2590 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2591
2592         * dwarf2out.c (root_type): Delete unused function.
2593
2594 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2595
2596         * genattrtab.c (contained_in_p): Delete unused function.
2597         (write_expr_attr_cache): Likewise.
2598
2599 2007-02-11  Jan Hubicka  <jh@suse.cz>
2600
2601         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
2602         previous patch.
2603
2604 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
2605
2606         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
2607         to add the REG_EQ* note.
2608         * see.c (see_merge_one_use_extension): Likewise.
2609         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
2610         turn REG_EQUAL notes into REG_EQUIV notes if the target
2611         register may have more than one set.
2612         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
2613         * gcse.c (try_replace_reg): Likewise.
2614         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
2615         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
2616         more than one REG_EQUIV note.
2617         * reload1.c (gen_reload): Use set_unique_reg_note.
2618
2619 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
2620
2621         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
2622         (ix86_builtin_conversion): New function.
2623
2624 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
2625
2626         PR target/29487
2627         * tree.h (DECL_REPLACEABLE_P): New macro.
2628         * except.c (set_nothrow_function_flags): Likewise.
2629
2630 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
2631             Ira Rosen  <irar@il.ibm.com>
2632             Dorit Nuzman  <dorit@il.ibm.com>
2633
2634         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
2635         * targhooks.c (default_builtin_vectorized_conversion): New.
2636         * targhooks.h (default_builtin_vectorized_function): New declaration.
2637         * target.h (struct vectorize): Add builtin_conversion field.
2638         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
2639         stmt_vec_info_type value.
2640         (vectorizable_conversion): New declaration.
2641         * tree-vect-analyze.c (vect_analyze_operations): Add
2642         vectorizable_conversion call.
2643         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
2644         * tree-vect-transform.c (vectorizable_conversion): New function.
2645         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
2646         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
2647         mode.
2648         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
2649         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
2650         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
2651         or ALTIVEC_BUILTIN_VCFSX.
2652
2653 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2654
2655         PR target/30634
2656         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
2657         CONST_DOUBLE and operand 0 is a hard register.
2658         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
2659         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
2660         is a hard floating-point register.
2661
2662 2007-02-10  Richard Henderson  <rth@redhat.com>
2663             Jakub Jelinek  <jakub@redhat.com>
2664             Alexandre Oliva  <aoliva@redhat.com>
2665
2666         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
2667         * builtin-types.def (BT_WORD): Make unsigned.
2668         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
2669         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
2670         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
2671         * c-decl.c (grokdeclarator): Don't error if !have_tls.
2672         * c-parser.c (c_parser_omp_threadprivate): Likewise.
2673         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
2674         emulated tls.
2675         * expr.c (emutls_var_address): New.
2676         (expand_expr_real_1): Expand emulated tls.
2677         (expand_expr_addr_expr_1): Likewise.
2678         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
2679         * output.h (emutls_finish): Declare.
2680         * toplev.c (compile_file): Call it.
2681         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
2682         address before wrapping in CONST.
2683         * varasm.c (emutls_htab, emutls_object_type): New.
2684         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
2685         (get_emutls_object_name, get_emutls_object_type): New.
2686         (get_emutls_init_templ_addr, emutls_decl): New.
2687         (emutls_common_1, emutls_finish): New.
2688         (assemble_variable): When emulating tls, swap decls; generate
2689         constructor for the emutls objects.
2690         (do_assemble_alias): When emulating tls, swap decl and target name.
2691         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
2692         for emulated tls.
2693         * varpool.c (decide_is_variable_needed): Look at force_output.
2694         Recurse for emulated tls.
2695         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
2696         with decide_is_variable_needed.
2697         * emutls.c: New file.
2698         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
2699         tls_object for real tls.
2700
2701 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2702
2703         PR rtl-optimization/29599
2704         * reload1.c (eliminate_regs_in_insn): Take the destination
2705         mode into account when computing the offset.
2706
2707 2007-02-09  Stuart Hastings  <stuart@apple.com>
2708             Richard Henderson  <rth@redhat.com>
2709
2710         * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
2711         * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
2712         * gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
2713         fixuns_truncdfhi2): New.
2714         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
2715         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
2716         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
2717         (floatunssidf2): Allow nonimmediate source.
2718         * gcc/config/i386/sse.md (movdi_to_sse): New.
2719         (vec_concatv2di): Drop '*'.
2720         * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
2721         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
2722         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
2723         New.
2724         * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
2725         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
2726         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
2727         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
2728         (ix86_build_signbit_mask): Fix decl of v, refactor to call
2729         ix86_build_const_vector.
2730         (x86_emit_floatuns): Rewrite.
2731
2732 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2733
2734         * genautomata.c (longest_path_length): Delete unused function.
2735         (struct state): Delete unused longest_path_length.
2736         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
2737         (get_free_state): Delete unused.
2738
2739 2007-02-09  Jan Hubicka  <jh@suse.cz>
2740
2741         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
2742         * doc/invoke.texi (inline-unit-growth): Update default value.
2743
2744         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
2745         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
2746         (rebuild_cgraph_edges): Likewise.
2747         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
2748         (dump_cgraph_node): Dump frequencies.
2749         (cgraph_clone_edge): Add frequency scales.
2750         (cgraph_clone_node): Add freuqnecy.
2751         * cgraph.h (cgraph_edge): Add freuqnecy argument.
2752         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
2753         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
2754         * tree-pass.h (TODO_rebuild_frequencies): New constant.
2755         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
2756         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
2757         (save_inline_function_body): Likewise.
2758         * ipa-inline.c: inluce rtl.h
2759         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
2760         (cgraph_edge_badness): Use frequencies.
2761         (cgraph_decide_recursive_inlining): Update clonning.
2762         (cgraph_decide_inlining_of_small_function): Dump frequency.
2763         * predict.c (estimate_bb_frequencies): Export.
2764         * predict.h (estimate_bb_frequencies): Declare.
2765         * tree-inline.c (copy_bb): Watch overflows.
2766         (expand_call_inline): Update call of cgraph_create_edge.
2767         (optimize_inline_calls): Use TODO flags to update frequnecies.
2768         * passes.h: Include predict.h
2769         (init_optimization_passes): Move profile ahead.
2770         (execute_function_todo): Handle TODO_rebuild_frequencies.
2771
2772 2007-02-09  Roger Sayle  <roger@eyesopen.com>
2773
2774         * config/alpha/alpha.c (emit_insxl): Force the first operand of
2775         the insbl or inswl pattern into a register.
2776
2777 2007-02-09  Roger Sayle  <roger@eyesopen.com>
2778
2779         * config/ia64/ia64.md (bswapdi2): New define_insn.
2780
2781 2007-02-09  Richard Henderson  <rth@redhat.com>
2782
2783         * config/i386/constraints.md (Ym): New constraint.
2784         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
2785         (movdi_1_rex64): Split sse and xmm general register moves from
2786         memory move alternatives.  Use conditional register constraints.
2787         (movsf_1, movdf_integer): Likewise.
2788         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
2789         (movdf_integer_rex64): New.
2790         (pushsf_rex64): Fix output constraints.
2791         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
2792         (sse2_stored): Likewise.
2793         (sse2_storeq_rex64): New.
2794         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
2795         amd and not generic.
2796         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
2797         for optimize_size.  Remove SF/DFmode hack.
2798
2799 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2800
2801         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
2802         (bit_SSE4a): New.
2803
2804 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
2805             Richard Sandiford  <richard@codesourcery.com>
2806
2807         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
2808         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
2809         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
2810         m68k/t-mlib to tmake_file.
2811         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
2812         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
2813         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
2814         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
2815         variable is not empty, add t-$m68k_arch_family to tmake_file.
2816         Add t-mlibs to tmake_file.
2817         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
2818         * config/m68k/t-cf: New file.
2819         * config/m68k/t-m68k: Likewise.
2820         * config/m68k/t-mlibs: Likewise.
2821         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
2822         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
2823         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
2824         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
2825         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
2826         Delete.
2827         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
2828         (INSTALL_LIBGCC): Delete.
2829         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
2830         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
2831         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
2832         (M68K_MLIB_CPU): Define.
2833         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
2834         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
2835         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
2836
2837 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
2838             Richard Guenther  <rguenther@suse.de>
2839
2840         PR middle-end/23361
2841         * fold-const.c (fold_comparison): Handle obfuscated comparisons
2842         against INT_MIN/INT_MAX.
2843         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
2844         file if a loop is removed.
2845
2846 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
2847
2848         * calls.c (store_one_arg): Pass correct alignment to
2849         emit_push_insn for non-BLKmode values.
2850         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
2851         unaligned stack slot via a suitably aligned slot.
2852
2853 2007-02-08  DJ Delorie  <dj@redhat.com>
2854
2855         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
2856         warnings.
2857         (legal_subregs): Use unsigned char, make const.
2858         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
2859
2860 2007-02-08  Paul Brook  <paul@codesourcery.com>
2861
2862         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
2863         special interworking needed.
2864
2865 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
2866
2867         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
2868         conditional to __SSE2__.
2869         (Entries below should have been added to first ChangeLog
2870         entry for amdfam10 dated 2007-02-05)
2871         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
2872         defined.
2873         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
2874         defined.
2875         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
2876         defined.
2877
2878 2007-02-08  DJ Delorie  <dj@redhat.com>
2879
2880         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
2881         * config/m32c/m32c.c (legal_subregs): New.
2882         (m32c_illegal_subreg_p): New.
2883         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
2884         unsupported subregs of hard regs.
2885
2886 2007-02-08  Jan Hubicka  <jh@suse.cz>
2887
2888         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
2889         the same one; always update histograms.
2890
2891 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
2892
2893         * passes.c (init_optimization_passes): Tidy comment.
2894
2895 2007-02-08  Roger Sayle  <roger@eyesopen.com>
2896
2897         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
2898         strip zero_extend, bswap and rotates from POCOUNT's argument.
2899         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
2900         zero_extend and rotates from PARITY's argument.
2901         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
2902         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
2903         of an integer constant at compile-time.
2904
2905 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
2906
2907         PR 30562
2908         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
2909         Update all users.
2910         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
2911         users.
2912         (init_alias_info):
2913         * tree-ssa-live.c (remove_unused_locals): Do not remove
2914         TREE_ADDRESSABLE variables.
2915         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
2916         * tree-ssa-operands.c (add_virtual_operand): Remove argument
2917         FOR_CLOBBER.  Update all users.
2918         If VAR has an associated alias set, add a virtual operand for
2919         it if no alias is found to conflict with the memory reference.
2920
2921 2007-02-07  Jan Hubicka  <jh@suse.cz>
2922             Robert Kidd <rkidd@crhc.uiuc.edu>
2923
2924         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
2925
2926 2007-02-07  Ian Lance Taylor  <iant@google.com>
2927
2928         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
2929
2930 2007-02-07  Roger Sayle  <roger@eyesopen.com>
2931
2932         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
2933         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
2934         tablejumpdi, movsi_to_cr_one): Remove constraints from
2935         define_expand's match_operands.
2936
2937 2007-02-07  Roger Sayle  <roger@eyesopen.com>
2938
2939         * global.c (compute_regsets): Move declatation of "i" inside of
2940         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
2941
2942 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
2943
2944         PR c++/30703
2945         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
2946         of INDIRECT_REF <RESULT_DECL>.
2947
2948         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
2949
2950 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
2951             Kaz Kojima  <kkojima@gcc.gnu.org>
2952
2953         PR target/29746
2954         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
2955         properly.
2956         (sh_initialize_trampoline): Add parentheses to avoid a warning.
2957
2958 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
2959
2960         * doc/loop.texi: Document possibility not to perform disambiguation
2961         of loops with multiple latches.
2962         * cfgloopmanip.c (alp_enum_p): Removed.
2963         (add_loop): Handle subloops.  Use get_loop_body_with_size.
2964         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
2965         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
2966         the new forwarder block.
2967         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
2968         Handle the case latch is NULL.
2969         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
2970         when marking loop exits.
2971         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
2972         be modified.
2973         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
2974         disambiguate_loops_with_multiple_latches.
2975         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
2976         before fix_loop_structure.
2977         * cfgloop.c: Include pointer-set.h and output.h.
2978         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
2979         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
2980         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
2981         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
2982         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
2983         disambiguate_multiple_latches, get_loop_body_with_size,
2984         disambiguate_loops_with_multiple_latches): New functions.
2985         (flow_loop_dump): Dump multiple latch edges.
2986         (flow_loop_nodes_find): Handle loops with multiple latches.
2987         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
2988         (glb_enum_p): Modified.
2989         (get_loop_body): Use get_loop_body_with_size.
2990         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
2991         (AVOID_CFG_MODIFICATIONS): New constant.
2992         (disambiguate_loops_with_multiple_latches, add_loop,
2993         get_loop_body_with_size): Declare.
2994         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
2995
2996 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
2997
2998         PR inline-asm/28686
2999         * global.c (compute_regsets): New function.
3000         (global_alloc): Refactored ELIMINABLE_REGSET
3001         and NO_GLOBAL_ALLOC_REGS computation out.
3002         (rest_of_handle_global_alloc): Call compute_regsets()
3003         for non-optimizing case.
3004
3005 2007-02-06  Richard Henderson  <rth@redhat.com>
3006
3007         * config/i386/constraints.md (Y2): Rename from Y.
3008         (Yi): New constraint.
3009         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
3010         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
3011         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
3012         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
3013         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
3014         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
3015         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
3016         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
3017         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
3018         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
3019         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
3020         vec_extractv2si_1): Change Y constraints to Y2.
3021         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
3022         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
3023         Change Y constraints to Y2.
3024         (sse2_loadld): Change Y constraints to x.
3025
3026 2007-02-06  Roger Sayle  <roger@eyesopen.com>
3027
3028         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
3029         (parity<mode>2): New define_expand using rs6000_emit_parity.
3030         * config/rs6000/rs6000.c (rs6000_emit_popcount,
3031         rs6000_emit_parity): New functions.
3032         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
3033         rs6000_emit_parity): Prototype here.
3034
3035 2007-02-06  Ian Lance Taylor  <iant@google.com>
3036
3037         * lower-subreg.c (simple_move_operand): Reject CONST.
3038         (resolve_clobber): Call validate_change rather than directly
3039         assigning to XEXP (pat, 0).
3040
3041 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
3042
3043         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
3044         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
3045         (tree-cfg.o): Remove hashtab.h dependency.
3046
3047         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
3048         (struct ivopts_data): Change niters to pointer_map_t.
3049         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
3050         (niter_for_exit): Create pointer_map on demand.  Change for
3051         pointer_map API.
3052         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
3053         (free_loop_data): Destroy data->niters if created and reset field.
3054         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
3055         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
3056
3057         * tree-ssa-reassoc.c: Include pointer-set.h.
3058         (bb_rank): Change to long *.
3059         (operand_rank): Change to pointer_map_t.
3060         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
3061         (insert_operand_rank): Accept long.
3062         (operand_entry_hash, operand_entry_eq): Remove.
3063         (get_rank): Return long.  Adjust for changes above.
3064         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
3065         and operand_rank.
3066         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
3067
3068         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
3069         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
3070         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
3071         is not NULL.
3072         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
3073         directly since it cannot be NULL.
3074         (get_vi_for_tree): Rewrite for pointer_map API.
3075         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
3076         (init_alias_vars): Create vi_for_tree as pointer_map.
3077         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
3078
3079         * tree-cfg.c: Don't include hashtab.h.
3080         (edge_to_cases): Declare as pointer_map.
3081         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
3082         Delete.
3083         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
3084         (start_recording_case_labels): Create edge_to_cases as pointer_map.
3085         (end_recoding_case_labels): Cleanup edge_to_cases manually before
3086         destroying it.
3087         (record_switch_edge): Delete.
3088         (get_cases_for_edge): Adjust for pointer_map API, inline
3089         record_switch_edge (rewritten for new API), remove goto.
3090
3091 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
3092
3093         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
3094         * tree-nested.c: Include pointer-set.h.
3095         (var_map_elt, var_map_eq, var_map_hash): Delete.
3096         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
3097         to pointer_map_t's.
3098         (nesting_info_bitmap_obstack): New.
3099         (lookup_field_for_decl): Adjust for pointer_map API.
3100         (lookup_tramp_for_decl): Adjust for pointer_map API.
3101         (get_nonlocal_debug_decl): Adjust for pointer_map API.
3102         (get_local_debug_decl): Adjust for pointer_map API.
3103         (convert_nl_goto_reference): Adjust for pointer_map API.
3104         (convert_nl_goto_receiver): Adjust for pointer_map API.
3105         (create_nesting_tree): Create outside GGC space.  Create bitmap on
3106         the new obstack.  Create field_map and var_map as pointer_maps.
3107         (free_nesting_tree): Adjust for changes to create_nesting_tree.
3108         (root): Delete.
3109         (lower_nested_functions): Move root here, no need to NULL it.
3110         Initialize and release the obstack.
3111
3112 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
3113
3114         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
3115         Remove prototypes and make them non-static.
3116         (struct tree_int_map): Remove.
3117         * tree.h (struct tree_int_map): Move here, turning TO into an
3118         unsigned int.
3119         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
3120
3121         * tree.h (TREE_COMPLEXITY): Remove.
3122         (struct tree_exp): Remove complexity field.
3123         * tree.c (build1_stat): Don't set it.
3124
3125 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
3126             Victor Kaplansky  <victork@il.ibm.com>
3127
3128         * tree-vectorizer.c (vect_is_simple_use): Support induction.
3129         (vect_is_simple_reduction): Support reduction with induction as
3130         one of the operands.
3131         (vect_is_simple_iv_evolution): Fix formatting.
3132         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
3133         formatting.  Don't mark induction phis for vectorization.
3134         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
3135         * tree-vect-transform.c (get_initial_def_for_induction): New function.
3136         (vect_get_vec_def_for_operand): Support induction.
3137         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
3138         induction case.
3139         (vectorizable_reduction): Support reduction with induction as one of
3140         the operands.
3141         (vectorizable_type_demotion): Use def-type of stmt argument rather
3142         than dummy def-type.
3143
3144         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
3145         flag_tree_scev_cprop.
3146         * common.opt (tree-scev-cprop): New flag.
3147
3148         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
3149         call to vect_get_new_vect_var.
3150
3151 2007-02-06  Ira Rosen  <irar@il.ibm.com>
3152
3153         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
3154         vectype is not NULL.
3155         (vect_pattern_recog_1): Likewise.
3156
3157 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3158
3159         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
3160         (fold_negate_expr): Likewise.
3161
3162 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
3163
3164         PR debug/30189
3165         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
3166         even if cv-qualification is the same.
3167
3168 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
3169
3170         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
3171         __enable_execute_stack on completion.
3172
3173 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3174
3175         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
3176         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
3177         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
3178         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
3179         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
3180         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
3181         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
3182         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
3183
3184 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3185
3186         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
3187         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
3188         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
3189         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
3190         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
3191         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
3192         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
3193         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
3194         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
3195         umuldi3_highpart_rex64, umulsi3_highpart_insn,
3196         umulsi3_highpart_zext, smuldi3_highpart_rex64,
3197         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
3198         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
3199         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
3200         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
3201         sqrtextenddfxf2_i387): Added amdfam10_decode.
3202
3203         * config/i386/athlon.md (athlon_idirect_amdfam10,
3204         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
3205         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
3206         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
3207         athlon_ivector_store_amdfam10): New define_insn_reservation.
3208         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
3209         amdfam10.
3210
3211 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3212
3213         * config/i386/athlon.md (athlon_call_amdfam10,
3214         athlon_pop_amdfam10, athlon_lea_amdfam10): New
3215         define_insn_reservation.
3216         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
3217         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
3218         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
3219
3220 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3221
3222         * config/i386/athlon.md (athlon_sseld_amdfam10,
3223         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
3224         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
3225
3226 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3227
3228         * config/i386/athlon.md (athlon_sseins_amdfam10): New
3229         define_insn_reservation.
3230         * config/i386/i386.md (sseins): Added sseins to define_attr type
3231         and define_attr unit.
3232         * config/i386/sse.md: Set type attribute to sseins for insertq
3233         and insertqi.
3234
3235 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3236
3237         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
3238         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
3239         ssecomi_load_amdfam10, ssecomi_amdfam10,
3240         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
3241         define_insn_reservation.
3242         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
3243
3244 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3245
3246         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
3247         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
3248         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
3249         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
3250         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
3251         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
3252         define_insn_reservation.
3253
3254         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
3255         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
3256         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
3257         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
3258         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
3259
3260 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3261
3262         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
3263         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
3264         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
3265         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
3266         athlon_ssemul_load_k8): Added amdfam10.
3267
3268 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3269
3270         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
3271         (x86_sse_unaligned_move_optimal): New variable.
3272
3273         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
3274         m_AMDFAM10.
3275         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
3276         for unaligned vector SSE double/single precision loads for AMDFAM10.
3277
3278 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3279
3280         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
3281         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
3282         Define TARGET_CPU_DEFAULT_amdfam10.
3283         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
3284         (processor_type): Add PROCESSOR_AMDFAM10.
3285
3286         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
3287         processor_type in config/i386/i386.h.
3288         Enable imul peepholes for TARGET_AMDFAM10.
3289
3290         * config.gcc: Add support for --with-cpu option for amdfam10.
3291
3292         * config/i386/i386.c (amdfam10_cost): New variable.
3293         (m_AMDFAM10): New macro.
3294         (m_ATHLON_K8_AMDFAM10): New macro.
3295         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
3296         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
3297         x86_promote_QImode, x86_integer_DFmode_moves,
3298         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3299         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
3300         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
3301         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
3302         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
3303         Enable/disable for amdfam10.
3304         (override_options): Add amdfam10_cost to processor_target_table.
3305         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
3306         processor_alias_table.
3307         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
3308         (ix86_adjust_cost): Add code for amdfam10.
3309
3310 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3311
3312         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
3313         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
3314         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
3315         * config/i386/i386.h: Add builtin definition for SSE4A.
3316         * config/i386/i386.md: Add support for ABM instructions
3317         (popcnt and lzcnt).
3318         * config/i386/sse.md: Add support for SSE4A instructions
3319         (movntss, movntsd, extrq, insertq).
3320         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
3321         Add -march=amdfam10 flag.
3322         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
3323         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
3324         and amdfam10.
3325         * doc/extend.texi: Add documentation for SSE4A builtins.
3326
3327 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
3328
3329         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
3330
3331 2007-02-05  Richard Guenther  <rguenther@suse.de>
3332
3333         * tree-vectorizer.h (vectorizable_function): Add argument type
3334         argument, change return type.
3335         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
3336         * tree-vect-transform.c (vectorizable_function): Handle extra
3337         argument, return vectorized function decl.
3338         (build_vectorized_function_call): Remove.
3339         (vectorizable_call): Handle calls with result and argument types
3340         differing.  Handle loop vectorization factor correctly.
3341         * targhooks.c (default_builtin_vectorized_function): Adjust for
3342         extra argument.
3343         * targhooks.h (default_builtin_vectorized_function): Likewise.
3344         * target.h (builtin_vectorized_function): Add argument type
3345         argument.
3346         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
3347         extra argument, allow vectorizing of lrintf.
3348         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
3349         documentation of target hook.
3350
3351 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
3352
3353         PR target/30665
3354         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
3355         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
3356         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
3357
3358 2007-02-05  Roger Sayle  <roger@eyesopen.com>
3359
3360         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
3361         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
3362         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
3363         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
3364         before canonicalizing sincos to cexpi.
3365         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
3366
3367 2007-02-05  Roger Sayle  <roger@eyesopen.com>
3368
3369         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
3370         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
3371         (alpha_init_builtins): Use alpha_add_builtins to process tables.
3372
3373 2007-02-05  Roger Sayle  <roger@eyesopen.com>
3374
3375         * mips-tfile.c (initialize_init_file): Correct endianness test.
3376
3377 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
3378
3379         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
3380         the 'y' constraint.
3381
3382 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
3383
3384         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
3385         saves in a PARALLEL before the register assignments.
3386
3387 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
3388
3389         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
3390         DWARF_FRAME_RETURN_COLUMN to be a general register.
3391         * dwarf2out.c (init_return_column_size): New function, split from...
3392         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
3393         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
3394         to be nongeneral registers.
3395         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
3396         integer registers.
3397         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
3398         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
3399
3400 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
3401
3402         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
3403
3404 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
3405
3406         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
3407         (remove_path): Use can_remove_branch_p and remove_branch instead
3408         of loop_delete_branch_edge.
3409         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
3410         (tree_transform_and_unroll_loop): Remove dead branches immediately.
3411         Update profile using scale_dominated_blocks_in_loop.
3412         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
3413         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
3414         (can_remove_branch_p, remove_branch): Declare.
3415         * tree-cfg.c (tree_can_remove_branch_p): New function.
3416         (tree_cfg_hooks): Add tree_can_remove_branch_p.
3417         * cfgrtl.c (rtl_can_remove_branch_p): New function.
3418         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
3419
3420 2007-02-05  Jan Hubicka  <jh@suse.cz>
3421
3422         PR middle-end/30696
3423         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
3424         nodes in cgraph, don't remove offline copy of the function.
3425
3426 2007-02-04  Jan Hubicka  <jh@suse.cz>
3427
3428         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
3429         vectors might cause maybe_lookup_element_for_expr to be called
3430         on non-sra-candidate.
3431
3432 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
3433
3434         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
3435         config/bfin/bfin.md, config/bfin/predicates.md: Follow
3436         spelling conventions.
3437
3438 2007-02-04  Richard Guenther  <rguenther@suse.de>
3439
3440         PR middle-end/30636
3441         * fold-const.c (try_move_mult_to_index): Make sure to not
3442         overflow one dimension of a multi-dimensional array access.
3443
3444 2007-02-04  Jan Hubicka  <jh@suse.cz>
3445
3446         * passes.c (init_optimization_passes): Reindent.
3447
3448 2007-02-04  Jan Hubicka  <jh@suse.cz>
3449             Eric Botcazou  <ebotcazou@adacore.com>
3450
3451         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
3452         (execute_fixup_cfg): Break out the abnormal goto code.
3453         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
3454         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
3455         (optimize_inline_calls): Call make_nonlocal_label_edges.
3456
3457 2007-02-04  Jan Hubicka  <jh@suse.cz>
3458
3459         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
3460         true when something was changed.
3461         (rename_ssa_copies): When something was changed, do
3462         TODO_remove_unused_locals.
3463         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
3464         add TODO_remove_unused_locals when instruction was removed.
3465
3466 2007-02-04  Jan Hubicka  <jh@suse.cz>
3467
3468         * ipa-inline.c (try_inline): Improve debug output; work on already
3469         inline edges too.
3470         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
3471         call try_inline for already inlined edges too when flattening;
3472         inline also functions that make callee growth but overall unit size
3473         reduce.
3474
3475 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
3476
3477         * config/m32c/bitops.md, config/m32c/jump.md,
3478         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
3479         config/m32r/m32r.h, config/m32r/m32r.md,
3480         config/m32r/predicates.md, config/m68hc11/larith.asm,
3481         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
3482         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
3483         config/mips/mips-protos.h, config/mips/mips.c,
3484         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
3485         config/mn10300/mn10300.h, config/mn10300/predicates.md,
3486         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
3487         spelling conventions.
3488
3489         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
3490         Follow spelling conventions.
3491
3492 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
3493
3494         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
3495         warn about C++0x compatibility.
3496
3497 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
3498
3499         * config/h8300/h8300.c, config/h8300/h8300.h,
3500         config/h8300/h8300.md: Follow spelling conventions.
3501
3502 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
3503
3504         PR middle-end/30667
3505         * combine.c (try_combine): Do not substitute source operand
3506         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
3507
3508 2007-02-03  Jan Hubicka  <jh@suse.cz>
3509
3510         PR gcov-profile/30650
3511         * value-prof.c (stringop_block_profile): Fix handling of size counter;
3512         do not divide by zero for never executed counters.
3513         (tree_find_values_to_profile): Fix counters.
3514         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
3515
3516 2007-02-03  Ian Lance Taylor  <iant@google.com>
3517
3518         * lower-subreg.c (simple_move_operand): New static function,
3519         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
3520         operands.
3521         (simple_move): Call simple_move_operand.
3522         (find_decomposable_subregs): Add special handling of MEMs.
3523         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
3524         meaning of return value.  If we see a hard register, test whether
3525         it can store a word_mode value.  Change all callers.
3526
3527 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3528
3529         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
3530         ftrapv insns and expanders.
3531         (subdi3): Change define_expand operand 1 to arith11_operand, and
3532         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
3533         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
3534         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
3535         respectively.
3536
3537         PR middle-end/30174
3538         * varasm.c (notice_global_symbol): Treat global objects as weak when
3539         flag_shlib is true.
3540
3541 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3542
3543         * emit-rtl.c (dconstpi): Delete.
3544         (dconstsqrt2): New.
3545         (init_emit_once): Delete dconstpi and init dconstsqrt2.
3546         * real.h (dconstpi): Delete.
3547         (dconstsqrt2): New.
3548         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
3549         (fold_builtin_hypot): Likewise.
3550
3551 2007-02-03  Tom Tromey  <tromey@redhat.com>
3552
3553         PR driver/30246
3554         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
3555         -gcoff3, -gxcoff3, -gvms3 implies -dD.
3556
3557 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
3558
3559         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
3560         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
3561         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
3562         config/rs6000/cell.md, config/rs6000/darwin.h,
3563         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
3564         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
3565         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
3566         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
3567         typos.  Follow spelling conventions.
3568         * doc/invoke.texi: Follow spelling conventions.
3569
3570 2007-02-03  Roger Sayle  <roger@eyesopen.com>
3571
3572         * simplify-rtx.c (simplify_relational_operation_1): Implement some
3573         canonicalization transformations that attempt to simplify integer
3574         constant comparisons to become comparisons against zero.
3575
3576 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3577
3578         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
3579         fabs(x)*sqrt(2).
3580         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
3581         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
3582
3583 2007-02-02  Mike Stump  <mrs@apple.com>
3584
3585         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
3586         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
3587         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
3588         generate a branch island.
3589
3590 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
3591
3592         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
3593         (xtensa_legitimate_address_p): New.
3594         (xtensa_legitimize_address): New.
3595         (xtensa_output_addr_const_extra): New.
3596         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
3597         (BASE_REG_P): New.
3598         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
3599         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
3600         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
3601         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
3602         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
3603         (xtensa_legitimize_address): New.
3604         (xtensa_output_addr_const_extra): New.
3605
3606 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
3607
3608         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
3609
3610 2007-02-02  Ian Lance Taylor  <iant@google.com>
3611
3612         * expmed.c (expand_divmod): Add comment.
3613
3614 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
3615
3616         * emit-rtl.c (renumber_insns): Remove.
3617         * flags.h: Remove the extern for flag_renumber_insns.
3618         * rtl.h: Remove the prototype for renumber_insns.
3619         * toplev.c (flag_renumber_insns): Remove.
3620
3621 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
3622
3623         Revert for x86 darwin:
3624         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
3625
3626         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
3627         code before the following patch under TARGET_MACHO.
3628         (ix86_function_value_regno_p): Likewise.
3629
3630 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3631
3632         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
3633         COMPLEX_EXPR.
3634
3635 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
3636
3637         PR target/29682
3638         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
3639         general or fp registers.  Add comments.
3640         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
3641
3642 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
3643
3644         * pointer-set.c (insert_aux): Only return insertion slot.
3645         (pointer_set_insert): Adjust.
3646         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
3647         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
3648         pointer_map_traverse): New.
3649         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
3650         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
3651         pointer_map_contains, pointer_map_traverse): Declare.
3652
3653 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
3654
3655         PR middle-end/30473
3656         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
3657         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
3658
3659 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
3660
3661         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
3662
3663         (struct _dep): New type.
3664         (dep_t): New typedef.
3665         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
3666         (DEP_STATUS): New access macro.  The macro with the same name was
3667         renamed to DEP_LINK_STATUS.
3668         (dep_init): Declare function
3669
3670         (struct _dep_link): New type.
3671         (dep_link_t): New typedef.
3672         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
3673         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
3674         (DEP_LINK_STATUS): New macro.
3675         (debug_dep_links): New debug function.
3676
3677         (struct _deps_list): New type.
3678         (deps_list_t): New typedef.
3679         (DEPS_LIST_FIRST): New access macro.
3680         (FOR_EACH_DEP_LINK): New cycle macro.
3681         (create_deps_list, free_deps_list, delete_deps_list): Declare
3682         functions.
3683         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
3684         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
3685         (copy_deps_list_change_con): Ditto.
3686
3687         (move_dep_link): Declare function.
3688
3689         (struct _dep_node): New type.
3690         (dep_node_t): New typedef.
3691         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
3692
3693         (struct haifa_insn_data.back_deps): New field to hold backward
3694         dependencies of the insn.
3695         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
3696         to deps_list_t.
3697         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
3698         Change its type to deps_list_t.
3699         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
3700         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
3701         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
3702
3703         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
3704
3705         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
3706
3707         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
3708         all callers.
3709         (dep_cost): Declare.
3710
3711         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
3712         (ds_to_dk, dk_to_ds): New functions.
3713
3714         (init_dep_1): New static function.
3715         (init_dep): New function.
3716         (copy_dep): New static function.
3717
3718         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
3719         functions.
3720         (detach_dep_link): New static function.
3721         (move_dep_link): New function.
3722
3723         (dep_links_consistent_p, dump_dep_links): New static functions.
3724         (debug_dep_links): New debugging function.
3725
3726         (deps_obstack, dl_obstack, dn_obstack): New static variables.
3727
3728         (alloc_deps_list, init_deps_list): New static functions.
3729         (create_deps_list): New function.
3730         (clear_deps_list): New static function.
3731         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
3732         (deps_list_consistent_p, dump_deps_list): New static functions.
3733         (debug_deps_list): New function.
3734         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
3735         functions.
3736         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
3737
3738         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
3739         use new scheduler dependencies lists.
3740         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
3741         (sched_analyze): Ditto.  Initialize dependencies lists.
3742         (add_forw_dep, compute_forward_dependences): Update to use new
3743         scheduler dependencies lists.
3744
3745         (init_dependency_caches): Init deps_obstack.
3746         (free_dependency_caches): Free deps_obstack.
3747
3748         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
3749         new scheduler dependencies lists.
3750         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
3751         (add_back_forw_dep, delete_back_forw_dep): Ditto.
3752
3753         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
3754         Update to use new scheduler dependencies lists.
3755         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
3756         (debug_dependencies): Ditto.
3757         (schedule_region): Update comments.
3758
3759         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
3760         scheduler dependencies lists.
3761         (schedule_ebb): Update comments.
3762
3763         * rtl.def (DEPS_LIST): Remove.
3764
3765         * lists.c (unused_deps_list): Remove.
3766         (free_list): Update assertions.
3767
3768         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
3769         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
3770
3771         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
3772         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
3773
3774         * haifa-sched.c (comments): Update.
3775         (insn_cost1): Remove.  Inline the code into insn_cost ().
3776         (insn_cost): Update to use new scheduler dependencies lists.  Move
3777         processing of the dependency cost to dep_cost ().
3778         (dep_cost): New function.  Use it instead of insn_cost () when
3779         evaluating cost of the dependency.  Use compatible interface to
3780         interact with the target.
3781         (priority): Update to use new scheduler dependencies lists.
3782         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
3783         with greater number of insns that depend on the insn.
3784         (schedule_insn): Update to use new scheduler dependencies lists.  Add
3785         code to free backward dependencies lists.  Inline and optimize code
3786         from resolve_dep () - see PR28071.
3787         (ok_for_early_queue_removal): Update to use new scheduler dependencies
3788         lists.  Update call to targetm.sched.is_costly_dependence hook.
3789
3790         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
3791         scheduler dependencies lists.
3792
3793         (resolve_dep): Remove.  Move the logic to schedule_insn ().
3794         (init_h_i_d): Initialize dependencies lists.
3795
3796         (process_insn_depend_be_in_spec): Rename to
3797         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
3798         dependencies lists.
3799         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
3800         Update to use new scheduler dependencies lists.
3801         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
3802
3803         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
3804         new scheduler dependencies lists.
3805         (build_intra_loop_deps): Ditto.
3806
3807         * target.h (struct _dep): Declare to use in
3808         gcc_target.sched.is_costly_dependence.
3809         (struct gcc_target.sched.adjust_cost): Fix typo.
3810         (struct gcc_target.sched.is_costly_dependence): Change signature to use
3811         single dep_t parameter instead of an equivalent triad.
3812         (struct gcc_target.sched.adjust_cost_2): Remove.
3813
3814         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
3815
3816         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
3817
3818         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
3819         documentation.
3820         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
3821
3822         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
3823         (REG_DEP_TRUE): Document.
3824
3825         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
3826         Change signature to correspond to the targetm.sched.adjust_cost hook.
3827         Update use in TARGET_SCHED_ADJUST_COST_2.
3828         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
3829         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
3830         new scheduler dependencies lists.
3831         (ia64_gen_check): Ditto.
3832
3833         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
3834         dependencies lists.
3835
3836         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
3837         signature to correspond to the targetm.sched.is_costly_dependence hook.
3838         (is_costly_group): Update to use new scheduler dependencies lists.
3839
3840         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
3841         instead of INSN_COST () macro.
3842
3843 2007-02-01  Ian Lance Taylor  <iant@google.com>
3844
3845         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
3846
3847 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
3848
3849         * pa.md (tp_load): Correct mfctl instruction syntax.
3850
3851 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
3852
3853         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
3854         altivec_padding_size calculation on AIX.  Improve comment, add
3855         assert to verify that it's right.
3856
3857         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
3858         64-bit.
3859
3860 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
3861
3862         PR inline-asm/28686
3863         * global.c (global_alloc): Add mising initialization of
3864         ELIMINABLE_REGSET.
3865
3866 2007-02-01  Roger Sayle  <roger@eyesopen.com>
3867
3868         * alias.c (init_alias_analysis): Correct whitespace.
3869         * bb-reorder.c (fix_edges_for_rarely_executed_code,
3870         partition_hot_cold_basic_blocks): Likewise.
3871         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
3872         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
3873         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
3874         fold_builtin_snprintf_chk, fold_builtin_printf,
3875         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
3876         do_mpfr_arg3, do_mpfr_sincos): Likewise.
3877         * cfgcleanup.c (cleanup_cfg): Likewise.
3878         * cfgexpand.c (tree_expand_cfg): Likewise.
3879         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
3880         * function.c (get_next_funcdef_no): Likewise.
3881         * gengtype.c (main): Likewise.
3882         * genmodes.c (main): Likewise.
3883         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
3884         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
3885         * ifcvt.c (noce_emit_move_insn): Likewise.
3886         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
3887         Likewise.
3888         * stor-layout.c (get_best_mode): Likewise.
3889         * tree-ssa-loop-niter.c (get_val_for): Likewise.
3890         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
3891         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
3892         perform_var_substitution, solve_graph): Likewise.
3893         * tree-vrp.c (vrp_finalize): Likewise.
3894
3895 2007-02-01  Ian Lance Taylor  <iant@google.com>
3896
3897         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
3898         high part of a paradoxical subreg, return a constant zero.
3899
3900 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
3901
3902         * toplev.c (lang_dependent_init): Call init_set_costs.
3903         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
3904
3905 2007-02-01  Richard Guenther  <rguenther@suse.de>
3906
3907         PR middle-end/30656
3908         * fold-const.c (fold_negate_expr): Allow negating a
3909         constant if overflow does not change.
3910
3911 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3912
3913         * doc/c-tree.texi (Expression trees): Improve markup.
3914         * doc/tm.texi (Register Classes, Addressing Modes)
3915         (Floating Point): Fix spacing after abbreviations.  Fix some
3916         typos.
3917
3918 2007-02-01  Ben Elliston  <bje@au.ibm.com>
3919
3920         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
3921         * doc/contrib.texi: Likewise.
3922         * doc/install.texi: Likewise.
3923
3924 2007-01-31  Richard Henderson  <rth@redhat.com>
3925             Ian Lance Taylor  <iant@google.com>
3926
3927         * lower-subreg.c: New file.
3928         * rtl.def (CONCATN): Define.
3929         * passes.c (init_optimization_passes): Add pass_lower_subreg and
3930         pass_lower_subreg2.
3931         * emit-rtl.c (update_reg_offset): New static function, broken out
3932         of gen_rtx_REG_offset.
3933         (gen_rtx_REG_offset): Call update_reg_offset.
3934         (gen_reg_rtx_offset): New function.
3935         * regclass.c: Revert patch of 2006-03-05, restoring
3936         reg_scan_update.
3937         (clear_reg_info_regno): New function.
3938         * dwarf2out.c (concatn_loc_descriptor): New static function.
3939         (loc_descriptor): Handle CONCATN.
3940         * common.opt (fsplit_wide_types): New option.
3941         * opts.c (decode_options): Set flag_split_wide_types when
3942         optimizing.
3943         * timevar.def (TV_LOWER_SUBREG): Define.
3944         * rtl.h (gen_reg_rtx_offset): Declare.
3945         (reg_scan_update): Declare.
3946         * regs.h (clear_reg_info_regno): Declare.
3947         * tree-pass.h (pass_lower_subreg): Declare.
3948         (pass_lower_subreg2): Declare.
3949         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
3950         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
3951         -fsplit-wide-types.
3952         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
3953         * Makefile.in (OBJS-common): Add lower-subreg.o.
3954         (lower-subreg.o): New target.
3955
3956 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
3957
3958         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
3959
3960 2007-01-31  Anatoly Sokolov <aesok@post.ru>
3961
3962         PR target/19087
3963         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
3964
3965 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3966
3967         PR middle-end/29335
3968         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
3969
3970 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
3971
3972         * cfgloop.h: Include vec-prim.h.
3973         (enum li_flags): Remove LI_ONLY_OLD.
3974         (loop_iterator): Changed.
3975         (fel_next, fel_init): Iterate over loop tree.
3976         (FOR_EACH_LOOP_BREAK): New macro.
3977         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
3978         FOR_EACH_LOOP.
3979         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
3980         * modulo-sched.c (sms_schedule): Ditto.
3981         * tree-vectorizer.c (vectorize_loops): Ditto.
3982         * doc/loop.texi: Update information on loop numbering and behavior of
3983         FOR_EACH_LOOP wrto new loops.
3984         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
3985         add_to_evolution_1): Test nestedness of loops instead of comparing
3986         their numbers.
3987         * tree-chrec.c (chrec_fold_plus_poly_poly,
3988         chrec_fold_multiply_poly_poly, chrec_evaluate,
3989         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
3990         reset_evolution_in_loop): Ditto.
3991         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
3992
3993 2007-01-31  Dirk Mueller  <dmueller@suse.de>
3994
3995         * c-common.c (warn_about_parentheses): Separate warning about
3996         un-parenthized sequence of comparison operators from the one
3997         which is supposed to warn about x <= y <= z.
3998
3999 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
4000
4001         * optabs.h (enum optab_index): Add new OTI_isinf.
4002         (isinf_optab): Define corresponding macro.
4003         * optabs.c (init_optabs): Initialize isinf_optab.
4004         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
4005         patterns.
4006         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
4007         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
4008         using isinf_optab.
4009         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
4010         expand_builtin_interclass_mathfn.
4011         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
4012         * config/i386/i386.md (UNSPEC_FXAM): New constant.
4013         (fxam<mode>2_i387): New insn pattern.
4014         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
4015         built-in functions as x87 inline asm.
4016
4017 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
4018
4019         * gcc/config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
4020
4021 2007-01-30  Eric Christopher  <echristo@apple.com>
4022
4023         * config.gcc: Add geode.
4024
4025 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
4026
4027         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
4028         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
4029         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
4030         value-prof.c: Fix comment typos.
4031
4032 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4033
4034         PR c++/24745
4035         * doc/invoke.texi (Wpointer-arith): Document warning.
4036
4037 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
4038
4039         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
4040         the list of discrepancies from the draft TR.
4041
4042 2007-01-30  Dirk Mueller  <dmueller@suse.de>
4043
4044         PR c++/30601
4045         * doc/invoke.texi (-Wreturn-type): Update description to
4046         match new behavior.
4047
4048 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
4049
4050         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
4051
4052 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
4053
4054         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
4055         to handle optabs that operate on floating point input argument and
4056         output to integer output.
4057         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
4058         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
4059         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
4060         expand_builtin_interclass_mathfn ().
4061         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
4062         (ilogbsi2): Remove.
4063         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
4064         ilogbl built-in functions as x87 intrinsics.
4065
4066 2007-01-30  Richard Guenther  <rguenther@suse.de>
4067
4068         PR middle-end/27657
4069         * dwarf2out.c (reference_to_unused): Query varpool if the
4070         variable was output.
4071
4072 2007-01-30  Richard Guenther  <rguenther@suse.de>
4073
4074         PR middle-end/30313
4075         * passes.c (execute_one_pass): Reset in_gimple_form to not
4076         confuse non-unit-at-a-time mode.
4077
4078 2007-01-29  Roger Sayle  <roger@eyesopen.com>
4079             Richard Guenther  <rguenther@suse.de>
4080
4081         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
4082         avoid undefined behaviour on overflow.  Use force_fit_type_double
4083         to construct the constant with the specified TREE_OVERFLOW.
4084
4085 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
4086
4087         * config/dfp-bit.c: Add parameterized support for fp exceptions.
4088         * config/dfp-bit.h: Ditto.
4089
4090 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4091
4092         * c-decl.c (pop_scope): Replace warnings with call to
4093         warn_for_unused_label.
4094         * c-common.h (warn_for_unused_label): Declare.
4095         * c-common.c (warn_for_unused_label): Define.
4096
4097 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4098
4099         * tree-optimize.c (update_inlined_to_pointers): Delete unused
4100         function.
4101
4102 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
4103
4104         * Makefile.in (USER_H): Remove decfloat.h.
4105         * ginclude/decfloat.h: Delete, moving contents to ...
4106         * ginclude/float.h: Add support for decimal floating point,
4107         guarded by __STDC_WANT_DEC_FP__.
4108
4109 2007-01-29  Mike Stump  <mrs@apple.com>
4110
4111         * doc/gccint.texi (Top): Rename Loop Representation to Loop
4112         Analysis and Representation to resolve case insensitive conflict.
4113         * doc/loop.texi (Loop Analysis and Representation): Likewise.
4114
4115 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
4116
4117         * tree.h (struct tree_memory_tag): Add aliases member.
4118         (MTAG_ALIASES): New macro.
4119         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
4120         (add_may_alias): Remove pointer-set. Update for may_aliases being
4121         a bitmap.
4122         (mark_aliases_call_clobbered): Update for may_aliases being a
4123         bitmap.
4124         (compute_tag_properties): Ditto.
4125         (create_partition_for): Ditto.
4126         (compute_memory_partitions): Ditto.
4127         (dump_may_aliases_for): Ditto.
4128         (is_aliased_with): Ditto.
4129         (add_may_alias_for_new_tag): Ditto.
4130         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
4131         (compute_is_aliased): New function.
4132         (compute_may_aliases): Call compute_is_aliased).
4133         (init_alias_info): Initialize alias_bitmap_obstack.
4134         (union_alias_set_into): New function.
4135         (compute_flow_sensitive_aliasing): Use union_aliases_into.
4136         (have_common_aliases_p): Rewrite to take two bitmaps and use
4137         intersection.
4138         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
4139         Update for bitmaps.
4140         (finalize_ref_all_pointers): Update for add_may_alias changes.
4141         (new_type_alias): Ditto.
4142         * tree-flow-inline.h (may_aliases): Return a bitmap.
4143         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
4144         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
4145         may_aliases being a bitmap.
4146         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
4147         may_aliases now returns a bitmap.
4148         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
4149         being a bitmap.
4150         * tree-ssa-operands.c (add_virtual_operand): Update for
4151         may_aliases being a bitmap.
4152
4153 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
4154
4155         PR tree-optimization/30630
4156         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
4157         variable as changed.
4158
4159 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
4160
4161         PR c++/28266
4162         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
4163         expanded only once even if an error occurs.
4164
4165 2007-01-29  Ben Elliston  <bje@au.ibm.com>
4166
4167         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
4168         (__gcov_average_profiler): Likewise.
4169         (__gcov_ior_profiler): Likewise.
4170         (__gcov_merge_ior): Likewise.
4171
4172 2007-01-28  Jan Hubicka  <jh@suse.cz>
4173
4174         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
4175         * value-prof.c (stringop_block_profile): Likewise.
4176
4177 2007-01-28  Jan Hubicka  <jh@suse.cz>
4178
4179         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
4180         variant handling histograms; add wrapper.
4181         (clear_storage_via_libcall): Export.
4182         (emit_block_move_hints): Break out from ...; add histograms.
4183         (emit_block_move): ... this one.
4184         (clear_storage_hints): Break out from ...; add histograms.
4185         (clear_storage): ... this one.
4186         (set_storage_via_memset): Handle histogram.
4187         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
4188         (clear_storage_hints, clear_storage_via_libcall): Declare.
4189         (set_storage_via_setmem): Update prototype.
4190         * doc/md.texi (movmem, setmem): Document new arguments.
4191
4192         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
4193         new histograms.
4194         (stringop_block_profile): New global function.
4195         (tree_stringops_values_to_profile): Profile block size and alignment.
4196         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
4197         HIST_TYPE_IOR.
4198         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
4199         (stringop_block_profile): Declare.
4200         * builtins.c: Include value-prof.h.
4201         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
4202         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
4203         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
4204         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
4205         * profile.c (instrument_values): Add new counters.
4206         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
4207         calls.
4208         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
4209         (tree_init_edge_profiler): Build new profilers.
4210         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
4211         (pass_tree_profile): Add dump.
4212         (tree_profile_hooks): Update.
4213         * Makefile.in (LIBGCOV): Add new constants.
4214         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
4215         __gcov_ior_profiler): New.
4216         * i386.md (movmem/setmem expanders): Add new optional arguments.
4217
4218 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
4219
4220         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
4221
4222 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
4223
4224         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
4225         (tree_unswitch_single_loop): Pass eni_size_weights to
4226         tree_num_loop_insns.
4227         * tree-ssa-loop-manip.c: Include tree-inline.h.
4228         (can_unroll_loop_p): Pass eni_size_weights to
4229         tree_num_loop_insns.
4230         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
4231         Pass eni_size_weights to estimate_num_insns.
4232         * tree.h (init_inline_once): Export.
4233         * toplev.c (backend_init): Call init_inline_once.
4234         * cgraphunit.c (cgraph_process_new_functions,
4235         cgraph_analyze_function): Pass eni_inlining_weights to
4236         estimate_num_insns.
4237         * ipa-inline.c (compute_inline_parameters): Ditto.
4238         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
4239         to estimate_num_insns.
4240         (try_unroll_loop_completely): Pass eni_size_weights to
4241         tree_num_loop_insns.
4242         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
4243         ot estimate_num_insns.
4244         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
4245         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
4246         * tree-inline.c (eni_inlining_weights, eni_size_weights,
4247         eni_time_weights): New variables.
4248         (init_inline_once): Initialize them.
4249         (struct eni_data): Mew.
4250         (estimate_num_insns_1, estimate_num_insns): Use weights.
4251         * tree-inline.h (struct eni_weights_d): New.
4252         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
4253         (estimate_num_insns): Declaration changed.
4254         * cfgloop.h (tree_num_loop_insns): Declaration changed.
4255         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
4256         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
4257
4258 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
4259
4260         * tree-data-ref.c (conflict_fn): Assert that the number of affine
4261         relations in the conflict function is valid.
4262
4263 2007-01-27  Ian Lance Taylor  <iant@google.com>
4264
4265         * common.opt: Add fstrict-overflow.
4266         * opts.c (decode_options): Set flag_strict_overflow if -O2.
4267         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
4268         (TYPE_OVERFLOW_UNDEFINED): Define.
4269         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
4270         Replace all uses.
4271         * tree.h (TYPE_TRAP_SIGNED): Don't define.
4272         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
4273         (fold_negate_expr): Likewise.
4274         (make_range): Likewise.
4275         (extract_muldiv_1): Likewise.
4276         (maybe_canonicalize_comparison): Likewise.
4277         (fold_comparison): Likewise.
4278         (fold_binary): Likewise.
4279         (tree_expr_nonnegative_p): Likewise.
4280         (tree_expr_nonzero_p): Likewise.
4281         * tree-vrp.c (compare_values): Likewise.
4282         (extract_range_from_binary_expr): Likewise.
4283         (extract_range_from_unary_expr): Likewise.
4284         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
4285         Likewise.
4286         (nowrap_type_p): Likewise.
4287         * tree-scalar-evolution.c (simple_iv): Likewise.
4288         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
4289         (build_range_check): Likewise.
4290         (extract_muldiv_1): Likewise.
4291         (fold_comparison): Likewise.
4292         * tree-vrp.c (vrp_int_const_binop): Likewise.
4293         (extract_range_from_unary_expr): Likewise.
4294         * convert.c (convert_to_integer): Likewise.
4295         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
4296         (fold_comparison): Likewise.
4297         (fold_binary): Likewise.
4298         * optabs.c (optab_for_tree_code): Likewise.
4299         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
4300         * simplify-rtx.c (simplify_const_relational_operation): Check
4301         flag_strict_overflow and flag_trapv.
4302         (simplify_const_relational_operation): Likewise.
4303         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
4304         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
4305         -fstrict-overflow.
4306
4307 2007-01-27  Roger Sayle  <roger@eyesopen.com>
4308
4309         * tree.c (tree_fold_gcd): Delete.
4310         * tree.h (tree_fold_gcd): Remove prototype.
4311         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
4312         test whether one constant integer is a multiple of another.  Instead
4313         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
4314         * fold-const.c (multiple_of_p):  We've determined both TOP and
4315         BOTTOM are integer constants so we can call int_const_binop directly
4316         instead of the more generic const_binop.
4317
4318 2007-01-27  Roger Sayle  <roger@eyesopen.com>
4319
4320         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
4321         1*X check that the constant hasn't overflowed, to preserve the
4322         TREE_OVERFLOW bit.
4323         (round_up): Provide an efficient implementation when rouding-up an
4324         INTEGER_CST to a power-of-two.
4325
4326 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4327
4328         * doc/sourcebuild.texi: Add comma for clarity.
4329         * doc/extend.texi: Fix some typos.
4330         * doc/passes.texi: Likewise.
4331         * doc/cppinternals.texi: Likewise.
4332         * doc/c-tree.texi: Likewise.
4333         * doc/tree-ssa.texi: Likewise.
4334         * doc/install.texi: Likewise.
4335
4336 2007-01-27  Jan Hubicka  <jh@suse.cz>
4337
4338         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
4339         (pass_sra): Do not require alias information.
4340         * passes.c (init_optimization_passes): Add SRA
4341
4342 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
4343
4344         * tracer.c (rest_of_handle_tracer): We already cleaned
4345         up the CFG in tracer() so don't do it here again.
4346         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
4347         cleanup_cfg here, either.  And don't call renumber_insns.
4348
4349         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
4350         and BB_HEAD are in the insn stream here.  Instead make sure
4351         that BB_INSN is valid on all insns.  Also, do check here that
4352         there are no pending branch predictions...
4353         (rtl_verify_flow_info): ...instead of doing it here.  Checks
4354         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
4355         here.
4356
4357 2007-01-26  Roger Sayle  <roger@eyesopen.com>
4358
4359         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
4360         function to simplify/factorize operand order canonicalization.
4361         (ix86_fixup_binary_operands): Reorganize using the above function.
4362         (ix86_binary_operator_ok): Likewise.
4363
4364 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
4365
4366         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
4367         file scope from optimize_attrs.
4368         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
4369         up search.
4370         (optimize_attrs): Clear insn_code_values after freeing it.
4371
4372 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
4373
4374         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
4375         a parts.base assignment.
4376
4377 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
4378
4379         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
4380         (compute_subscript_distance, initialize_data_dependence_relation,
4381         finalize_ddr_dependent, analyze_ziv_subscript,
4382         analyze_siv_subscript_cst_affine,
4383         compute_overlap_steps_for_affine_univar,
4384         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
4385         analyze_siv_subscript, analyze_miv_subscript,
4386         analyze_overlapping_iterations, subscript_dependence_tester_1,
4387         compute_self_dependence, free_dependence_relation): Work
4388         with affine_fn instead of chrecs.
4389         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
4390         common_affine_function, affine_function_base,
4391         affine_function_constant_p, affine_fn_op, affine_fn_plus,
4392         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
4393         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
4394         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
4395         (all_chrecs_equal_p): Removed.
4396         * tree-data-ref.h (affine_fn, conflict_function): New types.
4397         (struct subscript): Change type of conflicting_iterations_in_a
4398         and conflicting_iterations_in_b.
4399
4400 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
4401
4402         PR other/30182
4403         * config/pa/pa.h (TARGET_HPUX_11): New.
4404         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
4405         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
4406
4407 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
4408         Richard Guenther  <rguenther@suse.de>
4409
4410         * tree-ssa-structalias.c (solve_graph): Handle case
4411         we merged the variable to another.
4412
4413 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4414
4415         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
4416         functions.
4417
4418         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
4419         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
4420
4421 2007-01-25  DJ Delorie  <dj@redhat.com>
4422
4423         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
4424         allow changes to modes which don't fit in those registers.
4425
4426         * reload1.c (choose_reload_regs): Check for invalid subregs before
4427         computing their locations, not after.
4428
4429 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
4430
4431         PR 25127
4432         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
4433         save Altivec registers in an eh_return function.
4434         (compute_vrsave_mask): Likewise.
4435         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
4436         for saving Altivec registers.
4437         (rs6000_emit_prologue): Don't allocate stack twice in
4438         eh_return function.  Correct expected value of altivec_save_offset
4439         when using save_world.  Describe save of R0 to stack when using
4440         save_world.  Describe stack pointer adjustment when using
4441         save_world.  Remove duplicated eh_return parameter register saving.
4442         Update sp_offset variable after save_world.
4443         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
4444         darwin-world.asm.
4445         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
4446         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
4447         implies Altivec.
4448
4449 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
4450
4451         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
4452
4453 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
4454
4455         PR other/30182
4456         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
4457         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
4458
4459 2007-01-25  Richard Guenther  <rguenther@suse.de>
4460
4461         * doc/invoke.texi (-Wcoverage-mismatch): Document.
4462         * common.opt (-Wcoverage-mismatch): New warning option.
4463         * coverage.c (get_coverage_counts): Ignore coverage mismatch
4464         if -Wcoverage-mismatch is given.
4465
4466 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
4467
4468         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
4469         (ipcp_driver): Change to static definition.
4470         Add dumping of the ifunctions.
4471         (constant_val_insert): Remove unused parameter. Support for SSA.
4472         (ipcp_propagate_const): Support for SSA.
4473         (ipcp_profile_bb_print): Print only analyzed nodes.
4474         (ipcp_replace_map_create): Remove support for Fortran constant
4475         for now.
4476         * ipa-prop.c (ipa_method_modify_stmt,
4477         ipa_callsite_compute_param): Support for SSA.
4478         * ipa-prop.h (ipcp_driver): Remove declaration.
4479         (IS_VALID_TREE_MAP_INDEX): Add define.
4480
4481 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
4482
4483         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
4484
4485 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4486
4487         PR middle-end/30447
4488         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
4489         constant argument to cabs and do it without checking for
4490         -funsafe-math-optimizations.
4491
4492 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
4493
4494         * c-common.h (RID_FIRST_CXX0X): New.
4495         (RID_LAST_CXX0X): New.
4496         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
4497         by -Wall.
4498         * c.opt (Wc++0x-compat): New.
4499         * doc/invoke.texi (-Wc++0x-compat): Document.
4500
4501 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4502
4503         * builtins.c (fold_builtin_carg): New.
4504         (fold_builtin_1): Use it.
4505
4506 2007-01-24  Jan Hubicka  <jh@suse.cz>
4507
4508         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
4509
4510         * ipa-inline.c (initial_insns, max_insns): Delete.
4511         (compute_max_insns): New function.
4512         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
4513         of insns as base for code growth.
4514         (cgraph_decide_inlining): Make initial_insns local; do not compute
4515         max_insns.
4516         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
4517         * doc/invoke.texi (inline-unit-growth): Update docs.
4518
4519 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
4520
4521         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
4522         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
4523         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
4524         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
4525         for CPUs that have PTA_CX16 set.
4526
4527         PR middle-end/27416
4528         * gimplify.c (omp_check_private): New function.
4529         (gimplify_scan_omp_clauses): Use it for
4530         firstprivate/lastprivate/reduction.
4531
4532         PR middle-end/30494
4533         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
4534         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
4535
4536         PR middle-end/30421
4537         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
4538         If lower_lastprivate_clauses emits some statements, append them
4539         to dlist rather than body_p and to body_p append an initializer.
4540         (lower_omp_for): Adjust caller.
4541
4542 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
4543
4544         * target.h (globalize_decl_name): New.
4545         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
4546         * output.h (default_globalize_decl_name): New.
4547         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
4548         globalize_label.
4549         (globalize_decl): Ditto.
4550         (default_globalize_decl_name): New.
4551         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
4552         (ia64_handle_version_id_attribute): New.
4553         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
4554         (ia64_asm_output_external): Use globalize_decl_name instead
4555         of globalize_label.
4556         * doc/extend.texi (version_id): New pragma.
4557         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
4558
4559 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
4560
4561         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
4562         _uleb128_t and _Unwind_SWord with _sleb128_t.
4563         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
4564         uw_frame_state_for, uw_update_context_1): Likewise.
4565         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
4566         * unwind-pe.h (read_uleb128, read_sleb128,
4567         read_encoded_value_with_base): Likewise.
4568         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
4569
4570 2007-01-24  Richard Guenther  <rguenther@suse.de>
4571
4572         * builtins.c (expand_builtin_cexpi): Get the fndecl
4573         for cexp in the correct way.
4574
4575 2007-01-24  Jan Hubicka  <jh@suse.cz>
4576
4577         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
4578
4579 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
4580
4581         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
4582         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
4583         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
4584         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
4585         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
4586         __SIZEOF_PTRDIFF_T__.
4587         * doc/cpp.texi: Documentation for the new builtin macros added.
4588
4589 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
4590
4591         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
4592         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
4593         instead of operands[2] to avoid access past the end of array.
4594
4595 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
4596
4597         * reload1.c (emit_reload_insns): Pass the reload register
4598         for a non-spill output reload through forget_old_reloads_1.
4599
4600 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
4601
4602         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
4603         _SOFT_DOUBLE if doubles use software floating-point.
4604         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
4605         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
4606         * config/rs6000/darwin-ldouble.c: Also compile functions for
4607         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
4608         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
4609         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
4610         commented-out long double override.
4611         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
4612         * config/rs6000/eabispe.h: Likewise.
4613         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
4614         long double for non-SPE.
4615         (rs6000_handle_option): Likewise.
4616         (invalid_e500_subreg): Disallow more subregs involding DImode,
4617         DFmode, TImode or TFmode.
4618         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
4619         E500 double.
4620         (legitimate_lo_sum_address_p): Also check for TFmode for E500
4621         double.
4622         (rs6000_legitimize_address): Also handle TFmode for E500 double.
4623         (rs6000_legitimize_reload_address): Also handle TFmode for E500
4624         double.
4625         (rs6000_legitimate_address): Also check for TFmode for E500
4626         double.
4627         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
4628         (spe_build_register_parallel): Handle TFmode and TCmode.
4629         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
4630         double.
4631         (function_arg): Handle TFmode and TCmode for E500 double.
4632         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
4633         in general.
4634         (print_operand): Handle TFmode and TImode for %y.
4635         (rs6000_generate_compare): Handle TFmode comparisons for E500
4636         double.
4637         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
4638         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
4639         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
4640         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
4641         TFmode for E500 double.
4642         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
4643         (floatsidf2): Enable for E500 double.
4644         (movtf_softfloat): Use rs6000_nonimmediate_operand.
4645         (extenddftf2): Change to extenddftf2_fprs.
4646         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
4647         depending on TARGET_E500_DOUBLE.
4648         (extendsftf2): Enable for E500 double.
4649         (trunctfdf2): Enable for E500 double.
4650         (trunctfsf2): Change to trunctfsf2_fprs.
4651         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
4652         depending on TARGET_E500_DOUBLE.
4653         (floatsitf2): Enable for E500 double.
4654         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
4655         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
4656         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
4657         (negtf2): Change to negtf2_internal.
4658         (negtf2): New expander.
4659         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
4660         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
4661         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
4662         (movdi_internal32): Use rs6000_nonimmediate_operand.
4663         (unnamed splitter): Likewise.
4664         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
4665         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
4666         (SPE64TF, DITI): New mode macros.
4667         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
4668         modes.
4669         (frob_tf_ti): New.
4670         (frob_<mode>_di_2): New.
4671         (frob_tf_di_8_2): New.
4672         (frob_di_df): Change to frob_di_<mode>; allow more modes.
4673         (frob_ti_tf): New.
4674         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
4675         more modes.
4676         (frob_ti_<mode>_8_2): New.
4677         (frob_ti_tf_2): New.
4678         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
4679         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
4680         TFmode.
4681         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
4682         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
4683         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
4684         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
4685         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
4686         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
4687         tsttflt_gp): New.
4688
4689 2007-01-23  Ian Lance Taylor  <iant@google.com>
4690
4691         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
4692         insn-*.o first.
4693         (OBJS-archive): Reformat, alphabetize.
4694         (OBJS): Change out_object_file to OBJS-md.
4695
4696 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
4697
4698         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
4699         JUMP_P and CALL_P predicates where applicable.
4700         * config/i386/i386.c: Ditto.
4701         * config/i386/i386.md: Ditto.
4702         * config/i386/mmx.md: Ditto.
4703         * config/i386/predicates.md: Ditto.
4704
4705 2007-01-22  Andreas Schwab  <schwab@suse.de>
4706
4707         * config/m68k/m68k.h: Fix comment.
4708
4709 2007-01-22  Jan Hubicka  <jh@suse.cz>
4710
4711         * passes.c (init_optimization_passes): Do not rerun
4712         pass_early_warn_uninitialized.
4713
4714 2007-01-22  Richard Guenther  <rguenther@suse.de>
4715
4716         PR tree-optimization/30038
4717         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
4718         function.
4719         (execute_cse_sincos_1): Likewise.
4720         (execute_cse_sincos): Likewise.
4721         (gate_cse_sincos): Likewise.
4722         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
4723         the cexpi() canonicalization of sincos().
4724         * tree-pass.h (pass_cse_sincos): Declare.
4725         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
4726
4727 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
4728
4729         PR rtl-optimization/29329
4730         * combine.c (replaced_rhs_insn): Rename to i2mod.
4731         (replaced_rhs_value): Rename to i2mod_new_rhs.
4732         (i2mod_old_rhs): New global variable.
4733         (combine_instructions): Adjust for above change.  Save a copy of
4734         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
4735         note are substituted in the second instruction.
4736         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
4737         ditch the note if it pertains to the second eliminated register
4738         and this register is mentioned in i2mod_old_rhs.
4739
4740         Revert:
4741         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
4742
4743         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
4744         the insn to which the note was originally attached.
4745
4746 2007-01-21  Jan Hubicka  <jh@suse.cz>
4747
4748         * ipa-inline.c (inlining_mode): Comment, move up.
4749         (cgraph_decide_inlining_incrementally): Do not perform inlining
4750         itself; fix handling of flattening of self recursive functions.
4751         (cgraph_find_cycles): Remove.
4752         (cgraph_flatten_node): Remove.
4753         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
4754         (try_inline): New function.
4755         (cgraph_early_inlining): Update call of
4756         cgraph_decide_inlining_incrementally.  Apply inlining here.
4757         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
4758
4759 2007-01-21  Dirk Mueller  <dmueller@suse.de>
4760
4761         PR bootstrap/30511
4762         * tree-vrp.c (check_array_bounds): do not warn
4763         about ADDR_EXPR's of ARRAY_REF's which are immediately
4764         used in binary expressions.
4765
4766 2007-01-21  Ira Rosen  <irar@il.ibm.com>
4767
4768         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
4769         read_write_dep and macros for its access.
4770         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
4771         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
4772         argument, call vect_check_interleaving for every independent pair of
4773         data-refs. Mark loads that access the same memory location as a store
4774         in the loop.
4775         (vect_check_dependences): Remove.
4776         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
4777         call, fix the call to vect_analyze_data_ref_dependence.
4778         (vect_analyze_data_ref_access): For statements that access the same
4779         data-ref, check that they are not stores; for loads, check that there
4780         is no store that access the same location.
4781
4782 2007-01-20  Roger Sayle  <roger@eyesopen.com>
4783             Joseph Myers  <joseph@codesourcery.com>
4784
4785         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
4786         (-fdump-rtl-stack): Likewise.
4787         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
4788         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
4789         (-mpt-fixed): Use @minus{} for minus sign.
4790         (Using Precompiled Headers): Fix under/overfull hbox.
4791
4792 2007-01-20  Jan Hubicka  <jh@suse.cz>
4793
4794         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
4795         place within annotation.
4796
4797 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4798
4799         * pa.c (output_move_double): Change array size of xoperands to 4.
4800
4801 2007-01-20  Jan Hubicka  <jh@suse.cz>
4802
4803         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
4804         as temporary.
4805
4806 2007-01-19  Ian Lance Taylor  <iant@google.com>
4807
4808         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
4809         constant to unsigned HOST_WIDE_INT before negating.
4810
4811 2007-01-19  Ian Lance Taylor  <iant@google.com>
4812
4813         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
4814         to unsigned.
4815         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
4816         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
4817         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
4818         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
4819         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
4820         (realloc_vdef, realloc_vuse): Change second parameter to
4821         unsigned.
4822         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
4823         fields to unsigned.
4824         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
4825         unsigned. Change x and lim locals to unsigned.
4826         (realloc_vdef, realloc_vuse): Change num_elem parameter to
4827         unsigned.
4828         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
4829         (copy_virtual_operands): Change i and n locals to unsigned.
4830
4831 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4832
4833         PR middle-end/29335
4834         * builtins.c (fold_builtin_1): Handle builtin fdim.
4835
4836 2007-01-20  Jan Hubicka  <jh@suse.cz>
4837
4838         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
4839         * tree-ssa-structalias.c (compute_points_to_sets): Do call
4840         init_alias_heapvars.
4841         (init_alias_heapvars): Initialize only when not already initialized.
4842         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
4843
4844 2007-01-19  Roger Sayle  <roger@eyesopen.com>
4845
4846         * common.opt (fsigned-zeros): New command line option.
4847         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
4848         of flag_unsafe_math_optimizations.
4849         * opts.c (set_fast_math_flags): The -ffast-math command line option
4850         implies -fno-signed-zeros.
4851         (fast_math_flags_set_p): Likewise.
4852
4853         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
4854         the documentation of -ffast-math appropriately.  Wrap long lines.
4855
4856 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
4857
4858         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
4859         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
4860
4861 2007-01-19  Tomas Bily  <tbily@suse.cz>
4862
4863         * cgraphunit.c (cgraph_finalize_function): Updating of pid
4864         * tree-profile.c:
4865         (tree_init_ic_make_global_vars): New function
4866         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
4867         (tree_gen_ic_profiler): New function
4868         (tree_gen_ic_func_profiler): New function
4869         (tree_profiling): Added calling of tree_gen_ic_func_profiler
4870         (tree_profile_hooks): Added hook for indirec/virtual calls
4871         * value-prof.c (tree_find_values_to_profile): New case for
4872         indirect calls
4873         (tree_values_to_profile): Call for determining indirect/virtual
4874         counters
4875         (tree_indirect_call_to_profile): New function
4876         (tree_ic_transform): New function
4877         (tree_ic): New function
4878         (find_func_by_pid): New function
4879         (init_pid_map): New function
4880         (tree_value_profile_transformations): Added check for
4881         indirect/virtual call transformation
4882         * value-prof.h (enum hist_type): New counter type for
4883         indirect/virtual calls
4884         (profile_hooks): Added new hook for profiling indirect/virtual
4885         calls
4886         * profile.c (instrument_values): New case for indirect/virtual
4887         call added
4888         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
4889         (GCOV_COUNTER_V_INDIR): New counter type
4890         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
4891         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
4892         call added
4893         * cgraph.c: Definition of cgraph_max_pid
4894         (cgraph_create_node): Default init of pid attribute
4895         * cgraph.h: Declaration of cgraph_max_pid
4896         (struct cgraph_node): Added pid attribute
4897         * libgcov.c (__gcov_indirect_call_profiler): New function
4898         (__gcov_one_value_profiler_body): New function
4899         (__gcov_one_value_profiler): Body was moved to
4900         __gcov_one_value_profiler_body and calls it
4901
4902 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
4903
4904         * doc/gty.texi (Options): Document the mark_hook option to GTY.
4905         * gengtype.c (write_types_data, write_func_for_structure,
4906         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
4907         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
4908         (walk_type, write_func_for_structure): Generate the mark_hook if
4909         needed.
4910
4911 2007-01-19  Jan Hubicka  <jh@suse.cz>
4912
4913         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
4914         'early' argument take inlining mode argument specifying whether to
4915         inline for size/speeed or all functions; add support for flattening;
4916         improve dumpting.
4917         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
4918
4919 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4920
4921         PR c++/17947
4922         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
4923         the name of the declared identifier.
4924
4925 2007-01-19  Dirk Mueller  <dmueller@suse.de>
4926
4927         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
4928         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
4929         duplicate evaluation.
4930
4931 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
4932
4933         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
4934         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
4935         to XFMode, use acosxf2 and truncate result to requested mode.
4936         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
4937         (asin<mode>2): Similarly, with asin expanders.
4938         (*fscalexf4_i387): Rename from *fscalexf4.
4939         (expNcorexf3): New expander.
4940         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
4941         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
4942         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
4943         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
4944         patterns for SSE math.
4945         (exp10<mode>2): Similarly, with exp10 expanders.
4946         (exp2<mode>2): Similarly, with exp2 expanders.
4947         (expm1<mode>2): Similarly, with expm1 expanders.
4948         (ldexp<mode>3): Similarly, with ldexp expanders.
4949         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
4950         Use gen_truncxf<mode>2_i387_noop to truncate result.
4951
4952 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
4953
4954         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
4955         for ColdFire targets.
4956
4957 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
4958             Richard Sandiford  <richard@codesourcery.com>
4959
4960         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
4961         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
4962         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
4963         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
4964         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
4965         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
4966
4967 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
4968
4969         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
4970         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
4971         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
4972         (*adddi_dilshr32_cf): New pattern.
4973         (adddi3, subdi3): Remove first alternatives.
4974
4975 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
4976
4977         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
4978         implemented using move.l, do not use its cc result for floating-point
4979         comparisons.
4980
4981 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
4982
4983         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
4984         from accepting 's' constraints if flag_pic.
4985
4986 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
4987
4988         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
4989         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
4990         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
4991         condition from TARGET_68881 to TARGET_HARD_FLOAT.
4992
4993 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
4994
4995         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
4996         ColdFire alternatives.
4997         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
4998         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
4999         architectures that support ff1 instruction.
5000
5001 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
5002             Julian Brown  <julian@codesourcery.com>
5003
5004         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
5005         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
5006         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
5007         Add commentary.
5008
5009 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
5010
5011         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
5012         and return a bool.
5013         (output_move_const_into_data_reg, output_move_simode_const): Delete.
5014         * config/m68k/m68k.c (const_method, const_int_cost): Take a
5015         HOST_WIDE_INT instead of an rtx.
5016         (m68k_rtx_costs): Update call accordingly.
5017         (output_move_const_into_data_reg): Likewise.  Fix formatting.
5018         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
5019         Return a bool.
5020         (output_move_simode_const): Update calls after above changes.
5021         Rework to use automatic variables and predicates like MEM_P.
5022         * config/m68k/m68k.md (pushexthisi_const): Update call to
5023         valid_mov3q_const.
5024
5025 2007-01-19  Dirk Mueller  <dmueller@suse.de>
5026
5027         * tree-ssa-alias.c (perform_var_substitution): Fix typo
5028         in dump_flags test.
5029
5030 2007-01-19  Richard Guenther  <rguenther@suse.de>
5031
5032         * builtins.c (expand_builtin_cexpi): Fall back to expanding
5033         via cexp in case sincos is not available.
5034
5035 2007-01-19  Richard Guenther  <rguenther@suse.de>
5036
5037         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
5038         * defaults.h (TARGET_HAS_SINCOS): Default to off.
5039         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
5040         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
5041         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
5042         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
5043         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
5044         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
5045
5046 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
5047
5048         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
5049         New insn patterns.
5050         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
5051         (atan2xf3): Directly generate RTL pattern.
5052         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
5053         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
5054         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
5055         disable patterns for SSE math.
5056         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
5057         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
5058         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
5059         disable patterns for SSE math.
5060
5061 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
5062
5063         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
5064
5065 2007-01-18  Roger Sayle  <roger@eyesopen.com>
5066
5067         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
5068         VIEW_CONVERT_EXPR to the same type as it's operand.
5069
5070 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
5071
5072         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
5073         configured for long double 128.
5074
5075 2007-01-18  Mike Stump  <mrs@apple.com>
5076
5077         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
5078         error.
5079
5080 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
5081
5082         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
5083         type correct.
5084
5085 2007-01-18  Jan Hubicka  <jh@suse.cz>
5086
5087         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
5088         greater than NUM_VOP_FREE_BUCKETS.
5089
5090 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
5091
5092         * tree-ssa-structalias.c: Update comments.
5093         (ptabitmap_obstack): Removed.
5094         (pta_obstack): New.
5095         (oldpta_obstack): Ditto.
5096         (stats): Add a few members.
5097         (struct variable_info): Remove node, complex, address_taken, and
5098         indirect_target members. Add oldsolution member.
5099         (new_var_info): Do not initialize removed members.
5100         (constraint_expr_type): Remove INCLUDES.
5101         (constraint_graph): Add size, implicit_preds, rep,
5102         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
5103         (FIRST_REF_NODE): New macro.
5104         (LAST_REF_NODE): Ditto.
5105         (FIRST_ADDR_NODE): Ditto.
5106         (find): New function.
5107         (unite): Ditto.
5108         (dump_constraint): Do not handle INCLUDES.
5109         (insert_into_complex): Do not insert duplicate constraints.
5110         (condense_varmap_nodes): Renamed and rewritten into ...
5111         (merge_node_constraints): This. Also fix bug in handling of
5112         offseted copy constraints.
5113         (clear_edges_for_node): No longer need to deal with preds at all,
5114         or removing associated preds/succs.
5115         (merge_graph_nodes): Deal with indirect_cycles.
5116         Don't deal with predecessors.
5117         (add_implicit_graph_edge): New function.
5118         (add_pred_graph_edge): Ditto.
5119         (add_graph_edge): Don't deal with predecessors.
5120         (build_constraint_graph): Removed.
5121         (build_pred_graph): New function.
5122         (build_succ_graph): Ditto.
5123         (struct scc_info): Removed in_component. Added roots, dfs, and
5124         node_mapping. Remove visited_index, unification_queue.
5125         (scc_visit): Deal with union-find we do now.
5126         Deal with cycles with REF nodes.
5127         (collapse_nodes): Renamed and rewritten to ...
5128         (unify_nodes): This.
5129         (process_unification_queue): Removed.
5130         (topo_visit): Cleanup
5131         (do_da_constraint): Use find.
5132         (do_sd_constraint): Ditto.
5133         (do_ds_constraint): Ditto.
5134         (do_complex_constraint): Ditto.
5135         (init_scc_info): Update for removed and added members.
5136         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
5137         (find_indirect_cycles): This.
5138         (equivalence_class): New variable.
5139         (label_visit): New function.
5140         (perform_variable_substitution): Rewritten.
5141         (free_var_substitution_info): New function.
5142         (find_equivalent_node): Ditto.
5143         (move_complex_constraints): Ditto.
5144         (eliminate_indirect_cycles): Ditto.
5145         (solve_graph): Only propagate changed bits.
5146         Use indirect cycle elimination.
5147         Use find.
5148         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
5149         (tree_id_eq): Renamed to ...
5150         (tree_vi_eq): This. Update for member change
5151         (insert_id_for_tree): Renamed and rewritten to ...
5152         (insert_vi_for_tree): This.
5153         (lookup_id_for_tree): Renamed and rewritten to ...
5154         (lookup_vi_for_tree): This.
5155         (get_id_for_tree): Renamed and rewritten to ...
5156         (get_vi_for_tree): Ditto.
5157         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
5158         (process_constraint): Don't handle INCLUDES.
5159         Remove special ADDRESSOF case.
5160         (find_func_aliases): Rewrite to use vi functions instead of id
5161         ones.
5162         (create_function_info_for): Ditto.
5163         (create_variable_info_for): Ditto.
5164         (intra_create_variable_infos): Ditto.
5165         (merge_smts_into): Ditto.
5166         (find_what_p_points_to): Ditto.
5167         (init_base_vars): Ditto.
5168         (init_alias_vars): Ditto.
5169         (remove_preds_and_fake_succs): New function.
5170         (dump_sa_points_to_info): Dump new stats.
5171         (dump_solution_for_var): Use find.
5172         (set_used_smts): Fix formatting.
5173         (compute_points_to_sets): Updated for new functions.
5174         (ipa_pta_execute): Ditto.
5175
5176 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
5177             Richard Sandiford  <richard@codesourcery.com>
5178
5179         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
5180         parallels.
5181         * calls.c (expand_call): If the return value is a PARALLEL,
5182         extract its first member.
5183         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
5184         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
5185         use FUNCTION_EXTRA_EPILOGUE.
5186         (m68k_function_value): Return a PARALLEL if the return value
5187         is of a pointer type.
5188         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
5189         (FUNCTION_EXTRA_EPILOGUE): Remove.
5190         * config/m68k/m68k.md (D0_REG): New constant.
5191
5192 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
5193
5194         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
5195         output a NOP for empty epilogues.
5196
5197 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5198
5199         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
5200         before function.  Extend register save check to include all
5201         registers, not just integer ones.
5202
5203 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
5204
5205         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
5206         (m68k_use_return_insn): ...this.
5207         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
5208         * config/m68k/m68k.c (use_return_insn): Rename to...
5209         (m68k_use_return_insn): ...this.
5210         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
5211         of USE_RETURN_INSN.
5212
5213 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5214
5215         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
5216         nearest even, fix denormal rounding overflow.
5217
5218 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5219
5220         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
5221         f%$smove and f%$move.
5222         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
5223         (extendsfdf2_cf): Use fdmove instead of f%&move.
5224         (truncdfsf2_cf): Use fsmove instead of f%$smove.
5225         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
5226
5227 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5228
5229         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
5230         GPR<-GPR moves.
5231
5232 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5233
5234         * real.h (real_format): Add a canonical_nan_lsbs_set field.
5235         (coldfire_single_format): Declare.
5236         (coldfire_double_format): Likewise.
5237         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
5238         of qnan_msb_set to determine the lower bits of a canonical
5239         NaN significand.
5240         (encode_ieee_double): Likewise.
5241         (encode_ieee_quad): Likewise.
5242         (ieee_single_format): Initialize canonical_nan_lsbs_set.
5243         (mips_single_format): Likewise.
5244         (ieee_double_format): Likewise.
5245         (mips_double_format): Likewise.
5246         (ieee_extended_motorola_format): Likewise.
5247         (ieee_extended_intel_96_format): Likewise.
5248         (ieee_extended_intel_128_format): Likewise.
5249         (ieee_extended_intel_96_round_53_format): Likewise.
5250         (ibm_extended_format): Likewise.
5251         (mips_extended_format): Likewise.
5252         (ieee_quad_format): Likewise.
5253         (mips_quad_format): Likewise.
5254         (vax_f_format): Likewise.
5255         (vax_d_format): Likewise.
5256         (vax_g_format): Likewise.
5257         (i370_single_format): Likewise.
5258         (i370_double_format): Likewise.
5259         (decimal_single_format): Likewise.
5260         (decimal_double_format): Likewise.
5261         (decimal_quad_format): Likewise.
5262         (c4x_single_format): Likewise.
5263         (c4x_extended_format): Likewise.
5264         (real_internal_format): Likewise.
5265         (coldfire_single_format): New real_format.
5266         (coldfire_double_format): Likewise.
5267         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
5268         canonical_nan_lsbs_set.
5269         (pdp11_d_format): Likewise.
5270         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
5271         if TARGET_COLDFIRE_CPU.
5272
5273 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5274
5275         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
5276         (output_call, m68k_legitimize_call_address): Declare.
5277         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
5278         parenthesees.  Add support for a 'W' constraint.
5279         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
5280         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
5281         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
5282         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
5283         variables.
5284         (override_options): Initialize them.  Do not set flag_no_function_cse
5285         for TARGET_ID_SHARED_LIBRARY.
5286         (m68k_output_pic_call): Delete.
5287         (m68k_legitimize_call_address): New function.
5288         (print_operand): Remove the %o prefix.  Handle the %p prefix.
5289         (output_call): New function.
5290         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
5291         target address from the GOT if symbolic jumps are not allowed.
5292         * config/m68k/m68k.md (call, general_operand): Do not set
5293         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
5294         Merge separate flag_pic and !flag_pic define_insns into...
5295         (*call, *call_value): ...these new patterns.  Match the address
5296         rather than the containing MEM and require it to be a call_operand.
5297         Use output_call to generate the asm template.
5298         * config/m68k/predicates.md (const_call_operand): New predicate.
5299         (call_operand): Likewise.
5300
5301 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5302
5303         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
5304         (STACK_GROWS_DOWNWARD): Define to 1.
5305         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
5306         comments, emphasizing that these values are only defaults.
5307         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
5308         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
5309
5310 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5311
5312         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
5313
5314 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
5315             Richard Sandiford  <richard@codesourcery.com>
5316
5317         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
5318         (FP_REGNO_P): New macros.
5319         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
5320         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
5321         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
5322         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
5323
5324 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5325
5326         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
5327         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
5328         to $tmake_file.
5329         * config/m68k/t-floatlib: New file, extracting common code from...
5330         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
5331         * config/m68k/t-uclinux: Here.
5332         * config/m68k/fpgnulib.c: Do not compile extendeed precision
5333         routines on ColdFire targets.
5334
5335 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5336
5337         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
5338         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
5339         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
5340         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
5341         explicitly set MOTOROLA to 1.
5342         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
5343
5344 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5345             Nathan Sidwell  <nathan@codesourcery.com>
5346
5347         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
5348         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
5349         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
5350         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
5351         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
5352         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
5353         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
5354         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
5355         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
5356         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
5357         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
5358         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
5359         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
5360         (DBX_REGISTER_NUMBER): Delete.
5361         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
5362         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
5363         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
5364
5365 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5366
5367         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
5368         * config/flat.h: New file.
5369         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
5370         OBJECT_FORMAT_FLAT.
5371         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
5372         indirect references for -msep-data or -mid-shared-library.
5373         Do not use PC-relative code addresses either.
5374         * config/m68k/m68k.c (override_options): Restrict -fPIC error
5375         to -mpcrel.
5376         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
5377         for shared libraries and crt1.o for executables.  Use crti.o and
5378         crtbegin.o.
5379         (ENDFILE_SPEC): Use crtend.o and crtn.o.
5380         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
5381         Do not add -elf2flt or -shared-lib-id options here.
5382         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
5383         Pass -shared-lib-id if -mid-shared-library, taking the library
5384         identifier from -mshared-library-id if given, otherwise
5385         defaulting to 0.
5386         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
5387         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
5388         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
5389         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
5390         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
5391         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
5392         and crtend.o.
5393         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
5394         jump sequence for ISA A and ISA A+.
5395         (PICJUMP): Likewise.
5396
5397 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5398
5399         * config.gcc (m68k-*-uclinux*): Base the port on the common
5400         and m68k GNU/Linux files rather than on the generic ELF ones.
5401         * config/m68k/uclinux.h (TARGET_VERSION): Override.
5402         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
5403
5404 2007-01-18  Julian Brown  <julian@codesourcery.com>
5405             Richard Sandiford  <richard@codesourcery.com>
5406
5407         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
5408         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
5409         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
5410         before redefining.
5411         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
5412         80 unconditionally.
5413         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
5414
5415 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5416
5417         * doc/install.texi: Document m68k-uclinuxoldabi.
5418         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
5419         * config/m68k/uclinux-oldabi.h: New file, copied from
5420         config/m68k/uclinux.h.
5421
5422 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5423
5424         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
5425         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
5426         (m32r_compute_frame_size): Use unsigned for regno.
5427         (m32r_reload_lr): Use gen_frame_mem.
5428         (pop): New.
5429         (m32r_output_function_epilogue): Don't output the function epilogue
5430         textually here.
5431         (m32r_expand_epilogue): New.
5432         (direct_return): Return false if the function has the interrupt
5433         attribute.
5434         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
5435         * config/m32r/m32r.md (epilogue): New expander.
5436         (return_lr, return_rte): New insns.
5437         (return): Make it expander.
5438         (return_normal): New expander.
5439
5440 2007-01-18  Josh Conner  <jconner@apple.com>
5441
5442         PR target/30485
5443         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
5444         support for UNLE, UNLT, UNGE, and UNGT.
5445
5446 2007-01-18  Jan Hubicka  <jh@suse.cz>
5447
5448         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
5449         * tree-tailcall (add_virtual_phis): Likewise.
5450         (optimize_tail_call): Return TODOs.
5451         (execute_tail_calls): Return TODOs.
5452         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
5453         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
5454         changed.
5455         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
5456         Cleanup cfg using TODO.
5457         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
5458         * passes.c (execute_function_todo): When cleanup did something, remove
5459         unused locals.
5460         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
5461         (make_edges): Don't cleanup_cfg.
5462
5463 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
5464
5465         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
5466         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
5467         operate on the top of stack.
5468         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
5469         register handling of instructions that output to the second
5470         stack slot.
5471         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
5472         (move_for_stack_reg): Special-case check for dead destination
5473         stack slot for constant load of 1.0 inside UNSPEC_TAN.
5474
5475         * config/i386/i386.md (UNSPEC_TAN): New constant.
5476         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
5477         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
5478         to correctly model move of constant 1.0 to top stack slot.
5479         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
5480         (unnamed peephole2 pattern): Remove corresponding peephole2
5481         pattern that optimizes tan insn and loading of constant 1.0.
5482         (tanxf2): Use fptanxf4_i387.
5483         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
5484         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
5485         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
5486         disable patterns for SSE math.
5487         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
5488         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
5489
5490 2007-01-18  Dirk Mueller  <dmueller@suse.de>
5491             Richard Guenther <rguenther@suse.de>
5492
5493         PR diagnostic/8268
5494         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
5495         * common.opt (Warray-bounds): Add new warning option.
5496         * c-opts.c (c_common_handle_option): Define -Warray-bounds
5497         if -Wall is given.
5498         * Makefile.in: make tree-vrp.o depend on toplev.h
5499         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
5500         is enabled.
5501         (check_array_refs, check_array_bounds, check_array_ref): New.
5502
5503 2007-01-18  Jan Hubicka  <jh@suse.cz>
5504
5505         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
5506         (execute_ssa_ccp): Return flags conditionally.
5507         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
5508         changed.
5509         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
5510
5511 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
5512
5513         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
5514         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
5515
5516         * Makefile.c (GTFILES): Add cfglayout.h.
5517         * gengtype.c (open_base_files): Likewise.
5518         * cfglayout.c (cfg_layout_function_footer,
5519         cfg_layout_function_header) Reindent to make gengtype happy.
5520         * cfglayout.h (cfg_layout_function_footer,
5521         cfg_layout_function_header): Add GTY(()) marker.
5522
5523         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
5524
5525 2007-01-18  Ben Elliston  <bje@au.ibm.com>
5526
5527         * genautomata.c (write_automata): Include xstrerror output in the
5528         error message if writing the DFA description file fails.
5529
5530 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
5531
5532         * config/mips/mips-protos.h (mips_output_external): Make it
5533         return void.
5534         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
5535         * config/mips/mips.c (irix_output_external_libcall): Likewise.
5536         (extern_list): Likewise.
5537         (extern_head): Likewise.
5538         (TARGET_ASM_FILE_END): Likewise.
5539         (mips_file_end): Likewise.
5540         (mips_output_external): Rewritten.
5541
5542 2007-01-18  Ben Elliston  <bje@au.ibm.com>
5543
5544         * genpreds.c (write_insn_preds_c): Only write out the function
5545         body for regclass_for_constraint if we have register constraints.
5546
5547 2007-01-17  Tom Tromey  <tromey@redhat.com>
5548
5549         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
5550         * doc/install.texi (Testing): Use sourceware.org.
5551         (Binaries): Likewise.
5552         (Specific): Likewise.
5553         * doc/contrib.texi (Contributors): Use sourceware.org.
5554
5555 2007-01-17  Anatoly Sokolov <aesok@post.ru>
5556
5557         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
5558         (AVR_ENHANCED): Rename to ...
5559         (AVR_HAVE_MUL): ... new.
5560         (avr_enhanced_p): Rename to ...
5561         (avr_have_mul_p): ... new.
5562         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
5563         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
5564         * config/avr/avr.c (avr_enhanced_p): Rename to ...
5565         (avr_have_mul_p): ... new.
5566         (base_arch_s): Rename 'enhanced' to 'have_mul'.
5567         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
5568         'avr_enhanced_p' and 'enhanced'.
5569         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
5570         AVR_HAVE_MUL instead of AVR_ENHANCED.
5571         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
5572         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
5573         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
5574         instead of AVR_ENHANCED.
5575         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
5576         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
5577         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
5578
5579 2007-01-17  Ian Lance Taylor  <iant@google.com>
5580
5581         * vec.h (VEC_reserve_exact): Define.
5582         (vec_gc_p_reserve_exact): Declare.
5583         (vec_gc_o_reserve_exact): Declare.
5584         (vec_heap_p_reserve_exact): Declare.
5585         (vec_heap_o_reserve_exact): Declare.
5586         (VEC_OP (T,A,reserve_exact)): New static inline function, three
5587         versions.
5588         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
5589         negative parameter.
5590         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
5591         (VEC_OP (T,A,copy)) [all versions]: Likewise.
5592         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
5593         * vec.c (calculate_allocation): Add exact parameter.  Change all
5594         callers.
5595         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
5596         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
5597         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
5598         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
5599         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
5600         (vec_heap_p_reserve_exact): New function.
5601         (vec_heap_o_reserve_exact): New function.
5602
5603 2007-01-17  Jan Hubicka  <jh@suse.cz>
5604
5605         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
5606
5607 2007-01-17  Eric Christopher  <echristo@apple.com>
5608
5609         * config.gcc: Support core2 processor.
5610
5611 2007-01-16  Jan Hubicka  <jh@suse.cz>
5612
5613         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
5614         the names, just unlink the chain so we don't crash on dangling pointers
5615         to dead SSA names.
5616
5617 2007-01-16  Jan Hubicka  <jh@suse.cz>
5618
5619         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
5620         * tree-pass.h: Reorder to make IPA passes appear toegher.
5621         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
5622         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
5623         parameters, do not call early inliner.
5624         * ipa-inline.c: Update comments.  Include tree-flow.h
5625         (cgraph_decide_inlining): Do not compute inlining parameters.
5626         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
5627         be called with function context set up.
5628         (pass_ipa_inline): Remove unreachable functions before pass.
5629         (cgraph_early_inlining): Simplify assuming to be called from the
5630         PM as local pass.
5631         (pass_early_inline): New pass.
5632         (cgraph_gate_ipa_early_inlining): New gate.
5633         (pass_ipa_early_inline): Turn into simple wrapper.
5634         (compute_inline_parameters): New function.
5635         (gate_inline_passes): New gate.
5636         (pass_inline_parameters): New pass.
5637         (apply_inline): Move here from tree-optimize.c
5638         (pass_apply_inline): New pass.
5639         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
5640         transforming.
5641         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
5642         doing them by hand.
5643         (tree_function_versioning): Do not allocate dummy struct function.
5644         * tree-inline.h (optimize_inline_calls): Update prototype.
5645         * tree-optimize.c (execute_fixup_cfg): Export.
5646         (pass_fixup_cfg): Remove
5647         (tree_rest_of_compilation): Do not apply inlines.
5648         * tree-flow.h (execute_fixup_cfg): Declare.
5649         * Makefile.in (gt-passes.c): New.
5650         * passes.c: Include gt-passes.h
5651         (init_optimization_passes): New passes.
5652         (nnodes, order): New static vars.
5653         (do_per_function_toporder): New function.
5654         (execute_one_pass): Dump current pass here.
5655         (execute_ipa_pass_list): Don't dump current pass here.
5656
5657 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
5658
5659         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
5660         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
5661
5662 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
5663
5664         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
5665         (strong_alias): Define.
5666         (__gcc_qmul): Provide non-FMA for soft-float.
5667         (__gcc_qdiv): Same.
5668         (__gcc_qneg): New.
5669         (__gcc_qeq): New.
5670         (__gcc_qle): New.
5671         (__gcc_qge): New.
5672         (__gcc_qunord): New.
5673         (__gcc_stoq): New.
5674         (__gcc_dtoq): New.
5675         (__gcc_qtos): New.
5676         (__gcc_qtod): New.
5677         (__gcc_qtoi): New.
5678         (__gcc_qtou): New.
5679         (__gcc_itoq): New.
5680         (__gcc_utoq): New.
5681         (fmsub): New.
5682         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
5683         soft-float functions.
5684         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
5685         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
5686         about long double soft float.
5687
5688 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
5689             Tehila Meyzels  <tehila@il.ibm.com>
5690
5691         * tree-vectorizer.h (is_pattern_stmt_p): New.
5692         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
5693         formatting (tabs instead of spaces). Cleanup and clarify setting
5694         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
5695         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
5696         (vectorizable_type_demotion): Check that types are integral.
5697         (vectorizable_type_promotion): Likewise.
5698         (vectorizable_store): Fix typo.  Eliminate new-line at end of
5699         comments.
5700
5701 2007-01-16  Jan Hubicka  <jh@suse.cz>
5702
5703         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
5704         cgraph edges too.
5705
5706 2007-01-15  Eric Christopher  <echristo@apple.com>
5707
5708         * ifcvt.c: Include vec.h, vecprim.h.
5709         (check_cond_move_block): New argument regs.
5710         Reorganize. Add registers used to regs.
5711         (cond_move_process_if_block): Use regs set above as
5712         loop bounds.
5713
5714 2007-01-15  Eric Christopher  <echristo@apple.com>
5715
5716         * config/darwin.h: Update copyright.
5717         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
5718         (LINK_COMMAND_SPEC): Add -u.
5719         (LINK_SPEC): Fix umbrella for above.
5720
5721 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
5722
5723         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
5724         glibc CVS.
5725
5726 2007-01-15  Tom Tromey  <tromey@redhat.com>
5727
5728         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
5729         * doc/install.texi (Testing): Don't mention jacks.
5730         (Configuration): Document --enable-java-maintainer-mode.  Move
5731         --with-java-home to libgcj-specific section.  Document
5732         --with-ecj-jar.
5733         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
5734
5735 2007-01-15  Jan Hubicka  <jh@suse.cz>
5736
5737         * tree-ssa-dce.c (DCE_TODOs): New.
5738         (propagate_necessity): Return if something changed.
5739         (eliminate_unnecessary_stmts): Likewise.
5740         (perform_tree_ssa_dce): Return TODO flags when needed.
5741         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
5742
5743 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
5744
5745         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
5746         (fyl2x_extend<mode>xf3_i387): New insn pattern.
5747         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
5748         patterns using X87MODEF12 mode macro.  Extend operand 1
5749         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
5750         (log10<mode>2): Ditto.
5751         (log2<mode>2): Ditto.
5752         (log1p<mode>2): Ditto.
5753         (logb<mode>2): Ditto.
5754         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
5755         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
5756         (*fxtractxf3_i387): Rename from *fxtractxf3.
5757         (fxtract_extend<mode>xf3_i387): New insn pattern.
5758         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
5759         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
5760         and gen_fyl2xxf3_i387().
5761
5762 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
5763
5764         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
5765         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
5766         get_loop_exit_edges.  Changed return type to bool.
5767         * cfgloop.h (fix_loop_placement): Declaration removed.
5768
5769 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
5770
5771         * param.h (MIN_VECT_LOOP_BOUND): New.
5772         * params.def (MIN_VECT_LOOP_BOUND): New.
5773         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
5774         argument - minimum threshold for number of iterations.
5775         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
5776         argument to declaration.
5777         * tree-vect-analyze.c (vect_analyze_operations): Check value of
5778         MIN_VECT_LOOP_BOUND.
5779         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
5780         slpeel_tree_peel_loop_to_edge with additional argument.
5781         (vect_do_peeling_for_alignment): Likewise.
5782         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
5783
5784 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
5785
5786         PR target/30413
5787         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
5788         operands of size 1.
5789
5790 2007-01-14  Jan Hubicka  <jh@suse.cz>
5791
5792         * tree-dfa.c (remove_referenced_var): New function.
5793         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
5794         prune referenced vars list too.
5795         * tree-flow.h (remove_referenced_var): Declare.
5796
5797 2007-01-14  Jan Hubicka  <jh@suse.cz>
5798
5799         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
5800         separately.
5801         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
5802         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
5803         * except.h (verify_eh_throw_table_statements): Kill prototype.
5804         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
5805         into call exrepssions.
5806         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
5807         eh trhow verifier.
5808         * tree-cfg.c: Include pointer-set.h.
5809         (verify_node_sharing): Work on pointer set.
5810         (verify_eh_throw_stmt_node): New.
5811         (verify_stmts): Use pointers sets, verify throw_stmt.
5812
5813 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
5814
5815         * ipa-reference.c (analyze_function): Consider also addresses taken
5816         in phi nodes.
5817
5818 2007-01-12  Roger Sayle  <roger@eyesopen.com>
5819
5820         * c-typeck.c (null_pointer_constant_p): Replace use of
5821         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
5822         (build_c_cast): Likewise.
5823
5824 2007-01-12  Roger Sayle  <roger@eyesopen.com>
5825
5826         * tree.h (force_fit_type_double): Remove unused final argument.
5827         * c-common.c (constant_expression_warning): Replace use of
5828         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
5829         (convert_and_check): Likewise.
5830         (shorten_compare): Update call to force_fit_type_double.
5831         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
5832         * convert.c (convert_to_pointer): Update call to
5833         force_fit_type_double.
5834         * fold-const.c (force_fit_type_double): Remove overflowed_const
5835         argument.
5836         (int_const_binop, fold_convert_const_int_from_int,
5837         fold_convert_const_int_from_real, fold_div_compare,
5838         fold_sign_changed_comparison, fold_unary, fold_negate_const,
5839         fold_abs_const, fold_not_const): Remove the final argument from
5840         calls to force_fit_type_double.
5841
5842 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5843
5844         * configure.ac: Set insn to "nop" for spu-*-* also.
5845         * configure: Regenerate.
5846
5847 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
5848
5849         * builtins.def : Add BUILT_IN_FREE.
5850
5851 2007-01-12  Jan Hubicka  <jh@suse.cz>
5852
5853         PR tree-optimization/30443
5854         * tree-inline.c (tree_function_versioning): Do not optimize when
5855         cloning for inlining.
5856
5857 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
5858
5859         * doc/loop.texi: Document recording of loop exits.
5860         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
5861         (update_single_exits_after_duplication,
5862         update_single_exit_for_duplicated_loop,
5863         update_single_exit_for_duplicated_loops): Removed.
5864         (duplicate_loop_to_header_edge): Do not call
5865         update_single_exits_after_duplication and
5866         update_single_exit_for_duplicated_loops.
5867         (loop_version): Do not update single_exit information.
5868         (fix_loop_structure): Use record_loop_exits instead of
5869         mark_single_exit_loops.
5870         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
5871         the lists of loop exits.
5872         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
5873         split_edge, merge_blocks): Update the lists of loop exits.
5874         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
5875         loop_optimizer_init.
5876         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
5877         of mark_single_exit_loops.
5878         (loop_optimizer_finalize): Call release_recorded_exits.
5879         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
5880         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
5881         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
5882         update single exit information.
5883         * lambda-code.c (perfect_nestify): Ditto.
5884         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
5885         (mark_single_exit_loops): Removed.
5886         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
5887         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
5888         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
5889         functions.
5890         (get_loop_exit_edges, single_exit): Use recorded exit lists.
5891         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
5892         (verify_loop_structure): Verify consistency of the exit lists.
5893         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
5894         (set_single_exit): Removed.
5895         * cfgloop.h (struct loop_exit): New function.
5896         (struct loop): single_exit_ field replaced by exits field.
5897         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
5898         (struct loops): Added exits hash.
5899         (mark_single_exit_loops, set_single_exit): Declaration removed.
5900         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
5901
5902 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
5903
5904         * doc/invoke.texi: Avoid use of @headitem.
5905
5906 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
5907
5908         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
5909
5910 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
5911
5912         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
5913         list of targets.
5914
5915 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
5916             Richard Sandiford  <richard@codesourcery.com>
5917
5918         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
5919         * config/m68k/m68k.opt: Resort options.
5920         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
5921
5922 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
5923             Richard Sandiford  <richard@codesourcery.com>
5924
5925         * doc/invoke.texi: Document the macros that are defined by
5926         m68k's -mtune and -mhard-float options.
5927         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
5928         (m68k_cpp_cpu_family): Likewise.
5929         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
5930         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
5931         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
5932         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
5933         (m68k_cpp_cpu_family): Likewise.
5934
5935 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
5936
5937         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
5938         macros besides mc68000 as tuning macros.  Use a switch statement
5939         to set them and mcpu32.
5940
5941 2007-01-12  Julian Brown  <julian@codesourcery.com>
5942
5943         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
5944         (TARGET_68040_ONLY): Rename to...
5945         (TARGET_68040): ...this.
5946         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
5947         * config/m68k/m68k.md: Likewise.
5948
5949 2007-01-12  Julian Brown  <julian@codesourcery.com>
5950             Nathan Sidwell  <nathan@codesourcery.com>
5951             Richard Sandiford  <richard@codesourcery.com>
5952
5953         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
5954         the -mcpu= argument associated with the --with-cpu setting.
5955         Define M68K_DEFAULT_TUNE to the default -mtune= option,
5956         if different from the one implied by the -mcpu setting.
5957         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
5958         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
5959         * doc/invoke.texi: Mention ColdFire in the introduction to the
5960         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
5961         -mno-div and -mhard-float options.  Make -m68881 a synonym for
5962         -mhard-float.  Document the previously-undocumented -m5206e,
5963         -m528x, -m5307 and -m5407 options.  Tweak the existing option
5964         documentation for consistency.
5965         * doc/install.texi: Mention new --with-cpu arguments.
5966         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
5967         default CPU if neither -mcpu nor -march are specified.
5968         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
5969         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
5970         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
5971         using m68k_tune to decide between families that implement the
5972         same ISA.  Use m68k_tune to set __mcfv4e__.
5973         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
5974         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
5975         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
5976         (FL_ISA_C, FL_ISA_MMU): New macros.
5977         (MASK_COLDFIRE): Delete.
5978         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
5979         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
5980         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
5981         (TARGET_HARD_FLOAT): Do not define here.
5982         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
5983         (TUNE_68000): New macro.
5984         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
5985         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
5986         (TUNE_CFV2): Redefine in terms of m68k_tune.
5987         (uarch_type, target_device, fpu_type): New enums.
5988         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
5989         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
5990         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
5991         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
5992         (FL_FOR_isa_c): New macros.
5993         (m68k_isa): New enum.
5994         (m68k_target_selection): New structure.
5995         (all_devices, all_isas, all_microarchs): New tables.
5996         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
5997         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
5998         (MASK_ALL_CPU_BITS): Delete.
5999         (m68k_find_selection): New function.
6000         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
6001         Map the legacy target options to a combination of the new ones.
6002         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
6003         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
6004         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
6005         settings.
6006         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
6007         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
6008         properties.
6009         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
6010         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
6011         * config/m68k/m68k-devices.def: New file.
6012
6013 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
6014             Nathan Sidwell  <nathan@codesourcery.com>
6015
6016         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
6017         (SUBTARGET_EXTRA_SPECS): New macros.
6018         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
6019         use %(asm_cpu_spec) instead.
6020         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
6021         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
6022         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
6023         (EXTRA_SPECS): Rename to...
6024         (SUBTARGET_EXTRA_SPECS): ...this.
6025
6026 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
6027             Richard Sandiford  <richard@codesourcery.com>
6028             Julian Brown  <julian@codesourcery.com>
6029
6030         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
6031         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
6032         to the configuration's default CPU.
6033         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
6034         Remove default masks.
6035         (m680[012]0-*-*): Set the default with_cpu to the first part of
6036         the target name.
6037         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
6038         (m68k*-*-linux): Extend the --with-cpu handling to...
6039         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
6040         and m68010.  Don't set target_cpu_default2.
6041         * doc/install.texi: Document --with-cpu for m68k.
6042         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
6043         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
6044         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
6045         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
6046         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
6047         (ASM_SPEC): Remove use of %(asm_cpu_default).
6048         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
6049         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
6050         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
6051         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
6052         __HAVE_FPU__ if TARGET_HARD_FLOAT.
6053         (TARGET_DEFAULT): Delete.
6054         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
6055         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
6056         (CPP_CPU_SPEC): Delete.
6057         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
6058         the appropriate string.
6059         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
6060         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
6061         (ASM_SPEC): Don't use %(asm_default_spec).
6062         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
6063         TARGET_DEFAULT and add MASK_68881.
6064         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
6065
6066 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
6067
6068         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
6069         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
6070         MASK_68010 alongside MASK_68020.
6071         * doc/invoke.texi: Document -m68010.
6072         * config/m68k/m68k.opt (m68010): New.
6073         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
6074         if TUNE_68010.
6075         (TUNE_68010): New macro.
6076         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
6077         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
6078         (M68K_CPU_m68332): Add MASK_68010.
6079         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
6080         fallback definition.
6081         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
6082         defines.
6083         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
6084         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
6085         to all entries that use MASK_68020.
6086         (output_move_simode_const, output_move_himode, output_move_qimode)
6087         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
6088         instead of TARGET_68020 to select clr behavior.  Remove comment
6089         about there being no TARGET_68010.
6090         * config/m68k/m68k.md: Likewise throughout.
6091
6092 2007-01-12  Julian Brown  <julian@codesourcery.com>
6093
6094         * config/m68k/m68k.h (TARGET_ISAB): New macro.
6095         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
6096         * config/m68k/m68k.md: Likewise.
6097
6098 2007-01-12  Julian Brown  <julian@codesourcery.com>
6099
6100         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
6101         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
6102
6103 2007-01-12  Julian Brown  <julian@codesourcery.com>
6104
6105         * config/m68k/m68k.h (TUNE_68040_60): New macro.
6106         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
6107         * config/m68k/m68k.md: Likewise.
6108
6109 2007-01-12  Julian Brown  <julian@codesourcery.com>
6110             Richard Sandiford  <richard@codesourcery.com>
6111
6112         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
6113         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
6114         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
6115         TARGET_CPU32.
6116         (TARGET_CPU32): Rename to...
6117         (TUNE_CPU32): ...this.
6118         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
6119         (TUNE_CFV2): New macros.
6120         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
6121         remove conditions that are implied by TARGET_68020.
6122         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
6123         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
6124         (m68k_output_function_epilogue): Likewise.
6125         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
6126         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
6127         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
6128         non-68000 timings.  Refactor multiplication and division costs.
6129         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
6130         TUNE_CPU32 instead of TARGET_CPU32.
6131         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
6132         and TUNE_68060 instead of TARGET_68060.
6133         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
6134         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
6135         TARGET_CPU32.
6136         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
6137         && !TARGET_COLDFIRE" to choose between moveq and clr.
6138         Likewise in the unnamed movsf pattern.
6139         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
6140         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
6141         ashiftrt pattern.
6142
6143 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
6144
6145         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
6146         of tabbing before backslashes.
6147
6148 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6149
6150         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
6151         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
6152         (ASM_OUTPUT_INTERNAL_LABEL): Define.
6153
6154 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
6155
6156         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
6157         find_interesting_uses_cond.
6158         (find_interesting_uses_cond): Use extract_cond_operands.
6159         (rewrite_use_compare): Use extract_cond_operands and
6160         force_gimple_operand_bsi.  Do not call update_stmt.
6161         (determine_use_iv_cost_condition): Use extract_cond_operands.
6162         Return cheaper of using original bound and changing the exit bound.
6163
6164 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
6165
6166         PR tree-optimization/29516
6167         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
6168         most_expensive_mult_to_index, addr_to_parts,
6169         create_mem_ref, maybe_fold_tmr): Make the type of
6170         fields of TARGET_MEM_REF sizetype.
6171         (move_fixed_address_to_symbol, move_pointer_to_base):
6172         New functions.
6173         * tree.def (TARGET_MEM_REF): Add comment on types of
6174         the operands.
6175
6176 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
6177
6178         * c-common.c (vector_types_convertible_p): Treat opaque types as
6179         always convertible if they have the same size, but not otherwise.
6180
6181 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
6182
6183         * ifcvt.c (struct noce_if_info): Add comments to the fields.
6184         Remove the b_unconditional field.
6185         (noce_try_sign_mask): Do not look at b_unconditional.
6186         (noce_process_if_block): Do not use merge_if_blocks.  Update
6187         the CFG here.  Do not set b_unconditional.
6188         (cond_move_process_if_block): Likewise.
6189         (find_cond_trap): Likewise.
6190         (check_cond_move_block): Require simple jump insns at the end
6191         of the basic block.
6192
6193 2007-01-11  Jan Hubicka  <jh@suse.cz>
6194
6195         PR tree-optimization/1046
6196         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
6197         when alias info is not ready.
6198         (pass_tail_recursion): Do not require aliasing.
6199         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
6200         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
6201         * tree-ssa-copy.c (pass_copy_prop): Likewise.
6202         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
6203         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
6204         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
6205         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
6206         before inlining.
6207         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
6208         When aliasing is not build, mark statement as volatile.
6209
6210 2007-01-11  Tom Tromey  <tromey@redhat.com>
6211
6212         PR preprocessor/15185, PR preprocessor/20989:
6213         * doc/cppopts.texi <-MT>: Update description of algorithm for
6214         computing default target.
6215         <-M, -MD>: Reword "basename" text.
6216
6217 2007-01-11  Roger Sayle  <roger@eyesopen.com>
6218
6219         * builtins.c (expand_builtin_pow, expand_builtin_powi,
6220         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
6221         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
6222         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
6223         fold_builtin_bswap, real_constp, fold_builtin_pow,
6224         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
6225         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
6226         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
6227         * convert.c (convert_to_pointer): Likewise.
6228         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
6229         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
6230         const_binop, fold_convert_const_int_from_int,
6231         fold_convert_const_int_from_real,
6232         fold_convert_const_real_from_real, sign_bit_p,
6233         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
6234         fold_sign_changed_comparison, fold_unary, fold_comparison,
6235         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
6236         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
6237         * print-tree.c (print_node_brief, print_node): Likewise.
6238         * stor-layout.c (place_field, layout_type): Likewise.
6239         * tree-chrec.c (keep_cast): Likewise.
6240         * tree.c (build_vector, build_real, build_real_from_int_cst,
6241         build_complex): Likewise.
6242
6243 2007-01-11  Roger Sayle  <roger@eyesopen.com>
6244
6245         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
6246         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
6247
6248 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
6249
6250         * configure.ac (strict1_warn): Rename to strict_warn.
6251         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
6252         cc_set_by_configure, quoted_cc_set_by_configure,
6253         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
6254         all_boot_languages, all_stagestuff): Remove.
6255         (target_list): Remove bootstrap targets.
6256         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
6257         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
6258         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
6259         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
6260         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
6261         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
6262         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
6263         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
6264         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
6265         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
6266         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
6267         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
6268         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
6269         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
6270         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
6271         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
6272         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
6273         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
6274         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
6275         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
6276         (mostlyclean): Adjust.
6277         (clean, distclean): Don't mention bootstrap stuff.
6278         * configure: Regenerate.
6279         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
6280         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
6281         treelang/config-lang.in (stagestuff): Remove.
6282         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
6283         stageprofile, stagefeedback, stagestuff): Remove mention.
6284
6285 2007-01-11  Nick Clifton  <nickc@redhat.com>
6286
6287         * config/mcore/predicates.md (mcore_general_movesrc_operand):
6288         Accept CONSTs.
6289         (mcore_general_movdst_operand): Do not accept CONST_INTs.
6290         (mcore_arith_K_S_operand): Run the test for the S constraint not
6291         the test for the M constraint.
6292         (mcore_addsub_operand): Do not accept integer values that are
6293         larger than 32 bits.
6294         * config/mcore/mcore.md: Remove unused constraints from split.
6295         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
6296         (addsi3): Likewise.
6297         (allocate_stack): Likewise.
6298         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
6299         operands to 32 bits.
6300         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
6301         INTVAL.
6302         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
6303         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
6304         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
6305         mcore_output_bclri, mcore_output_andn, output_inline_const,
6306         mcore_output_move, mcore_output_movedouble): Likewise.
6307         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
6308         (output_inline_const): Likewise.
6309         (output_inline_const): Fix format strings used in sprintf
6310         statements.
6311         * config/mcore/mcore-protos.h: Update prototypes for changed
6312         functions in mcore.c.
6313         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
6314         HOST_WIDE_INT and not int.
6315         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
6316         CONST_OK_FOR_N): Likewise.
6317         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
6318         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
6319         an INTVAL.
6320
6321 2007-01-10  Jan Hubicka  <jh@suse.cz>
6322
6323         * tree-vrp.c (remove_range_assertions): Release defs.
6324         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
6325         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
6326
6327 2007-01-10  Paul Brook  <paul@codesourcery.com>
6328
6329         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
6330         * config/arm/arm.md (mulsi3subsi): New insn.
6331
6332 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
6333
6334         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
6335         (tree_transform_and_unroll_loop): New.
6336         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
6337         Declare.
6338
6339 2007-01-10  Robert Kennedy <jimbob@google.com>
6340
6341         * fold-const.c (fold_comparison): Fold comparisons like (x *
6342         1000 < 0) to (x < 0).
6343
6344 2007-01-10  Ian Lance Taylor  <iant@google.com>
6345
6346         * tree-pretty-print.c (dump_generic_node): Print parentheses when
6347         operands have the same priority.
6348
6349 2007-01-10  Tom Tromey  <tromey@redhat.com>
6350
6351         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
6352         (fold_binary): Likewise.
6353         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
6354         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
6355         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
6356         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
6357         * langhooks.h (struct lang_hooks): Removed field
6358         'can_use_bit_fields_p'.
6359
6360 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
6361
6362         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
6363
6364 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
6365
6366         * function.c (get_last_funcdef_no): New function.
6367         * function.h (get_last_funcdef_no): Declare.
6368         * tree-inline.c (initialize_cfun): Add initialization.
6369         (tree_function_versioning): Cleanup.
6370
6371 2007-01-10  Jan Hubicka  <jh@suse.cz>
6372
6373         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
6374         PHIs.
6375
6376 2007-01-10  Sa Liu  <saliu@de.ibm.com>
6377             Ben Elliston  <bje@au.ibm.com>
6378
6379         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
6380         for SAVE_NONLOCAL and Pmode for any other save level.
6381         * spu-protos.h (spu_restore_stack_block): Declare.
6382         * spu.md (save_stack_block): Remove.
6383         (restore_stack_block): Call spu_restore_stack_block.
6384         * spu.c (spu_restore_stack_block): New function.
6385         (spu_expand_epilogue): Remove old comment.
6386
6387 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
6388
6389         PR tree-optimization/30322
6390         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
6391         (cand_value_at): Return the value as aff_tree.
6392         (may_eliminate_iv): Convert the bound from aff_tree to tree.
6393         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
6394         aff_combination_mult): New functions.
6395         (aff_combination_add): Use aff_combination_add_cst.
6396         (aff_combination_convert): Allow conversions to a wider type.
6397         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
6398         * tree-affine.h (aff_combination_mult): Declare.
6399
6400 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
6401
6402         * doc/tm.texi: Update documentation to reflect reality of exec
6403         and start file search behaviours. Update copyright year.
6404         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
6405         header file directories.
6406
6407 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
6408
6409         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
6410         (*cosxf2): Rename to cosxf2_i387.
6411         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
6412         using X87MODEF12 mode macro. Rename patterns to
6413         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
6414         for SSE math.
6415         (*cosdf2, *cossf2): Ditto.
6416         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
6417         to match extended input operands.
6418         (sincos<mode>3): New expander.
6419         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
6420         insn patterns and corresponding splitters.
6421
6422 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
6423
6424         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
6425         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
6426
6427 2007-01-09  Nicolas Pitre  <nico@cam.org>
6428
6429         PR target/30173
6430         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
6431
6432 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
6433
6434         * target.h (struct gcc_target): New field library_rtti_comdat.
6435         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
6436         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
6437         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
6438         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
6439
6440 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
6441
6442         * doc/invoke.texi (Optimize Options): Correct description of -O0.
6443
6444 2007-01-08  Richard Guenther  <rguenther@suse.de>
6445
6446         * tree.h (force_fit_type_double): Export.
6447         (force_fit_type): Remove.
6448         * fold-const.c (force_fit_type_double): New function.
6449         (force_fit_type): Remove.
6450         (int_const_binop): Use it.
6451         (fold_convert_const_int_from_int): Likewise.
6452         (fold_convert_const_int_from_real): Likewise.
6453         (fold_div_compare): Likewise.
6454         (fold_sign_changed_comparison): Likewise.
6455         (fold_unary): Likewise.
6456         (fold_negate_const): Likewise.
6457         (fold_abs_const): Likewise.
6458         (fold_not_const): Likewise.
6459         * c-common.c (shorten_compare): Use force_fit_type_double.
6460         * convert.c (convert_to_pointer): Likewise.
6461
6462 2007-01-08  Richard Guenther  <rguenther@suse.de>
6463
6464         * tree.h (build_int_cst_wide_type): Export.
6465         * tree.c (build_int_cst_wide_type): New function.
6466         (build_int_cst_wide): Fix comment.
6467         * builtins.c (fold_builtin_object_size): Use build_int_cst
6468         to build -1 or 0 of the correct type.  Use fit_double_type
6469         to check for overflow.
6470         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
6471         to build the mask.
6472         (decode_field_reference): Likewise.
6473         (all_ones_mask_p): Likewise.
6474         (native_interpret_int): Use build_int_cst_wide_type.
6475         (fold_binary): Use build_int_cst_type to build an all-ones
6476         value.
6477         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
6478
6479 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
6480
6481         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
6482
6483 2007-01-09  Ben Elliston  <bje@au.ibm.com>
6484
6485         * genautomata.c (STATS_OPTION): New option.
6486         (stats_flag): New flag.
6487         (gen_automata_option): Handle it.
6488         (initiate_automaton_gen): Ditto.
6489         (write_automata): Output statistics only if stats_flag is
6490         set. Likewise, output time statistics only if time_flag is set.
6491         * doc/md.texi (Processor pipeline description): Document new flag.
6492
6493 2007-01-08  Richard Guenther  <rguenther@suse.de>
6494
6495         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
6496         * tree.c (build_int_cst_type): Likewise.
6497         (size_in_bytes): Don't call force_fit_type on the result.
6498         (int_fits_type_p): Use fit_double_type.
6499         * fold-const.c (fit_double_type): New function.
6500         (force_fit_type): Use it.
6501         * tree.h (fit_double_type): Export.
6502
6503 2007-01-08  Jan Hubicka  <jh@suse.cz>
6504
6505         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
6506         * ipa.c (function_and_variable_visibility): Fix return type.
6507
6508 2007-01-08  Richard Guenther  <rguenther@suse.de>
6509
6510         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
6511         of offset to build the index.
6512         * tree-pretty-print.c (dump_generic_node): Don't build negated
6513         const just for printing.
6514         * c-pretty-print.c (pp_c_integer_constant): Likewise.
6515         * builtins.c (fold_builtin_int_roundingfn): Check if result
6516         fits the type by using force_fit_type and comparing the result.
6517         * predict.c (predict_loops): Use compare_tree_int for comparison.
6518         * tree.c (build_int_cst): Fall back to integer_type_node for
6519         NULL_TREE type.
6520         (build_int_cst_wide): Assert type is non-null.
6521
6522 2007-01-08  Roberto Costa  <roberto.costa@st.com>
6523
6524         * tree-vrp.c (extract_range_from_cond_expr): New.
6525         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
6526         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
6527         as expressions.
6528         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
6529         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
6530         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
6531         used as expressions.
6532         * tree-object-size.c (cond_expr_object_size): New.
6533         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
6534
6535 2007-01-08  Jan Hubicka  <jh@suse.cz>
6536
6537         * tree-ssa-forwprop.c (forward_propagate_into_cond,
6538         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
6539         statement.
6540
6541 2007-01-08  Richard Guenther  <rguenther@suse.de>
6542
6543         PR tree-optimization/23603
6544         * tree-vrp.c (set_value_range_to_truthvalue): New function.
6545         (extract_range_from_binary): Fall back to truthvalue instead of
6546         varying for TRUTH_*_EXPR.
6547         (extract_range_from_comparison): Fall back to truthvalue instead of
6548         varying.
6549         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
6550         if all visited PHI values were constant.
6551
6552 2007-01-08  Jan Hubicka  <jh@suse.cz>
6553
6554         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
6555         (cgraph_analyze_function): break out from ...
6556         (cgraph_finalize_compilation_unit): ... here.
6557         (cgraph_expand_function): Remove forgoten commented out line.
6558         (cgraph_optimize): Analyze functions.
6559
6560 2007-01-08  Jan Hubicka  <jh@suse.cz>
6561
6562         * tree-pas.h (TODO_remove_function): New flag.
6563         (TODO_update*): Renumber.
6564         (pass_ipa_increase_alignment,
6565         pass_ipa_function_and_variable_visibility): New passes.
6566         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
6567         (cgraph_function_and_variable_visibility): Move to ipa.c
6568         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
6569         cgraph_increase_alignment.
6570         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
6571         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
6572         calling tree-inline.
6573         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
6574         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
6575         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
6576         (gate_increase_alignment): New function.
6577         (pass_ipa_increase_alignment): New pass.
6578         * ipa.c: Inline tree-pass.h and timevar.h
6579         (function_and_variable_visibility): Move here from cgraphunit.c
6580         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
6581         * passes.c (init_optimization_passes): Add the two new passes.
6582         (execute_todo): Handle cgraph_remove_functions.
6583
6584 2007-01-08  Nick Clifton  <nickc@redhat.com>
6585
6586         * config/frv/predicates.md (reg_or_0_operand): Accept
6587         CONST_DOUBLEs.
6588
6589 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
6590
6591         * config/bfin/rtems.h, config/bfin/t-rtems: New.
6592         * config.gcc: Add bfin*-rtems*.
6593
6594 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
6595
6596         * c.opt: Add -flax-vector-conversions.
6597         * c-typeck.c (convert_for_assignment): Pass flag to
6598         vector_types_convertible_p to allow emission of note.
6599         (digest_init): Likewise.
6600         * c-opts.c: Handle -flax-vector-conversions.
6601         * c-common.c (flag_lax_vector_conversions): New.
6602         (vector_types_convertible_p): Unless -flax-vector conversions
6603         has been passed, disallow conversions between vectors with
6604         differing numbers of subparts and/or element types.  If such
6605         a conversion is disallowed, possibly emit a note on the first
6606         occasion only to inform the user of -flax-vector-conversions.
6607         The new last argument specifies this.
6608         * c-common.h (flag_lax_vector_conversions): New.
6609         (vector_types_convertible_p): Add extra argument.
6610         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
6611         char_type_node for V*QI type vectors.
6612         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
6613         Update to satisfy new typechecking rules.
6614         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
6615         C and C++ variants.
6616         * doc/invoke.texi (C Dialect Options): Document
6617         -flax-vector-conversions.
6618
6619 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
6620
6621         PR tree-optimization/29877
6622         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
6623         a register variable on the RHS to not be replaceable.
6624
6625 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
6626         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
6627         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
6628         const_simm15, const_pow2, const_npow2): Added.
6629         * config/score/misc.md (insv, extv, extzv, movmemsi,
6630         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
6631         * config/score/score.c (score_address_cost, score_select_cc_mode):
6632         Added.
6633         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
6634         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
6635         Update score_print_operand.
6636         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
6637         Adjust register allocate order and update some macro define.
6638         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
6639         mdx_block_move_straight, mdx_block_move_loop_head,
6640         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
6641         mdx_block_move): Added.
6642         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
6643         mdp_limm): Updated and fix some bug and typo.
6644         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
6645         (movsf, movdf, doloop_end): Added.
6646
6647 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
6648
6649         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
6650         config/arm/thumb2.md: Fix comment typos.
6651         * doc/extend.texi: Fix a typo.
6652
6653 2007-01-07  Eric Christopher  <echristo@apple.com>
6654
6655         * configure.ac: Check for __stack_chk_fail for darwin.
6656         * configure: Regenerate.
6657
6658 2007-01-07  Richard Guenther  <rguenther@suse.de>
6659
6660         * tree-vrp.c (extract_range_from_assert): CSE calls to
6661         compare_values where possible.
6662         (extract_range_from_unary_expr): Likewise.
6663
6664 2007-01-07  Anatoly Sokolov <aesok@post.ru>
6665
6666         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
6667         * config/avr/avr.c (call_insn_operand): Delete function.
6668         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
6669         instead of register number. Use predicates.
6670         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
6671         call_insn_operand): Add.
6672
6673 2007-01-06  Jan Hubicka  <jh@suse.cz>
6674
6675         * tree-pass.h (pass_build_cgraph_edges): Declare.
6676         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
6677         (visited_nodes): Remove.
6678         (cgraph_create_edges): Move to cgraphbuild.c; rename to
6679         build_cgrpah_edges; make visited_nodes local.
6680         (cgraph_process_new_functions): DO not call initialize_inline_failed.
6681         (record_references_in_initializer): Move to cgraphbuild.c
6682         (initialize_inline_failed, rebuild_cgraph_edges,
6683         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
6684         (verify_cgraph_node): Make visited_nodes local.
6685         (cgraph_analyze_function): Do not call cgraph_create_edges and
6686         initialize_inline_failed.
6687         (cgraph_expand_function): Do not call cgraph_lower_function;
6688         assert that function is already lowered.
6689         * Makefile.in (cgraphbuild.o): New.
6690         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
6691         at the end of lowering passes.
6692
6693 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
6694
6695         * ifcvt.c (cond_move_convert_if_block): New function, code
6696         factored out from...
6697         (cond_move_process_if_block): ...here.  Call the new function
6698         on the THEN and ELSE blocks.
6699         (merge_if_block): Do not copy global_live_at_end, merge_blocks
6700         already takes care of this.
6701
6702 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6703
6704         PR c/19978
6705         * tree.h (TREE_OVERFLOW_P): New.
6706         * c-typeck.c (parser_build_unary_op): Warn only if result
6707         overflowed and operands did not.
6708         (parser_build_binary_op): Likewise.
6709         (convert_for_assignment): Remove redundant overflow_warning.
6710         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
6711
6712 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6713
6714         * c-typeck.c (store_init_value): Split over two lines to follow
6715         the GNU coding style.
6716
6717 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
6718
6719         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
6720         __GXX_EXPERIMENTAL_CXX0X__.
6721         * doc/cpp.texi: Same.
6722
6723 2007-01-05  Richard Guenther  <rguenther@suse.de>
6724
6725         PR middle-end/27826
6726         * tree.c (get_narrower): Do not construct COMPONENT_REFs
6727         with mismatched types.  Instead explicitly build a
6728         conversion NOP_EXPR.
6729
6730 2007-01-05  Ian Lance Taylor  <iant@google.com>
6731
6732         * c-common.c (decl_with_nonnull_addr_p): New function.
6733         (c_common_truthvalue_conversion): Call it.
6734         * c-typeck.c (build_binary_op): Likewise.
6735         * c-common.h (decl_with_nonnull_addr_p): Declare.
6736
6737 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
6738
6739         PR c/30360
6740         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
6741         denom against 0.0.
6742
6743 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
6744
6745         * doc/install.texi (Final install): Document the fact that
6746         the GNAT runtime should not be stripped.
6747
6748 2007-01-04  Jan Hubicka  <jh@suse.cz>
6749
6750         * tree-inline.c (fold_marked_statements): Update operand caches
6751         and EH after folding
6752
6753 2007-01-04  Ian Lance Taylor  <iant@google.com>
6754
6755         * c-common.c (check_function_nonnull): Whitespace fix.
6756
6757 2007-01-04  Jan Hubicka  <jh@suse.cz>
6758
6759         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
6760         comitted older version of patch.
6761         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
6762         function, celanup cfg and collect garbage.
6763
6764 2007-01-04  Mike Stump  <mrs@apple.com>
6765
6766         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
6767         (clean): Likewise.
6768
6769 2007-01-04  Eric Christopher  <echristo@apple.com>
6770
6771         * libgcc2.c (__bswapsi2): Use SItype.
6772         (__bswapdi2): Use DItype.
6773         * libgcc2.h: Update for above.
6774
6775 2007-01-04  Paul Brook  <paul@codesourcery.com>
6776
6777         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
6778         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
6779         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
6780         umulsidi3, umulsidi3adddi, smulsi3_highpart,
6781         umulsi3_highpart): Make conditional on !arm_arch6.
6782         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
6783         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
6784         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
6785         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
6786         umulsi3_highpart_v6): New insns.
6787
6788 2007-01-04  Roger Sayle  <roger@eyesopen.com>
6789
6790         * fold-const.c (fold_convert): When casting an expression to void,
6791         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
6792         have a type.  Instead of attempting to build a NOP_EXPR, return
6793         these "special" trees directly.
6794
6795 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
6796
6797         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
6798         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
6799         rs6000_cost->fp not 0 as adjustment for outer NEG.
6800
6801 2007-01-04  Jan Hubicka  <jh@suse.cz>
6802
6803         * cgraph.c (cgraph_release_function_body): New function.
6804         (cgraph_remove_node): Use it.
6805         * cgraph.h (cgraph_release_function_body): Declare.
6806         * cgraphunit.c (cgraph_expand_function): Use it.
6807         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
6808         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
6809         is initialized and while compilation of other function is running.
6810         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
6811         statement CFG annotations from here to ...
6812         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
6813
6814 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
6815
6816         * cfgloop.h (enum li_flags): Make the constants powers of two.
6817
6818 2007-01-04  Jan Hubicka  <jh@suse.cz>
6819
6820         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
6821         set.
6822         (fold_marked_statements): New function.
6823         (optimize_inline_calls, tree_function_versioning): Fold new statements.
6824         * tree-inline.h (copy_body_data): Add statements_to_fold.
6825
6826 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
6827
6828         * config.gcc: Mention libgcc/config.host.
6829         * Makefile.in: Update comments mentioning libgcc.
6830         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
6831         (all.cross, start.encap, rest.encap, rest.cross): Update
6832         dependencies for libgcc move.
6833         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
6834         (clean-target, clean-target-libgcc): Delete.
6835         (srcdirify, GCC_EXTRA_PARTS): New macros.
6836         (libgcc-support, libgcc.mvars): New rules.
6837         (distclean): Remove mention of mklibgcc.
6838         (install): Don't reference INSTALL_LIBGCC.
6839         (install-common): Don't reference EXTRA_PARTS.
6840         (install-libgcc, install-multilib): Delete rules.
6841         * mklibgcc.in: Delete file.
6842         * doc/configfiles.texi: Don't mention mklibgcc.
6843
6844         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
6845         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
6846         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
6847         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
6848         (mklibgcc, ldblspecs): Likewise.
6849
6850         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
6851         (posixpre.def): Use $(T).
6852         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
6853         (SHLIB_SRC, SHLIB_INSTALL): Delete.
6854         (SHLIB_LINK): Make dummy.
6855         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
6856
6857         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
6858
6859         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
6860         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
6861         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
6862         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
6863
6864         * configure.ac (all_outputs): Remove mklibgcc.
6865         * configure: Regenerated.
6866
6867 2007-01-03  Josh Conner  <jconner@apple.com>
6868
6869         PR middle-end/29683
6870         * calls.c (compute_argument_addresses): Set stack and stack_slot
6871         for partial args, too.
6872         (store_one_arg): Use locate.size.constant for the size when
6873         generating a save_area.
6874
6875 2007-01-03  Robert Kennedy <jimbob@google.com>
6876
6877         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
6878         whose definitions are deleted due to basic block merging.
6879
6880 2007-01-03  Paul Brook  <paul@codesourcery.com>
6881
6882         PR target/16634
6883         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
6884         functions.
6885         (use_return_insn): Return 0 for Thumb interrupt functions.
6886         (print_multi_reg): Add rfe argument for IRQ returns.
6887         (arm_output_epilogue): Pop interrupt return address directly into PC.
6888         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
6889
6890 2007-01-03  Paul Brook  <paul@codesourcery.com>
6891
6892         Merge from sourcerygxx-4_1.
6893         * config/arm/thumb2.md: New file.
6894         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
6895         Thumb-2.
6896         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
6897         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
6898         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
6899         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
6900         tables.
6901         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
6902         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
6903         comptibility.
6904         * config/arm/ieee754-sf.S: Ditto.
6905         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
6906         (thumb1_base_register_rtx_p): ... to this.
6907         (thumb_index_register_rtx_p): Rename...
6908         (thumb1_index_register_rtx_p): ... to this.
6909         (thumb_output_function_prologue): Rename...
6910         (thumb1_output_function_prologue): ... to this.
6911         (thumb_legitimate_address_p): Rename...
6912         (thumb1_legitimate_address_p): ... to this.
6913         (thumb_rtx_costs): Rename...
6914         (thumb1_rtx_costs): ... to this.
6915         (thumb_compute_save_reg_mask): Rename...
6916         (thumb1_compute_save_reg_mask): ... to this.
6917         (thumb_final_prescan_insn): Rename...
6918         (thumb1_final_prescan_insn): ... to this.
6919         (thumb_expand_epilogue): Rename...
6920         (thumb1_expand_epilogue): ... to this.
6921         (arm_unwind_emit_stm): Rename...
6922         (arm_unwind_emit_sequence): ... to this.
6923         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
6924         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
6925         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
6926         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
6927         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
6928         thumb2_output_casesi): New functions.
6929         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
6930         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
6931         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
6932         THUMB2_WORK_REGS): Define.
6933         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
6934         arm_condexec_mask, arm_condexec_masklen)): New variables.
6935         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
6936         (arm_override_options): Check new CPU capabilities.
6937         Set new architecture flag variables.
6938         (arm_isr_value): Handle v7m interrupt functions.
6939         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
6940         Thumb-2.
6941         (const_ok_for_arm): Handle Thumb-2 constants.
6942         (arm_gen_constant): Ditto.  Use movw when available.
6943         (arm_function_ok_for_sibcall): Return false for v7m interrupt
6944         functions.
6945         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
6946         (thumb_find_work_register, arm_load_pic_register,
6947         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
6948         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
6949         print_multi_reg, output_mov_long_double_fpa_from_arm,
6950         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
6951         output_mov_double_fpa_from_arm, output_move_double,
6952         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
6953         output_return_instruction, arm_output_function_prologue,
6954         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
6955         arm_output_mi_thunk, thumb_set_return_address): Ditto.
6956         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
6957         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
6958         (arithmetic_instr, shift_op): Use arm_shift_nmem.
6959         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
6960         '!' and 'L'.
6961         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
6962         (thumb_expand_prologue): Use thumb_set_frame_pointer.
6963         (arm_file_start): Output directive for unified syntax.
6964         (arm_unwind_emit_set): Handle stack alignment instruction.
6965         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
6966         Add v6t2, v7, v7a, v7r and v7m.
6967         (RETLDM): Add Thumb-2 code.
6968         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
6969         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
6970         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
6971         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
6972         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
6973         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
6974         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
6975         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
6976         ADJUST_INSN_LENGTH): Define.
6977         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
6978         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
6979         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
6980         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
6981         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
6982         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
6983         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
6984         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
6985         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
6986         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
6987         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
6988         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
6989         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
6990         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
6991         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
6992         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
6993         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
6994         cortex-m3.
6995         * config/arm/arm-tune.md: Regenerate.
6996         * config/arm/arm-protos.h: Update prototypes.
6997         * config/arm/vfp.md: Enable patterns for Thumb-2.
6998         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
6999         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
7000         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
7001         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
7002         * config/arm/libunwind.S: Add Thumb-2 code.
7003         * config/arm/constraints.md: Update include Thumb-2.
7004         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
7005         * config/arm/ieee754-df.S: Ditto.
7006         * config/arm/bpabi.S: Ditto.
7007         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
7008         * config/arm/predicates.md (low_register_operand,
7009         low_reg_or_int_operand, thumb_16bit_operator): New.
7010         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
7011         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
7012         * config/arm/t-arm-elf: Add armv7 multilib.
7013         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
7014         Include thumb2.md.
7015         (UNSPEC_STACK_ALIGN, ce_count): New.
7016         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
7017         arm_zero_extendsidi2, arm_zero_extendqidi2): New
7018         insns/expanders.
7019         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
7020         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
7021         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
7022         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
7023         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
7024         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
7025         insns.
7026         * doc/extend.texi: Document ARMv7-M interrupt functions.
7027         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
7028
7029 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
7030
7031         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
7032         (struct _Unwind_Context): Rename args_size to flags, remove
7033         signal_frame field, add a new args_size field and version field.
7034         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
7035         _Unwind_IsExtendedContext): New inline functions.
7036         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
7037         Assume by_value array is only present if _Unwind_IsExtendedContext.
7038         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
7039         _Unwind_IsSignalFrame.
7040         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
7041         (uw_update_context_1): Use _Unwind_SetSignalFrame.
7042         (uw_init_context_1): Initialize context->flags to
7043         EXTENDED_CONTEXT_BIT.
7044         * config/rs6000/linux-unwind.h (frob_update_context): Use
7045         _Unwind_SetSignalFrame.
7046
7047 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7048
7049         PR middle-end/30353
7050         * gimplify.c (gimplify_modify_expr_complex_part): Move below
7051         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
7052         the value.
7053
7054 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
7055
7056         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
7057         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
7058         RET, AT_SP): Remove.
7059         * config/i386/i386.md (*sse_prologue_save_insn): Use return
7060         instead of RET.
7061
7062         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
7063         * cfgbuild.c (find_basic_blocks): Likewise.
7064         * cfgrtl.c (rtl_create_basic_block): Likewise.
7065         * function.c (temp_slots_at_level): Likewise.
7066         * reg-stack.c (stack_regs_mentioned): Likewise.
7067         * regclass.c (allocate_reg_info): Likewise.
7068         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
7069         set_bb_for_stmt, move_block_to_fn): Likewise.
7070         * tree-complex.c (tree_lower_complex): Likewise.
7071         * vec.h (VEC_safe_grow_cleared): New.
7072
7073         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
7074
7075 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
7076
7077         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
7078         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
7079         to loop_version.
7080         * cfgloopmanip.c (scale_loop_frequencies): Export.
7081         (loopify): Scale the frequencies by prescribed coefficients.
7082         (set_zero_probability): New function.
7083         (duplicate_loop_to_header_edge): Improve updating of frequencies.
7084         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
7085         and frequencies according to arguments.
7086         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
7087         correctly.
7088         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
7089         * modulo-sched.c (sms_schedule): Set probabilities for entering
7090         versioned loop correctly.
7091         * tree-vect-transform.c (vect_transform_loop): Ditto.
7092         * cfgloop.h (loopify, loop_version): Declaration changed.
7093         (scale_loop_frequencies): Declared.
7094
7095 2007-01-02  Jan Hubicka  <jh@suse.cz>
7096
7097         * cgraph.c: Include tree-flow.h
7098         (cgraph_add_new-function): Handle IPA_SSA mode; execute
7099         early_local_passes.
7100         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
7101         * tree-pass.h (pass_all_early_optimizations): Declare.
7102         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
7103         early_local_passes.
7104         (cgraph_analyze_function): Do early_local_passes.
7105         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
7106         Do not add referenced vars.
7107         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
7108         SSA form.
7109         (gate_all_early_local_passes): New gate.
7110         (pass_early_local_passes): Use new gate.
7111         (execute_early_local_optimizations): New functions.
7112         (gate_all_early_optimizations): New gate.
7113         (pass_all_early_optimizations): New pass.
7114         (execute_free_datastructures): Free SSA only when initialized.
7115         (gate_init_datastructures): Init only when optimizing.
7116         (tree_lowering_passes): Do early local passes when called late.
7117         * tree-profile.c (do_tree_profiling): Don't profile functions added
7118         late.
7119         (do_early_tree_profiling, pass_early_tree_profile): Kill.
7120         * tree-cfg.c (update_modified_stmts): Do not update when operands are
7121         not active.
7122         * passes.c (init_optimizations_passes): Reorder so we go into SSA
7123         during early_local_passes.
7124         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
7125
7126
7127 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
7128
7129         * Makefile.in: Update copyright year.
7130
7131 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
7132
7133         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
7134         in $(lang_checks) and check-consistency targets.
7135
7136 2007-01-02  Jan Hubicka  <jh@suse.cz>
7137
7138         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
7139         Do not add referenced vars.
7140         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
7141         are not active.
7142         * passes.c (init_optimization_passes): Put mudflap_2 after
7143         free_datastructures.
7144
7145 2007-01-02  Jan Hubicka  <jh@suse.cz>
7146
7147         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
7148         Set NOTHROW flag on call statements proved to be nothrow.
7149         Update statement of local calls so new pure/const functions are
7150         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
7151         goto receivers.
7152         (tree_rest_of_compilation): Register hooks and initialize bitmap
7153         early. Do not set after_inlining flag.
7154
7155 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
7156
7157         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
7158         HOST_BITS_PER_LONGLONG
7159
7160 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
7161
7162         PR c/19977
7163         * c-typeck.c (store_init_value): Don't emit pedantic overflow
7164         warning for non-static initializers.
7165
7166 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
7167
7168         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
7169         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
7170         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
7171         Always use set_unique_reg_note to add REG_EQUAL notes.
7172
7173 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
7174
7175         Revert:
7176         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
7177
7178         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
7179         * cfgbuild.c (find_basic_blocks): Likewise.
7180         * cfgrtl.c (rtl_create_basic_block): Likewise.
7181         * function.c (temp_slots_at_level): Likewise.
7182         * reg-stack.c (stack_regs_mentioned): Likewise.
7183         * regclass.c (allocate_reg_info): Likewise.
7184         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
7185         set_bb_for_stmt, move_block_to_fn): Likewise.
7186         * tree-complex.c (tree_lower_complex): Likewise.
7187         * vec.h (VEC_safe_grow_cleared): New.
7188
7189 2007-01-02  Ian Lance Taylor  <iant@google.com>
7190
7191         * c-common.c (c_common_truthvalue_conversion): When warning about
7192         using an assignment as a truth value, set TREE_NO_WARNING.
7193
7194 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7195
7196         PR middle-end/7651
7197         * c.opt (Wold-style-declaration): New.
7198         * doc/invoke.texi (C-only Warning Options): New.
7199         (Wold-style-declaration): Document it.
7200         (Wextra): Enabled by -Wextra.
7201         * c-opts.c (c_common_post_options): Enabled by -Wextra.
7202         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
7203         -Wold-style-declaration.
7204
7205 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
7206
7207         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
7208         * cfgbuild.c (find_basic_blocks): Likewise.
7209         * cfgrtl.c (rtl_create_basic_block): Likewise.
7210         * function.c (temp_slots_at_level): Likewise.
7211         * reg-stack.c (stack_regs_mentioned): Likewise.
7212         * regclass.c (allocate_reg_info): Likewise.
7213         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
7214         set_bb_for_stmt, move_block_to_fn): Likewise.
7215         * tree-complex.c (tree_lower_complex): Likewise.
7216         * vec.h (VEC_safe_grow_cleared): New.
7217
7218 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
7219
7220         * c-common.c (c_common_nodes_and_builtins): Since variants of
7221         void_type_node get built before it is given a name, we need to
7222         give those variants the name, too.
7223         (complete_array_type): We need to work with the canonical main
7224         type of the array, from which we will build the qualified version.
7225         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
7226         * print-tree.c (print_node): Display canonical type information
7227         for each type.
7228         * stor-layout.c (layout_type): When we don't know the
7229         alignment of a type for which we're building an array, we end up
7230         guessing wrong, so make the type require structural equality.
7231         * tree.c (make_node_stat): When we build a new type, it is its
7232         own canonical type.
7233         (build_type_attribute_qual_variant): When building an attribute
7234         variant, its canonical type is the non-attribute variant. However,
7235         if the attributes are target-dependent and they differ, we need to
7236         use structural equality checks for this type.
7237         (build_qualified_type): A qualified type is not equivalent to its
7238         unqualified variant; set the canonical type appropriately.
7239         (build_distinct_type_copy): When building a distinct type from
7240         another type, the new type is its own canonical type.
7241         (build_variant_type_copy): When building a new type variant, we
7242         assume that it is equivalent to the original type.
7243         (build_pointer_type_for_mode): When building a pointer type, also
7244         build a canonical type pointer.
7245         (build_reference_type_for_mode): When building a reference type,
7246         also build a canonical type reference.
7247         (build_index_type): When we can't hash an index type (e.g.,
7248         because its maximum value is negative), the index type requires
7249         structural equality tests.
7250         (build_array_type): Build the canonical form of an array type.
7251         (build_function_type): Function types require structural equality,
7252         because they contain default arguments, attributes, etc.
7253         (build_method_type_directly): Ditto for method types.
7254         (build_offset_type): Build the canonical offset type.
7255         (build_complex_type): Build the canonical vector type.
7256         (make_vector_type): Build the canonical vector type.
7257         * tree.h (TYPE_CANONICAL): New.
7258         (TYPE_STRUCTURAL_EQUALITY_P): New.
7259         (SET_TYPE_STRUCTURAL_EQUALITY): New.
7260         (struct tree_type): Added "canonical" field.
7261         * params.h (VERIFY_CANONICAL_TYPES): New.
7262         * doc/c-tree.texi (TYPE_CANONICAL): Document.
7263         (TYPE_STRUCTURAL_EQUALITY_P): Document.
7264         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
7265         * doc/invoke.texi (verify-canonical-types): Document --param
7266         parameter for verifying canonical types.
7267
7268 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
7269
7270         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
7271         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
7272         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
7273         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
7274         tm_file.
7275         * config/rs6000/e500.h: New.
7276         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
7277         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
7278         Remove.
7279         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
7280         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
7281         TARGET_E500_DOUBLE): Remove.
7282         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
7283         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
7284         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
7285         * config/rs6000/rs6000.c (rs6000_override_options): Use
7286         CHECK_E500_OPTIONS.
7287
7288 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
7289
7290         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
7291         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
7292         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
7293         rs6000_emit_cmove): Don't check TARGET_E500.
7294         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
7295         sordered): Don't check TARGET_E500.
7296
7297 2007-01-01  Eric Christopher  <echristo@apple.com>
7298
7299         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
7300         HARD_REGISTER_NUM_P.
7301
7302 2007-01-01  Roger Sayle  <roger@eyesopen.com>
7303
7304         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
7305         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
7306         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
7307         eq/ne Y".
7308
7309 2007-01-01  Mike Stump  <mrs@apple.com>
7310
7311         * configure.ac: Remove support for building with Apple's gcc-3.1.
7312
7313 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
7314
7315         PR middle-end/30311
7316         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
7317         REG is a hard register.  Do not modify REG before calling
7318         subreg_nregs.
7319         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
7320         multiple of the size of YMODE for certain lowpart cases.
7321
7322 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
7323
7324         PR middle-end/30253
7325         * gimplify (voidify_wrapper_expr): Update for
7326         GIMPLE_MODIFY_STMT.
7327
7328 2007-01-01  Andreas Schwab  <schwab@suse.de>
7329
7330         PR target/29166
7331         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
7332         save of BR0 in extra_spill_size instead of spill_size.
7333         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
7334         area.
7335         (ia64_expand_epilogue): Restore BR0 from its new location.
7336
7337 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
7338
7339         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
7340         Use a temporary variable if the left hand side is not a gimple
7341         register.
7342
7343 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
7344
7345         * gimplify.c (gimplify_return_expr): Make the temporary variable
7346         for the return expression, a gimple register variable.
7347
7348 2007-01-01  Jan Hubicka  <jh@suse.cz>
7349
7350         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
7351         INSN_LIST.
7352
7353 2007-01-01  Mike Stump  <mrs@apple.com>
7354
7355         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
7356         .literal16.
7357         * config/darwin.c (machopic_select_rtx_section): Use
7358         HAVE_GAS_LITERAL16.
7359         (darwin_mergeable_constant_section): Likewise.
7360         * configure: Regenerate.
7361         * config.in: Regenerate.
7362
7363 2007-01-01  Jan Hubicka  <jh@suse.cz>
7364             Andrew Pinski  <pinskia@gmail.com>
7365
7366         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
7367         before starting IPA passes.