OSDN Git Service

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