OSDN Git Service

fixincludes:
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
2
3         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
4         FIXED_INCLUDE_DIR.
5         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
6         for fixed headers and limits.h.
7         (install-include-dir, install-headers-tar, install-headers-cpio,
8         install-headers-cp, real-install-headers-tar,
9         real-install-headers-cpio, real-install-headers-cp): Handle
10         include-fixed as well as include.
11         (install-mkheaders): Don't install files that go only in include
12         not include-fixed.
13         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
14         from GCC_INCLUDE_DIR.
15         * gcc.c (process_command): Remove special -BstageN/ handling.
16         (do_spec_1): Add include-fixed directories.
17
18 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
19
20         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
21         _smulsi3_highpart.
22         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
23         New functions.
24         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
25         patterns.
26
27 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
28
29         * c-common.c (get_priority): Add check for
30         SUPPORTS_INIT_PRIORITY.
31
32 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
33
34         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
35
36         * config/bfin/bfin.c: Include "cfglayout.h".
37         (MAX_LSETUP_DISTANCE): New macro.
38         (struct loop_info): New members incoming, incoming_src and
39         incoming_dest.  Delete member predecessor.
40         (length_for_loop): New function.
41         (bfin_optimize_loop): Handle more different loop structures.
42         (bfin_discover_loop): Rework detection of predecessor blocks by
43         examining incoming edges.
44         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
45         bfin_reorg_loops.
46         (bfin_reorder_loops): New function.
47         (bfin_reorg_loops): Use these three new functions.
48
49         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
50         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
51         (CONSTRAINT_LEN): Add entry for 'q'.
52         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
53         Add 'q' constraints.
54         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
55         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
56
57         * config/bfin/bfin.md (add_with_carry): New pattern.
58         (s_or_u, su_optab, su_modifier): New code macros/attrs.
59         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
60         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
61         support unsigned multiplies too.  Removed incorrect commutativity from
62         operand 1 constraint where appropriate.
63         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
64         patterns.
65         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
66         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
67         New patterns.
68         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
69         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
70         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
71         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
72         usmulhisi_hh_huh): New patterns.
73
74         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
75         lshifthi3): Fix output template to use half reg for operand 2.
76
77         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
78         instead of R2.
79
80         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
81
82 2007-02-27  Andreas Schwab  <schwab@suse.de>
83
84         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
85
86 2007-02-27  Jan Hubicka  <jh@suse.cz>
87
88         * predict.c (last_basic_block_p): Remove.
89         (tree_estimate_probability): Update return heuristic for commonized
90         return blocks.
91
92 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
93
94         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
95
96 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
97
98         * doc/include/gcc-common.texi (versionsubtitle): New macro.
99         * doc/cpp.texi: Standardize title page.
100         * doc/cppinternals.texi: Likewise.
101         * doc/gcc.texi: Standardize title page, remove version number
102         from copyright page.
103         * doc/gccint.texi: Likewise.
104         * doc/install.texi: Standardize title page, add table of
105         contents.
106
107 2007-02-26  Jan Hubicka  <jh@suse.cz>
108
109         * predict.def: Set outcomes according to more recent results.
110         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
111         Remove dead predictors.
112         * predict.c (return_prediction): Fix pasto.
113
114 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
115
116         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
117         change; avoid a memory leak when returning early.
118         
119 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
120
121         * c-decl.c (static_ctors): Move to c-common.c.
122         (static_dtors): Likewise.
123         (finish_function): Use c_record_cdtor_fn.
124         (build_cdtor): Move to c-common.c.
125         (c_write_global_declarations): Use c_build_cdtor_fns.
126         * c-common.h (static_ctors): Declare.
127         (static_dtors): Likewise.
128         (c_record_cdtor_fn): Likewise.
129         (c_build_cdtor_fns): Likewise.
130         * c-common.c (static_ctors): New variable.
131         (static_dtors): Likewise.
132         (c_record_cdtor_fn): New function.
133         (build_cdtor): Move from c-decl.c
134         (c_build_cdtor_fns): New function.
135
136         * output.h (assemble_addr_to_section): Declare.
137         (get_cdtor_priority_section): Likewise.
138         * varasm.c (assemble_addr_to_section): New function.
139         (get_cdtor_priority_section): Likewise.
140         (default_named_section_asm_out_destructor): Use them.
141         (destor_dtor_section_asm_out_destructor): Likewise.
142         (default_named_section_asm_out_constructor): Likewise.
143         (default_ctor_section_asm_out_constructor): Likewise.
144         * config.gcc (*-*-vxworks*): Include vxworks.o.
145         * config/t-vxworks (vxworks.o): New target.
146         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
147         (TARGET_ASM_CONSTRUCTOR): Define.
148         (TARGET_ASM_DESTRUCTOR): Likewise.
149         (vxworks_asm_out_constructor): Declare.
150         (vxworks_asm_out_destructor): Likewise.
151
152         * c-common.c (get_priority): Check that we have not just an
153         INTEGER_CST, but an integer constant with integeral type.
154
155 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
156
157         PR tree-optimization/30938
158         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
159         use &dt[nargs-1] instead of &dt[nargs] in the call to
160         vect_is_simple_use().
161
162 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
163
164         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
165         from register elimination as PRE_MODIFY / POST_MODIFY increments.
166         Do not attempt to handle MEM inside auto-inc expressions.
167         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
168         of a register modified by an auto-inc expression.  However, do handle
169         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
170         (elimination_effects): Prohibit elimination of a register modified
171         by an auto-inc expression.  Disable register elimination rules whose
172         target register is modified by an auto-inc expression with variable
173         increment.
174
175 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
176
177         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
178         off-by-one error.
179         (array_at_struct_end_p): New function.
180         (idx_infer_loop_bounds): Use it.
181         (estimate_numbers_of_iterations_loop): Export.
182         * predict.c (predict_loops): Use estimated_loop_iterations_int.
183         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
184         (tree_estimate_probability): Call record_loop_exits.
185         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
186         (estimated_loop_iterations, estimated_loop_iterations_int,
187         estimated_loop_iterations_tree): New functions.
188         (analyze_siv_subscript_cst_affine,
189         compute_overlap_steps_for_affine_1_2,
190         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
191         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
192         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
193         (PRED_LOOP_ITERATIONS_GUESSED): New.
194         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
195         * cfgloop.h (estimate_numbers_of_iterations_loop,
196         estimated_loop_iterations_int): Declare.
197
198 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
199
200         * doc/extend.texi: Document optional priority argument to
201         constructors and destructors.
202         * tree.c (init_priority_for_decl): Adjust GTY markers.
203         (init_ttree): Use priority-info hash functions for
204         init_priority_for_decl.
205         (tree_map_eq): Rename to ...
206         (tree_map_base_eq): ... this.
207         (tree_map_marked_p): Rename to ...
208         (tree_map_base_marked_p): ... this.
209         (tree_map_base_hash): New function.
210         (decl_init_priority_lookup): Rework.
211         (decl_fini_priority_lookup): New function.
212         (decl_priority_info): New function.
213         (decl_init_priority_insert): Use it.
214         (decl_fini_priority_insert): Likewise.
215         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
216         hierarchy.
217         (decl_restrict_base_insert): Likewise.
218         (decl_debug_expr_insert): Likewise.
219         (decl_value_expr_lookup): Likewise.
220         (decl_value_expr_insert): Likewise.
221         * tree.h (priority_type): New type.
222         (decl_init_priority_lookup): Use priority_type.
223         (decl_fini_priority_lookup): New function.
224         (decl_init_priority_insert): Use priority_type.
225         (decl_fini_priority_insert): New function.
226         (DECL_HAS_INIT_PRIORITY): Tweak comments.
227         (DECL_INIT_PRIORITY): Likewise.
228         (SET_DECL_INIT_PRIORITY): Add comment.
229         (DECL_FINI_PRIORITY): New macro.
230         (SET_DECL_FINI_PRIORITY): Likewise.
231         (DEFAULT_INIT_PRIORITY): Document.
232         (MAX_INIT_PRIORITY): Likewise.
233         (MAX_RESERVED_INIT_PRIORITY): Likewise.
234         (tree_map_base): New type.
235         (tree_map_base_eq): New function.
236         (tree_map_base_hash): Likewise.
237         (tree_map_base_marked_p): Likewise.
238         (tree_map): Inherit from tree_map_base.
239         (tree_map_eq): Make it a macro.
240         (tree_map_marked_p): Likewise.
241         (tree_int_map): Inherit from tree_map_base.
242         (tree_int_map_eq): Make it a macro.
243         (tree_int_map_hash): Likewise.
244         (tree_int_map_marked_p): Likewise.
245         (tree_priority_map): New type.
246         (tree_priority_map_eq): New macro.
247         (tree_priority_map_hash): Likewise.
248         (tree_priority_map_marked_p): Likewise.
249         * varasm.c (emults_decl): Adjust for refactoring of tree_map
250         hierarchy.
251         (emutls_common_1): Likewise.
252         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
253         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
254         of tree_map hierarchy.
255         * tree-cfg.c (move_stmt_r): Likewise.
256         (new_label_mapper): Likewise.
257         * c-tree.h (c_expand_body): Move to ...
258         * c-common.h (c_expand_body): ... here.
259         * c-decl.c (c_expand_body): Move to ...
260         * c-common.c (c_expand_body): ... here.
261         (c_common_attribute_table): Allow 1 argument for the constructor
262         and destructor attributes.
263         (get_priority): New function.
264         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
265         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
266
267 2007-02-24  Jan Hubicka  <jh@suse.cz>
268
269         PR middle-end/30509
270         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
271
272 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
273             Jan Hubicka  <jh@suse.cz>
274
275         PR target/30778
276         * i386.c (counter_mode): New function.
277         (expand_set_or_movmem_via_loop): Use it.
278         (expand_movmem_epilogue): Likewise; fix pasto.
279         (ix86_expand_movmem): Do emit guard even for constant counts.
280         (ix86_expand_setmem): Likewise.
281
282 2007-02-25  Nick Clifton  <nickc@redhat.com>
283
284         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
285         (JUMP_TABLES_IN_TEXT_SECTION): Define.
286
287 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
288
289         PR target/30770
290         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
291         count argument with 0x10, not with 0x16.
292         (expand_setmem_epilogue): Ditto.
293
294 2007-02-24  Mike Stump  <mrs@apple.com>
295
296         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
297         symbols.
298
299 2007-02-24  Richard Guenther  <rguenther@suse.de>
300
301         PR middle-end/30951
302         * fold-const.c (fold_binary): Fold x +- CST op x for
303         EQ_EXPR and NE_EXPR.
304
305 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
306
307         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
308
309 2007-02-24  Jan Hubicka  <jh@suse.cz>
310
311         * cgraphunit.c (decide_is_function_needed): Honor
312         -fkeep-inline-functions.
313
314 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
315
316         * builtins.c (fold_builtin_modf): New.
317         (fold_builtin_2): Use it.
318
319 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
320
321         * loop-iv.c (implies_p): Detect additional cases where A implies B.
322         (determine_max_iter): Take additional LOOP arg; all callers changed.
323         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
324         one using simplifications.
325         (simplify_using_initial_values): Return if the expression becomes
326         invalid due to altered regs.
327
328 2007-02-23  DJ Delorie  <dj@redhat.com>
329
330         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
331
332 2007-02-23  Mike Stump  <mrs@apple.com>
333
334         * tlink.c (scan_linker_output): Parse linker messages from
335         darwin9's linker better.
336
337 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
338
339         PR debug/29614
340         * varpool.c (varpool_assemble_pending_decls):  Set
341         varpool_last_needed_node to null.
342
343 2007-02-23  DJ Delorie  <dj@redhat.com>
344
345         * config/i386/i386.c (ix86_data_alignment): Don't specify an
346         alignment bigger than the object file can handle.
347
348 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
349
350         PR target/30825
351         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
352         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
353         (*movsf_1): Penalize MMX moves.
354
355 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
356
357         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
358         2^32-1 or more times unless flag_unsafe_loop_optimizations.
359
360         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
361
362 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
363
364         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
365         (fold_builtin_1): Use them.
366         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
367         BUILT_IN_SIGNIFICAND.
368
369 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
370
371         * config/i386/i386.c (bdesc_1arg): Initialize
372         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
373         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
374         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
375         and IX86_BUILTIN_MOVSLDUP.
376
377 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
378
379         PR rtl-optimization/30841
380         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
381
382 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
383
384         * builtins.c (fold_builtin_frexp): New.
385         (fold_builtin_2): Use it.
386
387 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
388
389         * doc/invoke.texi (Spec Files): Document getenv spec function.
390
391         * gcc.c (getenv_spec_function): New function.
392         (static_spec_functions): Add it.
393         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
394         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
395         header files.
396
397 2007-02-22  Michael Matz  <matz@suse.de
398
399         PR c++/29433
400         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
401         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
402
403 2007-02-22  Ian Lance Taylor  <iant@google.com>
404
405         PR debug/30898
406         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
407         (mem_loc_descriptor): Call it.
408
409 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
410             Ira Rosen  <irar@il.ibm.com>
411
412         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
413
414 2007-02-22  Ira Rosen  <irar@il.ibm.com>
415
416         PR tree-optimization/30843
417         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar 
418         stores only after all the group is vectorized.
419
420 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
421
422         PR tree-optimization/30858
423         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
424         in the reduction cycle have a single use in the loop.
425         * tree-vectorizer.h (relevant): Add documentation.
426
427 2007-02-20  Mike Stump  <mrs@apple.com>
428
429         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
430         * configure: Regenerate.
431
432 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
433
434         Change the defaults of some parameters and options.
435         * config/spu/spu-protos.h (spu_optimization_options): Declare.
436         * config/spu/spu.c (spu_optimization_options): Add.
437         (spu_override_options): Change params in spu_optimization_options.
438         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
439
440         Register 127 is only 16 byte aligned when used as a frame pointer.
441         * config/spu/spu-protos.h (spu_init_expanders): Declare.
442         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
443         HARD_FRAME_POINTER_REGNUM.
444         (spu_legitimate_address):  Use regno_aligned_for_reload.
445         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
446         aligned when frame_pointer_needed is true.
447         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
448         to 8 bits.
449         * config/spu/spu.h (INIT_EXPANDERS): Define.
450
451         Make sure shift and rotate instructions have valid immediate operands.
452         * config/spu/predicates.md (spu_shift_operand): Remove.
453         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
454         * config/spu/constraints.md (W, O): Extend range.
455         * config/spu/spu.md (umask, nmask): Define.
456         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
457         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
458         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
459         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
460         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
461         (lshr<mode>3_reg):  Fix rtl description.
462
463         Make sure mulhisi immediate operands are valid.
464         * config/spu/predicates.md (imm_K_operand): Add.
465         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
466
467         Generate constants using fsmbi and andi.
468         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
469         (print_operand, spu_split_immediate, classify_immediate,
470         fsmbi_const_p): Handle IC_FSMBI2.
471
472         Correctly handle a CONST_VECTOR containing symbols.
473         * config/spu/spu.c (print_operand): Handle HIGH correctly.
474         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
475         (immediate_load_p): Allow symbols that use 2 instructions to create.
476         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
477         with symbols when flag_pic is set.
478         (const_vector_immediate_p): New.
479         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
480         accept a CONST_VECTOR with symbols.
481         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
482         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
483         correctly.
484         * config/spu/spu.md (high, low): Delete.
485         (low_<mode>): Define.
486
487         Remove INTRmode and INTR_REGNUM, which didn't work.
488         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
489         of INTR_REGNUM.
490         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
491         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
492         peephole2 pattern): Don't use INTR or 131.
493         (movintrcc): Delete.
494         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
495         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
496         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
497         (UNSPEC_SET_INTR): Add.
498         * config/spu/spu-modes.def (INTR): Remove.
499
500         More accurate warnings about run-time relocations.
501         * config/spu/spu.c (reloc_diagnostic): Test in_section.
502
503         Correctly warn about immediate arguments to specific intrinsics.
504         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
505         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
506         the instruction predicate.
507
508         Fix tree check errors with latest update.
509         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
510         CALL_EXPR_ARG.
511         (spu_expand_builtin): Use CALL_EXPR_FN.
512
513         Add missing specific intrinsics.
514         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
515         si_bislede.
516         * config/spu/spu_internals.h: Ditto.
517
518         Fix incorrect operand modifiers.
519         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
520         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
521
522         Optimize one case of zero_extend of a vec_select.
523         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
524
525         Accept any immediate for hbr.
526         * config/spu/spu.md (hbr):  Change s constraints to i.
527
528 2007-02-21  Paul Brook  <paul@codesourcery.com>
529
530         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
531         condexec_count when skipping USE and CLOBBER.
532
533 2007-02-21  Nick Clifton  <nickc@redhat.com>
534
535         * common.opt (Warray-bounds): Add Warning attribute.
536         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
537         Likewise.
538         (fsized-zeroes): Add Optimization attribute.
539         (fsplit-wide-types, ftree-scev-cprop): Likewise.
540         * c.opt (Wc++0x-compat): Add Warning attribute.
541
542 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
543
544         PR middle-end/30761
545         * reload1.c (eliminate_regs_in_insn): In the single_set special
546         case, attempt to re-recognize the insn before falling back to
547         having reload fix it up.
548
549 2007-02-20  Eric Christopher  <echristo@gmail.com>
550
551         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
552         Rewrite accordingly.
553         (frv_read_iacc_argument): Ditto.
554         (frv_expand_set_builtin): Take a call instead of arglist, update for
555         above changes.
556         (frv_expand_unop_builtin): Ditto.
557         (frv_expand_binop_builtin): Ditto.
558         (frv_expand_cut_builtin): Ditto.
559         (frv_expand_binopimm_builtin): Ditto.
560         (frv_expand_voidbinop_builtin): Ditto.
561         (frv_expand_int_void2arg): Ditto.
562         (frv_expand_prefetches): Ditto.
563         (frv_expand_voidtriop_builtin): Ditto.
564         (frv_expand_voidaccop_builtin): Ditto.
565         (frv_expand_load_builtin): Ditto.
566         (frv_expand_store_builtin): Ditto.
567         (frv_expand_mdpackh_builtin): Ditto.
568         (frv_expand_mclracc_builtin): Ditto.
569         (frv_expand_mrdacc_builtin): Ditto.
570         (frv_expand_mwtacc_builtin): Ditto.
571         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
572         calls for above.
573
574 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
575
576         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
577         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
578         cmpb instruction.
579         (HAVE_GAS_DFP): Check for assembler support of decimal floating
580         point instructions.
581         * configure: Regenerate.
582         * config.in: Regenerate.
583         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
584         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
585         masks to power6 and power6x and to POWERPC_MASKS.
586         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
587         _ARCH_PWR6.
588         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
589         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
590         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
591         Access PROTOTYPE as variable, not mask.
592
593 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
594
595         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
596         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
597         * combine.c (adjust_for_new_dest): Use it.
598         * postreload.c (reload_combine): Likewise.
599
600 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
601
602         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
603         notes on an insn with multiple sets, even if single_set returns
604         non-NULL for that insn.
605
606 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
607
608         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
609         scalbn and scalbln.
610
611 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
612
613         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
614         if user didn't pass it.
615         * config/i386/darwin.h (CC1_SPEC): Likewise.
616         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
617         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
618         -mmacosx-version-min.
619
620 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
621             Uros Bizjak  <ubizjak@gmail.com>
622
623         * optabs.h (enum optab_index): Add new OTI_scalb.
624         (scalb_optab): Define corresponding macro.
625         * optabs.c (init_optabs): Initialize scalb_optab.
626         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
627         patterns.
628         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
629         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
630         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
631         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
632         flag_unsafe_math_optimizations is set.
633
634         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
635         to implement scalbf, scalb and scalbl built-ins as inline x87
636         intrinsics.
637
638 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
639             DJ Delorie <dj@redhat.com>
640
641         PR other/30824
642         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
643         (diagnostic_report_diagnostic): ... here, and turn them into real
644         errors. If warnings are inhibited, no need to do anything.
645
646 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
647
648         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
649         better code generation.
650
651 2007-02-20  Ben Elliston  <bje@au.ibm.com>
652
653         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
654
655 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
656
657         * config/alpha/alpha.c, config/alpha/alpha.md,
658         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
659         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
660         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
661         config/arm/lib1funcs.asm: Follow spelling conventions.
662
663         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
664         config/fr30/fr30.md, config/i386/i386.h,
665         config/iq2000/iq2000.h, config/iq2000/predicates.md,
666         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
667         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
668         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
669         config/rs6000/altivec.md, config/rs6000/rs6000.c,
670         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
671         config/sparc/sparc.c, config/sparc/sparc.h,
672         config/sparc/sparc.md, config/spu/constraints.md,
673         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
674         conventions.
675
676 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
677
678         PR target/29943
679         * varasm.c (use_blocks_for_decl_p): Return false for decls with
680         alias attribute.
681
682 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
683
684         * doc/invoke.texi (-ftree-lrs): Remove.
685
686 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
687
688         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
689         NULL.
690
691 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
692
693         * config/ia64/ia64.c (ia64_expand_builtin): Use the
694         new CALL_EXPR_FN macro for retrieving the function
695         declaration of the input expression.
696
697 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
698
699         * c.opt (Waddress): New.
700         * common.opt (Walways-true): Delete.
701         (Wstring-literal-comparison): Delete.
702         * doc/invoke.texi (Warning Options): Delete -Walways-true and
703         -Wstring-literal-comparison. Add -Waddress.
704         (Waddress): New.
705         (Walways-true): Delete.
706         (Wstring-literal-comparison): Delete.
707         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
708         consistently instead of -Walways-true in example.
709         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
710         * c-typeck.c (parser_build_binary_op): Replace
711         -Wstring-literal-comparison and -Walways-true with -Waddress.
712         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
713         with -Waddress.
714
715 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
716
717         * tree-cfg.c (dump_function_to_file): Be prepared for functions
718         without DECL_STRUCT_FUNCTION initialized.
719
720 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
721
722         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
723         due to calls to functions taking pointers as parameters.
724
725 2007-02-19  Richard Henderson  <rth@redhat.com>
726
727         PR debug/29558
728         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
729         in memory.
730
731 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
732
733         * config/s390/s390.c (s390_call_saved_register_used,
734         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
735         accessed to the new scheme.
736
737 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
738
739         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
740         (cris_print_index, cris_print_operand, cris_print_operand_address)
741         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
742         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
743         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
744         GET_CODE () == xxx.
745         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
746         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
747         GO_IF_LEGITIMATE_ADDRESS): Ditto.
748         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
749         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
750         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
751         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
752         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
753         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
754         (uminsi3, call, call_value): Ditto.
755         (define_split: indir_to_reg_split, unnamed): Ditto.
756
757 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
758
759         PR tree-optimization/30975
760         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
761         wrong assert.
762
763 2007-02-18  Eric Christopher  <echristo@gmail.com>
764
765         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
766         Remove use of arglist.
767         (mips_expand_builtin): Remove use of arglist, pass in expr.
768         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
769         (mips_expand_builtin_movtf): Ditto.
770         (mips_expand_builtin_compare): Ditto.
771
772 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
773
774         * tree-sra.c (sra_build_assignment): Replace assertion
775         checking with a comment explaining why it can't be done.
776
777 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
778
779         PR middle-end/30833
780         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
781         during CALL_EXPR representation conversion.
782         * tree-ssa-propagate.c (set_rhs): Likewise.
783
784 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
785
786         * tree-sra.c (sra_build_assignment): Disable assertion checking
787         for now.
788
789 2007-02-18  Roger Sayle  <roger@eyesopen.com>
790
791         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
792         instead of calling build2 with a GIMPLE_MODIFY_STMT.
793         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
794         Likewise.
795         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
796         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
797         gimplify_init_ctor_eval_range, gimple_push_cleanup,
798         gimplify_omp_for, gimplify_omp_atomic_pipeline,
799         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
800         force_gimple_operand): Likewise.
801         * ipa-cp.c (constant_val_insert): Likewise.
802         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
803         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
804         perfect_nestify): Likewise.
805         * langhooks.c (lhd_omp_assignment): Likewise.
806         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
807         lower_copyprivate_clauses, lower_send_clauses,
808         lower_send_shared_vars, expand_parallel_call,
809         expand_omp_for_generic, expand_omp_for_static_nochunk,
810         expand_omp_for_static_chunk, expand_omp_sections,
811         lower_omp_single_copy, lower_omp_for_lastprivate,
812         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
813         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
814         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
815         Likewise.
816
817 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
818
819         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
820         config/sh/sh.md: Follow spelling conventions.
821
822         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
823         config/frv/predicates.md: Follow spelling conventions.
824
825         * config/m68k/linux-unwind.h: Fix a comment typo.
826         * target.h: Follow spelling conventions.
827
828 2007-02-18  Roger Sayle  <roger@eyesopen.com>
829
830         PR rtl-optimization/28173
831         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
832         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
833         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
834         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
835         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
836
837 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
838
839         * builtins.c (fold_builtin_load_exponent): New.
840         (fold_builtin_2): Use it.
841
842 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
843
844         PR rtl-optimization/30773
845         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
846         if we fail to attach a REG_EQUIV note.
847
848 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
849             Roger Sayle  <roger@eyesopen.com>
850
851         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
852
853 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
854
855         * calls.c (initialize_argument_information): Pass original EXP
856         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
857         code to split complex arguments here, as part of initializing the
858         ARGS array.
859         (expand_call): Remove code that builds a list of arguments and
860         inserts implicit arguments into it.  Instead, just count how many
861         implicit arguments there will be so we can determine the size of
862         the ARGS array, and let initialize_argument_information do the work.
863         (split_complex_values): Delete unused function.
864
865 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
866
867         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
868
869 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
870
871         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
872         for arg pointer based indexed addressing.
873
874 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
875
876         * config/ia64/ia64.h, config/ia64/ia64.md,
877         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
878         spelling conventions.
879
880 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
881
882         * config/m68k/m68k.c (split_di): New.
883         * config/m68k/m68k-protos.h: Declare split_di.
884         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
885           Improve predicate handling and split constant shifts.
886
887 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
888
889         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
890         parameter for register bitfield operations, general predicates
891         cleanup
892
893 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
894
895         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
896         * config/m68k/linux-unwind.h: New file.
897
898 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
899
900         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
901         config/i386/athlon.md, config/ia64/ia64.md,
902         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
903         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
904         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
905         tree-ssa-loop-niter.c, tree-vect-analyze.c,
906         tree-vect-transform.c: Fix comment typos.
907
908 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
909
910         * sched-deps.c (find_insn_list): Remove.
911         * sched-int.h: Remove the prototype for find_insn_list.
912
913 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
914
915         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
916         to linker.
917         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
918         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
919         darwin_rs6000_override_options.
920         (C_COMMON_OVERRIDE_OPTIONS): Expect
921         darwin_macosx_version_min to be non-NULL always.
922         (TARGET_C99_FUNCTIONS): Likewise.
923         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
924         (DARWIN_MINVERSION_SPEC): New.
925         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
926         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
927         to cc1*.
928         (DARWIN_MINVERSION_SPEC): New.
929         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
930         value.
931         * config/darwin-c.c (darwin_cpp_builtins): Expect
932         darwin_macosx_version_min to be non-NULL always.
933
934         * config/rs6000/rs6000.c: Clean up trailing whitespace.
935
936 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
937
938         * config/i386/i386.h (x86_use_xchgb): New.
939         (TARGET_USE_XCHGB): New macro.
940         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
941         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
942         Split after reload into bswaphi for shifts of 8.
943         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
944         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
945         or when optimizing for size.
946
947 2007-02-16  Richard Guenther  <rguenther@suse.de>
948             Christian Bruel  <christian.bruel@st.com>
949
950         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
951         DECLs but prefer SSA_NAMEs over DECLs.
952
953 2007-02-16  Richard Guenther  <rguenther@suse.de>
954
955         * tree-flow-inline.h (single_imm_use_p): Remove.
956         (zero_imm_uses_p): Likewise.
957         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
958         instead of single_imm_use_p.
959         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
960         zero_imm_uses_p.
961
962 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
963
964         PR other/27843
965         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
966         nested double- and backquotes.
967
968 2007-02-15  Roger Sayle  <roger@eyesopen.com>
969
970         PR middle-end/30391
971         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
972         should be unreachable.
973         (build2_stat): Allow construction of MODIFY_EXPR at any time.
974         For the time being redirect GIMPLE_MODIFY_STMT to the new
975         (renamed) build_gimple_modify_stmt_stat.
976         (build2_gimple_stat): Rename to...
977         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
978         Always build a GIMPLE_MODIFY_STMT node.
979         * tree.h (build2_gimple, build2_gimple_stat): Delete.
980         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
981         declarations.
982
983         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
984         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
985         * tree-complex.c (set_component_ssa_name, expand_complex_move,
986         expand_complex_div_wide): Likewise.
987         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
988         * tree-ssa-loop-im.c (schedule_sm): Likewise.
989         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
990         * tree-ssa-loop-manip.c (create_iv): Likewise.
991         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
992         abs_replacement): Likewise.
993         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
994         realify_fake_stores): Likewise.
995
996         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
997         node rather than a GIMPLE_MODIFY_STMT node.
998         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
999         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
1000         Likewise.
1001         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
1002         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
1003         GIMPLE_MODIFY_STMT.
1004
1005 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1006
1007         PR middle-end/30433
1008         * fold-const.c (fold_comparison): Add back the
1009         folding of constant complex comparisions.
1010
1011 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1012
1013         PR middle-end/30729
1014         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
1015         effects unknown to this function, return early.
1016
1017 2007-02-15  Ian Lance Taylor  <iant@google.com>
1018
1019         * lower-subreg.c (move_eh_region_note): New static function.
1020         (resolve_simple_move): Call it.
1021         (decompose_multiword_subregs): Track blocks for which we resolve a
1022         simple move which is also a control flow insn.  Pass them to
1023         find_many_sub_basic_blocks.
1024         (pass_lower_subreg): Add TODO_verify_flow.
1025         (pass_lower_subreg2): Likewise.
1026
1027 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
1028             Brooks Moses  <brooks.moses@codesourcery.com>
1029             Lee Millward  <lee.millward@codesourcery.com>
1030
1031         * tree.h (enum tree_code_class): Add tcc_vl_exp.
1032         (VL_EXP_CLASS_P): New.
1033         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
1034         TREE_CODE_LENGTH.
1035         (TREE_OPERAND_CHECK_CODE): Likewise.
1036         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
1037         (TREE_RTL_OPERAND_CHECK): Likewise.
1038         (tree_operand_check_failed): Make second parameter the whole tree
1039         instead of its code.  Fixed callers.
1040         (VL_EXP_CHECK): New.
1041         (TREE_OPERAND_LENGTH): New.
1042         (VL_EXP_OPERAND_LENGTH): New.
1043         (CALL_EXPR_FN): New.
1044         (CALL_EXPR_STATIC_CHAIN): New.
1045         (CALL_EXPR_ARGS): New.
1046         (CALL_EXPR_ARG): New.
1047         (call_expr_nargs): New.
1048         (CALL_EXPR_ARGP): New.
1049         (build_nt_call_list): Declare.
1050         (build_vl_exp_stat): Declare.
1051         (build_vl_exp): New.
1052         (build_call_list): Declare.
1053         (build_call_nary): Declare.
1054         (build_call_valist): Declare.
1055         (build_call_array): Declare.
1056         (call_expr_arg): Declare.
1057         (call_expr_argp): Declare.
1058         (call_expr_arglist): Declare.
1059         (fold_build_call_list): Declare.
1060         (fold_build_call_list_initializer): Declare.
1061         (fold_call_expr): Declare to replace fold_builtin.
1062         (fold_builtin_fputs): Update to agree with modified definition.
1063         (fold_builtin_strcpy): Likewise.
1064         (fold_builtin_strncpy): Likewise.
1065         (fold_builtin_memory_chk): Likewise.
1066         (fold_builtin_stxcpy_chk): Likewise.
1067         (fold_builtin_strncpy_chk): Likewise.
1068         (fold_builtin_next_arg): Likewise.
1069         (fold_build_call_expr): Declare.
1070         (fold_builtin_call_list): Declare.
1071         (fold_builtin_call_valist): Declare.
1072         (build_call_expr): Declare.
1073         (validate_arglist): Update to agree with modified definition.
1074         (tree_operand_length): New.
1075         (call_expr_arg_iterator): New.
1076         (init_call_expr_arg_iterator): New.
1077         (next_call_expr_arg): New.
1078         (first_call_expr_arg): New.
1079         (more_call_expr_args_p): New.
1080         (FOR_EACH_CALL_EXPR_ARG): New.
1081
1082         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
1083         and tcc_gimple_stmt.
1084         (tree_code_size): Update documentation.  Use sizeof (tree) rather
1085         than sizeof (char *).
1086         (tree_size): Likewise.  Add case for tcc_vl_exp.
1087         (tree_node_structure): Add case for tcc_vl_exp.
1088         (contains_placeholder_p): Likewise.
1089         (substitute_in_expr): Likewise.
1090         (substitute_placeholder_in_expr): Likewise.
1091         (stabilize_reference_1): Likewise.
1092         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
1093         to diagnose breakage of this interface for constructing CALL_EXPRs.
1094         (build_nt): Add similar assertion here.
1095         (build_nt_call_list): New.
1096         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
1097         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
1098         TREE_CODE_LENGTH.
1099         (get_callee_fndecl): Use new CALL_EXPR accessors.
1100         (tree_operand_check_failed): Change parameters to pass entire node
1101         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
1102         (process_call_operands): New.
1103         (build_vl_exp_stat): New.
1104         (build_call_list): New.
1105         (build_call_nary): New.
1106         (build_call_valist): New.
1107         (build_call_array): New.
1108         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1109         (call_expr_arglist): New.
1110
1111         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
1112         tcc_vl_exp instead of a fixed-size tcc_expression.
1113
1114         * doc/c-tree.texi (CALL_EXPR): Document new representation and
1115         accessors for CALL_EXPRs.
1116         (AGGR_INIT_EXPR): Likewise.
1117
1118 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
1119             Brooks Moses  <brooks.moses@codesourcery.com>
1120             Lee Millward  <lee.millward@codesourcery.com>
1121
1122         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
1123         (expand_builtin_nonlocal_goto): Change parameter to be entire
1124         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
1125         (expand_builtin_prefetch): Likewise.
1126         (expand_builtin_classify_type): Likewise.
1127         (mathfn_built_in): Return NULL_TREE instead of 0.
1128         (expand_errno_check): Use new CALL_EXPR accessors.
1129         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
1130         Return NULL_RTX instead of 0.
1131         (expand_builtin_mathfn_2): Likewise.
1132         (expand_builtin_mathfn_3): Likewise.
1133         (expand_builtin_interclass_mathfn): Likewise.
1134         (expand_builtin_sincos): Likewise.
1135         (expand_builtin_cexpi): Likewise.
1136         (expand_builtin_int_roundingfn): Likewise.
1137         (expand_builtin_int_roundingfn_2): Likewise.
1138         (expand_builtin_pow): Likewise.
1139         (expand_builtin_powi): Likewise.
1140         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
1141         of arglist, fixing callers appropriately.  Use new CALL_EXPR
1142         accessors and constructors.  Return NULL_RTX instead of 0.
1143         (expand_builtin_strstr): Likewise.
1144         (expand_builtin_strchr): Likewise.
1145         (expand_builtin_strrchr): Likewise.
1146         (expand_builtin_strpbrk): Likewise.
1147         (expand_builtin_memcpy): Likewise.
1148         (expand_builtin_mempcpy): Likewise.
1149         (expand_builtin_mempcpy_args): New.
1150         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
1151         (expand_builtin_memmove_args): New.
1152         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
1153         (expand_movstr): Likewise.
1154         (expand_builtin_strcpy): Likewise.
1155         (expand_builtin_strcpy_args): New.
1156         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
1157         (expand_builtin_strncpy): Likewise.
1158         (expand_builtin_memset): Likewise.
1159         (expand_builtin_memset_args): New.
1160         (expand_builtin_bzero): Similarly to expand_builtin_memset.
1161         (expand_builtin_memcmp): Likewise.
1162         (expand_builtin_strcmp): Likewise.
1163         (expand_builtin_strncmp): Likewise.
1164         (expand_builtin_strcat): Likewise.
1165         (expand_builtin_strncat): Likewise.
1166         (expand_builtin_strspn): Likewise.
1167         (expand_builtin_strcspn): Likewise.
1168         (expand_builtin_args_info): Likewise.
1169         (expand_builtin_va_start): Likewise.
1170         (gimplify_va_arg_expr): Likewise.
1171         (expand_builtin_va_end): Likewise.
1172         (expand_builtin_va_copy): Likewise.
1173         (expand_builtin_frame_address): Likewise.
1174         (expand_builtin_alloca): Likewise.
1175         (expand_builtin_bswap): Likewise.
1176         (expand_builtin_unop): Likewise.
1177         (expand_builtin_fputs): Likewise.
1178         (expand_builtin_expect): Likewise.
1179         (expand_builtin_fabs): Likewise.
1180         (expand_builtin_copysign): Likewise.
1181         (expand_builtin_printf): Likewise.
1182         (expand_builtin_fprintf): Likewise.
1183         (expand_builtin_sprintf): Likewise.
1184         (expand_builtin_init_trampoline): Likewise.
1185         (expand_builtin_signbit): Likewise.
1186         (expand_builtin_fork_or_exec): Likewise.
1187         (expand_builtin_sync_operation): Likewise.
1188         (expand_builtin_compare_and_swap): Likewise.
1189         (expand_builtin_lock_test_and_set): Likewise.
1190         (expand_builtin_lock_release): Likewise.
1191         (expand_builtin): Likewise.
1192         (builtin_mathfn_code): Likewise.
1193
1194         (fold_builtin_constant_p): Pass call arguments individually instead
1195         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
1196         accessors and constructors.  Return NULL_TREE instead of 0.
1197         (fold_builtin_expect): Likewise.
1198         (fold_builtin_classify_type): Likewise.
1199         (fold_builtin_strlen): Likewise.
1200         (fold_builtin_nan): Likewise.
1201         (integer_valued_real_p): Likewise.
1202         (fold_trunc_transparent_mathfn): Likewise.
1203         (fold_fixed_mathfn): Likewise.
1204         (fold_builtin_cabs): Likewise.
1205         (fold_builtin_sqrt): Likewise.
1206         (fold_builtin_cbrt): Likewise.
1207         (fold_builtin_cos): Likewise.
1208         (fold_builtin_cosh): Likewise.
1209         (fold_builtin_tan): Likewise.
1210         (fold_builtin_sincos): Likewise.
1211         (fold_builtin_cexp): Likewise.
1212         (fold_builtin_trunc): Likewise.
1213         (fold_builtin_floor): Likewise.
1214         (fold_builtin_ceil): Likewise.
1215         (fold_builtin_round): Likewise.
1216         (fold_builtin_int_roundingfn): Likewise.
1217         (fold_builtin_bitop): Likewise.
1218         (fold_builtin_bswap): Likewise.
1219         (fold_builtin_logarithm): Likewise.
1220         (fold_builtin_hypot): Likewise.
1221         (fold_builtin_pow): Likewise.
1222         (fold_builtin_powi): Likewise.
1223         (fold_builtin_exponent): Likewise.
1224         (fold_builtin_memset): Likewise.
1225         (fold_builtin_bzero): Likewise.
1226         (fold_builtin_memory_op): Likewise.
1227         (fold_builtin_bcopy): Deleted; call site changed to invoke
1228         fold_builtin_memory_op directly.
1229         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
1230         (fold_builtin_strncpy): Likewise.
1231         (fold_builtin_memcmp): Likewise.
1232         (fold_builtin_strcmp): Likewise.
1233         (fold_builtin_strncmp): Likewise.
1234         (fold_builtin_signbit): Likewise.
1235         (fold_builtin_copysign): Likewise.
1236         (fold_builtin_isascii): Likewise.
1237         (fold_builtin_toascii): Likewise.
1238         (fold_builtin_isdigit): Likewise.
1239         (fold_builtin_fabs): Likewise.
1240         (fold_builtin_abs): Likewise.
1241         (fold_builtin_fmin_fmax): Likewise.
1242         (fold_builtin_carg): Likewise.
1243         (fold_builtin_classify): Likewise.
1244         (fold_builtin_unordered_cmp): Likewise.
1245
1246         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
1247         New functions split out from fold_builtin_1.
1248         (fold_builtin_n): New.
1249         (fold_builtin_varargs): New.
1250         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
1251         instead.
1252         (fold_call_expr): New.
1253         (build_function_call_expr): Rewrite to use new helper function.
1254         (fold_builtin_call_list): New.
1255         (build_call_expr): New.
1256         (fold_builtin_call_valist): New.
1257         (rewrite_call_expr): New.
1258         (validate_arg): New.
1259         (validate_arglist): Change parameter to be entire CALL_EXPR instead
1260         of an arglist.  Change return type to bool.  Use new CALL_EXPR
1261         accessors.
1262
1263         (fold_builtin_strstr):  Pass call arguments individually instead
1264         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
1265         accessors and constructors.  Return NULL_TREE instead of 0.
1266         (fold_builtin_strchr): Likewise.
1267         (fold_builtin_strrchr): Likewise.
1268         (fold_builtin_strpbrk): Likewise.
1269         (fold_builtin_strcat): Likewise.
1270         (fold_builtin_strncat): Likewise.
1271         (fold_builtin_strspn): Likewise.
1272         (fold_builtin_strcspn): Likewise.
1273         (fold_builtin_fputs): Likewise.
1274         (fold_builtin_next_arg): Likewise.
1275         (fold_builtin_sprintf): Likewise.
1276
1277         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
1278         NULL_RTX instead of 0.
1279         (expand_builtin_memory_chk): Likewise.
1280         (maybe_emit_chk_warning): Likewise.
1281         (maybe_emit_sprintf_chk_warning): Likewise.
1282
1283         (fold_builtin_object_size): Pass call arguments individually instead
1284         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
1285         accessors and constructors.  Return NULL_TREE instead of 0.
1286         (fold_builtin_memory_chk): Likewise.
1287         (fold_builtin_stxcpy_chk): Likewise.
1288         (fold_builtin_strncpy_chk): Likewise.
1289         (fold_builtin_strcat_chk): Likewise.
1290         (fold_builtin_strcat_chk): Likewise.
1291         (fold_builtin_strncat_chk): Likewise.
1292         (fold_builtin_sprintf_chk): Likewise.
1293         (fold_builtin_snprintf_chk): Likewise.
1294         (fold_builtin_printf): Likewise.
1295         (fold_builtin_vprintf): Likewise.
1296
1297         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
1298         constructors.
1299         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
1300         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1301         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
1302         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
1303         (fold_unary): Likewise.
1304         (fold_binary): Likewise.
1305         (fold_ternary): Remove CALL_EXPR case, since they are no longer
1306         ternary expressions.
1307         (fold): Add logic for tcc_vl_exp.
1308         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
1309         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1310         (fold_build3_stat): Add assertion to flag broken interface for
1311         constructing CALL_EXPRs.
1312         (fold_build_call_list): New.
1313         (fold_build_call_list_initializer): New.
1314         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
1315         constructors.
1316         (fold_strip_sign_ops): Likewise.
1317
1318 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
1319             Brooks Moses  <brooks.moses@codesourcery.com>
1320             Lee Millward  <lee.millward@codesourcery.com>
1321
1322         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
1323         accessors and dump arguments explicitly.
1324
1325         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
1326         TREE_CODE_LENGTH.
1327         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
1328         explicitly.
1329         (print_call_name): Use new CALL_EXPR accessors.
1330
1331         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
1332         CALL_EXPR arguments explicitly instead of as a list.  Use
1333         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1334
1335         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
1336         (vrp_visit_stmt): Likewise.
1337
1338         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
1339         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
1340         TREE_CODE_LENGTH.
1341         (force_move_till_expr): Likewise.
1342
1343         * targhooks.c (default_external_stack_protect_fail): Use
1344         build_call_expr instead of build_function_call_expr.
1345         (default_hidden_stack_protect_fail): Likewise.
1346
1347         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
1348         build the call.
1349
1350         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
1351         and walk arguments explicitly.
1352
1353         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
1354         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1355         (expand_simple_operations): Likewise.
1356         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
1357
1358         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
1359         of TREE_CODE_LENGTH.
1360         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
1361
1362         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
1363         instead of TREE_CODE_LENGTH.
1364
1365         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
1366         (tree_ic_transform): Likewise.
1367         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
1368         parameter instead of arglist.  Fix callers.
1369         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
1370         (tree_stringops_transform): Likewise.
1371         (tree_indirect_call_to_profile): Likewise.
1372         (tree_stringops_values_to_profile): Likewise.
1373
1374         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
1375         (eliminate_tail_call): Likewise.
1376
1377         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
1378
1379         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
1380         Use TREE_OPERAND_LENGTH and generalize to handle any number of
1381         operands.
1382         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
1383
1384         * omp-low.c (build_omp_barrier): Use build_call_expr.
1385         (lower_rec_input_clauses): Likewise.
1386         (lower_reduction_clauses): Likewise.
1387         (expand_parallel_call): Likewise.
1388         (maybe_catch_exception): Likewise.
1389         (expand_omp_for_generic): Likewise.
1390         (expand_omp_for_static_nochunk): Likewise.
1391         (expand_omp_sections): Likewise.
1392         (lower_omp_single_simple): Likewise.
1393         (lower_omp_single_copy): Likewise.
1394         (lower_omp_master): Likewise.
1395         (lower_omp_ordered): Likewise.
1396         (lower_omp_critical): Likewise.
1397
1398         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
1399         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
1400
1401         * tree-gimple.c (is_gimple_call_addr): Fix doc.
1402         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
1403         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
1404
1405         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
1406         and generalize to handle any number of operands.
1407         (chrec_contains_undetermined): Likewise.
1408         (tree_contains_chrecs): Likewise.
1409         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
1410
1411         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
1412
1413         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
1414         fold_call_expr instead of fold_builtin.
1415         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
1416         match declarations there.
1417         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
1418         updates.
1419
1420         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
1421         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1422
1423         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
1424         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
1425
1426         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
1427         accessors.
1428
1429         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
1430         (execute_cse_sincos): Use new CALL_EXPR accessors.
1431
1432         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
1433
1434         * gimple-low.c (lower_function_body): Use build_call_expr.
1435         (lower_builtin_setjmp): Likewise.
1436
1437         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
1438         (set_storage_via_libcall): Likewise.
1439         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
1440         instead of TREE_CODE_LENGTH.
1441         (expand_expr_real_1): Use new CALL_EXPR accessors.
1442
1443         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
1444         generalize to handle any number of operands.
1445         (TB_parent_eq): Likewise.
1446
1447         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
1448         (strip_builtin_expect): Likewise.
1449
1450         * function.c (gimplify_parameters): Use build_call_expr.
1451
1452         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
1453         instead of TREE_CODE_LENGTH.
1454
1455         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
1456         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
1457
1458         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
1459         iterators.
1460
1461         * gimplify.c (build_stack_save_restore): Use build_call_expr.
1462         (gimplify_decl_expr): Likewise.
1463         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
1464         Use new CALL_EXPR iterators.
1465         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
1466         (gimplify_modify_expr_to_memset): Likewise.
1467         (gimplify_variable_sized_compare): Likewise.
1468         (gimplify_omp_atomic_fetch_op): Likewise.
1469         (gimplify_omp_atomic_pipeline): Likewise.
1470         (gimplify_omp_atomic_mutex): Likewise.
1471         (gimplify_function_tree): Likewise.
1472
1473         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
1474         (call_expr_flags): Likewise.
1475         (expand_call): Likewise.
1476
1477         * except.c (expand_builtin_eh_return_data_regno): Pass entire
1478         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
1479         accessors.
1480
1481         * coverage.c (create_coverage): Use build_call_expr.
1482
1483         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
1484         (temp_call_expr_obstack): New.
1485         (pool_copy_list): Delete.
1486         (temp_copy_call_expr): New.
1487         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
1488         CALL_EXPR accessors.  Get rid of special goo for copying argument
1489         lists and use temp_copy_call_expr instead.
1490         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
1491         CALL_EXPR accessors.
1492         (create_expression_by_pieces): Likewise.  Use build_call_array
1493         to construct the result instead of fold_build3.
1494         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
1495         dealing with argument lists.
1496         (init_pre): Remove references to expression_node_pool and
1497         list_node_pool.  Init temp_call_expr_obstack instead.
1498         (fini_pre): Remove references to expression_node_pool and
1499         list_node_pool.
1500
1501         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
1502         and walk arguments explicitly instead of as a list.
1503
1504         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
1505         (mx_register_decls): Likewise.
1506         (mudflap_register_call): Likewise.
1507         (mudflap_finish_file): Likewise.
1508
1509         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
1510         (ipa_callsite_compute_param): Likewise.
1511
1512         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
1513         accessors and constructor.
1514
1515         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
1516         accessors and constructor.
1517         (convert_tramp_reference): Likewise.
1518         (convert_call_expr): Likewise.
1519         (finalize_nesting_tree_1): Likewise.
1520
1521         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
1522         accessors.
1523
1524         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
1525
1526         * tree-inline.c (initialize_inlined_parameters): Pass entire
1527         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
1528         accessors.
1529         (estimate_num_insns_1): Use new CALL_EXPR accessors.
1530         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
1531
1532         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
1533         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1534         (vectorizable_reduction): Likewise.
1535         (vectorizable_call): Use new CALL_EXPR iterators.
1536         (vectorizable_conversion): Use build_call_expr.
1537         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
1538         (vect_gen_widened_results_half): Use build_call_expr.
1539         (vect_setup_realignment): Likewise.
1540         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
1541
1542         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
1543         (pass_through_call): Likewise.
1544         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
1545         fold_builtin.
1546
1547         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
1548         (tree_gen_pow2_profiler): Likewise.
1549         (tree_gen_one_value_profiler): Likewise.
1550         (tree_gen_ic_func_profiler): Likewise.
1551         (tree_gen_average_profiler): Likewise.
1552         (tree_gen_ior_profiler): Likewise.
1553
1554         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
1555         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
1556         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1557
1558         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
1559         of TREE_CODE_LENGTH.
1560
1561         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
1562         of TREE_CODE_LENGTH.
1563
1564         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
1565         constructor.
1566         (convert_to_integer): Likewise.
1567
1568         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
1569         accessors.
1570
1571 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
1572             Brooks Moses  <brooks.moses@codesourcery.com>
1573             Lee Millward  <lee.millward@codesourcery.com>
1574
1575         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
1576         accessors.
1577         * config/frv/frv.c (frv_expand_builtin): Likewise.
1578         * config/s390/s390.c (s390_expand_builtin): Likewise.
1579
1580         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
1581         (sparc_expand_builtin): Use new CALL_EXPR accessors.
1582
1583         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
1584         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
1585         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
1586         (ix86_expand_store_builtin): Likewise.
1587         (ix86_expand_unop_builtin): Likewise.
1588         (ix86_expand_unop1_builtin): Likewise.
1589         (ix86_expand_sse_compare): Likewise.
1590         (ix86_expand_sse_comi): Likewise.
1591         (ix86_expand_vec_init_builtin): Likewise.
1592         (ix86_expand_vec_ext_builtin): Likewise.
1593         (ix86_expand_vec_set_builtin): Likewise.
1594         (ix86_expand_builtin): Use new CALL_EXPR accessors.
1595
1596         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
1597         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
1598
1599         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
1600         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
1601         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
1602
1603         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
1604         build_call_expr.
1605         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
1606         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
1607         arglist.  Use new CALL_EXPR accessors.  Fix callers.
1608         (altivec_expand_abs_builtin): Likewise.
1609         (rs6000_expand_binop_builtin): Likewise.
1610         (altivec_expand_predicate_builtin): Likewise.
1611         (altivec_expand_lv_builtin): Likewise.
1612         (spe_expand_stv_builtin): Likewise.
1613         (altivec_expand_stv_builtin): Likewise.
1614         (rs6000_expand_ternop_builtin): Likewise.
1615         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
1616         (altivec_expand_st_builtin): Likewise.
1617         (altivec_expand_dst_builtin): Likewise.
1618         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
1619         arglist.  Use new CALL_EXPR accessors.  Fix callers.
1620         (altivec_expand_vec_set_builtin): Likewise.
1621         (altivec_expand_vec_ext_builtin): Likewise.
1622         (altivec_expand_builtin): Use new CALL_EXPR accessors.
1623         (spe_expand_builtin): Likewise.
1624         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
1625         arglist.  Use new CALL_EXPR accessors.  Fix callers.
1626         (spe_expand_evsel_builtin): Likewise.
1627         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
1628         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
1629
1630         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
1631         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
1632         (arm_expand_unop_builtin): Likewise.
1633         (arm_expand_builtin): Use new CALL_EXPR accessors.
1634
1635         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
1636         accessors.
1637
1638         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
1639         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
1640         (bfin_expand_unop_builtin): Likewise.
1641         (bfin_expand_builtin): Use new CALL_EXPR accessors.
1642
1643 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
1644             Brooks Moses  <brooks.moses@codesourcery.com>
1645             Lee Millward  <lee.millward@codesourcery.com>
1646
1647         * c-semantics.c (build_stmt): Add internal diagnostic check.
1648
1649         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
1650         accessors.  Print arguments explicitly instead of as a list.
1651
1652         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
1653
1654         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
1655         (c_finish_omp_flish): Likewise.
1656
1657         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
1658         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
1659         instead of TREE_CODE_LENGTH.
1660         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
1661         (c_warn_unused_result): Likewise.
1662
1663 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1664
1665         PR c/26494
1666         * doc/invoke.texi (Warning Options): Remove
1667         -Werror-implicit-function-declaration.
1668         (Wimplicit-function-declaration): Update description.
1669         * opts.c (common_handle_option): Move handling of -Werror=* to...
1670         (enable_warning_as_error): ...here.
1671         * opts.h (enable_warning_as_error): Declare.
1672         * c-decl.c (implicit_decl_warning): Unless
1673         -Wno-implicit-function-declaration is given, emit a pedwarn if
1674         -std=c99 or emit a warning if -Wimplicit-function-declaration.
1675         * c.opt (Wimplicit-function-declaration): Replace
1676         mesg_implicit_function_declaration with
1677         warn_implicit_function_declaration.
1678         * c-opts.c (c_common_handle_option):
1679         -Werror-implicit-function-declaration is exactly equal as
1680         -Werror=implicit-function-declaration.
1681         (set_Wimplicit): Replace mesg_implicit_function_declaration with
1682         warn_implicit_function_declaration.
1683         (c_common_post_options): -Wimplict-function-declaration is enabled
1684         by default by -std=c99, otherwise is disabled by default.
1685         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
1686
1687 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
1688
1689         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
1690         DECL on the rhs to a DECL on the lhs for debug info purposes if the
1691         former is ignored but not the latter.
1692
1693 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
1694
1695         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
1696         is made and the reference doesn't use the alias set of its type,
1697         do not create the temporary using that type.
1698
1699 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
1700
1701         * jump.c: Remove prototypes for delete_computation and
1702         delete_prior_computation.
1703
1704 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
1705
1706         * jump.c (get_label_after): Delete.
1707         (get_label_before, delete_computation, delete_jump,
1708         delete_prior_computation, follow_jumps): Move...
1709         * reorg.c (delete_computation, delete_prior_computation): ... here...
1710         (get_label_before, delete_jump): ... making these static ...
1711         (follow_jumps): ... and simplifying this since it only runs after
1712         reload.
1713         * rtl.h (get_label_after, get_label_before, delete_jump,
1714         follow_jumps): Delete prototypes.
1715
1716 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
1717
1718         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
1719
1720 2007-02-15  Nick Clifton  <nickc@redhat.com>
1721
1722         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
1723         order to prevent it from being munged by the target.
1724
1725 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
1726
1727         * config/i386/i386.md: Remove misleading comment.
1728
1729 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
1730
1731         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
1732         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
1733         invalid patterns.
1734
1735 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
1736
1737         * tree-sra.c (instantiate_missing_elements): Canonicalize
1738         bit-field types.
1739         (sra_build_assignment): New.
1740         (generate_copy_inout, generate_element_copy,
1741         generate_element_zero, generate_one_element_init): Use it.
1742
1743 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
1744
1745         * tree-sra.c (instantiate_missing_elements): Canonicalize
1746         bit-field types.
1747         (sra_build_assignment): New.
1748         (generate_copy_inout, generate_element_copy,
1749         generate_element_zero, generate_one_element_init): Use it.
1750
1751 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
1752
1753         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
1754         limbo die nodes.
1755
1756 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
1757
1758         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
1759         types as aggregates not scalars.
1760         * function.c (assign_stack_temp_for_type): Likewise.
1761
1762 2007-02-14  Roger Sayle  <roger@eyesopen.com>
1763             Zdenek Dvorak  <dvorakz@suse.cz>
1764
1765         * tree-dump.c (dump_switch_p_1): Require exact match of the option
1766         name.
1767
1768 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
1769
1770         * passes.c (next_pass_1): Clear the next field of the copied
1771         pass structure.
1772
1773 2007-02-14  Richard Henderson  <rth@redhat.com>
1774
1775         * tree-sra.c (early_sra): New.
1776         (decl_can_be_decomposed_p): Deny va_list if early_sra.
1777         (tree_sra_early, pass_sra_early): New.
1778         * tree-pass.h (pass_sra_early): Declare.
1779         * passes.c (init_optimization_passes): Use it.
1780
1781 2007-02-14  Richard Guenther  <rguenther@suse.de>
1782
1783         * flags.h (issue_strict_overflow_warning): Convert to a macro.
1784
1785 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
1786
1787          PR tree-optimization/30771
1788         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
1789         also phi nodes.
1790         (vect_analyze_operations): Induction phis can now be marked as
1791         used_in_loop.
1792         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
1793         Update documentation accordingly.
1794
1795 2007-02-14  Nick Clifton  <nickc@redhat.com>
1796
1797         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
1798         most 3 arguments are supported.
1799         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
1800
1801 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
1802
1803         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
1804         Ensure dst->current is valid.
1805
1806 2007-02-13  Paul Brook  <paul@codesourcery.com>
1807
1808         * config.gcc: Add arm*-*-uclinux-*eabi.
1809         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
1810         (SUBTARGET_EXTRA_LINK_SPEC): Define.
1811         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
1812         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
1813         (LINK_SPEC): Define.
1814         (LIB_SPEC): Define.
1815         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
1816         register.
1817         * config/arm/uclinux-eabi.h: New file.
1818         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
1819         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
1820         based targets.
1821
1822 2007-02-13  Ian Lance Taylor  <iant@google.com>
1823
1824         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
1825         * flags.h (warn_strict_overflow): Declare.
1826         (enum warn_strict_overflow_code): Define.
1827         (issue_strict_overflow_warning): New static inline function.
1828         * opts.c (warn_strict_overflow): New variable.
1829         (common_handle_option): Handle OPT_Wstrict_overflow and
1830         OPT_Wstrict_overflow_.
1831         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
1832         OPT_Wall.
1833         * fold-const.c: Include intl.h.
1834         (fold_deferring_overflow_warnings): New static variable.
1835         (fold_deferred_overflow_warning): New static variable.
1836         (fold_deferred_overflow_code): New static variable.
1837         (fold_defer_overflow_warnings): New function.
1838         (fold_undefer_overflow_warnings): New function.
1839         (fold_undefer_and_ignore_overflow_warnings): New function.
1840         (fold_deferring_overflow_warnings_p): New function.
1841         (fold_overflow_warning): New static function.
1842         (make_range): Add strict_overflow_p parameter.  Change all
1843         callers.
1844         (extract_muldiv, extract_muldiv_1): Likewise.
1845         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
1846         tree_expr_nonnegative_p.
1847         (fold_negate_expr): Call fold_overflow_warning.
1848         (fold_range_test): Likewise.
1849         (fold_comparison): Likewise.
1850         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
1851         instead of tree_expr_nonnegative_p.
1852         (tree_expr_nonnegative_warnv_p): Rename from
1853         tree_expr_nonnegative_p, add strict_overflow_p parameter.
1854         (tree_expr_nonnegative_p): New function.
1855         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
1856         strict_overflow_p parameter.
1857         (tree_expr_nonzero_p): New function.
1858         * passes.c (verify_interpass_invariants): New static function.
1859         (execute_one_pass): Call it.
1860         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
1861         warnings.
1862         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
1863         (estimate_numbers_of_iterations): Likewise.
1864         (scev_probably_wraps_p): Likewise.
1865         * tree-ssa-ccp.c: Include "toplev.h".
1866         (evaluate_stmt): Defer fold overflow warnings until we know we are
1867         going to optimize.
1868         (struct fold_stmt_r_data): Add stmt field.
1869         (fold_stmt_r): Defer fold overflow warnings until we know we
1870         optimized.
1871         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
1872         (fold_stmt_inplace): Likewise.
1873         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
1874         (cleanup_control_expr_graph): Defer fold overflow warnings until
1875         we know we are going to optimize.
1876         * tree-cfg.c (fold_cond_expr_cond): Likewise.
1877         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
1878         Likewise.
1879         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
1880         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
1881         * tree-ssa-loop-manip.c (create_iv): Likewise.
1882         * c-typeck.c (build_conditional_expr): Likewise.
1883         (build_binary_op): Likewise.
1884         * tree-vrp.c (vrp_expr_computes_nonzero): Call
1885         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
1886         (extract_range_from_unary_expr): Likewise.
1887         * simplify-rtx.c (simplify_const_relational_operation): Warn when
1888         assuming that signed overflow does not occur.
1889         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
1890         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
1891         (fold_defer_overflow_warnings): Declare.
1892         (fold_undefer_overflow_warnings): Declare.
1893         (fold_undefer_and_ignore_overflow_warnings): Declare.
1894         (fold_deferring_overflow_warnings_p): Declare.
1895         (tree_expr_nonzero_warnv_p): Declare.
1896         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
1897         of warning options.
1898         (Warning Options): Document -Wstrict-overflow.
1899         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
1900         (tree-ssa-ccp.o): Likewise.
1901         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
1902         (fold-const.o): Depend on intl.h.
1903
1904 2007-02-13  Ian Lance Taylor  <iant@google.com>
1905
1906         PR middle-end/30751
1907         * lower-subreg.c (resolve_simple_move): Decompose subregs in
1908         addresses.
1909
1910 2007-02-13  Stuart Hastings  <stuart@apple.com>
1911
1912         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
1913
1914 2007-02-13  Richard Henderson  <rth@redhat.com>
1915
1916         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
1917         handled_component_p before looking for the indirect_ref.
1918
1919 2007-02-13  Richard Henderson  <rth@redhat.com>
1920
1921         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
1922         remove flags clobber.
1923         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
1924         (bswaphi_lowpart): New.
1925         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
1926         remove TARGET_BSWAP test.  Delete expander of the same name.
1927
1928         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
1929         (expand_unop): Use them.
1930
1931 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
1932
1933         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
1934         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
1935         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
1936         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
1937         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
1938         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
1939         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
1940         assembler dialect choice from asm templates.
1941
1942 2007-02-12  Richard Henderson  <rth@redhat.com>
1943
1944         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
1945         (fixuns_trunc<SSEMODEF>si2): Use it.
1946         * config/i386/sse.md (vec_setv4sf_0): Export.
1947         * config/i386/i386.c (ix86_build_const_vector): Export.
1948         (ix86_split_convert_uns_si_sse): Rename from
1949         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
1950         * config/i386/i386-protos.h: Update.
1951
1952 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1953
1954         PR c/29521
1955         * c-typeck.c (c_finish_return): Improve warning message.
1956
1957 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1958
1959         * alias.c (find_symbolic_term): Delete unused function.
1960
1961 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
1962
1963         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
1964         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
1965         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
1966
1967 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
1968
1969         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
1970         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
1971         the function, temporarily point the debug interface to the null one.
1972
1973 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
1974
1975         * dwarf2out.c (round_up_to_align): New static function.
1976         (field_byte_offset): Use it to round the offset.
1977
1978 2007-02-12  Richard Henderson  <rth@redhat.com>
1979
1980         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
1981         (inswl_const): Export.
1982
1983 2007-02-12  Richard Henderson  <rth@redhat.com>
1984
1985         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
1986         result mode of the libcall, convert back to outmode.
1987
1988 2007-02-12  Roger Sayle  <roger@eyesopen.com>
1989
1990         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
1991         (bswapdi2): New define_expand to implement 32-bit implementation.
1992
1993 2007-02-12  Nick Clifton  <nickc@redhat.com>
1994
1995         * doc/invoke.texi (Overall Options): Document --help=.
1996         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
1997         (cc1_options): Pass --help= on to cc1.
1998         (display_help): Add description of --help=.
1999         (process_command): Add code to handle --help=.  Allow translated
2000         --help and --target-help switches to be passed on to compiler
2001         sub-process.
2002         (main): Remove unused if statement.
2003         * opts.c (columns): Remove.
2004         (LEFT_COLUMN): Define.
2005         (wrap_help): Add columns argument.
2006         (print_filtered_help): Change parameters to be an include bitmask,
2007         an exclude bitmask, an any bitmask and the column width.  Move the
2008         code to display the params list here.  Add code to display the
2009         status of options rather than their descriptions if the quiet flag
2010         is not active.
2011         (print_specific_help): Change parameters to be an include bitmask,
2012         an exclude bitmask and an any bitmask.  Move code to look up the
2013         column width here.  Decide upon the title for an options listing.
2014         (common_handle_options): Add code to handle --help=.  Adapt code
2015         for --help and --target-help to use the revised form of the
2016         print_specific_help function.
2017         (print_help): Delete.
2018         (print_param_help): Delete.
2019         (print_switch): Delete.
2020         * opts.h (cl_lang_count): Add prototype.
2021         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
2022         CL_MAX_OPTION_CLASS): New defines.
2023         * optc-gen.awk: Add construction of cl_lang_count.
2024         * c.opt: Add Warning attribute to warning options and Optimization
2025         attribute to optimization options.
2026         * common.opt: Likewise.
2027         Add --help=.
2028         Add -fhelp and -ftarget-help as aliases for the transformed --help
2029         and --target-help options.
2030         * opt-functions.awk: Add code to handle Warning and Optimization
2031         attributes.
2032
2033 2007-02-12  Richard Henderson  <rth@redhat.com>
2034
2035         * config/alpha/constraints.md: New file.
2036         * config/alpha/alpha.c: Include tm-constrs.h.
2037         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
2038         alpha_extra_constraint): Remove.
2039         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
2040         * config/alpha/alpha-protos.h: Update.
2041         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
2042         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
2043         (EXTRA_CONSTRAINT): Remove.
2044         * config/alpha/alpha.md: Include constraints.md.
2045         (adddi splitter): Use satisfies_constraint_*.
2046         * config/alpha/predicates.md (add_operand): Likewise.
2047         (sext_add_operand, addition_operation): Likewise.
2048
2049 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
2050
2051         PR tree-optimization/29145
2052         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
2053         in our handling of restrict qualified pointers.
2054
2055 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2056
2057         PR middle-end/7651
2058         * doc/invoke.texi (Wunused-value): Update description.
2059         (Wextra): Delete item.
2060         * opts.c (set_Wextra): Don't use the value of Wextra to set the
2061         value of Wunused-value.
2062         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
2063         (c_finish_stmt_expr): Don't check extra_warnings.
2064         (emit_side_effect_warnings): The caller is responsible to check
2065         warn_unused_value.
2066
2067 2007-02-11  Roger Sayle  <roger@eyesopen.com>
2068             Matt Thomas  <matt@3am-software.com>
2069
2070         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
2071
2072 2007-02-11  Roger Sayle  <roger@eyesopen.com>
2073
2074         * simplify-rtx.c (simplify_relational_operation_1): Optimize
2075         comparisons of POPCOUNT against zero.
2076         (simplify_const_relational_operation): Likewise.
2077
2078 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2079
2080         * doc/invoke.texi (Wextra): Delete outdated paragraph.
2081
2082 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2083
2084         * dwarf2out.c (root_type): Delete unused function.
2085
2086 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2087
2088         * genattrtab.c (contained_in_p): Delete unused function.
2089         (write_expr_attr_cache): Likewise.
2090
2091 2007-02-11  Jan Hubicka  <jh@suse.cz>
2092
2093         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
2094         previous patch.
2095
2096 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
2097
2098         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
2099         to add the REG_EQ* note.
2100         * see.c (see_merge_one_use_extension): Likewise.
2101         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
2102         turn REG_EQUAL notes into REG_EQUIV notes if the target
2103         register may have more than one set.
2104         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
2105         * gcse.c (try_replace_reg): Likewise.
2106         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
2107         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
2108         more than one REG_EQUIV note.
2109         * reload1.c (gen_reload): Use set_unique_reg_note.
2110
2111 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
2112
2113         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
2114         (ix86_builtin_conversion): New function.
2115
2116 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
2117
2118         PR target/29487
2119         * tree.h (DECL_REPLACEABLE_P): New macro.
2120         * except.c (set_nothrow_function_flags): Likewise.
2121
2122 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
2123             Ira Rosen  <irar@il.ibm.com>
2124             Dorit Nuzman  <dorit@il.ibm.com>
2125
2126         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
2127         * targhooks.c (default_builtin_vectorized_conversion): New.
2128         * targhooks.h (default_builtin_vectorized_function): New declaration.
2129         * target.h (struct vectorize): Add builtin_conversion field.
2130         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
2131         stmt_vec_info_type value.
2132         (vectorizable_conversion): New declaration.
2133         * tree-vect-analyze.c (vect_analyze_operations): Add
2134         vectorizable_conversion call.
2135         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
2136         * tree-vect-transform.c (vectorizable_conversion): New function.
2137         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
2138         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
2139         mode.
2140         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
2141         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
2142         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
2143         or ALTIVEC_BUILTIN_VCFSX.
2144
2145 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2146
2147         PR target/30634
2148         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
2149         CONST_DOUBLE and operand 0 is a hard register.
2150         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
2151         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
2152         is a hard floating-point register.
2153
2154 2007-02-10  Richard Henderson  <rth@redhat.com>
2155             Jakub Jelinek  <jakub@redhat.com>
2156             Alexandre Oliva  <aoliva@redhat.com>
2157
2158         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
2159         * builtin-types.def (BT_WORD): Make unsigned.
2160         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
2161         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
2162         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
2163         * c-decl.c (grokdeclarator): Don't error if !have_tls.
2164         * c-parser.c (c_parser_omp_threadprivate): Likewise.
2165         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
2166         emulated tls.
2167         * expr.c (emutls_var_address): New.
2168         (expand_expr_real_1): Expand emulated tls.
2169         (expand_expr_addr_expr_1): Likewise.
2170         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
2171         * output.h (emutls_finish): Declare.
2172         * toplev.c (compile_file): Call it.
2173         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
2174         address before wrapping in CONST.
2175         * varasm.c (emutls_htab, emutls_object_type): New.
2176         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
2177         (get_emutls_object_name, get_emutls_object_type): New.
2178         (get_emutls_init_templ_addr, emutls_decl): New.
2179         (emutls_common_1, emutls_finish): New.
2180         (assemble_variable): When emulating tls, swap decls; generate
2181         constructor for the emutls objects.
2182         (do_assemble_alias): When emulating tls, swap decl and target name.
2183         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
2184         for emulated tls.
2185         * varpool.c (decide_is_variable_needed): Look at force_output.
2186         Recurse for emulated tls.
2187         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
2188         with decide_is_variable_needed.
2189         * emutls.c: New file.
2190         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
2191         tls_object for real tls.
2192
2193 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2194
2195         PR rtl-optimization/29599
2196         * reload1.c (eliminate_regs_in_insn): Take the destination
2197         mode into account when computing the offset.
2198
2199 2007-02-09  Stuart Hastings  <stuart@apple.com>
2200             Richard Henderson  <rth@redhat.com>
2201
2202         * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
2203         * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
2204         * gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
2205         fixuns_truncdfhi2): New.
2206         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
2207         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
2208         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
2209         (floatunssidf2): Allow nonimmediate source.
2210         * gcc/config/i386/sse.md (movdi_to_sse): New.
2211         (vec_concatv2di): Drop '*'.
2212         * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
2213         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
2214         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
2215         New.
2216         * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
2217         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
2218         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
2219         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
2220         (ix86_build_signbit_mask): Fix decl of v, refactor to call
2221         ix86_build_const_vector.
2222         (x86_emit_floatuns): Rewrite.
2223
2224 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2225
2226         * genautomata.c (longest_path_length): Delete unused function.
2227         (struct state): Delete unused longest_path_length.
2228         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
2229         (get_free_state): Delete unused.
2230
2231 2007-02-09  Jan Hubicka  <jh@suse.cz>
2232
2233         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
2234         * doc/invoke.texi (inline-unit-growth): Update default value.
2235
2236         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
2237         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
2238         (rebuild_cgraph_edges): Likewise.
2239         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
2240         (dump_cgraph_node): Dump frequencies.
2241         (cgraph_clone_edge): Add frequency scales.
2242         (cgraph_clone_node): Add freuqnecy.
2243         * cgraph.h (cgraph_edge): Add freuqnecy argument.
2244         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
2245         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
2246         * tree-pass.h (TODO_rebuild_frequencies): New constant.
2247         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
2248         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
2249         (save_inline_function_body): Likewise.
2250         * ipa-inline.c: inluce rtl.h
2251         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
2252         (cgraph_edge_badness): Use frequencies.
2253         (cgraph_decide_recursive_inlining): Update clonning.
2254         (cgraph_decide_inlining_of_small_function): Dump frequency.
2255         * predict.c (estimate_bb_frequencies): Export.
2256         * predict.h (estimate_bb_frequencies): Declare.
2257         * tree-inline.c (copy_bb): Watch overflows.
2258         (expand_call_inline): Update call of cgraph_create_edge.
2259         (optimize_inline_calls): Use TODO flags to update frequnecies.
2260         * passes.h: Include predict.h
2261         (init_optimization_passes): Move profile ahead.
2262         (execute_function_todo): Handle TODO_rebuild_frequencies.
2263
2264 2007-02-09  Roger Sayle  <roger@eyesopen.com>
2265
2266         * config/alpha/alpha.c (emit_insxl): Force the first operand of
2267         the insbl or inswl pattern into a register.
2268
2269 2007-02-09  Roger Sayle  <roger@eyesopen.com>
2270
2271         * config/ia64/ia64.md (bswapdi2): New define_insn.
2272
2273 2007-02-09  Richard Henderson  <rth@redhat.com>
2274
2275         * config/i386/constraints.md (Ym): New constraint.
2276         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
2277         (movdi_1_rex64): Split sse and xmm general register moves from
2278         memory move alternatives.  Use conditional register constraints.
2279         (movsf_1, movdf_integer): Likewise.
2280         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
2281         (movdf_integer_rex64): New.
2282         (pushsf_rex64): Fix output constraints.
2283         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
2284         (sse2_stored): Likewise.
2285         (sse2_storeq_rex64): New.
2286         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
2287         amd and not generic.
2288         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
2289         for optimize_size.  Remove SF/DFmode hack.
2290
2291 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2292
2293         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
2294         (bit_SSE4a): New.
2295
2296 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
2297             Richard Sandiford  <richard@codesourcery.com>
2298
2299         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
2300         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
2301         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
2302         m68k/t-mlib to tmake_file.
2303         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
2304         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
2305         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
2306         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
2307         variable is not empty, add t-$m68k_arch_family to tmake_file.
2308         Add t-mlibs to tmake_file.
2309         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
2310         * config/m68k/t-cf: New file.
2311         * config/m68k/t-m68k: Likewise.
2312         * config/m68k/t-mlibs: Likewise.
2313         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
2314         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
2315         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
2316         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
2317         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
2318         Delete.
2319         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
2320         (INSTALL_LIBGCC): Delete.
2321         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
2322         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
2323         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
2324         (M68K_MLIB_CPU): Define.
2325         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
2326         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
2327         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
2328
2329 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
2330             Richard Guenther  <rguenther@suse.de>
2331
2332         PR middle-end/23361
2333         * fold-const.c (fold_comparison): Handle obfuscated comparisons
2334         against INT_MIN/INT_MAX.
2335         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
2336         file if a loop is removed.
2337
2338 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
2339
2340         * calls.c (store_one_arg): Pass correct alignment to
2341         emit_push_insn for non-BLKmode values.
2342         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
2343         unaligned stack slot via a suitably aligned slot.
2344
2345 2007-02-08  DJ Delorie  <dj@redhat.com>
2346
2347         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
2348         warnings.
2349         (legal_subregs): Use unsigned char, make const.
2350         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
2351
2352 2007-02-08  Paul Brook  <paul@codesourcery.com>
2353
2354         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
2355         special interworking needed.
2356
2357 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
2358
2359         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
2360         conditional to __SSE2__.
2361         (Entries below should have been added to first ChangeLog
2362         entry for amdfam10 dated 2007-02-05)
2363         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
2364         defined.
2365         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
2366         defined.
2367         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
2368         defined.
2369
2370 2007-02-08  DJ Delorie  <dj@redhat.com>
2371
2372         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
2373         * config/m32c/m32c.c (legal_subregs): New.
2374         (m32c_illegal_subreg_p): New.
2375         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
2376         unsupported subregs of hard regs.
2377
2378 2007-02-08  Jan Hubicka  <jh@suse.cz>
2379
2380         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
2381         the same one; always update histograms.
2382
2383 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
2384
2385         * passes.c (init_optimization_passes): Tidy comment.
2386
2387 2007-02-08  Roger Sayle  <roger@eyesopen.com>
2388
2389         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
2390         strip zero_extend, bswap and rotates from POCOUNT's argument.
2391         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
2392         zero_extend and rotates from PARITY's argument.
2393         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
2394         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
2395         of an integer constant at compile-time.
2396
2397 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
2398
2399         PR 30562
2400         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
2401         Update all users.
2402         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
2403         users.
2404         (init_alias_info):
2405         * tree-ssa-live.c (remove_unused_locals): Do not remove
2406         TREE_ADDRESSABLE variables.
2407         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
2408         * tree-ssa-operands.c (add_virtual_operand): Remove argument
2409         FOR_CLOBBER.  Update all users.
2410         If VAR has an associated alias set, add a virtual operand for
2411         it if no alias is found to conflict with the memory reference.
2412
2413 2007-02-07  Jan Hubicka  <jh@suse.cz>
2414             Robert Kidd <rkidd@crhc.uiuc.edu>
2415
2416         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
2417
2418 2007-02-07  Ian Lance Taylor  <iant@google.com>
2419
2420         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
2421
2422 2007-02-07  Roger Sayle  <roger@eyesopen.com>
2423
2424         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
2425         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
2426         tablejumpdi, movsi_to_cr_one): Remove constraints from
2427         define_expand's match_operands.
2428
2429 2007-02-07  Roger Sayle  <roger@eyesopen.com>
2430
2431         * global.c (compute_regsets): Move declatation of "i" inside of
2432         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
2433
2434 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
2435
2436         PR c++/30703
2437         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
2438         of INDIRECT_REF <RESULT_DECL>.
2439
2440         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
2441
2442 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
2443             Kaz Kojima  <kkojima@gcc.gnu.org>
2444
2445         PR target/29746
2446         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
2447         properly.
2448         (sh_initialize_trampoline): Add parentheses to avoid a warning.
2449
2450 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
2451
2452         * doc/loop.texi: Document possibility not to perform disambiguation
2453         of loops with multiple latches.
2454         * cfgloopmanip.c (alp_enum_p): Removed.
2455         (add_loop): Handle subloops.  Use get_loop_body_with_size.
2456         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
2457         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
2458         the new forwarder block.
2459         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
2460         Handle the case latch is NULL.
2461         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
2462         when marking loop exits.
2463         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
2464         be modified.
2465         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
2466         disambiguate_loops_with_multiple_latches.
2467         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
2468         before fix_loop_structure.
2469         * cfgloop.c: Include pointer-set.h and output.h.
2470         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
2471         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
2472         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
2473         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
2474         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
2475         disambiguate_multiple_latches, get_loop_body_with_size,
2476         disambiguate_loops_with_multiple_latches): New functions.
2477         (flow_loop_dump): Dump multiple latch edges.
2478         (flow_loop_nodes_find): Handle loops with multiple latches.
2479         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
2480         (glb_enum_p): Modified.
2481         (get_loop_body): Use get_loop_body_with_size.
2482         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
2483         (AVOID_CFG_MODIFICATIONS): New constant.
2484         (disambiguate_loops_with_multiple_latches, add_loop,
2485         get_loop_body_with_size): Declare.
2486         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
2487
2488 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
2489
2490         PR inline-asm/28686
2491         * global.c (compute_regsets): New function.
2492         (global_alloc): Refactored ELIMINABLE_REGSET
2493         and NO_GLOBAL_ALLOC_REGS computation out.
2494         (rest_of_handle_global_alloc): Call compute_regsets()
2495         for non-optimizing case.
2496
2497 2007-02-06  Richard Henderson  <rth@redhat.com>
2498
2499         * config/i386/constraints.md (Y2): Rename from Y.
2500         (Yi): New constraint.
2501         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
2502         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
2503         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
2504         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
2505         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
2506         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
2507         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
2508         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
2509         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
2510         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
2511         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
2512         vec_extractv2si_1): Change Y constraints to Y2.
2513         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
2514         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
2515         Change Y constraints to Y2.
2516         (sse2_loadld): Change Y constraints to x.
2517
2518 2007-02-06  Roger Sayle  <roger@eyesopen.com>
2519
2520         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
2521         (parity<mode>2): New define_expand using rs6000_emit_parity.
2522         * config/rs6000/rs6000.c (rs6000_emit_popcount,
2523         rs6000_emit_parity): New functions.
2524         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
2525         rs6000_emit_parity): Prototype here.
2526
2527 2007-02-06  Ian Lance Taylor  <iant@google.com>
2528
2529         * lower-subreg.c (simple_move_operand): Reject CONST.
2530         (resolve_clobber): Call validate_change rather than directly
2531         assigning to XEXP (pat, 0).
2532
2533 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
2534
2535         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
2536         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
2537         (tree-cfg.o): Remove hashtab.h dependency.
2538
2539         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
2540         (struct ivopts_data): Change niters to pointer_map_t.
2541         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
2542         (niter_for_exit): Create pointer_map on demand.  Change for
2543         pointer_map API.
2544         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
2545         (free_loop_data): Destroy data->niters if created and reset field.
2546         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
2547         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
2548
2549         * tree-ssa-reassoc.c: Include pointer-set.h.
2550         (bb_rank): Change to long *.
2551         (operand_rank): Change to pointer_map_t.
2552         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
2553         (insert_operand_rank): Accept long.
2554         (operand_entry_hash, operand_entry_eq): Remove.
2555         (get_rank): Return long.  Adjust for changes above.
2556         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
2557         and operand_rank.
2558         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
2559
2560         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
2561         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
2562         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
2563         is not NULL.
2564         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
2565         directly since it cannot be NULL.
2566         (get_vi_for_tree): Rewrite for pointer_map API.
2567         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
2568         (init_alias_vars): Create vi_for_tree as pointer_map.
2569         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
2570
2571         * tree-cfg.c: Don't include hashtab.h.
2572         (edge_to_cases): Declare as pointer_map.
2573         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
2574         Delete.
2575         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
2576         (start_recording_case_labels): Create edge_to_cases as pointer_map.
2577         (end_recoding_case_labels): Cleanup edge_to_cases manually before
2578         destroying it.
2579         (record_switch_edge): Delete.
2580         (get_cases_for_edge): Adjust for pointer_map API, inline
2581         record_switch_edge (rewritten for new API), remove goto.
2582
2583 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
2584
2585         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
2586         * tree-nested.c: Include pointer-set.h.
2587         (var_map_elt, var_map_eq, var_map_hash): Delete.
2588         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
2589         to pointer_map_t's.
2590         (nesting_info_bitmap_obstack): New.
2591         (lookup_field_for_decl): Adjust for pointer_map API.
2592         (lookup_tramp_for_decl): Adjust for pointer_map API.
2593         (get_nonlocal_debug_decl): Adjust for pointer_map API.
2594         (get_local_debug_decl): Adjust for pointer_map API.
2595         (convert_nl_goto_reference): Adjust for pointer_map API.
2596         (convert_nl_goto_receiver): Adjust for pointer_map API.
2597         (create_nesting_tree): Create outside GGC space.  Create bitmap on
2598         the new obstack.  Create field_map and var_map as pointer_maps.
2599         (free_nesting_tree): Adjust for changes to create_nesting_tree.
2600         (root): Delete.
2601         (lower_nested_functions): Move root here, no need to NULL it.
2602         Initialize and release the obstack.
2603
2604 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
2605
2606         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
2607         Remove prototypes and make them non-static.
2608         (struct tree_int_map): Remove.
2609         * tree.h (struct tree_int_map): Move here, turning TO into an
2610         unsigned int.
2611         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
2612
2613         * tree.h (TREE_COMPLEXITY): Remove.
2614         (struct tree_exp): Remove complexity field.
2615         * tree.c (build1_stat): Don't set it.
2616
2617 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
2618             Victor Kaplansky  <victork@il.ibm.com>
2619
2620         * tree-vectorizer.c (vect_is_simple_use): Support induction.
2621         (vect_is_simple_reduction): Support reduction with induction as
2622         one of the operands.
2623         (vect_is_simple_iv_evolution): Fix formatting.
2624         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
2625         formatting.  Don't mark induction phis for vectorization.
2626         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
2627         * tree-vect-transform.c (get_initial_def_for_induction): New function.
2628         (vect_get_vec_def_for_operand): Support induction.
2629         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
2630         induction case.
2631         (vectorizable_reduction): Support reduction with induction as one of
2632         the operands.
2633         (vectorizable_type_demotion): Use def-type of stmt argument rather
2634         than dummy def-type.
2635
2636         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
2637         flag_tree_scev_cprop.
2638         * common.opt (tree-scev-cprop): New flag.
2639
2640         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
2641         call to vect_get_new_vect_var.
2642
2643 2007-02-06  Ira Rosen  <irar@il.ibm.com>
2644
2645         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
2646         vectype is not NULL.
2647         (vect_pattern_recog_1): Likewise.
2648
2649 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2650
2651         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
2652         (fold_negate_expr): Likewise.
2653
2654 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
2655
2656         PR debug/30189
2657         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
2658         even if cv-qualification is the same.
2659
2660 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
2661
2662         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
2663         __enable_execute_stack on completion.
2664
2665 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
2666
2667         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
2668         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
2669         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
2670         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
2671         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
2672         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
2673         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
2674         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
2675
2676 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
2677
2678         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
2679         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
2680         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
2681         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
2682         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
2683         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
2684         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
2685         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
2686         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
2687         umuldi3_highpart_rex64, umulsi3_highpart_insn,
2688         umulsi3_highpart_zext, smuldi3_highpart_rex64,
2689         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
2690         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
2691         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
2692         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
2693         sqrtextenddfxf2_i387): Added amdfam10_decode.
2694
2695         * config/i386/athlon.md (athlon_idirect_amdfam10,
2696         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
2697         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
2698         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
2699         athlon_ivector_store_amdfam10): New define_insn_reservation.
2700         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
2701         amdfam10.
2702
2703 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
2704
2705         * config/i386/athlon.md (athlon_call_amdfam10,
2706         athlon_pop_amdfam10, athlon_lea_amdfam10): New
2707         define_insn_reservation.
2708         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
2709         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
2710         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
2711
2712 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
2713
2714         * config/i386/athlon.md (athlon_sseld_amdfam10,
2715         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
2716         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
2717
2718 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
2719
2720         * config/i386/athlon.md (athlon_sseins_amdfam10): New
2721         define_insn_reservation.
2722         * config/i386/i386.md (sseins): Added sseins to define_attr type
2723         and define_attr unit.
2724         * config/i386/sse.md: Set type attribute to sseins for insertq
2725         and insertqi.
2726
2727 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
2728
2729         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
2730         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
2731         ssecomi_load_amdfam10, ssecomi_amdfam10,
2732         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
2733         define_insn_reservation.
2734         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
2735
2736 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
2737
2738         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
2739         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
2740         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
2741         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
2742         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
2743         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
2744         define_insn_reservation.
2745
2746         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
2747         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
2748         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
2749         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
2750         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
2751
2752 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
2753
2754         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
2755         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
2756         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
2757         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
2758         athlon_ssemul_load_k8): Added amdfam10.
2759
2760 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
2761
2762         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
2763         (x86_sse_unaligned_move_optimal): New variable.
2764
2765         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
2766         m_AMDFAM10.
2767         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
2768         for unaligned vector SSE double/single precision loads for AMDFAM10.
2769
2770 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
2771
2772         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
2773         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
2774         Define TARGET_CPU_DEFAULT_amdfam10.
2775         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
2776         (processor_type): Add PROCESSOR_AMDFAM10.
2777
2778         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
2779         processor_type in config/i386/i386.h.
2780         Enable imul peepholes for TARGET_AMDFAM10.
2781
2782         * config.gcc: Add support for --with-cpu option for amdfam10.
2783
2784         * config/i386/i386.c (amdfam10_cost): New variable.
2785         (m_AMDFAM10): New macro.
2786         (m_ATHLON_K8_AMDFAM10): New macro.
2787         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
2788         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
2789         x86_promote_QImode, x86_integer_DFmode_moves,
2790         x86_partial_reg_dependency, x86_memory_mismatch_stall,
2791         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
2792         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
2793         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
2794         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
2795         Enable/disable for amdfam10.
2796         (override_options): Add amdfam10_cost to processor_target_table.
2797         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
2798         processor_alias_table.
2799         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
2800         (ix86_adjust_cost): Add code for amdfam10.
2801
2802 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
2803
2804         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
2805         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
2806         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
2807         * config/i386/i386.h: Add builtin definition for SSE4A.
2808         * config/i386/i386.md: Add support for ABM instructions
2809         (popcnt and lzcnt).
2810         * config/i386/sse.md: Add support for SSE4A instructions
2811         (movntss, movntsd, extrq, insertq).
2812         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
2813         Add -march=amdfam10 flag.
2814         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
2815         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
2816         and amdfam10.
2817         * doc/extend.texi: Add documentation for SSE4A builtins.
2818
2819 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
2820
2821         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
2822
2823 2007-02-05  Richard Guenther  <rguenther@suse.de>
2824
2825         * tree-vectorizer.h (vectorizable_function): Add argument type
2826         argument, change return type.
2827         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
2828         * tree-vect-transform.c (vectorizable_function): Handle extra
2829         argument, return vectorized function decl.
2830         (build_vectorized_function_call): Remove.
2831         (vectorizable_call): Handle calls with result and argument types
2832         differing.  Handle loop vectorization factor correctly.
2833         * targhooks.c (default_builtin_vectorized_function): Adjust for
2834         extra argument.
2835         * targhooks.h (default_builtin_vectorized_function): Likewise.
2836         * target.h (builtin_vectorized_function): Add argument type
2837         argument.
2838         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
2839         extra argument, allow vectorizing of lrintf.
2840         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
2841         documentation of target hook.
2842
2843 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
2844
2845         PR target/30665
2846         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
2847         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
2848         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
2849
2850 2007-02-05  Roger Sayle  <roger@eyesopen.com>
2851
2852         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
2853         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
2854         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
2855         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
2856         before canonicalizing sincos to cexpi.
2857         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
2858
2859 2007-02-05  Roger Sayle  <roger@eyesopen.com>
2860
2861         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
2862         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
2863         (alpha_init_builtins): Use alpha_add_builtins to process tables.
2864
2865 2007-02-05  Roger Sayle  <roger@eyesopen.com>
2866
2867         * mips-tfile.c (initialize_init_file): Correct endianness test.
2868
2869 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
2870
2871         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
2872         the 'y' constraint.
2873
2874 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
2875
2876         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
2877         saves in a PARALLEL before the register assignments.
2878
2879 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
2880
2881         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
2882         DWARF_FRAME_RETURN_COLUMN to be a general register.
2883         * dwarf2out.c (init_return_column_size): New function, split from...
2884         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
2885         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
2886         to be nongeneral registers.
2887         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
2888         integer registers.
2889         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
2890         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
2891
2892 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
2893
2894         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
2895
2896 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
2897
2898         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
2899         (remove_path): Use can_remove_branch_p and remove_branch instead
2900         of loop_delete_branch_edge.
2901         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
2902         (tree_transform_and_unroll_loop): Remove dead branches immediately.
2903         Update profile using scale_dominated_blocks_in_loop.
2904         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
2905         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
2906         (can_remove_branch_p, remove_branch): Declare.
2907         * tree-cfg.c (tree_can_remove_branch_p): New function.
2908         (tree_cfg_hooks): Add tree_can_remove_branch_p.
2909         * cfgrtl.c (rtl_can_remove_branch_p): New function.
2910         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
2911
2912 2007-02-05  Jan Hubicka  <jh@suse.cz>
2913
2914         PR middle-end/30696
2915         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
2916         nodes in cgraph, don't remove offline copy of the function.
2917
2918 2007-02-04  Jan Hubicka  <jh@suse.cz>
2919
2920         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
2921         vectors might cause maybe_lookup_element_for_expr to be called
2922         on non-sra-candidate.
2923
2924 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
2925
2926         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
2927         config/bfin/bfin.md, config/bfin/predicates.md: Follow
2928         spelling conventions.
2929
2930 2007-02-04  Richard Guenther  <rguenther@suse.de>
2931
2932         PR middle-end/30636
2933         * fold-const.c (try_move_mult_to_index): Make sure to not
2934         overflow one dimension of a multi-dimensional array access.
2935
2936 2007-02-04  Jan Hubicka  <jh@suse.cz>
2937
2938         * passes.c (init_optimization_passes): Reindent.
2939
2940 2007-02-04  Jan Hubicka  <jh@suse.cz>
2941             Eric Botcazou  <ebotcazou@adacore.com>
2942
2943         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
2944         (execute_fixup_cfg): Break out the abnormal goto code.
2945         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
2946         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
2947         (optimize_inline_calls): Call make_nonlocal_label_edges.
2948
2949 2007-02-04  Jan Hubicka  <jh@suse.cz>
2950
2951         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
2952         true when something was changed.
2953         (rename_ssa_copies): When something was changed, do
2954         TODO_remove_unused_locals.
2955         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
2956         add TODO_remove_unused_locals when instruction was removed.
2957
2958 2007-02-04  Jan Hubicka  <jh@suse.cz>
2959
2960         * ipa-inline.c (try_inline): Improve debug output; work on already
2961         inline edges too.
2962         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
2963         call try_inline for already inlined edges too when flattening;
2964         inline also functions that make callee growth but overall unit size
2965         reduce.
2966
2967 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
2968
2969         * config/m32c/bitops.md, config/m32c/jump.md,
2970         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
2971         config/m32r/m32r.h, config/m32r/m32r.md,
2972         config/m32r/predicates.md, config/m68hc11/larith.asm,
2973         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
2974         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
2975         config/mips/mips-protos.h, config/mips/mips.c,
2976         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
2977         config/mn10300/mn10300.h, config/mn10300/predicates.md,
2978         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
2979         spelling conventions.
2980
2981         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
2982         Follow spelling conventions.
2983
2984 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
2985
2986         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
2987         warn about C++0x compatibility.
2988
2989 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
2990
2991         * config/h8300/h8300.c, config/h8300/h8300.h,
2992         config/h8300/h8300.md: Follow spelling conventions.
2993
2994 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
2995
2996         PR middle-end/30667
2997         * combine.c (try_combine): Do not substitute source operand
2998         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
2999
3000 2007-02-03  Jan Hubicka  <jh@suse.cz>
3001
3002         PR gcov-profile/30650
3003         * value-prof.c (stringop_block_profile): Fix handling of size counter;
3004         do not divide by zero for never executed counters.
3005         (tree_find_values_to_profile): Fix counters.
3006         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
3007
3008 2007-02-03  Ian Lance Taylor  <iant@google.com>
3009
3010         * lower-subreg.c (simple_move_operand): New static function,
3011         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
3012         operands.
3013         (simple_move): Call simple_move_operand.
3014         (find_decomposable_subregs): Add special handling of MEMs.
3015         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
3016         meaning of return value.  If we see a hard register, test whether
3017         it can store a word_mode value.  Change all callers.
3018
3019 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3020
3021         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
3022         ftrapv insns and expanders.
3023         (subdi3): Change define_expand operand 1 to arith11_operand, and
3024         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
3025         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
3026         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
3027         respectively.
3028
3029         PR middle-end/30174
3030         * varasm.c (notice_global_symbol): Treat global objects as weak when
3031         flag_shlib is true.
3032
3033 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3034
3035         * emit-rtl.c (dconstpi): Delete.
3036         (dconstsqrt2): New.
3037         (init_emit_once): Delete dconstpi and init dconstsqrt2.
3038         * real.h (dconstpi): Delete.
3039         (dconstsqrt2): New.
3040         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
3041         (fold_builtin_hypot): Likewise.
3042
3043 2007-02-03  Tom Tromey  <tromey@redhat.com>
3044
3045         PR driver/30246
3046         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
3047         -gcoff3, -gxcoff3, -gvms3 implies -dD.
3048
3049 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
3050
3051         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
3052         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
3053         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
3054         config/rs6000/cell.md, config/rs6000/darwin.h,
3055         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
3056         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
3057         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
3058         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
3059         typos.  Follow spelling conventions.
3060         * doc/invoke.texi: Follow spelling conventions.
3061
3062 2007-02-03  Roger Sayle  <roger@eyesopen.com>
3063
3064         * simplify-rtx.c (simplify_relational_operation_1): Implement some
3065         canonicalization transformations that attempt to simplify integer
3066         constant comparisons to become comparisons against zero.
3067
3068 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3069
3070         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
3071         fabs(x)*sqrt(2).
3072         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
3073         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
3074
3075 2007-02-02  Mike Stump  <mrs@apple.com>
3076
3077         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
3078         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
3079         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
3080         generate a branch island.
3081
3082 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
3083
3084         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
3085         (xtensa_legitimate_address_p): New.
3086         (xtensa_legitimize_address): New.
3087         (xtensa_output_addr_const_extra): New.
3088         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
3089         (BASE_REG_P): New.
3090         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
3091         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
3092         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
3093         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
3094         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
3095         (xtensa_legitimize_address): New.
3096         (xtensa_output_addr_const_extra): New.
3097
3098 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
3099
3100         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
3101
3102 2007-02-02  Ian Lance Taylor  <iant@google.com>
3103
3104         * expmed.c (expand_divmod): Add comment.
3105
3106 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
3107
3108         * emit-rtl.c (renumber_insns): Remove.
3109         * flags.h: Remove the extern for flag_renumber_insns.
3110         * rtl.h: Remove the prototype for renumber_insns.
3111         * toplev.c (flag_renumber_insns): Remove.
3112
3113 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
3114
3115         Revert for x86 darwin:
3116         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
3117
3118         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
3119         code before the following patch under TARGET_MACHO.
3120         (ix86_function_value_regno_p): Likewise.
3121
3122 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3123
3124         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
3125         COMPLEX_EXPR.
3126
3127 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
3128
3129         PR target/29682
3130         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
3131         general or fp registers.  Add comments.
3132         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
3133
3134 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
3135
3136         * pointer-set.c (insert_aux): Only return insertion slot.
3137         (pointer_set_insert): Adjust.
3138         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
3139         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
3140         pointer_map_traverse): New.
3141         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
3142         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
3143         pointer_map_contains, pointer_map_traverse): Declare.
3144
3145 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
3146
3147         PR middle-end/30473
3148         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
3149         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
3150
3151 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
3152
3153         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
3154
3155         (struct _dep): New type.
3156         (dep_t): New typedef.
3157         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
3158         (DEP_STATUS): New access macro.  The macro with the same name was
3159         renamed to DEP_LINK_STATUS.
3160         (dep_init): Declare function
3161
3162         (struct _dep_link): New type.
3163         (dep_link_t): New typedef.
3164         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
3165         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
3166         (DEP_LINK_STATUS): New macro.
3167         (debug_dep_links): New debug function.
3168
3169         (struct _deps_list): New type.
3170         (deps_list_t): New typedef.
3171         (DEPS_LIST_FIRST): New access macro.
3172         (FOR_EACH_DEP_LINK): New cycle macro.
3173         (create_deps_list, free_deps_list, delete_deps_list): Declare
3174         functions.
3175         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
3176         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
3177         (copy_deps_list_change_con): Ditto.
3178
3179         (move_dep_link): Declare function.
3180
3181         (struct _dep_node): New type.
3182         (dep_node_t): New typedef.
3183         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
3184
3185         (struct haifa_insn_data.back_deps): New field to hold backward
3186         dependencies of the insn.
3187         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
3188         to deps_list_t.
3189         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
3190         Change its type to deps_list_t.
3191         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
3192         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
3193         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
3194
3195         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
3196
3197         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
3198
3199         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
3200         all callers.
3201         (dep_cost): Declare.
3202
3203         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
3204         (ds_to_dk, dk_to_ds): New functions.
3205
3206         (init_dep_1): New static function.
3207         (init_dep): New function.
3208         (copy_dep): New static function.
3209
3210         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
3211         functions.
3212         (detach_dep_link): New static function.
3213         (move_dep_link): New function.
3214
3215         (dep_links_consistent_p, dump_dep_links): New static functions.
3216         (debug_dep_links): New debugging function.
3217
3218         (deps_obstack, dl_obstack, dn_obstack): New static variables.
3219
3220         (alloc_deps_list, init_deps_list): New static functions.
3221         (create_deps_list): New function.
3222         (clear_deps_list): New static function.
3223         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
3224         (deps_list_consistent_p, dump_deps_list): New static functions.
3225         (debug_deps_list): New function.
3226         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
3227         functions.
3228         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
3229
3230         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
3231         use new scheduler dependencies lists.
3232         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
3233         (sched_analyze): Ditto.  Initialize dependencies lists.
3234         (add_forw_dep, compute_forward_dependences): Update to use new
3235         scheduler dependencies lists.
3236
3237         (init_dependency_caches): Init deps_obstack.
3238         (free_dependency_caches): Free deps_obstack.
3239
3240         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
3241         new scheduler dependencies lists.
3242         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
3243         (add_back_forw_dep, delete_back_forw_dep): Ditto.
3244
3245         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
3246         Update to use new scheduler dependencies lists.
3247         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
3248         (debug_dependencies): Ditto.
3249         (schedule_region): Update comments.
3250
3251         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
3252         scheduler dependencies lists.
3253         (schedule_ebb): Update comments.
3254
3255         * rtl.def (DEPS_LIST): Remove.
3256
3257         * lists.c (unused_deps_list): Remove.
3258         (free_list): Update assertions.
3259
3260         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
3261         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
3262
3263         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
3264         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
3265
3266         * haifa-sched.c (comments): Update.
3267         (insn_cost1): Remove.  Inline the code into insn_cost ().
3268         (insn_cost): Update to use new scheduler dependencies lists.  Move
3269         processing of the dependency cost to dep_cost ().
3270         (dep_cost): New function.  Use it instead of insn_cost () when
3271         evaluating cost of the dependency.  Use compatible interface to
3272         interact with the target.
3273         (priority): Update to use new scheduler dependencies lists.
3274         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
3275         with greater number of insns that depend on the insn.
3276         (schedule_insn): Update to use new scheduler dependencies lists.  Add
3277         code to free backward dependencies lists.  Inline and optimize code
3278         from resolve_dep () - see PR28071.
3279         (ok_for_early_queue_removal): Update to use new scheduler dependencies
3280         lists.  Update call to targetm.sched.is_costly_dependence hook.
3281
3282         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
3283         scheduler dependencies lists.
3284
3285         (resolve_dep): Remove.  Move the logic to schedule_insn ().
3286         (init_h_i_d): Initialize dependencies lists.
3287
3288         (process_insn_depend_be_in_spec): Rename to
3289         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
3290         dependencies lists.
3291         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
3292         Update to use new scheduler dependencies lists.
3293         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
3294
3295         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
3296         new scheduler dependencies lists.
3297         (build_intra_loop_deps): Ditto.
3298
3299         * target.h (struct _dep): Declare to use in
3300         gcc_target.sched.is_costly_dependence.
3301         (struct gcc_target.sched.adjust_cost): Fix typo.
3302         (struct gcc_target.sched.is_costly_dependence): Change signature to use
3303         single dep_t parameter instead of an equivalent triad.
3304         (struct gcc_target.sched.adjust_cost_2): Remove.
3305
3306         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
3307
3308         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
3309
3310         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
3311         documentation.
3312         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
3313
3314         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
3315         (REG_DEP_TRUE): Document.
3316
3317         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
3318         Change signature to correspond to the targetm.sched.adjust_cost hook.
3319         Update use in TARGET_SCHED_ADJUST_COST_2.
3320         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
3321         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
3322         new scheduler dependencies lists.
3323         (ia64_gen_check): Ditto.
3324
3325         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
3326         dependencies lists.
3327
3328         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
3329         signature to correspond to the targetm.sched.is_costly_dependence hook.
3330         (is_costly_group): Update to use new scheduler dependencies lists.
3331
3332         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
3333         instead of INSN_COST () macro.
3334
3335 2007-02-01  Ian Lance Taylor  <iant@google.com>
3336
3337         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
3338
3339 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
3340
3341         * pa.md (tp_load): Correct mfctl instruction syntax.
3342
3343 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
3344
3345         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
3346         altivec_padding_size calculation on AIX.  Improve comment, add
3347         assert to verify that it's right.
3348
3349         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
3350         64-bit.
3351
3352 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
3353
3354         PR inline-asm/28686
3355         * global.c (global_alloc): Add mising initialization of
3356         ELIMINABLE_REGSET.
3357
3358 2007-02-01  Roger Sayle  <roger@eyesopen.com>
3359
3360         * alias.c (init_alias_analysis): Correct whitespace.
3361         * bb-reorder.c (fix_edges_for_rarely_executed_code,
3362         partition_hot_cold_basic_blocks): Likewise.
3363         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
3364         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
3365         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
3366         fold_builtin_snprintf_chk, fold_builtin_printf,
3367         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
3368         do_mpfr_arg3, do_mpfr_sincos): Likewise.
3369         * cfgcleanup.c (cleanup_cfg): Likewise.
3370         * cfgexpand.c (tree_expand_cfg): Likewise.
3371         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
3372         * function.c (get_next_funcdef_no): Likewise.
3373         * gengtype.c (main): Likewise.
3374         * genmodes.c (main): Likewise.
3375         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
3376         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
3377         * ifcvt.c (noce_emit_move_insn): Likewise.
3378         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
3379         Likewise.
3380         * stor-layout.c (get_best_mode): Likewise.
3381         * tree-ssa-loop-niter.c (get_val_for): Likewise.
3382         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
3383         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
3384         perform_var_substitution, solve_graph): Likewise.
3385         * tree-vrp.c (vrp_finalize): Likewise.
3386
3387 2007-02-01  Ian Lance Taylor  <iant@google.com>
3388
3389         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
3390         high part of a paradoxical subreg, return a constant zero.
3391
3392 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
3393
3394         * toplev.c (lang_dependent_init): Call init_set_costs.
3395         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
3396
3397 2007-02-01  Richard Guenther  <rguenther@suse.de>
3398
3399         PR middle-end/30656
3400         * fold-const.c (fold_negate_expr): Allow negating a
3401         constant if overflow does not change.
3402
3403 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3404
3405         * doc/c-tree.texi (Expression trees): Improve markup.
3406         * doc/tm.texi (Register Classes, Addressing Modes)
3407         (Floating Point): Fix spacing after abbreviations.  Fix some
3408         typos.
3409
3410 2007-02-01  Ben Elliston  <bje@au.ibm.com>
3411
3412         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
3413         * doc/contrib.texi: Likewise.