OSDN Git Service

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