OSDN Git Service

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