OSDN Git Service

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