OSDN Git Service

* lower-subreg.c: Include except.h.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
2
3         * lower-subreg.c: Include except.h.
4         (decompose_multiword_subregs): Verify that the only control flow
5         insns we can split are loads to multi-words pseudos.
6         Handle breaking such blocks after splitting, instead of calling
7         find_many_sub_basic_blocks.
8
9         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
10         on the new basic block.  Add a lengthy comment explaining why we
11         thought this was necessary.
12         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
13
14 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
15
16         PR c++/30924
17         * tree.c (walk_type_fields): Recurse into the element type of
18         ARRAY_TYPEs if there is a pointer set.
19
20 2007-03-10  Dirk Mueller  <dmueller@suse.de>
21
22         * c-common.c (warn_logical_operator): Fix condition.
23
24 2007-03-10  Tobias Schl├╝ter  <tobi@gcc.gnu.org>
25
26         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
27         quotation mark.
28         * config/darwin.c (machopic_select_section): Remove superfluous
29         argument in call to categorize_decl_for_section.  Remove unused
30         variable shlib.
31
32 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
33
34         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
35         defined.
36         * configure: Regenerate.
37
38 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
39
40         PR target/31101
41         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
42         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
43         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
44         Add LABEL_NUSES to emmitted label.
45         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
46         branch probability value to emmitted jump insn.
47         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
48         Do not check life information and do not re-arrange input operands
49         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
50
51 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
52
53         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
54         the change of decode_asm_operands.
55
56 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
57
58         * mode-switching.c (create_pre_exit): Skip blockage insn.
59
60 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
61
62         * tree-pass.h (TODO_update_smt_usage): Remove.
63         Update all users.
64         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
65         argument SOME.
66         Update all users.
67
68 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
69
70         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
71         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
72         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
73         SOM target.
74
75 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
76
77         * gcc.c: Document %{, in big comment at top.
78         (input_suffix_matches): Remove special handling for .s and
79         .S.
80         (input_spec_matches): New.
81         (handle_braces): Handle %{,.
82         (validate_switches): ',' indicates a value which is not a switch.
83         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
84         to detect assembler input.
85         * config/i386/sol2.h (CPP_SPEC): Likewise.
86         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
87         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
88         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
89         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
90         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
91         -m64 causes deployment target to default to 10.5.
92         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
93
94 2007-03-09  Richard Henderson  <rth@redhat.com>
95
96         PR target/26090
97         * target.h (targetm.asm.out.reloc_rw_mask): New.
98         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
99         (TARGET_ASM_OUT): Use it.
100         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
101         * varasm.c (categorize_decl_for_section): Remove shlib argument;
102         use the new reloc_rw_mask target hook instead.
103         (default_section_type_flags_1): Merge into...
104         (default_section_type_flags): ... here.
105         (decl_readonly_section_1): Merge into...
106         (decl_readonly_section): ... here.
107         (default_elf_select_section_1): Merge into...
108         (default_elf_select_section): ... here.
109         (default_unique_section_1): Merge into...
110         (default_unique_section): ... here.
111         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
112         (default_select_rtx_section): Use it.
113         (default_elf_select_rtx_section): Likewise.
114         * output.h: Update to match.
115         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
116         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
117         (TARGET_ASM_RELOC_RW_MASK): New.
118         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
119         to categorize_decl_for_section.
120         (x86_64_elf_unique_section): Likewise.
121         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
122         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
123         (TARGET_ASM_RELOC_RW_MASK): New.
124         * config/ia64/ia64.c (ia64_rwreloc_select_section,
125         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
126         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
127         (TARGET_RWRELOC): Remove.
128         (ia64_section_type_flags): Adjust call to default_section_type_flags.
129         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
130         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
131         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
132         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
133         (rs6000_xcoff_select_section): Use decl_readonly_section.
134         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
135         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
136         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
137         (TARGET_SECTION_TYPE_FLAGS): Remove.
138         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
139
140 2007-03-09  Roger Sayle  <roger@eyesopen.com>
141
142         * fold-const.c (fold_comparison): Remove compile-time evaluation of
143         complex constant equality/inequality comparisons for here.
144         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
145         known at compile-time or can be simplified to a scalar comparison.
146         (fold_relational_const): Move compile-time evaluation of complex
147         constant equality/inequality comparisons to here.
148
149 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
150
151         PR rtl-optimization/30643
152         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
153         dest_addr_elt.
154         (fold_rtx): Recurse, like before 2006-11-03.
155
156 2007-03-09  DJ Delorie  <dj@redhat.com>
157
158         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
159         m32c-pragma.o.
160
161 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
162
163         PR tree-optimization/30375
164         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
165         LHS of statements is not the same.
166         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
167
168 2007-03-09  Chao-ying Fu  <fu@mips.com>
169
170         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
171         REV 2.
172         * doc/invoke.texi (-mdspr2): Document new option.
173         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
174         New unspec for DSP REV 2.
175         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
176         these instructions are extended in DSP REV 2.
177         (mips-dspr2.md): Include.
178         * config/mips/mips.opt (mdspr2): New option.
179         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
180         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
181         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
182         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
183         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
184         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
185         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
186         and 2 builtins.
187         (bdesc_map): Add one field of unsupported_target_flags.
188         (bdesc_arrays):  Update entries to have extra fields.  Add
189         dsp_32only_bdesc.
190         (mips_init_builtins): Initialize new function types.
191         Check unsupported_target_fileds to filter out builtins.
192         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
193         TARGET_DSPR2.
194         (ASM_SPEC): Pass mdspr2 to the assembler.
195         * config/mips/mips-dspr2.md: New file.
196
197 2007-03-09  Sa Liu  <saliu@de.ibm.com>
198
199         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
200
201 2007-03-09  Ian Lance Taylor  <iant@google.com>
202
203         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
204         argument) like -Wstrict-overflow=2.
205         * doc/invoke.texi (Warning Options): Update documentation.
206
207 2007-03-09  Dirk Mueller  <dmueller@suse.de>
208
209         PR c++/17946
210         * doc/invoke.texi (-Wlogical-op): Document.
211         * common.opt (-Wlogical-op): New.
212         * c-common.h (warn_logical_operator): Declare.
213         * c-common.c (warn_logical_operator): Define.
214         * c-typeck.c (parser_build_binary_op): Call
215         warn_logical_operator.
216
217 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
218
219         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
220         * final.c (final_scan_insn): Test for non-"" file name.
221
222 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
223
224         * doc/loop.texi: Document the Omega linear constraints solver.
225         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
226         omega-max-geqs, omega-max-eqs, omega-max-wild-cards, 
227         omega-hash-table-size, omega-max-keys, and 
228         omega-eliminate-redundant-constraints.
229         * tree-pass.h (pass_check_data_deps): Declared.
230         * omega.c: New.
231         * omega.h: New.
232         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
233         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps, 
234         pass_check_data_deps): New.
235         * tree-data-ref.c (init_data_ref): Remove declaration.
236         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
237         (analyze_array): Renamed init_array_ref, move up initializations.
238         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
239         Removed arguments that are set to NULL.
240         (analyze_indirect_ref): Correct indentation, correct call to 
241         init_pointer_ref.
242         (object_analysis): Call init_array_ref instead of analyze_array.
243         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
244         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
245         of DR_ACCESS_FNS_ADDR.
246         (init_omega_eq_with_af, omega_extract_distance_vectors, 
247         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
248         ddr_consistent_p): New.
249         (compute_affine_dependence): Check consistency of ddrs when 
250         flag_check_data_deps is passed.
251         (analyze_all_data_dependences): Uncomment.
252         (tree_check_data_deps): New.
253         * tree-data-ref.h: Include omega.h.
254         (DR_ACCESS_FNS_ADDR): Removed.
255         (data_dependence_relation): Add inner_loop.
256         (DDR_INNER_LOOP): New.
257         * common.opt (fcheck-data-deps): New.
258         * tree-flow.h (tree_check_data_deps): Declare.
259         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
260         (OBJS-common): Depend on omega.o.
261         (omega.o): Define.
262         * passes.c (pass_check_data_deps): Scheduled.
263         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS, 
264         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
265         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
266         PARAM_VECT_MAX_VERSION_CHECKS,
267         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
268
269 2007-03-09  Richard Guenther  <rguenther@suse.de>
270
271         PR tree-optimization/30904
272         PR middle-end/31058
273         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
274         the same way as *_DIV_EXPR.
275
276 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
277
278         * recog.c (decode_asm_operands): No mixed declarations and code.
279
280 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
281
282         * rtl.def (ASM_INPUT): Add location.
283         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
284         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
285         (decode_asm_operands): Add loc operand.
286         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
287         * stmt.c (expand_asm): Rename to...
288         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
289         gen_rtx_ASM_INPUT_loc.
290         (expand_asm_expr): Adjust.
291         * recog.c (decode_asm_operands): Add loc operand.
292         (check_asm_operands, extract_insn): Adjust.
293         * reload1.c (maybe_fix_stack_asms): Likewise.
294         * final.c (asm_insn_count): Likewise.
295         (final_scan_insn): Output # line before and after asm.
296
297 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
298
299         * tree-ssa-structalias.c (variable_info): Remove
300         finished_solution.
301         (new_var_info): Ditto.
302         (shared_bitmap_info_t): New structure.
303         (shared_bitmap_table): New variable.
304         (shared_bitmap_hash): New function.
305         (shared_bitmap_eq): Ditto
306         (shared_bitmap_lookup): Ditto.
307         (shared_bitmap_add): Ditto.
308         (merge_smts_into): Change to take bitmap directly.
309         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
310         (init_alias_vars): Init shared bitmap hashtable.
311         (delete_points_to_sets): Delete shared bitmap hashtable.
312         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
313         is_aliased removal as a change that was still necessary was
314         deleted.
315
316 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
317
318         * config/i386/i386.h (override_options): Conditionally disable
319         x86_sahf for 64bit targets only.
320
321 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
322
323         PR C/31072
324         * c-decl.c (merge_decls): Don't call make_var_volatile.
325         * varasm.c (make_var_volatile): Remove.
326         * output.h (make_var_volatile): Remove.
327
328 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
329
330         PR tree-optimization/31085
331         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
332
333 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
334
335         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
336         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
337         ATTR_CONST_NOTHROW_LIST.
338         
339         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
340         FIX_TRUNC_EXPR.
341
342 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
343
344         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
345
346 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
347
348         PR 31013
349         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
350         is declared.
351         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
352         passed, use shared libgcc.
353
354 2007-03-08  Roger Sayle  <roger@eyesopen.com>
355
356         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
357         instead of calling build2 with a GIMPLE_MODIFY_STMT.
358         (honor_protect_cleanup_actions, lower_try_finally_switch):
359         Likewise.
360         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
361         ifc_temp_var): Likewise.
362         * tree-inline.c (setup_one_parameter): Likewise.
363         * tree-mudflap.c (mf_decl_cache_locals,
364         mf_build_check_statement_for): Likewise.
365         * tree-nested.c (init_tmp_var, save_tmp_var,
366         finalize_nesting_tree_1): Likewise.
367         * tree-outof-ssa.c (insert_copy_on_edge,
368         insert_backedge_copies): Likewise.
369         * tree-profile.c (tree_gen_edge_profiler,
370         tree_gen_ic_profiler): Likewise.
371         * tree-scalar-evolution.c (scev_const_prop): Likewise.
372         * tree-sra.c (sra_build_assignment): Likewise.
373         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
374         * tree-ssa-math-opts.c (insert_reciprocals,
375         execute_cse_sincos_1): Likewise.
376         * tree-tailcall.c (adjust_accumulator_values,
377         adjust_return_value): Likewise.
378         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
379         * tree-vect-transform.c (vect_create_data_ref_ptr,
380         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
381         vect_create_epilog_for_reduction, vectorizable_reduction,
382         vectorizable_call, vectorizable_conversion,
383         vectorizable_assignment, vectorizable_operation,
384         vectorizable_type_demotion, vect_gen_widened_results_half,
385         vect_permute_store_chain, vectorizable_store,
386         vect_setup_realignment, vect_permute_load_chain,
387         vectorizable_load, vectorizable_condition,
388         vect_create_cond_for_align_checks): Likewise.
389         * tree-vrp.c (build_assert_expr_for): Likewise.
390
391 2007-03-08  Ian Lance Taylor  <iant@google.com>
392
393         * tree-vrp.c: Include "intl.h".
394         (usable_range_p): New static function.
395         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
396         overflowed values, juts set *strict_overflow_p.
397         (compare_values): Only return -2 if one of the operands is not a
398         constant.
399         (compare_ranges): Call usable_range_p.
400         (compare_range_with_value): Likewise.
401         (vrp_evaluate_conditional_warnv): Rename from
402         vrp_evaluate_conditional.  Make static.  Change all callers.
403         (vrp_evaluate_conditional): New function.
404         (simplify_div_or_mod_using_ranges): Issue warning about reliance
405         on signed overflow.
406         (simplify_abs_using_ranges): Likewise.
407         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
408         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
409         within_stmt parameter.
410         * tree-ssa-propagate.c (fold_predicate_in): Update call to
411         vrp_evaluate_conditional.
412         * tree-ssa-threadedge.c
413         (record_temporary_equivalences_from_stmts_at_dest): Change
414         simplify parameter to take a second tree parameter.
415         (simplify_control_stmt_condition): Likewise.
416         (thread_across_edge): Likewise.
417         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
418         (thread_across_edge): Likewise.
419         * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
420
421 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
422
423         * config/i386/i386.h (TARGET_SAHF): New define.
424         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
425         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
426         (x86_sahf): New global variable.
427         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
428         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
429         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
430         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
431         for 64-bit.
432         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
433         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
434         when expanding fcomi/sahf based tests.
435         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
436         expanding sahf based alternative. Emit sahf based sequence when
437         optimizing for code size.
438         * config/i386/i386.md (x86_sahf_1): Do not disable for
439         TARGET_64BIT, enable for TARGET_SAHF. 
440
441 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
442
443         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
444         spurious whitespace from error message.
445
446 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
447
448         PR c++/30852
449         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
450
451 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
452
453         * c-decl.c (grokdeclarator): Disable warnings for anonymous
454         bitfields.
455         * tree-sra.c (instantiate_element): Propagate disabled warnings
456         from the element itself to the created variable.
457
458 2007-03-07  Richard Henderson  <rth@redhat.com>
459
460         PR target/30848
461         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
462         silently fix up the stack in the case of a missing register.
463
464 2007-03-07  Paul Brook  <paul@codesourcery.com>
465
466         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
467
468 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
469
470         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
471         New.
472         (phase1_vrs): Use them.
473         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
474         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
475         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
476         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
477         __gnu_Unwind_Restore_WMMXC if required.
478         (_Unwind_VRS_Pop): Implement iWMMXt support.
479         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
480         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
481         gnu_Unwind_Save_WMMXC): Define.
482
483 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
484
485         * config/vxworks.h (vxworks_override_options): Declare.
486         (VXWORKS_OVERRIDE_OPTIONS): Use it.
487         * config/vxworks.c: Include target.h and toplev.h.
488         (vxworks_override_options): New function.
489         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
490
491 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
492
493         * config/s390/s390.c (override_options): Don't emit an error when
494         -mstack-size is used without providing -mstack-guard.
495         (s390_emit_prologue): Choose stack_guard value automatically if not
496         provided via command line.
497         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
498
499 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
500
501         * config/i386/i386.c (output_set_got): Add a GOT initialization
502         sequence for VxWorks PIC.
503         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
504         around labels as well as symbols.  Use gotoff_operand instead
505         of local_symbolic_operand.
506         (legitimize_pic_address): Use gotoff_operand instead of
507         local_symbolic_operand.  Use @GOT accesses for labels as
508         well as symbols.
509         (ix86_output_addr_diff_elt): Use PC-relative rather than
510         GP-relative offsets for VxWorks PIC.
511         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
512         no_new_pseudos.  Check whether the returned register is op0.
513         * config/i386/i386.md (tablejump): Use PC-relative rather than
514         GP-relative offsets for VxWorks PIC.
515         * config/i386/predicates.md (gotoff_operand): New predicate.
516
517 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
518
519         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
520         before defining.
521         * config/vxworks-dummy.h: New file.
522         * config/i386/i386.h: Include it.
523
524 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
525
526         * dwarf2out.c (is_inlined_entry_point): New
527         (add_high_low_attributes): Emit DW_AT_entry_pc along with
528         DW_AT_ranges if the first subblock is the entry point.
529
530 2007-03-06  David Daney  <ddaney@avtrex.com>
531
532         * doc/install.texi (mips-*-*): Change recommended binutils
533         version.
534
535 2007-03-06  Anatoly Sokolov <aesok@post.ru>
536
537         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
538         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162 
539         devices.
540         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
541         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
542
543 2007-03-06  Jan Hubicka  <jh@suse.cz>
544
545         * errors.h (warning, error, fatal, internal_error): Mark as cold.
546         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
547         are hot.
548         (probably_cold_bb_p): Cold functions are cold.
549         (probably_never_executed_bb_p): Cold functions are cold.
550         (tree_bb_level_predictions): Predict calls to cold functions as not
551         taken.
552         (compute_function_frequency): Check hot/cold attributes.
553         * function.h (function_frequency): Update comments.
554         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
555         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
556         (c_common_att): Add cold and hot.
557
558         * doc/extend.texi (hot,cold attributes): Document.
559
560 2007-03-06  Andrew Haley  <aph@redhat.com>
561
562         * function.c (expand_function_end): Move blockage to just after we
563         emit the label for the naked return from the function.
564
565 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
566
567         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
568         before redefining.
569
570 2007-03-06  Jan Hubicka  <jh@suse.cz>
571
572         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
573         loaded for constant large models.  Non-large 64bit PIC can do.
574         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
575         * cmodel.h: Add LARGE PIC.
576         * i386.md (UNSPEC_PLTOFF): New.
577         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
578         needed.
579         (*call_1_rex64): Disable for large models.
580         (*call_1_rex64_large): New.
581         (*call_value_1_rex64): Disable for large models.
582         (*call_value_1_rex64_large): New.
583         (set_rip_rex4): New.
584         (set_got_offset_rex64): New.
585         * predicates.md (constant_call_address_operand): For large model
586         constant calls are not possible.
587         * i386-protos.h (construct_plt_address): Declare.
588         * i386.c (override_options): Accept large models.
589         (ix86_expand_prologue): Expand large PIC GOT pointer load.
590         (legitimate_constant_p): Add new UNSPECs.
591         (legitimate_pic_operand_p): Likewise.
592         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
593         (legitimize_pic_address): Do easy RIP relative way for TLS only for
594         non-large model.
595         (output_pic_addr_const): Add PLTOFF.
596         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
597         (ix86_expand_move): Legitimize pic address when in PIC mode.
598         (construct_plt_address): New function.
599         (ix86_expand_call): Offload the address to register and use GOT pointer
600         for large model.
601         * invoke.texi (mcmodel=large): Update documentation.
602
603 2007-03-06  Richard Henderson  <rth@redhat.com>
604
605         * config/i386/i386.c (x86_use_leave, x86_push_memory,
606         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
607         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
608         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
609         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
610         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
611         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix, 
612         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
613         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
614         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves, 
615         x86_partial_reg_dependency, x86_memory_mismatch_stall, 
616         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
617         x86_sse_partial_reg_dependency, x86_sse_split_regs, 
618         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
619         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
620         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
621         x86_schedule, x86_use_bt, x86_pad_returns): Merge into ...
622         (ix86_tune_features): ... here.  New array.
623         (x86_cmove, x86_use_xchgb, x86_cmpxchg, x86_cmpxchg8b,  
624         x86_xadd, x86_bswap): Merge into ...
625         (ix86_arch_features): ... here.  New array.
626         (x86_3dnow_a): Remove.
627         (x86_accumulate_outgoing_args): Make static.
628         (x86_arch_always_fancy_math_387): Make static.
629         (ix86_tune_mask, ix86_arch_mask): Move ...
630         (override_options): ... to local variables here.  Apply the
631         appropriate mask to each element of ix86_arch_features and
632         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
633         as were done in the old macros.
634         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
635         * config/i386/i386.h (x86_use_leave, x86_push_memory,
636         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
637         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
638         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
639         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
640         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
641         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
642         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
643         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
644         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
645         x86_partial_reg_dependency, x86_memory_mismatch_stall,
646         x86_accumulate_outgoing_args, x86_prologue_using_move,
647         x86_epilogue_using_move, x86_decompose_lea,
648         x86_arch_always_fancy_math_387, x86_shift1,
649         x86_sse_partial_reg_dependency, x86_sse_split_regs,
650         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,        
651         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
652         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
653         x86_use_incdec, x86_pad_returns, x86_bswap,
654         x86_partial_flag_reg_stall): Remove.
655         (enum ix86_tune_indices): New.
656         (ix86_tune_features): New.
657         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
658         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
659         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
660         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
661         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
662         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
663         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
664         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
665         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
666         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
667         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
668         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
669         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
670         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
671         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
672         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
673         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
674         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
675         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
676         TARGET_EXT_80387_CONSTANTS): Use it.
677         (enum ix86_arch_indices): New.
678         (ix86_arch_features): New.
679         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
680         TARGET_BSWAP): Use it.
681         (ix86_tune_mask, ix86_arch_mask): Remove.
682
683 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
684
685         PR bootstrap/31020
686         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
687         Define using $${sysroot_headers_suffix}.
688         * configure: Regenerate.
689         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
690         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
691         defined.
692         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
693         * gcc.c (print_sysroot_headers_suffix): New.
694         (option_map): Include --print-sysroot-headers-suffix.
695         (display_help): Mention -print-sysroot-headers-suffix.
696         (process_command): Handle -print-sysroot-headers-suffix.
697         (do_spec_1): Append multilib directory to include-fixed path if
698         sysroot suffixes in use.
699         (main): Handle -print-sysroot-headers-suffix.
700         * Makefile.in (start.encap): Don't depend on xlimits.h
701         (xlimits.h): Remove.
702         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
703         limits.h for each multilib in fixinc_list.
704         (fixinc_list, s-fixinc_list): New.
705         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
706         generate them for each multilib in fixinc_list.
707         (stmp-fixproto): Use include-fixed.  Run fixproto for each
708         multilib in fixinc_list.
709         (mostlyclean): Don't remove xlimits.h.
710         (clean): Remove include-fixed.
711         (real-install-headers-tar, real-install-headers-cpio,
712         real-install-headers-cp): Don't copy include, only include-fixed.
713         (install-mkheaders): Depend on fixinc_list.  Don't depend on
714         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
715         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
716         SYSTEM_HEADER_DIR setting in mkheaders.conf.
717
718 2007-03-06  Jan Hubicka  <jh@suse.cz>
719
720         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
721         NANs easilly.
722
723 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
724
725         * configure.ac: Allow tm_file to contain build-directory files.
726         * configure: Regenerate.
727         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
728         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
729         * config/m68k/print-sysroot-suffix.sh: New file.
730
731 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
732
733         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
734         of pic_offset_table_rtx if reload_completed.
735         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
736         PIC_OFFSET_TABLE_REGNUM.
737         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
738         return true.
739         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
740         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
741
742 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
743
744         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
745         functions that call eh_return.
746
747 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
748
749         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
750         functions that need a constant pool.
751
752 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
753
754         PR target/28181
755         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
756         (m68k_preferred_reload_class): Likewise.
757         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
758         (SECONDARY_RELOAD_CLASS): Define.
759         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
760         (LIMIT_RELOAD_CLASS): Delete.
761         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
762         registers from storing bytes.
763         (m68k_secondary_reload_class): New function.
764         (m68k_preferred_reload_class): Likewise.
765
766 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
767
768         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
769         leaf functions.
770         (m68k_expand_prologue): Likewise.
771
772 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
773
774         * config/m68k/m68k-protos.h (output_sibcall): Declare.
775         (mips_expand_epilogue): Add a bool parameter.
776         (m68k_legitimize_sibcall_address): Declare.
777         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
778         (m68k_expand_epilogue): Add a parameter to select between sibling
779         and normal epilogues.  Only generate a return for the latter.
780         (m68k_ok_for_sibcall_p): New function.
781         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
782         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
783         (sibcall_value, *sibcall_value): Likewise.
784         (*call, *call_value): Require !SIBLING_CALL_P.
785         (epilogue): Update call to m68k_expand_epilogue.
786         (sibcall_epilogue): New pattern.
787         * config/m68k/predicates.md (const_call_operand): Say that this
788         predicate applies to sibling calls too.
789         (sibcall_operand): New predicate.
790
791 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
792
793         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
794         alternatives as movsi_cf.
795         (movsf_cf_hard): Add commentary.
796
797 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
798             Richard Sandiford  <richard@codesourcery.com>
799
800         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
801         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
802         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
803         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
804         as being live on exit from an interrupt function.
805         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
806         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
807         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
808         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
809         (m68k_interrupt_function_p): Globalize.
810         (m68k_compute_frame_layout): Remove reverse mask code.
811         (m68k_emit_movem, m68k_set_frame_related): New functions.
812         (m68k_output_function_prologue): Delete in favor of...
813         (m68k_expand_prologue): ...this new function.
814         (m68k_output_function_epilogue): Delete in favor of...
815         (m68k_expand_epilogue): ...this new function.
816         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
817         functions.
818         (print_operand): Handle %?.
819         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
820         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
821         (prologue, epilogue): New patterns.
822         (return): Turn into a define_expand.
823         (*return): New pattern, derived from old "return" pattern.  Use rte
824         rather than rts for interrupt functions.  Only use rtd if the pop
825         count is nonzero.
826         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
827         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
828         (link, *link, unlink, *unlink, load_got): Likewise.
829
830 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
831
832         PR target/23482
833         PR target/17114
834         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
835         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
836         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
837         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
838         and m68k_matches_u_p.
839         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
840         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
841         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
842         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
843         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
844         (REG_STRICT_P): New macro.
845         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
846         PCREL_GENERAL_OPERAND_OK.
847         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
848         m68k_legitimate_base_reg_p.
849         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
850         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
851         (PIC_CASE_VECTOR_ADDRESS): Update comment.
852         * config/m68k/m68k.c (m68k_address): New structure.
853         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
854         (m68k_decompose_index, m68k_legitimate_constant_address_p)
855         (m68k_jump_table_ref_p, m68k_decompose_address)
856         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
857         (m68k_matches_u_p): New functions.
858         (print_operand_address): Rewrite to use m68k_decompose_index.
859
860 2007-03-05  David Taylor  <dtaylor@emc.com>
861
862         * gcc.c: Correct copyright date in --version output.
863
864 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
865
866         * pa.md: In unamed move patterns, disparge copies between general
867         and floating point registers using '?' modifier.  Don't include 'f'
868         constraint for register preferences in DImode, SImode, HImode and
869         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
870         Remove constraints for copies between general and floating registers
871         in soft-float DFmode pattern.
872         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
873         floating register.
874         (movsf): Likewise. 
875
876 2007-03-05  Mike Stump  <mrs@apple.com>
877
878         * c-common.c (targetcm): Add.   
879         * c-opts.c (c_common_handle_option): Handle language specific
880         target options.
881         * opts.c (handle_option): Verify language for target options, if
882         any are given.
883         * opth-gen.awk: Add CL_LANG_ALL.
884         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
885         (TARGETCM_INITIALIZER): Add.
886         * target.h (struct gcc_targetcm): Add.
887         (targetcm): Add.
888         * targhooks.c (default_handle_c_option): Add.
889         * targhooks.h (default_handle_c_option): Add.
890         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
891
892         * config/darwin.opt (iframework): Add.
893         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
894         * config/darwin-c.c (handle_c_option): Add.
895         (TARGET_HANDLE_C_OPTION): Add.
896         (targetcm): Add.
897         * doc/invoke.texi (Darwin Options): Add -iframework.
898
899 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
900
901         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
902         conversion.
903
904 2007-03-05  Ian Lance Taylor  <iant@google.com>
905
906         * c.opt (fgnu89-inline): New option.
907         * c-opts.c (c_common_post_options): Set default value for
908         flag_gnu89_inline.
909         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
910         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
911         inline functions.
912         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
913         (grokdeclarator, start_function): Likewise.
914         * c-cppbuiltin.c (c_cpp_builtins): Define either
915         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
916         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
917         (C Dialect Options): Document -fgnu89-inline.
918         * doc/extend.texi (Function Attributes): Explain what the
919         gnu_inline attribute does.
920         * doc/cpp.texi (Common Predefined Macros): Document
921         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
922
923 2007-03-05  Ian Lance Taylor  <iant@google.com>
924
925         PR tree-optimization/31034
926         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
927         half-range if the other side is an overflow infinity.
928
929 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
930
931         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
932         (bfin*-linux-uclibc*): New configuration.
933         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
934         defining.
935         * config/bfin/linux.h: New file.
936         * config/bfin/libgcc-bfin.ver: New file.
937         * config/bfin/t-bfin-uclinux: New file.
938         * config/bfin/t-bfin-linux: New file.
939         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
940         (TARGET_OS_CPP_BUILTINS): New macro.
941
942 2007-03-05  Richard Guenther  <rguenther@suse.de>
943
944         * fold-const.c (fold_binary): Remove duplicate folding
945         of comparison of non-null ADDR_EXPR against null.
946
947 2007-03-05  Richard Guenther  <rguenther@suse.de>
948             Dorit Nuzman  <dorit@il.ibm.com>
949
950         PR tree-optimization/26420
951         * tree-vectorizer.c (vectorize_loops): Bail out early if there
952         are no loops in the function.  Only print the number of
953         vectorized loops if it is greater than zero or we are supposed
954         to print information about unvectorized loops.
955
956 2007-03-05  Revital Eres  <eres@il.ibm.com>
957
958         * gcc.dg/var-expand1.c: New test.
959         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
960         when an accumulator is expanded.
961
962 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
963
964         PR other/30465
965         * c-common.c (convert_and_check): Don't give warnings for
966         conversion if 'expr' already overflowed.
967         
968 2007-03-04  Roger Sayle  <roger@eyesopen.com>
969
970         PR middle-end/30744
971         * fold-const.c (fold_comparison): Enforce type consistency when
972         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
973
974 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
975
976         * tree-ssa-address.c (create_mem_ref): Do not put an expression
977         containing a cast to the base of TARGET_MEM_REF.
978
979 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
980
981         * tree.c (tree_contains_struct_check_failed): Remove spurious
982         whitespace from error message.
983
984 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
985
986         PR target/30406
987         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
988         instead of precision.
989
990 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
991             Nathan Sidwell  <nathan@codesourcery.com>
992
993         * emit-rtl.c (find_auto_inc): New.
994         (try_split): recreate REG_INC notes,
995         Use regular for loops rather than whiles.
996
997 2007-03-03  Andreas Schwab  <schwab@suse.de>
998
999         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
1000         * configure: Regenerate.
1001
1002 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1003
1004         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
1005         flag_rounding_math, not flag_unsafe_math_optimizations.
1006
1007         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
1008         fold_build2.
1009         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
1010         alpha_fold_vector_minmax): Likewise.
1011         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
1012         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
1013
1014 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
1015
1016         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
1017         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
1018         if the lhs has side-effects.
1019         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
1020
1021 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
1022
1023         * config/i386/i386.h (TUNEMASK): Remove define.
1024         (ARCHMASK): Remove define.
1025         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
1026          Use ix86_arch_mask variable instead of ARCHMASK.
1027         * config/i386/i386.c (override_options): Ditto.
1028         (standard_80387_constant_p): Ditto.
1029
1030 2007-03-02  Ian Lance Taylor  <iant@google.com>
1031
1032         Used signed infinities in VRP.
1033         * tree-vrp.c (uses_overflow_infinity): New static function.
1034         (supports_overflow_infinity): New static function.
1035         (make_overflow_infinity): New static function.
1036         (negative_overflow_infinity): New static function.
1037         (positive_overflow_infinity): New static function.
1038         (is_negative_overflow_infinity): New static function.
1039         (is_positive_overflow_infinity): New static function.
1040         (is_overflow_infinity): New static function.
1041         (overflow_infinity_range_p): New static function.
1042         (compare_values_warnv): New function split out of compare_values.
1043         (compare_value): Call it.
1044         (set_value_range_to_nonnegative): Add overflow_infinity
1045         parameter.  Change caller.
1046         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
1047         Change callers.
1048         (vrp_expr_computes_nonzero): Likewise.
1049         (compare_ranges, compare_range_with_value): Likewise.
1050         (compare_name_with_value, compare_names): Likewise.
1051         (vrp_evaluate_conditional): Likewise.
1052         (set_value_range): Handle infinity
1053         (vrp_operand_equal_p, operand_less_p): Likewise.
1054         (extract_range_from_assert): Likewise.
1055         (vrp_int_const_binop): Likewise.
1056         (extract_range_from_binary_expr): Likewise.
1057         (extract_range_from_unary_expr): Likewise.
1058         (extract_range_from_comparison): Likewise.
1059         (extract_range_from_expr): Likewise.
1060         (dump_value_range): Likewise.
1061         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
1062         (test_for_singularity): Likewise.
1063         (vrp_int_const_binop): Remove inline qualifier.
1064         (adjust_range_with_scev): Add comment.
1065         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
1066
1067 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
1068
1069         * tree-ssa-structalias.c (could_have_pointers): Tidy.
1070         (get_constraint_for): Likewise.
1071         (do_structure_copy): Likewise.
1072         (find_func_aliases): Fix references to MODIFY_EXPR.
1073         (intra_create_variable_infos): Tidy.
1074         * tree-ssa-operands.c (add_virtual_operand): Add argument
1075         IS_CALL_SITE.
1076         When adding members of alias sets, if IS_CALL_SITE is true and
1077         the symbol is not call-clobbered, skip it.
1078         Adjust all callers.
1079
1080 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
1081
1082         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
1083         entry by means of emit_insn_at_entry.
1084
1085 2007-03-02  Richard Henderson  <rth@redhat.com>
1086
1087         * expr.h (promoted_input_arg): Remove decl.
1088         * function.c (promoted_input_arg): Merge into ...
1089         * combine.c (setup_incoming_promotions): ... only caller.
1090         Rearrange to avoid double loop.
1091
1092 2007-03-02  Ben Elliston  <bje@au.ibm.com>
1093             Peter Bergner  <bergner@vnet.ibm.com>
1094             Janis Johnson  <janis187@us.ibm.com>
1095
1096         * config/rs6000/dfp.md: New file.
1097         * config/rs6000/rs6000.md: Include dfp.md.
1098         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
1099         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
1100         and TDmode decimal float modes in FP registers.
1101         (num_insns_constant): Likewise.
1102         (rs6000_legitimate_offset_address_p): Likewise.
1103         (rs6000_legitimize_address): Likewise.
1104         (rs6000_legitimize_reload_address): Likewise.
1105         (rs6000_legitimate_address): Likewise.
1106         (rs6000_emit_move): Likewise.
1107         (function_arg_boundary): Likewise.
1108         (function_arg_advance): Likewise.
1109         (rs6000_darwin64_record_arg_recurse): Likewise.
1110         (function_arg): Likewise.
1111         (rs6000_gimplify_va_arg): Likewise.
1112         (rs6000_split_multireg_move): Likewise.
1113         (rs6000_output_function_epilogue): Likewise.
1114         (rs6000_output_function_epilogue): Likewise.
1115         (rs6000_register_move_cost): Likewise.
1116         (rs6000_function_value): Likewise.
1117         (rs6000_libcall_value): Likewise.
1118
1119 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
1120
1121         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
1122
1123 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
1124
1125         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
1126         Use $MULTIDIR to choose between the kernel and RTP headers,
1127         and use $WIND_BASE and $WIND_USR to locate them.
1128
1129 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
1130
1131         * config/i386/i386.c (override_options): Put initialization of
1132         ix86_tune_mask and ix86_arch_mask to the correct place.
1133
1134 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
1135             Michael Meissner  <michael.meissner@amd.com>
1136
1137         PR target/31019
1138         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
1139         (ARCHMASK): Define.
1140         (TARGET_CMOVE): Use ARCHMASK.
1141         (TARGET_CMPXCHG): Ditto.
1142         (TARGET_CMPXCHG8B): Ditto.
1143         (TARGET_XADD): Ditto.
1144         (TARGET_BSWAP): Ditto.
1145         * config/i386/i386.c (ix86_tune_mask): New global variable.
1146         (ix86_arch_mask): Ditto.
1147         (override_options): Initialize ix86_tune_mask and
1148         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
1149         target_flags.
1150
1151 2007-03-02  Ben Elliston  <bje@au.ibm.com>
1152
1153         PR 30992
1154         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
1155
1156 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
1157
1158         * target.h (init_dwarf_reg_sizes_extra): New target hook.
1159         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
1160         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
1161         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
1162         hook.
1163         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
1164         rs6000_init_dwarf_reg_sizes_extra): New.
1165         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
1166         SPE register high parts.
1167
1168 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
1169
1170         * Makefile.in: Add install-pdf target as
1171         copied from automake v1.10 rules.
1172         * configure.ac: Add install-pdf to target list.
1173         * configure: Regenerate.
1174
1175 2007-03-01  Paul Brook  <paul@codesourcery.com>
1176
1177         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
1178         modes to LDRD for DImode.
1179         (output_move_double): Fixup out of range ldrd/strd.
1180         (vfp_secondary_reload_class): Rename...
1181         (coproc_secondary_reload_class): ... to this.  Add wb argument.
1182         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
1183         coproc_secondary_reload_class for CLASS_IWMMXT.
1184         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
1185         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
1186
1187 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
1188
1189         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
1190         factor by the estimated number of iterations.
1191         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
1192         prefetch latency.
1193
1194         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
1195         decode_caches_intel, detect_caches_intel): New functions.
1196         (host_detect_local_cpu): Use detect_caches_amd and
1197         detect_caches_intel.
1198
1199 2007-03-01  Richard Henderson  <rth@redhat.com>
1200
1201         * expr.c (emit_move_complex_push): Export.
1202         (emit_move_complex_parts): Split out from ...
1203         (emit_move_complex): ... here.
1204         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
1205         * config/i386/i386.md (movcdi): New.
1206
1207 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
1208
1209         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
1210         size of mode1 to check for tieable modes in MMX case.
1211
1212 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
1213
1214         * Makefile.in (rtlanal.o): Depend on tree.h.
1215         * rtl.h (offset_within_section_p, split_const): Declare.
1216         * rtlanal.c: Include tree.h.
1217         (offset_within_block_p): New function, taken from
1218         mips_offset_within_object_p.
1219         (split_const): New function, taken from mips_split_const.
1220         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
1221         Declare.
1222         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
1223         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
1224         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
1225         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
1226         (m68k_illegitimate_symbolic_constant_p): New function.
1227         * config/m68k/m68k.md (movsi): Remove misleading predicates.
1228         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
1229         symbolic constant that might be outside the symbol's section,
1230         move the symbol first and then add the offset.
1231         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
1232         Override.
1233         * config/mips/mips.c (mips_split_const): Delete.
1234         (mips_offset_within_object_p): Delete.
1235         (mips_symbolic_constant_p): Use offset_within_section_p and
1236         split_const instead of mips_offset_within_object_p and
1237         mips_split_const.
1238         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
1239         (mips_legitimize_const_move, print_operand_reloc)
1240         (mips_dangerous_for_la25_p): Use split_const instead of
1241         mips_split_const.
1242
1243 2007-02-28  Eric Christopher  <echristo@apple.com>
1244
1245         * Makefile.in (install-include-dir): Don't rm -rf include.
1246
1247 2007-02-28  Richard Guenther  <rguenther@suse.de>
1248
1249         PR middle-end/30364
1250         * fold-const.c (fold_binary): Do not associate expressions
1251         with more than one variable for integer types that do not wrap.
1252
1253 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
1254
1255         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
1256         Delete, and replace with...
1257         (fold_builtin_call_array): This.  Update callers to use it.
1258         * fold-const.c (fold_build_call_list): Delete, and replace with...
1259         (fold_build_call_array): This.
1260         (fold_build_call_list_initializer): Delete, and replace with...
1261         (fold_build_call_array_initializer): This.
1262         * tree.h: Update declarations to reflect above changes.
1263
1264         * c-typeck.c (build_function_call): Store converted arguments
1265         in a stack-allocated array instead of building a list.
1266         (convert_arguments): Store arguments in the array passed in as an
1267         argument, and return the actual number of arguments.
1268         * c-format.c: (check_function_format): Pass arguments in an
1269         array instead of a list.
1270         * c-common.c (check_function_nonnull): Likewise.
1271         (check_function_sentinel): Likewise.
1272         (check_function_arguments): Likewise.
1273         * c-common.h: Update declarations to reflect above changes.
1274
1275 2007-02-28  Jan Hubicka  <jh@suse.cz>
1276
1277         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
1278         PRED_NEGATIVE_RETURN): Update outcomes.
1279
1280 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
1281
1282         * calls.c (emit_library_call_value_1): Handle partial registers
1283         correctly when building up CALL_INSN_FUNCTION_USAGE.
1284
1285 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1286
1287         * pa/predicates.md (move_src_operand): Allow zero for mode.
1288         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
1289         move pattern.
1290
1291 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
1292
1293         PR target/30970
1294         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
1295         *movv2df_internal): Enable pattern only for valid operand
1296         combinations.
1297         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
1298         tie only 128bit modes. For MMX registers, tie only 64bit modes.
1299
1300 2007-02-27  Mike Stump  <mrs@apple.com>
1301
1302         * config/darwin-crt3.c: Avoid compilation when compiling for a
1303         kext multilib.
1304
1305 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
1306
1307         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
1308         FIXED_INCLUDE_DIR.
1309         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
1310         for fixed headers and limits.h.
1311         (install-include-dir, install-headers-tar, install-headers-cpio,
1312         install-headers-cp, real-install-headers-tar,
1313         real-install-headers-cpio, real-install-headers-cp): Handle
1314         include-fixed as well as include.
1315         (install-mkheaders): Don't install files that go only in include
1316         not include-fixed.
1317         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
1318         from GCC_INCLUDE_DIR.
1319         * gcc.c (process_command): Remove special -BstageN/ handling.
1320         (do_spec_1): Add include-fixed directories.
1321
1322 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
1323
1324         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
1325         _smulsi3_highpart.
1326         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
1327         New functions.
1328         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
1329         patterns.
1330
1331 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
1332
1333         * c-common.c (get_priority): Add check for
1334         SUPPORTS_INIT_PRIORITY.
1335
1336 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
1337
1338         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
1339
1340         * config/bfin/bfin.c: Include "cfglayout.h".
1341         (MAX_LSETUP_DISTANCE): New macro.
1342         (struct loop_info): New members incoming, incoming_src and
1343         incoming_dest.  Delete member predecessor.
1344         (length_for_loop): New function.
1345         (bfin_optimize_loop): Handle more different loop structures.
1346         (bfin_discover_loop): Rework detection of predecessor blocks by
1347         examining incoming edges.
1348         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
1349         bfin_reorg_loops.
1350         (bfin_reorder_loops): New function.
1351         (bfin_reorg_loops): Use these three new functions.
1352
1353         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
1354         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
1355         (CONSTRAINT_LEN): Add entry for 'q'.
1356         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
1357         Add 'q' constraints.
1358         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
1359         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
1360
1361         * config/bfin/bfin.md (add_with_carry): New pattern.
1362         (s_or_u, su_optab, su_modifier): New code macros/attrs.
1363         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
1364         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
1365         support unsigned multiplies too.  Removed incorrect commutativity from
1366         operand 1 constraint where appropriate.
1367         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
1368         patterns.
1369         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
1370         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
1371         New patterns.
1372         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
1373         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
1374         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
1375         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
1376         usmulhisi_hh_huh): New patterns.
1377
1378         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
1379         lshifthi3): Fix output template to use half reg for operand 2.
1380
1381         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
1382         instead of R2.
1383
1384         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
1385
1386 2007-02-27  Andreas Schwab  <schwab@suse.de>
1387
1388         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
1389
1390 2007-02-27  Jan Hubicka  <jh@suse.cz>
1391
1392         * predict.c (last_basic_block_p): Remove.
1393         (tree_estimate_probability): Update return heuristic for commonized
1394         return blocks.
1395
1396 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
1397
1398         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
1399
1400 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
1401
1402         * doc/include/gcc-common.texi (versionsubtitle): New macro.
1403         * doc/cpp.texi: Standardize title page.
1404         * doc/cppinternals.texi: Likewise.
1405         * doc/gcc.texi: Standardize title page, remove version number
1406         from copyright page.
1407         * doc/gccint.texi: Likewise.
1408         * doc/install.texi: Standardize title page, add table of
1409         contents.
1410
1411 2007-02-26  Jan Hubicka  <jh@suse.cz>
1412
1413         * predict.def: Set outcomes according to more recent results.
1414         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
1415         Remove dead predictors.
1416         * predict.c (return_prediction): Fix pasto.
1417
1418 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
1419
1420         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
1421         change; avoid a memory leak when returning early.
1422
1423 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
1424
1425         * c-decl.c (static_ctors): Move to c-common.c.
1426         (static_dtors): Likewise.
1427         (finish_function): Use c_record_cdtor_fn.
1428         (build_cdtor): Move to c-common.c.
1429         (c_write_global_declarations): Use c_build_cdtor_fns.
1430         * c-common.h (static_ctors): Declare.
1431         (static_dtors): Likewise.
1432         (c_record_cdtor_fn): Likewise.
1433         (c_build_cdtor_fns): Likewise.
1434         * c-common.c (static_ctors): New variable.
1435         (static_dtors): Likewise.
1436         (c_record_cdtor_fn): New function.
1437         (build_cdtor): Move from c-decl.c
1438         (c_build_cdtor_fns): New function.
1439
1440         * output.h (assemble_addr_to_section): Declare.
1441         (get_cdtor_priority_section): Likewise.
1442         * varasm.c (assemble_addr_to_section): New function.
1443         (get_cdtor_priority_section): Likewise.
1444         (default_named_section_asm_out_destructor): Use them.
1445         (destor_dtor_section_asm_out_destructor): Likewise.
1446         (default_named_section_asm_out_constructor): Likewise.
1447         (default_ctor_section_asm_out_constructor): Likewise.
1448         * config.gcc (*-*-vxworks*): Include vxworks.o.
1449         * config/t-vxworks (vxworks.o): New target.
1450         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
1451         (TARGET_ASM_CONSTRUCTOR): Define.
1452         (TARGET_ASM_DESTRUCTOR): Likewise.
1453         (vxworks_asm_out_constructor): Declare.
1454         (vxworks_asm_out_destructor): Likewise.
1455
1456         * c-common.c (get_priority): Check that we have not just an
1457         INTEGER_CST, but an integer constant with integeral type.
1458
1459 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
1460
1461         PR tree-optimization/30938
1462         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
1463         use &dt[nargs-1] instead of &dt[nargs] in the call to
1464         vect_is_simple_use().
1465
1466 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
1467
1468         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
1469         from register elimination as PRE_MODIFY / POST_MODIFY increments.
1470         Do not attempt to handle MEM inside auto-inc expressions.
1471         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
1472         of a register modified by an auto-inc expression.  However, do handle
1473         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
1474         (elimination_effects): Prohibit elimination of a register modified
1475         by an auto-inc expression.  Disable register elimination rules whose
1476         target register is modified by an auto-inc expression with variable
1477         increment.
1478
1479 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
1480
1481         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
1482         off-by-one error.
1483         (array_at_struct_end_p): New function.
1484         (idx_infer_loop_bounds): Use it.
1485         (estimate_numbers_of_iterations_loop): Export.
1486         * predict.c (predict_loops): Use estimated_loop_iterations_int.
1487         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
1488         (tree_estimate_probability): Call record_loop_exits.
1489         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
1490         (estimated_loop_iterations, estimated_loop_iterations_int,
1491         estimated_loop_iterations_tree): New functions.
1492         (analyze_siv_subscript_cst_affine,
1493         compute_overlap_steps_for_affine_1_2,
1494         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
1495         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
1496         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
1497         (PRED_LOOP_ITERATIONS_GUESSED): New.
1498         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
1499         * cfgloop.h (estimate_numbers_of_iterations_loop,
1500         estimated_loop_iterations_int): Declare.
1501
1502 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
1503
1504         * doc/extend.texi: Document optional priority argument to
1505         constructors and destructors.
1506         * tree.c (init_priority_for_decl): Adjust GTY markers.
1507         (init_ttree): Use priority-info hash functions for
1508         init_priority_for_decl.
1509         (tree_map_eq): Rename to ...
1510         (tree_map_base_eq): ... this.
1511         (tree_map_marked_p): Rename to ...
1512         (tree_map_base_marked_p): ... this.
1513         (tree_map_base_hash): New function.
1514         (decl_init_priority_lookup): Rework.
1515         (decl_fini_priority_lookup): New function.
1516         (decl_priority_info): New function.
1517         (decl_init_priority_insert): Use it.
1518         (decl_fini_priority_insert): Likewise.
1519         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
1520         hierarchy.
1521         (decl_restrict_base_insert): Likewise.
1522         (decl_debug_expr_insert): Likewise.
1523         (decl_value_expr_lookup): Likewise.
1524         (decl_value_expr_insert): Likewise.
1525         * tree.h (priority_type): New type.
1526         (decl_init_priority_lookup): Use priority_type.
1527         (decl_fini_priority_lookup): New function.
1528         (decl_init_priority_insert): Use priority_type.
1529         (decl_fini_priority_insert): New function.
1530         (DECL_HAS_INIT_PRIORITY): Tweak comments.
1531         (DECL_INIT_PRIORITY): Likewise.
1532         (SET_DECL_INIT_PRIORITY): Add comment.
1533         (DECL_FINI_PRIORITY): New macro.
1534         (SET_DECL_FINI_PRIORITY): Likewise.
1535         (DEFAULT_INIT_PRIORITY): Document.
1536         (MAX_INIT_PRIORITY): Likewise.
1537         (MAX_RESERVED_INIT_PRIORITY): Likewise.
1538         (tree_map_base): New type.
1539         (tree_map_base_eq): New function.
1540         (tree_map_base_hash): Likewise.
1541         (tree_map_base_marked_p): Likewise.
1542         (tree_map): Inherit from tree_map_base.
1543         (tree_map_eq): Make it a macro.
1544         (tree_map_marked_p): Likewise.
1545         (tree_int_map): Inherit from tree_map_base.
1546         (tree_int_map_eq): Make it a macro.
1547         (tree_int_map_hash): Likewise.
1548         (tree_int_map_marked_p): Likewise.
1549         (tree_priority_map): New type.
1550         (tree_priority_map_eq): New macro.
1551         (tree_priority_map_hash): Likewise.
1552         (tree_priority_map_marked_p): Likewise.
1553         * varasm.c (emults_decl): Adjust for refactoring of tree_map
1554         hierarchy.
1555         (emutls_common_1): Likewise.
1556         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
1557         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
1558         of tree_map hierarchy.
1559         * tree-cfg.c (move_stmt_r): Likewise.
1560         (new_label_mapper): Likewise.
1561         * c-tree.h (c_expand_body): Move to ...
1562         * c-common.h (c_expand_body): ... here.
1563         * c-decl.c (c_expand_body): Move to ...
1564         * c-common.c (c_expand_body): ... here.
1565         (c_common_attribute_table): Allow 1 argument for the constructor
1566         and destructor attributes.
1567         (get_priority): New function.
1568         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
1569         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
1570
1571 2007-02-24  Jan Hubicka  <jh@suse.cz>
1572
1573         PR middle-end/30509
1574         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
1575
1576 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
1577             Jan Hubicka  <jh@suse.cz>
1578
1579         PR target/30778
1580         * i386.c (counter_mode): New function.
1581         (expand_set_or_movmem_via_loop): Use it.
1582         (expand_movmem_epilogue): Likewise; fix pasto.
1583         (ix86_expand_movmem): Do emit guard even for constant counts.
1584         (ix86_expand_setmem): Likewise.
1585
1586 2007-02-25  Nick Clifton  <nickc@redhat.com>
1587
1588         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
1589         (JUMP_TABLES_IN_TEXT_SECTION): Define.
1590
1591 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
1592
1593         PR target/30770
1594         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
1595         count argument with 0x10, not with 0x16.
1596         (expand_setmem_epilogue): Ditto.
1597
1598 2007-02-24  Mike Stump  <mrs@apple.com>
1599
1600         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
1601         symbols.
1602
1603 2007-02-24  Richard Guenther  <rguenther@suse.de>
1604
1605         PR middle-end/30951
1606         * fold-const.c (fold_binary): Fold x +- CST op x for
1607         EQ_EXPR and NE_EXPR.
1608
1609 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1610
1611         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
1612
1613 2007-02-24  Jan Hubicka  <jh@suse.cz>
1614
1615         * cgraphunit.c (decide_is_function_needed): Honor
1616         -fkeep-inline-functions.
1617
1618 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1619
1620         * builtins.c (fold_builtin_modf): New.
1621         (fold_builtin_2): Use it.
1622
1623 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
1624
1625         * loop-iv.c (implies_p): Detect additional cases where A implies B.
1626         (determine_max_iter): Take additional LOOP arg; all callers changed.
1627         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
1628         one using simplifications.
1629         (simplify_using_initial_values): Return if the expression becomes
1630         invalid due to altered regs.
1631
1632 2007-02-23  DJ Delorie  <dj@redhat.com>
1633
1634         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
1635
1636 2007-02-23  Mike Stump  <mrs@apple.com>
1637
1638         * tlink.c (scan_linker_output): Parse linker messages from
1639         darwin9's linker better.
1640
1641 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
1642
1643         PR debug/29614
1644         * varpool.c (varpool_assemble_pending_decls):  Set
1645         varpool_last_needed_node to null.
1646
1647 2007-02-23  DJ Delorie  <dj@redhat.com>
1648
1649         * config/i386/i386.c (ix86_data_alignment): Don't specify an
1650         alignment bigger than the object file can handle.
1651
1652 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
1653
1654         PR target/30825
1655         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
1656         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
1657         (*movsf_1): Penalize MMX moves.
1658
1659 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
1660
1661         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
1662         2^32-1 or more times unless flag_unsafe_loop_optimizations.
1663
1664         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
1665
1666 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1667
1668         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
1669         (fold_builtin_1): Use them.
1670         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
1671         BUILT_IN_SIGNIFICAND.
1672
1673 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
1674
1675         * config/i386/i386.c (bdesc_1arg): Initialize
1676         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
1677         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
1678         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
1679         and IX86_BUILTIN_MOVSLDUP.
1680
1681 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
1682
1683         PR rtl-optimization/30841
1684         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
1685
1686 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1687
1688         * builtins.c (fold_builtin_frexp): New.
1689         (fold_builtin_2): Use it.
1690
1691 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
1692
1693         * doc/invoke.texi (Spec Files): Document getenv spec function.
1694
1695         * gcc.c (getenv_spec_function): New function.
1696         (static_spec_functions): Add it.
1697         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
1698         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
1699         header files.
1700
1701 2007-02-22  Michael Matz  <matz@suse.de
1702
1703         PR c++/29433
1704         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
1705         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
1706
1707 2007-02-22  Ian Lance Taylor  <iant@google.com>
1708
1709         PR debug/30898
1710         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
1711         (mem_loc_descriptor): Call it.
1712
1713 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
1714             Ira Rosen  <irar@il.ibm.com>
1715
1716         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
1717
1718 2007-02-22  Ira Rosen  <irar@il.ibm.com>
1719
1720         PR tree-optimization/30843
1721         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
1722         stores only after all the group is vectorized.
1723
1724 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
1725
1726         PR tree-optimization/30858
1727         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
1728         in the reduction cycle have a single use in the loop.
1729         * tree-vectorizer.h (relevant): Add documentation.
1730
1731 2007-02-20  Mike Stump  <mrs@apple.com>
1732
1733         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
1734         * configure: Regenerate.
1735
1736 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
1737
1738         Change the defaults of some parameters and options.
1739         * config/spu/spu-protos.h (spu_optimization_options): Declare.
1740         * config/spu/spu.c (spu_optimization_options): Add.
1741         (spu_override_options): Change params in spu_optimization_options.
1742         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
1743
1744         Register 127 is only 16 byte aligned when used as a frame pointer.
1745         * config/spu/spu-protos.h (spu_init_expanders): Declare.
1746         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
1747         HARD_FRAME_POINTER_REGNUM.
1748         (spu_legitimate_address):  Use regno_aligned_for_reload.
1749         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
1750         aligned when frame_pointer_needed is true.
1751         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
1752         to 8 bits.
1753         * config/spu/spu.h (INIT_EXPANDERS): Define.
1754
1755         Make sure shift and rotate instructions have valid immediate operands.
1756         * config/spu/predicates.md (spu_shift_operand): Remove.
1757         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
1758         * config/spu/constraints.md (W, O): Extend range.
1759         * config/spu/spu.md (umask, nmask): Define.
1760         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
1761         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
1762         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
1763         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
1764         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
1765         (lshr<mode>3_reg):  Fix rtl description.
1766
1767         Make sure mulhisi immediate operands are valid.
1768         * config/spu/predicates.md (imm_K_operand): Add.
1769         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
1770
1771         Generate constants using fsmbi and andi.
1772         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
1773         (print_operand, spu_split_immediate, classify_immediate,
1774         fsmbi_const_p): Handle IC_FSMBI2.
1775
1776         Correctly handle a CONST_VECTOR containing symbols.
1777         * config/spu/spu.c (print_operand): Handle HIGH correctly.
1778         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
1779         (immediate_load_p): Allow symbols that use 2 instructions to create.
1780         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
1781         with symbols when flag_pic is set.
1782         (const_vector_immediate_p): New.
1783         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
1784         accept a CONST_VECTOR with symbols.
1785         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
1786         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
1787         correctly.
1788         * config/spu/spu.md (high, low): Delete.
1789         (low_<mode>): Define.
1790
1791         Remove INTRmode and INTR_REGNUM, which didn't work.
1792         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
1793         of INTR_REGNUM.
1794         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
1795         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
1796         peephole2 pattern): Don't use INTR or 131.
1797         (movintrcc): Delete.
1798         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
1799         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
1800         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
1801         (UNSPEC_SET_INTR): Add.
1802         * config/spu/spu-modes.def (INTR): Remove.
1803
1804         More accurate warnings about run-time relocations.
1805         * config/spu/spu.c (reloc_diagnostic): Test in_section.
1806
1807         Correctly warn about immediate arguments to specific intrinsics.
1808         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
1809         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
1810         the instruction predicate.
1811
1812         Fix tree check errors with latest update.
1813         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
1814         CALL_EXPR_ARG.
1815         (spu_expand_builtin): Use CALL_EXPR_FN.
1816
1817         Add missing specific intrinsics.
1818         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
1819         si_bislede.
1820         * config/spu/spu_internals.h: Ditto.
1821
1822         Fix incorrect operand modifiers.
1823         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
1824         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
1825
1826         Optimize one case of zero_extend of a vec_select.
1827         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
1828
1829         Accept any immediate for hbr.
1830         * config/spu/spu.md (hbr):  Change s constraints to i.
1831
1832 2007-02-21  Paul Brook  <paul@codesourcery.com>
1833
1834         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
1835         condexec_count when skipping USE and CLOBBER.
1836
1837 2007-02-21  Nick Clifton  <nickc@redhat.com>
1838
1839         * common.opt (Warray-bounds): Add Warning attribute.
1840         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
1841         Likewise.
1842         (fsized-zeroes): Add Optimization attribute.
1843         (fsplit-wide-types, ftree-scev-cprop): Likewise.
1844         * c.opt (Wc++0x-compat): Add Warning attribute.
1845
1846 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
1847
1848         PR middle-end/30761
1849         * reload1.c (eliminate_regs_in_insn): In the single_set special
1850         case, attempt to re-recognize the insn before falling back to
1851         having reload fix it up.
1852
1853 2007-02-20  Eric Christopher  <echristo@gmail.com>
1854
1855         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
1856         Rewrite accordingly.
1857         (frv_read_iacc_argument): Ditto.
1858         (frv_expand_set_builtin): Take a call instead of arglist, update for
1859         above changes.
1860         (frv_expand_unop_builtin): Ditto.
1861         (frv_expand_binop_builtin): Ditto.
1862         (frv_expand_cut_builtin): Ditto.
1863         (frv_expand_binopimm_builtin): Ditto.
1864         (frv_expand_voidbinop_builtin): Ditto.
1865         (frv_expand_int_void2arg): Ditto.
1866         (frv_expand_prefetches): Ditto.
1867         (frv_expand_voidtriop_builtin): Ditto.
1868         (frv_expand_voidaccop_builtin): Ditto.
1869         (frv_expand_load_builtin): Ditto.
1870         (frv_expand_store_builtin): Ditto.
1871         (frv_expand_mdpackh_builtin): Ditto.
1872         (frv_expand_mclracc_builtin): Ditto.
1873         (frv_expand_mrdacc_builtin): Ditto.
1874         (frv_expand_mwtacc_builtin): Ditto.
1875         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
1876         calls for above.
1877
1878 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
1879
1880         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
1881         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
1882         cmpb instruction.
1883         (HAVE_GAS_DFP): Check for assembler support of decimal floating
1884         point instructions.
1885         * configure: Regenerate.
1886         * config.in: Regenerate.
1887         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
1888         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
1889         masks to power6 and power6x and to POWERPC_MASKS.
1890         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
1891         _ARCH_PWR6.
1892         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
1893         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
1894         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
1895         Access PROTOTYPE as variable, not mask.
1896
1897 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
1898
1899         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
1900         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
1901         * combine.c (adjust_for_new_dest): Use it.
1902         * postreload.c (reload_combine): Likewise.
1903
1904 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
1905
1906         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
1907         notes on an insn with multiple sets, even if single_set returns
1908         non-NULL for that insn.
1909
1910 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1911
1912         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
1913         scalbn and scalbln.
1914
1915 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
1916
1917         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
1918         if user didn't pass it.
1919         * config/i386/darwin.h (CC1_SPEC): Likewise.
1920         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
1921         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
1922         -mmacosx-version-min.
1923
1924 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1925             Uros Bizjak  <ubizjak@gmail.com>
1926
1927         * optabs.h (enum optab_index): Add new OTI_scalb.
1928         (scalb_optab): Define corresponding macro.
1929         * optabs.c (init_optabs): Initialize scalb_optab.
1930         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
1931         patterns.
1932         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
1933         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
1934         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
1935         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
1936         flag_unsafe_math_optimizations is set.
1937
1938         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
1939         to implement scalbf, scalb and scalbl built-ins as inline x87
1940         intrinsics.
1941
1942 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1943             DJ Delorie <dj@redhat.com>
1944
1945         PR other/30824
1946         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
1947         (diagnostic_report_diagnostic): ... here, and turn them into real
1948         errors. If warnings are inhibited, no need to do anything.
1949
1950 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
1951
1952         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
1953         better code generation.
1954
1955 2007-02-20  Ben Elliston  <bje@au.ibm.com>
1956
1957         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
1958
1959 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
1960
1961         * config/alpha/alpha.c, config/alpha/alpha.md,
1962         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
1963         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
1964         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
1965         config/arm/lib1funcs.asm: Follow spelling conventions.
1966
1967         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
1968         config/fr30/fr30.md, config/i386/i386.h,
1969         config/iq2000/iq2000.h, config/iq2000/predicates.md,
1970         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
1971         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
1972         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
1973         config/rs6000/altivec.md, config/rs6000/rs6000.c,
1974         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
1975         config/sparc/sparc.c, config/sparc/sparc.h,
1976         config/sparc/sparc.md, config/spu/constraints.md,
1977         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
1978         conventions.
1979
1980 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
1981
1982         PR target/29943
1983         * varasm.c (use_blocks_for_decl_p): Return false for decls with
1984         alias attribute.
1985
1986 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
1987
1988         * doc/invoke.texi (-ftree-lrs): Remove.
1989
1990 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
1991
1992         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
1993         NULL.
1994
1995 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
1996
1997         * config/ia64/ia64.c (ia64_expand_builtin): Use the
1998         new CALL_EXPR_FN macro for retrieving the function
1999         declaration of the input expression.
2000
2001 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2002
2003         * c.opt (Waddress): New.
2004         * common.opt (Walways-true): Delete.
2005         (Wstring-literal-comparison): Delete.
2006         * doc/invoke.texi (Warning Options): Delete -Walways-true and
2007         -Wstring-literal-comparison. Add -Waddress.
2008         (Waddress): New.
2009         (Walways-true): Delete.
2010         (Wstring-literal-comparison): Delete.
2011         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
2012         consistently instead of -Walways-true in example.
2013         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
2014         * c-typeck.c (parser_build_binary_op): Replace
2015         -Wstring-literal-comparison and -Walways-true with -Waddress.
2016         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
2017         with -Waddress.
2018
2019 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
2020
2021         * tree-cfg.c (dump_function_to_file): Be prepared for functions
2022         without DECL_STRUCT_FUNCTION initialized.
2023
2024 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
2025
2026         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
2027         due to calls to functions taking pointers as parameters.
2028
2029 2007-02-19  Richard Henderson  <rth@redhat.com>
2030
2031         PR debug/29558
2032         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
2033         in memory.
2034
2035 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2036
2037         * config/s390/s390.c (s390_call_saved_register_used,
2038         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
2039         accessed to the new scheme.
2040
2041 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
2042
2043         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
2044         (cris_print_index, cris_print_operand, cris_print_operand_address)
2045         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
2046         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
2047         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
2048         GET_CODE () == xxx.
2049         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
2050         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
2051         GO_IF_LEGITIMATE_ADDRESS): Ditto.
2052         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
2053         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
2054         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
2055         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
2056         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
2057         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
2058         (uminsi3, call, call_value): Ditto.
2059         (define_split: indir_to_reg_split, unnamed): Ditto.
2060
2061 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
2062
2063         PR tree-optimization/30975
2064         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
2065         wrong assert.
2066
2067 2007-02-18  Eric Christopher  <echristo@gmail.com>
2068
2069         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
2070         Remove use of arglist.
2071         (mips_expand_builtin): Remove use of arglist, pass in expr.
2072         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
2073         (mips_expand_builtin_movtf): Ditto.
2074         (mips_expand_builtin_compare): Ditto.
2075
2076 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
2077
2078         * tree-sra.c (sra_build_assignment): Replace assertion
2079         checking with a comment explaining why it can't be done.
2080
2081 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
2082
2083         PR middle-end/30833
2084         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
2085         during CALL_EXPR representation conversion.
2086         * tree-ssa-propagate.c (set_rhs): Likewise.
2087
2088 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
2089
2090         * tree-sra.c (sra_build_assignment): Disable assertion checking
2091         for now.
2092
2093 2007-02-18  Roger Sayle  <roger@eyesopen.com>
2094
2095         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
2096         instead of calling build2 with a GIMPLE_MODIFY_STMT.
2097         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
2098         Likewise.
2099         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
2100         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
2101         gimplify_init_ctor_eval_range, gimple_push_cleanup,
2102         gimplify_omp_for, gimplify_omp_atomic_pipeline,
2103         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
2104         force_gimple_operand): Likewise.
2105         * ipa-cp.c (constant_val_insert): Likewise.
2106         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
2107         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
2108         perfect_nestify): Likewise.
2109         * langhooks.c (lhd_omp_assignment): Likewise.
2110         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
2111         lower_copyprivate_clauses, lower_send_clauses,
2112         lower_send_shared_vars, expand_parallel_call,
2113         expand_omp_for_generic, expand_omp_for_static_nochunk,
2114         expand_omp_for_static_chunk, expand_omp_sections,
2115         lower_omp_single_copy, lower_omp_for_lastprivate,
2116         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
2117         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
2118         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
2119         Likewise.
2120
2121 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
2122
2123         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
2124         config/sh/sh.md: Follow spelling conventions.
2125
2126         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
2127         config/frv/predicates.md: Follow spelling conventions.
2128
2129         * config/m68k/linux-unwind.h: Fix a comment typo.
2130         * target.h: Follow spelling conventions.
2131
2132 2007-02-18  Roger Sayle  <roger@eyesopen.com>
2133
2134         PR rtl-optimization/28173
2135         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
2136         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
2137         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
2138         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
2139         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
2140
2141 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2142
2143         * builtins.c (fold_builtin_load_exponent): New.
2144         (fold_builtin_2): Use it.
2145
2146 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
2147
2148         PR rtl-optimization/30773
2149         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
2150         if we fail to attach a REG_EQUIV note.
2151
2152 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
2153             Roger Sayle  <roger@eyesopen.com>
2154
2155         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
2156
2157 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
2158
2159         * calls.c (initialize_argument_information): Pass original EXP
2160         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
2161         code to split complex arguments here, as part of initializing the
2162         ARGS array.
2163         (expand_call): Remove code that builds a list of arguments and
2164         inserts implicit arguments into it.  Instead, just count how many
2165         implicit arguments there will be so we can determine the size of
2166         the ARGS array, and let initialize_argument_information do the work.
2167         (split_complex_values): Delete unused function.
2168
2169 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
2170
2171         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
2172
2173 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
2174
2175         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
2176         for arg pointer based indexed addressing.
2177
2178 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
2179
2180         * config/ia64/ia64.h, config/ia64/ia64.md,
2181         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
2182         spelling conventions.
2183
2184 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
2185
2186         * config/m68k/m68k.c (split_di): New.
2187         * config/m68k/m68k-protos.h: Declare split_di.
2188         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
2189           Improve predicate handling and split constant shifts.
2190
2191 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
2192
2193         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
2194         parameter for register bitfield operations, general predicates
2195         cleanup
2196
2197 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
2198
2199         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
2200         * config/m68k/linux-unwind.h: New file.
2201
2202 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
2203
2204         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
2205         config/i386/athlon.md, config/ia64/ia64.md,
2206         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
2207         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
2208         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
2209         tree-ssa-loop-niter.c, tree-vect-analyze.c,
2210         tree-vect-transform.c: Fix comment typos.
2211
2212 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
2213
2214         * sched-deps.c (find_insn_list): Remove.
2215         * sched-int.h: Remove the prototype for find_insn_list.
2216
2217 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
2218
2219         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
2220         to linker.
2221         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
2222         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
2223         darwin_rs6000_override_options.
2224         (C_COMMON_OVERRIDE_OPTIONS): Expect
2225         darwin_macosx_version_min to be non-NULL always.
2226         (TARGET_C99_FUNCTIONS): Likewise.
2227         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
2228         (DARWIN_MINVERSION_SPEC): New.
2229         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
2230         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
2231         to cc1*.
2232         (DARWIN_MINVERSION_SPEC): New.
2233         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
2234         value.
2235         * config/darwin-c.c (darwin_cpp_builtins): Expect
2236         darwin_macosx_version_min to be non-NULL always.
2237
2238         * config/rs6000/rs6000.c: Clean up trailing whitespace.
2239
2240 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
2241
2242         * config/i386/i386.h (x86_use_xchgb): New.
2243         (TARGET_USE_XCHGB): New macro.
2244         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
2245         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
2246         Split after reload into bswaphi for shifts of 8.
2247         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
2248         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
2249         or when optimizing for size.
2250
2251 2007-02-16  Richard Guenther  <rguenther@suse.de>
2252             Christian Bruel  <christian.bruel@st.com>
2253
2254         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
2255         DECLs but prefer SSA_NAMEs over DECLs.
2256
2257 2007-02-16  Richard Guenther  <rguenther@suse.de>
2258
2259         * tree-flow-inline.h (single_imm_use_p): Remove.
2260         (zero_imm_uses_p): Likewise.
2261         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
2262         instead of single_imm_use_p.
2263         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
2264         zero_imm_uses_p.
2265
2266 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2267
2268         PR other/27843
2269         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
2270         nested double- and backquotes.
2271
2272 2007-02-15  Roger Sayle  <roger@eyesopen.com>
2273
2274         PR middle-end/30391
2275         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
2276         should be unreachable.
2277         (build2_stat): Allow construction of MODIFY_EXPR at any time.
2278         For the time being redirect GIMPLE_MODIFY_STMT to the new
2279         (renamed) build_gimple_modify_stmt_stat.
2280         (build2_gimple_stat): Rename to...
2281         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
2282         Always build a GIMPLE_MODIFY_STMT node.
2283         * tree.h (build2_gimple, build2_gimple_stat): Delete.
2284         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
2285         declarations.
2286
2287         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
2288         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
2289         * tree-complex.c (set_component_ssa_name, expand_complex_move,
2290         expand_complex_div_wide): Likewise.
2291         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
2292         * tree-ssa-loop-im.c (schedule_sm): Likewise.
2293         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
2294         * tree-ssa-loop-manip.c (create_iv): Likewise.
2295         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
2296         abs_replacement): Likewise.
2297         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
2298         realify_fake_stores): Likewise.
2299
2300         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
2301         node rather than a GIMPLE_MODIFY_STMT node.
2302         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
2303         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
2304         Likewise.
2305         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
2306         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
2307         GIMPLE_MODIFY_STMT.
2308
2309 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2310
2311         PR middle-end/30433
2312         * fold-const.c (fold_comparison): Add back the
2313         folding of constant complex comparisions.
2314
2315 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2316
2317         PR middle-end/30729
2318         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
2319         effects unknown to this function, return early.
2320
2321 2007-02-15  Ian Lance Taylor  <iant@google.com>
2322
2323         * lower-subreg.c (move_eh_region_note): New static function.
2324         (resolve_simple_move): Call it.
2325         (decompose_multiword_subregs): Track blocks for which we resolve a
2326         simple move which is also a control flow insn.  Pass them to
2327         find_many_sub_basic_blocks.
2328         (pass_lower_subreg): Add TODO_verify_flow.
2329         (pass_lower_subreg2): Likewise.
2330
2331 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2332             Brooks Moses  <brooks.moses@codesourcery.com>
2333             Lee Millward  <lee.millward@codesourcery.com>
2334
2335         * tree.h (enum tree_code_class): Add tcc_vl_exp.
2336         (VL_EXP_CLASS_P): New.
2337         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
2338         TREE_CODE_LENGTH.
2339         (TREE_OPERAND_CHECK_CODE): Likewise.
2340         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
2341         (TREE_RTL_OPERAND_CHECK): Likewise.
2342         (tree_operand_check_failed): Make second parameter the whole tree
2343         instead of its code.  Fixed callers.
2344         (VL_EXP_CHECK): New.
2345         (TREE_OPERAND_LENGTH): New.
2346         (VL_EXP_OPERAND_LENGTH): New.
2347         (CALL_EXPR_FN): New.
2348         (CALL_EXPR_STATIC_CHAIN): New.
2349         (CALL_EXPR_ARGS): New.
2350         (CALL_EXPR_ARG): New.
2351         (call_expr_nargs): New.
2352         (CALL_EXPR_ARGP): New.
2353         (build_nt_call_list): Declare.
2354         (build_vl_exp_stat): Declare.
2355         (build_vl_exp): New.
2356         (build_call_list): Declare.
2357         (build_call_nary): Declare.
2358         (build_call_valist): Declare.
2359         (build_call_array): Declare.
2360         (call_expr_arg): Declare.
2361         (call_expr_argp): Declare.
2362         (call_expr_arglist): Declare.
2363         (fold_build_call_list): Declare.
2364         (fold_build_call_list_initializer): Declare.
2365         (fold_call_expr): Declare to replace fold_builtin.
2366         (fold_builtin_fputs): Update to agree with modified definition.
2367         (fold_builtin_strcpy): Likewise.
2368         (fold_builtin_strncpy): Likewise.
2369         (fold_builtin_memory_chk): Likewise.
2370         (fold_builtin_stxcpy_chk): Likewise.
2371         (fold_builtin_strncpy_chk): Likewise.
2372         (fold_builtin_next_arg): Likewise.
2373         (fold_build_call_expr): Declare.
2374         (fold_builtin_call_list): Declare.
2375         (fold_builtin_call_valist): Declare.
2376         (build_call_expr): Declare.
2377         (validate_arglist): Update to agree with modified definition.
2378         (tree_operand_length): New.
2379         (call_expr_arg_iterator): New.
2380         (init_call_expr_arg_iterator): New.
2381         (next_call_expr_arg): New.
2382         (first_call_expr_arg): New.
2383         (more_call_expr_args_p): New.
2384         (FOR_EACH_CALL_EXPR_ARG): New.
2385
2386         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
2387         and tcc_gimple_stmt.
2388         (tree_code_size): Update documentation.  Use sizeof (tree) rather
2389         than sizeof (char *).
2390         (tree_size): Likewise.  Add case for tcc_vl_exp.
2391         (tree_node_structure): Add case for tcc_vl_exp.
2392         (contains_placeholder_p): Likewise.
2393         (substitute_in_expr): Likewise.
2394         (substitute_placeholder_in_expr): Likewise.
2395         (stabilize_reference_1): Likewise.
2396         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
2397         to diagnose breakage of this interface for constructing CALL_EXPRs.
2398         (build_nt): Add similar assertion here.
2399         (build_nt_call_list): New.
2400         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
2401         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
2402         TREE_CODE_LENGTH.
2403         (get_callee_fndecl): Use new CALL_EXPR accessors.
2404         (tree_operand_check_failed): Change parameters to pass entire node
2405         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
2406         (process_call_operands): New.
2407         (build_vl_exp_stat): New.
2408         (build_call_list): New.
2409         (build_call_nary): New.
2410         (build_call_valist): New.
2411         (build_call_array): New.
2412         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2413         (call_expr_arglist): New.
2414
2415         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
2416         tcc_vl_exp instead of a fixed-size tcc_expression.
2417
2418         * doc/c-tree.texi (CALL_EXPR): Document new representation and
2419         accessors for CALL_EXPRs.
2420         (AGGR_INIT_EXPR): Likewise.
2421
2422 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2423             Brooks Moses  <brooks.moses@codesourcery.com>
2424             Lee Millward  <lee.millward@codesourcery.com>
2425
2426         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
2427         (expand_builtin_nonlocal_goto): Change parameter to be entire
2428         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
2429         (expand_builtin_prefetch): Likewise.
2430         (expand_builtin_classify_type): Likewise.
2431         (mathfn_built_in): Return NULL_TREE instead of 0.
2432         (expand_errno_check): Use new CALL_EXPR accessors.
2433         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
2434         Return NULL_RTX instead of 0.
2435         (expand_builtin_mathfn_2): Likewise.
2436         (expand_builtin_mathfn_3): Likewise.
2437         (expand_builtin_interclass_mathfn): Likewise.
2438         (expand_builtin_sincos): Likewise.
2439         (expand_builtin_cexpi): Likewise.
2440         (expand_builtin_int_roundingfn): Likewise.
2441         (expand_builtin_int_roundingfn_2): Likewise.
2442         (expand_builtin_pow): Likewise.
2443         (expand_builtin_powi): Likewise.
2444         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
2445         of arglist, fixing callers appropriately.  Use new CALL_EXPR
2446         accessors and constructors.  Return NULL_RTX instead of 0.
2447         (expand_builtin_strstr): Likewise.
2448         (expand_builtin_strchr): Likewise.
2449         (expand_builtin_strrchr): Likewise.
2450         (expand_builtin_strpbrk): Likewise.
2451         (expand_builtin_memcpy): Likewise.
2452         (expand_builtin_mempcpy): Likewise.
2453         (expand_builtin_mempcpy_args): New.
2454         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
2455         (expand_builtin_memmove_args): New.
2456         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
2457         (expand_movstr): Likewise.
2458         (expand_builtin_strcpy): Likewise.
2459         (expand_builtin_strcpy_args): New.
2460         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
2461         (expand_builtin_strncpy): Likewise.
2462         (expand_builtin_memset): Likewise.
2463         (expand_builtin_memset_args): New.
2464         (expand_builtin_bzero): Similarly to expand_builtin_memset.
2465         (expand_builtin_memcmp): Likewise.
2466         (expand_builtin_strcmp): Likewise.
2467         (expand_builtin_strncmp): Likewise.
2468         (expand_builtin_strcat): Likewise.
2469         (expand_builtin_strncat): Likewise.
2470         (expand_builtin_strspn): Likewise.
2471         (expand_builtin_strcspn): Likewise.
2472         (expand_builtin_args_info): Likewise.
2473         (expand_builtin_va_start): Likewise.
2474         (gimplify_va_arg_expr): Likewise.
2475         (expand_builtin_va_end): Likewise.
2476         (expand_builtin_va_copy): Likewise.
2477         (expand_builtin_frame_address): Likewise.
2478         (expand_builtin_alloca): Likewise.
2479         (expand_builtin_bswap): Likewise.
2480         (expand_builtin_unop): Likewise.
2481         (expand_builtin_fputs): Likewise.
2482         (expand_builtin_expect): Likewise.
2483         (expand_builtin_fabs): Likewise.
2484         (expand_builtin_copysign): Likewise.
2485         (expand_builtin_printf): Likewise.
2486         (expand_builtin_fprintf): Likewise.
2487         (expand_builtin_sprintf): Likewise.
2488         (expand_builtin_init_trampoline): Likewise.
2489         (expand_builtin_signbit): Likewise.
2490         (expand_builtin_fork_or_exec): Likewise.
2491         (expand_builtin_sync_operation): Likewise.
2492         (expand_builtin_compare_and_swap): Likewise.
2493         (expand_builtin_lock_test_and_set): Likewise.
2494         (expand_builtin_lock_release): Likewise.
2495         (expand_builtin): Likewise.
2496         (builtin_mathfn_code): Likewise.
2497
2498         (fold_builtin_constant_p): Pass call arguments individually instead
2499         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
2500         accessors and constructors.  Return NULL_TREE instead of 0.
2501         (fold_builtin_expect): Likewise.
2502         (fold_builtin_classify_type): Likewise.
2503         (fold_builtin_strlen): Likewise.
2504         (fold_builtin_nan): Likewise.
2505         (integer_valued_real_p): Likewise.
2506         (fold_trunc_transparent_mathfn): Likewise.
2507         (fold_fixed_mathfn): Likewise.
2508         (fold_builtin_cabs): Likewise.
2509         (fold_builtin_sqrt): Likewise.
2510         (fold_builtin_cbrt): Likewise.
2511         (fold_builtin_cos): Likewise.
2512         (fold_builtin_cosh): Likewise.
2513         (fold_builtin_tan): Likewise.
2514         (fold_builtin_sincos): Likewise.
2515         (fold_builtin_cexp): Likewise.
2516         (fold_builtin_trunc): Likewise.
2517         (fold_builtin_floor): Likewise.
2518         (fold_builtin_ceil): Likewise.
2519         (fold_builtin_round): Likewise.
2520         (fold_builtin_int_roundingfn): Likewise.
2521         (fold_builtin_bitop): Likewise.
2522         (fold_builtin_bswap): Likewise.
2523         (fold_builtin_logarithm): Likewise.
2524         (fold_builtin_hypot): Likewise.
2525         (fold_builtin_pow): Likewise.
2526         (fold_builtin_powi): Likewise.
2527         (fold_builtin_exponent): Likewise.
2528         (fold_builtin_memset): Likewise.
2529         (fold_builtin_bzero): Likewise.
2530         (fold_builtin_memory_op): Likewise.
2531         (fold_builtin_bcopy): Deleted; call site changed to invoke
2532         fold_builtin_memory_op directly.
2533         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
2534         (fold_builtin_strncpy): Likewise.
2535         (fold_builtin_memcmp): Likewise.
2536         (fold_builtin_strcmp): Likewise.
2537         (fold_builtin_strncmp): Likewise.
2538         (fold_builtin_signbit): Likewise.
2539         (fold_builtin_copysign): Likewise.
2540         (fold_builtin_isascii): Likewise.
2541         (fold_builtin_toascii): Likewise.
2542         (fold_builtin_isdigit): Likewise.
2543         (fold_builtin_fabs): Likewise.
2544         (fold_builtin_abs): Likewise.
2545         (fold_builtin_fmin_fmax): Likewise.
2546         (fold_builtin_carg): Likewise.
2547         (fold_builtin_classify): Likewise.
2548         (fold_builtin_unordered_cmp): Likewise.
2549
2550         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
2551         New functions split out from fold_builtin_1.
2552         (fold_builtin_n): New.
2553         (fold_builtin_varargs): New.
2554         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
2555         instead.
2556         (fold_call_expr): New.
2557         (build_function_call_expr): Rewrite to use new helper function.
2558         (fold_builtin_call_list): New.
2559         (build_call_expr): New.
2560         (fold_builtin_call_valist): New.
2561         (rewrite_call_expr): New.
2562         (validate_arg): New.
2563         (validate_arglist): Change parameter to be entire CALL_EXPR instead
2564         of an arglist.  Change return type to bool.  Use new CALL_EXPR
2565         accessors.
2566
2567         (fold_builtin_strstr):  Pass call arguments individually instead
2568         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
2569         accessors and constructors.  Return NULL_TREE instead of 0.
2570         (fold_builtin_strchr): Likewise.
2571         (fold_builtin_strrchr): Likewise.
2572         (fold_builtin_strpbrk): Likewise.
2573         (fold_builtin_strcat): Likewise.
2574         (fold_builtin_strncat): Likewise.
2575         (fold_builtin_strspn): Likewise.
2576         (fold_builtin_strcspn): Likewise.
2577         (fold_builtin_fputs): Likewise.
2578         (fold_builtin_next_arg): Likewise.
2579         (fold_builtin_sprintf): Likewise.
2580
2581         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
2582         NULL_RTX instead of 0.
2583         (expand_builtin_memory_chk): Likewise.
2584         (maybe_emit_chk_warning): Likewise.
2585         (maybe_emit_sprintf_chk_warning): Likewise.
2586
2587         (fold_builtin_object_size): Pass call arguments individually instead
2588         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
2589         accessors and constructors.  Return NULL_TREE instead of 0.
2590         (fold_builtin_memory_chk): Likewise.
2591         (fold_builtin_stxcpy_chk): Likewise.
2592         (fold_builtin_strncpy_chk): Likewise.
2593         (fold_builtin_strcat_chk): Likewise.
2594         (fold_builtin_strcat_chk): Likewise.
2595         (fold_builtin_strncat_chk): Likewise.
2596         (fold_builtin_sprintf_chk): Likewise.
2597         (fold_builtin_snprintf_chk): Likewise.
2598         (fold_builtin_printf): Likewise.
2599         (fold_builtin_vprintf): Likewise.
2600
2601         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
2602         constructors.
2603         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
2604         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2605         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
2606         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
2607         (fold_unary): Likewise.
2608         (fold_binary): Likewise.
2609         (fold_ternary): Remove CALL_EXPR case, since they are no longer
2610         ternary expressions.
2611         (fold): Add logic for tcc_vl_exp.
2612         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
2613         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2614         (fold_build3_stat): Add assertion to flag broken interface for
2615         constructing CALL_EXPRs.
2616         (fold_build_call_list): New.
2617         (fold_build_call_list_initializer): New.
2618         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
2619         constructors.
2620         (fold_strip_sign_ops): Likewise.
2621
2622 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2623             Brooks Moses  <brooks.moses@codesourcery.com>
2624             Lee Millward  <lee.millward@codesourcery.com>
2625
2626         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
2627         accessors and dump arguments explicitly.
2628
2629         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
2630         TREE_CODE_LENGTH.
2631         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
2632         explicitly.
2633         (print_call_name): Use new CALL_EXPR accessors.
2634
2635         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
2636         CALL_EXPR arguments explicitly instead of as a list.  Use
2637         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2638
2639         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
2640         (vrp_visit_stmt): Likewise.
2641
2642         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
2643         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
2644         TREE_CODE_LENGTH.
2645         (force_move_till_expr): Likewise.
2646
2647         * targhooks.c (default_external_stack_protect_fail): Use
2648         build_call_expr instead of build_function_call_expr.
2649         (default_hidden_stack_protect_fail): Likewise.
2650
2651         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
2652         build the call.
2653
2654         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
2655         and walk arguments explicitly.
2656
2657         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
2658         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2659         (expand_simple_operations): Likewise.
2660         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
2661
2662         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
2663         of TREE_CODE_LENGTH.
2664         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
2665
2666         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
2667         instead of TREE_CODE_LENGTH.
2668
2669         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
2670         (tree_ic_transform): Likewise.
2671         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
2672         parameter instead of arglist.  Fix callers.
2673         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
2674         (tree_stringops_transform): Likewise.
2675         (tree_indirect_call_to_profile): Likewise.
2676         (tree_stringops_values_to_profile): Likewise.
2677
2678         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
2679         (eliminate_tail_call): Likewise.
2680
2681         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
2682
2683         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
2684         Use TREE_OPERAND_LENGTH and generalize to handle any number of
2685         operands.
2686         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
2687
2688         * omp-low.c (build_omp_barrier): Use build_call_expr.
2689         (lower_rec_input_clauses): Likewise.
2690         (lower_reduction_clauses): Likewise.
2691         (expand_parallel_call): Likewise.
2692         (maybe_catch_exception): Likewise.
2693         (expand_omp_for_generic): Likewise.
2694         (expand_omp_for_static_nochunk): Likewise.
2695         (expand_omp_sections): Likewise.
2696         (lower_omp_single_simple): Likewise.
2697         (lower_omp_single_copy): Likewise.
2698         (lower_omp_master): Likewise.
2699         (lower_omp_ordered): Likewise.
2700         (lower_omp_critical): Likewise.
2701
2702         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
2703         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
2704
2705         * tree-gimple.c (is_gimple_call_addr): Fix doc.
2706         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
2707         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
2708
2709         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
2710         and generalize to handle any number of operands.
2711         (chrec_contains_undetermined): Likewise.
2712         (tree_contains_chrecs): Likewise.
2713         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
2714
2715         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
2716
2717         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
2718         fold_call_expr instead of fold_builtin.
2719         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
2720         match declarations there.
2721         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
2722         updates.
2723
2724         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
2725         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2726
2727         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
2728         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
2729
2730         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
2731         accessors.
2732
2733         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
2734         (execute_cse_sincos): Use new CALL_EXPR accessors.
2735
2736         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
2737
2738         * gimple-low.c (lower_function_body): Use build_call_expr.
2739         (lower_builtin_setjmp): Likewise.
2740
2741         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
2742         (set_storage_via_libcall): Likewise.
2743         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
2744         instead of TREE_CODE_LENGTH.
2745         (expand_expr_real_1): Use new CALL_EXPR accessors.
2746
2747         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
2748         generalize to handle any number of operands.
2749         (TB_parent_eq): Likewise.
2750
2751         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
2752         (strip_builtin_expect): Likewise.
2753
2754         * function.c (gimplify_parameters): Use build_call_expr.
2755
2756         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
2757         instead of TREE_CODE_LENGTH.
2758
2759         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
2760         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
2761
2762         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
2763         iterators.
2764
2765         * gimplify.c (build_stack_save_restore): Use build_call_expr.
2766         (gimplify_decl_expr): Likewise.
2767         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
2768         Use new CALL_EXPR iterators.
2769         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
2770         (gimplify_modify_expr_to_memset): Likewise.
2771         (gimplify_variable_sized_compare): Likewise.
2772         (gimplify_omp_atomic_fetch_op): Likewise.
2773         (gimplify_omp_atomic_pipeline): Likewise.
2774         (gimplify_omp_atomic_mutex): Likewise.
2775         (gimplify_function_tree): Likewise.
2776
2777         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
2778         (call_expr_flags): Likewise.
2779         (expand_call): Likewise.
2780
2781         * except.c (expand_builtin_eh_return_data_regno): Pass entire
2782         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
2783         accessors.
2784
2785         * coverage.c (create_coverage): Use build_call_expr.
2786
2787         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
2788         (temp_call_expr_obstack): New.
2789         (pool_copy_list): Delete.
2790         (temp_copy_call_expr): New.
2791         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
2792         CALL_EXPR accessors.  Get rid of special goo for copying argument
2793         lists and use temp_copy_call_expr instead.
2794         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
2795         CALL_EXPR accessors.
2796         (create_expression_by_pieces): Likewise.  Use build_call_array
2797         to construct the result instead of fold_build3.
2798         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
2799         dealing with argument lists.
2800         (init_pre): Remove references to expression_node_pool and
2801         list_node_pool.  Init temp_call_expr_obstack instead.
2802         (fini_pre): Remove references to expression_node_pool and
2803         list_node_pool.
2804
2805         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
2806         and walk arguments explicitly instead of as a list.
2807
2808         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
2809         (mx_register_decls): Likewise.
2810         (mudflap_register_call): Likewise.
2811         (mudflap_finish_file): Likewise.
2812
2813         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
2814         (ipa_callsite_compute_param): Likewise.
2815
2816         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
2817         accessors and constructor.
2818
2819         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
2820         accessors and constructor.
2821         (convert_tramp_reference): Likewise.
2822         (convert_call_expr): Likewise.
2823         (finalize_nesting_tree_1): Likewise.
2824
2825         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
2826         accessors.
2827
2828         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
2829
2830         * tree-inline.c (initialize_inlined_parameters): Pass entire
2831         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
2832         accessors.
2833         (estimate_num_insns_1): Use new CALL_EXPR accessors.
2834         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
2835
2836         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
2837         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2838         (vectorizable_reduction): Likewise.
2839         (vectorizable_call): Use new CALL_EXPR iterators.
2840         (vectorizable_conversion): Use build_call_expr.
2841         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
2842         (vect_gen_widened_results_half): Use build_call_expr.
2843         (vect_setup_realignment): Likewise.
2844         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
2845
2846         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
2847         (pass_through_call): Likewise.
2848         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
2849         fold_builtin.
2850
2851         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
2852         (tree_gen_pow2_profiler): Likewise.
2853         (tree_gen_one_value_profiler): Likewise.
2854         (tree_gen_ic_func_profiler): Likewise.
2855         (tree_gen_average_profiler): Likewise.
2856         (tree_gen_ior_profiler): Likewise.
2857
2858         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
2859         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
2860         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2861
2862         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
2863         of TREE_CODE_LENGTH.
2864
2865         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
2866         of TREE_CODE_LENGTH.
2867
2868         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
2869         constructor.
2870         (convert_to_integer): Likewise.
2871
2872         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
2873         accessors.
2874
2875 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2876             Brooks Moses  <brooks.moses@codesourcery.com>
2877             Lee Millward  <lee.millward@codesourcery.com>
2878
2879         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
2880         accessors.
2881         * config/frv/frv.c (frv_expand_builtin): Likewise.
2882         * config/s390/s390.c (s390_expand_builtin): Likewise.
2883
2884         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
2885         (sparc_expand_builtin): Use new CALL_EXPR accessors.
2886
2887         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
2888         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
2889         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
2890         (ix86_expand_store_builtin): Likewise.
2891         (ix86_expand_unop_builtin): Likewise.
2892         (ix86_expand_unop1_builtin): Likewise.
2893         (ix86_expand_sse_compare): Likewise.
2894         (ix86_expand_sse_comi): Likewise.
2895         (ix86_expand_vec_init_builtin): Likewise.
2896         (ix86_expand_vec_ext_builtin): Likewise.
2897         (ix86_expand_vec_set_builtin): Likewise.
2898         (ix86_expand_builtin): Use new CALL_EXPR accessors.
2899
2900         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
2901         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
2902
2903         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
2904         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
2905         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
2906
2907         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
2908         build_call_expr.
2909         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
2910         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
2911         arglist.  Use new CALL_EXPR accessors.  Fix callers.
2912         (altivec_expand_abs_builtin): Likewise.
2913         (rs6000_expand_binop_builtin): Likewise.
2914         (altivec_expand_predicate_builtin): Likewise.
2915         (altivec_expand_lv_builtin): Likewise.
2916         (spe_expand_stv_builtin): Likewise.
2917         (altivec_expand_stv_builtin): Likewise.
2918         (rs6000_expand_ternop_builtin): Likewise.
2919         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
2920         (altivec_expand_st_builtin): Likewise.
2921         (altivec_expand_dst_builtin): Likewise.
2922         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
2923         arglist.  Use new CALL_EXPR accessors.  Fix callers.
2924         (altivec_expand_vec_set_builtin): Likewise.
2925         (altivec_expand_vec_ext_builtin): Likewise.
2926         (altivec_expand_builtin): Use new CALL_EXPR accessors.
2927         (spe_expand_builtin): Likewise.
2928         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
2929         arglist.  Use new CALL_EXPR accessors.  Fix callers.
2930         (spe_expand_evsel_builtin): Likewise.
2931         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
2932         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
2933
2934         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
2935         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
2936         (arm_expand_unop_builtin): Likewise.
2937         (arm_expand_builtin): Use new CALL_EXPR accessors.
2938
2939         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
2940         accessors.
2941
2942         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
2943         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
2944         (bfin_expand_unop_builtin): Likewise.
2945         (bfin_expand_builtin): Use new CALL_EXPR accessors.
2946
2947 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2948             Brooks Moses  <brooks.moses@codesourcery.com>
2949             Lee Millward  <lee.millward@codesourcery.com>
2950
2951         * c-semantics.c (build_stmt): Add internal diagnostic check.
2952
2953         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
2954         accessors.  Print arguments explicitly instead of as a list.
2955
2956         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
2957
2958         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
2959         (c_finish_omp_flish): Likewise.
2960
2961         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
2962         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
2963         instead of TREE_CODE_LENGTH.
2964         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
2965         (c_warn_unused_result): Likewise.
2966
2967 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2968
2969         PR c/26494
2970         * doc/invoke.texi (Warning Options): Remove
2971         -Werror-implicit-function-declaration.
2972         (Wimplicit-function-declaration): Update description.
2973         * opts.c (common_handle_option): Move handling of -Werror=* to...
2974         (enable_warning_as_error): ...here.
2975         * opts.h (enable_warning_as_error): Declare.
2976         * c-decl.c (implicit_decl_warning): Unless
2977         -Wno-implicit-function-declaration is given, emit a pedwarn if
2978         -std=c99 or emit a warning if -Wimplicit-function-declaration.
2979         * c.opt (Wimplicit-function-declaration): Replace
2980         mesg_implicit_function_declaration with
2981         warn_implicit_function_declaration.
2982         * c-opts.c (c_common_handle_option):
2983         -Werror-implicit-function-declaration is exactly equal as
2984         -Werror=implicit-function-declaration.
2985         (set_Wimplicit): Replace mesg_implicit_function_declaration with
2986         warn_implicit_function_declaration.
2987         (c_common_post_options): -Wimplict-function-declaration is enabled
2988         by default by -std=c99, otherwise is disabled by default.
2989         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
2990
2991 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
2992
2993         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
2994         DECL on the rhs to a DECL on the lhs for debug info purposes if the
2995         former is ignored but not the latter.
2996
2997 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
2998
2999         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
3000         is made and the reference doesn't use the alias set of its type,
3001         do not create the temporary using that type.
3002
3003 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
3004
3005         * jump.c: Remove prototypes for delete_computation and
3006         delete_prior_computation.
3007
3008 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
3009
3010         * jump.c (get_label_after): Delete.
3011         (get_label_before, delete_computation, delete_jump,
3012         delete_prior_computation, follow_jumps): Move...
3013         * reorg.c (delete_computation, delete_prior_computation): ... here...
3014         (get_label_before, delete_jump): ... making these static ...
3015         (follow_jumps): ... and simplifying this since it only runs after
3016         reload.
3017         * rtl.h (get_label_after, get_label_before, delete_jump,
3018         follow_jumps): Delete prototypes.
3019
3020 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
3021
3022         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
3023
3024 2007-02-15  Nick Clifton  <nickc@redhat.com>
3025
3026         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
3027         order to prevent it from being munged by the target.
3028
3029 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
3030
3031         * config/i386/i386.md: Remove misleading comment.
3032
3033 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
3034
3035         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
3036         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
3037         invalid patterns.
3038
3039 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
3040
3041         * tree-sra.c (instantiate_missing_elements): Canonicalize
3042         bit-field types.
3043         (sra_build_assignment): New.
3044         (generate_copy_inout, generate_element_copy,
3045         generate_element_zero, generate_one_element_init): Use it.
3046
3047 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
3048
3049         * tree-sra.c (instantiate_missing_elements): Canonicalize
3050         bit-field types.
3051         (sra_build_assignment): New.
3052         (generate_copy_inout, generate_element_copy,
3053         generate_element_zero, generate_one_element_init): Use it.
3054
3055 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
3056
3057         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
3058         limbo die nodes.
3059
3060 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
3061
3062         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
3063         types as aggregates not scalars.
3064         * function.c (assign_stack_temp_for_type): Likewise.
3065
3066 2007-02-14  Roger Sayle  <roger@eyesopen.com>
3067             Zdenek Dvorak  <dvorakz@suse.cz>
3068
3069         * tree-dump.c (dump_switch_p_1): Require exact match of the option
3070         name.
3071
3072 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
3073
3074         * passes.c (next_pass_1): Clear the next field of the copied
3075         pass structure.
3076
3077 2007-02-14  Richard Henderson  <rth@redhat.com>
3078
3079         * tree-sra.c (early_sra): New.
3080         (decl_can_be_decomposed_p): Deny va_list if early_sra.
3081         (tree_sra_early, pass_sra_early): New.
3082         * tree-pass.h (pass_sra_early): Declare.
3083         * passes.c (init_optimization_passes): Use it.
3084
3085 2007-02-14  Richard Guenther  <rguenther@suse.de>
3086
3087         * flags.h (issue_strict_overflow_warning): Convert to a macro.
3088
3089 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
3090
3091          PR tree-optimization/30771
3092         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
3093         also phi nodes.
3094         (vect_analyze_operations): Induction phis can now be marked as
3095         used_in_loop.
3096         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
3097         Update documentation accordingly.
3098
3099 2007-02-14  Nick Clifton  <nickc@redhat.com>
3100
3101         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
3102         most 3 arguments are supported.
3103         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
3104
3105 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
3106
3107         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
3108         Ensure dst->current is valid.
3109
3110 2007-02-13  Paul Brook  <paul@codesourcery.com>
3111
3112         * config.gcc: Add arm*-*-uclinux-*eabi.
3113         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
3114         (SUBTARGET_EXTRA_LINK_SPEC): Define.
3115         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
3116         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
3117         (LINK_SPEC): Define.
3118         (LIB_SPEC): Define.
3119         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
3120         register.
3121         * config/arm/uclinux-eabi.h: New file.
3122         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
3123         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
3124         based targets.
3125
3126 2007-02-13  Ian Lance Taylor  <iant@google.com>
3127
3128         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
3129         * flags.h (warn_strict_overflow): Declare.
3130         (enum warn_strict_overflow_code): Define.
3131         (issue_strict_overflow_warning): New static inline function.
3132         * opts.c (warn_strict_overflow): New variable.
3133         (common_handle_option): Handle OPT_Wstrict_overflow and
3134         OPT_Wstrict_overflow_.
3135         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
3136         OPT_Wall.
3137         * fold-const.c: Include intl.h.
3138         (fold_deferring_overflow_warnings): New static variable.
3139         (fold_deferred_overflow_warning): New static variable.
3140         (fold_deferred_overflow_code): New static variable.
3141         (fold_defer_overflow_warnings): New function.
3142         (fold_undefer_overflow_warnings): New function.
3143         (fold_undefer_and_ignore_overflow_warnings): New function.
3144         (fold_deferring_overflow_warnings_p): New function.
3145         (fold_overflow_warning): New static function.
3146         (make_range): Add strict_overflow_p parameter.  Change all
3147         callers.
3148         (extract_muldiv, extract_muldiv_1): Likewise.
3149         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
3150         tree_expr_nonnegative_p.
3151         (fold_negate_expr): Call fold_overflow_warning.
3152         (fold_range_test): Likewise.
3153         (fold_comparison): Likewise.
3154         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
3155         instead of tree_expr_nonnegative_p.
3156         (tree_expr_nonnegative_warnv_p): Rename from
3157         tree_expr_nonnegative_p, add strict_overflow_p parameter.
3158         (tree_expr_nonnegative_p): New function.
3159         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
3160         strict_overflow_p parameter.
3161         (tree_expr_nonzero_p): New function.
3162         * passes.c (verify_interpass_invariants): New static function.
3163         (execute_one_pass): Call it.
3164         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
3165         warnings.
3166         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
3167         (estimate_numbers_of_iterations): Likewise.
3168         (scev_probably_wraps_p): Likewise.
3169         * tree-ssa-ccp.c: Include "toplev.h".
3170         (evaluate_stmt): Defer fold overflow warnings until we know we are
3171         going to optimize.
3172         (struct fold_stmt_r_data): Add stmt field.
3173         (fold_stmt_r): Defer fold overflow warnings until we know we
3174         optimized.
3175         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
3176         (fold_stmt_inplace): Likewise.
3177         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
3178         (cleanup_control_expr_graph): Defer fold overflow warnings until
3179         we know we are going to optimize.
3180         * tree-cfg.c (fold_cond_expr_cond): Likewise.
3181         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
3182         Likewise.
3183         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
3184         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
3185         * tree-ssa-loop-manip.c (create_iv): Likewise.
3186         * c-typeck.c (build_conditional_expr): Likewise.
3187         (build_binary_op): Likewise.
3188         * tree-vrp.c (vrp_expr_computes_nonzero): Call
3189         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
3190         (extract_range_from_unary_expr): Likewise.
3191         * simplify-rtx.c (simplify_const_relational_operation): Warn when
3192         assuming that signed overflow does not occur.
3193         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
3194         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
3195         (fold_defer_overflow_warnings): Declare.
3196         (fold_undefer_overflow_warnings): Declare.
3197         (fold_undefer_and_ignore_overflow_warnings): Declare.
3198         (fold_deferring_overflow_warnings_p): Declare.
3199         (tree_expr_nonzero_warnv_p): Declare.
3200         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
3201         of warning options.
3202         (Warning Options): Document -Wstrict-overflow.
3203         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
3204         (tree-ssa-ccp.o): Likewise.
3205         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
3206         (fold-const.o): Depend on intl.h.
3207
3208 2007-02-13  Ian Lance Taylor  <iant@google.com>
3209
3210         PR middle-end/30751
3211         * lower-subreg.c (resolve_simple_move): Decompose subregs in
3212         addresses.
3213
3214 2007-02-13  Stuart Hastings  <stuart@apple.com>
3215
3216         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
3217
3218 2007-02-13  Richard Henderson  <rth@redhat.com>
3219
3220         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
3221         handled_component_p before looking for the indirect_ref.
3222
3223 2007-02-13  Richard Henderson  <rth@redhat.com>
3224
3225         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
3226         remove flags clobber.
3227         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
3228         (bswaphi_lowpart): New.
3229         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
3230         remove TARGET_BSWAP test.  Delete expander of the same name.
3231
3232         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
3233         (expand_unop): Use them.
3234
3235 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
3236
3237         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
3238         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
3239         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
3240         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
3241         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
3242         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
3243         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
3244         assembler dialect choice from asm templates.
3245
3246 2007-02-12  Richard Henderson  <rth@redhat.com>
3247
3248         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
3249         (fixuns_trunc<SSEMODEF>si2): Use it.
3250         * config/i386/sse.md (vec_setv4sf_0): Export.
3251         * config/i386/i386.c (ix86_build_const_vector): Export.
3252         (ix86_split_convert_uns_si_sse): Rename from
3253         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
3254         * config/i386/i386-protos.h: Update.
3255
3256 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3257
3258         PR c/29521
3259         * c-typeck.c (c_finish_return): Improve warning message.
3260
3261 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3262
3263         * alias.c (find_symbolic_term): Delete unused function.
3264
3265 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
3266
3267         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
3268         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
3269         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
3270
3271 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
3272
3273         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
3274         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
3275         the function, temporarily point the debug interface to the null one.
3276
3277 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
3278
3279         * dwarf2out.c (round_up_to_align): New static function.
3280         (field_byte_offset): Use it to round the offset.
3281
3282 2007-02-12  Richard Henderson  <rth@redhat.com>
3283
3284         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
3285         (inswl_const): Export.
3286
3287 2007-02-12  Richard Henderson  <rth@redhat.com>
3288
3289         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
3290         result mode of the libcall, convert back to outmode.
3291
3292 2007-02-12  Roger Sayle  <roger@eyesopen.com>
3293
3294         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
3295         (bswapdi2): New define_expand to implement 32-bit implementation.
3296
3297 2007-02-12  Nick Clifton  <nickc@redhat.com>
3298
3299         * doc/invoke.texi (Overall Options): Document --help=.
3300         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
3301         (cc1_options): Pass --help= on to cc1.
3302         (display_help): Add description of --help=.
3303         (process_command): Add code to handle --help=.  Allow translated
3304         --help and --target-help switches to be passed on to compiler
3305         sub-process.
3306         (main): Remove unused if statement.
3307         * opts.c (columns): Remove.
3308         (LEFT_COLUMN): Define.
3309         (wrap_help): Add columns argument.
3310         (print_filtered_help): Change parameters to be an include bitmask,
3311         an exclude bitmask, an any bitmask and the column width.  Move the
3312         code to display the params list here.  Add code to display the
3313         status of options rather than their descriptions if the quiet flag
3314         is not active.
3315         (print_specific_help): Change parameters to be an include bitmask,
3316         an exclude bitmask and an any bitmask.  Move code to look up the
3317         column width here.  Decide upon the title for an options listing.
3318         (common_handle_options): Add code to handle --help=.  Adapt code
3319         for --help and --target-help to use the revised form of the
3320         print_specific_help function.
3321         (print_help): Delete.
3322         (print_param_help): Delete.
3323         (print_switch): Delete.
3324         * opts.h (cl_lang_count): Add prototype.
3325         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
3326         CL_MAX_OPTION_CLASS): New defines.
3327         * optc-gen.awk: Add construction of cl_lang_count.
3328         * c.opt: Add Warning attribute to warning options and Optimization
3329         attribute to optimization options.
3330         * common.opt: Likewise.
3331         Add --help=.
3332         Add -fhelp and -ftarget-help as aliases for the transformed --help
3333         and --target-help options.
3334         * opt-functions.awk: Add code to handle Warning and Optimization
3335         attributes.
3336
3337 2007-02-12  Richard Henderson  <rth@redhat.com>
3338
3339         * config/alpha/constraints.md: New file.
3340         * config/alpha/alpha.c: Include tm-constrs.h.
3341         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
3342         alpha_extra_constraint): Remove.
3343         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
3344         * config/alpha/alpha-protos.h: Update.
3345         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
3346         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
3347         (EXTRA_CONSTRAINT): Remove.
3348         * config/alpha/alpha.md: Include constraints.md.
3349         (adddi splitter): Use satisfies_constraint_*.
3350         * config/alpha/predicates.md (add_operand): Likewise.
3351         (sext_add_operand, addition_operation): Likewise.
3352
3353 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
3354
3355         PR tree-optimization/29145
3356         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
3357         in our handling of restrict qualified pointers.
3358
3359 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3360
3361         PR middle-end/7651
3362         * doc/invoke.texi (Wunused-value): Update description.
3363         (Wextra): Delete item.
3364         * opts.c (set_Wextra): Don't use the value of Wextra to set the
3365         value of Wunused-value.
3366         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
3367         (c_finish_stmt_expr): Don't check extra_warnings.
3368         (emit_side_effect_warnings): The caller is responsible to check
3369         warn_unused_value.
3370
3371 2007-02-11  Roger Sayle  <roger@eyesopen.com>
3372             Matt Thomas  <matt@3am-software.com>
3373
3374         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
3375
3376 2007-02-11  Roger Sayle  <roger@eyesopen.com>
3377
3378         * simplify-rtx.c (simplify_relational_operation_1): Optimize
3379         comparisons of POPCOUNT against zero.
3380         (simplify_const_relational_operation): Likewise.
3381
3382 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3383
3384         * doc/invoke.texi (Wextra): Delete outdated paragraph.
3385
3386 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3387
3388         * dwarf2out.c (root_type): Delete unused function.
3389
3390 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3391
3392         * genattrtab.c (contained_in_p): Delete unused function.
3393         (write_expr_attr_cache): Likewise.
3394
3395 2007-02-11  Jan Hubicka  <jh@suse.cz>
3396
3397         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
3398         previous patch.
3399
3400 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
3401
3402         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
3403         to add the REG_EQ* note.
3404         * see.c (see_merge_one_use_extension): Likewise.
3405         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
3406         turn REG_EQUAL notes into REG_EQUIV notes if the target
3407         register may have more than one set.
3408         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
3409         * gcse.c (try_replace_reg): Likewise.