OSDN Git Service

PR tree-optimization/34046
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-11-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
2
3         PR tree-optimization/34046
4         * cfg.c (update_bb_profile_for_threading): Avoid the division for the
5         scaling if the old probability is greater than the new base.
6
7 2007-11-14  Sebastian Pop  <sebastian.pop@amd.com>
8
9         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Remove
10         unused edges after loop duplication.
11
12 2007-11-14  Uros Bizjak  <ubizjak@gmail.com>
13
14         * config/i386/i386.h (TARGET_CPU_DEFAULT_*): Substitute with ...
15         (enum target_cpu_default): ... this enum.
16         (TARGET_CPU_DEFAULT_NAMES): Remove macro.  Move initializer to ...
17         * config/i386/i386.c (override_options): ... here.
18         * config/i386/i386-interix.h (TARGET_CPU_DEFAULT): Use
19         TARGET_CPU_DEFAULT_i486.
20
21 2007-11-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
22
23         * global.c (rest_of_handle_global_alloc): Fix comment typos.
24         * config/sh/sh.c (sh_rtx_costs): Likewise.
25         * ChangeLog: Likewise.
26
27 2007-11-13  Sebastian Pop  <sebastian.pop@amd.com>
28
29         * tree-chrec.h (build_polynomial_chrec): RHS of a chrec
30         should not be of pointer type.
31
32 2007-11-13  Michael Meissner  <michael.meissner@amd.com>
33
34         * config/i386/i386.c (ix86_sse5_valid_op_p): Put type on separate
35         line.
36
37 2007-11-13  Sterling Augustine  <sterling@tensilica.com>
38             Bob Wilson  <bob.wilson@acm.org>
39         
40         * config/xtensa/unwind-dw2-xtensa.c: New.
41         * config/xtensa/unwind-dw2-xtensa.h: New.
42         * config/xtensa/xtensa.h (MUST_USE_SJLJ_EXCEPTIONS): Remove.
43         (DWARF2_UNWIND_INFO): Remove.
44         (DWARF_FRAME_REGISTERS): Define.
45         (EH_RETURN_DATA_REGNO): Define.
46         * config/xtensa/xtensa.md (UNSPECV_EH_RETURN): Define.
47         (eh_return): New.
48         * config/xtensa/t-xtensa (LIB2ADDEH): Define.
49         
50 2007-11-13  Jakub Jelinek  <jakub@redhat.com>
51
52         * doc/invoke.texi: Fix description of -fsched-stalled-insns=0,
53         -fsched-stalled-insns.
54
55         PR tree-optimization/34063
56         * tree-chrec.c (chrec_evaluate): Put CHREC_LEFT based argument
57         as first chrec_fold_plus operand rather than second.
58
59 2007-11-13  Diego Novillo  <dnovillo@google.com>
60
61         PR tree-optimization/33870
62         * tree.h (strcut tree_memory_tag): add field unpartitionable.
63         remove field in_nested_struct.
64         (struct tree_struct_field_tag): add field nesting_level.
65         (sft_in_nested_struct): remove.
66         (sft_nesting_level): define.
67         (sft_unpartitionable_p): define.
68         * tree-ssa-alias.c (mem_sym_score): if mp->var is not
69         partitionable, return long_max.
70         (compute_memory_partitions): do not partition sfts marked
71         unpartitionable.
72         (create_sft): add argument nesting_level.  set
73         sft_nesting_level with it.  update all users.
74         (create_overlap_variables_for): show nesting level.
75         * tree-dfa.c (dump_subvars_for): likewise.
76         (dump_variable): likewise.
77         show whether the sft is partitionable or not.
78         * tree-flow.h (struct fieldoff): remove field
79         in_nested_struct.
80         add field nesting_level.
81         * tree-ssa-structalias.c (struct variable_info): remove
82         field in_nested_struct.
83         (push_fields_onto_fieldstack): add argument
84         nesting_level.  update all users.
85         update documentation.
86         update pair->nesting_level with nesting_level.
87         make recursive calls with nesting_level + 1.
88         (set_uids_in_ptset): if an sft is added to the points-to
89         set, mark it as unpartitionable.
90         * tree-ssa-operands.c (ref_nesting_level): new.
91         (add_vars_for_offset): call it.
92         add argument full_ref.  update
93         callers.
94         if var is inside a nested structure and the nesting level
95         of full_ref is lower than the nesting level of var,
96         adjust offset by the offset of var.
97
98 2007-11-13  Victor Kaplansky  <victork@il.ibm.com>
99
100         PR tree-optimization/32582
101         * Makefile.in (CRTSTUFF_CFLAGS): Add -fno-tree-vectorize
102
103 2007-11-12  Danny Smith  <dannysmith@users.sourceforge.net>
104
105         * doc/extend.texi (dllimport): Document that pointers to dllimport'd
106         functions can be used as constant.
107
108 2007-11-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
109
110         PR rtl-optimization/34035
111         * cse.c (cse_cfg_altered): New global variable.
112         (cse_jumps_altered): Make boolean.
113         (recorded_label_ref): Likewise.
114         (cse_insn): Adjust for above changes.
115         (cse_extended_basic_block): Likewise.  Set cse_cfg_altered
116         if dead edges have been purged.
117         (cse_main): Change return value specification and adjust code.
118         (rest_of_handle_cse): Adjust for above change.
119         (rest_of_handle_cse2): Likewise.
120         * gcse.c (rest_of_handle_gcse): Likewise.
121
122 2007-11-12  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
123             Michael Meissner  <michael.meissner@amd.com>
124
125         * config/i386/i386.md (sse5_setcc<mode>): Use <ssemodefsuffix> to
126         get the appropriate suffix for the coms* instruction.
127         (sse5_pcmov_<mode>): Restrict operands of pcmov
128         for scalar case to be only xmm registers and not memory.
129
130         * config/i386/sse.md (sse5_pcmov_<mode>): Correct the operand
131         constraints to follow the mnemonics for the pcmov instruction   
132
133 2007-11-12  Richard Sandiford  <rsandifo@nildram.co.uk>
134
135         PR target/34042
136         * config/mips/mips.c (mips_return_fpr_single): New function.
137         (mips_function_value): Use it when returning single-field
138         aggregates in FPRs.
139         (mips_expand_call): Handle the PARALLELs created by
140         mips_return_fpr_single.
141
142 2007-11-12  Richard Guenther  <rguenther@suse.de>
143
144         PR middle-end/34070
145         * fold-const.c (fold_binary): If testing for non-negative
146         operands with tree_expr_nonnegative_warnv_p make sure to
147         use op0 which has all (sign) conversions retained.
148
149 2007-11-12  Richard Guenther  <rguenther@suse.de>
150
151         PR middle-end/34027
152         * fold-const.c (fold_binary): Fold n - (n / m) * m to n % m.
153         (fold_binary): Fold unsinged FLOOR_DIV_EXPR to TRUNC_DIV_EXPR.
154
155 2007-11-12  Ira Rosen  <irar@il.ibm.com>
156
157         PR tree-optimization/33953
158         * tree-vect-transform.c (vectorizable_operation): In case of SLP,
159         allocate vec_oprnds1 according to the number of created vector
160         statements. In case of shift with scalar argument, store scalar operand
161         for every vector statement to be created for the SLP node. Fix a
162         comment.
163
164 2007-11-10  Steven Bosscher  <stevenb.gcc@gmail.com>
165
166         * gcse.c (CUID_INSN): Remove.
167         (cuid_insn): Ditto.
168         (alloc_gcse_mem): Don't allocate cuid_insn.
169         (free_gcse_mem): Don't free cuid_insn.
170
171 2007-11-10  Jakub Jelinek  <jakub@redhat.com>
172
173         PR fortran/34020
174         * gimplify.c (goa_lhs_expr_p): Inside INDIRECT_REF handle unshared
175         nops.
176
177         PR middle-end/34018
178         * tree-inline.h (copy_body_data): Add regimplify field.
179         * tree-inline.c (copy_body_r): Set id->regimplify to true
180         if an TREE_INVARIANT ADDR_EXPR is no longer invariant after
181         substitutions.
182         (copy_bb): Clear id->regimplify before walk_tree, if it is
183         set afterwards, regimplify the whole statement.
184
185         PR tree-optimization/33680
186         * tree-data-ref.c (split_constant_offset) <case ADDR_EXPR>: Punt
187         if the added cast involves variable length types.
188
189 2007-11-09  Alexander Monakov  <amonakov@ispras.ru>
190             Maxim Kuvyrkov  <maxim@codesourcery.com>
191
192         * sched-deps.c (sched_analyze_insn): Use MOVE_BARRIER
193         instead of TRUE_BARRIER for jumps.  Add register dependencies
194         even when reg_pending_barrier is set.
195
196 2007-11-09  Alexander Monakov  <amonakov@ispras.ru>
197
198         * haifa-sched.c (haifa_classify_insn): Rename to ...
199         (haifa_classify_rtx): ...  this.  Improve handling of COND_EXECs,
200         handle PARALLELs by recursing.  Use it ...  
201         (haifa_classify_insn): ...  here.  Reimplement.
202
203 2007-11-09  Richard Guenther  <rguenther@suse.de>
204
205         * bitmap.h (bitmap_single_bit_set_p): Declare.
206         * bitmap.c (bitmap_single_bit_set_p): New function.
207         * tree-ssa-alias.c (add_may_alias_for_new_tag): Use it.
208         (maybe_create_global_var): Use bitmap_empty_p.
209
210 2007-11-09  Paolo Bonzini  <bonzini@gnu.org>
211             Jakub Jelinek  <jakub@redhat.com>
212
213         PR rtl-optimization/34012
214         * fwprop.c (try_fwprop_subst): Do not replace if the new
215         SET_SRC has a higher cost than the old one.
216
217 2007-11-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
218
219         PR rtl-optimization/33732
220         * reload.c (push_reload): Check that the REG_DEAD note was referring
221         to a hardreg or to a pseudo that has been assigned exactly one hardreg
222         before considering it in order to select the reload register.
223         (combine_reloads): Likewise.
224         (find_dummy_reload): Likewise.
225
226 2007-11-09  Richard Guenther  <rguenther@suse.de>
227
228         * tree-flow.h (struct ptr_info_def): Make escape_mask a
229         ENUM_BITFIELD.
230         (struct ptr_info_def): Likewise.
231         (enum escape_type): Also use bit zero.
232
233 2007-11-09  Richard Guenther  <rguenther@suse.de>
234
235         PR tree-optimization/33604
236         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
237         Disregard changes in CV qualifiers of pointed to types for
238         forward propagating ADDR_EXPRs.
239         * tree-ssa-ccp.c (fold_stmt_r): Preserve volatileness of the original
240         expression.
241
242 2007-11-09  Richard Sandiford  <rsandifo@nildram.co.uk>
243
244         * dse.c (find_shift_sequence): Always choose an integer mode for
245         new_mode.
246         (replace_read): Require both the read and store mode to be
247         integer ones.  Remove a then-redundant FLOAT_P check.
248
249 2007-11-08  Richard Guenther  <rguenther@suse.de>
250
251         * tree-dfa.c (remove_referenced_var): If removing a
252         variable which has subvars, also remove those from
253         the referenced vars.  Do not create a variable annotation.
254
255 2007-11-08  Bob Wilson  <bob.wilson@acm.org>
256
257         * config/xtensa/xtensa.c (xtensa_expand_prologue): Remove first
258         argument for gen_entry calls.
259         * config/xtensa/xtensa.md: Add new "entry" value to "type" attribute.
260         (entry): Use the new attribute value.  Remove unused first operand.
261
262 2007-11-08  Tom Tromey  <tromey@redhat.com>
263
264         * c-parser.c (c_parser_translation_unit): Use location in error.
265         (c_parser_external_declaration): Likewise.
266         (c_parser_declaration_or_fndef): Likewise.
267         (c_parser_enum_specifier): Likewise.
268         (c_parser_struct_or_union_specifier): Likewise.
269         (c_parser_struct_declaration): Likewise.
270         (c_parser_typeof_specifier): Likewise.
271         (c_parser_parms_list_declarator): Likewise.
272         (c_parser_asm_string_literal): Likewise.
273         (c_parser_braced_init): Likewise.
274         (c_parser_initelt): Likewise.
275         (c_parser_compound_statement_nostart): Likewise.
276         (c_parser_statement_after_labels): Likewise.
277         (c_parser_do_statement): Likewise.
278         (c_parser_asm_statement): Likewise.
279         (c_parser_conditional_expression): Likewise.
280         (c_parser_unary_expression): Likewise.
281         (c_parser_sizeof_expression): Likewise.
282         (c_parser_postfix_expression): Likewise.
283         (c_parser_postfix_expression_after_paren_type): Likewise.
284         (c_parser_objc_class_instance_variables): Likewise.
285         (c_parser_objc_method_definition): Likewise.
286         (c_parser_objc_methodprotolist): Likewise.
287         (c_parser_pragma): Likewise.
288         (c_parser_omp_clause_num_threads): Likewise.
289         (c_parser_omp_clause_schedule): Likewise.
290         (c_parser_omp_all_clauses): Likewise.
291         (c_parser_omp_sections_scope): Likewise.
292         (c_parser_label): Use location of label, not colon.
293
294 2007-11-08  Danny Smith  <dannysmith@users.sourceforge.net>
295
296         PR target/33774
297         * config/i386/cygming.h (BIGGEST_FIELD_ALIGNMENT): Define only if
298         IN_TARGET_LIBS.
299
300 2007-11-07  Kenneth Zadeck <zadeck@naturalbridge.com>
301
302         PR middle-end/33826
303         * ipa-pure-const.c (static_execute): Added code to keep recursive
304         functions from being marked as pure or const.
305         * ipa-utils.c (searchc): Fixed comment.
306                 
307 2007-11-08  Tom Tromey  <tromey@redhat.com>
308
309         * common.opt (fshow-column): Default to 0.
310         * configure: Rebuilt.
311         * configure.ac (--enable-mapped-location): Default to 'yes'.
312
313 2007-11-07  Kenneth Zadeck <zadeck@naturalbridge.com>
314
315         * common.opt: Add pointer to doc/options.texi.
316         * doc/invoke.texi (-fdse, -fdce, -fauto-inc-dec, -fipa-pure-const,
317         -fipa-reference): Add or correct doc.  Sorted options list for -Os
318         -O, -O2.
319
320 2007-11-07  Bernhard Fischer  <aldot@gcc.gnu.org>
321
322         PR target/16350
323         * config.gcc: For arm*b-* define TARGET_BIG_ENDIAN_DEFAULT.
324         * config/arm/linux-elf.h (TARGET_ENDIAN_DEFAULT): Define based on
325         TARGET_BIG_ENDIAN_DEFAULT.  Use for MULTILIB_DEFAULTS.
326         (TARGET_DEFAULT): Set according to TARGET_ENDIAN_DEFAULT.
327         (LINUX_TARGET_LINK_SPEC): Pass -mlittle-endian on to the assembler.
328         * config/arm/linux-eabi.h (TARGET_LINKER_EMULATION): Set according
329         to TARGET_BIG_ENDIAN_DEFAULT.
330         (SUBTARGET_EXTRA_LINK_SPEC): Likewise.
331         * config/arm/bpabi.h (TARGET_DEFAULT_MASK): Set according
332         to TARGET_BIG_ENDIAN_DEFAULT.
333
334 2007-11-07  Diego Novillo  <dnovillo@google.com>
335
336         * tree.h (struct tree_struct_field_tag): Move field
337         in_nested_struct ...
338         (struct tree_memory_tag): ... here.
339
340 2007-11-07  Diego Novillo  <dnovillo@google.com>
341
342         PR 33870
343         * tree.h (struct tree_struct_field_tag): Add field in_nested_struct.
344         (SFT_IN_NESTED_STRUCT): Define.
345         * tree-dfa.c (dump_subvars_for): Show offset of each
346         sub-var.
347         * tree-flow.h (struct fieldoff): Add field in_nested_struct.
348         * tree-ssa-structalias.c (struct variable_info): Likewise.
349         (push_fields_onto_fieldstack): If OFFSET is positive,
350         set in_nested_struct.
351         (create_variable_info_for): Copy setting of
352         in_nested_struct from the field offset object.
353         (set_uids_in_ptset): Set SFT_IN_NESTED_STRUCT from the
354         variable info object.
355         * tree-ssa-operands.c (add_vars_for_offset): If VAR
356         belongs to a nested structure, adjust OFFSET by
357         SFT_OFFSET(VAR).
358
359 2007-11-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
360
361         PR rtl-optimization/33737
362         * cfgcleanup.c (try_crossjump_to_edge): Add count and frequency of
363         target block after computing the probabilities of outgoing edges.
364         Cap the frequency to BB_FREQ_MAX.
365         * tree-ssa-threadupdate.c (redirect_edges): Also adjust count and
366         frequency of the basic block if it has been reused.
367
368 2007-11-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
369
370         PR rtl-optimization/33822
371         * rtl.h (REG_OFFSET): Fix comment.
372         * var-tracking.c (INT_MEM_OFFSET): New macro.
373         (var_mem_set): Use it.
374         (var_mem_delete_and_set): Likewise.
375         (var_mem_delete): Likewise.
376         (same_variable_part_p): Likewise.
377         (vt_get_decl_and_offset): Likewise.
378         (offset_valid_for_tracked_p): New predicate.
379         (count_uses): Do not track locations with invalid offsets.
380         (add_uses): Likewise.
381         (add_stores): Likewise.
382
383 2007-11-07  Tom Tromey  <tromey@redhat.com>
384
385         * Makefile.in (tree-ssa-structalias.o): Depend on $(FUNCTION_H)
386         (BASIC_BLOCK_H): Add vec.h, $(FUNCTION_H).
387
388 2007-11-07  Dmitry Zhurikhin  <zhur@ispras.ru>
389             Andrey Belevantsev  <abel@ispras.ru>
390
391         * modulo-sched.c (sms_order_nodes, permute_partial_schedule,
392         generate_prolog_epilog, duplicate_insns_of_cycles): Fix prototypes.
393         (calculate_order_params, sms_order_nodes): New parameter pmax_asap.
394         Save calculated max_asap in it.         
395         (sms_schedule): Calculate maxii using max_asap.
396
397 2007-11-07  Andreas Krebbel  <krebbel1@de.ibm.com>
398
399         * doc/invoke.texi: Replace rs6000 dfp switches -mdfp/-mno-dfp
400         with -mhard-dfp/-mno-hard-dfp.
401
402 2007-11-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
403             Jakub Jelinek  <jakub@redhat.com>
404
405         PR middle-end/33670
406         * haifa-sched.c (check_sched_flags): Remove.
407         (sched_init): Don't call it.
408
409 2007-11-06  Diego Novillo  <dnovillo@google.com>
410
411         * tree-flow.h (struct fieldoff): Reformat comment.
412         Document fields.
413         * tree-ssa-operands.c: Tidy top-level comments.
414         (add_vop): Likewise.
415         (add_vars_for_offset): Tidy parameter formatting..
416         (get_addr_dereference_operands): Likewise.
417         (get_indirect_ref_operands): Likewise.
418         (get_expr_operands) <OMP_ATOMIC_LOAD>: Reformat.
419         <OMP_ATOMIC_STORE>: Likewise.
420
421 2007-11-06  Rask Ingemann Lambertsen  <rask@sygehus.dk>
422
423         PR target/32787
424         * config/i386/driver-i386.c: Test for __GNUC__ instead of
425         GCC_VERSION which is always defined.
426
427 2007-11-06  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
428
429         PR target/30961
430         * reload1.c (find_reloads): Also check in_reg when handling a
431         simple move with an input reload and a destination of a hard
432         register.
433
434 2007-11-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
435
436         * config/m68k/m68k.c (sched-int.h, insn-codes.h): New includes.
437         (TARGET_SCHED_ADJUST_COST, TARGET_SCHED_VARIABLE_ISSUE,
438         TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_FINISH_GLOBAL,
439         TARGET_SCHED_INIT, TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
440         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Redefine.
441         (m68k_sched_attr_type2): New function.
442         (sched_adjust_cost_state): New static variable.
443         (m68k_sched_adjust_cost): New static function implementing
444         scheduler hook.
445         (sched_ib_size, sched_ib_filled, sched_ib_insn, sched_mem_unit_code):
446         New static variables.
447         (m68k_sched_variable_issue): New static function implementing
448         scheduler hook.
449         (sched_dump_class_def, sched_dump_class_func_t): New typedefs.
450         (sched_dump_split_class): New static function.
451         (sched_dump_dfa_guess_unit_code, sched_dump_dfa_state): New static
452         variables.
453         (sched_dump_dfa_class, m68k_sched_dump): New static function.
454         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
455         m68k_sched_md_init, m68k_sched_dfa_pre_advance_cycle,
456         m68k_sched_dfa_post_advance_cycle): New static functions implementing
457         scheduler hooks.
458
459         * config/m68k/m68k.h (m68k_sched_attr_type2): Declare.
460         (CPU_UNITS_QUERY): Define.
461
462         * config/m68k/cf.md: New file.
463         * config/m68k/m68.md (cf.md): New include.
464
465 2007-11-06  Tom Tromey  <tromey@redhat.com>
466
467         PR c++/32256, PR c++/32368:
468         * function.c (saved_in_system_header): New global.
469         (push_cfun): Save in_system_header.
470         (pop_cfun): Restore in_system_header.
471         (push_struct_function): Save in_system_header.
472
473 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
474
475         PR c++/33977
476         PR c++/33886
477         * c-common.c (c_build_qualified_type): Moved to c-typeck.c.
478         (complete_array_type): Set canonical type appropriately.
479         * c-typeck.c (c_build_qualified_type): Moved from c-common.c. The
480         C and C++ front ends now have different versions of this function,
481         because the C++ version needs to maintain canonical types here.
482
483 2007-11-04  Razya Ladelsky  <razya@il.ibm.com>
484         
485         * tree-parloops.c (reduction_info): Remove reduction_init field.
486         (initialize_reductions): Remove creation of the reduction_init variable.
487         (struct data_arg): Remove.
488         (add_field_for_reduction, create_stores_for_reduction): New functions.
489         (add_field_for_name): Remove reduction handling.
490         (separate_decls_in_loop): Call add_field_for_reduction,
491         create_stores_for_reduction.
492
493 2007-11-06  Jakub Jelinek  <jakub@redhat.com>
494
495         PR tree-optimization/33458
496         * tree-inline.c (copy_phis_for_bb): If PHI arg substitution creates
497         !is_gimple_val PHI argument, gimplify it and insert it on edge.
498
499         PR tree-optimization/33993
500         * tree-vect-transform.c (vect_get_constant_vectors): Use build_vector
501         rather than build_constructor_from_list if all list values are
502         constants.
503         (get_initial_def_for_induction): Use build_vector instead of
504         build_constructor_from_list.
505
506 2007-11-05  Mark Mitchell  <mark@codesourcery.com>
507
508         PR target/33579
509         * tree.h (DECL_INIT_PRIORITY): Do not require
510         DECL_HAS_INIT_PRIORITY_P.
511         (DECL_FINI_PRIORITY): Likewise.
512         * tree.c (decl_init_priority_lookup): Remove assert.
513         (decl_fini_priority_insert): Likewise.
514         * cgraphunit.c (static_ctors): Make it a VEC.
515         (static_dtors): Likewise.
516         (record_cdtor_fn): Adjust accordingly.
517         (build_cdtor): Generate multiple functions for each initialization
518         priority.
519         (compare_ctor): New function.
520         (compare_dtor): Likewise.
521         (cgraph_build_cdtor_fns): Sort the functions by priority before
522         calling build_cdtor.
523         (cgraph_build_static_cdtor): Put the priority in the function's
524         name.
525
526 2007-11-05  H.J. Lu  <hongjiu.lu@intel.com>
527
528         PR driver/32632
529         * common.opt: Add shared and pie.
530
531 2007-11-05  Bob Wilson  <bob.wilson@acm.org>
532
533         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Do not
534         replace references to virtual_stack_vars_rtx in goto_handler.
535
536 2007-11-05  Paul Brook  <paul@codesourcery.com>
537
538         * config.gcc (arm*-*-*): Set c_target_objs and cxx_target_objs.
539         * config/arm/arm.c (arm_lang_output_object_attributes_hook): New.
540         (arm_file_start): Don't set Tag_ABI_PCS_wchar_t.  Call
541         arm_lang_output_object_attributes_hook.
542         * config/arm/arm.h (arm_lang_output_object_attributes_hook): Declare.
543         (REGISTER_TARGET_PRAGMAS): Call arm_lang_object_attributes_init.
544         * config/arm/arm-protos.h (arm_lang_object_attributes_init): Add
545         prototype.
546         * config/arm/t-arm.c (arm.o): New rule.
547         * config/arm/arm-c.c: New file.
548
549 2007-11-05  Nick Clifton  <nickc@redhat.com>
550             Sebastian Pop  <sebastian.pop@amd.com>
551
552         PR tree-optimization/32540
553         PR tree-optimization/33922
554         * doc/invoke.texi: Document PARAM_MAX_PARTIAL_ANTIC_LENGTH.
555         * tree-ssa-pre.c: Include params.h.
556         (compute_partial_antic_aux): Use PARAM_MAX_PARTIAL_ANTIC_LENGTH
557         to limit the maximum length of the PA set for a given block.
558         * Makefile.in: Add a dependency upon params.h for tree-ssa-pre.c
559         * params.def (PARAM_MAX_PARTIAL_ANTIC_LENGTH): New parameter.
560
561 2007-11-05  Nathan Sidwell  <nathan@codesourcery.com>
562
563         * libgcc2.c (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
564         __fixunssfDI): Make return type unsigned.
565         * libgcc2.h (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
566         __fixunssfDI): Make return type unsigned.
567
568 2007-11-05  Jakub Jelinek  <jakub@redhat.com>
569
570         PR tree-optimization/33856
571         * tree-data-ref.c (get_references_in_stmt): Don't add
572         REFERENCE_CLASS_P trees to references vector if get_base_address
573         returns NULL on them.
574
575 2007-11-05  Alexandre Oliva  <aoliva@redhat.com>
576
577         * cfg.c (dump_cfg_bb_info): Update bb_bitnames to match enum.
578
579 2007-11-04  Andrew Pinski  <pinskia@gmail.com>
580
581         PR middle-end/32931
582         * fold-const.c (fold_binary <case EQ_EXPR>): Convert the inner type
583         for TRUTH_NOT_EXPR to type.
584
585 2007-11-04  Gerald Pfeifer  <gerald@pfeifer.com>
586
587         * doc/contrib.texi (Contributors): Add Manuel Lopez-Ibanez.
588
589 2007-11-04  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
590
591         PR fortran/10220
592         * dwarf2out.c (add_calling_convention_attribute): Change
593         second argument. Set calling convention to DW_CC_program for
594         Fortran main program.
595         (gen_subprogram_die): Adjust to new prototype for
596         add_calling_convention_attribute.
597
598 2007-11-03  Dorit Nuzman  <dorit@il.ibm.com>
599
600         PR tree-optimization/33987
601         * tree-vect-transform.c (get_initial_def_for_reduction): Fix assert.
602         Fix indentation.
603         (vectorizable_reduction): Add type check.
604
605 2007-11-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
606
607         PR c/29062
608         * c-parser.c (c_parser_statement_after_labels): Error if a
609         declaration is parsed after a label.
610         
611 2007-11-03  Daniel Jacobowitz  <dan@codesourcery.com>
612
613         PR debug/33921
614         * reorg.c (emit_delay_sequence): Do not clear the locator on
615         the jump instruction.
616
617 2007-11-03  Jakub Jelinek  <jakub@redhat.com>
618
619         PR middle-end/33670
620         * haifa-sched.c (ok_for_early_queue_removal): Don't walk out of the
621         current sched region.
622
623 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
624
625         * config/ia64/ia64.c (struct reg_write_state): Change into
626         unsigned short bitfields rather than unsigned int, decrease
627         first_pred to just 10 bits.
628         (rws_insn): Change into a bitmap or if not ENABLE_CHECKING
629         into two char array.
630         (rws_insn_set, rws_insn_test): New functions.
631         (in_safe_group_barrier): New variable.
632         (rws_update): Remove first argument, always set rws_sum array.
633         (rws_access_regno): Use rws_insn_set macro.  Only call rws_update
634         or update rws_sum if !in_safe_group_barrier, adjust rws_update
635         args.
636         (rtx_needs_barrier): Use rws_insn_test macro.
637         (safe_group_barrier_needed): Don't save/restore rws_sum array,
638         instead set/clear in_safe_group_barrier flag.
639
640 2007-11-02  Bob Wilson  <bob.wilson@acm.org>
641
642         * config/xtensa/xtensa.c (xtensa_expand_prologue): Put a
643         REG_FRAME_RELATED_EXPR note on the last insn that sets up the stack
644         pointer or frame pointer.
645         * config/xtensa/xtensa.h (DWARF_UNWIND_INFO): Delete.
646         (MUST_USE_SJLJ_EXCEPTIONS): Define.
647         (DWARF2_UNWIND_INFO): Define.
648         (INCOMING_RETURN_ADDR_RTX): Define.
649         (DWARF_FRAME_RETURN_COLUMN): Define.
650
651 2007-11-02  Tom Tromey  <tromey@redhat.com>
652
653         * varpool.c (dump_varpool): Use 'next', not 'next_needed' when
654         traversing pool.
655
656 2007-11-02  Diego Novillo  <dnovillo@google.com>
657
658         * langhooks.h (struct lang_hooks_for_callgraph): Remove third
659         argument from function pointer ANALYZE_EXPR.  Update all
660         users.
661         * cgraph.c (debug_cgraph_node): New.
662         (debug_cgraph): New.
663
664 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
665
666         PR rtl-optimization/33648
667         * cfgrtl.c (cfg_layout_split_edge): Initialize BB_PARTITION of
668         the newly created basic block.
669
670 2007-11-01  Richard Guenther  <rguenther@suse.de>
671
672         * ggc-page.c (extra_order_size_tab): Add bitmap_head size.
673
674 2007-11-01  Steven Bosscher  <stevenb.gcc@gmail.com>
675
676         PR rtl-optimization/33828
677         * gcse.c (compute_code_hoist_vbeinout): Fix order of computation
678         of VBEIN and VBEOUT.
679
680 2007-11-01  Eric Botcazou  <ebotcazou@libertysurf.fr>
681
682         * optabs.c (prepare_cmp_insn): Merge a couple of conditional blocks.
683         * sched-rgn.c (compute_trg_info): Zero 'el' local variable.
684         * tree-if-conv.c (process_phi_nodes): Zero 'cond' local variable.
685
686 2007-11-01  Nathan Sidwell  <nathan@codesourcery.com>
687
688         * gcc.c (getenv_spec_function): Escape the environment variable's
689         value.
690
691 2007-11-01  Janis Johnson  <janis187@us.ibm.com>
692
693         * doc/invoke.texi (Optimize Options): Under -fcse-follow-jumps,
694         show that CSE means common subexpression elimination.  Change wording
695         for -fsee and define LCM.  Remove capitalization of optimizations
696         for -ftree-reassoc, -ftree-pre, and -ftree-fre.
697
698 2007-11-01  Janis Johnson  <janis187@us.ibm.com>
699
700         PR testsuite/25352
701         * doc/sourcebuild.texi (Test Directives): Document that xfail
702         has no effect for dg-do except when dg-do-what is "run".
703
704 2007-11-01  Tom Tromey  <tromey@redhat.com>
705
706         * c-decl.c (grokdeclarator): Set decl source locations.
707         * c-parser.c (c_parser_enum_specifier): Set location.
708         (c_parser_struct_or_union_specifier): Likewise.
709
710 2007-11-01  Tom Tromey  <tromey@redhat.com>
711
712         * print-tree.c (print_node): Print column number.
713
714 2007-11-01  Jakub Jelinek  <jakub@redhat.com>
715
716         PR debug/33537
717         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
718         gen_decl_die): Use TREE_TYPE (TREE_TYPE (decl)) as type
719         rather than TREE_TYPE (decl) if DECL_BY_REFERENCE (decl).
720
721         PR rtl-optimization/33673
722         * gcse.c (cprop_jump): If a conditional jump has been optimized
723         into unconditional jump, make the remaining normal edge fallthru
724         and delete the jump insn.
725
726 2007-11-01  Ben Elliston  <bje@au.ibm.com>
727
728         * emit-rtl.c (set_reg_attrs_from_mem): Clarify function comment.
729         (set_mem_attrs_from_reg): Likewise.
730
731 2007-11-01  Michael Matz  <matz@suse.de>
732
733         PR tree-optimization/33961
734         * tree-ssa-phiopt.c (struct name_to_bb.store): New member.
735         (name_to_bb_hash, name_to_bb_eq): Consider and check it.
736         (add_or_mark_expr): New argument 'store', using it to search
737         the hash table.
738         (nt_init_block): Adjust calls to add_or_mark_expr.
739
740 2007-10-31  Jakub Jelinek  <jakub@redhat.com>
741
742         PR target/31507
743         * config/i386/i386.md (pushsf_rex64): Use X instead of < constraints
744         for the first push_operand.
745
746 2007-10-31  Revital Eres  <eres@il.ibm.com>
747
748         * config/rs6000/paired.md (sminv2sf3, smaxv2sf3, reduc_smax_v2sf,
749         reduc_smin_v2sf vec_interleave_highv2sf, vec_interleave_lowv2sf,
750         vec_extract_evenv2sf, vec_extract_oddv2sf, reduc_splus_v2sf,
751         movmisalignv2sf, vcondv2sf): New.
752         (UNSPEC_INTERHI_V2SF, UNSPEC_INTERLO_V2SF, UNSPEC_EXTEVEN_V2SF,
753         UNSPEC_EXTODD_V2SF): Define new constants.
754         * config/rs6000/rs6000-protos.h (paired_expand_vector_move,
755         paired_emit_vector_cond_expr): New.
756         * config/rs6000/rs6000-c.c (__PAIRED__): Add new builtin_define.
757         * config/rs6000/rs6000.c (paired_expand_vector_move,
758         paired_emit_vector_cond_expr, paired_emit_vector_compare):
759         New functions.
760         * config/rs6000/750cl.h (ASM_CPU_SPEC): Pass down -m750cl option.
761
762 2007-10-31  Sebastian Pop  <sebastian.pop@amd.com>
763
764         PR tree-optimization/32377
765         * tree-data-ref.c (compute_overlap_steps_for_affine_univar): Make it
766         work also for unknown number of iterations.
767         (analyze_subscript_affine_affine): Clean up.  Don't fail when the 
768         number of iterations is not known.
769
770 2007-10-31  Richard Guenther  <rguenther@suse.de>
771
772         PR middle-end/33779
773         * fold-const.c (extract_muldiv_1): Make sure to not introduce
774         new undefined integer overflow.
775         (fold_binary): Avoid useless conversion.
776
777 2007-10-31  Richard Sandiford  <rsandifo@nildram.co.uk>
778
779         PR target/33948
780         * config/mips/mips.c (mips_fpr_return_fields): Fix SCALAR_TYPE_P
781         check.
782
783 2007-10-31  Andreas Krebbel  <krebbel1@de.ibm.com>
784
785         * config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp.
786
787         * config/s390/s390.c: (override_options): Replace -mhard-dfp/-msoft-dfp
788         with -mhard-dfp/-mno-hard-dfp.
789         * config/s390/s390.opt: Likewise.
790         * config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT
791         definition.
792
793 2007-10-30  Janis Johnson  <janis187@us.ibm.com>
794
795         * tree-ssa.c (execute_update_addresses_taken): Initialize update_vops.
796
797 2007-10-30  Janis Johnson  <janis187@us.ibm.com>
798
799         * doc/invoke.texi (Option Summary): Add -fdce and -fdse to list of
800         optimization options.
801         (Optimize Options): Add -fdce and -fdse to the list of optimizations
802         enabled by -O.  Document -fdce and -fdse.
803
804 2007-10-30  Jakub Jelinek  <jakub@redhat.com>
805
806         PR c++/33709
807         * fold-const.c (fold_binary): If one argument is COMPOUND_EXPR,
808         convert second operand of COMPOUND_EXPR to the original type of
809         that argument.
810
811 2007-10-30  Richard Guenther  <rguenther@suse.de>
812
813         * tree-ssa-operands.c (add_vars_for_offset): Fix exit test
814         of loop adding SFTs as virtual operands.
815
816 2007-10-30  Richard Guenther  <rguenther@suse.de>
817
818         * Makefile.in (dse.o): Add $(OPTABS_H) and $(RECOG_H) dependencies.
819
820 2007-10-29  Dorit Nuzman  <dorit@il.ibm.com>
821
822         PR tree-optimization/32893
823         * tree-vectorize.c (vect_can_force_dr_alignment_p): Check
824         STACK_BOUNDARY instead of PREFERRED_STACK_BOUNDARY.
825
826 2007-10-29  Rask Ingemann Lambertsen  <rask@sygehus.dk>
827
828         * longlong.h (add_ssaaaa): Support Intel asm syntax in i386 and
829         x86_64 versions.
830         (sub_ddmmss): Likewise.
831         (umul_ppmm): Likewise.
832         (udiv_qrnnd): Likewise.
833
834 2007-10-29  Janis Johnson  <janis187@us.ibm.com>
835
836         PR testsuite/24841
837         * doc/sourcebuild.texi (Test Directives): Document that dg-require
838         directives must come before dg-additional-sources.
839
840 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
841
842         PR tree-optimization/33723
843         * c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or
844         MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source.
845
846 2007-10-29  Richard Sandiford  <rsandifo@nildram.co.uk>
847
848         PR tree-optimization/33614
849         * gimplify.c (gimplify_init_constructor): Gimplify vector constructors
850         if they can't be reduced to VECTOR_CSTs and aren't legitimate
851         initializer constants.
852
853 2007-10-29  Richard Guenther  <rguenther@suse.de>
854
855         PR tree-optimization/33870
856         * tree-ssa-operands.c (add_vars_for_offset): Remove mpt_vars parameter.
857         (add_virtual_operand): Do not recurse into MPTs looking for pointed-to
858         SFTs.
859
860 2007-10-29  Richard Guenther  <rguenther@suse.de>
861
862         * passes.c (init_optimization_passes): Exchange store_copy_prop
863         with copy_prop.
864         * tree-pass.h (pass_store_copy_prop): Remove.
865         * tree-ssa-copy.c (do_store_copy_prop): Remove.
866         (stmt_may_generate-copy): Do not handle store_copy_prop.
867         (get_copy_of_val): Likewise.
868         (set_copy_of_val): Likewise.
869         (copy_prop_visit_assignment): Likewise.
870         (copy_prop_visit_stmt): Likewise.
871         (copy_prop_visit_phi_node): Likewise.
872         (init_copy_prop): Likewise.
873         (execute_copy_prop): Likewise.
874         (do_copy_prop): Remove.
875         (gate_store_copy_prop): Likewise.
876         (store_copy_prop): Likewise.
877         (pass_store_copy_prop): Likewise.
878         (pass_copy_prop): Call execute_copy_prop.
879         * opts.c (decode_options): Do not set flag_tree_store_copy_prop.
880         * common.opt (ftree-store-copy-prop): Mark obsolete.
881         * doc/invoke.texi (ftree-store-copy-prop): Remove documentation.
882
883 2007-10-29  Ian Lance Taylor  <iant@google.com>
884
885         * ifcvt.c (noce_can_store_speculate_p): New static function.
886         (noce_process_if_block): Call it.
887         (if_convert): Remove recompute_dominance parameter.  Change all
888         callers.
889
890 2007-10-29  Richard Guenther  <rguenther@suse.de>
891
892         * tree-flow-inline.h (get_subvar_at): Use binary search.
893         (get_first_overlapping_subvar): New function to binary search
894         for the first overlapping subvar.
895         * tree-ssa-operands.c (add_vars_for_offset): Strip down to
896         just handle adding subvars for a pointed-to subvar.  Optimize
897         and use get_first_overlapping_subvar.
898         (add_vars_for_bitmap): Fold into single caller.
899         (add_virtual_operand): Streamline, inherit add_vars_for_bitmap
900         and non pointed-to bits of add_vars_for_offset.
901
902 2007-10-29  Revital Eres  <eres@il.ibm.com> 
903
904         * modulo-sched.c (sms_schedule): Add DF_UD_CHAIN problem.
905
906 2007-10-29  Razya Ladelsky  <razya@il.ibm.com>
907             Zdenek Dvorak  <ook@ucw.cz>
908
909         OMP_ATOMIC Changes,
910         reduction support for automatic parallelization.
911
912         * expr.c (expand_expr_real_1): Add cases for OMP_ATOMIC_LOAD,
913         OMP_ATOMIC_STORE.
914         * Makefile.in: Add dependencies to expr.o, tree-parloops.o, omp-low.o
915         * tree-pretty-print.c (dump_generic_node): Add OMP_ATOMIC_LOAD
916         and OMP_ATOMIC_STORE.
917         * tree.h (OMP_DIRECTIVE_P): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
918         * gimple-low.c (lower_stmt): Same.
919         * gimplify.c (gimplify_expr): Same.
920         (gimplify_omp_atomic_fetch_op, gimplify_omp_atomic_pipeline,
921         gimplify_omp_atomic_mutex): Remove.
922         (gimplify_omp_atomic): Change it to simply gimplify the
923         statement instead of expanding it.
924         * omp-low.c: Add includes to optabs.h, cfgloop.h.
925         (expand_omp_atomic, expand_omp_atomic_pipeline,
926         goa_stabilize_expr, expand_omp_atomic_mutex,
927         expand_omp_atomic_fetch_op): New functions to implement
928         expansion of OMP_ATOMIC.
929         (expand_omp, build_omp_regions_1): Add support for
930         OMP_ATOMIC_LOAD/OMP_ATOMIC_STORE.
931         * tree-cfg.c (make_edges): add case for OMP_ATOMIC_LOAD,
932         OMP_ATOMIC_STORE.
933         * tree-gimple.c (is_gimple_stmt): Add OMP_ATOMIC_LOAD,
934         OMP_ATOMIC_STORE.
935         * tree-parloops.c: add include to tree-vectorizer.h.
936         (reduction_info): New structure for reduction.
937         (reduction_list): New list to represent list of reductions per loop.
938         (struct data_arg): New helper structure for reduction.
939         (reduction_info_hash, reduction_info_eq, reduction_phi,
940         initialize_reductions, create_call_for_reduction,
941         create_phi_for_local_result, create_call_for_reduction_1,
942         create_loads_for_reductions, create_final_loads_for_reduction):
943         New functions.
944         (loop_parallel_p): Identify reductions, add reduction_list parameter.
945         (separate_decls_in_loop_name): Support reduction variables.
946         (separate_decls_in_loop): Add reduction_list and ld_st_data arguments,
947         call create_loads_for_reduction for each reduction.
948         (canonicalize_loop_ivs): Identify reductions, add reduction_list
949         parameter.
950         (transform_to_exit_first_loop): Add reduction support, add
951         reduction_list parameter.
952         (gen_parallel_loop): Add reduction_list parameter.  Add call
953         separate_decls_in_loop with
954         the new argument.  Traverse reductions and call
955         initialize_reductions, create_call_for_reduction.
956         (parallelize_loops): Create and delete the reduction list.
957         (add_field_for_name): Change use of data parameter.  Add fields for
958         reductions.
959         * tree-vectorizer.h (vect_analyze_loop_form): Add declaration.
960         * tree-vect-analyze.c (vect_analyze_loop_form): export it.
961         * tree.def: Add definitions for OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
962         * tree-inline.c (estimate_num_insns_1): add cases for
963         OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
964         * tree-cfg.c (make_edges): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
965         * tree-ssa-operands.c (get_addr_dereference_operands):
966         New function.  Subroutine of get_indirect_ref_operands.
967         (get_indirect_ref_operands): Call get_addr_dereference_operands.
968         (get_expr_operands): Support OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
969
970
971 2007-10-29  Hans-Peter Nilsson  <hp@axis.com>
972
973         * config/cris/cris.c: Include df.h.
974         (cris_address_cost): Add gcc_assert for canonicalization
975         assumptions.  For PLUS with MULT or register, correct
976         test for register in other arm.  Tweak comments.
977
978 2007-10-28  Richard Guenther  <rguenther@suse.de>
979
980         * tree-ssa-operands.c (add_vars_for_offset): Add parameter
981         telling if the var is to be treated as points-to location.
982         (add_vars_for_bitmap): Pass true to add_vars_for_offset.
983         (add_virtual_operand): Only recurse into MPTs if aliases
984         is from a NMT.
985
986 2007-10-28  Richard Guenther  <rguenther@suse.de>
987
988         * tree-ssa-operands.c (add_vars_for_offset): Clean and speed up.
989         (add_vars_for_bitmap): Do not recurse further.  Only add vars
990         for pointed-to SFTs.
991         (add_virtual_operand): Re-instantiate loop to add operands for
992         aliases.  Recurse into MPTs.
993         (get_indirect_ref_operands): If we fall back to use a pointers
994         SMT, make sure to not prune based on the access offset and size.
995
996 2007-10-28  Andrew Pinski  <pinskia@gmail.com>
997
998         PR tree-opt/33589
999         * tree-outof-ssa.c (rewrite_trees): If the statement changed, cleanup
1000         the eh information on the statement.
1001
1002 2007-10-28  Richard Guenther  <rguenther@suse.de>
1003
1004         * tree-flow.h (subvar_t): Make it a VEC.
1005         (struct subvar): Remove.
1006         (struct var_ann_d): Use VEC(tree,gc) to store subvars.
1007         * tree-flow-inline.h (get_subvar_at): Adjust iterators over
1008         variable subvars.
1009         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
1010         * tree-nrv.c (dest_safe_for_nrv_p): Likewise.
1011         * tree-ssa-alias.c (mark_aliases_call_clobbered): Likewise.
1012         (set_initial_properties): Likewise.
1013         (setup_pointers_and_addressables): Likewise.
1014         (new_type_alias): Likewise.
1015         (create_overlap_variables_for): Likewise.
1016         * tree-dfa.c (dump_subvars_for): Likewise.
1017         * tree-ssa-operands.c (add_vars_for_offset): Likewise.
1018         (get_expr_operands): Likewise.
1019         (add_to_addressable_set): Likewise.
1020         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
1021
1022 2007-10-28  Uros Bizjak  <ubizjak@gmail.com>
1023
1024         PR tree-optimization/33920
1025         * tree-if-conv.c (tree_if_conversion): Force predicate of single
1026         successor bb to true when predecessor bb has NULL predicate.
1027         (find_phi_replacement_condition): Assert that tmp_cond is non-null.
1028
1029 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
1030
1031         * config/mips/mips.md: Add combiner patterns for DImode extensions
1032         of HImode and QImode truncations.  Reformat HImode <- QImode pattern
1033         for consistency.
1034
1035 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
1036
1037         PR target/33895
1038         * config/mips/mips.c (mips_output_dwarf_dtprel): Add ATTRIBUTE_UNUSED.
1039
1040 2007-10-28  Andreas Krebbel  <krebbel1@de.ibm.com>
1041
1042         * dce.c (delete_unmarked_insns): Just delete the RETVAL and
1043         LIBCALL notes if they are about to be moved to the same insn.
1044
1045 2007-10-27  Richard Guenther  <rguenther@suse.de>
1046
1047         PR tree-optimization/33870
1048         * tree-ssa-operands.c (add_vars_for_offset): Reduce code
1049         duplication.  Remove redundant call to access_can_touch_variable.
1050         (add_vars_for_bitmap): New helper for recursing over MPT contents.
1051         (add_virtual_operand): Use it.
1052
1053 2007-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1054
1055         PR fortran/31608
1056         * pa.h (ASM_PN_FORMAT): Delete define.
1057
1058 2007-10-26  Janis Johnson  <janis187@us.ibm.com>
1059
1060         * doc/invoke.texi (Option Summary, optimizations): Remove
1061         -fbounds-check.  Add -fassociative-math, -freciprocal-math,
1062         -ftree-vrp and -funit-at-a-time.  Change -fno-split-wide-types to
1063         -fsplit-wide-types to match later entry.  Break up a long line.
1064         (Option Summary, code gen options)  Add -fno-stack-limit.  Add
1065         missing @gol to the end of a line.
1066         (Optimization Options): Remove -fbounds-check, which is also
1067         documented under Code Generation Options.  Remove =n from
1068         index entry for -ftree-parallelize-loops.  Change -fno-cprop-registers
1069         to -fcprop-registers to match other options, and say when it is
1070         enabled rather than disabled.  Remove extra index entry for
1071         -fno-cx-limited-range.  Add index entries for -fstack-protector
1072         and -fstack-protector-all.
1073         (Code Gen Options): Add index entry for -ftls-model.
1074
1075 2007-10-26  Anatoly Sokolov <aesok@post.ru>
1076
1077         * config/avr/avr.c (avr_OS_task_function_p): Add new function.
1078         (avr_regs_to_save): Handle functions with 'OS_task' attribute.
1079         (avr_simple_epilogue, expand_prologue, avr_asm_function_end_prologue,
1080         expand_epilogue, output_movhi): Don't handle 'main' function.
1081         (avr_attribute_table): Add 'OS_task' function attribute.
1082         * config/avr/avr.h (machine_function): Remove 'is_main' field, add
1083         'is_OS_task' field.
1084         * config/avr/avr.md (return_from_main_epilogue): Remove insn.
1085         (return_from_epilogue, return_from_interrupt_epilogue): Don't handle
1086         'main' function.
1087         * config/avr/avr.opt (minit-stack): Remove.
1088
1089 2007-10-26  Eric Botcazou  <ebotcazou@adacore.com>
1090
1091         * tree-nested.c (get_trampoline_type): Fix thinko.
1092
1093 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
1094
1095         PR c++/33601
1096         * tree.c (build_offset_type): Build canonical type based on the
1097         TYPE_MAIN_VARIANT of the base type.
1098
1099 2007-10-26  Daniel Jacobowitz  <dan@codesourcery.com>
1100
1101         * reorg.c (emit_delay_sequence): Move insn locator from the
1102         first insn to the sequence.
1103
1104 2007-10-26  Samuel Tardieu  <sam@rfc1149.net>
1105
1106         * ipa-pure-const.c (check_decl): Return immediately when
1107         pure_const_state has been set to IPA_NEITHER.
1108
1109 2007-10-25  Ira Rosen  <irar@il.ibm.com>
1110
1111         PR tree-optimization/33833
1112         * tree-vect-analyze.c (vect_analyze_data_refs): Use POINTER_PLUS_EXPR
1113         and convert init to sizetype in inner_base construction.
1114
1115 2007-10-25  Richard Guenther  <rguenther@suse.de>
1116
1117         * tree-flow.h (mem_sym_stats): Remove.
1118         (dump_mem_sym_stats_for_var): Declare.
1119         * tree-dfa.c (dump_variable): Call dump_mem_sym_stats_for_var.
1120         (mem_sym_stats): Move ...
1121         * tree-ssa-alias.c (mem_sym_stats): ... here and make it static.
1122         (mem_sym_score): Rename from ...
1123         (pscore): ... this.  Remove.
1124         (dump_mem_sym_stats_for_var): New function.  Dump the score, but
1125         not the frequencies.
1126         (compare_mp_info_entries): Make sort stable by disambiguating
1127         on DECL_UID.
1128
1129 2007-10-25  Ira Rosen  <irar@il.ibm.com>
1130
1131         PR tree-optimization/33866
1132         * tree-vect-transform.c (vectorizable_store): Check operands of all
1133         the stmts in the group of strided accesses. Get def stmt type for each
1134         store in the group and pass it to vect_get_vec_def_for_stmt_copy ().
1135
1136 2007-10-25  Uros Bizjak  <ubizjak@gmail.com>
1137
1138         * config/i386/constraints.md (Y0): Rename register constraint to Yz.
1139         (Yt): Rename register constraint to Y2.
1140         * config/i386/sse.md: Use renamed register constraints.
1141         * config/i386/mmx.md: Ditto.
1142         * config/i386/i386.md: Ditto.
1143
1144 2007-10-25  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1145
1146         * config/i386/i386.md (*dummy_extendsfdf2): Fix operand 1 constraint.
1147
1148 2007-10-24  Chao-ying Fu  <fu@mips.com>
1149
1150         * dwarf2out.c (base_type_die): Use DW_ATE_unsigned_fixed or
1151         DW_ATE_signed_fixed to describe FIXED_POINT_TYPE.
1152
1153 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
1154             Olga Golovanevsky <olga@il.ibm.com>
1155         
1156         * ipa-struct-reorg.c (replace_field_acc): Make it clear to
1157         the compiler that wr.wrap and wr.domain are initialized in
1158         any case.
1159
1160 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
1161
1162         * ipa-struct-reorg.c (sum_counts): Use HOST_WIDEST_PRINT_DEC
1163         to print gcov_type values.
1164
1165 2007-10-24  Eric B. Weddington  <eweddington@cso.atmel.com>
1166
1167         * config/avr/avr.h: Do not include progmem_section definition when
1168         building with IN_TARGET_LIBS.
1169
1170 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1171
1172         PR target/33755
1173         * config/mips/mips.c (mips_lo_sum_offset): New structure.
1174         (mips_hash_base, mips_lo_sum_offset_hash, mips_lo_sum_offset_eq)
1175         (mips_lo_sum_offset_lookup, mips_record_lo_sum)
1176         (mips_orphaned_high_part_p: New functions.
1177         (mips_avoid_hazard): Don't check INSN_P here.
1178         (mips_avoid_hazards): Rename to...
1179         (mips_reorg_process_insns): ...this.  Cope with
1180         !TARGET_EXPLICIT_RELOCS.  Delete orphaned high-part relocations,
1181         or turn them into nops.
1182         (mips_reorg): Remove TARGET_EXPLICIT_RELOCS check from calls to
1183         dbr_schedule and mips_avoid_hazards/mips_reorg_process_insns.
1184         (mips_set_mips16_mode): Don't set flag_delayed_branch here.
1185         (mips_override_options): Set flag_delayed_branch to 0.
1186
1187 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1188
1189         * config/mips/mips.h (MOVE_MAX): Use UNITS_PER_WORD and describe
1190         MIPS-specific implementation details.
1191         (MIPS_MAX_MOVE_BYTES_PER_LOOP_ITER): New macro.
1192         (MIPS_MAX_MOVE_BYTES_STRAIGHT): Likewise.
1193         (MOVE_RATIO): Define to MIPS_MAX_MOVE_BYTES_STRAIGHT / UNITS_PER_WORD
1194         for targets with movmemsi.
1195         (MOVE_BY_PIECES_P): Define.
1196         * config/mips/mips.c (MAX_MOVE_REGS, MAX_MOVE_BYTES): Delete.
1197         (mips_block_move_loop): Add a bytes_per_iter argument.
1198         (mips_expand_block_move): Use MIPS_MAX_MOVE_BYTES_STRAIGHT.
1199         Update call to mips_block_move_loop.
1200
1201 2007-10-24  Michael Matz  <matz@suse.de>
1202
1203         PR debug/33868
1204         * var-tracking.c (variable_union): Don't break after one loop
1205         iteration but only when a difference is found.
1206         (dump_variable): Also print DECL_UID.
1207
1208 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
1209
1210         * ipa-type-escape.h: Expose function
1211         is_array_access_through_pointer_and_index.
1212         * ipa-type-escape.c
1213         (is_array_access_through_pointer_and_index):
1214         Add three new parameters. Add support of
1215         POINTER_PLUS_EXPR tree code.
1216
1217 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
1218
1219         * ipa-struct-reorg.c, ipa-struct-reorg.h: New files.
1220         * tree-pass.h: Add pass_ipa_struct_reorg.
1221         * common.opt: Add ipa-struct-reorg flag.
1222         * Makefile.in: Add ipa-strcut-reorg.o compilation.
1223         * passes.c: Add pass pass_ipa_struct_reorg.
1224         * params.h:  Add STRUCT_REORG_COLD_STRUCT_RATIO.
1225         * params.def: Add PARAM_STRUCT_REORG_COLD_STRUCT_RATIO.
1226
1227 2007-10-24  Ira Rosen  <irar@il.ibm.com>
1228
1229         PR tree-optimization/33804
1230         * tree-vect-transform.c (vectorizable_operation): Remove the
1231         checks that the vectorization is worthwhile from the transformation
1232         phase.
1233
1234 2007-10-24  Ira Rosen  <irar@il.ibm.com>
1235
1236         * tree-vect-analyze.c (vect_build_slp_tree): Return false if
1237         vectype cannot be determined for the scalar type.
1238         (vect_analyze_slp_instance): Likewise.
1239         * tree-vect-transform.c (vect_model_reduction_cost): Change the
1240         return type to bool. Return false if vectype cannot be determined 
1241         for the scalar type.
1242         (vect_get_constant_vectors): Return false if vectype cannot be
1243         determined for the scalar type.
1244         (get_initial_def_for_induction, vect_get_vec_def_for_operand,
1245         get_initial_def_for_reduction, vect_create_epilog_for_reduction,
1246         vectorizable_reduction): Likewise.      
1247
1248 2007-10-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
1249
1250         * config.gcc: For a FreeBSD target, parse the value of ${target}
1251         to determine the value of FBSD_MAJOR, instead of adding an
1252         explicit check for every possible FreeBSD major version.
1253
1254 2007-10-23  Uros Bizjak  <ubizjak@gmail.com>
1255
1256         PR rtl-optimization/33846
1257         * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes.
1258
1259 2007-10-23  Dorit Nuzman  <dorit@il.ibm.com>
1260
1261         PR tree-optimization/33860
1262         * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
1263         interleaved accesses in case the dr is inside the inner-loop during
1264         outer-loop vectorization.
1265
1266 2007-10-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
1267
1268         * doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
1269         Document MEM_POINTER.  Replace mentions of "integrated"
1270         field with "return_val".  Delete outdated stuff.
1271
1272 2007-10-23  David Edelsohn  <edelsohn@gnu.org>
1273
1274         * config/rs6000/rs6000.c (rs6000_override_options): Set
1275         rs6000_altivec_abi on AIX.
1276         (conditional_register_usage): Set VR20:31 fixed on AIX.
1277
1278 2007-10-23  Richard Guenther  <rguenther@suse.de>
1279
1280         * alias.c (get_alias_set): For INDIRECT_REFs, deal with
1281         SSA_NAME pointers.
1282
1283 2007-10-22  Seongbae Park <seongbae.park@gmail.com>
1284         David S. Miller  <davem@davemloft.net>
1285
1286         * df-scan.c (df_get_call_refs): Mark global registers as both a
1287         DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF.
1288
1289 2007-10-22  Dorit Nuzman  <dorit@il.ibm.com>
1290
1291         PR tree-optimization/33834
1292         PR tree-optimization/33835
1293         * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE
1294         stmts need to be checked for success seperately.
1295         * tree-vect-transform.c (vectorizable_call, vectorizable_conversion):
1296         Remove the check that stmt is not LIVE.
1297         (vectorizable_assignment, vectorizable_induction): Likewise.
1298         (vectorizable_operation, vectorizable_type_demotion): Likewise.
1299         (vectorizable_type_promotion, vectorizable_load, vectorizable_store):
1300         Likewise.
1301         (vectorizable_live_operation): Check that op is not NULL. 
1302
1303 2007-10-22  Janis Johnson  <janis187@us.ibm.com>
1304
1305         * doc/invoke.texi (Optimization Options): In the summary, show
1306         that the value for options -falign-jumps, -falign-labels,
1307         -falign-loops, -falign-functions, -fsched-stalled-insns, and
1308         -fsched-stalled-insns-dep is optional.  In the summary, show that
1309         -fsched-stalled-insns takes an optional argument and that
1310         -fparallelize-loops takes an argument.  Add opindex for several
1311         optimization options, and fix typos in the opindex commands for
1312         several others.  In the descriptions for -fsched-stalled-insns
1313         and -fsched-stalled-insns-dep, show the options with and without
1314         values.
1315
1316 2007-10-22  Eric B. Weddington  <eweddington@cso.atmel.com>
1317
1318         * config/avr/avr.c (avr_mcu_types): Remove ATmega603 which was never
1319         produced.
1320         * config/avr/avr.h (LINK_SPEC): Likewise.
1321         (CRT_BINUTILS_SPECS): Likewsie.
1322         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1323
1324 2007-10-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
1325
1326         PR rtl-optimization/33644
1327         * cfgcleanup.c: Do not include dce.h.
1328         * cfgrtl.c (delete_insn_chain_and_edges): Resurrect.
1329         * combine.c (distribute_notes): Delete REG_LIBCALL_ID case.
1330         * dce.c (something_changed): Delete.
1331         (libcall_dead_p): New predicate.
1332         (delete_unmarked_insns): Use it to delete dead libcalls.
1333         Deal with REG_LIBCALL and REG_RETVAL notes.
1334         (prescan_libcall_for_dce): New function.
1335         (prescan_insns_for_dce): Use it to deal with libcalls.
1336         (mark_reg_dependencies): Do nothing special for libcalls.
1337         (dce_process_block): Likewise.
1338         (fast_dce): Delete unused local variable.
1339         (run_fast_dce): Do not return a value.
1340         * dce.h (struct df): Delete.
1341         (run_fast_dce): Adjust prototype.
1342         * optabs.c (libcall_id): Delete.
1343         (maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes.
1344         (emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes.
1345         * reload1.c (reload): Delete REG_LIBCALL_ID case.
1346         * rtl.h (delete_insn_chain_and_edges): Resurrect prototype.
1347         * see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL
1348         notes instead of REG_LIBCALL_ID notes.
1349         * reg-notes.def (LIBCALL_ID): Delete.
1350         * Makefile.in (see.o): Add dce.h dependency.
1351         (cfgcleanup.o): Remove dce.h dependency.
1352
1353 2007-10-22  Michael Matz  <matz@suse.de>
1354
1355         PR tree-optimization/33855
1356         * tree-ssa-phiopt.c (cond_store_replacement): Handle COMPLEX_TYPE
1357         and VECTOR_TYPE.
1358
1359 2007-10-22  Ira Rosen  <irar@il.ibm.com>
1360
1361         PR tree-optimization/33854
1362         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
1363         FLOAT_EXPR to the list of promotion operations. 
1364
1365 2007-10-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1366
1367         PR target/29473
1368         PR target/29493
1369         * config/i386/i386.c (output_pic_addr_const): Support Intel asm syntax.
1370         (print_reg): Print register prefix only with AT&T asm syntax. 
1371         Support pc_rtx for RIP register.
1372         (print_operand_address): Use print_reg()'s pc_rtx support for RIP
1373         relative addressing.  Always print segment register prefix with AT&T
1374         asm syntax and never with Intel asm syntax.
1375         (print_operand): Suppress 'XXX PTR' prefix for BLKmode operands. 
1376         Fix prefix for 16-byte XFmode operands.
1377         (output_addr_const_extra): Support Intel asm syntax.
1378         (x86_file_start): Don't use register prefix with Intel asm syntax.
1379         * config/i386/i386.md ("*zero_extendqihi2_movzbl"): Fix typo.
1380         ("return_internal_long"): Fix Intel asm syntax output.
1381         ("set_got_rex64"): Support Intel asm syntax.
1382         ("set_rip_rex64"): Likewise.
1383         ("set_got_offset_rex64"): Likewise.
1384         ("*sibcall_1_rex64_v"): Print register prefix only with AT&T asm
1385         syntax.
1386         ("*tls_global_dynamic_64"): Likewise.
1387         ("*tls_local_dynamic_base_64"): Likewise.
1388         ("*load_tp_si")("*load_tp_di"): Likewise.
1389         ("*add_tp_si")("*add_tp_di"): Likewise.
1390         ("*tls_dynamic_lea_64"): Likewise.
1391         ("*sibcall_value_1_rex64_v"): Likewise.
1392         ("stack_tls_protect_set_si"): Likewise.
1393         ("stack_tls_protect_set_di"): Likewise.
1394         ("stack_tls_protect_test_si"): Likewise.
1395         ("stack_tls_protect_test_di"): Likewise.
1396         * config/i386/mmx.md ("*mov<mode>_internal_rex64"): Fix Intel asm
1397         syntax output.
1398         ("*movv2sf_internal_rex64"): Likewise.
1399         * config/i386/cpuid.h (__cpuid): Support Intel asm syntax.
1400         (__get_cpuid_max): Likewise.
1401
1402 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1403
1404         * config/mips/mips-protos.h (mips_regno_mode_ok_for_base_p): Give
1405         the STRICT_P argument type "bool" rather than "int".
1406         (mips_legitimate_address_p): Likewise.
1407         (fp_register_operand, lo_operand): Delete.
1408         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
1409         (mips_emit_scc): Rename to...
1410         (mips_expand_scc): ...this.
1411         (gen_conditional_branch): Rename to...
1412         (mips_expand_conditional_branch): ...this.
1413         (gen_conditional_move): Rename to...
1414         (mips_expand_conditional_move): ...this.
1415         (mips_gen_conditional_trap): Rename to...
1416         (mips_expand_conditional_trap): ...this and take an rtx code instead
1417         of an operands array.
1418         (mips_expand_call): Give the SIBCALL_P argument type "bool"
1419         rather than "int".
1420         (mips_emit_fcc_reload): Rename to...
1421         (mips_expand_fcc_reload): ...this.
1422         (init_cumulative_args): Rename to...
1423         (mips_init_cumulative_args): ...this and remove the libname argument.
1424         (function_arg_advance): Rename to...
1425         (mips_function_arg_advance): ...this.
1426         (function_arg): Rename to...
1427         (mips_function_arg): ...this and use "rtx" instead of
1428         "struct rtx_def *".
1429         (function_arg_boundary): Rename to...
1430         (mips_function_arg_boundary): ...this.
1431         (mips_expand_unaligned_load): Rename to...
1432         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
1433         and BITPOS arguments type "HOST_WIDE_INT".
1434         (mips_expand_unaligned_store): Rename to...
1435         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
1436         and BITPOS arguments type "HOST_WIDE_INT".
1437         (override_options): Rename to...
1438         (mips_override_options): ...this.
1439         (print_operand): Rename to...
1440         (mips_print_operand): ...this.
1441         (print_operand_address): Rename to...
1442         (mips_print_operand_address): ...this.
1443         (mips_output_ascii): Remove the PREFIX argument.
1444         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
1445         rather than "int".
1446         (mips_can_use_return_insn): Return a "bool" rather than an "int".
1447         (mips_function_value): Remove the FUNC argument.  Use "rtx" instead
1448         of "struct rtx_def *".
1449         (mips_secondary_reload_class): Give the IN_P argument type "bool"
1450         rather than "int".
1451         (build_mips16_call_stub): Delete.
1452         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
1453         (mips_use_ins_ext_p): Give the second and third arguments type
1454         "HOST_WIDE_INT" rather than "rtx".
1455         * config/mips/mips.h: Update after the above changes.  Tweak comments
1456         and formatting.
1457         (SECONDARY_INPUT_RELOAD_CLASS): Pass a boolean IN_P argument.
1458         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
1459         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
1460         element type from "char" to "bool".
1461         (mips_section_threshold, sym_lineno, set_noat, mips_branch_likely)
1462         (mips_cpu_info_table): Delete.
1463         * config/mips/mips.md: Update after the above changes.  Tweak some
1464         formatting.
1465         * config/mips/mips-ps-3d.md: Likewise.
1466         * config/mips/mips.c: Tweak comments and formatting.
1467         Use NULL-like macros rather than 0 in various places.
1468         (mips_section_threshold): Rename to...
1469         (mips_small_data_threshold): ...this and give it an unsigned type.
1470         (num_source_filenames): Remove explicit initialization.
1471         (sdb_label_count): Likewise.
1472         (sym_lineno): Delete.
1473         (set_noat): Make static.
1474         (mips_branch_likely): Likewise, and give it type "bool".
1475         (mips_isa_info): Rename to...
1476         (mips_isa_option_info): ...this.
1477         (mips_flag_delayed_branch): Rename to...
1478         (mips_base_delayed_branch): ...this.
1479         (mips_split_addresses): Delete.
1480         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
1481         element type from "char" to "bool".
1482         (mips_regno_to_class): Add an explicit array size.
1483         (mips16_flipper): Change from type "int" to type "bool".
1484         (mips_comp_type_attributes): Remove redundant FUNCTION_TYPE check.
1485         (mips_tls_operand_p): Rename to...
1486         (mips_tls_symbol_p): ...this.
1487         (mips_global_symbol_p): Remove redundant "const".
1488         (mips_offset_within_alignment_p): Simplify.
1489         (mips_regno_mode_ok_for_base_p): Change the name of the last argument
1490         to STRICT_P and give it type bool.
1491         (mips_valid_base_register_p): Likewise.
1492         (mips_classify_address): Likewise.
1493         (mips_legitimate_address_p): Likewise.
1494         (mips16_unextended_reference_p): Take the offset as an
1495         "unsigned HOST_WIDE_INT" rather than an "rtx".  Simplify.
1496         (mips_const_insns): Use IN_RANGE.
1497         (mips_force_temporary): Remove an unnecessary copy_rtx.
1498         (mips16_gp_pseudo_reg): Simplify.
1499         (mips_split_symbol): Remove an unnecessary copy_rtx.
1500         (mips_legitimize_tls_address): Only create registers if we need them.
1501         (mips_legitimize_address): Use mips_split_plus.
1502         (mips_move_integer): Swap DEST and TEMP arguments.  Rename local
1503         variable COST to NUM_OPS.
1504         (mips_legitimize_move): Use gen_lowpart.
1505         (mips_rewrite_small_data): Rename the OP parameter to PATTERN.
1506         (m16_check_op): Use IN_RANGE.
1507         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
1508         (mips_split_doubleword_move): Pass booleans to mips_subword.
1509         (mips_output_move): Store the mode in a local variable.
1510         Explicitly assert that this function does not deal with
1511         MFLO and MFHI.  Use SMALL_OPERAND_UNSIGNED.  Make order of
1512         cases more consistent.
1513         (mips_relational_operand_ok_p): Rename to...
1514         (mips_int_order_operand_ok_p): ...this.
1515         (mips_canonicalize_comparison): Rename to...
1516         (mips_canonicalize_int_order_test): ...this.
1517         (mips_emit_int_relational): Rename to...
1518         (mips_emit_int_order_test): ...this.  Store the mode in a local
1519         variable.
1520         (mips_reverse_fp_cond_p): Rename to...
1521         (mips_reversed_fp_cond): ...this.
1522         (mips_emit_compare): Make the order of the statements more consistent.
1523         (mips_emit_scc): Rename to...
1524         (mips_expand_scc): ...this.
1525         (gen_conditional_branch): Rename to...
1526         (mips_expand_conditional_branch): ...this.
1527         (gen_conditional_move): Rename to...
1528         (mips_expand_conditional_move): ...this.  Build the condition
1529         separately from the main pattern.
1530         (mips_gen_conditional_trap): Rename to...
1531         (mips_expand_conditional_trap): ...this and take an rtx code instead
1532         of an operands array.  Simplify.
1533         (init_cumulative_args): Rename to...
1534         (mips_init_cumulative_args): ...this.  Use memset rather than a
1535         copy from a zeroed static.  Use prototype_p and stdarg_p.
1536         (mips_arg_info): Rename to...
1537         (mips_get_arg_info): ...this and put the INFO argument first.
1538         (function_arg): Rename to...
1539         (mips_function_arg): ...this and use "rtx" instead of
1540         "struct rtx_def *".  Only split structures into chunks if 
1541         TARGET_HARD_FLOAT, rather than checking !TARGET_SOFT_FLOAT on
1542         a chunk-by-chunk basis.  Use SCALAR_FLOAT_TYPE_P instead of a
1543         comparison with REAL_TYPE.  Rename local variable REG to REGNO
1544         and make it unsigned.
1545         (function_arg_advance): Rename to...
1546         (mips_function_arg_advance): ...this.
1547         (function_arg_boundary): Rename to...
1548         (mips_function_arg_boundary): ...this.
1549         (mips_pad_arg_upward): Use SCALAR_INT_MODE_P instead of a comparison
1550         with MODE_INT.
1551         (mips_fpr_return_fields): Use SCALAR_FLOAT_TYPE_P instead of a
1552         comparison with REAL_TYPE.
1553         (mips_function_value): Remove the FUNC argument.  Rename local
1554         variable UNSIGNEDP to UNSIGNED_P.
1555         (mips_return_in_memory): Use IN_RANGE.
1556         (mips_setup_incoming_varargs): Pass a boolean rather than an int
1557         to FUNCTION_ARG_ADVANCE.
1558         (mips_gimplify_va_arg_expr): Rename local variable INDIRECT
1559         to INDIRECT_P.  Remove a redundant mips_abi check.  Only calculate
1560         SIZE and RSIZE if needed.
1561         (mips16_stub): Rename FPRET to FP_RET_P and give it type "bool"
1562         rather than "int".
1563         (build_mips16_function_stub): Rename to...
1564         (mips16_build_function_stub): ...this.
1565         (build_mips16_call_stub): Rename to...
1566         (mips16_build_call_stub): ...this.  Make static, and return a
1567         "bool" rather than an "int".  Rename the ARG_SIZE argument to
1568         ARGS_SIZE.  Rename the local variable FPRET to FP_RET_P and give
1569         it type "bool".  Use "jr" rather than "j".  Use XNEW.  Simplify.
1570         (mips_load_call_address): Give the SIBCALL_P argument type "bool"
1571         rather than "int".
1572         (mips_expand_call): Likewise.  Assert that MIPS16 calls via stubs
1573         are not sibling ones.
1574         (mips_emit_fcc_reload): Rename to...
1575         (mips_expand_fcc_reload): ...this.
1576         (mips_get_unaligned_mem): Give the WIDTH and BITPOS arguments type
1577         "HOST_WIDE_INT".
1578         (mips_expand_unaligned_load): Rename to...
1579         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
1580         and BITPOS arguments type "HOST_WIDE_INT".  Remove redundant
1581         SUBREG_BYTE check.
1582         (mips_expand_unaligned_store): Rename to...
1583         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
1584         and BITPOS arguments type "HOST_WIDE_INT".
1585         (mips_use_ins_ext_p): Rename second and third arguments to WIDTH
1586         and BITPOS and give them type "HOST_WIDE_INT" rather than "rtx".
1587         Use IN_RANGE.
1588         (mips_init_split_addresses): Replace with...
1589         (mips_split_addresses_p): ...this new function.
1590         (mips_init_relocs): Check mips_split_addresses_p () rather than
1591         mips_split_addresses.  Always initialize mips_split_p with booleans.
1592         (print_operand_reloc): Rename to...
1593         (mips_print_operand_reloc): ...this.  Use a gcc_assert rather than
1594         a fatal_error.
1595         (print_operand): Rename to...
1596         (mips_print_operand): ...this.
1597         (print_operand_address): Rename to...
1598         (mips_print_operand_address): ...this.  Use GP_REG_FIRST.
1599         (mips_in_small_data_p): Simplify.
1600         (mips_output_ascii): Remove the PREFIX argument and "register"
1601         keywords.  Use the STRING parameter directly and cast to
1602         "unsigned char".
1603         (mips16e_collect_argument_save_p): Use IN_RANGE.
1604         (mips_function_has_gp_insn): Simplify.
1605         (mips_set_return_address): Use BITSET_P.
1606         (mips_restore_gp): Use a separate statement to pick the base
1607         register.
1608         (mips_output_function_prologue): Use a local FRAME variable.
1609         (mips_save_reg): Pass booleans to mips_subword.
1610         (mips_expand_prologue): Use a local FRAME variable.  Use
1611         cprestore_size to detect when .cprestore is needed.
1612         (mips_restore_reg): Use GP_REG_FIRST.
1613         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
1614         rather than "int".  Use local FRAME and REGNO variables.
1615         (mips_can_use_return_insn): Return a "bool" rather than an "int".
1616         (mips_secondary_reload_class): Give the IN_P argument type "bool"
1617         rather than "int".
1618         (mips_linked_madd_p): Rename arguments to OUT_INSN and IN_INSN.
1619         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
1620         (vr4130_swap_insns_p): Rename local variables to DEP1_P and DEP2_P.
1621         (mips_74k_agen_init): Assume INSN satisfies USEFUL_INSN_P.
1622         (mips_variable_issue): Do nothing unless INSN satisfies USEFUL_INSN_P.
1623         (builtin_description): Rename to...
1624         (mips_builtin_description): ...this.
1625         (mips_bdesc): Rename to...
1626         (mips_ps_bdesc): ...this.
1627         (sb1_bdesc): Rename to...
1628         (mips_sb1_bdesc): ...this.
1629         (dsp_bdesc): Rename to...
1630         (mips_dsp_bdesc): ...this.
1631         (dsp_32only_bdesc): Rename to...
1632         (mips_dsp_32only_bdesc): ...this.
1633         (bdesc_map): Rename to...
1634         (mips_bdesc_map): ...this.
1635         (bdesc_arrays): Rename to...
1636         (mips_bdesc_arrays): ...this.
1637         (mips_prepare_builtin_arg): Rename OP to OPNO and ARGNUM to ARGNO.
1638         Tweak error message.
1639         (mips_expand_builtin_direct): Rename HAS_TARGET to HAS_TARGET_P.
1640         Rename local variables I and J to OPNO and ARGNO respectively.
1641         Assert that the number of arguments is no more than the number of
1642         input operands.
1643         (mips_expand_builtin_compare): Use an array of arguments rather
1644         than an array of operands.  Assert that the number of operands is
1645         as expected.
1646         (add_constant): Rename to...
1647         (mips16_add_constant): ...this.  Use XNEW.
1648         (dump_constants_1): Rename to...
1649         (mips16_emit_constants_1): ...this.  Use ALL_SCALAR_FIXED_POINT_MODE_P.
1650         (dump_constants): Rename to...
1651         (mips16_emit_constants): ...this.
1652         (mips_sim_wait_reg, mips_sim_record_set): Use END_REGNO.
1653         (mips_set_mips16_mode): Don't call mips_init_split_addresses.
1654         Assign mips16_p to was_mips16_p.
1655         (mips_parse_cpu): Tweak warning message.
1656         (override_options): Rename to...
1657         (mips_override_options): ...this.  Move the mips_cost initialization
1658         out of the "shared with GAS" block.  Quote option names in error
1659         messages.
1660         (mips_conditional_register_usage): Make local variable REGNO unsigned.
1661         (mips_order_regs_for_local_alloc): Remove register keyword.
1662
1663 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1664
1665         * system.h (IN_RANGE): Cast each argument individually.
1666
1667 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1668
1669         * config/mips/mips.c (mips_set_mips16_mode) Say sorry for hard-float
1670         MIPS16 code unless using o32 or o64.  
1671
1672 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1673
1674         * config/mips/mips.c (mips_cannot_change_mode_class): Don't check
1675         for modes smaller than 4 bytes.
1676         * config/mips/mips.md (*movhi_internal, *movqi_internal): Remove
1677         FPR alternatives.
1678
1679 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1680
1681         * config/mips/mips-protos.h (mips_output_aligned_bss): Delete.
1682         * config/mips/linux.h (BSS_SECTION_ASM_OP): Delete.
1683         (ASM_OUTPUT_ALIGNED_BSS): Delete.
1684         * config/mips/mips.c (mips_output_aligned_bss): Delete.
1685
1686 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1687
1688         * config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
1689         sibling calls to "mips16" functions if the function satisfies
1690         const_call_insn_operand.
1691
1692 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1693
1694         * config/mips/mips.c (mips_va_start): Fix types in calls
1695         to build_int_cst.
1696
1697 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1698
1699         * config/mips/mips.c (mips_rtx_costs): Only recognize reciprocals
1700         if ISA_HAS_FP4.
1701
1702 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1703
1704         * config/mips/mips.h (ISA_HAS_LDC1_SDC1): New macro.
1705         * config/mips/mips.c (mips_split_64bit_move_p): Use ISA_HAS_LDC1_SDC1
1706         instead of checking mips_isa.
1707
1708 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1709
1710         * doc/invoke.texi (-mpaired-single): Don't say that the option
1711         requires 64-bit code.
1712         * config/mips/mips-protos.h (mips_modes_tieable_p): Declare.
1713         * config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro.
1714         (ISA_HAS_NMADD_NMSUB): Add a mode argument.  Return true for
1715         V2SF if ISA_MIPS32R2.
1716         (MODES_TIEABLE_P): Use mips_modes_tieable_p.
1717         * config/mips/mips.c (mips_rtx_costs): Pass a mode argument
1718         to ISA_HAS_NMADD_NMSUB.
1719         (mips_split_doubleword_move): Handle V2SF.
1720         (mips_modes_tieable_p): New function.
1721         (override_options): Report a warning rather than an error when
1722         -mpaired-single is used on ISAs that don't support it; use
1723         ISA_HAS_PAIRED_SINGLE to check that case.
1724         * config/mips/mips.md (MOVE64): New mode iterator.  Replace DI
1725         and DF move splitters with a single MOVE64 splitter, thereby adding
1726         a V2SF splitter too.
1727         (SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF.
1728         Add a TARGET_FLOAT64 condition to TF.  Add V2SF to the iterator.
1729         (HALFMODE): Add V2SF.
1730         (*nmadd<mode>, *nmadd<mode>_fastmath, *nmsub<mode>)
1731         (*nmsub<mode>_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB.
1732         (movv2sf_hardfloat_64bit): Tweak ordering of conditions.
1733         (movv2sf_hardfloat_32bit): New pattern.
1734         (load_low<mode>, load_high<mode>, store_word<mode>): Remove
1735         TARGET_DOUBLE_FLOAT conditions.
1736
1737 2007-10-20  Jakub Jelinek  <jakub@redhat.com>
1738
1739         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
1740         saved CR2 offset to low 32 bits of regs->ccr rather than the whole
1741         64-bit register in 64-bit libgcc.
1742
1743 2007-10-20  Eric B. Weddington  <eweddington@cso.atmel.com>
1744
1745         * config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b.
1746         * config/avr/avr.h (LINK_SPEC): Likewise.
1747         (CRT_BINUTILS_SPECS): Likewsie.
1748         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1749
1750 2007-10-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1751
1752         * doc/invoke.texi (Warning Options): Move -w, -Werror, -Werror=
1753         and -Wfatal-errors together.
1754         
1755 2007-10-20  Alan Modra  <amodra@bigpond.net.au>
1756
1757         PR target/33812
1758         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16
1759         change for vrsave, ie restore after frame pop.
1760
1761 2007-10-19  David S. Miller  <davem@davemloft.net>
1762
1763         * config/sparc/niagara2.md: Fix copyright notice.
1764
1765 2007-10-19  Sebastian Pop  <sebastian.pop@amd.com>
1766
1767         PR tree-optimization/23820
1768         PR tree-optimization/24309
1769         PR tree-optimization/33766
1770         * testsuite/gcc.dg/tree-ssa/pr23820.c: New.
1771         * testsuite/gcc.dg/tree-ssa/pr24309.c: New.
1772         * testsuite/gcc.dg/tree-ssa/pr33766.c: New.
1773         * testsuite/gcc.dg/tree-ssa/ltrans-3.c: XFAILed.
1774         * tree-loop-linear.c (perfect_loop_nest_depth): New.
1775         (linear_transform_loops): Use perfect_loop_nest_depth.
1776         * lambda-code.c (perfect_nest_p): Outer loops in perfect nests 
1777         should have a single condition: their exit.
1778
1779 2007-10-19  Richard Guenther  <rguenther@suse.de>
1780
1781         PR middle-end/33816
1782         PR middle-end/32921
1783         * stor-layout.c (layout_type): Assert that aggregates do not
1784         have their alias sets set.
1785         * alias.c (get_alias_set): Return alias set zero for incomplete
1786         types, return the alias set of the element for incomplete array
1787         types, but do not remember these.
1788
1789 2007-10-19  Richard Guenther  <rguenther@suse.de>
1790
1791         Revert
1792         2007-10-19  Richard Guenther  <rguenther@suse.de>
1793
1794         PR middle-end/32921
1795         * tree.c (build_array_type): Do not re-layout unbound array
1796         types.
1797
1798 2007-10-19  Richard Guenther  <rguenther@suse.de>
1799
1800         PR middle-end/32921
1801         * tree.c (build_array_type): Do not re-layout unbound array
1802         types.
1803
1804 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1805
1806         * config/mips/mips.c (mips_canonicalize_comparison):  Check
1807         mips_relational_operand_ok_p before trying to rewrite the test.
1808         Only calculate PLUS_ONE if needed.
1809         (mips_emit_int_relational): Don't call mips_relational_operand_ok_p
1810         here.
1811
1812 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1813
1814         * config/mips/mips.c (mips16e_build_save_restore): Fix *OFFSET_PTR
1815         calculation.
1816
1817 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1818
1819         * config/mips/mips.c (mips_call_tls_get_addr): Don't claim that
1820         the call uses the incoming value of $2.
1821
1822 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1823
1824         * config/mips/mips.c (mips_call_tls_get_addr): Use gen_const_mem
1825         rather then gen_rtx_MEM.
1826         (mips_setup_incoming_varargs): Use gen_frame_mem rather than
1827         gen_rtx_MEM.
1828         (mips_set_return_address): Likewise.
1829         (mips_restore_gp): Likewise.
1830
1831 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1832
1833         * config/mips/mips.c (gpr_mode): Delete.
1834         (mips16e_build_save_restore): Use word_mode and UNITS_PER_WORD
1835         instead of gpr_mode.
1836         (mips_for_each_saved_reg): Likewise.
1837         (mips_expand_prologue, mips_expand_epilogue): Likewise.
1838         (override_options): Don't initialize gpr_mode.
1839         * config/mips/mips.md (eh_return): Use word_mode instead of gpr_mode.
1840
1841 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1842
1843         * config/mips/mips.c (mips_hard_regno_nregs): Put the UNITS_PER_WORD
1844         case last.
1845         (mips_class_max_nregs): Calculate the smallest consituent register
1846         size and use that to determine an upper bound on the number of
1847         registers.
1848
1849 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1850
1851         * config/mips/mips.c (mips16_copy_fpr_return_value): New function,
1852         split out from...
1853         (mips_expand_epilogue): ...here.
1854         (mips_mdebug_abi_name): New function, split out from...
1855         (mips_file_start): ...here.
1856         (mips_hard_regno_mode_ok_p): New function, split out from...
1857         (override_options): ...here.
1858         (mips_expand_builtin_1): New function, split out from...
1859         (mips_expand_buitin): ...here.  Abort if we don't recognize
1860         the function.
1861
1862 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1863
1864         * config/mips/mips.c (build_mips16_function_stub): Load the
1865         target address into $1 before transfering the arguments.
1866         Don't use ".set noreorder".
1867         (build_mips16_call_stub): Likewise.
1868
1869 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1870
1871         * config/mips/mips.c (mips_output_32bit_xfer): New function.
1872         (mips_output_64bit_xfer): Likewise.
1873         (mips16_fp_args): Rename to...
1874         (mips_output_args_xfer): ...this and replace the FROM_FP_P argument
1875         with a DIRECTION argument.  Use mips_output_32bit_xfer and
1876         mips_output_64bit_xfer.
1877         (build_mips16_function_stub): Update accordingly.
1878         (mips16_fpret_double): Delete.
1879         (build_mips16_call_stub): Update after above changes.
1880         Use mips_output_32bit_xfer.  Use mips_output_64bit_xfer instead
1881         of mips16_fpret_double.  Use GP_REG_RETURN.
1882
1883 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1884
1885         * config/mips/mips.c (mips16_fp_args): Remove the FILE argument and
1886         use asm_out_file instead.
1887         (build_mips16_function_stub): Likewise.
1888         (build_mips16_call_stub, mips_output_function_prologue): Update
1889         accordingly.
1890
1891 2007-10-18  David S. Miller  <davem@davemloft.net>
1892
1893         Add Niagara-2 support.
1894         * doc/invoke.texi: Document -m{cpu,tune}=niagara2.
1895         * config.gcc: Add niagara2 to cpu and tune lists for sparc.
1896         * config/sparc/sparc.md (sparc_cpu_attr): Add niagara2.
1897         (include): Add inclusion of niagara2.md
1898         * config/sparc/sparc.c (niagara2_costs): New.
1899         (sparc_override_options): Add niagara2 entry to cpu_default[]
1900         and cpu_table[].  Set align_functions to 32 on Niagara2.  Use
1901         niagara2_costs when PROCESSOR_NIAGARA2.  Handle Niagara2 for
1902         PARAM_SIMULTANEOUS_PREFETCHES and PARAM_L1_CACHE_LINE_SIZE.
1903         (sparc_initialize_trampoline): Handle niagara2 like niagara.
1904         (sparc64_initialize_trampoline): Likewise.
1905         (sparc_use_sched_lookahead): Likewise.
1906         (sparc_issue_rate): Likewise.
1907         * config/sparc/sol2-bi.h: Handle TARGET_CPU_niagara2 and
1908         mcpu=niagara2
1909         * config/sparc/sparc.h (TARGET_CPU_niagara2): Define.
1910         ({CPP,ASM}_CPU64_DEFAULT_SPEC): Set appropriately for
1911         TARGET_CPU_niagara2.
1912         (PROCESSOR_NIAGARA2): New.
1913         (REGISTER_MOVE_COST): Handle PROCESSOR_NIAGARA2.
1914         (BRANCH_COST): Likewise.
1915         * config/sparc/linux64.h: Handle TARGET_CPU_niagara2.
1916         * config/sparc/sol2.h: Likewise.
1917         * config/sparc/niagara2.md: New file.
1918
1919 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1920
1921         * config/mips/mips.c (mips_frame_info): Remove gp_reg_size and
1922         and fp_reg_size.
1923         (mips_compute_frame_info): Remove associated code.
1924         (mips16e_build_save_restore): Check num_fp instead of fp_reg_size.
1925
1926 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1927
1928         * config/mips/mips-protos.h (compute_frame_size): Delete.
1929         * config/mips/mips.h: Update comments.
1930         * config/mips/mips.c (mips_frame_info): Remove initialized.
1931         (compute_frame_size): Rename to...
1932         (mips_compute_frame_info): ...this and make static.  Remove the
1933         SIZE argument and return no value.  Remove the setting of initialized.
1934         Update rest of file accordingly.
1935         (mips_set_return_address): Don't call compute_frame_size.
1936         (mips_can_use_return_insn): Don't check df_regs_ever_live_p (31).
1937         Don't call compute_frame_size.
1938
1939 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1940
1941         * config/mips/mips-protos.h (mips_frame_pointer_required): Declare.
1942         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Use
1943         mips_hard_frame_pointer_required.
1944         (CAN_ELIMINATE): Rely on FRAME_POINTER_REQUIRED to check for
1945         large MIPS16 frames.
1946         * config/mips/mips.c (mips_frame_pointer_required): New function.
1947
1948 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1949
1950         * config/mips/mips.c (mips_frame_info): Add arg_pointer_offset
1951         and hard_frame_pointer_offset.
1952         (mips_debugger_offset): Use hard_frame_pointer_offset.
1953         (mips16e_collect_argument_save_p): Likewise.
1954         (compute_frame_size): Initialize arg_pointer_offset and
1955         hard_frame_pointer_offset.
1956         (mips_initial_elimination_offset): Use them.
1957         (mips_output_function_prologue): Use hard_frame_pointer_offset.
1958         (mips_expand_prologue, mips_expand_epilogue): Likewise.
1959
1960 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1961
1962         * config/mips/mips.h (STARTING_FRAME_OFFSET): Remove rtl
1963         profiling code.
1964         * config/mips/mips.c (mips_frame_info): Give num_gp and num_fp type
1965         "unsigned int" rather than "int" and put them with the other
1966         register-related fields.  Put expanded comments above fields
1967         rather than to their right.
1968         (mips16e_mask_registers): Replace the GP_REG_SIZE_PTR argument
1969         with a NUM_REGS_PTR argument.
1970         (mips16e_save_restore_pattern_p): Update accordingly.
1971         (compute_frame_size): Clarify frame diagram.  Rewrite.
1972
1973 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1974
1975         * config/mips/mips-ftypes.def: New file.
1976         * config/mips/mips.c (MIPS_FTYPE_NAME1, MIPS_FTYPE_NAME2)
1977         (MIPS_FTYPE_NAME3, MIPS_FTYPE_NAME4): New macros.
1978         (mips_function_type): Redefine using mips-ftypes.def.
1979         (dsp_bdesc): Use POINTER rather than PTR in the MIPS_*_FTYPE_* names.
1980         (mips_builtin_vector_type): New function.
1981         (MIPS_ATYPE_VOID, MIPS_ATYPE_INT, MIPS_ATYPE_POINTER, MIPS_ATYPE_SI)
1982         (MIPS_ATYPE_USI, MIPS_ATYPE_DI, MIPS_ATYPE_SF, MIPS_ATYPE_DF)
1983         (MIPS_ATYPE_V2SF, MIPS_ATYPE_V2HI, MIPS_ATYPE_V4QI, MIPS_FTYPE_ATYPES1)
1984         (MIPS_FTYPE_ATYPES2, MIPS_FTYPE_ATYPES3, MIPS_FTYPE_ATYPES4): New
1985         macros.
1986         (mips_build_function_type): New function.
1987         (mips_init_builtins): Use it to create types lazily.
1988
1989 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1990
1991         * config/mips/mips.h (set_volatile): Delete.
1992         * config/mips/mips.c (set_volatile): Delete.
1993         (mips_print_operand_punctuation): New function, split out from
1994         print_operand.  Remove '%{', '%}', '%~', '%&' and '%!'.
1995         Use the same character ordering in the code and the comments.
1996         Use a recursive call to handle '*'.  Abort on unknown characters.
1997         (mips_init_print_operand_punct): New function, split out from
1998         override_options.
1999         (mips_print_int_branch_condition): New function, split out from
2000         print_operand.  Use GET_RTX_NAME.  Use output_operand_lossage
2001         to report unexpected codes.
2002         (mips_print_float_branch_condition): New function, split out from
2003         print_operand.  Use output_operand_lossage to report unexpected codes.
2004         (print_operand): Rework to use a case statement.  Use the
2005         same letter ordering in the code and the comments.  Use
2006         output_operand_lossage to report unexpected codes and
2007         reverse_condition to handle inverted branch conditions.
2008         (override_options): Use mips_init_print_operand_punct.
2009
2010 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2011
2012         * config/mips/mips.h: Move variable declarations to end of file and
2013         enclose them all in #ifndef USED_FOR_TARGET.
2014         * config/mips/mips.c: Reorder functions into more logical groups,
2015         and so that callees appear before callers.  Put the targetm
2016         initializer at the end of the file.  Remove forward static
2017         declarations where possible.
2018         (mips_init_builtins): Add "static" to definition.
2019         (mips_expand_builtin, mips_mode_rep_extended): Likewise.
2020
2021 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2022
2023         * config/mips/mips.c (TARGET_MIN_ANCHOR_OFFSET): Delete.
2024         (TARGET_MAX_ANCHOR_OFFSET): Delete.
2025         (mips_cannot_force_const_mem): Don't check TARGET_HAVE_TLS.
2026         (mips_set_mips16_mode): Initialize min_anchor_offset and
2027         max_anchor_offset directly to constants.
2028
2029 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2030
2031         * config/mips/mips.c: Delete trailing whitespace.
2032
2033 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2034
2035         * config/mips/mips.c (mips_expand_call): Use FAKE_CALL_REGNO.
2036         (mips_avoid_hazard): Allow multiple sets for HAZARD_DELAY,
2037         and pick the first.
2038         * config/mips/mips.md (load_call<mode>): Don't make the unspec
2039         depend on FAKE_CALL_REGNO.  Set FAKE_CALL_REGNO.
2040
2041 2007-10-18  David Daney  <ddaney@avtrex.com>
2042
2043         * config/mips/linux-unwind.h (mips_fallback_frame_state): Use new
2044         reg_offset variable to calculate register locations.
2045
2046 2007-10-18  Richard Guenther  <rguenther@suse.de>
2047
2048         * tree-ssa.c (uid_ssaname_map_eq): New function.
2049         (uid_ssaname_map_has): Likewise.
2050         (init_tree_ssa): Allocate default_defs as uid_ssaname map.
2051         * tree-flow.h (struct gimple_df): Make default_defs a
2052         uid_ssaname map.
2053         * tree-dfa.c (gimple_default_def): Deal with it.
2054         (set_default_def): Likewise.
2055
2056 2007-10-18  Richard Guenther  <rguenther@suse.de>
2057
2058         * tree-flow.h (struct gimple_df): Make referenced_vars
2059         a uid_decl_map.
2060         (uid_decl_map_eq): Declare.
2061         (uid_decl_map_hash): Likewise.
2062         * tree-ssa.c (uid_decl_map_eq): New function.
2063         (uid_decl_map_hash): Likewise.
2064         (init_tree_ssa): Make referenced_vars a uid_decl_map.
2065         * tree-flow-inline.h (first_referenced_var): Deal with
2066         the referenced_vars representation change.
2067         (next_referenced_var): Likewise.
2068         * tree-dfa.c (referenced_var_lookup): Likewise.
2069         (referenced_var_check_and_insert): Likewise.
2070         (remove_referenced_var): Likewise.
2071
2072 2007-10-18  Daniel Jacobowitz  <dan@codesourcery.com>
2073
2074         * config/mips/mips.c (mips_dwarf_register_span): New.
2075         (TARGET_DWARF_REGISTER_SPAN): Define.
2076
2077 2007-10-18  Chen Liqin  <liqin@sunnorth.com.cn>
2078
2079         * config.gcc : update score-*-elf(extra_objs).
2080         * config/score/mac.md : Remove.
2081         * config/score/misc.md : Remove.
2082         * config/score/score7.md : Remove.
2083         * config/score/score-mdaux.h : Remove.
2084         * config/score/score-mdaux.c : Remove.
2085         * config/score/score-version.h : Remove.
2086         * config/score/score-generic.md : New.
2087         * config/score/score3.h : New.
2088         * config/score/score3.c : New.
2089         * config/score/score7.h : New.
2090         * config/score/score7.c : New.
2091         * config/score/mul-div.S : add flush_cache score3 support.
2092         * config/score/elf.h : Fix some typos.
2093         * config/score/score.md : merge score3 and score7 pattern.
2094         * config/score/score.c : use to seperate which target it used.
2095         * config/score/score.h : use to seperate the target macro.
2096         * config/score/score.opt : remove -mmac option , add -mscore3,
2097         -mscore3d and -march OPTION support.
2098  
2099 2007-10-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2100
2101         * cfgexpand.c (expand_stack_vars): Add checking to make sure
2102         that the offset of a variable is not greater than the size
2103         of the paritition.
2104
2105 2007-10-17  Anatoly Sokolov <aesok@post.ru>
2106
2107         * config/avr/avr.c (avr_mcu_types): Add support for atmega48p, 
2108         atmega88p, atmega168p and atmega328p devices.
2109         * config/avr/avr.h (LINK_SPEC): (Ditto.).
2110         (CRT_BINUTILS_SPECS): (Ditto.).
2111         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2112
2113 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2114
2115         * sched-ebb.c: Surround code with '#ifdef INSN_SCHEDULING'.
2116         * ddg.c: Ditto.
2117         * sched-deps.c: Ditto.  Remove nested #ifdef's INSN_SCHEDULING.
2118         * sched-int.h: Surround declarations with '#ifdef INSN_SCHEDULING'.
2119         (print_insn): Move declaration to ...
2120         * rtl.h (print_insn): ... here.
2121
2122 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2123
2124         * config/m68k/m68k.h (m68k_sched_cpu, m68k_sched_attr_opx_type,
2125         m68k_sched_attr_opy_type, m68k_sched_attr_size, m68k_sched_attr_op_mem,
2126         m68k_sched_branch_type): Move declarations to ...
2127         * config/m68/m68k-protos.h: ... here.
2128
2129 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2130
2131         * genattrtab.c (main): Rearrange output of insn-attrtab.c headers.
2132
2133 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
2134
2135         * config/avr/avr.c (avr_mcu_types): Add attiny48.
2136         * config/avr/avr.h (LINK_SPEC): Likewise.
2137         (CRT_BINUTILS_SPECS): Likewsie.
2138         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2139
2140 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
2141
2142         * config/avr/avr.c (avr_mcu_types): Add attiny43u.
2143         * config/avr/avr.h (CRT_BINUTILS_SPECS): Likewsie.
2144         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2145
2146 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
2147
2148         PR middle-end/33794
2149         * reg-stack.c (move_for_stack_reg): Swap input argument of
2150         UNSPEC_TAN insn to the top of the stack.
2151
2152 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
2153
2154         PR target/32961
2155         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLLWI128,
2156         IX86_BUILTIN_PSLLDI128, BUILTIN_PSLLQI128, IX86_BUILTIN_PSRAWI128,
2157         IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLWI128,
2158         IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128]: Do not require
2159         immediate shift value.
2160         * config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
2161         _mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16,
2162         _mm_srli_epi32, _mm_srli_epi64): Remove 'const' from count argument.
2163         Remove macros for !__OPTIMIZE__ case.
2164
2165 2007-10-17  Daniel Berlin  <dberlin@dberlin.org>
2166
2167         * tree-ssa-structalias.c (rewrite_constraints): Don't test for
2168         directness anymore.
2169         (perform_var_substitution): Only DFS from real nodes. Don't test
2170         for directness.
2171         (unite_pointer_equivalences): Fix broken test.
2172
2173 2007-10-17  Alan Modra  <amodra@bigpond.net.au>
2174
2175         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Correct
2176         altivec sp_offset.  Rearrange sp_offset assignments to
2177         correspond to stack adjustments.  Use frame_reg_rtx for
2178         SPE register restores.  Correct SPE stack adjustment.
2179
2180 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2181
2182         * builtins.c (gimplify_va_arg_expr): Use inform for help message.
2183         * toplev.c (check_global_declaration_1): Use appropriate warning
2184         option instead of unnamed warning.
2185         * stor-layout.c (layout_decl): Likewise.
2186         * c-typeck.c (build_conditional_expr): Likewise.
2187         (build_compound_expr): Fix wrong comment.
2188         (build_binary_op): Use appropriate warning option instead of
2189         unnamed warning.
2190         * cfgexpand.c (tree_expand_cfg): Likewise.
2191         * tree-optimize.c (tree_rest_of_compilation): Likewise.
2192         * tree-cfg.c (remove_useless_stmts_warn_notreached): Likewise.
2193         (execute_warn_function_return): Likewise.
2194         * stmt.c (warn_if_unused_value): Likewise.
2195
2196 2007-10-16  Eric B. Weddington  <eweddington@cso.atmel.com>
2197
2198         * config/avr/avr.c (avr_mcu_types): Add at90pwm216, at90pwm316.
2199         * config/avr/avr.h (LINK_SPEC): Likewise and remove regex for
2200         similar devices.
2201         (CRT_BINUTILS_SPECS): Likewsie.
2202         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2203
2204 2007-10-16  Amruth Laxman  <amruth.laxman@nsn.com>
2205
2206         PR target/33594
2207         * config/sparc/sparc.h (LOCAL_ALIGNMENT): Define.
2208
2209 2007-10-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
2210
2211         * dce.c (init_dce): Only initialize the obstacks for the fast pass.
2212         (fini_dce): Only release them for the fast pass.
2213         (end_ud_dce): Delete.
2214         (rest_of_handle_ud_dce): Do not modify df_in_progress.
2215         Call fini_dce instead of end_ud_dce.
2216         (rest_of_handle_fast_dce): Do not modify df_in_progress.
2217         (run_fast_df_dce): Reset df_in_progress to false on exit.
2218
2219 2007-10-16  Paolo Bonzini  <bonzini@gnu.org>
2220             Maxim Kuvyrkov  <maxim@codesourcery.com>
2221
2222         * target.h (unspec_may_trap_p): New target hook.
2223         * target-def.h (TARGET_UNSPEC_MAY_TRAP_P): New macro.
2224         * targhooks.c (default_unspec_may_trap_p): Default implementation of
2225         the hook.
2226         * targhooks.h (default_unspec_may_trap_p): Declare it.
2227         * doc/tm.texi (TARGET_UNSPEC_MAY_TRAP_P): Document new hook.
2228         * rtlanal.c (may_trap_p_1): Use new hook.  Make global.
2229         * rtl.h (may_trap_p_1): Declare.
2230         
2231         * config/ia64/ia64.c (ia64_unspec_may_trap_p): New function to
2232         override default hook implementation.
2233         (TARGET_UNSPEC_MAY_TRAP_P): Override default implementation of the
2234         hook.
2235
2236 2007-10-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2237
2238         * doc/invoke.texi (Wextra): Move it just after Wall, list the
2239         options enabled by Wextra and mention Wuninitialized.
2240         
2241 2007-10-15  Nigel Stephens  <nigel@mips.com>
2242
2243         * config/mips/mips.h (LOCAL_ALIGNMENT): Define.
2244
2245 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
2246
2247         PR tree-optimization/33136
2248         * opts.c (decode_options): Don't enable flag_ipa_type_escape.
2249
2250 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
2251
2252         PR tree-optimization/33735
2253         PR tree-optimization/33572
2254         * tree-inline.c (update_ssa_across_abnormal_edges): Revert
2255         2007-10-09's change.
2256         * except.c (duplicate_eh_regions): Don't look for prev_try
2257         beyond ERT_ALLOWED_EXCEPTIONS with an empty list.
2258
2259 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
2260
2261         PR middle-end/33706
2262         * tree-inline.c (copy_bb): Use bsi_replace to replace a
2263         __builtin_va_arg_pack-containing call stmt.
2264
2265 2007-10-15  Razya Ladelsky  <razya@il.ibm.com>
2266
2267         * matrix-reorg.c (gate_matrix_reorg): Don't comment out whole
2268         program flag.
2269
2270 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
2271
2272         PR tree-optimization/33619
2273         * tree-ssa-ter.c (is_replaceable_p): Return false for all
2274         calls.
2275
2276 2007-10-15  David Edelsohn  <edelsohn@gnu.org>
2277
2278         * config.gcc (powerpc-ibm-aix5*): Install altivec.h.
2279
2280 2007-10-15  Richard Guenther  <rguenther@suse.de>
2281
2282         * fold-const.c (extract_array_ref): Remove.
2283         (fold_comparison): Handle POINTER_PLUS_EXPR with the
2284         generic address expression comparison folding.  Remove
2285         the folding that used extract_array_ref.
2286
2287 2007-10-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
2288
2289         PR target/33133
2290         * haifa-sched.c (process_insn_forw_deps_be_in_spec): Check if
2291         speculation type of insn can be changed before trying to do that.
2292
2293 2007-10-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
2294
2295         * dse.c (struct insn_info): Add 'frame_read' field.
2296         (scan_insn): For the call to a const function, set frame_read if
2297         reload has been run.
2298         If the insn reads the frame, kill the frame related stores.
2299         (scan_reads_nospill): Likewise.
2300
2301 2007-10-14  Jason Merrill  <jason@redhat.com>
2302
2303         * tree-eh.c (optimize_double_finally): Don't assume that the
2304         cleanup we're duplicating is only one statement.
2305
2306 2007-10-14  Kazu Hirata  <kazu@codesourcery.com>
2307
2308         * config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c,
2309         config/i386/i386.md, config/i386/sse.md, function.c, jump.c,
2310         modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c,
2311         tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c,
2312         tree-vect-transform.c: Fix comment typos.
2313         * doc/extend.texi: Fix a typo.
2314
2315         * c-common.h: Remove the prototype for c_expand_body.
2316         * c-tree.h: Remove the prototype for c_disregard_inline_limits.
2317         * tree.h: Remove the prototype for fold_build_call_expr.
2318
2319         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
2320         Remove.
2321         * c-tree.h: Remove the prototype for c_cannot_inline_tree_fn.
2322
2323 2007-10-13  David Edelsohn  <edelsohn@gnu.org>
2324
2325         * config/rs6000/aix53.h: New file.
2326         * config/rs6000/aix{41,43,51,52}.h (TARGET_ALTIVEC): Define to 0.
2327         (TARGET_ALTIVEC_ABI): Same.
2328         * config/rs6000/aix.h (TARGET_ALTIVEC): Delete.
2329         (TARGET_ALTIVEC_ABI): Delete.
2330         * config.gcc (powerpc-ibm-aix5*): Rename to aix5.2.  Add new
2331         stanza defaulting to aix5.3.
2332
2333 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
2334
2335         * config/i386/i386.md (SI_REG, DI_REG): New constants.
2336         (strmov): Use defined constants.
2337         (cmpstrnsi): Likewise.
2338         * config/i386/i386.c (decide_alg): Use defined constants.
2339         (ix86_expand_strlen): Likewise.
2340
2341 2007-10-12  Richard Sandiford  <rsandifo@nildram.co.uk>
2342
2343         * dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition.
2344         * var-tracking.c (micro_operation_def): Update comment on u.loc.
2345         (mode_for_reg_attrs, var_lowpart): New functions.
2346         (add_uses): Consider recording a lowpart of LOC for MO_USE.
2347         (add_stores): Likewise MO_SET and MO_COPY.  If the source of a set
2348         or copy is known, set LOC to the SET that performs the set, instead
2349         of the destination.
2350         (find_src_status, find_src_set_src): Remove LOC parameter.
2351         Replace INSN with the source value.
2352         (compute_bb_dataflow, emit_notes_in_bb): Check for a SET u.loc when
2353         handling MO_SET and MO_COPY.  Update the calls to find_src_status
2354         and find_src_set_src.
2355
2356 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
2357
2358         PR 11001
2359         * config/i386/i386.md (strmov): Check for esi and edi usage.
2360         * config/i386/i386.c (decide_alg): Check whether we can use a
2361         rep prefix and adjust algorithm choice accordingly.
2362         (ix86_expand_strlen): Check for eax, ecx, and edi usage.
2363
2364 2007-10-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2365
2366         * config/c4x/c4x.md (mulqi3, mulhi3): Use optab_libfunc.
2367
2368 2007-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
2369
2370         * global.c (build_insn_chain): Formatting fixes.
2371
2372 2007-10-12  Richard Guenther <rguenther@suse.de>
2373
2374         * tree-ssa-forwprop.c (forward_propagate_into_cond): For
2375         combining both operands require either both have single uses
2376         or combining to a constant.
2377
2378 2007-10-12  Richard Guenther  <rguenther@suse.de>
2379
2380         PR middle-end/26198
2381         * tree-ssa-forwprop.c (can_propagate_from): Do not propagate from
2382         a rhs with side-effects or which is a load.
2383         (forward_propagate_into_cond): Also try combining both operands.
2384
2385 2007-10-12  Uros Bizjak  <ubizjak@gmail.com>
2386
2387         PR tree-optimization/33742
2388         * tree-vect-transform.c (vectorizable_operation): Return false
2389         if get_vectype_for_scalar_type for scalar_dest can't be determined.
2390         (vectorizable_call): Same for rhs_type and lhs_type.
2391
2392 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
2393
2394         PR tree-optimization/33645
2395         * tree-ssa-live.c (mark_all_vars_used): Add data argument,
2396         pass it to walk_tree.
2397         (mark_all_vars_used_1): Pass data through to mark_all_vars_used.
2398         When calling set_is_used on a VAR_DECL, if data is not NULL and
2399         its DECL_UID is in the bitmap, call mark_all_vars_used on its
2400         DECL_INITIAL after clearing the bit in bitmap.
2401         (remove_unused_locals): Adjust mark_all_vars_used callers.
2402         Instead of removing unused global vars from unexpanded_var_list
2403         immediately record them in bitmap, call mark_all_vars_used on
2404         all used global vars from unexpanded_var_list and only purge
2405         global vars that weren't found used even during that step.
2406  
2407 2007-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2408
2409         * gthr-posix.h (__gthread_active_init): Create detached instead of
2410         joinable thread when testing whether threads are active on hppa-hpux.
2411         * gthr-posix95.h (__gthread_active_init): Likewise.
2412
2413 2007-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2414
2415         PR middle-end/33676
2416         * global.c (build_insn_chain): Include insn that occur between
2417         basic blocks.
2418         
2419 2007-10-11  Tom Tromey  <tromey@redhat.com>
2420
2421         * gengtype-yacc.y: Delete.
2422
2423 2007-10-11  Uros Bizjak  <ubizjak@gmail.com>
2424
2425         * config/i386/i386.md (AX_REG, DX_REG, CX_REG): New constants.
2426         * config/i386/i386.c (ix86_function_arg_regno_p, function_arg_32,
2427         function_value_32, function_value_64, function_value_ms_64,
2428         setup_incoming_varargs_64, ix86_expand_prologue, ix86_expand_call,
2429         legitimize_tls_address, x86_this_parameter, x86_output_mi_thunk):
2430         Use new constants.
2431
2432 2007-10-11  Richard Guenther  <rguenther@suse.de>
2433
2434         * gcse.c (hash_scan_set): If the next nonnote insn is in
2435         a different basic block insert the set.
2436
2437 2007-10-11  Richard Guenther  <rguenther@suse.de>
2438
2439         PR middle-end/33724
2440         * tree-cfg.c (one_pointer_to_useless_type_conversion_p): New function.
2441         (verify_gimple_expr): Use it to verify pointer-to types for
2442         ADDR_EXPRs.
2443
2444 2007-10-11  Richard Guenther  <rguenther@suse.de>
2445
2446         PR c/33726
2447         * c-typeck.c (build_array_ref): Do not strip qualifiers from
2448         the array element type.
2449
2450 2007-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
2451
2452         PR rtl-optimization/33638
2453         * dse.c (struct insn_info): Remove 'stack_read' field,
2454         add 'stack_pointer_based' field.
2455         (record_store): For a store with non-constant base, record
2456         whether it is stack pointer based.
2457         (scan_insn): For the call to a const function, remove stack
2458         pointer based stores from the list of local active stores.
2459         (scan_reads_nospill): Delete code dealing with const functions.
2460
2461 2007-10-10  Peter Bergner  <bergner@vnet.ibm.com>
2462
2463         * ra-conflict.c (partial_bitnum, max_bitnum): Change type of variables
2464         to HOST_WIDE_INT.
2465         (conflict_p, set_conflict, set_conflicts): Likewise.
2466         * global.c (global_alloc): Likewise.
2467         * ra.h: Update prototypes.
2468
2469 2007-10-10  Wolfgang Gellerich  <gellerich@de.ibm.com>
2470
2471         * opth-gen.awk: Fixed generation of comment stating the origin
2472           of options.h
2473
2474 2007-10-10  Kazu Hirata  <kazu@codesourcery.com>
2475
2476         Revert:
2477         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2478         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
2479         and '%}', respectively.
2480
2481         Revert:
2482         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2483         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
2484         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
2485         and '}'.
2486         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
2487         meant to be output.
2488
2489         Revert:
2490         2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
2491         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
2492         syntax for ASSEMBLER_DIALECT.
2493         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
2494
2495 2007-10-10  Revital Eres  <eres@il.ibm.com>
2496
2497         * modulo-sched.c (check_nodes_order): Dump the final order of
2498         the nodes.
2499         (get_sched_window): Add dump info.
2500         (calculate_order_params): Dump order params of the nodes.
2501
2502 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
2503
2504         PR middle-end/33669
2505         * ra-conflict.c (record_one_conflict_between_regnos, 
2506         set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
2507         (global_conflicts): Enhanced incorrect check.
2508         
2509 2007-10-09  Geoffrey Keating  <geoffk@apple.com>
2510
2511         * dwarf2out.c (output_call_frame_info): FDEs are always emitted
2512         if flag_exceptions is not set.
2513         * config/darwin.c (darwin_emit_unwind_label): Rewrite to use
2514         assemble_name rather than incorrectly emulating it.
2515
2516         * doc/extend.texi (Deprecated Features): Mention that <? and >? and
2517         friends are removed from G++.
2518
2519 2007-10-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2520
2521         * c-opts.c (c_common_handle_option): -Wnontemplate-friend,
2522         -Wwrite-strings and -Wmultichar are enabled by default, so Wall
2523         enabling them is redundant. Don't check two times for
2524         c_dialect_cxx.
2525         
2526 2007-10-09  H.J. Lu  <hongjiu.lu@intel.com>
2527
2528         * ra-conflict.c (record_one_conflict_between_regnos): Revert
2529         the last change.
2530         (set_conflicts_for_earlyclobber): Likewise.
2531         (global_conflicts): Likewise.
2532
2533 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2534
2535         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
2536         and '%}', respectively.
2537
2538 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2539
2540         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
2541         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
2542         and '}'.
2543         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
2544         meant to be output.
2545
2546 2007-10-09  Richard Guenther  <rguenther@suse.de>
2547
2548         PR middle-end/33692
2549         * gimplify.c (canonicalize_component_ref): Honor qualifiers
2550         of referenced structure and component.
2551
2552 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
2553
2554         PR middle-end/33669
2555         * ra-conflict.c (record_one_conflict_between_regnos,
2556         set_conflicts_for_earlyclobber, global_conflicts): Improved
2557         logging.
2558         (global_conflicts): Removed incorrect check.
2559
2560 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
2561
2562         PR tree-optimization/33615
2563         * tree-ssa-pre.c (compute_avail): Don't call make_values_for_stmt
2564         if the statement might throw.  Fix formatting.
2565
2566 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
2567
2568         PR tree-optimization/33615
2569         * tree-ssa-loop-im.c (movement_possibility): Return MOVE_IMPOSSIBLE
2570         if the rhs might throw.
2571
2572 2007-10-09  Jan Hubicka  <jh@suse.cz>
2573
2574         * invoke.texi (align-threshold, align-loop-iterations): Document.
2575         * final.c: Include cfgloop.h, params.h
2576         (compute_alignments): Dump decisions and compare them with loop
2577         structure; honor given parameters.
2578         (pass_compute_alignments): New dump file.
2579         * params.def (PARAM_ALIGN_THRESHOLD, PARAM_ALIGN_LOOP_ITERATIONS): New.
2580         * Makefile.in (final.o): Add dependency on cfgloop.h and params.h
2581
2582 2007-10-09  James E. Wilson  <wilson@specifix.com>
2583
2584         PR tree-optimization/33655
2585         PR middle-end/22156
2586         * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
2587         convert it to bitsizetype before size_binop call.
2588
2589 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
2590
2591         PR tree-optimization/33572
2592         * tree-inline.c (update_ssa_across_abnormal_edges): Tolerate
2593         the absence of a corresponding edge from the exit block.
2594
2595 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
2596
2597         PR middle-end/22156
2598         * tree-sra.c (instantiate_element): Use BYTES_BIG_ENDIAN for
2599         bit-field layout.
2600         (sra_build_assignment): Likewise.  Set up mask depending on
2601         precision, not type.
2602         (sra_build_bf_assignment): Use BYTES_BIG_ENDIAN.  Don't overflow
2603         computing bit masks.
2604         (sra_build_elt_assignment): Don't view-convert from signed to
2605         unsigned.
2606         (sra_explode_bitfield_assignment): Use bit-field type if
2607         possible.  Use BYTES_BIG_ENDIAN.
2608
2609 2007-10-08  Alexandre Oliva  <aoliva@redhat.com>
2610
2611         PR middle-end/22156
2612         * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether
2613         the original stmt can throw.
2614         (sra_build_bf_assignment): Fix type mismatch when applying negated
2615         mask.
2616
2617 2007-10-08  Geoffrey Keating  <geoffk@apple.com>
2618
2619         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
2620         '#pragma mark' to be executed at preprocessing time.
2621
2622 2007-10-08  Ollie Wild  <aaw@google.com>
2623
2624         * varasm.c (compare_constant): Removed call to
2625         lang_hooks.expand_constant.
2626         (copy_constants): Removed call to lang_hooks.expand_constant.
2627         (compute_reloc_for_constant): Removed call to
2628         lang_hooks.expand_constant.
2629         (output_addressed_constants): Removed call to
2630         lang_hooks.expand_constant.
2631         (constructor_static_from_elts_p): Removed call to
2632         lang_hooks.expand_constant.
2633         (output_constant): Removed calls to lang_hooks.expand_constant.
2634         * langhooks.h (struct lang_hooks): Removed field expand_constant.
2635         * langhooks-def.h (lhd_return_tree): Removed.
2636         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
2637         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
2638         * langhooks.c (lhd_return_tree): Removed.
2639
2640 2007-10-08  Mark Shinwell  <shinwell@codesourcery.com>
2641
2642         * combine.c (setup_incoming_promotions): Ensure that
2643         arguments that have not undergone mode promotions do not
2644         incorrectly get marked as being sign- or zero-extended.
2645
2646 2007-10-08  Richard Guenther  <rguenther@suse.de>
2647
2648         PR middle-end/33693
2649         PR middle-end/33695
2650         PR middle-end/33697
2651         * fold-const.c (fold_binary): Use correct types in folding
2652         of a * (1 << b) to (a << b).  Likewise for ~A & ~B to ~(A | B)
2653         and building of RROTATE_EXPR.
2654
2655 2007-10-08  Richard Guenther  <rguenther@suse.de>
2656
2657         PR middle-end/33691
2658         PR middle-end/33694
2659         PR middle-end/33696
2660         * fold-const.c (fold_binary): Use the correct types when
2661         folding (A | CST1) & CST2 to (A & CST2) | (CST1 & CST2).
2662         (fold_binary): Use the correct types when folding
2663         (-A) - B to (-B) - A.
2664         (fold_unary): Use the correct types when folding ~(X).
2665
2666 2007-10-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2667
2668         * doc/invoke.texi (Wall): fix formatting issues.
2669         
2670 2007-10-07  Richard Sandiford  <rsandifo@nildram.co.uk>
2671
2672         * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
2673         truncated shift counts.
2674
2675 2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
2676
2677         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
2678         syntax for ASSEMBLER_DIALECT.
2679         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
2680
2681 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
2682             Nathan Froyd  <froydnj@codesourcery.com>
2683
2684         * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
2685         when determining whether to record INCOMING_RETURN_ADDR_RTX.
2686
2687 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
2688
2689         Revert:
2690         2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
2691
2692         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
2693         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
2694         the function, temporarily point the debug interface to the null one.
2695
2696 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
2697
2698         PR tree-optimization/33655
2699         PR middle-end/22156
2700         * tree-sra.c (bitfield_overlaps_p): Handle array and complex
2701         elements.
2702
2703 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
2704
2705         PR tree-optimization/33572
2706         * tree-cfg.c (verify_stmts): Check for missing PHI defs.
2707         * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
2708         (update_ssa_across_abnormal_edges): ... this.  Set slots in the
2709         return PHI node.
2710         (copy_edges_for_bb): Handle nonlocal label edges.
2711         (make_nonlocal_label_edges): Deleted.
2712         (optimize_inline_calls): Don't call it.
2713
2714 2007-10-05  Hans-Peter Nilsson  <hp@axis.com>
2715
2716         * gthr-single.h: Revert last change.
2717
2718 2007-10-05  Michael Matz  <matz@suse.de>
2719
2720         PR middle-end/33667
2721         * lower-subreg.c (decompose_multiword_subregs): Use
2722         validate_unshare_change().
2723
2724 2007-10-05  Peter Bergner  <bergner@vnet.ibm.com>
2725
2726         * ra-conflict.c: Include "sparseset.h".
2727         (conflicts): Change to HOST_WIDEST_FAST_INT.
2728         (allocnos_live): Redefine variable as a sparseset.
2729         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE):
2730         Delete macros.
2731         (allocno_row_words): Removed global variable.
2732         (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
2733         (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
2734         (conflict_p, set_conflict_p, set_conflicts_p): New functions.
2735         (record_one_conflict_between_regnos): Cache allocno values and reuse.
2736         Use set_conflict_p.
2737         (record_one_conflict): Update uses of allocnos_live to use
2738         the sparseset routines.  Use set_conflicts_p.
2739         (mark_reg_store): Likewise.
2740         (set_reg_in_live): Likewise.
2741         (global_conflicts): Update uses of allocnos_live.
2742         Use the new adjacency list to visit an allocno's neighbors
2743         rather than iterating over all possible allocnos.
2744         Call set_conflicts_p to setup conflicts rather than adding
2745         them manually.
2746         * global.c: Comments updated.  
2747         (CONFLICTP): Delete define.
2748         (regno_compare): New function.  Add prototype.
2749         (global_alloc): Sort the allocno to regno mapping according to
2750         which basic blocks the regnos are referenced in.  Modify the
2751         conflict bit matrix to a compressed triangular bitmatrix.
2752         Only allocate the conflict bit matrix and adjacency lists if
2753         we are actually going to allocate something.
2754         (expand_preferences): Use conflict_p.  Update uses of allocnos_live.
2755         (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
2756         allocno's neighbors rather than iterating over all possible allocnos.
2757         (mirror_conflicts): Removed function.
2758         (dump_conflicts): Iterate over regnos rather than allocnos so
2759         that all dump output will be sorted by regno number.
2760         Use the FOR_EACH_CONFLICT macro.
2761         * ra.h: Comments updated.
2762         (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
2763         (partial_bitnum, max_bitnum, adjacency, adjacency_pool):
2764         Add prototypes.
2765         (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
2766         (adjacency_list_d, adjacency_iterator_d): New types.
2767         (add_neighbor, adjacency_iter_init, adjacency_iter_done,
2768         adjacency_iter_next, regno_basic_block): New static inline functions.
2769         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
2770         (conflict_p): Add function prototype.
2771         * sparseset.h, sparseset.c: New files.
2772         * Makefile.in (OBJS-common): Add sparseset.o.
2773         (sparseset.o): New rule.
2774
2775 2007-10-05  Richard Guenther  <rguenther@suse.de>
2776
2777         PR middle-end/33666
2778         * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
2779         to (long long)ptr.
2780
2781 2007-10-05  Michael Matz  <matz@suse.de>
2782
2783         PR inline-asm/33600
2784         * function.c (match_asm_constraints_1): Check for input
2785         being used in the outputs.
2786
2787 2007-10-05  Richard Guenther  <rguenther@suse.de>
2788
2789         * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
2790
2791 2007-10-05  Richard Sandiford  <rsandifo@nildram.co.uk>
2792
2793         PR target/33635
2794         * config/mips/mips.c (mips_register_move_cost): Rewrite to use
2795         subset checks.  Make the cost of FPR -> FPR moves depend on
2796         mips_mode_ok_for_mov_fmt_p.
2797
2798 2007-10-04  Doug Kwan  <dougkwan@google.com>
2799
2800         * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
2801         __gthread_cond_wait_recursive): Add to extend interface for POSIX
2802         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
2803         support of conditional variables.
2804         * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
2805         __gthread_cond_wait_recursive): Add to extend interface for POSIX
2806         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
2807         support of conditional variables.
2808         * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
2809         __gthread_cond_wait_recursive): Add to extend interface for POSIX
2810         conditional variables.
2811         * gthr.h: Update comments to document new interface.
2812
2813 2007-10-04  Geoffrey Keating  <geoffk@apple.com>
2814
2815         * cgraphunit.c (cgraph_build_static_cdtor): Don't set
2816         DECL_IGNORED_P.
2817
2818 2007-10-04  Anatoly Sokolov <aesok@post.ru>
2819
2820         * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
2821
2822 2007-10-04  Richard Guenther  <rguenther@suse.de>
2823
2824         PR middle-end/33641
2825         * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
2826         does not need to be of INTEGER_TYPE.
2827         (verify_gimple_2): New function split out from ...
2828         (verify_gimple_1): ... here.  ICE if there was an error during
2829         verification.
2830
2831 2007-10-04  Michael Matz  <matz@suse.de>
2832
2833         PR rtl-optimization/33653
2834         * dce.c (deletable_insn_p_1): Use volatile_refs_p().
2835         * dse.c (scan_insn): Same.
2836
2837 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
2838
2839         * config.gcc: Remove USE_GAS for m68k targets.
2840
2841 2007-10-04  Richard Guenther  <rguenther@suse.de>
2842
2843         PR tree-optimization/33627
2844         * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
2845         * tree-gimple.c (canonicalize_cond_expr_cond): New function,
2846         split out from ...
2847         * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
2848         * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
2849
2850 2007-10-04  Anatoly Sokolov <aesok@post.ru>
2851
2852         * config/avr/avr.c (commands_in_file, commands_in_prologues, 
2853         commands_in_epilogues): Remove variables.
2854         (avr_file_start): Remove unneded initializations of commands_in_file,
2855         commands_in_prologues and commands_in_epilogues variables.
2856         (avr_file_end): Remove dead code.
2857
2858 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
2859
2860         * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
2861         MOTOROLA is to true.
2862
2863 2007-10-03  Richard Sandiford  <rsandifo@nildram.co.uk>
2864
2865         PR target/33635
2866         * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
2867         (mips_split_doubleword_move): ...this.
2868         * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
2869         use natural endianness for multi-format FPR values.
2870         (mips_split_64bit_move): Rename to...
2871         (mips_split_doubleword_move): ...this and extend to 64-bit words.
2872         Use move_doubleword_fpr* patterns for moves involving FPRs.
2873         (mips_save_reg): Update the call to mips_split_64bit_move.
2874         (mips_secondary_reload_class): Return NO_REGS for any reload of a
2875         nonzero constant into an FPR if the constant can be forced to memory.
2876         * config/mips/mips.md: Update the splitter calls to
2877         mips_split_64bit_move.
2878         (UNSPEC_LOAD_DF_LOW): Rename to...
2879         (UNSPEC_LOAD_LOW): ...this.
2880         (UNSPEC_LOAD_DF_HIGH): Rename to...
2881         (UNSPEC_LOAD_HIGH): ...this.
2882         (UNSPEC_STORE_DF_HIGH): Rename to...
2883         (UNSPEC_STORE_WORD): ...this.
2884         (SPLITF): New mode iterator.
2885         (HALFMODE): New mode attribute.
2886         (movtf): New expander.
2887         (*movtf_internal): New define_insn_and_split.
2888         (move_doubleword_fpr<mode>): New expander.
2889         (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
2890         with...
2891         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
2892         (mfhc1<mode>): ...these more general patterns.
2893
2894 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
2895
2896         * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
2897
2898 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
2899
2900         * gcse.c (hash_scan_set): Insert set in insn before note at
2901         the end of basic block.
2902
2903 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
2904
2905         PR tree-optimization/33576
2906         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
2907         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
2908         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
2909         (remove_iv): Declared.
2910         * lambda-code.c (remove_iv): Not static.
2911         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
2912         Don't remove ivs there, save ivs in the buffer.
2913
2914 2007-10-03  Jason Merrill  <jason@redhat.com>
2915
2916         PR c++/15764
2917         * tree-eh.c (same_handler_p): New fn.
2918         (optimize_double_finally): New fn.
2919         (refactor_eh_r): New fn.
2920         (refactor_eh): New fn.
2921         (pass_refactor_eh): New pass.
2922         * tree-pass.h: Declare it.
2923         * passes.c (init_optimization_passes): Add it.
2924
2925 2007-10-03  Doug Kwan  <dougkwan@google.com>
2926         Richard Guenther  <rguenther@suse.de>
2927
2928         PR debug/31899
2929         * dwarf2out.c (reference_to_unused): Disable sanity checking,
2930         be conservative instead.
2931
2932 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2933
2934         PR fortran/26682
2935         * doc/invoke.texi (-fwhole-program): Document that Fortran
2936         doesn't support this option.
2937
2938 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
2939
2940         PR middle-end/33617
2941         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
2942         expand_expr.
2943
2944 2007-10-02  David Daney  <ddaney@avtrex.com>
2945
2946         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
2947         against constant zero.
2948         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
2949         operand.
2950
2951 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
2952
2953         * ra-conflict.c: New file.
2954         * ra.h: New file.
2955         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
2956         usage to DF_LIVE usage.
2957         (reload): Remove reference to df_get_live_top.
2958         * rtlanal.c (subreg_nregs_with_regno): New function.  
2959         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
2960         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
2961         (df_has_eh_preds): Removed.
2962         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
2963         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
2964         bb_has_eh_pred.
2965         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
2966         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
2967         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
2968         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
2969         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
2970         (global_alloc): Turn off rescanning insns after call to
2971         global_conflicts and added call to set_preferences.
2972         (global_conflicts): Moved to ra-alloc.c.
2973         (set_preferences_1, set_preferences): New function.
2974         (mirror_conflicts): Changed types for various variables.
2975         (mark_elimination): Change DF_RA_LIVE
2976         usage to DF_LIVE usage.
2977         (build_insn_chain): Rewritten from scratch and made local.
2978         (print_insn_chain, print_insn_chains): New functions.
2979         (dump_conflicts): Do not print conflicts for fixed_regs.
2980         (rest_of_handle_global_alloc): Turn off insn rescanning.
2981         * hard-reg-set.h: Fixed comment.
2982         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
2983         usage to DF_LIVE usage and delete refs to TOP sets.
2984         (block_alloc): Mark regs as live if they are in the artificial
2985         defs at top of block.
2986         (find_stack_regs): New function.
2987         (rest_of_handle_local_alloc): Changed urec problem to live
2988         problem and do not turn off df rescanning.
2989         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
2990         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
2991         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
2992         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
2993         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
2994         fields in df_ref_flags.  The rest have been renumbered.  
2995         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
2996         at -O1.
2997         * rtl.h (subreg_nregs_with_regno): New function.
2998         * df-problems.c: (df_get_live_out, df_get_live_in,
2999         df_get_live_top): Removed reference to DF_RA_LIVE.
3000         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
3001         df_live_alloc, df_live_reset, df_live_local_finalize,
3002         df_live_free): Make top set only if different from in set.
3003         (df_lr_top_dump, df_live_top_dump): Only print top set if
3004         different from in set.
3005         (df_lr_bb_local_compute): Removed unnecessary check.
3006         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
3007         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
3008         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
3009         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
3010         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
3011         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
3012         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
3013         df_urec_add_problem): Removed.
3014         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
3015         bb_has_eh_pred. 
3016         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
3017         * basic_block.h (bb_has_abnormal_pred): New function.
3018         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
3019         usage to DF_LIVE usage.
3020         
3021 2007-10-02  Revital Eres  <eres@il.ibm.com>
3022
3023         * config/rs6000/predicates.md (easy_vector_constant): Return false
3024         for 750CL paired vectors.
3025         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
3026         vector constant.
3027         (vec_initv2sf): Add new description.
3028         (vconcatsf): Likewise.
3029         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
3030         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
3031
3032 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
3033
3034         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
3035         sinking the last stmt in a BB.
3036
3037 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
3038
3039         PR middle-end/22156
3040         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
3041         (sra_hash_tree): Handle BIT_FIELD_REFs.
3042         (sra_elt_hash): Don't hash bitfld blocks.
3043         (sra_elt_eq): Skip them in parent compares as well.  Handle
3044         BIT_FIELD_REFs.
3045         (build_element_name_1): Handle BIT_FIELD_REFs.
3046         (instantiate_element): Propagate nowarn from parents.  Create
3047         BIT_FIELD_REF for variables that are widened by scalarization.
3048         Gimple-zero-initialize all bit-field variables that are not
3049         part of parameters that are going to be scalarized on entry.
3050         (instantiate_missing_elements_1): Return the sra_elt.
3051         (canon_type_for_field): New.
3052         (try_instantiate_multiple_fields): New.  Infer widest possible
3053         access mode from decl or member type, but clip it at word
3054         size, and only widen it if a field crosses an alignment
3055         boundary.
3056         (instantiate_missing_elements): Use them.
3057         (generate_one_element_ref): Handle BIT_FIELD_REFs.
3058         (scalar_bitfield_p): New.
3059         (sra_build_assignment): Optimize assignments from scalarizable
3060         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
3061         counts.
3062         (REPLDUP): New.
3063         (sra_build_bf_assignment): New.  Optimize assignments to
3064         scalarizable BIT_FIELD_REFs.
3065         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
3066         assignments to full variables.
3067         (generate_copy_inout): Use the new macros and functions.
3068         (generate_element_copy): Likewise.  Handle bitfld differences.
3069         (generate_element_zero): Don't recurse for blocks.  Use
3070         sra_build_elt_assignment.
3071         (generate_one_element_init): Take elt instead of var.  Use
3072         sra_build_elt_assignment.
3073         (generate_element_init_1): Adjust.
3074         (bitfield_overlap_info): New struct.
3075         (bitfield_overlaps_p): New.
3076         (sra_explode_bitfield_assignment): New.  Adjust widened
3077         variables to account for endianness.
3078         (sra_sync_for_bitfield_assignment): New.
3079         (scalarize_use): Re-expand assignment to/from scalarized
3080         BIT_FIELD_REFs.  Explode or sync needed members for
3081         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
3082         (scalarize_copy): Use REPLDUP.
3083         (scalarize_ldst): Move assert before dereference.  Adjust EH
3084         handling.
3085         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
3086
3087 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
3088
3089         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
3090         Rename CR_* constants to CMP_*.  Fix spacing.
3091
3092 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3093
3094         PR other/33585
3095         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
3096         to be processed with the special script doc/install.texi2html.
3097         
3098 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3099
3100         * doc/invoke.texi (Wall): List the options enabled by Wall.
3101         (Wstrict-aliasing): Add missing @option.
3102         
3103 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
3104
3105         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
3106         rather than gen_lowpart to change a register from DImode to DFmode.
3107         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
3108         both FROM and TO are integer modes that are no bigger than 4 bytes.
3109         (mips_mode_ok_for_mov_fmt_p): New function.
3110         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
3111         (mips_secondary_reload_class): Tweak formatting and comments.
3112         Use reg_class_subset_p instead of direct comparisons with
3113         classes.  Only allow direct FPR<->FPR moves for modes that
3114         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
3115         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
3116         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
3117         (*movdi_64bit): Likewise.
3118         (*movsi_internal): Likewise.
3119         (*movhi_internal): Likewise.
3120         (*movqi_internal): Likewise.
3121
3122 2007-09-30  Diego Novillo  <dnovillo@google.com>
3123
3124         PR 33593
3125         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
3126         throw an exception.
3127
3128 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
3129
3130         PR tree-optimization/33597
3131         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
3132         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
3133
3134 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
3135
3136         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
3137         instead of variants of (!reload_in_progress && !reload_completed).
3138         (x86_expand_vector_move): Ditto.
3139
3140 2007-09-28  Ollie Wild  <aaw@google.com>
3141
3142         Revert
3143         2007-09-27  Ollie Wild  <aaw@google.com>
3144
3145         * varasm.c (compare_constant): Removed call to
3146         lang_hooks.expand_constant.
3147         (copy_constants): Removed call to lang_hooks.expand_constant.
3148         (compute_reloc_for_constant): Removed call to
3149         lang_hooks.expand_constant.
3150         (output_addressed_constants): Removed call to
3151         lang_hooks.expand_constant.
3152         (constructor_static_from_elts_p): Removed call to
3153         lang_hooks.expand_constant.
3154         (output_constant): Removed calls to lang_hooks.expand_constant.
3155         * langhooks.h (struct lang_hooks): Removed field expand_constant.
3156         * langhooks-def.h (lhd_return_tree): Removed.
3157         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
3158         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
3159         * langhooks.c (lhd_return_tree): Removed.
3160
3161 2007-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3162
3163         PR target/33347
3164         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
3165         argument to gen_selb.
3166
3167 2007-09-28  Chao-ying Fu  <fu@mips.com>
3168
3169         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
3170         * doc/libgcc.texi (Fixed-point fractional library routines):
3171         Fix typos for neg and cmp functions.
3172
3173 2007-09-28  Michael Matz  <matz@suse.de>
3174
3175         PR rtl-optimization/33552
3176         * function.c (match_asm_constraints_1): Check for overlap in
3177         inputs and replace all occurences.
3178
3179 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
3180
3181         * config/mips/mips.c (override_options): Fix comment typo.
3182
3183 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
3184
3185         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
3186         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
3187         * config/bfin/t-bfin-linux (crti.o): Don't build.
3188         (crtn.o): Likewise.
3189         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
3190         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
3191         (crtn.o): Likewise.
3192         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
3193
3194 2007-09-27  Ollie Wild  <aaw@google.com>
3195
3196         * varasm.c (compare_constant): Removed call to
3197         lang_hooks.expand_constant.
3198         (copy_constants): Removed call to lang_hooks.expand_constant.
3199         (compute_reloc_for_constant): Removed call to
3200         lang_hooks.expand_constant.
3201         (output_addressed_constants): Removed call to
3202         lang_hooks.expand_constant.
3203         (constructor_static_from_elts_p): Removed call to
3204         lang_hooks.expand_constant.
3205         (output_constant): Removed calls to lang_hooks.expand_constant.
3206         * langhooks.h (struct lang_hooks): Removed field expand_constant.
3207         * langhooks-def.h (lhd_return_tree): Removed.
3208         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
3209         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
3210         * langhooks.c (lhd_return_tree): Removed.
3211
3212 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3213
3214         PR middle-end/33436
3215         * expr.c (emit_group_load_1): Split constant double when destination
3216         length is half source length.
3217
3218 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
3219
3220         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
3221         (mips_cpu_info): Add tune_flags.
3222         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
3223         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
3224         Remove end marker.
3225         (override_options): Remove deprecation code.  Use branch-likely
3226         instructions for optimize_size or if the tuning flags do not
3227         suggest otherwise.  Tweak warning.
3228         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
3229
3230 2007-09-27  Matthias Klose  <doko@ubuntu.com>
3231
3232         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
3233         multilib osdirname if it exists.
3234         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
3235
3236 2007-09-27  Ian Lance Taylor  <iant@google.com>
3237
3238         PR tree-optimization/33565
3239         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
3240         assignments of comparisons.
3241         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
3242         parameter.  Change caller.  Defer overflow warnings around call to
3243         fold_binary.
3244         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
3245         TREE_NO_WARNING is set on the statement.
3246         * tree-ssa-forwprop.c
3247         (tree_ssa_forward_propagate_single_use_vars): Don't test
3248         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
3249         * tree-cfg.c (fold_cond_expr_cond): Likewise.
3250
3251 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
3252
3253         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
3254         reduce offset by units of 0x10000 for SPE vector modes or modes
3255         used with E500 double instructions.
3256
3257 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
3258
3259         * simplify-rtx.c (comparison_result): New.
3260         (simplify_const_relational_operation): Use it instead of the five
3261         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
3262         Improve bounds-checking optimizations; remove subsumed POPCOUNT
3263         optimizations.  Extract nonzero_address_p optimizations into a
3264         separate "if" together with optimizations where op1 is const0_rtx.
3265         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
3266         floating-point arguments too when appropriate.  Hoist test for ABS
3267         outside the final switch statement.
3268         * cse.c (fold_rtx): Don't look for an IOR equivalent of
3269         folded_arg0 if we found a constant equivalent.  Remove
3270         transformations done in simplify-rtx.c for "op0 RELOP op0".
3271
3272 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
3273
3274         * builtins.c (expand_builtin, expand_builtin_object_size,
3275         expand_builtin_memory_chk, maybe_emit_chk_warning,
3276         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
3277         for diagnostics.
3278         * expr.c (expand_expr_real_1): Likewise.
3279         * langhooks-def.h (struct diagnostic_info): Add forward decl.
3280         (lhd_print_error_function): Add third argument.
3281         * langhooks.h (struct diagnostic_info): Add forward decl.
3282         (struct lang_hooks): Add third argument to print_error_function.
3283         * diagnostic.h (diagnostic_info): Add abstract_origin field.
3284         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
3285         second argument.
3286         (diagnostic_report_current_function): Likewise.
3287         * toplev.c (announce_function): Pass NULL as second argument to
3288         diagnostic_set_last_function.
3289         * diagnostic.c (diagnostic_report_current_function): Add second
3290         argument, pass it as third argument to lang_hooks.print_error_function.
3291         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
3292         to diagnostic_report_current_function.
3293         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
3294         and message.abstract_origin.
3295         (verbatim): Initialize abstract_origin.
3296         * pretty-print.h (text_info): Add abstract_origin field.
3297         * pretty-print.c (pp_base_format): Handle %K.
3298         * langhooks.c (lhd_print_error_function): Add third argument.  If
3299         diagnostic->abstract_origin, print virtual backtrace.
3300         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
3301         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
3302         (init_dynamic_diag_info): Likewise.
3303
3304 2007-09-26  David Daney  <ddaney@avtrex.com>
3305
3306         PR target/33479
3307         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
3308         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
3309         sync_old_nand<mode>, sync_new_nand<mode>,
3310         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
3311         Update length attributes.
3312         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
3313         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
3314         length attributes.
3315         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
3316         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
3317         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
3318         post-loop sync.
3319
3320 2007-09-26  Richard Guenther  <rguenther@suse.de>
3321
3322         PR tree-optimization/33563
3323         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
3324         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
3325         aggregate stores.
3326         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
3327         get_use_of_stmt_lhs.
3328
3329 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
3330
3331         PR c/25309
3332         * c-common.c (complete_array_type): Diagnose too-large arrays and
3333         set type to error_mark_node.
3334
3335 2007-09-26  Richard Guenther  <rguenther@suse.de>
3336
3337         PR tree-optimization/30375
3338         PR tree-optimization/33560
3339         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
3340         with calls.
3341
3342         Revert
3343         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
3344
3345         * tree-ssa-dse.c (aggregate_vardecl_d): New.
3346         (dse_global_data): Add aggregate_vardecl field.
3347         (dse_possible_dead_store_p): New.
3348         Add prev_defvar variable.
3349         Allow immediate uses and previous immediate uses to differ
3350         if they are setting different parts of the whole.
3351         (get_aggregate_vardecl): New.
3352         (dse_record_partial_aggregate_store): New.
3353         (dse_whole_aggregate_clobbered_p): New.
3354         (dse_partial_kill_p): New.
3355         Call dse_maybe_record_aggregate_store().
3356         When checking whether a STMT and its USE_STMT refer to the
3357         same memory address, check also for partial kills that clobber
3358         the whole.
3359         Move some variable definitions to the block where they are used.
3360         (aggregate_vardecl_hash): New.
3361         (aggregate_vardecl_eq): New.
3362         (aggregate_vardecl_free): New.
3363         (aggregate_whole_store_p): New.
3364         (tree_ssa_dse): Initialize and free aggregate_vardecl.
3365         Mark which aggregate stores we care about.
3366
3367 2007-09-25  DJ Delorie  <dj@redhat.com>
3368
3369         PR target/33551
3370         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
3371         XINT.
3372
3373 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
3374
3375         PR target/33524
3376         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
3377         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
3378         for vector int32 -> int64 conversions.  Don't write beyond the end
3379         of the allocated vector for int32 -> int64 conversions.
3380
3381 2007-09-25  Revital Eres  <eres@il.ibm.com>
3382
3383         * config/rs6000/paired.h (paired_sel): New.
3384         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
3385         (rs6000_expand_ternop_builtin): Pass zero const_double operand
3386         when expanding selv2sf.
3387         * config/rs6000/rs6000.h (rs6000_builtins): Add
3388         PAIRED_BUILTIN_SELV2SF4.
3389
3390 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
3391
3392         PR c/32295
3393         * c-typeck.c (default_conversion): Call require_complete_type
3394         before perform_integral_promotions.
3395         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
3396         (build_c_cast): Call require_complete_type except for casts to
3397         void types.
3398         (convert_for_assignment): Call require_complete_type.
3399
3400 2007-09-25  Revital Eres  <eres@il.ibm.com>
3401
3402         * config/spu/spu.md: Fix doloop pattern.
3403
3404 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
3405
3406         * config/bfin/bfin.c (expand_prologue_reg_save,
3407         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs
3408         and ASTAT moved here...
3409         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
3410         ... from here.  New argument ALL; callers changed.
3411         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
3412         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
3413         have the "saveall" attribute.
3414
3415 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
3416
3417         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
3418         bogus target macro.
3419         (INCOMING_REGNO, OUTGOING_REGNO): Define.
3420         * config/mmix/mmix.c (mmix_opposite_regno): New function.
3421         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
3422
3423         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
3424         with REG_P tests before REGNO access.
3425
3426 2007-09-24  DJ Delorie  <dj@redhat.com>
3427
3428         PR target/31482
3429         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
3430         constraint.
3431         (movqicc_<code>_<mode>): Likewise.
3432         (movhicc_<code>_<mode>): Likewise.
3433
3434 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3435
3436         PR target/33184
3437         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
3438         register for reload.
3439
3440 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
3441
3442         PR c++/14688
3443         * config/i386/i386.c (ix86_comp_type_attributes): Check
3444         METHOD_TYPE too.
3445
3446 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3447
3448         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
3449         "move.l %a4,%a4" to produce nops.
3450         * config/m68k/m68k.c (override_options): Reset align options,
3451         if neccessary align macro isn't avaible.
3452
3453 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3454
3455         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
3456
3457 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3458
3459         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
3460         the basic block.
3461         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
3462         reload is completed.
3463         (peephole pattern): Convert most of them to RTL peephole pattern.
3464
3465 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3466
3467         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
3468         (moved from fp compare patterns).
3469         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
3470         Cleanup predicates to relieve reload.
3471         (conditional_trap): Reject conditional trap with fp condition.
3472         * config/m68k/predicates.md (fp_src_operand): New, reject
3473         certain constants early.
3474
3475 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
3476
3477         * final.c (final_scan_insn): Remove accidentally duplicated code.
3478
3479 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3480
3481         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
3482         Allow --with-tune=cell and --with-cpu=cell.
3483
3484 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
3485
3486         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
3487         * config/rs6000/rs6000.opt (swdiv): Change option to ...
3488         (recip): this.
3489         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
3490         function.
3491         (TARGET_BUILTIN_RECIPROCAL): Use it.
3492         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
3493         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
3494         (rs6000_emit_swrsqrtsf): New.
3495         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
3496         rsqrtf. 
3497         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
3498         (divsf3): Remove swdiv support.
3499         (recipsf3): New.
3500         (rsqrtsf2): New.
3501         (rsqrt_internal1): New.
3502         (divdf3): Remove swdiv support.
3503         (reciptdf3): New.
3504
3505 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
3506
3507         PR c++/33506
3508         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
3509         field.
3510         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
3511         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
3512         * tree.c (type_hash_eq): For FUNCTION_TYPE use
3513         lang_hooks.type.type_hash_eq in addition to generic tests.
3514
3515 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
3516         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
3517
3518         * tree-inline.h (eni_weights): Add field target_builtin_cost to
3519         reflect the cost per call to a target specific builtin.
3520         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
3521         call to a target specific builtin, then use target_builtin_call_cost.
3522         (init_inline_once): Initialize target_builtin_call_cost field.
3523
3524 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
3525
3526         PR middle-end/33472
3527         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
3528         complex types.
3529
3530 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
3531
3532         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
3533         * configure: Regenerated.
3534
3535 2007-09-23  Ollie Wild  <aaw@google.com>
3536
3537         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
3538         operand.
3539         (get_pointer_modulus_and_residue): New function.
3540
3541 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3542
3543         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
3544         combine an SC return value into a single register.
3545
3546 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3547
3548         * opth-gen.awk (target_flags_explicit): Declare.
3549         * toplev.h (target_flags_explicit): Delete declaration.
3550         * toplev.c (target_flags): Likewise.
3551         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
3552         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
3553         Never return true for TARGET_MIPS16.
3554         * config/mips/mips.c (mips_llsc): Delete.
3555         (mips_handle_option): Remove -mllsc handling.
3556         (mips_strip_unspec_address): Tweak comment.
3557         * config/mips/mips.opt (mllsc): Use a target mask.
3558
3559 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3560
3561         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
3562         word_mode as well as Pmode.
3563
3564 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3565
3566         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
3567         parameters from word_mode to the subword type if such a truncation
3568         is not a no-op.
3569
3570 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
3571
3572         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
3573         * configure: Regenerated.
3574
3575 2007-09-23  Jan Hubicka  <jh@suse.cz>
3576
3577         * params.def (INLINE_CALL_COST): Set to 12.
3578         * invoke.texi (inline-call-cost): Update default value.
3579
3580 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
3581
3582         * config/alpha/alpha.md (movti): Use operand_subword for the split.
3583
3584 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
3585             Revital Eres  <eres@il.ibm.com>
3586
3587         * modulo-sched.c (doloop_register_get): Rewrite the loop which
3588         checks whether the count_reg is found outside the control part.
3589
3590 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
3591
3592         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
3593         instead of checking CALL_EXPR_FN directly to test for builtins.
3594         If error or warning attributes are present, print
3595         error resp. warning.
3596         * c-common.c (handle_error_attribute): New function.
3597         (c_common_attribute_table): Add error and warning
3598         attributes.
3599         * doc/extend.texi: Document error and warning attributes.
3600
3601         * tree.h (block_nonartificial_location): New prototype.
3602         * tree.c (block_nonartificial_location): New function.
3603         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
3604         if artificial attribute is present on abstract inline decl.
3605         * c-common.c (handle_artificial_attribute): New function.
3606         (c_common_attribute_table): Add artificial attribute.
3607         * final.c (override_filename, override_linenum): New variables.
3608         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
3609         and override_linenum if inside of a block inlined from
3610         __attribute__((__artificial__)) function.
3611         (notice_source_line): Honor override_filename and override_linenum.
3612         * doc/extend.texi: Document __attribute__((__artificial__)).
3613         * config/i386/emmintrin.h: Add __artificial__ attribute to
3614         all __always_inline__ functions.
3615         * config/i386/mmintrin.h: Likewise.
3616         * config/i386/tmmintrin.h: Likewise.
3617         * config/i386/mm3dnow.h: Likewise.
3618         * config/i386/pmmintrin.h: Likewise.
3619         * config/i386/ammintrin.h: Likewise.
3620         * config/i386/xmmintrin.h: Likewise.
3621         * config/i386/smmintrin.h: Likewise.
3622         * config/i386/bmmintrin.h: Likewise.
3623         * config/i386/mmintrin-common.h: Likewise.
3624
3625         PR middle-end/28755
3626         * expr.c (expand_constructor): New function.
3627         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
3628         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
3629         CONSTRUCTOR.
3630
3631 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3632
3633         * config/mips/mips.c (dump_constants_1): Generalize to include
3634         fractional and accumulator modes.
3635
3636 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3637
3638         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
3639         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
3640         flags for MIPS16.
3641         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
3642         TARGET_HARD_FLOAT when testing whether -mpaired-single is
3643         supported.
3644         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
3645         TARGET_DSP.
3646         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
3647         TARGET_DSPR2.
3648         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
3649         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
3650         TARGET_HARD_FLOAT.
3651         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
3652         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
3653         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
3654         throughout.
3655         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
3656         TARGET_HAS_DSPR2.
3657         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
3658         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
3659         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
3660
3661 2007-09-22  Jason Merrill  <jason@redhat.com>
3662
3663         PR c++/19407
3664         * attribs.c (lookup_attribute_spec): Split out...
3665         (decl_attributes): From here.
3666         * tree.h: Declare it.
3667
3668 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3669
3670         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
3671
3672 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
3673
3674         * tree-inline.c (remap_type_1): Correctly chain variants.
3675
3676 2007-09-22  Richard Guenther  <rguenther@suse.de>
3677
3678         PR tree-optimization/33146
3679         * fold-const.c (fold_binary): Use the original tree
3680         for negating.
3681         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
3682         also changes "sign".
3683
3684 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
3685
3686         PR target/32325
3687         * except.c (finish_eh_generation): Call commit_edge_insertions if
3688         there are insns queued on the entry edge.
3689         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
3690         the entry edge.
3691
3692 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3693
3694         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
3695
3696 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
3697
3698         * config/i386/i386.c: Delete trailing whitespace.
3699         * config/i386/i386.h: Ditto.
3700         * config/i386/bmmintrin.h: Ditto.
3701         * config/i386/sync.md: Ditto.
3702         * config/i386/ppro.md: Ditto.
3703         * config/i386/mmx.md: Ditto.
3704         * config/i386/constraints.md: Ditto.
3705         * config/i386/sse.md: Ditto.
3706         * config/i386/athlon.md: Ditto.
3707         * config/i386/i386.md: Ditto.
3708
3709 2007-09-21  Richard Guenther  <rguenther@suse.de>
3710
3711         PR tree-optimization/33508
3712         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
3713         quadratic loop by keeping a bitmap of variables we have
3714         to clobber all subvariables for.
3715         (set_initial_properties): Likewise.
3716
3717 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
3718
3719         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
3720
3721 2007-09-20  Nigel Stephens  <nigel@mips.com>
3722             Chao-ying Fu  <fu@mips.com>
3723
3724         * c-decl.c (finish_declspecs): When _Sat is used without
3725         _Fract or _Accum, set the default type to cts_fract.
3726         This avoids a warning of "type defaults to int".
3727
3728 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
3729
3730         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
3731         bit-fields wider than one bit.
3732
3733 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
3734
3735         PR debug/33316
3736         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
3737         DECL_NAME.
3738         * dbxout.c (dbxout_type): Likewise.
3739
3740         PR c/33238
3741         PR c/27301
3742         * gimplify.c (gimplify_vla_decl): New function.
3743         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
3744         Call it.
3745         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
3746
3747 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
3748
3749         * doc/invoke.texi (-minterlink-mips16): Document.
3750         * config/mips/mips.opt (minterlink-mips16): New option.
3751         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
3752         -minterlink-mips16
3753
3754 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
3755
3756         * doc/extend.texi (Attribute Syntax): Remove old speculative
3757         future direction.
3758
3759 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
3760
3761         * combine.c: Include cgraph.h.
3762         (setup_incoming_promotions): Rework to allow more aggressive
3763         elimination of sign extensions when all call sites of the
3764         current function are known to lie within the current unit.
3765
3766 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
3767
3768         * dse.c (find_shift_sequence): No-op rework of control flow.
3769
3770 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
3771
3772         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
3773         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
3774
3775 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3776
3777         * cfgexpand.c (dump_stack_var_partition): Use the correct
3778         index for the offset.
3779
3780 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
3781
3782         * config/mips/sde.h: Switch to GPLv3.
3783
3784 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
3785
3786         * tree-sra.c (decide_block_copy): Decide if there are groups.
3787
3788 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
3789
3790         * config/m68k/m68k.c (output_move_himode): Remove jump table
3791         recognition.
3792         config/m68k/m68k.md (lea): Likewise.
3793         * config/m68k/m68k.c (print_operand_address): Use simple pc
3794         relative addressing.
3795
3796 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
3797
3798         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
3799         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
3800         default definition.
3801         (asm_insn_count): Pass template as second argument to it.
3802         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
3803         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
3804         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
3805         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
3806         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
3807         (sh_insn_length_adjustment): Pass template as second argument to it.
3808         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
3809
3810         * config/bfin/bfin.md (define_asm_attributes): New.
3811
3812 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
3813
3814         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
3815         to tm_file.
3816         * config/bfin/print-sysroot-suffix.sh: New.
3817         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
3818         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
3819         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
3820         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
3821         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
3822         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
3823         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
3824         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
3825         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
3826         (linux-sysroot-suffix.h): New target.
3827         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
3828         (mspecld-anomaly): Likewise.
3829         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
3830         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
3831         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
3832         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
3833         (bfin_si_revision): Declare.
3834         (bfin_workarounds): Declare.
3835         (WA_SPECULATIVE_LOADS): Define.
3836         (ENABLE_WA_SPECULATIVE_LOADS): Define.
3837         (WA_SPECULATIVE_SYNCS): Define.
3838         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
3839         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
3840         (LIB_SPEC): Add %s to the linker scripts.
3841         Use proper linker script for bf522, bf525, bf527,
3842         bf538, bf539, bf542, bf544, bf548, and bf549.
3843         * config/bfin/bfin.c (bfin_si_revision): Define.
3844         (bfin_workarounds): Define.
3845         (struct bfin_cpu): New.
3846         (bfin_cpus): New.
3847         (bfin_handle_option): Handle silicon revision part of -mcpu option.
3848         (override_options): Set bfin_workarounds.
3849         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
3850         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
3851         ENABLE_WA_SPECULATIVE_LOADS.
3852         (bfin_reorg): Likewise.
3853         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
3854         macros for bf522, bf525, bf527, bf538, bf539,
3855         bf542, bf544, bf548, and bf549.
3856         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
3857         Don't define __ID_SHARED_LIB__ when -msep-data.
3858         (TARGET_DEFAULT): Define as 0.
3859         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
3860         * doc/invoke.texi (Blackfin Options): Document silicon
3861         revision part of -mcpu option and it now accepts bf522, bf525,
3862         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
3863
3864 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3865
3866         * alias.c (memory_modified_1): Deconstify.
3867         (memory_modified_in_insn_p): Don't use const_note_stores.
3868         * rtl.h (const_note_stores): Delete.
3869         * rtlanal.c (const_note_stores): Likewise.
3870
3871 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3872
3873         * dse.c (find_shift_sequence): Temporarily revert to forbidding
3874         word shifts.
3875
3876 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3877
3878         PR target/33388
3879         PR target/33397
3880         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
3881         (addsi_small_int): Likewise.
3882         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
3883         (one_cmplsi2): Likewise.
3884         (negsi2): Delete.
3885         (enter_func): Expand insn using hard_frame_pointer_rtx and
3886         stack_pointer_rtx.
3887         (*enter_func): New.
3888         * config/fr30/fr30.c (fr30_expand_prologue): Check for
3889         hard_frame_pointer_rtx instead of using REGNO() check.
3890         Properly sign extend GEN_INT() argument.
3891
3892 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
3893
3894         * config/m68k/m68k.c (override_options): Remove USE_GAS,
3895         use %. syntax.
3896         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
3897         alternatives with just jcc.
3898         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
3899         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
3900         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
3901         dbge_hi, dbge_si): Likewise.
3902
3903 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
3904
3905         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
3906         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
3907         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
3908         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
3909         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
3910
3911 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
3912
3913         * config/m68k/m68k-devices.def (51qe): New device.
3914         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
3915         to all uses of FL_FOR_isa_c for compatibility.
3916         (all_microarchs): Add cfv1 microarchitecture.
3917         (m68k_handle_option): Handle m51qe option.
3918         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
3919         (TUNE_CFV1): New macro.
3920         (enum uarch_type): Add ucfv1.
3921         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
3922         
3923 2007-09-18  Richard Guenther  <rguenther@suse.de>
3924
3925         PR tree-optimization/31863
3926         * tree-ssa-structalias.c (create_variable_info_for): Always
3927         free the fieldstack.
3928
3929 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
3930
3931         * opts.c (decode_options): Enable vectorization under -O3.
3932
3933 2007-09-18  Richard Guenther  <rguenther@suse.de>
3934
3935         PR tree-optimization/33340
3936         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
3937         SSA_NAMEs that occur in abnormal PHI nodes.
3938
3939 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3940
3941         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
3942         Don't use const_get_call_expr_in.
3943         * tree-gimple.c (const_get_call_expr_in): Delete.
3944         * tree-gimple.h (const_get_call_expr_in): Likewise.
3945
3946 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3947
3948         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
3949         not yet have a basic block.
3950         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
3951
3952 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3953
3954         * config/mips/mips.c (mips_file_start): Add ".previous" directives
3955         to both ".section"s.
3956
3957 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
3958
3959         * config/mips/mips.c (mips_output_mi_thunk): Use
3960         mips_function_ok_for_sibcall and const_call_insn_operand
3961         to determine if a direct sibcall is allowed.  Use
3962         mips_classify_symbol to determine a global pointer is needed.
3963
3964 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
3965
3966         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
3967
3968 2007-09-17  Chao-ying Fu  <fu@mips.com>
3969             Nigel Stephens  <nigel@mips.com>
3970
3971         * config/fixed-bit.h: New file.
3972         * config/fixed-bit.c: New file.
3973         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
3974
3975 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
3976
3977         * c-format.h (format_kind_info): Add alloc_char field.
3978         * c-format.c (scanf_flag_specs): Add 'm'.
3979         (scanf_flag_pairs): Add 'a', 'm' pair.
3980         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
3981         (format_types_orig): Add alloc_char fields.
3982         (check_format_info_main): Rename aflag to alloc_flag.
3983         Handle fki->alloc_char. modifier after width and before length
3984         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
3985         length modifiers as well.
3986         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
3987
3988         PR middle-end/33423
3989         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
3990         returned by build_call_expr.
3991
3992 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
3993
3994         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
3995         NULL for variable-sized records too.
3996         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
3997
3998 2007-09-17  Tom Tromey  <tromey@redhat.com>
3999
4000         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
4001         (c_builtin_function): Likewise.
4002         (grokdeclarator): Likewise.
4003
4004 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
4005
4006         PR rtl-optimization/26449
4007         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
4008         (seq_insns_valid_p): Removed.
4009
4010 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
4011
4012         * tree-nomudflap.c (gate_mudflap): New static function.
4013         (pass_mudflap_1): Use it as gate function.
4014         (pass_mudflap_2): Likewise.
4015
4016 2007-09-17  Jan Hubicka  <jh@suse.cz>
4017
4018         PR middle-end/33348
4019         PR target/33406
4020         * loop-invariant.c (move_invariant_reg): Unshare sequence.
4021
4022 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
4023
4024         PR tree-optimization/33319
4025         * tree-vect-analyze.c (vect_same_range_drs): New.
4026         (vect_vfa_range_equal): New.
4027         (vect_is_duplicate_ddr): Removed.
4028         (vect_mark_for_runtime_alias_test): Do not perform marking when
4029         optimizing for size or max_param for alias checking is zero.
4030         Move the function before vect_analyze_data_ref_dependence.
4031         (vect_analyze_data_ref_dependence): Add call to
4032         vect_mark_for_runtime_alias_test in two cases when dependence
4033         is not clear.
4034         (vect_analyze_data_ref_dependences): Do not call to
4035         vect_mark_for_runtime_alias_test.
4036         (vect_prune_runtime_alias_test_list): New.
4037         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
4038         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
4039         Update vec_outside_cost.
4040         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
4041         (vect_create_cond_for_alias_checks): Build the base address of data
4042         reference from DR_GROUP_FIRST_DR.
4043         (vect_loop_versioning): New.
4044         (vect_transform_loop): Add a call to vect_loop_versioning.
4045         Remove factored out code.
4046
4047 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4048
4049         PR middle-end/33273
4050         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
4051         to BLKmode.
4052
4053 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
4054
4055         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
4056         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
4057         Fix the call to insn_rtx_cost.  Skip access sizes that require a
4058         real truncation of the store register.  Use convert_move instead
4059         of gen_lowpart when narrowing the result.
4060         (replace_read): Use convert_move instead of gen_lowpart when
4061         narrowing the store rhs.
4062
4063 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
4064
4065         * config/mips/mips.md (SHORT): Fix long line.
4066         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
4067         to QImode and HImode.
4068
4069 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
4070
4071         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
4072
4073 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
4074
4075         * tree-parloops.c: New file.
4076         * tree-ssa-operands.h (free_stmt_operands): Declare.
4077         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
4078         block.
4079         * tree-pass.h (pass_parallelize_loops): Declare.
4080         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
4081         virtual operands.
4082         (build_omp_regions_1): Allow analysing just a single OMP region and
4083         its subregions.
4084         ( build_omp_regions_root, omp_expand_local): New functions.
4085         (build_omp_regions): Add argument to build_omp_regions_1 call.
4086         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
4087         autoparallelization is run.
4088         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
4089         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
4090         pass_parallelize_loops): New.
4091         * common.opt (ftree-parallelize-loops): New.
4092         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
4093         parallelize_loops): Declare.
4094         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
4095         * Makefile.in (tree-parloops.o): Added.
4096         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
4097         New functions.
4098         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
4099         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
4100         one extra edge as well.
4101         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
4102         Use VEC_free to free doms vector.
4103         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
4104         operands.  Recompute operand caches in the new function.
4105         (move_sese_region_to_fn): Update loop info.
4106         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
4107         * tree-ssa-operands.c (free_stmt_operands): New function.
4108
4109         * doc/passes.texi: Document autoparallelization.
4110         * doc/invoke.texi (-ftree-parallelize-loops): New option.
4111
4112 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4113
4114         PR target/33062
4115         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
4116         TYPE_PRECISION.
4117
4118 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
4119
4120         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
4121         the VEC is not NULL.
4122         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
4123         get_vectype_for_scalar_type succeeded.
4124         (vectorizable_conversion): Likewise.
4125
4126 2007-09-14  Jan Hubicka  <jh@suse.cz>
4127
4128         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
4129         TARGET_64BIT.
4130
4131 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
4132
4133         PR target/33438
4134         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
4135         register when operands[2] equals operands[1].
4136         (remainderxf3): Ditto.
4137
4138 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
4139             Nigel Stephens  <nigel@mips.com>
4140
4141         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
4142         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
4143         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
4144         declaration.
4145         (_Unwind_ForcedUnwind): Likewise.
4146         (_Unwind_Resume): Likewise.
4147         (_Unwind_Resume_or_Rethrow): Likewise.
4148         (_Unwind_Backtrace): Likewise.
4149         (_Unwind_SjLj_RaiseException): Likewise.
4150         (_Unwind_SjLj_ForcedUnwind): Likewise.
4151         (_Unwind_SjLj_Resume): Likewise.
4152         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
4153         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
4154         to definition.
4155         (_Unwind_ForcedUnwind): Likewise.
4156         (_Unwind_Resume): Likewise.
4157         (_Unwind_Resume_or_Rethrow): Likewise.
4158         (_Unwind_Backtrace): Likewise.
4159         * unwind-compat.c (_Unwind_Backtrace): Likewise.
4160         (_Unwind_ForcedUnwind): Likewise.
4161         (_Unwind_RaiseException): Likewise.
4162         (_Unwind_Resume): Likewise.
4163         (_Unwind_Resume_or_Rethrow): Likewise.
4164
4165         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
4166         nomips16 mode when IN_LIBGCC2 with hard float.
4167
4168 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
4169
4170         * config/mips/sdemtk.opt: Update to GPLv3.
4171         * config/mips/sdemtk.h: Likewise.
4172
4173 2007-09-14  Nigel Stephens  <nigel@mips.com>
4174
4175         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
4176         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
4177         for mipsisa32-*-linux*.
4178
4179 2007-09-14  Nigel Stephens  <nigel@mips.com>
4180             David Ung  <davidu@mips.com>
4181             Thiemo Seufer  <ths@mips.com>
4182             Richard Sandiford  <richard@codesourcery.com>
4183
4184         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
4185         * configure.ac: Add a mipssde threading type.
4186         * configure: Regenerate.
4187         * config/mips/sdemtk.h: New file.
4188         * config/mips/t-sdemtk: Likewise.
4189         * config/mips/sdemtk.opt: Likewise.
4190         * gthr-mipssde.h: Likewise.
4191         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
4192         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
4193         (MIPS_ICACHE_SYNC): New macro, split from ...
4194         * config/mips/mips.md (clear_cache): ...here.
4195         * config/mips/mips.c (mips_save_reg_p): Check
4196         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
4197         (build_mips16_function_stub): Use targetm.strip_name_encoding.
4198         (build_mips16_call_stub): Likewise.
4199
4200 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
4201
4202         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
4203
4204 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
4205
4206         PR target/32337
4207         * config/ia64/ia64.c (find_gr_spill): Don't decrement
4208         current_frame_info.n_local_regs.  Don't return emitted local
4209         regs.
4210         (ia64_compute_frame_size): Improve unwind hack to put
4211         RP, PFS, FP in that order by allowing some of the registers
4212         been already emitted, as long as they are emitted to the
4213         desired register.
4214
4215 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4216
4217         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
4218         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
4219         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
4220
4221 2007-09-13  Eric Christopher  <echristo@apple.com>
4222             Kenneth Zadeck <zadeck@naturalbridge.com>
4223
4224         * dse.c (find_shift_sequence): New function.
4225         (replace_read): Add case to remove read if it requires shift.
4226         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
4227         
4228 2007-09-13  Tom Tromey  <tromey@redhat.com>
4229
4230         * c-common.c (fname_as_string): Update.
4231         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
4232         (c_lex_one_token): Update.  Add 'parser' argument.
4233         (c_parser_simple_asm_expr): Update.
4234         (c_parser_attributes): Update.
4235         (c_parser_asm_statement): Update.
4236         (c_parser_asm_operands): Update.
4237         (c_parser_peek_token): Update.
4238         (c_parser_peek_2nd_token): Update.
4239         * c-lex.c (c_lex_string_translate): Remove.
4240         (c_lex_return_raw_strings): Likewise.
4241         (c_lex_with_flags): Added 'lex_flags' argument.
4242         (lex_string): Added 'translate' argument.
4243         * c-pragma.h (c_lex_with_flags): Update.
4244         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
4245         (C_LEX_STRING_NO_TRANSLATE): New define.
4246         (C_LEX_RAW_STRINGS): Likewise.
4247
4248 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
4249
4250         From Jie Zhang:
4251         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
4252         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
4253         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
4254         (bfin_init_builtins): Initialize __builtin_bfin_ones,
4255         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
4256         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
4257         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
4258         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
4259         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
4260         (bdesc_1arg): Add __builtin_bfin_ones.
4261         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
4262         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
4263         and __builtin_bfin_csqu_fr16.
4264         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
4265         (ones): New define_insn.
4266         (ssaddhi3_parts): New define_insn.
4267         (sssubhi3_parts): New define_insn.
4268         (flag_mulhi_parts): New define_insn.
4269
4270 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
4271
4272         * common.opt (femit-class-debug-always): Turn off by default.
4273
4274 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
4275
4276         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
4277         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
4278
4279 2007-09-13  James E. Wilson  <wilson@specifix.com>
4280
4281         PR tree-optimization/33389
4282         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
4283         then set build_loads before returning.
4284
4285 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
4286             David Ung  <davidu@mips.com>
4287
4288         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
4289         {d}addiu and a negative immediate such that it works with MIPS16
4290         instructions.
4291         
4292 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
4293
4294         PR bootstrap/33418
4295         * configure.ac (ld_vers): Support Linux linker.
4296         * configure: Regenerated.
4297
4298 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
4299             Sandra Loosemore <sandra@codesourcery.com>
4300
4301         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
4302         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
4303         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
4304         nomips16 into decl attributes.
4305         (TARGET_INSERT_ATTRIBUTES): Override.
4306         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
4307         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
4308         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
4309         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
4310         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
4311         (mips_use_mips16_mode_p): Reimplement as a function that takes
4312         a decl and considers only decl attributes.  If the decl is nested
4313         function, use its parent attributes.
4314         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
4315         instead of SYMBOL_REF_MIPS16_FUNC_P.
4316         (mips_set_mips16_mode): Move call to sorry here from old
4317         mips_use_mips16_mode_p.
4318         (mflip_mips16_entry): New structure.
4319         (mflip_mips16_htab): New variable.
4320         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
4321         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
4322         (mips_merge_decl_attributes): New function.
4323         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
4324         Use mips_use_mips16_mode_p.
4325         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
4326         SYMBOL_REF_MIPS16_FUNC_P.
4327         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
4328
4329 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
4330
4331         * c-parser.c (c_parser_struct_declaration): Check for a null return.
4332
4333 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4334
4335         PR driver/33309
4336         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
4337
4338 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
4339             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
4340             Tony Linthicum  <tony.linthicum@amd.com>
4341
4342         * tree.h (function_args_iterator): New type to iterate over
4343         function arguments.
4344         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
4345         function arguments providing a pointer to the argument.
4346         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
4347         function arguments providing the argument.
4348         (function_args_iter_init): Inline function to initialize
4349         function_args_iterator.
4350         (function_args_iter_cond_ptr): Inline function to return the next
4351         pointer to hold the argument.
4352         (function_args_iter_cond): Inline function to return the next
4353         argument.
4354         (function_args_iter_cond_next): Advance the function args
4355         iterator.
4356         (stdarg_p): New function, return true if variable argument
4357         function.
4358         (prototype_p): New function, return true if function is
4359         prototyped.
4360         (function_args_count): New function, count the number of arguments
4361         of a function.
4362
4363         * tree.c (stdarg_p): New function, return true if variable
4364         argument function.
4365         (prototype_p): New function, return true if function is
4366         prototyped.
4367
4368         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
4369         (TARGET_ROUND): New macro for the round/ptest instructions which
4370         are shared between SSE4.1 and SSE5.
4371         (OPTION_MASK_ISA_ROUND): Ditto.
4372         (OPTION_ISA_ROUND): Ditto.
4373         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
4374         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
4375
4376         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
4377         (-mfused-madd): New switch to give users control over whether the
4378         compiler optimizes to use the multiply/add SSE5 instructions.
4379
4380         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
4381         m_ATHLON_K8_AMDFAM10, and change all uses.
4382         (enum pta_flags): Add PTA_SSE5.
4383         (ix86_handle_option): Turn off 3dnow if -msse5.
4384         (override_options): Add SSE5 support.
4385         (print_operand): %Y prints comparison codes for SSE5 com/pcom
4386         instructions.
4387         (ix86_expand_sse_movcc): Add SSE5 support.
4388         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
4389         vector type to the next largest size.
4390         (ix86_expand_sse5_pack): New function to use pperm to pack a
4391         vector type to the next smallest size.
4392         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
4393         (IX86_BUILTIN_FMADDSD): Ditto.
4394         (IX86_BUILTIN_FMADDPS): Ditto.
4395         (IX86_BUILTIN_FMADDPD): Ditto.
4396         (IX86_BUILTIN_FMSUBSS): Ditto.
4397         (IX86_BUILTIN_FMSUBSD): Ditto.
4398         (IX86_BUILTIN_FMSUBPS): Ditto.
4399         (IX86_BUILTIN_FMSUBPD): Ditto.
4400         (IX86_BUILTIN_FNMADDSS): Ditto.
4401         (IX86_BUILTIN_FNMADDSD): Ditto.
4402         (IX86_BUILTIN_FNMADDPS): Ditto.
4403         (IX86_BUILTIN_FNMADDPD): Ditto.
4404         (IX86_BUILTIN_FNMSUBSS): Ditto.
4405         (IX86_BUILTIN_FNMSUBSD): Ditto.
4406         (IX86_BUILTIN_FNMSUBPS): Ditto.
4407         (IX86_BUILTIN_FNMSUBPD): Ditto.
4408         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
4409         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
4410         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
4411         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
4412         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
4413         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
4414         (IX86_BUILTIN_PPERM): Ditto.
4415         (IX86_BUILTIN_PERMPS): Ditto.
4416         (IX86_BUILTIN_PERMPD): Ditto.
4417         (IX86_BUILTIN_PMACSSWW): Ditto.
4418         (IX86_BUILTIN_PMACSWW): Ditto.
4419         (IX86_BUILTIN_PMACSSWD): Ditto.
4420         (IX86_BUILTIN_PMACSWD): Ditto.
4421         (IX86_BUILTIN_PMACSSDD): Ditto.
4422         (IX86_BUILTIN_PMACSDD): Ditto.
4423         (IX86_BUILTIN_PMACSSDQL): Ditto.
4424         (IX86_BUILTIN_PMACSSDQH): Ditto.
4425         (IX86_BUILTIN_PMACSDQL): Ditto.
4426         (IX86_BUILTIN_PMACSDQH): Ditto.
4427         (IX86_BUILTIN_PMADCSSWD): Ditto.
4428         (IX86_BUILTIN_PMADCSWD): Ditto.
4429         (IX86_BUILTIN_PHADDBW): Ditto.
4430         (IX86_BUILTIN_PHADDBD): Ditto.
4431         (IX86_BUILTIN_PHADDBQ): Ditto.
4432         (IX86_BUILTIN_PHADDWD): Ditto.
4433         (IX86_BUILTIN_PHADDWQ): Ditto.
4434         (IX86_BUILTIN_PHADDDQ): Ditto.
4435         (IX86_BUILTIN_PHADDUBW): Ditto.
4436         (IX86_BUILTIN_PHADDUBD): Ditto.
4437         (IX86_BUILTIN_PHADDUBQ): Ditto.
4438         (IX86_BUILTIN_PHADDUWD): Ditto.
4439         (IX86_BUILTIN_PHADDUWQ): Ditto.
4440         (IX86_BUILTIN_PHADDUDQ): Ditto.
4441         (IX86_BUILTIN_PHSUBBW): Ditto.
4442         (IX86_BUILTIN_PHSUBWD): Ditto.
4443         (IX86_BUILTIN_PHSUBDQ): Ditto.
4444         (IX86_BUILTIN_PROTB): Ditto.
4445         (IX86_BUILTIN_PROTW): Ditto.
4446         (IX86_BUILTIN_PROTD): Ditto.
4447         (IX86_BUILTIN_PROTQ): Ditto.
4448         (IX86_BUILTIN_PROTB_IMM): Ditto.
4449         (IX86_BUILTIN_PROTW_IMM): Ditto.
4450         (IX86_BUILTIN_PROTD_IMM): Ditto.
4451         (IX86_BUILTIN_PROTQ_IMM): Ditto.
4452         (IX86_BUILTIN_PSHLB): Ditto.
4453         (IX86_BUILTIN_PSHLW): Ditto.
4454         (IX86_BUILTIN_PSHLD): Ditto.
4455         (IX86_BUILTIN_PSHLQ): Ditto.
4456         (IX86_BUILTIN_PSHAB): Ditto.
4457         (IX86_BUILTIN_PSHAW): Ditto.
4458         (IX86_BUILTIN_PSHAD): Ditto.
4459         (IX86_BUILTIN_PSHAQ): Ditto.
4460         (IX86_BUILTIN_FRCZSS): Ditto.
4461         (IX86_BUILTIN_FRCZSD): Ditto.
4462         (IX86_BUILTIN_FRCZPS): Ditto.
4463         (IX86_BUILTIN_FRCZPD): Ditto.
4464         (IX86_BUILTIN_CVTPH2PS): Ditto.
4465         (IX86_BUILTIN_CVTPS2PH): Ditto.
4466         (IX86_BUILTIN_COMEQSS): Ditto.
4467         (IX86_BUILTIN_COMNESS): Ditto.
4468         (IX86_BUILTIN_COMLTSS): Ditto.
4469         (IX86_BUILTIN_COMLESS): Ditto.
4470         (IX86_BUILTIN_COMGTSS): Ditto.
4471         (IX86_BUILTIN_COMGESS): Ditto.
4472         (IX86_BUILTIN_COMUEQSS): Ditto.
4473         (IX86_BUILTIN_COMUNESS): Ditto.
4474         (IX86_BUILTIN_COMULTSS): Ditto.
4475         (IX86_BUILTIN_COMULESS): Ditto.
4476         (IX86_BUILTIN_COMUGTSS): Ditto.
4477         (IX86_BUILTIN_COMUGESS): Ditto.
4478         (IX86_BUILTIN_COMORDSS): Ditto.
4479         (IX86_BUILTIN_COMUNORDSS): Ditto.
4480         (IX86_BUILTIN_COMFALSESS): Ditto.
4481         (IX86_BUILTIN_COMTRUESS): Ditto.
4482         (IX86_BUILTIN_COMEQSD): Ditto.
4483         (IX86_BUILTIN_COMNESD): Ditto.
4484         (IX86_BUILTIN_COMLTSD): Ditto.
4485         (IX86_BUILTIN_COMLESD): Ditto.
4486         (IX86_BUILTIN_COMGTSD): Ditto.
4487         (IX86_BUILTIN_COMGESD): Ditto.
4488         (IX86_BUILTIN_COMUEQSD): Ditto.
4489         (IX86_BUILTIN_COMUNESD): Ditto.
4490         (IX86_BUILTIN_COMULTSD): Ditto.
4491         (IX86_BUILTIN_COMULESD): Ditto.
4492         (IX86_BUILTIN_COMUGTSD): Ditto.
4493         (IX86_BUILTIN_COMUGESD): Ditto.
4494         (IX86_BUILTIN_COMORDSD): Ditto.
4495         (IX86_BUILTIN_COMUNORDSD): Ditto.
4496         (IX86_BUILTIN_COMFALSESD): Ditto.
4497         (IX86_BUILTIN_COMTRUESD): Ditto.
4498         (IX86_BUILTIN_COMEQPS): Ditto.
4499         (IX86_BUILTIN_COMNEPS): Ditto.
4500         (IX86_BUILTIN_COMLTPS): Ditto.
4501         (IX86_BUILTIN_COMLEPS): Ditto.
4502         (IX86_BUILTIN_COMGTPS): Ditto.
4503         (IX86_BUILTIN_COMGEPS): Ditto.
4504         (IX86_BUILTIN_COMUEQPS): Ditto.
4505         (IX86_BUILTIN_COMUNEPS): Ditto.
4506         (IX86_BUILTIN_COMULTPS): Ditto.
4507         (IX86_BUILTIN_COMULEPS): Ditto.
4508         (IX86_BUILTIN_COMUGTPS): Ditto.
4509         (IX86_BUILTIN_COMUGEPS): Ditto.
4510         (IX86_BUILTIN_COMORDPS): Ditto.
4511         (IX86_BUILTIN_COMUNORDPS): Ditto.
4512         (IX86_BUILTIN_COMFALSEPS): Ditto.
4513         (IX86_BUILTIN_COMTRUEPS): Ditto.
4514         (IX86_BUILTIN_COMEQPD): Ditto.
4515         (IX86_BUILTIN_COMNEPD): Ditto.
4516         (IX86_BUILTIN_COMLTPD): Ditto.
4517         (IX86_BUILTIN_COMLEPD): Ditto.
4518         (IX86_BUILTIN_COMGTPD): Ditto.
4519         (IX86_BUILTIN_COMGEPD): Ditto.
4520         (IX86_BUILTIN_COMUEQPD): Ditto.
4521         (IX86_BUILTIN_COMUNEPD): Ditto.
4522         (IX86_BUILTIN_COMULTPD): Ditto.
4523         (IX86_BUILTIN_COMULEPD): Ditto.
4524         (IX86_BUILTIN_COMUGTPD): Ditto.
4525         (IX86_BUILTIN_COMUGEPD): Ditto.
4526         (IX86_BUILTIN_COMORDPD): Ditto.
4527         (IX86_BUILTIN_COMUNORDPD): Ditto.
4528         (IX86_BUILTIN_COMFALSEPD): Ditto.
4529         (IX86_BUILTIN_COMTRUEPD): Ditto.
4530         (IX86_BUILTIN_PCOMEQUB): Ditto.
4531         (IX86_BUILTIN_PCOMNEUB): Ditto.
4532         (IX86_BUILTIN_PCOMLTUB): Ditto.
4533         (IX86_BUILTIN_PCOMLEUB): Ditto.
4534         (IX86_BUILTIN_PCOMGTUB): Ditto.
4535         (IX86_BUILTIN_PCOMGEUB): Ditto.
4536         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
4537         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
4538         (IX86_BUILTIN_PCOMEQUW): Ditto.
4539         (IX86_BUILTIN_PCOMNEUW): Ditto.
4540         (IX86_BUILTIN_PCOMLTUW): Ditto.
4541         (IX86_BUILTIN_PCOMLEUW): Ditto.
4542         (IX86_BUILTIN_PCOMGTUW): Ditto.
4543         (IX86_BUILTIN_PCOMGEUW): Ditto.
4544         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
4545         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
4546         (IX86_BUILTIN_PCOMEQUD): Ditto.
4547         (IX86_BUILTIN_PCOMNEUD): Ditto.
4548         (IX86_BUILTIN_PCOMLTUD): Ditto.
4549         (IX86_BUILTIN_PCOMLEUD): Ditto.
4550         (IX86_BUILTIN_PCOMGTUD): Ditto.
4551         (IX86_BUILTIN_PCOMGEUD): Ditto.
4552         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
4553         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
4554         (IX86_BUILTIN_PCOMEQUQ): Ditto.
4555         (IX86_BUILTIN_PCOMNEUQ): Ditto.
4556         (IX86_BUILTIN_PCOMLTUQ): Ditto.
4557         (IX86_BUILTIN_PCOMLEUQ): Ditto.
4558         (IX86_BUILTIN_PCOMGTUQ): Ditto.
4559         (IX86_BUILTIN_PCOMGEUQ): Ditto.
4560         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
4561         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
4562         (IX86_BUILTIN_PCOMEQB): Ditto.
4563         (IX86_BUILTIN_PCOMNEB): Ditto.
4564         (IX86_BUILTIN_PCOMLTB): Ditto.
4565         (IX86_BUILTIN_PCOMLEB): Ditto.
4566         (IX86_BUILTIN_PCOMGTB): Ditto.
4567         (IX86_BUILTIN_PCOMGEB): Ditto.
4568         (IX86_BUILTIN_PCOMFALSEB): Ditto.
4569         (IX86_BUILTIN_PCOMTRUEB): Ditto.
4570         (IX86_BUILTIN_PCOMEQW): Ditto.
4571         (IX86_BUILTIN_PCOMNEW): Ditto.
4572         (IX86_BUILTIN_PCOMLTW): Ditto.
4573         (IX86_BUILTIN_PCOMLEW): Ditto.
4574         (IX86_BUILTIN_PCOMGTW): Ditto.
4575         (IX86_BUILTIN_PCOMGEW): Ditto.
4576         (IX86_BUILTIN_PCOMFALSEW): Ditto.
4577         (IX86_BUILTIN_PCOMTRUEW): Ditto.
4578         (IX86_BUILTIN_PCOMEQD): Ditto.
4579         (IX86_BUILTIN_PCOMNED): Ditto.
4580         (IX86_BUILTIN_PCOMLTD): Ditto.
4581         (IX86_BUILTIN_PCOMLED): Ditto.
4582         (IX86_BUILTIN_PCOMGTD): Ditto.
4583         (IX86_BUILTIN_PCOMGED): Ditto.
4584         (IX86_BUILTIN_PCOMFALSED): Ditto.
4585         (IX86_BUILTIN_PCOMTRUED): Ditto.
4586         (IX86_BUILTIN_PCOMEQQ): Ditto.
4587         (IX86_BUILTIN_PCOMNEQ): Ditto.
4588         (IX86_BUILTIN_PCOMLTQ): Ditto.
4589         (IX86_BUILTIN_PCOMLEQ): Ditto.
4590         (IX86_BUILTIN_PCOMGTQ): Ditto.
4591         (IX86_BUILTIN_PCOMGEQ): Ditto.
4592         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
4593         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
4594         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
4595         OPTION_MASK_ISA_ROUND for instructions that are shared between
4596         SSE4.1 and SSE5.
4597         (bdesc_2arg): Ditto.
4598         (bdesc_sse_3arg): Ditto.
4599         (enum multi_arg_type): New enum for describing the various SSE5
4600         intrinsic argument types.
4601         (bdesc_multi_arg): New table for SSE5 intrinsics.
4602         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
4603         (ix86_expand_multi_arg_builtin): New function for creating SSE5
4604         intrinsics.
4605         (ix86_expand_builtin): Add SSE5 intrinsic support.
4606         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
4607         operand instructions.
4608         (ix86_expand_sse5_multiple_memory): New function to split the
4609         second memory reference from SSE5 instructions.
4610         (type_has_variadic_args_p): Delete in favor of stdarg_p.
4611         (ix86_return_pops_args): Use stdarg_p to determine if the function
4612         has variable arguments.
4613         (ix86_setup_incoming_varargs): Ditto.
4614         (x86_this_parameter): Ditto.
4615
4616         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
4617         declaration.
4618         (ix86_expand_sse5_pack): Ditto.
4619         (ix86_sse5_valid_op_p): Ditto.
4620         (ix86_expand_sse5_multiple_memory): Ditto.
4621
4622         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
4623         constant for SSE5 support.
4624         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
4625         (UNSPEC_SSE5_TRUEFALSE): Ditto.
4626         (UNSPEC_SSE5_PERMUTE): Ditto.
4627         (UNSPEC_SSE5_ASHIFT): Ditto.
4628         (UNSPEC_SSE5_LSHIFT): Ditto.
4629         (UNSPEC_FRCZ): Ditto.
4630         (UNSPEC_CVTPH2PS): Ditto.
4631         (UNSPEC_CVTPS2PH): Ditto.
4632         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
4633         (PCOM_TRUE): Ditto.
4634         (COM_FALSE_S): Ditto.
4635         (COM_FALSE_P): Ditto.
4636         (COM_TRUE_S): Ditto.
4637         (COM_TRUE_P): Ditto.
4638         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
4639         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
4640         types.
4641         (memory attribute): Ditto.
4642         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4643         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
4644         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4645         (floor<mode>2): Ditto.
4646         (ceil<mode>2): Ditto.
4647         (btrunc<mode>2): Ditto.
4648         (nearbyintdf2): Ditto.
4649         (nearbyintsf2): Ditto.
4650         (sse_setccsf): Disable if SSE5.
4651         (sse_setccdf): Ditto.
4652         (sse5_setcc<mode>): New support for SSE5 conditional move.
4653         (sse5_pcmov_<mode>): Ditto.
4654
4655         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
4656         (SSEMODEF4): Ditto.
4657         (SSEMODEF2P): Ditto.
4658         (ssemodesuffixf4): New mode attribute for SSE5.
4659         (ssemodesuffixf2s): Ditto.
4660         (ssemodesuffixf2c): Ditto.
4661         (sserotatemax): Ditto.
4662         (ssescalarmode): Ditto.
4663         (sse_maskcmpv4sf3): Disable if SSE5.
4664         (sse_maskcmpv2df3): Ditto.
4665         (sse_vmmaskcmpv4sf3): Ditto.
4666         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
4667         instructions.
4668         (sse5_vmfmadd<mode>4): Ditto.
4669         (sse5_fmsub<mode>4): Ditto.
4670         (sse5_vmfmsub<mode>4): Ditto.
4671         (sse5_fnmadd<mode>4): Ditto.
4672         (sse5_vmfnmadd<mode>4): Ditto.
4673         (sse5_fnmsub<mode>4): Ditto.
4674         (sse5_vmfnmsub<mode>4): Ditto.
4675         (sse5i_fmadd<mode>4): Ditto.
4676         (sse5i_fmsub<mode>4): Ditto.
4677         (sse5i_fnmadd<mode>4): Ditto.
4678         (sse5i_fnmsub<mode>4): Ditto.
4679         (sse5i_vmfmadd<mode>4): Ditto.
4680         (sse5i_vmfmsub<mode>4): Ditto.
4681         (sse5i_vmfnmadd<mode>4): Ditto.
4682         (sse5i_vmfnmsub<mode>4): Ditto.
4683         (mulv16qi3): Add SSE5 support.
4684         (mulv4si3): Ditto.
4685         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
4686         (sse2_mulv4si3): Disable if SSE5.
4687         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
4688         (sse4_1_roundps): Ditto.
4689         (sse4_1_roundsd): Ditto.
4690         (sse4_1_roundss): Ditto.
4691         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
4692         be generated.
4693         (sse_maskcmpsf3): Ditto.
4694         (sse_vmmaskcmpv4sf3): Ditto.
4695         (sse2_maskcmpv2df3): Ditto.
4696         (sse2_maskcmpdf3): Ditto.
4697         (sse2_vmmaskcmpv2df3): Ditto.
4698         (sse2_eq<mode>3): Ditto.
4699         (sse2_gt<mode>3): Ditto.
4700         (sse5_pcmov_<mode>): Add SSE5 support.
4701         (vec_unpacku_hi_v16qi): Ditto.
4702         (vec_unpacks_hi_v16qi): Ditto.
4703         (vec_unpacku_lo_v16qi): Ditto.
4704         (vec_unpacks_lo_v16qi): Ditto.
4705         (vec_unpacku_hi_v8hi): Ditto.
4706         (vec_unpacks_hi_v8hi): Ditto.
4707         (vec_unpacku_lo_v8hi): Ditto.
4708         (vec_unpacks_lo_v8hi): Ditto.
4709         (vec_unpacku_hi_v4si): Ditto.
4710         (vec_unpacks_hi_v4si): Ditto.
4711         (vec_unpacku_lo_v4si): Ditto.
4712         (vec_unpacks_lo_v4si): Ditto.
4713         (sse5_pmacsww): New SSE5 intrinsic insn.
4714         (sse5_pmacssww): Ditto.
4715         (sse5_pmacsdd): Ditto.
4716         (sse5_pmacssdd): Ditto.
4717         (sse5_pmacssdql): Ditto.
4718         (sse5_pmacssdqh): Ditto.
4719         (sse5_pmacsdqh): Ditto.
4720         (sse5_pmacsswd): Ditto.
4721         (sse5_pmacswd): Ditto.
4722         (sse5_pmadcsswd): Ditto.
4723         (sse5_pmadcswd): Ditto.
4724         (sse5_pcmov_<move>): Conditional move support on SSE5.
4725         (sse5_phaddbw): New SSE5 intrinsic insn.
4726         (sse5_phaddbd): Ditto.
4727         (sse5_phaddbq): Ditto.
4728         (sse5_phaddwd): Ditto.
4729         (sse5_phaddwq): Ditto.
4730         (sse5_phadddq): Ditto.
4731         (sse5_phaddubw): Ditto.
4732         (sse5_phaddubd): Ditto.
4733         (sse5_phaddubq): Ditto.
4734         (sse5_phadduwd): Ditto.
4735         (sse5_phadduwq): Ditto.
4736         (sse5_phaddudq): Ditto.
4737         (sse5_phsubbw): Ditto.
4738         (sse5_phsubwd): Ditto.
4739         (sse5_phsubdq): Ditto.
4740         (sse5_pperm): Ditto.
4741         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
4742         (sse5_pperm_zero_v16qi_v8hi): Ditto.
4743         (sse5_pperm_sign_v8hi_v4si): Ditto.
4744         (sse5_pperm_zero_v8hi_v4si): Ditto.
4745         (sse5_pperm_sign_v4si_v2di): Ditto.
4746         (sse5_pperm_sign_v4si_v2di): Ditto.
4747         (sse5_pperm_pack_v2di_v4si): Ditto.
4748         (sse5_pperm_pack_v4si_v8hi): Ditto.
4749         (sse5_pperm_pack_v8hi_v16qi): Ditto.
4750         (sse5_perm<mode>): New SSE5 intrinsic insn.
4751         (rotl<mode>3): Ditto.
4752         (sse5_rotl<mode>3): Ditto.
4753         (sse5_ashl<mode>3): Ditto.
4754         (sse5_lshl<mode>3): Ditto.
4755         (sse5_frcz<mode>2): Ditto.
4756         (sse5s_frcz<mode>2): Ditto.
4757         (sse5_cvtph2ps): Ditto.
4758         (sse5_cvtps2ph): Ditto.
4759         (sse5_vmmaskcmp<mode>3): Ditto.
4760         (sse5_com_tf<mode>3): Ditto.
4761         (sse5_maskcmp<mode>3): Ditto.
4762         (sse5_maskcmp_uns<mode>3): Ditto.
4763         (sse5_maskcmp_uns2<mode>3): Ditto.
4764         (sse5_pcom_tf<mode>3): Ditto.
4765         
4766         * config/i386/predicates.md (const_0_to_31_operand): New predicate
4767         to match 0..31.
4768         (sse5_comparison_float_operator): New predicate to match the
4769         comparison operators supported by the SSE5 com instruction.
4770         (ix86_comparison_int_operator): New predicate to match just the
4771         signed int comparisons.
4772         (ix86_comparison_uns_operator): New predicate to match just the
4773         unsigned int comparisons.
4774
4775         * doc/invoke.texi (-msse5): Add documentation.
4776         (-mfused-madd): Ditto.
4777
4778         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
4779
4780         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
4781         mmintrin-common.h.
4782         (x86_64-*-*): Ditto.
4783
4784         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
4785
4786         * config/i386/bmmintrin.h: New file, provide common x86 compiler
4787         intrinisics for SSE5.
4788
4789         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
4790         mmintrin-common.h.
4791
4792         * config/i386/mmintrin-common.h: New file, to contain common
4793         instructions between SSE4.1 and SSE5.
4794
4795         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
4796         FOREACH_FUNCTION_ARGS to iterate over the argument list.
4797         (gen_regparm_prefix): Ditto.
4798
4799         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
4800         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
4801         prototype_p to determine if a function is prototyped.
4802
4803 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
4804
4805         * config/dfp-bit.c (dfp_conversion_exception): New function.
4806         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
4807         (DFP_TO_INT): Ditto.
4808         (INT_TO_DFP): Ditto.
4809         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
4810
4811 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
4812
4813         PR target/32338
4814         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
4815         before sp restoration even when total_size is 0, but
4816         frame_pointer_needed.
4817
4818 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
4819
4820         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
4821         (xtensa_copy_incoming_a7): Use start_sequence instead of
4822         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
4823         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
4824         of the saveregs sequence.
4825
4826 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
4827
4828         * c-tree.h (grokfield): Add a "tree *" argument.
4829         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
4830         Chain nested decl attributes to it.  Don't call decl_attributes here.
4831         (groktypename): Pass grokdeclarator a pointer to the attribute list.
4832         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
4833         (grokfield): Take a pointer to the decl's attributes and pass
4834         it to grokdeclarator.
4835         * c-parser.c (c_parser_struct_declaration): Update the calls to
4836         grokfield.  Call decl_attributes for anonymous struct and union
4837         fields.
4838
4839 2007-09-12  Jan Hubicka  <jh@suse.cz>
4840
4841         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
4842
4843 2007-09-12  Ira Rosen  <irar@il.ibm.com>
4844
4845         PR tree-optimization/32377
4846         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
4847         between positive and negative dependence distance using DDR_REVERSED_P.
4848
4849 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
4850
4851         PR tree-optimization/33373
4852         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
4853         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
4854
4855 2007-09-12  Jan Hubicka  <jh@suse.cz>
4856
4857         PR target/33393
4858         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
4859         for !SSE_MATH
4860
4861 2007-09-12  Christian Bruel  <christian.bruel@st.com>
4862
4863         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
4864         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
4865         
4866 2007-09-12  Ira Rosen  <irar@il.ibm.com>
4867
4868         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
4869         for oprnd1 if not required.
4870         (vectorizable_operation): Use scalar operand in SLP in case of 
4871         shift with scalar argument.
4872
4873 2007-09-12  Ira Rosen  <irar@il.ibm.com>
4874
4875         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
4876         to 1.
4877
4878 2007-09-11  James E. Wilson  <wilson@specifix.com>
4879
4880         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
4881         TARGET_UNWIND_INFO is defined.
4882         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
4883         after definition.
4884
4885 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
4886
4887         * config/sh/sh.c (calc_live_regs): Use
4888         current_function_saves_all_registers instead of
4889         current_function_has_nonlocal_label.
4890         (sh_allocate_initial_value): Likewise.
4891         (sh_get_pr_initial_val): Likewise.
4892         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
4893         * config/sh/sh.md (load_ra): Likewise.
4894
4895 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
4896
4897         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
4898
4899         PR target/33360
4900         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
4901         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
4902
4903 2007-09-12  Sa Liu  <saliu@de.ibm.com>
4904
4905         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
4906         operands to DFmode GE or LE compares.
4907
4908 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
4909
4910         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
4911         REG_CLASS_NAMES): Add P0REGS.
4912         (REGNO_REG_CLASS): Return it where appropriate.
4913         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
4914         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
4915         * doc/md.texi (Blackfin family): Document 'q' constraints.
4916
4917 2007-09-11  Steve Kenton  <skenton@ou.edu>
4918
4919         * pa/linux-unwind.h: Guard with inhibit_libc.
4920         * pa/hpux-unwind.h: Likewise.
4921
4922 2007-09-11  David Daney  <ddaney@avtrex.com>
4923
4924         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
4925         * doc/install.texi: Document new --with-llsc and --without-llsc
4926         options.
4927         * config.gcc: Handle --with-llsc and --without-llsc configure options.
4928         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
4929         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
4930         ISA_HAS_SYNC.
4931         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
4932         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
4933         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
4934         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
4935         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
4936         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
4937         * config/mips/mips.opt (mllsc): New option.
4938         * config/mips/mips.c (mips_llsc): Define variable.
4939         (mips_handle_option): Handle mllsc option.
4940         (override_options): Set mips_print_operand_punct for '|' and '-'.
4941         (print_operand): Add new %| and %- operand codes.
4942         * config/mips/mips.h (mips_llsc_setting): New enum type.
4943         (mips_llsc): Declare.
4944         (OPTION_DEFAULT_SPECS): Add llsc handling.
4945         (GENERATE_SYNC): New macro.
4946         (GENERATE_LL_SC): New macro.
4947         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
4948         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
4949         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
4950         in %| and %- operand codes.
4951
4952 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
4953
4954         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
4955         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
4956
4957 2007-09-11  Jason Merrill  <jason@redhat.com>
4958
4959         PR middle-end/27945
4960         * stor-layout.c (layout_decl): Do pack variable size fields.    
4961
4962 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
4963
4964         * config/m68k/predicates.md (movsi_const0_operand,
4965         non_symbolic_call_operand): New predicates.
4966
4967         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
4968         New constraints.
4969         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
4970         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
4971         CW, CZ, CS, Ap and Ac.
4972
4973         * config/m68k/m68k.md (UNSPEC_IB): New constant.
4974         (constraints.md): New include.
4975         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
4976         opx_mem, opy_mem, op_mem, guess, split): New attributes.
4977         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
4978         Specify attributes.
4979         (pushdi): Add split.
4980         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
4981         attributes.  Split tstsi_internal_68020_cf from it.
4982         (tstsi_internal_68020_cf): New pattern.
4983         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
4984         (tst<mode>_cf): Specify attributea.
4985         (cmpsi_cf): Name pattern.  Specify attributes.
4986         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
4987         (pushexthisi_const): Fix to use alternatives.  Specify
4988         attributes.
4989         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
4990         from it.  Fix to use alternatives.  Specify attributes.
4991         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
4992         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
4993         attributes.
4994         (movsf_cf_soft): Specify attributes.
4995         (movdf_cf_soft): Add split.
4996         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
4997         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
4998         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
4999         (truncdfsf2_68881): Name pattern.  Specify attributes.
5000         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
5001         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
5002         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
5003         Specify attributes.
5004         (addsi3_5200): Fix to use alternatives.  Specify attributes.
5005         Add splits.
5006         (add<mode>3_cf, subdi_dishl32): Specify attributes.
5007         (subsi3): Add alternative for subq.l.  Specify attributes.
5008         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
5009         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
5010         attributes.
5011         (umulhisi3): Specify attributes.
5012         (mulhisisi3_z): Name pattern.  Specify attributes.
5013         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
5014         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
5015         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
5016         bsetmemqi): Specify attributes.
5017         (bsetmemqi_ext): Name pattern.  Specify attributes.
5018         (bclrmemqi): Specify attributes.
5019         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
5020         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
5021         attributes.
5022         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
5023         pattern.  Specify attributes.
5024         (jump): Specify attributes.
5025         (tablejump_internal): Name pattern.  Specify attributes.
5026         (call_value): Split into non_symbolic_call_value,
5027         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
5028         alternatives.  Specify attributes.
5029         (non_symbolic_call_value, symbolic_call_value_jsr,
5030         symbolic_call_value_bsr): New patterns.
5031         (nop, return, unlink, indirect_jump): Specify attributes.
5032         (trap): Fix condition.  Specify attributes.
5033         (ib): New pattern.
5034
5035         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
5036         (override_options): Initialize it.  Initialize m68k_sched_cpu.
5037         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
5038         (const_method): Make global, rename to m68k_const_method.
5039         (const_int_cost, output_move_const_into_data_reg): Update.
5040         (output_move_double): Parametrize to emit rtl code, rename to
5041         handle_move_double.
5042         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
5043         emit_movsi): New static functions.
5044         (output_move_double): New function with semantics of old
5045         output_move_double.
5046         (m68k_emit_move_double): New function.
5047         (m68k_sched_cpu): New variable.
5048         (attr_op_type): New enum.
5049         (sched_guess_p): New variable.
5050         (sched_address_type, sched_operand_type, sched_attr_op_type):
5051         New static functions.
5052         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
5053         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
5054         (sched_branch_type): New static variable.
5055         (m68k_sched_branch_type): New function.
5056         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
5057         (m68k_symbolic_call_var): Declare.
5058         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
5059         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
5060         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
5061         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
5062         Declare.
5063
5064 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
5065
5066         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
5067         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
5068         error if __builtin_va_arg_pack_len () wasn't optimized out during
5069         inlining.
5070         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
5071         with the number of inline's anonymous arguments.
5072         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
5073
5074 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
5075
5076         * fold-const.c (extract_muldiv_1): Do not simplify
5077         var * c * c to var.
5078
5079 2007-09-11  Jan Hubicka <jh@suse.cz>
5080
5081         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
5082         (TARGET_INTER_UNIT_CONVERSIONS): New.
5083         * i386.md (floatsi expanders): Remove redundant check for SImode
5084         source; offload to memory when asked for.
5085         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
5086         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
5087         Update conditions;
5088         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
5089         floatsidf2_mixed_memory, floatsidf2_sse_memory
5090         floatdisf2_mixed_memory, floatsisf2_sse_memory,
5091         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
5092
5093 2007-09-11  Jan Hubicka <jh@suse.cz>
5094
5095         * toplev.c (process_options): all frontends now do unit-at-a-time.
5096         * cgraphunit.c: update comments.
5097         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
5098         * c-decl.c (finish_function): use cgraph_add_new_function.
5099         * function.c (expand_function_end): We are always unit-at-a-time.
5100
5101 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
5102
5103         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
5104         settings for MIPS16.
5105         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
5106
5107 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
5108
5109         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
5110         SYMBOL_FORCE_TO_MEM constants.
5111         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
5112         (mips16_rewrite_pool_refs_info): New structure.
5113         (mips16_rewrite_pool_constant): New function, split out from...
5114         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
5115         mips16_rewrite_pool_refs_info structure rather than a pointer
5116         to a constant pool.  Force force_to_mem_operands into memory.
5117         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
5118         * config/mips/predicates.md (force_to_mem_operand): New predicate.
5119         * config/mips/constraints.md (kf): New constraint.
5120         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
5121         (*movsi_mips16): Likewise.
5122
5123 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
5124             Nigel Stephens  <nigel@mips.com>
5125             David Ung  <davidu@mips.com>
5126
5127         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
5128         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
5129         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
5130         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
5131         (mips_zero_extend_cost): New functions.
5132         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
5133         Use the new functions.  Tweak many cost estimates, both here
5134         and in the new subroutines.  Return false when the cost of the
5135         operands has not been calculated.  Check for *clear_upper32.
5136         Check for floating-point multiply-add, reciprocal and rsqrt
5137         patterns.  Handle comparison and rotation codes.
5138
5139 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
5140
5141         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
5142         override default.
5143         * config/i386/i386.c (get_dllimport_decl): Don't strip
5144         FASTCALL_PREFIX.
5145
5146 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
5147
5148         PR c/30013
5149         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
5150         declarations to top.
5151         (DFP_TO_BFP): Use for either XFmode or TFmode.
5152         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
5153         of BFP_VIA_TYPE.
5154         * config/dfp-bit.h: Include float.h.
5155         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
5156         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
5157         which doesn't mean the same thing.
5158         (BFP_KIND): Use 4 to mean TFmode.
5159         (BFP_FMT): Specify the number of decimal digits based on the
5160         number of mantissa digits.
5161         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
5162         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
5163         (STR_TO_BFP): Use strtold for XFmode or TFmode.
5164         (TFtype): Define if TFmode is supported.
5165         * doc/libgcc.texi (Decimal float library routines): Document
5166         TF conversion functions.
5167
5168 2007-09-10  Chao-ying Fu  <fu@mips.com>
5169
5170         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
5171         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
5172         (mips_emit_compare): Process fixed-point modes.
5173         (mips_pad_arg_upward): Support fixed-point types.
5174         (override_options): Allow fixed-point modes in accumulators.
5175         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
5176         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
5177         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
5178         (mips_scalar_mode_supported_p): New function to accept fixed-point
5179         modes if the width is not greater than two BITS_PER_WORD.
5180         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
5181         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
5182         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
5183         LONG_LONG_ACCUM_TYPE_SIZE): Define.
5184         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
5185         modes.
5186         ("IMODE"): New mode attribute.
5187         (mips-fixed.md): Include.
5188         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
5189         ACCUM, UACCUM.
5190         * config/mips/mips-fixed.md: New file.
5191
5192 2007-09-11  Ben Elliston  <bje@au.ibm.com>
5193
5194         * config/spu/spu.md: Formatting fixes.
5195
5196 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
5197
5198         * config/dfp-bit.c (dfp_unary_func): Delete.
5199         (dfp_unary_op): Delete.
5200         (dfp_binary_op): Use decFloat functions instead of decNumber
5201         functions for binary operations.
5202         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
5203         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
5204         DFP_C_TYPE.
5205         (dfp_compare_op): Use decFloat functions insteadof decNumber
5206         functions for comparisons.
5207         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
5208         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
5209         DFP_C_TYPE.
5210         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
5211         call to dxx_binary_op and decFloat function.
5212         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
5213         calls to dxx_binary_op and decFloat function.
5214         * config/dfp-bit.h: Include decFloat header files.
5215         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
5216         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
5217         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
5218         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
5219
5220 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
5221             Jan Sjodin <jan.sjodin@amd.com>
5222
5223         * tree-vect-analyze.c (vect_analyze_operations): Change
5224         comparison of loop iterations with threshold to less than
5225         or equal to instead of less than. Reduce
5226         min_scalar_loop_bound by one.
5227         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
5228         Change prologue and epilogue iterations estimate to vf/2,
5229         when unknown at compile-time. Change versioning guard
5230         cost to taken_branch_cost. If peeling for alignment is
5231         unknown at compile-time, change peel guard costs to one
5232         taken branch and one not-taken branch per peeled loop.
5233         If peeling for alignment is known but number of scalar loop
5234         iterations is unknown at compile-time, change peel guard
5235         costs to one taken branch per peeled loop. Change the cost
5236         model equation to consider vector iterations as the loop
5237         iterations less the prologue and epilogue iterations.
5238         Change outside vector cost check to less than or equal to
5239         zero instead of equal to zero.
5240         (vect_do_peeling_for_loop_bound): Reduce
5241         min_scalar_loop_bound by one.
5242         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
5243         TARG_COND_NOT_TAKEN_BRANCH_COST.        
5244         * config/i386/i386.h (processor_costs): Add
5245         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
5246         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
5247         vec_align_load_cost, vect_unalign_load_cost,
5248         vec_store_cost, cond_taken_branch_cost,
5249         cond_not_taken_branch_cost.
5250         Define macros for x86 costs.
5251         * config/i386/i386.c:
5252         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
5253         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
5254         scalar_to_vec_cost, vec_align_load_cost, 
5255         vect_unalign_load_cost, vec_store_cost,
5256         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
5257         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
5258         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
5259         core2_cost, generic64_cost, generic32_cost): Set to default
5260         untuned costs.
5261         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
5262         (x86_builtin_vectorization_cost): New.
5263
5264 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
5265             Ben Elliston  <bje@au.ibm.com>
5266
5267         * dfp.c: Include decimal128Local.h; 
5268         (dfp_byte_swap): Remove.
5269         (encode_decimal32, decode_decimal32): Don't handle endianness.
5270         (encode_decimal64, decode_decimal64): Ditto.
5271         (encode_decimal128, decode_decimal128): Ditto.
5272         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
5273         (__swap64): Remove.
5274         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
5275         (__swap128): Remove
5276         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
5277         * Makefile.in (DECNUM_H): Add decimal128Local.h.
5278
5279 2007-09-10  David Daney  <ddaney@avtrex.com>
5280
5281         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
5282         define_constants.
5283         (memory_barrier): Rewrote as an insn that clobbers memory.
5284
5285 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
5286
5287         * config/mips/mips.c (mips_global_pointer): Check
5288         call_really_used_regs instead of call_used_regs.
5289         (mips_save_reg_p): Likewise.  Save all call-saved registers
5290         if current_function_saves_all_registers.  Fix indentation.
5291         No longer treat $18 as a special case.
5292         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
5293
5294 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
5295
5296         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
5297         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
5298         the introductory comment.
5299         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
5300         (override_options): Don't test for it.
5301         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
5302         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
5303         * config/mips/vr.h: As for config/mips/sde.h.
5304
5305 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5306             Revital Eres  <eres@il.ibm.com>
5307
5308         * target.h (struct gcc_target.sched): New field: sms_res_mii.
5309         (struct ddg): Define.
5310         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
5311         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
5312         * config/spu/spu.c: Include ddg.h.
5313         (TARGET_SCHED_SMS_RES_MII): Define.
5314         (spu_sms_res_mii): New function to calculate mii.
5315         * modulo-sched (res_MII): Use it.
5316         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
5317
5318 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
5319
5320         * config/s390/s390.c (s390_dump_pool): Create copy of constant
5321         pool entries since they might hold values that must not be shared.
5322
5323 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
5324
5325         PR target/33369
5326         * config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
5327         Use 'N' operand constraint for op2.
5328         (lshr<mode>3): Ditto.
5329         (ashl<mode>3): Ditto.
5330         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
5331         (vec_shr_<mode>): Ditto.
5332         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
5333         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
5334
5335 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
5336
5337         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
5338         Change mode macro in the last real_2expN parameter to uppercase.
5339
5340 2007-09-10  Michael Matz  <matz@suse.de>
5341
5342         * tree-pass.h (pass_cselim): Declare new pass.
5343         * passes.c (init_optimization_passes): Link in pass_cselim.
5344         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
5345         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
5346         cond_store_replacement.
5347         (condstoretemp): New static variable.
5348         (cond_store_replacement): New function.
5349         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
5350         tree_ssa_phiopt_worker.
5351         (struct name_to_bb): New.
5352         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
5353         nt_init_block, nt_fini_block): New static functions.
5354         (seen_ssa_names, nontrap_set): New static variables.
5355         (gate_cselim, pass_cselim): Define new pass.
5356         * common.opt (ftree-cselim): New flag.
5357         * toplev.c (process_options): Set flag_tree_cselim if required.
5358
5359 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
5360
5361         * simplify-rtx.c (simplify_relational_operation_1): For recent
5362         canonicalization, don't recurse if op1 equals both PLUS arguments.
5363
5364 2007-09-09  David Daney  <ddaney@avtrex.com>
5365
5366         * optabs.c (expand_sync_operation):  Use plus insn if minus
5367         CONST_INT_P(val).
5368         (expand_sync_fetch_operation):  Ditto.
5369
5370 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
5371
5372         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
5373         of cvtpq2ps.
5374         (*floatsisf2_sse_vector): Likewise.
5375
5376 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
5377
5378         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
5379
5380 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
5381
5382         * config/i386/i386.h (ix86_tune_indices): Rename
5383         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
5384         (TARGET_USE_VECTOR_CONVERTS): Updated.
5385         * config/i386/i386.c: Likewise.
5386
5387 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
5388             Nigel Stephens <nigel@mips.com>
5389
5390         * doc/invoke.texi (Overall Options):  Add .sx file extension
5391         as a synonym for .S.
5392         * cppspec.c (known_suffixes): Likewise.
5393         * gcc.c (default_compilers): Likewise.
5394
5395 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5396
5397         PR target/30315
5398         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
5399         * simplify-rtx.c (simplify_relational_operation_1): Add the
5400         canonicalization from i386.h.
5401         * doc/md.texi (Canonicalization of Instructions): Document it.
5402
5403 2007-09-09  Jan Hubicka  <jh@suse.cz>
5404             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5405
5406         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
5407         (TARGET_USE_VECTOR_CONVERTS): New.
5408         * i386.md: New post-reload splitters for converting SF to DF and DF to
5409         SF.
5410         (floatsi* expander): Special case vector conversions.
5411         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
5412         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
5413         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
5414         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
5415         Disable when doing vector converts.
5416         (floatsi<mode>2_i387): Disable when
5417         * sse.md (vec_dupv2df): Export.
5418         * i386.c (ix86_tune_features): Enable SSE conversions.
5419
5420 2007-09-09  Richard Guenther  <rguenther@suse.de>
5421
5422         * tree-ssa-operands.c (add_virtual_operand): Only mark
5423         stores as has_volatile_ops if alias information is not available.
5424
5425 2007-09-09  Revital Eres  <eres@il.ibm.com>
5426
5427         * doc/contrib.texi: Add myself.
5428
5429 2007-09-09  Ira Rosen  <irar@il.ibm.com>
5430
5431         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
5432         stmt_vinfo_set_outside_of_loop_cost): New functions.
5433         * tree-vect-transform.c (vect_get_cost_fields): Remove.
5434         (vect_model_simple_cost): Call
5435         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
5436         field instead of calling vect_get_cost_fields.
5437         (vect_model_store_cost, vect_model_load_cost): Likewise.
5438
5439 2007-09-09  Revital Eres  <eres@il.ibm.com>
5440
5441         * config/rs6000/rs6000.c (paired_init_builtins): Add const
5442         declaration to bdesc_paired_preds variable.
5443         (paired_expand_builtin): Likewise.
5444
5445 2007-09-09  Revital Eres  <eres@il.ibm.com>
5446
5447         * dbgcnt.def (sms_sched_loop): New counter.
5448         * modulo-sched.c: Use sms_sched_loop instead of
5449         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
5450         perform swing modulo scheduling on.  Include dbgcnt.h.
5451         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
5452         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
5453
5454 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
5455
5456         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
5457         Substitute all uses with ...
5458         (MODEF): New mode iterator.
5459
5460         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
5461         from pre-regalloc define_insn_and_split splitter pattern.
5462         (*fix_trunc<mode>_i387_1): Ditto.
5463         (*fistdi2_1): Ditto.
5464         (*fist<mode>2_1): Ditto.
5465         (frndintxf2_floor): Ditto.
5466         (*fist<mode>2_floor_1): Ditto.
5467         (frndintxf2_ceil): Ditto.
5468         (*fist<mode>2_ceil_1): Ditto.
5469         (frndintxf2_trunc): Ditto.
5470         (frndintxf2_mask_pm): Ditto.
5471
5472         (prologue): Use (const_int 0) as never generated filler insn.
5473         (epilogue): Ditto.
5474         (sibcall_epilogue): Ditto.
5475         (eh_return_si): Ditto.
5476         (eh_return_di): Ditto.
5477
5478         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
5479         using MODEF mode iterator.
5480         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
5481         using MODEF mode iterator.
5482         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
5483         using MODEF mode iterator.
5484         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
5485         Macroize expander using MODEF mode iterator.
5486
5487         (zero_extendsidi2): Remove operand constraints from expander.
5488         (smuldi3_highpart): Ditto.
5489         (indirect_jump): Ditto.
5490         (tablejump): Ditto.
5491         (rsqrtsf2): Ditto.
5492         * config/i386/sse.md (storentv4sf): Ditto.
5493         (storentv2df): Ditto.
5494         (storentv2di): Ditto.
5495         (storentsi): Ditto.
5496         (sse2_cvtpd2ps): Ditto.
5497         (vec_interleave_highv16qi): Ditto.
5498         (vec_interleave_lowv16qi): Ditto.
5499         (vec_interleave_highv8hi): Ditto.
5500         (vec_interleave_lowv8hi): Ditto.
5501         (vec_interleave_highv4si): Ditto.
5502         (vec_interleave_lowv4si): Ditto.
5503         (vec_interleave_highv2di): Ditto.
5504         (vec_interleave_lowv2di): Ditto.
5505         (sse2_maskmovdqu): Ditto.
5506         * config/i386/mmx.md (mmx_maskmovq): Ditto.
5507
5508 2007-09-09  Ira Rosen  <irar@il.ibm.com>
5509
5510         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
5511         (struct _slp_tree, struct _slp_instance): Define new data structures
5512         along macros for their access.
5513         (struct _loop_vec_info): Define new fields: strided_stores,
5514         slp_instances, and slp_unrolling_factor along macros for their access.
5515         (enum slp_vect_type): New.
5516         (struct _stmt_vec_info): Define new field, slp_type, and macros for
5517         its access.
5518         (STMT_VINFO_STRIDED_ACCESS): New macro.
5519         (vect_free_slp_tree): Declare.
5520         (vectorizable_load): Add an argument of type slp_tree.
5521         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
5522         vectorizable_assignment): Likewise.
5523         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
5524         Declare (make extern).
5525         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
5526         (new_loop_vec_info): Likewise.
5527         (destroy_loop_vec_info): Free memory allocated for SLP structures.
5528         * tree-vect-analyze.c: Include recog.h.
5529         (vect_update_slp_costs_according_to_vf): New.
5530         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
5531         functions. For not pure SLP stmts with strided access check that the
5532         group size is power of 2. Update the vectorization factor according to
5533         SLP. Call vect_update_slp_costs_according_to_vf.
5534         (vect_analyze_group_access): New.
5535         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
5536         (vect_free_slp_tree): New functions.
5537         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
5538         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
5539         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
5540         vect_detect_hybrid_slp): Likewise.
5541         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
5542         and vect_detect_hybrid_slp.
5543         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
5544         SLP costs into account.
5545         (vect_get_cost_fields): New function.
5546         (vect_model_simple_cost): Make extern, add SLP parameter and handle
5547         SLP.
5548         (vect_model_store_cost, vect_model_load_cost): Likewise.
5549         (vect_get_constant_vectors): New function.
5550         (vect_get_slp_vect_defs, vect_get_slp_defs,
5551         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
5552         vect_get_vec_defs): Likewise.
5553         (vectorizable_reduction): Don't handle SLP for now.
5554         (vectorizable_call): Don't handle SLP for now. Add argument to
5555         vect_model_simple_cost.
5556         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
5557         get SLPed and vectorized defs). Fix indentation and spacing.
5558         (vectorizable_assignment): Handle SLP.
5559         (vectorizable_induction): Don't handle SLP for now.
5560         (vectorizable_operation): Likewise.
5561         (vectorizable_type_demotion): Add argument to
5562         vect_model_simple_cost.
5563         (vectorizable_type_promotion): Likewise.
5564         (vectorizable_store, vectorizable_load): Handle SLP.
5565         (vectorizable_condition): Don't handle SLP for now.
5566         (vect_transform_stmt): Add a new argument for SLP. Check that there is
5567         no SLP transformation required for unsupported cases. Add SLP
5568         argument for supported cases.
5569         (vect_remove_stores): New function.
5570         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
5571         (vect_transform_loop): Schedule SLP instances.
5572         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
5573
5574 2007-09-09  Andrew Haley  <aph@redhat.com>
5575
5576         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
5577         signed optab.
5578
5579 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
5580
5581         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
5582         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
5583         Similar for what label_refs can go in the JUMP_TARGET field.  Split
5584         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
5585         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
5586         REG_LABEL when replacing an operand with a LABEL_REF for a
5587         non-jump insn.
5588         (subst_reloads): When replacing a LABEL_REG with a register,
5589         instead of generating a REG_LABEL note, assert that there already
5590         is one or that the label is a known target for the insn.
5591         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
5592         note, check the JUMP_LABEL field.  Remove "else" after return.
5593         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
5594         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
5595         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
5596         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
5597         insns.  Iterate over all notes; don't assume there's only one.
5598         * cse.c (recorded_label_ref): Adjust comment to refer to
5599         REG_LABEL_OPERAND.
5600         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
5601         insns, not just NONJUMP_INSN_P.
5602         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
5603         isn't a jump target.
5604         * jump.c (rebuild_jump_labels): Adjust head comment.
5605         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
5606         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
5607         (mark_all_labels): For JUMP_P insns without a target, check if the
5608         the target is noted on the previous nonjump insn.
5609         (mark_jump_label_1): New function, guts from mark_jump_label.
5610         <case IF_THEN_ELSE>: Handle first operand as a non-target when
5611         marking jump target labels.
5612         <case LABEL_REF>: Adjust for whether to generate a
5613         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
5614         For 'E' format rtl, iterate in descending element order.
5615         (delete_related_insns): Handle both REG_LABEL_TARGET and
5616         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
5617         reference count, delete and fallthrough.  Move finding-next-
5618         non-deleted insn last in the function.  Look at all INSN_P insns
5619         for REG_LABEL_OPERAND notes.
5620         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
5621         JUMP.
5622         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
5623         JUMP_LABEL, output the INSN_UID of it.
5624         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
5625         and/or REG_LABEL_TARGET.
5626         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
5627         with jump.c copy by only adding notes for labels actually
5628         referenced in the insn.
5629         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
5630         usage count increment; handle all INSN_P trial insns.
5631         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
5632         notes.
5633         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
5634         REG_LABEL_TARGET and REG_LABEL_OPERAND.
5635         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
5636         REG_LABEL_OPERAND.
5637         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
5638         JUMP_P insns and REG_LABEL_OPERAND everywhere.
5639         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
5640         on all INSN_P insns.
5641         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
5642         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
5643         REG_LABEL_OPERAND notes.
5644         * reload1.c (calculate_needs_all_insns): Adjust comments.
5645         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
5646         * config/alpha/alpha.md (split for load of an address into a
5647         four-insn sequence on Unicos/Mk): Adjust to use
5648         REG_LABEL_OPERAND.
5649         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
5650
5651 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5652
5653         Revert:
5654         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5655         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
5656         FOR_BB_INSNS_SAFE instead of for loop.
5657         * cse.c (cse_extended_basic_block): Likewise.
5658         * postreload.c (reload_cse_regs_1): New variable next. Make sure
5659         that the for loop does not invoke NEXT_INSN on a deleted insn.
5660         * function.c (instantiate_virtual_regs): Likewise.
5661         * lower-subreg.c (remove_retval_note): Likewise.
5662         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
5663         FOR_BB_INSNS.
5664         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
5665         a deleted insn.
5666         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
5667         insn, if it's a jump.
5668         (try_redirect_by_replacing_jump): New variable jump_p. Call
5669         tablejump_p before delete_insn_chain.
5670         * reload1.c (reload): New variable next. Make sure that the for
5671         loop does not invoke NEXT_INSN on a deleted insn.
5672         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
5673         (delete_output_reload): New variable prev. Make sure the the for
5674         loops do not invoke PREV_INSN on a deleted insn.
5675
5676 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5677
5678         * pa/constraints.md: Remove 'X' from unused letters comment.
5679
5680 2007-09-08  Richard Guenther  <rguenther@suse.de>
5681
5682         * tree-tailcall.c (find_tail_calls): If we don't have aliases
5683         computed check stmt_ann->references_memory instead of counting
5684         virtual operands.
5685  
5686 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
5687
5688         * cse.c (fold_rtx): Use validate_unshare_change() instead of
5689         validate_change() in one more case.
5690
5691 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
5692
5693         PR tree-optimization/32283
5694         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
5695         estimated_loop_iterations.
5696         (determine_use_iv_cost_condition): Decrease cost of expressions
5697         used in iv elimination.
5698
5699 2007-09-08  Richard Guenther  <rguenther@suse.de>
5700
5701         * tree-cfg.c (verify_gimple_expr): Avoid building new
5702         pointer types, use TYPE_POINTER_TO if available instead.
5703
5704 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
5705
5706         PR target/33329
5707         PR rtl-optimization/26449
5708         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
5709         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
5710         split1 pass.
5711         (mulv16qi3): Implement as define_insn_and_split pattern instead of
5712         define_expand.  Split insn in split1 pass.
5713         (mulv2di3): Ditto.
5714
5715 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
5716
5717         PR tree-optimization/33301
5718         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
5719         when relevant.
5720
5721 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
5722
5723         PR tree-optimization/32183
5724         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
5725
5726         * tree-ssa-reassoc.c: Include cfgloop.h.
5727         (is_reassociable_op): Add a loop argument and return true only
5728         for inside loop.
5729         (linearize_expr): Updated.
5730         (should_break_up_subtract): Likewise.
5731         (linearize_expr_tree): Likewise.
5732         (init_reassoc): Call loop_optimizer_init with
5733         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
5734         with CDI_DOMINATORS.
5735         (fini_reassoc): Call loop_optimizer_finalize.
5736
5737 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
5738
5739         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
5740         if there is no i-cache.
5741
5742 2007-09-07  Richard Guenther  <rguenther@suse.de>
5743
5744         Reapply
5745         2007-09-06  Richard Guenther  <rguenther@suse.de>
5746
5747         PR tree-optimization/32586
5748         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
5749         folding if nothing changed.
5750         (simplify_unary_expression): New function.  Do tree combining
5751         on conversion like codes.
5752         (try_to_simplify): Call it.
5753
5754 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5755
5756         PR target/33286
5757         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
5758         (__gthread_active,__gthread_start, __gthread_active_init): New.
5759         * gthr-posix95.h: Likewise.
5760
5761 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
5762
5763         * function.h (struct function): Rename calls_unwind_init
5764         to saves_all_registers.
5765         (current_function_saves_all_registers): Renamed from
5766         current_function_calls_unwind_init.
5767         * reload1.c (reload): Set current_function_saves_all_registers.
5768         * except.c (expand_builtin_unwind_init): Likewise.
5769         * config/m68k/m68k.c (m68k_save_reg): Use
5770         current_function_saves_all_registers to save pic register.
5771
5772 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
5773
5774         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
5775         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
5776
5777         Reapply reverted changes:
5778
5779         2007-09-06  Jan Hubicka  <jh@suse.cz>
5780  
5781         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
5782         of real_2expN.
5783
5784         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
5785
5786         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
5787         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
5788
5789         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
5790
5791         * optabs.c (expand_float): Convert unsigned integer as signed only
5792         if it provides sufficient accuracy; add mode argument to real_2expN.
5793         (expand_fix): Fix comment typos; extend binary float into mode
5794         wider than destination for converion to unsigned integer; add mode
5795         argument to real_2expN.
5796         * real.c (real_2expN): Add mode argument to special-case decimal
5797         float values.
5798         * real.h (real_2expN): Ditto.
5799         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
5800         real_2expN.
5801         (fixed_from_string): Ditto.
5802         (fixed_to_decimal): Ditto.
5803         (fixed_convert_from_real): Ditto.
5804         (real_convert_from_fixed): Ditto.
5805         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
5806         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
5807         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
5808         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
5809
5810 2007-09-07  Diego Novillo  <dnovillo@google.com>
5811
5812         * tree-flow.h (const_block_stmt_iterator): Remove.
5813         Update all users to use block_stmt_iterator.
5814         * tree-iterator.h (const_tree_stmt_iterator): Remove.
5815         Update all users to use tree_stmt_iterator.
5816
5817 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
5818
5819         * config/mips/mips.c (mips_set_current_function): Temporarily
5820         make this a no-op to fix bootstrap errors, pending rewrite.
5821
5822 2007-09-07  Jan Hubicka  <jh@suse.cz>
5823
5824         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
5825         in the pass.
5826
5827 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
5828
5829         PR tree-optimization/33299
5830         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
5831         uses for all relevant loop-exit phis, not just the first.
5832
5833 2007-09-07  Richard Guenther  <rguenther@suse.de>
5834
5835         PR middle-end/33330
5836         * tree-ssa-operands.c (access_can_touch_variable): An access
5837         of the form (*p)[0] can touch a variable of same size.
5838
5839 2007-09-07  Jan Hubicka  <jh@suse.cz>
5840
5841         * passes.c (init_optimization_passes): Add simple dce and addressable
5842         passes.
5843         * tree-ssa.c (execute_update_addresses_taken): New function.
5844         (pass_update_address_taken): New.
5845         * tree-ssa-dse.c (execute_simple_dse): New function.
5846         (pass_simple_dse): New.
5847         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
5848
5849 2007-09-07  Tobias Burnus  <burnus@net-b.de>
5850
5851         PR middle-end/33321
5852         * doc/invoke.texi: Fix -Wstrict-overflow= table.
5853
5854 2007-09-07  Richard Guenther  <rguenther@suse.de>
5855
5856         Revert
5857         2007-09-06  Richard Guenther  <rguenther@suse.de>
5858
5859         PR tree-optimization/32586
5860         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
5861         folding if nothing changed.
5862         (simplify_unary_expression): New function.  Do tree combining
5863         on conversion like codes.
5864         (try_to_simplify): Call it.
5865
5866 2007-09-07  Richard Guenther  <rguenther@suse.de>
5867             Uros Bizjak  <ubizjak@gmail.com>
5868
5869         PR tree-optimization/32821
5870         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
5871         NULL in the call to set_bb_stmt_list.
5872
5873 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
5874
5875         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
5876         float calls here, rather than leaving some to the caller.
5877         Use call_internal_direct and call_value_internal_direct.
5878         * config/mips/mips.md (call_internal_direct): New pattern.
5879         (call_value_internal_direct): Likewise.
5880
5881 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
5882
5883         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
5884         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
5885         to 0 for MIPS16.
5886         (override_options): Set mips_base_move_loop_invariants.
5887
5888 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
5889
5890         * config/mips/mips.opt (mcode-readable=): Move to keep list
5891         alphabetical.
5892
5893 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
5894
5895         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
5896         and -mgpopt options.  Adjust the -G documentation to match.
5897         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
5898         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
5899         function, split out from mips_classify_symbol.  Return false for
5900         !TARGET_LOCAL_SDATA.
5901         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
5902         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
5903         (override_options): Check whether the -mgpopt setting is consistent
5904         with the other flags.
5905         (symbolic_expression_p): Delete.
5906         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
5907         and default_elf_select_rtx_section.
5908         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
5909         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
5910         external data and TARGET_EXTERN_SDATA.
5911
5912 2007-09-07  Tobias Burnus  <burnus@net-b.de>
5913
5914         PR fortran/33303
5915         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
5916
5917 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5918
5919         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
5920         FOR_BB_INSNS_SAFE instead of for loop.
5921         * cse.c (cse_extended_basic_block): Likewise.
5922         * postreload.c (reload_cse_regs_1): New variable next. Make sure
5923         that the for loop does not invoke NEXT_INSN on a deleted insn.
5924         * function.c (instantiate_virtual_regs): Likewise.
5925         * lower-subreg.c (remove_retval_note): Likewise.
5926         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
5927         FOR_BB_INSNS.
5928         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
5929         a deleted insn.
5930         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
5931         insn, if it's a jump.
5932         (try_redirect_by_replacing_jump): New variable jump_p. Call
5933         tablejump_p before delete_insn_chain.
5934         * reload1.c (reload): New variable next. Make sure that the for
5935         loop does not invoke NEXT_INSN on a deleted insn.
5936         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
5937         (delete_output_reload): New variable prev. Make sure the the for
5938         loops do not invoke PREV_INSN on a deleted insn.
5939
5940 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
5941
5942         * cgraphbuild.c (rebuild_cgraph_edges): Export.
5943         * cgraph.h (rebuild_cgraph_edges): Declare.
5944         * tree-pass.h (pass_expand_omp_ssa): New.
5945         * omp-low.c (find_omp_clause): Export.
5946         (copy_var_decl): Split from omp_copy_decl_2.
5947         (build_omp_barrier): Return the call to emit instead of emitting
5948         it directly.
5949         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
5950         build_omp_barrier.
5951         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
5952         expand_omp_for_generic, expand_omp_for_static_nochunk,
5953         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
5954         Adapted to work on SSA form.
5955         (execute_expand_omp): Do not invalidate dominance information.
5956         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
5957         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
5958         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
5959         a gimple_reg.
5960         (force_gimple_operand): Allow gimplifying code expressions without
5961         value.
5962         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
5963         * common.opt (fopenmp-ssa): New.
5964         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
5965         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
5966         * tree-cfg.c: Include tree-inline.h.
5967         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
5968         (replace_by_duplicate_decl, replace_ssa_name,
5969         mark_virtual_ops_in_region): New functions.
5970         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
5971         to work on SSA form.
5972         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
5973         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
5974         constructs.
5975
5976 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5977
5978         * tree-loop-linear.c: Include obstack.h.
5979         (linear_transform_loops): New obstack lambda_obstack.
5980         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
5981         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
5982         and free afterwards.
5983         * lambda.h (struct obstack): New forward declaration.
5984         (lambda_linear_expression_new): New parameter of type struct
5985         obstack *.
5986         (lambda_loopnest_new): Likewise.
5987         (lambda_loopnest_transform): Likewise.
5988         (lambda_body_vector_new): Likewise.
5989         (lambda_body_vector_compute_new): Likewise.
5990         (gcc_loopnest_to_lambda_loopnest): Likewise.
5991         (lambda_loopnest_to_gcc_loopnest): Likewise.
5992         * lambda-code.c: Include obstack.h.
5993         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
5994         allocation of ret.
5995         (lambda_body_vector_new): Likewise.
5996         (lambda_linear_expression_new): Likewise.
5997         (lambda_lattice_new): Likewise.
5998         (lambda_loopnest_new): Likewise.  Additionally use obstack to
5999         allocate LN_LOOPS(ret).
6000         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
6001         it to lambda_lattice_new.
6002         (lambda_body_vector_compute_new): New parameter lambda_obstack.
6003         Pass it to lambda_body_vector_new.
6004         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
6005         it to lambda_lattice_new.
6006         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
6007         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
6008         (lambda_compute_target_space): Likewise.
6009         (lambda_compute_auxillary_space): New parameter lambda_obstack.
6010         Pass it to lambda_lattice_compute_base and
6011         compute_nest_using_fourieer_motzkin.
6012         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
6013         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
6014         and lambda_lattice_compute_target_space.
6015         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
6016         Pass it to lambda_linear_expression_new.
6017         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
6018         to gcc_tree_to_linear_expression.
6019         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
6020         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
6021         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
6022         Pass it to lambda_body_vector_new and
6023         lambda_body_vector_compute_new.
6024         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
6025         (lambda-code.o): Likewise.
6026
6027 2007-09-06  Chao-ying Fu  <fu@mips.com>
6028
6029         * ginclude/stdfix.h: New file.
6030         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
6031         (convert.o): Add dependence on fixed-value.h.
6032         * c-convert.c (convert): Support FIXED_POINT_TYPE.
6033         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
6034         to define fixed-point constants.
6035         (c_cpp_builtins): Define fixed-point constants.
6036         * convert.c (fixed-value.h): New include.
6037         (convert_to_real): Update comment to include fixed-point.
6038         Support FIXED_POINT_TYPE.
6039         (convert_to_integer): Update comment to include fixed-point.
6040         Support FIXED_POINT_TYPE.
6041         (convert_to_complex): Support FIXED_POINT_TYPE.
6042         (convert_to_fixed): New function.
6043         * convert.h (convert_to_fixed): Declare.
6044         * genopinit.c: Add comment about $Q for only fixed-point modes.
6045         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
6046         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
6047         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
6048         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
6049         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
6050         usneg_optab for fixed-point modes.
6051         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
6052         modes.
6053         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
6054         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
6055         unsigned saturation optabs, when type is saturating.
6056         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
6057         (expand_fixed_convert): New function.
6058         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
6059         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
6060         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
6061         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
6062         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
6063         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
6064         functions.
6065         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
6066         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
6067         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
6068         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
6069         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
6070         satfractuns_optab.
6071         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
6072         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
6073         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
6074         fractuns, satfractuns.
6075         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
6076         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
6077         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
6078         OTI_ssmsub_widen,  OTI_usmsub_widen.
6079         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
6080         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
6081         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
6082         umsub_widen_optab, usmsub_widen_optab): Define.
6083         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
6084         COI_satfractuns.
6085         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
6086         Define.
6087         (expand_fixed_convert): Declare.
6088         * expr.c (convert_move): Support the move of fixed-point modes.
6089         (emit_move_insn_1): Handle fixed-point mode to move via integer.
6090         (categorize_ctor_elements_1): Handle FIXED_CST.
6091         (count_type_elements): Handle FIXED_POINT_TYPE.
6092         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
6093         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
6094         Support FIXED_CST.
6095         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
6096         multiply and add/subtract for fixed-point types.
6097         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
6098         mode, we jump to binop directly.
6099         Support FIXED_CONVERT_EXPR.
6100         (do_store_flag): Check FIXED_CST to put a constant second.
6101         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
6102         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
6103         (const_vector_from_tree): Support FIXED_CST.
6104         * doc/extend.texi (Fixed-Point): New node.
6105         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
6106         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
6107         satfract, fractuns, satfractuns): Document them.
6108
6109 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
6110
6111         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
6112         addresses into I registers.
6113
6114 2007-09-06  Jan Hubicka  <jh@suse.cz>
6115             Andreas Tobler  <a.tobler@schweiz.org>
6116
6117         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
6118         sharing.
6119         (machopic_legitimize_pic_address): Likewise.
6120
6121 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6122             Jan Hubicka  <jh@suse.cz>
6123
6124         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
6125         instead of ufloat_optab->handlers directly.
6126         (floatdidf2): Likewise.
6127
6128 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
6129
6130         * config/mips/mips.c:  Include diagnostic.h.
6131         (mips_set_current_function): Check errorcount and sorrycount 
6132         before generating RTL.
6133
6134 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6135
6136         PR target/33256
6137         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
6138         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
6139         (print_operand_reloc): Likewise.
6140
6141 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
6142
6143         Revert:
6144
6145         2007-09-06  Jan Hubicka  <jh@suse.cz>
6146  
6147         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
6148         real_2expN.
6149
6150         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6151
6152         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
6153         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
6154
6155         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
6156
6157         * optabs.c (expand_float): Convert unsigned integer as signed only
6158         if it provides sufficient accuracy; add mode argument to real_2expN.
6159         (expand_fix): Fix comment typos; extend binary float into mode
6160         wider than destination for converion to unsigned integer; add mode
6161         argument to real_2expN.
6162         * real.c (real_2expN): Add mode argument to special-case decimal
6163         float values.
6164         * real.h (real_2expN): Ditto.
6165         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
6166         real_2expN.
6167         (fixed_from_string): Ditto.
6168         (fixed_to_decimal): Ditto.
6169         (fixed_convert_from_real): Ditto.
6170         (real_convert_from_fixed): Ditto.
6171         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
6172         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
6173         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
6174         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
6175
6176 2007-09-06  Tom Tromey  <tromey@redhat.com>
6177
6178         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
6179         * c-pch.c (c_common_read_pch): Restore current location after
6180         reading PCH file.
6181         * tree.c (expand_location): Update.
6182         (expr_filename): Changed return type.  Unified the two cases.
6183         (expr_lineno): Likewise.
6184         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
6185         as lvalues.
6186         * toplev.c (line_table): Changed type.
6187         (general_init): Update.
6188         (realloc_for_line_map): New function.
6189         (general_init): Allocate line_table using GC.
6190         * fix-header.c (line_table): Changed type.
6191         (read_scan_file): Update.
6192         (read_scan_file): Update.
6193         * c-ppoutput.c (maybe_print_line): Update.
6194         (print_line): Update.
6195         (cb_line_change): Update.
6196         (cb_define): Update.
6197         (pp_file_change): Update.
6198         * c-opts.c (c_common_init_options): Update.
6199         (finish_options): Update.
6200         (push_command_line_include): Update.
6201         * c-lex.c (cb_line_change): Update.
6202         (cb_def_pragma): Update.
6203         (cb_define): Update.
6204         (cb_undef): Update.
6205         (c_lex_with_flags): Use cpp_get_token_with_location.
6206         * input.h (line_table): Changed type.
6207         (location_from_locus): New macro.
6208         * tree.h (EXPR_FILENAME): No longer an lvalue.
6209         (EXPR_LINENO): Likewise.
6210         (expr_locus, set_expr_locus): Declare separately for
6211         USE_MAPPED_LOCATION.
6212         (expr_filename, expr_lineno): Changed return type.
6213         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
6214         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
6215         (expand_gimple_basic_block): Likewise.
6216         * final.c (final_scan_insn): Use expanded_location.
6217
6218 2007-09-06  Richard Guenther  <rguenther@suse.de>
6219
6220         PR tree-optimization/32586
6221         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
6222         folding if nothing changed.
6223         (simplify_unary_expression): New function.  Do tree combining
6224         on conversion like codes.
6225         (try_to_simplify): Call it.
6226         * builtins.c (fold_builtin_cexp): Fold the built expressions.
6227         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
6228
6229 2007-09-06  Jan Hubicka  <jh@suse.cz>
6230
6231         PR target/33318
6232         * cse.c (fold_rtx): Avoid invalid sharing.
6233
6234 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6235
6236         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
6237         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
6238
6239 2007-09-06  Revital Eres  <eres@il.ibm.com>
6240
6241         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
6242         Fix offsettable memory reference for 750CL.
6243
6244 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
6245
6246         * reload.c (find_reloads_address_1): Try to preserve original
6247         base/index regclass of operands.
6248         * regrename.c (scan_rtx_address): Likewise.
6249         (replace_oldest_value_addr): Likewise.
6250
6251 2007-09-06  Richard Guenther  <rguenther@suse.de>
6252
6253         PR tree-optimization/33302
6254         * domwalk.c (walk_dominator_tree): The exit block is
6255         interesting even if it is not reachable.
6256
6257 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6258
6259         PR middle-end/33306
6260         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
6261
6262 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
6263
6264         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
6265         robustness.
6266
6267 2007-09-05  Ian Lance Taylor  <iant@google.com>
6268
6269         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
6270         when printing.
6271         (dump_generic_node): Likewise.
6272         * print-rtl.c (print_decl_name): Likewise.
6273         * print-tree.c (print_node_brief): Likewise.
6274         (print_node): Likewise.
6275         * Makefile.in (RTL_BASE_H): Add alias.h.
6276         (TREE_H): Likewise.
6277
6278 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
6279
6280         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
6281         Defined.
6282         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
6283         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
6284
6285 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
6286
6287         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
6288         (tm_defines): Define UCLIBC_DEFAULT to 1.
6289         (extra_options): Add linux.opt.
6290         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
6291         (CRT_CALL_STATIC_FUNCTION): Likewise.
6292         (NO_IMPLICIT_EXTERN_C): Likewise.
6293         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
6294         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
6295         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
6296         (ENDFILE_SPEC): Don't define.
6297         (LIB_SPEC): Likewise.
6298         (CRT_CALL_STATIC_FUNCTION): Likewise.
6299         (NO_IMPLICIT_EXTERN_C): Likewise.
6300         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
6301         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
6302
6303 2007-09-06  Jan Hubicka  <jh@suse.cz>
6304
6305         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
6306         real_2expN.
6307
6308 2007-09-06  Jan Hubicka  <jh@suse.cz>
6309
6310         * opts.c (common_handle_option): Enable inlining functions for
6311         -fprofile-generate.
6312
6313 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
6314
6315         * builtin-attrs.def (ATTR_NONNULL_3): New.
6316         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
6317         ATTR_NOTHROW_NONNULL_##FA.
6318         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
6319         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
6320         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
6321         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
6322         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
6323         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
6324         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
6325         New.
6326         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
6327         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
6328         ATTR_FORMAT_NOTHROW_3_4): Remove.
6329         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
6330         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
6331         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
6332         instead of ATTR_FORMAT_*_*.
6333
6334 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
6335
6336         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
6337         parts re-used for REG_FRAME_RELATED_EXPR.
6338
6339 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
6340
6341         * optabs.c (expand_float): Convert unsigned integer as signed only
6342         if it provides sufficient accuracy; add mode argument to real_2expN.
6343         (expand_fix): Fix comment typos; extend binary float into mode
6344         wider than destination for converion to unsigned integer; add mode
6345         argument to real_2expN.
6346         * real.c (real_2expN): Add mode argument to special-case decimal
6347         float values.
6348         * real.h (real_2expN): Ditto.
6349         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
6350         real_2expN.
6351         (fixed_from_string): Ditto.
6352         (fixed_to_decimal): Ditto.
6353         (fixed_convert_from_real): Ditto.
6354         (real_convert_from_fixed): Ditto.
6355         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
6356         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
6357         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
6358         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
6359
6360 2007-09-05  Ian Lance Taylor  <iant@google.com>
6361
6362         * init-regs.c (initialize_uninitialized_regs): Call
6363         emit_insn_before rather than add_insn_before.
6364
6365 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
6366
6367         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
6368         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
6369         * tree-inline.h (copy_body_data): Add call_expr field.
6370         * tree-inline.c (expand_call_inline): Initialize call_expr.
6371         (copy_bb): Append anonymous inline fn arguments to arguments
6372         when inlining a CALL_EXPR_VA_ARG_PACK call.
6373         * builtins.c (expand_builtin): Issue an error if
6374         BUILT_IN_VA_ARG_PACK is seen during expand.
6375         (fold_call_expr, fold_builtin_call_array): Don't fold
6376         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
6377         __builtin_va_arg_pack () call as last argument.
6378         * gimplify.c (gimplify_call_expr): If last argument to a vararg
6379         function is __builtin_va_arg_pack (), decrease number of call
6380         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
6381         * expr.c (expand_expr_real_1): Issue an error if
6382         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
6383         * tree-pretty-print.c (dump_generic_node): Handle printing
6384         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
6385         * doc/extend.texi (__builtin_va_arg_pack): Document.
6386
6387 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
6388
6389         PR tree-optimization/21513
6390         * builtins.c (build_builtin_expect_predicate): New function.
6391         (fold_builtin_expect): Add argument for expected value.
6392         Distribute __builtin_expect over short-circuiting operations.
6393         Fold nested builtin_expects.
6394         (fold_builtin_2): Adjust call to fold_builtin_expect.
6395
6396 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6397
6398         PR web/32965
6399         PR tree-optimization/13756
6400         * doc/invoke.texi (Options That Control Optimization): Document
6401         -ftree-dse.
6402
6403 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
6404
6405         * config/i386/cpuid.h: New file.
6406         * config/i386/driver-i386.c: Include cpuid.h.
6407         (describe_cache): Shrink size and line strings to 100 bytes.
6408         (detect_caches_amd): Return "" for unsupported max_ext_level.
6409         Use __cpuid function.
6410         (detect_caches_intel): Return "" for unsupported max_level.
6411         Use __cpuid function.
6412         (host_detect_local_cpu): Change feature flag variables to
6413         unsigned int.  Initialize only extended feature flag variables.
6414         Use __get_cpuid_max to determine max supported cpuid level.
6415         Use __cpuid function to determine supported features.  Fix
6416         calculation of family id.  Remove is_amd and check signature
6417         directly.  Check for Geode signature.  Handle family 4 id.
6418         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
6419         cpu discovery code to lower part of the function.
6420         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
6421         for sub-architecture.
6422         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
6423         [PROCESSOR_K8]: Add k8-sse3 architecture.
6424         [PROCESSOR_NOCONA]: Remove.
6425         [PROCESSOR_GENERIC64]: Ditto.
6426         * config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
6427         * config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
6428         to check for SSE and FXSAVE support.
6429         * config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
6430         Add -minline-all-stringops.
6431         * config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
6432         (x86_64-*-*): Ditto.
6433
6434 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
6435
6436         * config/bfin/linux-unwind.h: New file.
6437         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
6438         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
6439
6440 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6441
6442         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
6443         * stmt.c: Include alloc-pool.h.
6444         (struct case_node): Remove GTY marker.
6445         (add_case_node): New parameter case_node_pool.  Use it for
6446         allocation of r.
6447         (expand_case): New allocation pool case_node_pool.  Initialize it,
6448         pass to add_case_node and free it.
6449
6450 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
6451             David Ung  <davidu@mips.com>
6452             Nigel Stephens <nigel@mips.com>
6453
6454         Add mips16/nomips16 function attributes and -mflip-mips16 option
6455         for testing mixed-mode compilation.
6456
6457         * config/mips/mips.opt (mflip-mips16): New.
6458
6459         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
6460         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
6461
6462         * config/mips/mips.c (mips_base_target_flags): New.
6463         (mips_base_mips16): New.
6464         (mips_base_schedule_insns): New.
6465         (mips_base_reorder_blocks_and_partition): New.
6466         (mips_base_align_loops): New.
6467         (mips_base_align_jumps): New.
6468         (mips_base_align_functions): New.
6469         (mips16_flipper): New.
6470         (mips_attribute_table): Add "mips16" and "nomips16" entries.
6471         (TARGET_SET_CURRENT_FUNCTION): Define.
6472         (mips_mips16_type_p, mips_nomips16_type_p): New.
6473         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
6474         (mips_function_ok_for_sibcall): Make it deal with functions with
6475         mips16 attributes.
6476         (mips_init_split_addresses): New, split out from override_options.
6477         (mips_init_relocs): New, split out from override_options.
6478         (was_mips16_p): New.
6479         (mips_set_mips16_mode): New, split out from override_options.
6480         (mips_set_current_function): New.
6481         (override_options): Add sorry for unsupported mips16/pic
6482         combination.  Remove error for mips16/dsp combination.  Save
6483         base option settings.  
6484         (mips_file_start): Move mips16 mode setting output from here....
6485         (mips_output_function_prologue): ....to here.
6486         (mips_output_mi_thunk): Check for mips16 function.
6487         (build_mips16_function_stub): Don't set .mips16 here.
6488         (build_mips16_call_stub): Likewise.
6489         (mips_expand_builtin): Error in mips16 mode.
6490         (mips_use_mips16_mode_p): New.
6491         (mips_encode_section_info): Check for mips16 function, and set
6492         SYMBOL_REF_FLAGS accordingly.
6493
6494         * doc/extend.texi (Function Attributes): Document new
6495         mips16/nomips16 attributes.
6496         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
6497         (MIPS Options): Document -mflip-mips16.
6498
6499 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
6500
6501         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
6502         if we encounter TLS address in MIPS16 mode.
6503         (mips_legitimize_const_move): Check cannot_force_const_mem for
6504         the (const (plus symbol offset)) case; this forces invalid TLS
6505         address in MIPS16 mode to be caught by the above call to sorry.
6506         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
6507         because that now enables emutls, which is not ABI compatible
6508         with native TLS in non-MIPS16 mode.
6509
6510 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
6511
6512         Add target hook invoked when cfun changes.
6513
6514         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
6515         * target.h (struct gcc_target): Add set_current_function.
6516         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
6517         (TARGET_INITIALIZER): Add initializer for set_current_function.
6518         * tree.h (push_struct_function): New.
6519         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
6520         * function.h: Here.
6521         (set_cfun): Declare.
6522         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
6523         * function.c: Here.
6524         (push_function_context_to): Use allocate_struct_function
6525         to create null context, not init_dummy_function_start.  Use set_cfun.
6526         (pop_function_context_from): Use set_cfun.
6527         (in_dummy_function): New.
6528         (invoke_set_current_function_hook): New.
6529         (set_cfun): New.
6530         (push_cfun, pop_cfun): Use set_cfun.
6531         (push_struct_function): New.
6532         (allocate_struct_function): Call invoke_set_current_function_hook
6533         before returning.
6534         (prepare_function_start): Don't set cfun here.  Remove unused
6535         argument; fix all callers.
6536         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
6537         push_struct_function.
6538         (init_function_start): Set cfun here.
6539         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
6540         * omp-low.c (create_omp_child_function): Use push_struct_function
6541         and pop_cfun to save/restore state.
6542         (expand_omp_parallel): Remove unused saved_cfun variable.
6543         * cgraphunit.c (ipa_passes): Use set_cfun.
6544         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
6545         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
6546         * matrix-reorg.c (transform_allocation_sites): Likewise.
6547         (matrix_reorg): Use set_cfun.
6548         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
6549         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
6550         assignment to cfun; use set_cfun for the other.
6551         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
6552         (dump_function_to_file): Use push_cfun/pop_cfun here.
6553         * c-decl.c (finish_function): Use set_cfun.
6554
6555 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
6556
6557         * regrename.c (rerename_optimize): Use deferred rescanning and
6558         insert explicit calls to rescan insns when changed.
6559         
6560 2007-09-05  Jan Hubicka  <jh@suse.cz>
6561
6562         * optabs.c (libfunc_entry): Change optab to integer.
6563         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
6564         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
6565         of pointers for hashing.
6566
6567 2007-09-05  Jan Hubicka  <jh@suse.cz>
6568
6569         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
6570         verifier.
6571         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
6572         * see.c (pass_see): Likewise.
6573         * tracer.c (pass_tracer): Likewise.
6574         * postreload-gcse.c (pass_gcse2): Likewise.
6575         * postreload.c (pass_postreload_cse): Likewise.
6576         * mode-switching.c (pass_mode_switching): Likewise.
6577         * modulo-sched.c (pass_sms): Likewise.
6578         * cse.c (cse_insn): Likewise.
6579         * web.c (pass_web): Likweise.
6580         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
6581         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
6582         * loop-init.c (pass_rtl_loop_init): Likewise.
6583         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
6584         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
6585         * global.c (pass_global_alloc): Likewise.
6586         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
6587         pass_if_after_reload): Likewise.
6588         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
6589         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
6590         * regmove.c (pass_regmove): Likewise.
6591         * function.c (pass_thread_prologugues_epilogues): Likewise.
6592         * gcse.c (pass_gcse): Likewise.
6593         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
6594         * lower-subreg.c (pass_lower_subreg2): Likewise.
6595         * bt-load.c (pass_branch_target_load): Likewise.
6596         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
6597         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
6598         * combine.c (pass_combine): Likewise.
6599         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
6600         (pass_partition_blocks): Likewise.
6601         * var-tracking.c (pass_variable_track): Likewise.
6602         * reg-stack.c (pass_stack_regs_run): Likewise.
6603         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
6604         * passes.c (pass_postreload): Likewise.
6605         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
6606         * tree-pass.h (TODO_verify_rtl_sharing): New.
6607         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
6608         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
6609         TODO_set_props, TODO_df_finish, TODO_df_verify,
6610         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
6611
6612 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6613
6614         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
6615         fold_real_zero_addition_p, reorder_operands_p,
6616         div_if_zero_remainder, fold_undefer_overflow_warnings,
6617         int_binop_types_match_p, fold_convert_const_int_from_int,
6618         fold_convert_const_int_from_real,
6619         fold_convert_const_int_from_fixed,
6620         fold_convert_const_real_from_real,
6621         fold_convert_const_real_from_fixed,
6622         fold_convert_const_fixed_from_fixed,
6623         fold_convert_const_fixed_from_int,
6624         fold_convert_const_fixed_from_real, maybe_lvalue_p,
6625         fold_checksum_tree, fold_check_failed, print_fold_checksum,
6626         debug_fold_checksum, multiple_of_p): Constify.
6627         * tree-flow-inline.h (get_lineno): Likewise.
6628         * tree-flow.h (get_lineno): Likewise.
6629         * tree-object-size.c (compute_object_offset, addr_object_size,
6630         alloc_object_size, pass_through_call): Likewise.
6631         * tree-pretty-print.c (op_symbol, print_call_name,
6632         print_struct_decl, do_niy): Likewise.
6633         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
6634         debug_fold_checksum): Likewise.
6635
6636 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
6637
6638         PR middle-end/33029
6639         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
6640         note, remove the associated REG_RETVAL note.
6641
6642 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6643
6644         * config.gcc (powerpc*-*-*): Install
6645         spu2vmx.h, vec_types.h, and si2vmx.h headers.
6646         * config/rs6000/spu2vmx.h: New header.
6647         * config/rs6000/si2vmx.h: New header.
6648         * config/rs6000/vec_types.h: New header.
6649
6650 2007-09-05  Ben Elliston  <bje@au.ibm.com>
6651
6652         * varasm.c (initializer_constant_valid_p): Fix comment typo.
6653
6654 2007-09-05  Ben Elliston  <bje@au.ibm.com>
6655
6656         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
6657         not `m' for *ptrp.
6658         (__stdcx): Make asm volatile.
6659         (__stwcx, __stdcx): Return only 0 or 1.
6660
6661 2007-09-05  Jan Hubicka  <jh@suse.cz>
6662
6663         Revert:
6664
6665         2007-09-04  Jan Hubicka  <jh@suse.cz>
6666         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
6667
6668         2007-09-04  Richard Guenther  <rguenther@suse.de>
6669         * tree-ssa-operands.c (add_virtual_operand): Only mark
6670         stores as has_volatile_ops if alias information is not available.
6671
6672 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
6673
6674         * config/rs6000/tramp.asm: Include config.h.
6675         Check __PIC__ or __pic__ macro instead of SHARED.
6676
6677         PR rtl-optimization/32300
6678         * see.c (see_copy_insn): New function.
6679         (see_def_extension_not_merged, see_merge_one_use_extension,
6680         see_merge_one_def_extension): Use it.  Avoid changing
6681         PREV_INSN/NEXT_INSN chains directly, insted emit insns
6682         into sequences.  Call df_insn_delete on temporary insns
6683         that won't be emitted into the insn stream.
6684         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
6685         and run df_process_deferred_rescans () before run_fast_dce.
6686
6687         PR tree-optimization/33017
6688         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
6689         recurse for pure or const function calls.
6690
6691 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6692
6693         * c-format.c: Include alloc-pool.h.
6694         (check_format_info_main): New argument fwt_alloc.  Use allocation
6695         pool instead of GC.  Remove GC deallocation code.
6696         (check_format_arg): Create allocation pool, pass it to
6697         check_format_info_main and free it afterwards.
6698         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
6699
6700 2007-09-05  Ben Elliston  <bje@au.ibm.com>
6701
6702         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
6703         Rename count macro arugment for clarity.
6704         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
6705         (__protected_stream_set): Likewise, pass 0.
6706
6707 2007-09-04  Jan Hubicka  <jh@suse.cz>
6708
6709         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
6710
6711 2007-09-04  Jan Hubicka  <jh@suse.cz>
6712
6713         * invoke.texi (-finline-small-functions): Document.
6714         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
6715         when deciding what is inlinable.
6716         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
6717         (cgraph_decide_inlining_of_small_function): Handle new flags.
6718         (cgraph_decide_inlining_incrementally): Likewise.
6719         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
6720         * common.opt (finline-small-functions): New.
6721         * Makefile.in (build/gengtype.o-warn): Work around PR29478
6722
6723 2007-09-04  Richard Guenther  <rguenther@suse.de>
6724
6725         * tree-ssa-operands.c (add_virtual_operand): Only mark
6726         stores as has_volatile_ops if alias information is not available.
6727
6728 2007-09-04  Andrew Haley  <aph@redhat.com>
6729
6730         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
6731
6732 2007-09-04  Andrew Haley  <aph@redhat.com>
6733
6734         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
6735         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
6736         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
6737
6738 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
6739
6740         PR c++/14178
6741         * common.opt: Mention ABI version 2 in comment.
6742
6743 2007-09-04  Jan Hubicka  <jh@suse.cz>
6744
6745         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
6746         (libfunc_entry): New structure.
6747         (libfunc_hash): New hashtable.
6748         (hash_libfunc): New function.
6749         (eq_libfunc): New function.
6750         (convert_optab_libfunc): New function.
6751         (optab_libfunc): New function.
6752         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
6753         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
6754         expand_float, expand_fix, new_optab, new_convert_optab):
6755          Update for new libfunc API.
6756         (init_libfunc, init_integral_libfuncs,
6757         init_floating_libfuncs, init_interclass_conv_libfuncs
6758         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
6759         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
6760         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
6761         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
6762         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
6763         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
6764         gen_extend_conv_libfunc): New.
6765         (init_one_libfunc): Revamp for hashtables.
6766         (set_conv_libfunc): Likewise.
6767         (init_optabs): Initialize hashtable; use lazy initialization where
6768         possible.
6769         * optabs.h (optab_handlers): Move out of GGC.
6770         (optab, convert_optab): Move out of GGC; add lazy gen info.
6771         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
6772         (optab_libfunc, convert_optab_libfunc): New.
6773         * builtins.c (expand_builtin_powi): Update for new API.
6774         * expr.c (convert_move): Likewise.
6775         * expmed.c (expand_divmod): Likewise.
6776
6777 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
6778
6779         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
6780         GOT pointer only if there is a constant pool.  Use the allocated space
6781         for SPE also.
6782
6783 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
6784
6785         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
6786         typo for AltiVec.
6787
6788 2007-09-04  Revital Eres  <eres@il.ibm.com>
6789             Richard Guenther  <rguenther@suse.de>
6790             R. Clint Whaley  <whaley@cs.utsa.edu>
6791
6792         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
6793         Document new flags.
6794         * tree-tailcall.c (process_assignment): Use -fassociative-math
6795         when reodering operands of floating-point type.
6796         * fold-const.c (fold_comparison, fold_binary): Use
6797         -fassociative-math and -freciprocal-math instead of
6798         -funsafe-math-optimization flag.
6799         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
6800         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
6801         -freciprocal-math instead of -funsafe-math-optimizations.
6802         * opts.c (set_fast_math_flags): Set -freciprocal-math and
6803         -fassociative-math when -ffast-math is set.
6804         (set_unsafe_math_optimizations_flags): New Function
6805         to set -freciprocal-math and -fassociative-math when
6806         -funsafe-math-optimizations is set.
6807         (common_handle_option): Call it.
6808         * tree-vectorizer.c (vect_is_simple_reduction): Use
6809         -fassociative-math when doing reduction on floats.
6810         * loop-unroll.c (analyze_insn_to_expand_var): Use
6811         -fassociative-math when expanding an accumulator of type float.
6812         * simplify-rtx.c (simplify_binary_operation_1): Use
6813         -fassociative-math and -freciprocal-math when reordeing operands
6814         of floating-point type.
6815         * combine.c (combine_simplify_rtx): Likewise.
6816         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
6817         Likewise.
6818         * common.opt (-fassociative-math, -freciprocal-math): New flags.
6819
6820 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
6821
6822         PR c++/18608
6823         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
6824
6825 2007-09-04  Jan Hubicka  <jh@suse.cz>
6826
6827         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
6828
6829 2007-09-04  Jan Hubicka  <jh@suse.cz>
6830
6831         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
6832         and corresponding MATCH_DUP.
6833
6834 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
6835
6836         PR middle-end/33187
6837         * combine.c (subst): Do not try to simplify X if it represents load
6838         of FP constant from the constant pool via float extension.
6839
6840 2007-09-04  Ben Elliston  <bje@au.ibm.com>
6841
6842         * c-opts.c: Include "tm_p.h".
6843         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
6844
6845 2007-09-04  Richard Guenther  <rguenther@suse.de>
6846
6847         PR tree-optimization/33291
6848         * tree-pretty-print.c (dump_generic_node): Dump all
6849         qualifiers for pointer types, not only first.  Dump
6850         qualifiers for aggregate types as well.
6851         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
6852         use the canonical type for building ARRAY_REFs.
6853         * gimplify.c (canonicalize_addr_expr): Clean up.  The
6854         correct validness check is compatibility of the pointer
6855         types.  Always use the canonical type for building
6856         ARRAY_REFs and ADDR_EXPRs.
6857         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
6858         change that disabled propagation of ADDR_EXPRs into statements
6859         with volatile ops.
6860
6861 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
6862
6863         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
6864         (umulsi3_highpart): Make into expanders; existing insns are
6865         now named *[insn]_nov6.  Add stars to existing [insn]_v6
6866         counterparts' names.
6867
6868 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
6869
6870         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
6871         (unprotoize.o): Remove SHLIB_MULTILIB.
6872
6873 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
6874
6875         * doc/extend.texi: Document progmem attribute for AVR.
6876
6877 2007-09-03  Anatoly Sokolov <aesok@post.ru>
6878
6879         PR target/28902
6880         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
6881
6882 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
6883
6884         * optabs.c (expand_ffs): Initialize val and defined_at_zero
6885         to avoid warnings.
6886
6887         * optabs.c: Remove unnecessary forward declarations.
6888         (expand_unop_direct): New, broken out of expand_unop.
6889         (expand_doubleword_clz): New.
6890         (expand_ctz): Move above expand_ffs.  Use
6891         start_sequence, end_sequence, add_equal_note, and
6892         expand_unop_direct.  Add more commentary.
6893         (expand_ffs): Try both ctz optab and expand_ctz.
6894         Generate a test and branch if the hardware doesn't give us
6895         a useful value for input zero.  Style improvements similar to
6896         expand_ctz.
6897
6898         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
6899
6900 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
6901
6902         * config.gcc: Delete stanza for arm-semi-aof and
6903         armel-semi-aof targets.
6904         * config/arm/arm-protos.h
6905         * config/arm/arm.c
6906         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
6907         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
6908         delete aof_pic_label and remove mention of AOF in comments.
6909         * config/arm/arm.md: Delete patterns used only for AOF assembly.
6910         * config/arm/aof.h
6911         * config/arm/semiaof.h
6912         * config/arm/t-semi: Delete file.
6913
6914 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6915
6916         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
6917         CONST_CAST_BB): New macros for type-specific casts.
6918         (CONST_CAST): Add a TYPE parameter and define it in terms of
6919         CONST_CAST2.
6920
6921         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
6922         * c-lex.c (cb_ident, lex_string): Likewise,
6923         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
6924         * config/i386/i386.c (ix86_function_regparm,
6925         ix86_function_sseregparm): Use CONST_CAST_TREE.
6926         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
6927         CONST_CAST.
6928         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
6929         give_switch, set_multilib_dir): Likewise,
6930         * gengtype-parse.c (string_seq, typedef_name): Likewise,
6931         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
6932         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
6933         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
6934         * prefix.c (update_path): Likewise,
6935         * pretty-print.c (pp_base_destroy_prefix): Likewise,
6936         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
6937         * tree-cfg.c (tree_can_merge_blocks_p,
6938         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
6939         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
6940         * tree.c (build_string): Supply a TYPE for CONST_CAST.
6941         (attribute_list_contained): Use CONST_CAST_TREE.
6942
6943 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
6944
6945         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
6946
6947 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
6948
6949         PR middle-end/33290
6950         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
6951         before forcing them into a register.
6952
6953 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
6954
6955         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
6956         rather than define_code_macro.
6957
6958 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6959
6960         * gcc.c (xputenv): New function.
6961         (putenv_from_prefixes): Use xputenv instead of putenv.
6962         (process_command): Use xputenv instead of putenv.
6963         (set_collect_gcc_options): Use xputenv instead of putenv.
6964         (main): Use xputenv instead of putenv.
6965
6966 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
6967
6968         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
6969         availability of swap instruction.
6970         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
6971
6972 2007-09-03  Revital Eres  <eres@il.ibm.com>
6973
6974         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
6975         Documentation.
6976
6977 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
6978             Ayal Zaks  <zaks@il.ibm.com>
6979             Revital Eres  <eres@il.ibm.com>
6980
6981         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
6982         compute_split_row): New functions.
6983         (ps_unschedule_node): Remove.
6984         (normalize_sched_times): Iterate over the already scheduled
6985         insns instead of the number of nodes.
6986         (MAX_SPLIT_NUM): New definition.
6987         (sms_schedule_by_order): Change the scheduling heuristic to
6988         avoid useless increases of initiation interval ii.
6989         (get_sched_window): Add dump printouts.
6990
6991 2007-09-02  David Daney  <ddaney@avtrex.com>
6992
6993         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
6994         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
6995         (optab, insn): Add more attributes.
6996         (fetchop_bit): New code macro.
6997         (immediate_insn): New code macro attribute.
6998         (sync): Change condition to ISA_HAS_SYNC.
6999         (rdhwr): Change predicate for operand 0 to register_operand.
7000         (memory_barrier): New expand.
7001         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
7002         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
7003         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
7004         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
7005         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
7006         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
7007         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
7008         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
7009         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
7010         
7011 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
7012             Hans-Peter Nilsson  <hp@axis.com>
7013
7014         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
7015         Defined to describe availability and behavior of CLZ.
7016         * config/cris/cris.md (clzsi2): Implement using lz instruction.
7017         * config/cris/cris.opt: Tweak comment for "-metrax4".
7018         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
7019         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
7020         (count_leading_zeros): Define.
7021
7022 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7023
7024         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
7025
7026 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
7027
7028         PR c/29237
7029         PR middle-end/33272
7030         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
7031         decayed from array.
7032
7033 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
7034
7035         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
7036         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
7037         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
7038         sched-deps.c, sched-int.h, system.h, target.h,
7039         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
7040         tree.def: Fix comment typos.
7041
7042 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
7043
7044         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
7045         (override_options): Turn on -mstrict-align on non-ColdFire
7046         targets.
7047         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
7048
7049 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7050
7051         * c-common.c (const_strip_array_types): Delete.
7052         * c-common.h (const_strip_array_types): Likewise.
7053         * emit-rtl.c (const_next_insn, const_previous_insn,
7054         const_next_nonnote_insn, const_prev_nonnote_insn,
7055         const_next_real_insn, const_prev_real_insn,
7056         const_next_active_insn, const_prev_active_insn, const_next_label,
7057         const_prev_label): Delete.
7058         * gimple-low.c (block_may_fallthru): Use expr_last.
7059         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
7060         * rtl.h (const_previous_insn, const_next_insn,
7061         const_prev_nonnote_insn, const_next_nonnote_insn,
7062         const_prev_real_insn, const_next_real_insn,
7063         const_prev_active_insn, const_next_active_insn, const_prev_label,
7064         const_next_label): Delete.
7065         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
7066         * system.h (CONST_CAST): Update comment.
7067         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
7068         (const_first_stmt, const_last_stmt): Delete.
7069         (tree_block_ends_with_condjump_p): Use last_stmt.
7070         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
7071         * tree-iterator.c (const_expr_first, const_expr_last,
7072         const_expr_only): Delete.
7073         * tree.c (const_lookup_attribute): Likewise.
7074         (attribute_list_contained): Use lookup_attribute.
7075         * tree.h (const_lookup_attribute, const_expr_first,
7076         const_expr_last, const_expr_only): Delete.
7077
7078 2007-09-01  Richard Guenther  <rguenther@suse.de>
7079
7080         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
7081         instead of TREE_THIS_VOLATILE.
7082         * tree-ssa-operands.c (add_virtual_operand): Do not set
7083         has_volatile_ops.  Do not check s_ann for NULL.
7084         (get_indirect_ref_operands): Likewise.
7085         (get_expr_operands): Likewise.  For all reference trees
7086         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
7087         check base of reference for TREE_THIS_VOLATILE.
7088
7089 2007-09-01  Richard Guenther  <rguenther@suse.de>
7090
7091         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
7092         between integral types.  Also allow conversions between
7093         pointer types.
7094
7095 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7096
7097         * optabs.c (prepare_float_lib_cmp): Use
7098         libgcc_cmp_return_mode instead of word_mode.
7099         * config/dfp-bit.h: Likewise.
7100         * config/fp-bit.h: Likewise.
7101         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
7102         New function.
7103         (spu_libgcc_shift_count_mode): New function.
7104         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
7105         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
7106
7107 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
7108
7109         * tree-pretty-print.c: Include output.h.
7110         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
7111         HOST_WIDE_INT_PRINT_DEC.
7112         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
7113
7114 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
7115
7116         PR rtl-optimization/33224
7117         * loop-iv.c (latch_dominating_def): Check that the definition belongs
7118         to the analysed region.
7119
7120 2007-08-31  Richard Guenther  <rguenther@suse.de>
7121
7122         * function.c (allocate_struct_function): Do not set
7123         current_function_returns_pointer.
7124         * function.h (struct var_refs_queue): Remove.
7125         (struct simple_obstack_stack): Likewise.
7126         (struct function): Remove fixup_var_refs_queue member.
7127         Remove returns_pointer flag.
7128         (current_function_returns_pointer): Remove define.
7129
7130 2007-08-31  Nick Clifton  <nickc@redhat.com>
7131
7132         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
7133         secondary keys in order to obtain a stable sort.
7134
7135 2007-08-31  Nick Clifton  <nickc@redhat.com>
7136
7137         PR target/33132
7138         * config/m32r/constraints.md: Add W constraint for integer zero.
7139         * config/m32r/m32r.md (get_pc): Use W and i constraints.
7140         Fix length calculation by using alternatives.
7141
7142 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
7143
7144         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
7145         split out from expand_binop.
7146         (avoid_expensive_constant): New function.
7147         (expand_binop_directly): Remove commutative_op argument and
7148         (expand_binop_directly): Remove commutative_op argument and
7149         call cummutative_optab_p instead.  Do not change op0 or op1
7150         when swapping xop0 and xop1.  Apply avoid_expensive_constant
7151         to each argument after potential swapping.  Enforce the
7152         canonical order of commutative operands.
7153         (expand_binop): Use shift_optab_p and commutative_optab_p.
7154         Update the calls to expand_binop_directly.  Only force constants
7155         into registers when widening an operation.  Only swap operands
7156         once a direct expansion has been rejected.
7157         (expand_twoval_binop): Only force constants into registers when
7158         using a direct expansion.
7159
7160 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
7161
7162         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
7163         (sched_analyze_insn): Don't postprocess speculative dependencies when
7164         target has no scheduling.
7165         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
7166         'uninitialized' warning.
7167
7168 2007-08-31  Richard Guenther  <rguenther@suse.de>
7169
7170         * tree.c (build_complex_type): Always set TYPE_NAME for
7171         comples types.
7172
7173 2007-08-31  Olivier Hainque  <hainque@adacore.com>
7174
7175         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
7176         internal macro. Default alignment factor for csect directives, chosen
7177         to match what BIGGEST_ALIGNMENT allows.
7178         (DATA_SECTION_ASM_OP): Use it.
7179         * config/rs6000/rs6000.c
7180         (rs6000_xcoff_output_readonly_section_asm_op):
7181         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
7182         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
7183         
7184 2007-08-31  Olivier Hainque  <hainque@adacore.com>
7185
7186         * dbxout.c (dbxout_block): Move declaration within the first
7187         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
7188         block to include the definition, together with the associated
7189         helpers.
7190
7191 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
7192             Revital Eres  <eres@il.ibm.com>
7193
7194         * doc/invoke.texi (-mpaired): Document flag.
7195         * config.gcc: Include paired.h in powerpc extra_headers and
7196         750cl.h in powerpc-*-linux*paired*.
7197         * config/rs6000/rs6000.opt (-mpaired): New flag.
7198         * config/rs6000/rs6000.c (paired_init_builtins,
7199         paired_expand_builtin, paired_expand_lv_builtin,
7200         paired_expand_stv_builtin, paired_expand_predicate_builtin):
7201         New functions to support the paired single builtin functions.
7202         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
7203         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
7204         single builtins.
7205         (bdesc_paired_preds): New structure for paired predicate
7206         instructions.
7207         (rs6000_expand_builtin): Expand paired single builtins.
7208         (rs6000_init_builtins): Init paired single builtins.
7209         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
7210         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
7211         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
7212         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
7213         (rs6000_vector_mode_supported_p): Support paired vector mode.
7214         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
7215         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
7216         New.
7217         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
7218         (DATA_ALIGNMENT): Likewise.
7219         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
7220         (rs6000_builtins): Add PAIRED builtins.
7221         * config/rs6000/rs6000.md: Include paired.md.
7222         * config/rs6000/paired.h: New.
7223         * config/rs6000/paired.md: New.
7224         * config/rs6000/750cl.h: New.
7225         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
7226
7227 2007-08-30  Ollie Wild  <aaw@google.com>
7228
7229         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
7230         * gcc.c (default_compilers): Add -fno-directives-only to
7231         @assembler-with-cpp.
7232
7233 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
7234
7235         PR middle-end/33211
7236
7237         * regclass.c (initial_fixed_regs): Revert previous change and make
7238         it const again.
7239         (initial_call_used_regs): Likewise.
7240         (initial_call_really_used_regs): Delete, reverting previous addition.
7241         (initial_reg_names): Likewise.
7242         (init_reg_sets): Revert previous change.
7243         (saved_fixed_regs): New.
7244         (saved_call_used_regs): New.
7245         (saved_call_really_used_regs): New.
7246         (saved_reg_names): New.
7247         (save_register_info): New.
7248         (restore_register_info): New.
7249         (init_reg_sets_1): Replace reset of register info with call to
7250         restore_register_info.
7251         * rtl.h (save_register_info): Declare.
7252         * toplev.c (backend_init): Call save_register_info.
7253
7254 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7255
7256         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
7257         from the original statement.
7258
7259 2007-08-30  Chao-ying Fu  <fu@mips.com>
7260
7261         * c-lex.c (interpret_fixed): Declare.
7262         (interpret_float): Process _Fract and _Accum.
7263         (interpret_fixed): New function.
7264         * final.c (output_addr_const): Process CONST_FIXED.
7265         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
7266         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
7267         SS_DIV, US_DIV.
7268         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
7269         US_DIV, US_ASHIFT.
7270         (simplify_immed_subreg): Support CONST_FIXED.
7271         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
7272         (simplify_subreg): Support CONST_FIXED.
7273
7274 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7275
7276         * config/rs6000/ppu_intrinsics.h: New file.
7277         * config.gcc (powerpc*-*-* <extra_headers>): Install
7278         ppu_intrinsics.h.
7279
7280 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
7281
7282         * cfg.c (dump_flow_info): Change to also print entry and exit
7283         block info.
7284         * print-rtl.c (print_rtl_single): Allow to print rtl with
7285         -fdump-unnumbered.
7286         
7287 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
7288
7289         * df-core.h (df_dump_region): New function.
7290         * df.h (df_dump_region): New function.
7291         * loop-invariant.c (find_defs): Add call to df_dump_region.
7292         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
7293         df_dump_region.
7294         
7295 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
7296
7297         PR target/33168
7298         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
7299         true if any of the compare_section_name calls returned true,
7300         rather than if any returned false.
7301
7302 2007-08-30  Richard Guenther  <rguenther@suse.de>
7303
7304         PR tree-optimization/33199
7305         * tree-ssa-structalias.c (handle_lhs_call): New function.
7306         (find_func_aliases): In non-IPA mode make sure that for
7307         calls that return a pointer we add a constraint for the
7308         result to point to anything.
7309
7310 2007-08-30  Richard Guenther  <rguenther@suse.de>
7311
7312         * doc/invoke.texi (-mveclibabi): Document new target option.
7313         * config/i386/i386.opt (-mveclibabi): New target option.
7314         * config/i386/i386.c (ix86_veclib_handler): Handler for
7315         vectorization library support.
7316         (override_options): Handle the -mveclibabi option, initialize
7317         the vectorization library handler.
7318         (ix86_builtin_vectorized_function): As fallback call the
7319         vectorization library handler, if set.
7320         (ix86_veclibabi_acml): New static function for ACML ABI style
7321         vectorization support.
7322
7323 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
7324
7325         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
7326         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
7327         SImode and update m.  Don't run gen_lowpart_common on arbitrary
7328         memory address, force it to register first.
7329
7330         PR middle-end/32758
7331         * dce.c (dce_process_block): Don't delete setters of
7332         artificially used registers.
7333
7334 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7335
7336         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
7337         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
7338         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
7339
7340 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7341
7342         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
7343         pattern.
7344         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
7345         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
7346
7347 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7348
7349         * system.h: Activate -Wcast-qual as warning-only.
7350
7351 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
7352
7353         PR target/33168
7354         * config/rs6000/rs6000.c (compare_section_name): New function.
7355         (rs6000_elf_in_small_data_p): Compare section prefixes instead
7356         of full name.
7357
7358 2007-08-29  Olivier Hainque  <hainque@adacore.com>
7359
7360         * xcoffout.c: #include debug.h.
7361         * Makefile.in (xcoffout.o): Add debug.h dependency.
7362
7363 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
7364
7365         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
7366         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
7367
7368 2007-08-29  Richard Guenther  <rguenther@suse.de>
7369
7370         * tree-pretty-print.c (dump_generic_node): Print
7371         label DECL_UID as D.%u.
7372         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
7373
7374 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7375
7376         * builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
7377         * builtins.def (BUILT_IN_REALLOC): New builtin.
7378
7379 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
7380
7381         PR c++/33194
7382         * tree.c (build_type_attribute_qual_variant): Set canonical types
7383         on the final, unqualified attribute variant before building the
7384         qualified version.
7385
7386 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7387
7388         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
7389         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
7390
7391 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7392
7393         Revert
7394         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7395         * config/bfin/bfin.md (composev2hi): Put operands into vector
7396         with correct order.
7397
7398 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7399
7400         * config/bfin/bfin.md (composev2hi): Put operands into vector
7401         with correct order.
7402
7403 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7404
7405         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
7406         attribute when appropriate.
7407         (bfin_handle_l1_text_attribute): New.
7408         (bfin_handle_l1_data_attribute): New.
7409         (bfin_attribute_table): Add attributes: l1_text, l1_data,
7410         l1_data_A and l1_data_B.
7411         * doc/extend.texi (node Function Attributes): Document l1_text
7412         function attribute.
7413         (Variable Attributes): Add Blackfin subsection. Document l1_data,
7414         l1_data_A and l1_data_B variable attributes.
7415
7416 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
7417
7418         * config/bfin/bfin.opt (minline-plt): Add.
7419         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
7420         call to global functions.
7421         * doc/invoke.texi (Option Summary): Mention -minline-plt.
7422         (Blackfin Options): Document -minline-plt.
7423
7424 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
7425
7426         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
7427         given a non-function.
7428         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
7429
7430 2007-08-28  DJ Delorie  <dj@redhat.com>
7431
7432         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
7433
7434 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7435
7436         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
7437
7438 2007-08-28  Richard Guenther  <rguenther@suse.de>
7439
7440         * tree.h (struct tree_function_decl): Increase size of
7441         function_code bitfield.
7442
7443 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
7444             Kazu Hirata  <kazu@codesourcery.com>
7445
7446         * config/m68k/linux.h
7447         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
7448         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
7449         (m68k_return_in_memory): New.
7450         * config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
7451         New.
7452
7453 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
7454
7455         PR target/32661
7456         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
7457         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
7458         operand) when top VEC_SELECT extracts scalar element.
7459         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
7460         (*vec_extract_v4sf_mem): Ditto.
7461
7462 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
7463
7464         PR middle-end/32370
7465         * passes.c (init_optimization_passes): Move pass_df_finish
7466         after pass_postreload sublist.
7467
7468         PR rtl-optimization/33148
7469         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
7470         (neg (lt X 0)) if X has scalar int mode.
7471
7472         PR debug/32914
7473         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
7474         initializer, use build_vector_from_ctor if possible to create
7475         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
7476         even after this, return NULL.
7477
7478 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
7479
7480         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
7481
7482 2007-08-28  Richard Guenther  <rguenther@suse.de>
7483
7484         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
7485         (struct tree_function_decl): Make function_code a bitfield.
7486         Add disregard_inline_limits flag.
7487         * cgraphunit.c (cgraph_process_new_functions): Check
7488         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
7489         (cgraph_preserve_function_body_p): Likewise.
7490         * ipa-inline.c (compute_inline_parameters): Likewise.
7491         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
7492         for GNU C extern inline functions.
7493         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
7494         * tree-inline.c (disregard_inline_limits_p): Remove.
7495         * tree-inline.h (disregard_inline_limits_p): Likewise.
7496         * c-common.c (handle_always_inline_attribute): Set
7497         DECL_DISREGARD_INLINE_LIMITS.
7498         * langhooks.c (add_builtin_function): Verify the function code
7499         fits in the bitfield.
7500
7501 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
7502             Vladimir Yanovsky  <yanov@il.ibm.com>
7503             Revital Eres  <eres@il.ibm.com>
7504             Andrey Belevantsev  <abel@ispras.ru>
7505
7506         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
7507         is set.
7508         * modulo-sched.c: Add documentation regarding do-loop.
7509         (doloop_register_get): Change number of arguments to support
7510         the new do-loop pattern and check whether COUNT_REG has no other
7511         occurences in the loop besides in the control part.
7512         (duplicate_insns_of_cycles): Do not duplicate the insn which
7513         changes count_reg as it is already adjusted.
7514         (generate_prolog_epilog): New argument to support the new
7515         do-loop pattern.  Change the subtract instruction to use
7516         expand_simple_binop.  Call duplicate_insns_of_cycles with new
7517         argument.
7518         (sms_schedule): Call doloop_register_get and
7519         generate_prolog_epilog with new argument.  Do not handle loops
7520         with single sets insns with subreg in their lhs.
7521         * loop-doloop.c (doloop_optimize): Support for another do-loop
7522         pattern.
7523         (doloop_condition_get): Gets an instruction instead of a pattern
7524         and change the return condition when the do-loop pattern is
7525         not parallel.
7526         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
7527         deps when considering to not create edges.
7528
7529 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
7530
7531         * doc/extend.texi (gnu_inline funtion attribute): Document C++
7532         behavior.
7533
7534 2007-08-27  Jason Merrill  <jason@redhat.com>
7535
7536         PR c++/31337
7537         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
7538         zero-sized types after calling gimplify_modify_expr_rhs.
7539
7540 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
7541
7542         * regclass.c (init_reg_autoinc): Fix typo.
7543
7544 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
7545         
7546         Fix PR tree-optimization/33173
7547         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
7548
7549 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
7550
7551         PR target/31385
7552         * config/i386/i386.h (VALID_DFP_MODE_P): New.
7553         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
7554         GPR.
7555
7556 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
7557             David Ung  <davidu@mips.com>
7558             Nigel Stephens <nigel@mips.com>
7559
7560         Separate target-specific initialization from general
7561         back-end initialization.
7562
7563         * toplev.c (init_alignments): New, split out from...
7564         (process_options): ...here.
7565         (backend_init_target): New, split out from...
7566         (backend_init): ...here.
7567         (lang_dependent_init_target): New, split out from...
7568         (lang_dependent_init): ...here.
7569         (target_reinit): New.
7570         * toplev.h (target_reinit): Declare.
7571         * expr.c (init_expr_target): Renamed from init_expr_once, since it
7572         now can be called more than once.  Update comments.
7573         * expr.h (init_expr_target): Likewise.
7574         * alias.c (init_alias_target): Renamed from init_alias_once, since it
7575         now can be called more than once.  Explicitly zero
7576         static_reg_base_value.
7577         * emit-rtl.c (init_emit_regs): New, split out from...
7578         (init_emit_once): Here.
7579         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
7580         non-const, so that changes from command-line arguments can overwrite
7581         values provided by the static initializers.
7582         (initial_call_really_used_regs): New, used similarly to the above.
7583         (initial_reg_names): Likewise.
7584         (last_mode_for_init_move_cost): Promoted function-local static to
7585         file-scope static to make it accessible outside init_move_cost.
7586         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
7587         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
7588         reg_names since it is needed for parsing command-line options.
7589         (init_move_cost): Use last_mode_for_init_move_cost instead of
7590         function-local static.
7591         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
7592         call_really_used_regs now.  Reinitialize reg_names.  Also
7593         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
7594         reg_class_superunion.  Clear losing_caller_save_reg_set.
7595         Preserve global registers if called more than once.  Reset
7596         move cost, may_move_in_cost, may_move_out_cost, and
7597         last_mode_for_init_move_cost.
7598         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
7599         can now be invoked more than once.  Update comments.
7600         (init_regs): Update comments.
7601         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
7602         and initial_call_really_used_regs, instead of the non-initial 
7603         variables.  This allows us to save the command-line register settings
7604         after target reinitialization.
7605         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
7606         * rtl.h (init_emit_regs): Declare.
7607         (init_reg_modes_target, init_alias_target): Renamed as described
7608         above.
7609         * reload1.c (init_reload): Update comments.
7610         * optabs.c (init_optabs): Likewise.
7611         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
7612         
7613 2007-08-26  Chao-ying Fu  <fu@mips.com>
7614
7615         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
7616         __typeof().
7617
7618 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7619
7620         * alias.c (memory_modified_1, memory_modified_in_insn_p):
7621         Constify.
7622         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
7623         Likewise.
7624         * bb-reorder.c (copy_bb_p): Likewise.
7625         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
7626         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
7627         block_ends_with_condjump_p): Likewise.
7628         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
7629         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
7630         block_ends_with_condjump_p): Likewise.
7631         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
7632         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
7633         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
7634         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
7635         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
7636         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
7637         debug_true_const_tree instad of debug_true_tree.
7638         * debug.c (do_nothing_debug_hooks): Likewise.
7639         * debug.h (ignore_block, debug_true_const_tree): Constify.
7640         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
7641         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
7642         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
7643         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
7644         dbx_reg_number, is_based_loc, field_type,
7645         simple_type_align_in_bits, simple_decl_align_in_bits,
7646         simple_type_size_in_bits, field_byte_offset, insert_float,
7647         type_tag, member_declared_type, is_redundant_typedef,
7648         secname_for_decl, is_inlined_entry_point): Likewise.
7649         * emit-rtl.c (const_next_insn, const_previous_insn,
7650         const_next_nonnote_insn, const_prev_nonnote_insn,
7651         const_next_real_insn, const_prev_real_insn,
7652         const_next_active_insn, const_prev_active_insn, const_next_label,
7653         const_prev_label): Likewise.
7654         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
7655         Likewise.
7656         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
7657         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
7658         sched_insn_is_legitimate_for_speculation_p): Likewise.
7659         * jump.c (reversed_comparison_code_parts,
7660         reversed_comparison_code, reversed_comparison, condjump_label):
7661         Likewise.
7662         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
7663         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
7664         Likewise.
7665         * rtl.h (const_previous_insn, const_next_insn,
7666         const_prev_nonnote_insn, const_next_nonnote_insn,
7667         const_prev_real_insn, const_next_real_insn,
7668         const_prev_active_insn, const_next_active_insn, const_prev_label,
7669         const_next_label, modified_between_p, modified_in_p,
7670         const_note_storeskeep_with_call_p, condjump_label,
7671         reversed_comparison, reversed_comparison_code,
7672         reversed_comparison_code_parts, memory_modified_in_insn_p,
7673         stack_regs_mentioned): Likewise.
7674         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
7675         keep_with_call_p): Likewise.
7676         * sched-deps.c (deps_may_trap_p, sched_get_condition,
7677         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
7678         sd_lists_size, sd_lists_empty_p): Likewise.
7679         * sched-int.h (sched_insns_conditions_mutex_p,
7680         haifa_classify_insn, no_real_insns_p,
7681         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
7682         sd_lists_size, sd_lists_empty_p): Likewise.
7683         * sdbout.c (sdb_debug_hooks): Likewise.
7684         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
7685         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
7686         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
7687         Likewise.
7688         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
7689         tree_can_throw_internal): Likewise.
7690         * tree-flow-inline.h (phi_nodes): Likewise.
7691         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
7692         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
7693         * tree-gimple.c (const_get_call_expr_in): Likewise.
7694         * tree-gimple.h (const_get_call_expr_in): Likewise.
7695         * tree.c (const_lookup_attribute, attribute_list_equal,
7696         attribute_list_contained): Likewise.
7697         * tree.h (attribute_list_equal, attribute_list_contained,
7698         const_lookup_attribute): Likewise.
7699         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
7700
7701 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
7702
7703         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
7704         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
7705
7706 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
7707
7708         PR target/32991
7709         * config/alpha/constraints.md: Delete "svn:mime-type" property
7710         with svn propdel "svn:mime-type".
7711
7712 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
7713
7714         PR middle-end/33181
7715         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
7716         non NOTE insn doesn't cross basic block.
7717         (noce_try_abs): Likewise.
7718         (noce_process_if_block): Likewise.
7719
7720 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
7721
7722         PR target/33151
7723         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
7724         operand without auto-inc-dec.
7725         * config/rs6000/rs6000.md (floatsidf2_internal): Use
7726         offsettable_mem_operand.
7727         (floatunssidf2_internal): Same.
7728         (fix_truncdfsi2_internal): Same.
7729         (floatsidf_ppc64): Same.
7730         (floatunssidf_ppc64): Same.
7731         (fix_trunctfsi2_internal): Same.
7732
7733 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
7734
7735         PR bootstrap/30620
7736         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
7737         pass defines needed for version.c.
7738
7739 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
7740
7741         * configure.ac (--debug-prefix-map check): Change assembler
7742         version presumed to have feature to 2.18.
7743         * configure: Regenerate.
7744
7745 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7746
7747         * c-common.c (vector_types_convertible_p,
7748         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
7749         self_promoting_args_p): Constify.
7750         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
7751         c_promoting_integer_type_p, self_promoting_args_p,
7752         anon_aggr_type_p, vector_types_convertible_p): Likewise.
7753         * c-decl.c (anon_aggr_type_p): Likewise.
7754         * * c-dump.c (dump_stmt): Likewise.
7755         * c-objc-common.c (has_c_linkage): Likewise.
7756         * c-tree.h (same_translation_unit_p): Likewise.
7757         * c-typeck.c (null_pointer_constant_p,
7758         tagged_types_tu_compatible_p, function_types_compatible_p,
7759         type_lists_compatible_p, lvalue_or_else, lvalue_p,
7760         comptypes_internal, struct tagged_tu_seen_cache,
7761         same_translation_unit_p, alloc_tagged_tu_seen_cache,
7762         c_size_in_bytes): Likewise.
7763         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
7764         hash_ptr, eq_ptr): Likewise.
7765         * langhooks-def.h (lhd_decl_ok_for_sibcall,
7766         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
7767         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
7768         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
7769         Likewise.
7770         * optabs.c (optab_for_tree_code): Likewise.
7771         * optabs.h (optab_for_tree_code): Likewise.
7772         * rtl.h (simplify_rtx): Likewise.
7773         * simplify-rtx.c (simplify_rtx): Likewise.
7774         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
7775         dump_flag, dump_node): Likewise.
7776         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
7777         queue_and_dump_type, dump_flag): Likewise.
7778         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
7779         * tree-pass.h (dump_node): Likewise.
7780         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
7781         supportable_narrowing_operation): Likewise.
7782         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
7783         supportable_narrowing_operation): Likewise.
7784         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
7785         is_negative_overflow_infinity, is_positive_overflow_infinity,
7786         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
7787         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
7788         update_value_range, add_equivalence, ssa_name_nonnegative_p,
7789         ssa_name_nonzero_p, fp_predicate): Likewise.
7790         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
7791         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
7792         ssa_name_nonnegative_p): Likewise.
7793
7794 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
7795
7796         * config.gcc : Add x86_64-elf target.
7797
7798 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
7799
7800         * expr.c (store_expr): Fix order of store_by_pieces arguments.
7801
7802 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
7803             Nigel Stephens <nigel@mips.com>
7804
7805         PR target/11787
7806
7807         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
7808         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
7809         * expr.c (SET_BY_PIECES_P): Define.
7810         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
7811         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
7812         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
7813         store_by_pieces.
7814         * expr.h (SET_RATIO): Define.
7815         (can_store_by_pieces, store_by_pieces): Update prototypes.
7816         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
7817         can_store_by_pieces/store_by_pieces.
7818         (expand_builtin_memcpy_args): Likewise.
7819         (expand_builtin_strncpy): Likewise.
7820         (expand_builtin_memset_args): Likewise.  Also remove special case
7821         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
7822         decide what to do instead.
7823         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
7824         to can_store_by_pieces.
7825
7826         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
7827         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
7828
7829         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
7830         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
7831         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
7832         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
7833         (STORE_BY_PIECES_P): Define.
7834
7835 2007-08-24  Tom Tromey  <tromey@redhat.com>
7836
7837         * varpool.c (varpool_last_needed_node): Fix comment typo.
7838         * c-decl.c (duplicate_decls): Fix comment typo.
7839         (clone_underlying_type): Update comment.
7840
7841 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7842
7843         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
7844         alpha_in_small_data_p, alpha_split_complex_arg,
7845         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
7846         Constify.
7847         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
7848         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
7849         Likewise.
7850         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
7851         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
7852         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
7853         * config/darwin.c (darwin_binds_local_p): Likewise.
7854         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
7855         Likewise.
7856         * config/i386/i386-protos.h (i386_pe_binds_local_p,
7857         i386_pe_valid_dllimport_attribute_p): Likewise.
7858         * config/i386/i386.c (ix86_function_regparm,
7859         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
7860         x86_can_output_mi_thunk, ix86_mangle_type,
7861         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
7862         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
7863         i386_pe_binds_local_p): Likewise.
7864         * config/ia64/ia64.c
7865         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
7866         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
7867         ia64_invalid_conversion, ia64_invalid_unary_op,
7868         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
7869         Likewise.
7870         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
7871         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
7872         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
7873         * config/mips/mips.c (mips_use_blocks_for_constant_p,
7874         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
7875         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
7876         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
7877         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
7878         * config/pa/pa.c (pa_commutative_p): Likewise.
7879         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
7880         Likewise.
7881         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
7882         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
7883         rs6000_use_blocks_for_constant_p,
7884         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
7885         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
7886         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
7887         * config/s390/s390.c (s390_mangle_type,
7888         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
7889         Likewise.
7890         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
7891         th_in_small_data_p): Likewise.
7892         * config/sh/sh.c (sh_ms_bitfield_layout_p,
7893         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
7894         Likewise.
7895         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
7896         sparc_mangle_type): Likewise.
7897         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
7898         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
7899         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
7900         Likewise.
7901         * hooks.c (hook_bool_mode_const_rtx_false,
7902         hook_bool_mode_const_rtx_true,
7903         hook_bool_const_tree_hwi_hwi_const_tree_false,
7904         hook_bool_const_tree_hwi_hwi_const_tree_true,
7905         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
7906         hook_constcharptr_const_tree_null,
7907         hook_constcharptr_const_rtx_null,
7908         hook_constcharptr_const_tree_const_tree_null,
7909         hook_constcharptr_int_const_tree_null,
7910         hook_constcharptr_int_const_tree_const_tree_null): New.
7911         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
7912         hook_bool_tree_hwi_hwi_tree_false,
7913         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
7914         hook_int_tree_tree_1, hook_constcharptr_tree_null,
7915         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
7916         hook_constcharptr_int_tree_null,
7917         hook_constcharptr_int_tree_tree_null): Delete.
7918         (default_can_output_mi_thunk_no_vcall): Constify.
7919         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
7920         hook_bool_tree_hwi_hwi_tree_false,
7921         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
7922         hook_int_tree_tree_1, hook_constcharptr_tree_null,
7923         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
7924         hook_constcharptr_int_tree_null,
7925         hook_constcharptr_int_tree_tree_null): Delete.
7926         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
7927         hook_bool_const_tree_hwi_hwi_const_tree_false,
7928         hook_bool_const_tree_hwi_hwi_const_tree_true,
7929         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
7930         hook_constcharptr_const_tree_null,
7931         hook_constcharptr_const_rtx_null,
7932         hook_constcharptr_const_tree_const_tree_null,
7933         hook_constcharptr_int_const_tree_null,
7934         hook_constcharptr_int_const_tree_const_tree_null): New.
7935         (default_can_output_mi_thunk_no_vcall): Constify.
7936         * integrate.c (function_attribute_inlinable_p): Likewise.
7937         * integrate.h (function_attribute_inlinable_p): Likewise.
7938         * jump.c (rtx_renumbered_equal_p): Likewise.
7939         * output.h (decl_readonly_section, categorize_decl_for_section,
7940         default_use_anchors_for_symbol_p, default_binds_local_p,
7941         default_binds_local_p_1): Likewise.
7942         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
7943         Likewise.
7944         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
7945         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
7946         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
7947         TARGET_COMP_TYPE_ATTRIBUTES,
7948         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
7949         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
7950         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
7951         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
7952         TARGET_DWARF_CALLING_CONVENTION): Likewise.
7953         * target.h (can_output_mi_thunk, needs_block_p,
7954         first_cycle_multipass_dfa_lookahead_guard_spec,
7955         vector_alignment_reachable, comp_type_attributes,
7956         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
7957         commutative_p, use_blocks_for_constant_p,
7958         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
7959         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
7960         invalid_within_doloop, valid_dllimport_attribute_p,
7961         split_complex_arg, invalid_arg_for_unprototyped_fn,
7962         invalid_conversion, invalid_unary_op, invalid_binary_op):
7963         Likewise.
7964         * targhooks.c (default_invalid_within_doloop,
7965         hook_invalid_arg_for_unprototyped_fn,
7966         default_builtin_vector_alignment_reachable): Likewise.
7967         (hook_bool_rtx_commutative_p): Delete.
7968         (hook_bool_const_rtx_commutative_p): New.
7969         * targhooks.h (default_invalid_within_doloop,
7970         default_builtin_vector_alignment_reachable,
7971         hook_invalid_arg_for_unprototyped_fn): Constify.
7972         (hook_bool_rtx_commutative_p): Delete.
7973         (hook_bool_const_rtx_commutative_p): New.
7974         * varasm.c (bss_initializer_p, decl_default_tls_model,
7975         categorize_decl_for_section, decl_readonly_section,
7976         default_use_anchors_for_symbol_p, default_binds_local_p,
7977         default_binds_local_p_1): Constify.
7978
7979 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
7980
7981         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
7982         __NO_BUILTIN if -fno-builtin.
7983
7984 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
7985
7986         * config/bfin/bfin.c (print_operand): Report error instead of
7987         ICE for wrong operand.
7988
7989 2007-08-24  Michael Matz  <matz@suse.de>
7990
7991         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
7992
7993 2007-08-24  Richard Guenther  <rguenther@suse.de>
7994
7995         PR middle-end/33166
7996         * tree-ssa.c (useless_type_conversion_p): Split into a
7997         recursive and a non-recursive part.
7998         (useless_type_conversion_p_1): New function.
7999         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
8000         from maybe_fold_offset_to_reference is trivially convertible
8001         to the desired type before doing the simplification.
8002
8003 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
8004
8005         * expr.c (store_expr): Optimize initialization of an array
8006         with STRING_CST.
8007         * expr.h (builtin_strncpy_read_str): New prototype.
8008         * builtins.c (builtin_strncpy_read_str): Remove prototype.
8009         No longer static.
8010
8011 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
8012
8013         PR middle-end/33157
8014         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
8015         field when initializing if_info structure.
8016
8017 2007-08-24  Richard Guenther  <rguenther@suse.de>
8018
8019         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
8020         dependencies.
8021         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
8022         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
8023         * tree-inline.c (inlinable_function_p): Fold in common parts of
8024         the cannot_inline_tree_fn langhook.
8025         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
8026         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
8027         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
8028         cannot_inline_tree_fn langhook.
8029         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
8030         cannot_inline_tree_fn member.
8031
8032 2007-08-24  Richard Guenther  <rguenther@suse.de>
8033
8034         * expr.c (get_inner_reference): Do computation of bitoffset
8035         from offset in a way we can detect overflow reliably.
8036
8037 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8038
8039         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
8040
8041 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8042
8043         * config/bfin/bfin.opt (mfast-fp): Add.
8044         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
8045         libbffastfp override libgcc if -mfast-fp.
8046         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
8047         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
8048         (Blackfin Options): Document -mfast-fp.
8049
8050 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
8051
8052         PR tree-optimization/32573
8053         PR middle-end/32946
8054         * tree-data-ref.c (initialize_data_dependence_relation): Clear
8055         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
8056         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
8057         (build_classic_dist_vector): Return false rather than true if
8058         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
8059         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
8060         returned false.  Don't call save_dist_v before calling
8061         build_classic_dist_vector_1.
8062         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
8063         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
8064         DDR_DIR_VECTS vectors.
8065
8066 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
8067
8068         * configure.ac (leb128): Modify sed statement to work with any
8069         binutils version string.
8070         * configure: Regenerate
8071
8072 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8073
8074         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
8075         Wrap in RTX_CODE macro guard.
8076         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
8077         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
8078         arm_mark_dllimport, arm_pe_encode_section_info,
8079         arm_pe_unique_section): Use ISO-C function declarations.
8080         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
8081         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
8082         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
8083         Likewise.
8084         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
8085         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
8086         defining.
8087         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
8088         warnings.
8089         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
8090         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
8091         (register_move_cost): Use ISO-C function declarations.
8092         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
8093         * config/score/score-protos.h (score_declare_object): Add
8094         ATTRIBUTE_PRINTF_4.
8095         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
8096         warnings.
8097         * final.c (profile_function): Avoid empty if-bodies.
8098         
8099         
8100         * calls.c (must_pass_in_stack_var_size,
8101         must_pass_in_stack_var_size_or_pad): Constify.
8102         * config/alpha/alpha-protos.h (function_value): Likewise.
8103         * config/alpha/alpha.c (alpha_return_in_memory,
8104         alpha_pass_by_reference, function_value,
8105         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
8106         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
8107         Likewise.
8108         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
8109         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8110         TARGET_PROMOTE_PROTOTYPES): Likewise.
8111         * config/arm/arm-protos.h (arm_return_in_memory,
8112         arm_pad_arg_upward, arm_function_value): Likewise.
8113         * config/arm/arm.c (arm_pass_by_reference,
8114         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
8115         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8116         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
8117         Likewise.
8118         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
8119         * config/avr/avr-protos.h (avr_function_value): Likewise.
8120         * config/avr/avr.c (avr_return_in_memory,
8121         gas_output_limited_string, gas_output_ascii, avr_function_value,
8122         avr_return_in_memory): Likewise.
8123         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
8124         * config/bfin/bfin.c (bfin_pass_by_reference,
8125         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
8126         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
8127         Likewise.
8128         * config/cris/cris.c (cris_pass_by_reference,
8129         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
8130         * config/crx/crx.c (crx_return_in_memory): Likewise.
8131         * config/darwin.c (function_base, machopic_function_base_name):
8132         Likewise.
8133         * config/fr30/fr30.c (fr30_must_pass_in_stack,
8134         TARGET_PROMOTE_PROTOTYPES): Likewise.
8135         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
8136         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
8137         * config/i386/i386-protos.h (ix86_return_in_memory,
8138         ix86_sol10_return_in_memory): Likewise.
8139         * config/i386/i386.c (ix86_function_value,
8140         ix86_function_sseregparm, ix86_must_pass_in_stack,
8141         type_natural_mode, classify_argument, examine_argument,
8142         construct_container, ix86_pass_by_reference, function_value_32,
8143         function_value_64, ix86_function_value_1, return_in_memory_32,
8144         return_in_memory_64, return_in_memory_ms_64,
8145         ix86_return_in_memory, ix86_sol10_return_in_memory,
8146         TARGET_PROMOTE_PROTOTYPES): Likewise.
8147         * config/ia64/ia64-protos.h (ia64_function_value,
8148         ia64_hpux_function_arg_padding): Likewise.
8149         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
8150         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
8151         ia64_hpux_function_arg_padding): Likewise.
8152         * config/iq2000/iq2000-protos.h (function_arg,
8153         iq2000_function_value): Likewise.
8154         * config/iq2000/iq2000.c (iq2000_return_in_memory,
8155         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
8156         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8157         function_arg, iq2000_function_value): Likewise.
8158         * config/m32c/m32c-protos.h (m32c_function_value,
8159         m32c_promote_function_return): Likewise.
8160         * config/m32c/m32c.c (m32c_pass_by_reference,
8161         m32c_promote_prototypes, m32c_promote_function_return,
8162         m32c_function_value): Likewise.
8163         * config/m32r/m32r.c (m32r_return_in_memory,
8164         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
8165         m32r_in_small_data_p): Likewise.
8166         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
8167         Likewise.
8168         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
8169         m68hc11_function_arg_padding): Likewise.
8170         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
8171         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
8172         m68k_function_value): Likewise.
8173         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
8174         mcore_function_value): Likewise.
8175         * config/mcore/mcore.c (handle_structs_in_regs,
8176         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
8177         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8178         mcore_num_arg_regs, mcore_function_value): Likewise.
8179         * config/mips/mips-protos.h (mips_pad_arg_upward,
8180         mips_function_value): Likewise.
8181         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
8182         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
8183         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8184         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
8185         mips_function_value): Likewise.
8186         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
8187         Likewise.
8188         * config/mmix/mmix.c (mmix_pass_by_reference,
8189         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
8190         mmix_encode_section_info): Likewise.
8191         * config/mn10300/mn10300-protos.h (mn10300_function_value):
8192         Likewise.
8193         * config/mn10300/mn10300.c (mn10300_return_in_memory,
8194         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
8195         mn10300_function_value): Likewise.
8196         * config/mt/mt-protos.h (mt_function_value): Likewise.
8197         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
8198         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
8199         * config/pa/pa-protos.h (function_arg_padding, function_value,
8200         pa_return_in_memory): Likewise.
8201         * config/pa/pa.c (pa_pass_by_reference,
8202         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8203         function_arg_padding, function_value, pa_return_in_memory):
8204         Likewise.
8205         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
8206         * config/rs6000/rs6000-protos.h (rs6000_function_value,
8207         function_arg_padding): Likewise.
8208         * config/rs6000/rs6000.c (rs6000_return_in_memory,
8209         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
8210         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
8211         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8212         function_arg_padding, altivec_expand_dst_builtin,
8213         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
8214         altivec_init_builtins, rs6000_common_init_builtins,
8215         rs6000_function_value): Likewise.
8216         * s390/s390-protos.h (s390_function_value): Likewise.
8217         * config/s390/s390.c (s390_function_arg_size,
8218         s390_pass_by_reference, s390_return_in_memory,
8219         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
8220         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
8221         * config/score/score-protos.h (score_function_value): Likewise.
8222         * config/score/score.c (score_arg_partial_bytes,
8223         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8224         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
8225         score_pass_by_reference, score_add_offset, score_function_value):
8226         Likewise.
8227         * config/sh/sh-protos.h (sh_attr_renesas_p,
8228         sh_promote_prototypes): Likewise.
8229         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
8230         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
8231         sh_attr_renesas_p): Likewise.
8232         * config/sparc/sparc-protos.h (function_value,
8233         function_arg_padding): Likewise.
8234         * config/sparc/sparc.c (sparc_promote_prototypes,
8235         sparc_return_in_memory, sparc_pass_by_reference,
8236         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8237         function_arg_record_value_2, function_arg_record_value_1,
8238         function_arg_record_value, function_arg_record_value,
8239         function_arg_padding, function_value): Likewise.
8240         * config/spu/spu-protos.h (spu_function_value): Likewise.
8241         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
8242         spu_function_value): Likewise.
8243         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
8244         Likewise.
8245         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
8246         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
8247         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
8248         Likewise.
8249         * config/v850/v850.c (v850_return_in_memory,
8250         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
8251         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
8252         * config/xtensa/xtensa.c (xtensa_return_in_msb,
8253         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
8254         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
8255         Likewise.
8256         * explow.c (promote_mode, hard_function_value): Likewise.
8257         * expr.h (hard_function_value, promote_mode): Likewise.
8258         * function.c (aggregate_value_p): Likewise.
8259         * hooks.c (hook_bool_const_tree_true): New.
8260         * hooks.h (hook_bool_const_tree_true): New.
8261         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
8262         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
8263         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8264         TARGET_RETURN_IN_MSB): Likewise.
8265         * target.h (promote_function_args, promote_function_return,
8266         promote_prototypes, return_in_memory, return_in_msb,
8267         pass_by_reference, must_pass_in_stack, callee_copies,
8268         function_value): Likewise.
8269         * targhooks.c (default_return_in_memory,
8270         hook_pass_by_reference_must_pass_in_stack,
8271         hook_callee_copies_named,
8272         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
8273         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
8274         default_function_value): Likewise. 
8275         * targhooks.h (default_return_in_memory,
8276         hook_pass_by_reference_must_pass_in_stack,
8277         hook_callee_copies_named,
8278         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
8279         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
8280         default_function_value): Likewise.
8281         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
8282         (equiv_class_label_hash, equiv_class_label_eq): Constify.
8283         * tree-vectorizer.c (bb_in_loop_p): Likewise.
8284         * tree.c (needs_to_live_in_memory): Likewise.
8285         * tree.h (struct tree_type, needs_to_live_in_memory,
8286         aggregate_value_p, must_pass_in_stack_var_size,
8287         must_pass_in_stack_var_size_or_pad): Likewise.
8288         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
8289         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
8290         lookup_filename): Likewise.
8291
8292 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
8293
8294         PR target/17390
8295         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
8296         fake fcomi i387 instruction for !TARGET_CMOVE.
8297         (ix86_expand_branch): Expand natural sequence with one jump for
8298         all targets, not only TARGET_CMOVE.
8299         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
8300         pattern to implement fake fcomi sequence.  Split instruction after
8301         reload to correct compare sequences.
8302         (*cmpfp_xf_cc): Ditto.
8303         (*cmpfp_<mode>_cc): Ditto.
8304         (*cmpfp_u_cc): Ditto.
8305         (*cmpfp_<mode>_cc): Ditto.
8306
8307 2007-08-23  Richard Guenther  <rguenther@suse.de>
8308
8309         * tree-pretty-print.c (dump_generic_node): Annotate
8310         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
8311
8312 2007-08-23  Richard Guenther  <rguenther@suse.de>
8313
8314         * builtins.c (expand_builtin_mathfn): Wrap argument in
8315         save_expr directly instead of re-building the call.
8316         (expand_builtin_mathfn_2): Likewise.
8317         (expand_builtin_mathfn_3): Likewise.
8318         (expand_builtin_interclass_mathfn): Likewise.
8319         (expand_builtin_int_roundingfn): Set arg.
8320         (expand_builtin_int_roundingfn_2): Likewise.
8321
8322 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
8323
8324         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
8325         *sse_nand<mode>3, *sse_xor<mode>3): New.
8326
8327 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
8328
8329         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
8330         * config/i386/i386.c (print_operand): Handle ';' code.  Output
8331         semicolon for TARGET_MACHO.
8332         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
8333         emit semicolon after 'lock' prefix.
8334         (sync_double_compare_and_swap<mode>): Ditto.
8335         (*sync_double_compare_and_swapdi_pic): Ditto.
8336         (*sync_compare_and_swap_cc<mode>): Ditto.
8337         (sync_double_compare_and_swap_cc<mode>): Ditto.
8338         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
8339         (sync_old_add<mode>): Ditto.
8340         (sync_add<mode>): Ditto.
8341         (sync_sub<mode>): Ditto.
8342         (sync_ior<mode>): Ditto.
8343         (sync_and<mode>): Ditto.
8344         (sync_xor<mode>): Ditto.
8345
8346 2007-08-22  Chao-ying Fu  <fu@mips.com>
8347
8348         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
8349         in DEF_RTL_EXPR.
8350         (copy_rtx): Handle CONST_FIXED.
8351         (rtx_equal_p): Likewise.
8352         * rtl.h (fixed_value.h): New include.
8353         (rtx_def): Add a new field of fixed_value to u.
8354         (XCNMPFV): Define for accessing fixed_value.
8355         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
8356         Define.
8357         * rtl.def (CONST_FIXED): New constant.
8358         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
8359         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
8360         US_ASHIFT): New codes.
8361         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
8362         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
8363         unsigned_fract_convert, unsigned_sat_fract): Document them.
8364         * varasm.c (assemble_integer): Extend to support fixed-point constants
8365         by using different machine classes.
8366         (decode_addr_const): Handle FIXED_CST.
8367         (const_hash_1): Likewise.
8368         (compare_constant): Likewise.
8369         (copy_constant): Likewise.
8370         (const_rtx_hash_1): Handle CONST_FIXED.
8371         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8372         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8373         MODE_VECTOR_UACCUM.
8374         (initializer_constant_valid_p): Handle FIXED_CST.
8375         (output_constant): Support FIXED_POINT_TYPE.
8376         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
8377         * cse.c (hash_rtx): Support CONST_FIXED.
8378         (exp_equiv_p): Likewise.
8379         (cannon_reg): Likewise.
8380         (fold_rtx): Likewise.
8381         (equiv_constant): Likewise.
8382         (cse_process_notes_1): Likewise.
8383         (count_reg_usage): Likewise.
8384         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
8385         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
8386         (wrap_constant): Check CONST_FIXED.
8387         (cselib_hash_rtx): Support CONST_FIXED.
8388         (cselib_subst_to_values): Likewise.
8389         * df-scan.c (df_uses_record): Likewise.
8390         * gcse.c (want_to_gcse_p): Likewise.
8391         (oprs_unchanged_p): Likewise.
8392         (oprs_not_set_p): Likewise.
8393         (compute_transp): Likewise.
8394         (extract_mentioned_regs_helper): Likewise.
8395         * genemit.c (gen_exp): Likewise.
8396         * local-alloc.c (equiv_init_varies_p): Likewise.
8397         (contains_replace_regs): Likewise.
8398         (memref_referenced_p): Likewise.
8399         * loop-invariant.c (check_maybe_invariant): Likewise.
8400         (hash_invariant_expr_1): Likewise.
8401         (invariant_expr_equal_p): Likewise.
8402         * postreload-gcse.c (oprs_unchanged_p): Likewise.
8403         * regclass.c (reg_scan_mark_refs): Likewise.
8404         * regrename.c (scan_rtx): Likewise.
8405         * resource.c (mark_referenced_resources): Likewise.
8406         (mark_set_resources): Likewise.
8407         * rtlanal.c (rtx_unstable_p): Likewise.
8408         (rtx_varies_p): Likewise.
8409         (count_occurrences): Likewise.
8410         (reg_mentioned_p): Likewise.
8411         (modified_between_p): Likewise.
8412         (modified_in_p): Likewise.
8413         (volatile_insn_p): Likewise.
8414         (volatile_refs_p): Likewise.
8415         (side_effects_p): Likewise.
8416         (may_trap_p_1): Likewise.
8417         (inequality_comparisons_p): Likewise.
8418         (computed_jump_p_1): Likewise.
8419         (commutative_operand_precedence): Likewise.
8420         * sched-deps.c (sched_analyze_2): Likewise.
8421         * sched-vis.c (print_value): Likewise.
8422         * reload.c (operands_match_p): Likewise.
8423         (subst_reg_equivs): Likewise.
8424         * reload1.c (eliminate_regs_1): Likewise.
8425         (elimination_effects): Likewise.
8426         (scan_paradoxical_subregs): Likewise.
8427         * alias.c (rtx_equal_for_memref_p): Likewise.
8428         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
8429         * emit-rtl.c (const_fixed_htab): New hash table.
8430         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
8431         Declare.
8432         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
8433         const_fixed_from_fixed_value): New functions.
8434         (verify_rtx_sharing): Handle CONST_FIXED.
8435         (copy_rtx_if_shared_1): Likewise.
8436         (reset_used_flags): Likewise.
8437         (set_used_flags): Likewise.
8438         (copy_insn_1): Likewise.
8439         (init_emit_once): Create const_fixed_htab.
8440         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
8441
8442 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
8443
8444         PR tree-optimization/32949
8445         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
8446         before failing for ivs with non-constant step.
8447
8448 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
8449
8450         * doc/md.texi (Iterators): Renamed from Macros.  All contents
8451         changed to reflect rename of respectively define_code_macro and
8452         define_mode_macro to define_code_iterator and define_mode_iterator.
8453         (Mode Iterators, Code Iterators): Similar.
8454         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
8455         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
8456         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
8457         (initialize_iterators, find_iterator, check_code_iterator)
8458         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
8459         (read_mapping, read_rtx_1): Similar.
8460         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
8461         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
8462         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
8463         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
8464         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
8465         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
8466         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
8467         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
8468         config/rs6000/sync.md, config/rs6000/rs6000.md,
8469         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
8470         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
8471         config/vax/vax.md, config/bfin/bfin.md: Similar.
8472
8473 2007-08-22  David Daney  <ddaney@avtrex.com>
8474
8475         * doc/install.texi (Testing): Mention testing on a simulator.
8476
8477 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
8478
8479         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
8480
8481         * doc/libgcc.texi (Decimal float library routines): Fix formatting
8482         and rearrange floating point conversion functions into different
8483         categories.
8484
8485 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
8486
8487         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
8488         dfa_post_advance_cycle): New scheduler hooks.
8489         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
8490         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
8491         new hooks.
8492         (TARGET_SCHED): Use them.
8493         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
8494         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
8495         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
8496
8497         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
8498         function to facilitate debugging.
8499         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
8500         (output_insn_has_dfa_reservation_p): New static function to output
8501         insn_has_dfa_reservation_p ().
8502         (write_automata): Use it.
8503         * genattr.c (main): Output declaration for
8504         insn_has_dfa_reservation_p ().
8505
8506 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
8507             Richard Guenther <rguenther@suse.de>
8508         
8509         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
8510         * simplify_rtx (simplify_binary_operation_1): Likewise.
8511                 
8512 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8513
8514         PR rtl-optimization/32557
8515         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
8516         of REGNO (mws->mw_reg).
8517
8518 2007-08-22  Richard Guenther  <rguenther@suse.de>
8519
8520         PR middle-end/33007
8521         * builtins.c (expand_builtin_int_roundingfn): Replace call
8522         argument wrapped with SAVE_EXPR directly.
8523         (expand_builtin_int_roundingfn_2): Likewise.
8524
8525 2007-08-22  Richard Guenther  <rguenther@suse.de>
8526
8527         * tree-inline.c (inlinable_function_p): Restore disregarding
8528         inline limits for GNU extern inline functions.
8529
8530 2007-08-22  Richard Guenther  <rguenther@suse.de>
8531
8532         PR middle-end/32563
8533         * tree.c (host_integerp): Treat sizetype as signed as it is
8534         sign-extended.
8535
8536 2007-08-21  Ian Lance Taylor  <iant@google.com>
8537
8538         PR tree-optimization/33134
8539         * tree-vrp.c (adjust_range_with_scev): Call
8540         set_value_range_to_value.
8541
8542 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
8543
8544         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
8545         prototype.
8546         
8547 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
8548
8549         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
8550         whitespace.
8551
8552 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
8553
8554         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
8555         cases to set eight bytes at a time.
8556         (expand_block_move): Likewise.
8557         
8558 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
8559
8560         PR debug/32610
8561         * dwarf2out.c (gen_decl_die): Don't call
8562         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
8563
8564 2007-08-21  Paul Brook  <paul@codesourcery.com>
8565             Nathan Sidwell  <nathan@codesourcery.com>
8566             Mark Mitchell  <mark@codesourcery.com>
8567             Joseph Myers  <joseph@codesourcery.com>
8568
8569         * configure.ac: Add --with-pkgversion and --with-bugurl.
8570         * configure: Regenerate.
8571         * doc/install.texi: Document them.
8572         * version.c (version_string): Remove VERSUFFIX.
8573         (VERSUFFIX): Remove.
8574         (pkgversion_string): New.
8575         (bug_report_url): Do not hard-code initializer.
8576         * version.h (pkgversion_string): Declare.
8577         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
8578         Define.
8579         (version.o): Define PKGVERSION and BUGURL.
8580         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
8581         (%.pod): Define BUGURL.
8582         * gcc.c (process_command, main): Use pkgversion_string.
8583         * toplev.c (compile_file, print_version): Likewise.
8584         * protoize.c (main): Likewise.
8585         * gcov.c (print_version): Likewise.  Update copyright date.
8586         * gcov-dump.c (print_version): Likewise.  Update copyright date.
8587         * mips-tdump.c (main): Likewise.  Update copyright date.
8588         * mips-tfile.c (main): Likewise.  Update copyright date.
8589         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
8590         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
8591         shorten description.
8592         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
8593         * doc/gccint.texi: Likewise.
8594         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
8595         Update copyright date.
8596
8597 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
8598
8599         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
8600         (ix86_expand_strlensi_unroll_1): Ditto.
8601         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
8602         (ix86_expand_carry_flag_compare): Update comment.
8603
8604 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
8605
8606         PR middle-end/32912
8607         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
8608         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
8609
8610 2007-08-21  Richard Guenther  <rguenther@suse.de>
8611
8612         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
8613
8614 2007-08-21  Richard Guenther  <rguenther@suse.de>
8615
8616         PR middle-end/33122
8617         * fold-const.c (fold_binary): Remove index +p PTR folding.
8618         Fix types of POINTER_PLUS_EXPR generated by folding of
8619         (PTR +p B) +p A.
8620
8621 2007-08-20  Chao-ying Fu  <fu@mips.com>
8622
8623         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
8624         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
8625         RID_ONEWAY, so that it can be checked in declspecs_add_type.
8626         (c_common_fixed_point_type_for_size): Declare.
8627         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
8628         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
8629         (c_token_starts_declspecs): Likewise.
8630         (c_parser_declspecs): Likewise.
8631         (c_parser_attributes): Likewise.
8632         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
8633         (c_declspecs): Add saturating_p.
8634         * c-decl.c (build_null_declspecs): Initialize saturating_p.
8635         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
8636         _Sat.  Handle RID_SAT.
8637         Avoid using void, bool, char, int, float, double, _Decimal32,
8638         _Decimal64, _Decimal128, and complex with _Sat.
8639         Handle RID_FRACT and RID_ACCUM.
8640         Make sure _Sat is used with _Fract or _Accum.
8641         (finish_declspecs): Handle cts_fract and cts_accum.
8642         * c-common.c (fixed-value.h): New include.
8643         (constant_expression_warning): Handle FIXED_CST.
8644         (overflow_warning): Likewise.
8645         (warnings_for_convert_and_check): Likewise.
8646         (c_common_fixed_point_type_for_size): New.
8647         (c_common_type_for_mode): Handle fixed-point modes to
8648         return various saturating/non-saturating, signed/unsigned types.
8649         (c_common_signed_or_unsigned_type): Support fixed-point types.
8650         (shorten_compare): Check fixed-point zero.
8651         Handle FIXED_POINT_TYPE.
8652         (c_common_truthvalue_conversion): Handle FIXED_CST.
8653         Handle FIXED_POINT_TYPE.
8654         (c_common_nodes_and_builtins): Record builtin types for fixed-point
8655         types.
8656         (handle_mode_attribute): Handle fixed-point modes.  Need to check
8657         if the signness of base type and fixed-point modes are consistent.
8658         (handle_vector_size_attribute): Handle fixed-point modes.
8659         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
8660         (warn_for_div_by_zero): Check fixed-point zero.
8661         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
8662         a common fixed-point type based on fbit, ibit, sign, and saturation.
8663         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
8664         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
8665         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
8666         (convert_for_assignment): Support FIXED_POINT_TYPE.
8667         (digest_init): Handle FIXED_POINT_TYPE.
8668         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
8669         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
8670         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
8671         GE_EXPR, LT_EXPR, GT_EXPR.
8672         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
8673         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
8674         * target.h (gcc_target): Add fixed_point_supported_p.
8675         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
8676         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
8677         (default_fixed_point_supported_p): Define.
8678         * targhooks.h (default_fixed_point_supported_p): Declare.
8679         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
8680         * doc/install.texi (Configuration): Add --enable-fixed-point.
8681         * configure.ac (--enable-fixed-point): New to enable fixed-point
8682         arithmetic extension to C.  For mips targets, we enable it by default.
8683         * configure, config.in: Regenerate.
8684
8685 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
8686
8687         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
8688
8689 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
8690
8691         * dwarf2out.c (text_section_used): Move declaration outside ifdef
8692         DWARF2_DEBUGGING_INFO.
8693         (cold_text_section_used): Same.
8694         (cold_text_section): Same.
8695
8696 2007-08-20  Richard Guenther  <rguenther@suse.de>
8697
8698         * c-typeck.c (convert_for_assignment): Use the type of
8699         the member for the initialization.
8700
8701 2007-08-20  Richard Guenther  <rguenther@suse.de>
8702
8703         * c-objc-common.c (c_disregard_inline_limits): Remove.
8704         * c-objc-common.h (c_disregard_inline_limits): Likewise.
8705         * cgraphunit.c (cgraph_process_new_functions): Call
8706         disregard_inline_limits_p.
8707         (cgraph_preserve_function_body_p): Likewise.
8708         * ipa-inline.c (compute_inline_parameters): Likewise.
8709         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
8710         Remove.
8711         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
8712         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
8713         disregard_inline_limits langhook.
8714         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
8715         Remove.
8716         * langhooks.h (lang_hooks_for_tree_inlining): Remove
8717         disregard_inline_limits langhook.
8718         * tree-inline.c (disregard_inline_limits_p): New function.
8719         * tree-inline.h (disregard_inline_limits_p): Declare.
8720
8721 2007-08-20  Richard Guenther  <rguenther@suse.de>
8722
8723         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
8724         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
8725         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
8726         auto_var_in_fn_p langhook.
8727         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
8728         move ...
8729         * tree.c (auto_var_in_fn_p): ... here.
8730         (find_var_from_fn): Call auto_var_in_fn_p directly.
8731         * langhooks.h (lang_hooks_for_tree_inlining): Remove
8732         auto_var_in_fn_p langhook.
8733         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
8734         (copy_body_r): Likewise.
8735         (self_inlining_addr_expr): Likewise.
8736         * tree.h (auto_var_in_fn_p): Declare.
8737
8738 2007-08-20  Richard Guenther  <rguenther@suse.de>
8739
8740         * tree.c (WALK_SUBTREE): Call walk_tree_1.
8741         (walk_type_fields): Take lh parameter.
8742         (walk_tree): Rename to ...
8743         (walk_tree_1): ... this.  Do not call the walk_subtrees
8744         langhook but the now passed callback.  Pass lh on recursion.
8745         (walk_tree_without_duplicates): Rename to ...
8746         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
8747         and call walk_tree_1.
8748         * tree.h (walk_tree_lh): New typedef.
8749         (walk_tree_1): Declare.
8750         (walk_tree_without_duplicates_1): Likewise.
8751         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
8752         (walk_tree_without_duplicates): New define to
8753         walk_tree_without_duplicates_1 with NULL lh parameter.
8754         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
8755         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
8756         langhook.
8757         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
8758         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
8759         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
8760         initializer.
8761
8762 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8763
8764         PR middle-end/30564
8765         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
8766         code in front of the compacting of basic blocks.
8767         Move the folding of statements inbetween the cgraph checking
8768         and compacting of basic blocks.
8769
8770 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8771            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
8772
8773         PR target/32522
8774         * config/alpha/alpha.c (va_list_skip_additions): Check for
8775         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
8776         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
8777         PLUS_EXPR when checking ap.__base.
8778         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
8779         when doing addition on pointer types.  Use size_int instead of
8780         build_int_cst.
8781         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
8782         ptr_type in the second operand.
8783
8784 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
8785
8786         PR target/33115
8787         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
8788
8789 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8790
8791         PR middle-end/32940
8792         * cfgexpand.c  (expand_one_register_var): Mark pointer
8793         DECL_ARTIFICIAL as REG_POINTER also.
8794         * stmt.c (expand_decl): Likewise.
8795
8796 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
8797
8798         Fix PR 32772
8799         Fix PR 32716
8800         Fix PR 32328
8801         Fix PR 32303
8802
8803         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
8804         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
8805         on_worklist argument and avoid adding things to worklist multiple
8806         times.
8807         (add_to_worklist): Ditto.
8808         (mark_aliases_call_clobbered): Mark entire structure clobbered if
8809         single SFT is clobbered.
8810         (set_initial_properties): Ditto.
8811         (compute_call_clobbered): Update for changes to function
8812         arguments.
8813         (create_overlap_variables_for): Always create SFT for offset 0.
8814         (create_structure_vars): Handle PHI's, since we are in SSA form at
8815         this point.
8816         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
8817         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
8818         TARGET_MEM_REF.
8819         (add_vars_for_offset): Figure out aliases from access + points-to.
8820         (add_virtual_operand): Use add_vars-for_offset.
8821         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
8822         (add_call_clobber_ops): Remove makes_clobbering_call set.
8823         (get_expr_operands): Always pass through the INDIRECT_REF
8824         reference.
8825         * tree-ssa-structalias.c (struct constraint_graph): Remove
8826         variables member.
8827         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
8828         address_taken, pt_used, number_incoming.
8829         (FIRST_ADDR_NODE): Removed.
8830         (merge_graph_nodes): Remove broken code for the moment.
8831         (init_graph): New function.
8832         (build_pred_graph): Remove code to init_graph.
8833         Add location equivalence support.
8834         (struct scc_info): Rename roots to deleted.
8835         (scc_visit): Ditto.
8836         (init_scc_info): Ditto
8837         (init_topo_info): Use graph->size.
8838         (compute_topo_order): Ditto.
8839         (do_da_constraint): Removed.
8840         (do_sd_constraint): Remove calls to find().
8841         set_union_with_increment should always get 0 as last arg here.
8842         (do_complex_constraint): Replace do_da_constraint with assert.
8843         Stop calling find.
8844         (struct equiv_class_label): New.
8845         (pointer_equiv_class_table): Ditto.
8846         (location_equiv_class_table): Ditto.
8847         (equiv_class_label_hash): Ditto.
8848         (equiv_class_label_eq): Ditto
8849         (equiv_class_lookup): Ditto.
8850         (equiv_class_ladd): Ditto.
8851         (pointer_equiv_class): Ditto.
8852         (location_equiv_class): Ditto.
8853         (condense_visit): Rename and rewrite from label_visit to do only
8854         SCC related stuff for HU.
8855         (label_visit): Do HU work for HU.
8856         (perform_var_substitution): Update to do HU and location
8857         equivalence.
8858         (free_var_substitution_info): Update to free HU and location
8859         equivalence structures.  */
8860         (find_equivalent_node): Update for pointer but not location
8861         equivalence.
8862         (unite_pointer_equivalences): New function.
8863         (move_complex_constraints): Rewrite to only do moving.
8864         (rewrite_constraints): Split out of move_complex_constraints.
8865         (solve_graph): Use graph->size.
8866         (process_constraint_1): Add from_call argument, use it.
8867         Split *a = &b into two constraints.
8868         (process_constraint): Use new process_constraint_1.
8869         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
8870         (get_constraint_for): Handle non-pointer integers properly.
8871         Remove code that used to handle structures.
8872         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
8873         with unknown addends.
8874         (handle_rhs_call): New function.
8875         (find_func_aliases): Use handle_rhs_call.
8876         (set_uids_in_ptset): Add an assert.
8877         (set_used_smts): Fix bug in not considering unified vars.
8878         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
8879         (compute_points_to_sets): Update for other function changes.
8880         (delete_points_to_sets): Ditto.
8881         (ipa_pta_execute): Ditto.
8882         (pass_ipa_pta): We need to update SSA after ipa_pta.
8883         
8884 2007-08-19  Jan Hubicka  <jh@suse.cz>
8885
8886         * i386.md: Replace "rim" and "mri" constraints by "g".
8887
8888 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
8889
8890         * dwarf2out.c (text_section_used, cold_text_section_used,
8891         cold_text_section, dwarf2out_note_section_used): New.
8892         (dwarf2out_init): Initialize cold_text_section.
8893         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
8894         dwarf2out_note_section_used.
8895         (size_of_aranges): Only count entry for text section if it was
8896         used.  Count entry for cold text section if it was used.
8897         (output_aranges): Only output entries for text section and cold
8898         text section if they were used.
8899
8900 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
8901
8902         * tree-pretty-print.c (debug_generic_expr): Add a comment about
8903         the function.
8904         (debug_generic_stmt): Likewise.
8905         (debug_tree_chain): Likewise.
8906
8907 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
8908
8909         * tree-data-refs.c (split_constant_offset): Expose.
8910         * tree-data-refs.h (split_constant_offset): Add declaration.
8911
8912         * tree-vectorizer.h (dr_alignment_support): Renamed
8913         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
8914         Added a new value dr_explicit_realign.
8915         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
8916         dr_offset, dr_step, and dr_aligned_to, along with new access
8917         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
8918         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
8919         STMT_VINFO_DR_ALIGNED_TO.
8920
8921         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
8922         documentation.
8923         In case of outer-loop vectorization with non-fixed misalignment - use
8924         the dr_explicit_realign scheme instead of the optimized realignment
8925         scheme.
8926         (new_stmt_vec_info): Initialize new fields.
8927
8928         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
8929         'nested_in_vect_loop' case. Change verbosity level.
8930         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
8931         Don't fail on zero step in the outer-loop for loads.
8932         (vect_analyze_data_refs): Call split_constant_offset to calculate
8933         base, offset and init relative to the outer-loop.
8934
8935         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
8936         BSI function argument with a new function argument - at_loop.
8937         Simplify the condition that determines STEP. Takes additional argument
8938         INV_P. Support outer-loop vectorization (handle the
8939         nested_in_vect_loop case), including zero step in the outer-loop. Call
8940         vect_create_addr_base_for_vector_ref with additional argument.
8941         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
8942         Updated function documentation. Handle the 'nested_in_vect_loop' case.
8943         Fixed and simplified calculation of step.
8944         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
8945         of bsi, and with additional argument. Call bump_vector_ptr with
8946         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
8947         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
8948         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
8949         when the realignment setup needs to take place inside the loop.
8950         Support the dr_explicit_realign scheme. Allow generating the optimized
8951         realignment scheme for outer-loop vectorization. Added documentation.
8952         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
8953         the 'nested_in_vect_loop' case, including loads that are invariant in
8954         the outer-loop and the realignment schemes. Handle the case when the
8955         realignment setup needs to take place inside the loop. Call
8956         vect_setup_realignment with additional arguments.  Call
8957         vect_create_data_ref_ptr with additional argument and with loop instead
8958         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
8959         (vect_gen_niters_for_prolog_loop): Call
8960         vect_create_addr_base_for_vector_ref with additional arguments.
8961         (vect_create_cond_for_align_checks): Likewise.
8962         (bump_vector_ptr): Updated to support the new dr_explicit_realign
8963         scheme: takes additional argument bump; argument ptr_incr is now
8964         optional; updated documentation.
8965         (vect_init_vector): Takes additional argument (bsi). Use it, if
8966         available, to insert the vector initialization.
8967         (get_initial_def_for_induction): Pass additional argument in call to
8968         vect_init_vector.
8969         (vect_get_vec_def_for_operand): Likewise.
8970         (vect_setup_realignment): Likewise.
8971         (vectorizable_load): Likewise.
8972
8973 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
8974
8975         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
8976         as argument instead of struct loop.
8977         (nested_in_vect_loop_p): New function.
8978         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
8979         vect_used_in_outer.
8980         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
8981         from other phis in the loop.
8982         (destroy_loop_vec_info): Add additional argument to declaration.
8983
8984         * tree-vectorizer.c (supportable_widening_operation): Also check if
8985         nested_in_vect_loop_p (don't allow changing the order in this case).
8986         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
8987         of struct loop. Call nested_in_vect_loop_p and don't require
8988         flag_unsafe_math_optimizations if it returns true.
8989         (new_stmt_vec_info): When setting def_type for phis differentiate 
8990         loop-header phis from other phis.
8991         (bb_in_loop_p): New function.
8992         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
8993         just update their loop_vinfo.  Order of BB traversal now matters -
8994         call dfs_enumerate_from with bb_in_loop_p.
8995         (destroy_loop_vec_info): Takes additional argument to control whether
8996         stmt_vinfo of the loop stmts should be destroyed as well.
8997         (vect_is_simple_reduction): Allow the "non-reduction" use of a
8998         reduction stmt to be defines by a non loop-header phi.
8999         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
9000
9001         * tree-vect-transform.c (vectorizable_reduction): Call
9002         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
9003         (vectorizable_call): Likewise.
9004         (vectorizable_conversion): Likewise.
9005         (vectorizable_operation): Likewise.
9006         (vectorizable_type_promotion): Likewise.
9007         (vectorizable_type_demotion): Likewise.
9008         (vectorizable_store): Likewise.
9009         (vectorizable_live_operation): Likewise.
9010         (vectorizable_reduction): Likewise. Also pass loop_info to
9011         vect_is_simple_reduction instead of loop.
9012         (vect_init_vector): Call nested_in_vect_loop_p.
9013         (get_initial_def_for_reduction): Likewise.
9014         (vect_create_epilog_for_reduction): Likewise.
9015         (vect_init_vector): Check which loop to work with, in case there's an
9016         inner-loop.
9017         (get_initial_def_for_inducion): Extend to handle outer-loop
9018         vectorization. Fix indentation.
9019         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
9020         In the case vect_induction_def get the vector def from the induction
9021         phi node, instead of calling get_initial_def_for_inducion.
9022         (get_initial_def_for_reduction): Extend to handle outer-loop 
9023         vectorization.
9024         (vect_create_epilog_for_reduction): Extend to handle outer-loop
9025         vectorization.
9026         (vect_transform_loop): Change assert to just skip this case.  Add a
9027         dump printout.
9028         (vect_finish_stmt_generation): Add a couple asserts.
9029
9030         (vect_estimate_min_profitable_iters): Multiply
9031         cost of inner-loop stmts (in outer-loop vectorization) by estimated
9032         inner-loop bound.
9033         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
9034         this is an inner-loop reduction in outer-loop vectorization.
9035
9036         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
9037         Same code as what used to be vect_analyze_scalar_cycles, only with
9038         additional argument loop, and loop_info passed to
9039         vect_is_simple_reduction instead of loop.
9040         (vect_analyze_scalar_cycles): Code factored out into
9041         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
9042         Updated documentation.
9043         (analyze_operations): Check for inner-loop loop-closed exit-phis during
9044         outer-loop vectorization that are live or not used in the outerloop,
9045         cause this requires special handling.
9046         (vect_enhance_data_refs_alignment): Don't consider versioning for
9047         nested-loops.
9048         (vect_analyze_data_refs): Check that there are no datarefs in the
9049         inner-loop.
9050         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
9051         and vect_used_in_outer_by_reduction cases.
9052         (process_use): Also consider the case of outer-loop stmt defining an
9053         inner-loop stmt and vice versa.
9054         (vect_analyze_loop_1): New function.
9055         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
9056         loops.  Call vect_analyze_loop_1.
9057         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
9058         been vectorized.  Call destroy_loop_vec_info with additional argument.
9059
9060         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
9061         in the inner-loop when doing outer-loop vectorization. Add
9062         documentation and printout.
9063         (vect_recog_dot_prod_pattern): Likewise. Also add check for
9064         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
9065
9066 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
9067
9068         * tree-affine.h (print_aff): New prototype.
9069         (debug_aff): Likewise.
9070         * tree-affine.c (print_aff): New function.
9071         (debug_aff): Likewise.
9072
9073 2007-08-18  Paul Brook  <paul@codesourcery.com>
9074             Joseph Myers  <joseph@codesourcery.com>
9075
9076         * common.opt (-fdebug-prefix-map=): New option.
9077         * opts.c: Include debug.h.
9078         (common_handle_option): Handle -fdebug-prefix-map.
9079         * final.c: Include ggc.h.
9080         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
9081         remap_debug_filename): New.
9082         * Makefile.in (final.o, opts.o): Update dependencies.
9083         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
9084         * configure.ac: Check for assembler --debug-prefix-map support.
9085         * configure, config.in: Regenerate.
9086         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
9087         (ASM_DEBUG_SPEC): Include ASM_MAP.
9088         * doc/install.texi (--with-debug-prefix-map): Document.
9089         * doc/invoke.texi (-fdebug-prefix-map): Document.
9090         * dbxout.c (dbxout_init, dbxout_start_source_file,
9091         dbxout_source_file): Call remap_debug_filename.
9092         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
9093         dwarf2out_start_source_file, dwarf2out_finish): Call
9094         remap_debug_filename.
9095         (file_table_relative_p): Do not check d->emitted_number.
9096         * toplev.c (output_file_directive): Call remap_debug_filename.
9097         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
9098         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
9099
9100 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9101
9102         * loop-invariant.c (find_invariants_to_move): Add missing macro
9103         argument.
9104
9105 2007-08-17  Tom Tromey  <tromey@redhat.com>
9106
9107         * tree.h (struct tree_label_decl): Removed old "java" fields.
9108
9109 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
9110             Nigel Stephens  <nigel@mips.com>
9111
9112         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
9113         Treat -mno-data-in-code and -mcode-xonly as aliases for
9114         -mcode-readable=no and -mcode-readable=pcrel respectively.
9115         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
9116         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
9117         (MULTILIB_DIRNAMES): Update accordingly.
9118
9119 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
9120
9121         * Makefile.in (version.o): Depend on $(REVISION) only if
9122         REVISION_s is defined.
9123
9124 2007-08-17  Sa Liu  <saliu@de.ibm.com>
9125             Ulrich Weigand  <uweigand@de.ibm.com>
9126
9127         PR middle-end/32970
9128         * tree.c (reconstruct_complex_type): For a pointer to a vector,
9129         use build_qualified_type to retain qualifiers of the base type.
9130
9131 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
9132
9133         * config/score/score.md : Update pattern tablejump.
9134         * config/score/score.c : Update score_initialize_trampoline 
9135         function.
9136         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
9137         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
9138         * doc/contrib.texi: Add my entry.
9139
9140 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
9141
9142         * Makefile.in (REVISION): New.
9143         (REVISION_c): New.
9144         (REVISION_s): New.
9145         (version.o): Also depend on $(REVISION). Add
9146         -DREVISION=$(REVISION_s).
9147
9148         * version.c (version_string): Add REVISION.
9149
9150 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
9151
9152         * tree-eh.c (lower_try_finally_onedest): Reset the locus
9153         of GOTO that's relocated to a different block.
9154
9155 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9156
9157         * c-common.c (const_strip_array_types): New.
9158         * c-common.h (lang_missing_noreturn_ok_p): Delete.
9159         (const_strip_array_types): New.
9160         * c-objc-common.c (c_disregard_inline_limits,
9161         c_warn_unused_global_decl): Constify.
9162         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
9163         c_vla_type_p, c_incomplete_type_error): Likewise.
9164         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
9165         * hooks.c (hook_bool_const_tree_false): New.
9166         * hooks.h (hook_bool_const_tree_false): Likewise.
9167         * langhooks-def.h (lhd_warn_unused_global_decl,
9168         lhd_incomplete_type_error, lhd_expr_size,
9169         lhd_tree_inlining_disregard_inline_limits,
9170         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
9171         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
9172         * langhooks.c (lhd_warn_unused_global_decl,
9173         lhd_incomplete_type_error,
9174         lhd_tree_inlining_disregard_inline_limits,
9175         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
9176         lhd_expr_size): Likewise.
9177         * langhooks.h (lang_hooks_for_tree_inlining,
9178         lang_hooks_for_tree_dump, lang_hooks_for_types,
9179         lang_hooks_for_decls, lang_hooks): Likewise.
9180         * pointer-set.c (pointer_set_t, pointer_set_create,
9181         pointer_set_contains, insert_aux, pointer_set_insert,
9182         pointer_set_traverse, pointer_map_t, pointer_map_create,
9183         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
9184         Likewise.
9185         * pointer-set.h (pointer_set_contains, pointer_set_insert,
9186         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
9187         pointer_map_traverse): Likewise.
9188         * predict.c (assert_is_empty): Likewise.
9189         * tree-affine.c (free_name_expansion): Likewise.
9190         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
9191         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
9192         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
9193
9194 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
9195
9196         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
9197         field.
9198         (destroy_loop_vec_info): Add call to VEC_free.
9199         * tree-vectorizer.h (may_alias_ddrs): Define.
9200         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
9201         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
9202         Change reporting to dump.
9203         (vect_is_duplicate_ddr): New.
9204         (vect_mark_for_runtime_alias_test): New.
9205         (vect_analyze_data_ref_dependences) Add call to
9206         vect_mark_for_runtime_alias_test.
9207         (vect_enhance_data_refs_alignment): Define local variable
9208         vect_versioning_for_alias_required, don't perform
9209         peeling for alignment if versioning for alias is
9210         required.
9211         (vect_enhance_data_refs_alignment): Use
9212         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
9213         PARAM_VECT_MAX_VERSION_CHECKS.
9214         * tree-vect-transform.c
9215         (vect_create_cond_for_alias_checks): New.
9216         (vect_transform_loop): Add call to
9217         vect_create_cond_for_alias_checks.
9218         (vect_vfa_segment_size): New.
9219         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
9220         Rename.
9221         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
9222         * doc/invoke.texi
9223         (vect-max-version-for-alignment-checks): Document.
9224         (vect-max-version-for-alias-checks): Document.
9225         (vect-max-version-checks): Remove.
9226
9227 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
9228
9229         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
9230         the same line as the instruction for all asm dialects.
9231         (*rep_movsi): Ditto.
9232         (*rep_movsi_rex64): Ditto.
9233         (*rep_movqi): Ditto.
9234         (*rep_movqi_rex64): Ditto.
9235         (*rep_stosdi_rex64): Ditto.
9236         (*rep_stossi): Ditto.
9237         (*rep_stossi_rex64): Ditto.
9238         (*rep_stosqi): Ditto.
9239         (*rep_stosqi_rex64): Ditto.
9240         (*cmpstrnqi_nz_1): Ditto.
9241         (*cmpstrnqi_nz_rex_1): Ditto.
9242         (*cmpstrnqi_1): Ditto.
9243         (*cmpstrnqi_rex_1): Ditto.
9244         (*strlenqi_1): Ditto.
9245         (*strlenqi_rex_1): Ditto.
9246         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
9247         prefix on the same line as the instruction for all asm dialects.
9248         (sync_double_compare_and_swap<mode>): Ditto.
9249         (*sync_double_compare_and_swapdi_pic): Ditto.
9250         (*sync_compare_and_swap_cc<mode>): Ditto.
9251         (sync_double_compare_and_swap_cc<mode>): Ditto.
9252         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
9253         (sync_old_add<mode>): Ditto.
9254         (sync_add<mode>): Ditto.
9255         (sync_sub<mode>): Ditto.
9256         (sync_ior<mode>): Ditto.
9257         (sync_and<mode>): Ditto.
9258         (sync_xor<mode>): Ditto.
9259
9260 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
9261
9262         PR middle-end/32897
9263         * reload.c (find_reloads): Check that the memory returned by
9264         find_reloads_toplev was not the result of forcing a constant
9265         to memory.
9266         (find_reloads_toplev): Always use simplify_gen_subreg to get
9267         the subreg of a constant.  If the result is also a constant,
9268         but not a legitimate one, force it into the constant pool
9269         and reload its address.
9270
9271 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
9272
9273         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
9274         POPCOUNT.
9275
9276 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
9277
9278         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
9279         directive for the current vector ABI.
9280
9281 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
9282
9283         PR target/32963
9284         * caller-save.c (reg_save_code): Set invalide status on restore code.
9285         
9286 2007-08-15  Diego Novillo  <dnovillo@google.com>
9287
9288         * tree-ssa-alias.c (compute_memory_partitions): Use
9289         alias_bitmap_obstack to allocate bitmaps.
9290         (reset_alias_info): Factor out of init_alias_info.
9291         Mark all name tags not associated to an SSA name for renaming.
9292         (init_alias_info): Call it.
9293         (create_name_tags): Tidy.  Add comments.
9294         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
9295
9296 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
9297
9298         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
9299         scheduler dependencies.
9300
9301 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9302
9303         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
9304         "register_operand".
9305         (*iorsi_1_zext): Likewise.
9306         (*iorsi_1_zext_imm): Likewise.
9307         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
9308         with "rm"/"xm" constraint.
9309         (sse2_vmsqrtv2df2): Likewise.
9310
9311 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
9312
9313         PR middle-end/33074
9314         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
9315         REG_LIBCALL note.
9316
9317 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
9318
9319         * tree-pass.h (PROP_pta): Removed.
9320         (TODO_rebuild_alias): New.
9321         (pass_may_alias): Removed.
9322         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
9323         aliasing if we changed something.
9324         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
9325         SSA internally.
9326         (pass_may_alias): Removed.
9327         (create_structure_vars): Return TODO_rebuild_alias.
9328         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
9329         * tree-sra.c (tree_sra): Only rebuild aliasing if something
9330         changed.
9331         (tree_sra_early): We never affect aliasing right now.
9332         * tree-flow.h (compute_may_aliases): New prototype.
9333         * passes.c: Remove pass_may_alias from the passes.
9334         (execute_function_todo): Support TODO_rebuild_alias.    
9335
9336 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
9337
9338         * i386.c: (legitimize_address): Move dllimported variable check
9339         infront of legitimizing pic address of CONST symbols.
9340
9341 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
9342
9343         PR tree-optimization/32941
9344         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
9345         (goto_queue_cmp): Remove.
9346         (find_goto_replacement): Change search method.
9347         (maybe_record_in_goto_queue): Add assert.
9348         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
9349         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
9350
9351 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9352
9353         * alias.c (component_uses_parent_alias_set): Constify.
9354         * alias.h (component_uses_parent_alias_set): Likewise.
9355         * cfgrtl.c (print_rtl_with_bb): Likewise.
9356         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
9357         mpz_get_double_int): Likewise.
9358         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
9359         mpz_get_double_int): Likewise.
9360         * expr.c (is_aligning_offset, undefined_operand_subword_p,
9361         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
9362         Likewise.
9363         * expr.h (safe_from_p): Likewise.
9364         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
9365         Likewise.
9366         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
9367         zero_sized_type, goa_lhs_expr_p): Likewise.
9368         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
9369         * rtl.h (print_rtl_with_bb): Likewise.
9370         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
9371         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
9372         * tree-flow-inline.h (bb_stmt_list): Constify.
9373         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
9374         cbsi_stmt): New.
9375         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
9376         const_first_stmt, const_last_stmt): New.
9377         (block_may_fallthru, empty_block_p): Constify.
9378         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
9379         EXPR_ONLY_BODY): New.
9380         (expr_first, expr_last, expr_only): Use macro for body.
9381         (const_expr_first, const_expr_last, const_expr_only): New.
9382         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
9383         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
9384         ctsi_prev, ctsi_stmt): New.
9385         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
9386         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
9387         * tree-ssa-loop-niter.c (loop_only_exit_p,
9388         derive_constant_upper_bound): Likewise.
9389         * tree-ssa-phiopt.c (empty_block_p): Likewise.
9390         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
9391         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
9392         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
9393         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
9394         * tree.c (get_type_static_bounds): Likewise.
9395         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
9396         (get_type_static_bounds): Constify.
9397
9398 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9399
9400         PR target/30315
9401         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
9402         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
9403         (*<addsub><mode>3_cc_overflow): New.
9404         (*add<mode>3_cconly_overflow): New.
9405         (*sub<mode>3_cconly_overflow): New.
9406         (*<addsub>si3_zext_cc_overflow): New.
9407         * config/i386/predicates.md (fcmov_comparison_operator): Accept
9408         CCCmode for LTU, GTU, LEU and GEU.
9409         (ix86_comparison_operator): Likewise.
9410         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
9411         * config/i386/i386.c (put_condition_code): Support CCCmode.
9412         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
9413         or MINUS expressions.
9414
9415 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
9416
9417         PR c/30428
9418         * c-typeck.c (build_binary_op): Disallow vector float types with
9419         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
9420
9421 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
9422
9423         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
9424         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
9425         (dep_def): New typedef.
9426         (init_dep_1, sd_debug_dep): Declare functions.
9427         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
9428         (debug_dep_links): Remove.
9429         (struct _deps_list): New field 'n_links'.
9430         (DEPS_LIST_N_LINKS): New macro.
9431         (FOR_EACH_DEP_LINK): Remove.
9432         (create_deps_list, free_deps_list, delete_deps_list): Remove
9433         declaration.
9434         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
9435         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
9436         (copy_deps_list_change_con, move_dep_link): Ditto.
9437         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
9438         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
9439         'dep_count'.
9440         (INSN_BACK_DEPS): Remove.
9441         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
9442         New macros.
9443         (INSN_DEP_COUNT): Remove.
9444         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
9445         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
9446         Declare global variables.
9447         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
9448         (add_forw_dep, compute_forward_dependences): Remove declarations.
9449         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
9450         (add_back_forw_dep, delete_back_forw_dep): Ditto.
9451         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
9452         functions.
9453         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
9454         New constants.
9455         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
9456         (sd_list_types_def): New typedef.
9457         (sd_next_list): Declare function.
9458         (struct _sd_iterator): New type.
9459         (sd_iterator_def): New typedef.
9460         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
9461         functions.
9462         (FOR_EACH_DEP): New cycle wrapper.
9463         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
9464         Declare functions.
9465         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
9466         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
9467         Ditto.
9468
9469         * sched-deps.c (init_dep_1): Make global.
9470         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
9471         constants.
9472         (dump_dep): New static function.
9473         (dump_dep_flags): New static variable.
9474         (sd_debug_dep): New function.
9475         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
9476         the list.
9477         (move_dep_link): Use remove_from_deps_list (), instead of
9478         detach_dep_link ().
9479         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
9480         (dep_link_is_detached_p): New static function.
9481         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
9482         instead.
9483         (dn_pool, dl_pool): New alloc_pools.
9484         (dn_pool_diff, dl_pool_diff): New static variables.
9485         (create_dep_node, delete_dep_node): New static function.
9486         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
9487         (deps_list_empty_p): Make it static.  Use 'n_links' field.
9488         (deps_pools_are_empty_p): New static function.
9489         (alloc_deps_list, delete_deps_list): Remove.
9490         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
9491         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
9492         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
9493         (forward_dependency_cache): Remove.
9494         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
9495         'back' from the names.  Change signature to use dep_t instead of
9496         equivalent quad.
9497         (add_back_dep): Ditto.  Make global.
9498         (check_dep_status): Rename to check_dep ().
9499         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
9500         New functions.
9501         (sd_finish_insn): Ditto.
9502         (sd_find_dep_between_no_cache): New static function.
9503         (sd_find_dep_between): New function.
9504         (ask_dependency_caches, set_dependency_caches): New static functions.
9505         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
9506         (add_or_update_dep_1): Separate pieces of functionality into
9507         ask_dependency_caches (), update_dependency_caches (),
9508         change_spec_dep_to_hard (), update_dep ().
9509         (get_back_and_forw_lists): New static function.
9510         (sd_add_dep): Separate setting of dependency caches into
9511         set_dependency_caches ().
9512         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
9513         New functions.
9514         (sd_delete_dep): Ditto.
9515         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
9516         (dump_lists): New static function.
9517         (sd_debug_lists): New debug function.
9518         (delete_all_dependences, fixup_sched_groups): Update to use
9519         sd_* infrastructure.
9520         (sched_analyze_2): Create data-speculative dependency only if
9521         data-speculation is enabled.
9522         (sched_analyze_insn): If insn cannot be speculative, make all its
9523         dependencies non-speculative.
9524         (sched_analyze): Use sd_init_insn ().
9525         (add_forw_dep, compute_forward_dependencies): Remove.
9526         (delete_dep_nodes_in_back_deps): New static function.
9527         (sched_free_deps): New function.
9528         (init_dependency_caches): Init alloc_pools.
9529         (extend_depedency_caches): Update after removing of
9530         forward_dependency_cache.
9531         (free_dependency_caches): Ditto.  Free alloc_pools.
9532         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
9533         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
9534         Ditto.
9535         (add_back_forw_dep, delete_back_forw_dep): Ditto.
9536         (add_dependence): Use init_dep ().
9537         (get_dep_weak_1): New static function.
9538         (get_dep_weak): Move logic to get_dep_weak_1 ().
9539         (dump_ds): New static function moved from haifa-sched.c:
9540         debug_spec_status ().
9541         (debug_ds): New debug function.
9542         (check_dep_status): Rename to check_dep ().  Update to check whole
9543         dependencies.
9544
9545         * haifa-sched.c (spec_info): Make global.
9546         (added_recovery_block_p): Rename to
9547         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
9548         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
9549         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
9550         to use new interfaces.
9551         (ok_for_early_queue_removal): Ditto.
9552         (schedule_block): Initialize logical uids of insns emitted by the
9553         target.
9554         (sched_init): Initialize new variable.
9555         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
9556         interfaces.
9557         (extend_global): Initialize insn data.
9558         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
9559         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
9560         new interfaces.
9561         (add_to_speculative_block): Update to use new interfaces.
9562         (create_recovery_block): Set new variables.
9563         (create_check_block_twin, fix_recovery_deps): Update to use new
9564         interfaces.
9565         (sched_insn_is_legitimate_for_speculation_p): New function.
9566         (speculate_insn): Move checking logic to
9567         sched_insn_is_legitimate_for_speculation_p ().
9568         (sched_remove_insn): Finalize sched-deps information of instruction.
9569         (clear_priorities, add_jump_dependencies): Update to use new
9570         interfaces.
9571         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
9572         
9573         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
9574         to use new interfaces.
9575         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
9576         (new_ready): Try to use control speculation only if it is available.
9577         (add_branch_dependences): Update to use new interfaces.
9578         (compute_block_backward_dependences): Rename to
9579         compute_block_dependences ().  Call
9580         targetm.sched.dependencies_evaluation_hook ().
9581         (free_block_dependencies): New static function.
9582         (debug_dependencies): Update to use new interfaces.
9583         (schedule_region): Remove separate computation of forward dependencies.
9584         Move call of targetm.sched.dependencies_evaluation_hook () to
9585         compute_block_dependences ().  Free dependencies at the end of
9586         scheduling the region.
9587
9588         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
9589         new interfaces.
9590         (add_deps_for_risky_insns): Ditto.
9591         (schedule_ebb): Remove separate computation of forward dependencies.
9592         Free dependencies at the end of scheduling the ebb.
9593
9594         * ddg.c (create_ddg_dependence): Update to use new interfaces.
9595         (build_intra_loop_deps): Ditto.  Remove separate computation of
9596         forward dependencies.  Free sched-deps dependencies.
9597
9598         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
9599         to use new interfaces.
9600         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
9601
9602         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
9603         new interfaces.
9604         (is_costly_group): Ditto.
9605
9606 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9607
9608         * alias.c (rtx_equal_for_memref_p): Constify.
9609         * basic-block.h (const_edge, const_basic_block): New.
9610         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
9611         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
9612         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
9613         probably_never_executed_bb_p, edge_probability_reliable_p,
9614         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
9615         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
9616         Likewise.
9617         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
9618         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
9619         Likewise.
9620         * cfganal.c (flow_active_insn_p, forwarder_block_p,
9621         flow_nodes_print, dfs_enumerate_from): Likewise.
9622         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
9623         control_flow_insn_p, count_basic_blocks): Likewise.
9624         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
9625         get_loop_body_with_size, loop_exit_edge_p): Likewise.
9626         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
9627         average_num_loop_insns, loop_exit_edge_p,
9628         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
9629         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
9630         average_num_loop_insns, seq_cost): Likewise.
9631         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
9632         * dominance.c (dominated_by_p): Likewise.
9633         * emit-rtl.c (validate_subreg): Likewise.
9634         * except.c (can_throw_internal, can_throw_external): Likewise.
9635         * except.h (can_throw_internal, can_throw_external): Likewise.
9636         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
9637         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
9638         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
9639         simple_mem, store_ops_ok, load_kills_store, find_loads,
9640         store_killed_in_insn, store_killed_after, store_killed_before,
9641         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
9642         Likewise.
9643         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
9644         noce_mem_write_may_trap_or_fault_p): Likewise.
9645         * pointer-set.c (pointer_set_contains, pointer_map_contains):
9646         Likewise.
9647         * pointer-set.h (pointer_set_contains, pointer_map_contains):
9648         Likewise.
9649         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
9650         probably_cold_bb_p, probably_never_executed_bb_p,
9651         edge_probability_reliable_p, br_prob_note_reliable_p,
9652         can_predict_insn_p): Likewise.
9653         * regclass.c (reg_set_to_hard_reg_set): Likewise.
9654         * resource.c (return_insn_p): Likewise.
9655         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
9656         Likewise.
9657         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
9658         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
9659         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
9660         verify_gimple_modify_stmt): Likewise.
9661         * tree-chrec.c (is_not_constant_evolution,
9662         is_multivariate_chrec_rec, is_multivariate_chrec,
9663         chrec_contains_symbols, chrec_contains_undetermined,
9664         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
9665         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
9666         eq_evolutions_p, scev_direction): Likewise.
9667         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
9668         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
9669         chrec_contains_symbols_defined_in_loop,
9670         chrec_contains_undetermined, tree_contains_chrecs,
9671         evolution_function_is_affine_multivariate_p,
9672         evolution_function_is_univariate_p, chrec_zerop,
9673         evolution_function_is_constant_p, evolution_function_is_affine_p,
9674         evolution_function_is_affine_or_constant_p,
9675         tree_does_not_contain_chrecs, chrec_type): Likewise.
9676         * tree-data-ref.c (tree_fold_divides_p,
9677         object_address_invariant_in_loop_p, dr_may_alias_p,
9678         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
9679         same_access_functions, constant_access_functions,
9680         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
9681         Likewise.
9682         * tree-flow.h (scev_direction): Likewise.
9683         * tree-gimple.c (is_gimple_stmt): Likewise.
9684         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
9685         Likewise.
9686         * tree-pretty-print.c (op_prio): Likewise.
9687         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
9688         analyzable_condition, backedge_phi_arg_p): Likewise.
9689         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
9690         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
9691         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
9692         Likewise.
9693
9694 2007-08-13  Dan Hipschman  <dsh@google.com>
9695
9696         PR c/32953
9697         * c-format.c (check_format_arg): Move check for zero-length
9698         format strings below the check for unterminated strings.
9699
9700 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
9701
9702         PR C/30427
9703         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
9704         types.
9705
9706 2007-08-13  Nick Clifton  <nickc@redhat.com>
9707
9708         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
9709
9710 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
9711
9712         PR fortran/32860
9713         * c-format.c (gcc_gfc_length_specs): New array.
9714         (gcc_gfc_char_table): Add unsigned specifier, and references to
9715         the l length modifier.
9716         (format_types_orig): Use the new gcc_gfc_length_specs.
9717
9718 2007-08-12  Sa Liu  <saliu@de.ibm.com>
9719
9720         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
9721         and with REG_RETVAL note after split.
9722
9723 2007-08-11  David Daney  <ddaney@avtrex.com>
9724
9725         * config/mips/mips.c (mips_sched_reorder): Mark cycle parameter
9726         as ATTRIBUTE_UNUSED.
9727
9728 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
9729             Segher Boessenkool  <segher@kernel.crashing.org>
9730
9731         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
9732         HAVE_LOCAL_CPU_DETECT not defined.
9733
9734 2007-08-11  Jan Hubicka  <jh@suse.cz>
9735
9736         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
9737         (cgraph_process_new_functions): Honor previous value of
9738         disregard_inline_limits.
9739         * ipa-inline.c (compute_inline_parameters): Likewise.
9740
9741 2007-08-11  Ian Lance Taylor  <iant@google.com>
9742
9743         * alias.h (alias_set_type): Define new type.
9744         (ALIAS_SET_MEMORY_BARRIER): Use it.
9745         * rtl.h: Include alias.h.
9746         (struct mem_attrs): Use alias_set_type.
9747         * tree.h: Include alias.h
9748         (struct tree_type): Use alias_set_type.
9749         (struct tree_struct_field_tag): Likewise.
9750         (struct tree_decl_common): Likewise.
9751         * alias.c (struct alias_set_entry): Use alias_set_type.
9752         (get_alias_set_entry, alias_set_subset_of): Likewise.
9753         (alias_sets_conflict_p): Likewise.
9754         (alias_sets_must_conflict_p): Likewise.
9755         (objects_must_conflict_p): Likewise.
9756         (get_alias_set, new_alias_set): Likewise.
9757         (record_alias_subset, record_component_aliases): Likewise.
9758         (varargs_set, frame_set): Change to alias_set_type.
9759         (get_varargs_alias_set): Use alias_set_type.
9760         (get_frame_alias_set): Likewise.
9761         * builtins.c (setjmp_alias_set): Change to alias_set_type.
9762         * dse.c (struct store_info): Use alias_set_type.
9763         (struct read_info, struct clear_alias_mode_holder): Likewise.
9764         (clear_alias_set_lookup, canon_address): Likewise.
9765         (record_store, check_mem_read_rtx): Likewise.
9766         (dse_record_singleton_alias_set): Likewise.
9767         (dse_invalidate_singleton_alias_set): Likewise.
9768         * emit-rtl.c (get_mem_attrs): Likewise.
9769         (set_mem_attributes_minus_bitpos): Likewise.
9770         (set_mem_alias_set): Likewise.
9771         * expr.c (store_constructor_field, store_field): Likewise.
9772         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
9773         * langhooks.c (lhd_get_alias_set): Likewise.
9774         * langhooks-def.h (lhd_get_alias_set): Likewise.
9775         * reload1.c (alter_reg): Likewise.
9776         * tree-flow.h (struct fieldoff): Likewise.
9777         * tree-ssa-alias.c (struct alias_map_d): Likewise.
9778         (may_alias_p, get_smt_for, create_sft): Likewise.
9779         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
9780         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
9781         (merge_smts_into): Likewise.
9782         * varasm.c (const_alias_set): Likewise.
9783         * c-common.c (strict_aliasing_warning): Likewise.
9784         (c_common_get_alias_set): Likewise.
9785         * dse.h (dse_record_singleton_alias_set): Update declaration.
9786         (dse_invalidate_singleton_alias_set): Likewise.
9787         * emit-rtl.h (set_mem_alias_set): Likewise.
9788         * c-common.h (c_common_get_alias_set): Likewise.
9789         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
9790         * print-tree.c (print_node): Likewise.
9791         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
9792         alias_set_type.
9793         (alpha_setup_incoming_varargs): Use alias_set_type.
9794         * config/i386/i386.c (setup_incoming_varargs_64): Use
9795         alias_set_type.
9796         (setup_incoming_varargs_ms_64): Likewise.
9797         (ix86_GOT_alias_set): Likewise.
9798         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
9799         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
9800         (set): Change to alias_set_type.
9801         (get_TOC_alias_set): Use alias_set_type.
9802         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
9803         declaration.
9804         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
9805         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
9806         alias_set_type.
9807         (struct_value_alias_set): Likewise.
9808         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
9809
9810 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
9811
9812         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
9813         * config/vxworks.h (TARGET_VXWORKS): Override.
9814         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
9815         "mips" if TARGET_VXWORKS.
9816
9817 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
9818
9819         * calls.c (avoid_likely_spilled_reg): New function.
9820         (expand_call): Use it.
9821
9822 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9823
9824         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
9825
9826 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
9827
9828         * config/mips/predicates.md (const_call_insn_operand): Invoke
9829         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
9830
9831 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
9832
9833         PR target/33042
9834         * config/rs6000/driver-rs6000.c: Include link.h.
9835         Use ElfW instead of wordsize-specif typedef.
9836
9837 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9838
9839         * system.h (CONST_CAST): New.
9840         * c-decl.c (c_make_fname_decl): Use it.
9841         * c-lex.c (cb_ident, lex_string): Likewise.
9842         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
9843         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
9844         give_switch, set_multilib_dir): Likewise.
9845         * gengtype-parse.c (string_seq, typedef_name): Likewise.
9846         * passes.c (execute_one_pass): Likewise.
9847         * prefix.c (update_path): Likewise.
9848         * pretty-print.c (pp_base_destroy_prefix): Likewise.
9849         * tree.c (build_string): Likewise.
9850
9851 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
9852
9853         * tree-flow-inline.h (is_exec_stmt): Remove.
9854         (is_label_stmt): Remove.
9855         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
9856         is_label_stmt.
9857
9858 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
9859
9860         * lower-subreg.c (resolve_shift_zext): Don't adjust
9861         src_reg_num for wordmode operands.
9862
9863 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
9864             David Ung  <davidu@mips.com>
9865
9866         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
9867         (TARGET_SCHED_REORDER2): Define.
9868         (mips_maybe_swap_ready): New.
9869         (mips_last_74k_agen_insn): New.
9870         (mips_74k_agen_init): New.
9871         (mips_74k_agen_reorder): New function to group loads and stores
9872         in the ready queue.
9873         (mips_sched_init): New.  
9874         (mips_sched_reorder): Don't do initialization here.  Call
9875         mips_74k_agen_reorder.
9876         (mips_variable_issue): Call mips_74k_agen_init.
9877
9878 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
9879
9880         * tree-flow-inline.h (get_filename): Remove.
9881
9882 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
9883
9884         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
9885         argument.
9886         (mips_fetch_insns): Delete in favor of...
9887         (mips_load_store_insns): ...this new function.
9888         * config/mips/mips.c (mips_address_insns): Add a boolean argument
9889         to say whether multiword moves _might_ be split.
9890         (mips_fetch_insns): Delete in favor of...
9891         (mips_load_store_insns): ...this new function.
9892         (mips_rtx_costs): Update the call to mips_address_insns.
9893         (mips_address_cost): Likewise.
9894         * config/mips/mips.md (length): Use mips_load_store_insns instead
9895         of mips_fetch_insns.
9896         * config/mips/constraints.md (R): Use mips_address_insns rather
9897         than mips_fetch_insns.  Assume that the move never needs to be split.
9898
9899 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
9900
9901         * config/mips/mips.opt (mhard-float, msoft-float): Make these
9902         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
9903         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
9904         * config/mips/mips.h (mips16_hard_float): Delete.
9905         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI): Delete these
9906         definitions, and replace with....
9907         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
9908         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
9909         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
9910         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
9911         (override_options): Replace MASK_SOFT_FLOAT references with
9912         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
9913         and mips16_hard_float when TARGET_MIPS16.
9914         
9915 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9916
9917         PR c/32796
9918         * c-typeck.c (build_binary_op): Check for non pointer types before
9919         calling int_fits_type_p.
9920
9921 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9922
9923         PR middle-end/32813
9924         * fold-const.c (omit_one_operand): Return only the ommitted expression
9925         if the result is an empty statement.
9926         (pedantic_omit_one_operand): Likewise.
9927
9928 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
9929
9930         * c-typeck.c (readonly_error): Improve error for assignment.
9931         
9932         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
9933         expression. 
9934         (pp_c_expression): Ditto.
9935
9936 2007-08-09  Simon Baldwin  <simonb@google.com>
9937
9938         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
9939         break that was preventing simplify_associative_operation() for xor.
9940
9941 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
9942             Nigel Stephens  <nigel@mips.com>
9943
9944         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
9945         Document change in interpretation of value from boolean to
9946         tri-state integer.
9947         * optabs.c (expand_ffs, expand_ctz): New functions to compute
9948         ffs and ctz using clz.
9949         (expand_unop): Call them.
9950         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
9951         result value.
9952         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
9953         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
9954         enable the new ffs expansion on this target.
9955
9956 2007-08-09  Jan Hubicka  <jh@suse.cz>
9957
9958         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
9959         (expand_ternary_op): Likewise.
9960         (expand_vec_shift_expr): Likewise.
9961         (expand_binop_directly): Likewise.
9962         (expand_binop): Likewise.
9963         (sign_expand_binop): Likewise.
9964         (expand_twoval_unop): Likewise.
9965         (expand_twoval_binop): Likewise.
9966         (expand_twoval_binop_libfunc): Likewise.
9967         (widen_clz): Likewise.
9968         (widen_bswap): Likewise.
9969         (expand_parity): Likewise.
9970         (expand_unop): Likewise.
9971         (expand_abs_nojump): Likewise.
9972         (expand_copysign): Likewise.
9973         (emit_no_conflict_block): Likewise.
9974         (emit_libcall_block): Likewise.
9975         (can_compare_p): Likewise.
9976         (prepare_cmp_insn): Likewise.
9977         (emit_cmp_and_jump_insn_1): Likewise.
9978         (prepare_float_lib_cmp): Likewise.
9979         (emit_conditional_add): Likewise.
9980         (gen_add2_insn): Likewise.
9981         (have_add2_insn): Likewise.
9982         (gen_sub2_insn): Likewise.
9983         (have_sub2_insn): Likewise.
9984         (can_extend_p): Likewise.
9985         (can_fix_p): Likewise.
9986         (can_float_p): Likewise.
9987         (expand_float): Likewise.
9988         (expand_fix): Likewise.
9989         (expand_sfix_optab): Likewise.
9990         (new_optab): Likewise.
9991         (new_convert_optab): Likewise.
9992         (init_libfuncs): Likewise.
9993         (init_interclass_conv_libfuncs): Likewise.
9994         (init_intraclass_conv_libfuncs): Likewise.
9995         (set_conv_libfunc): Likewise.
9996         (init_optabs): Likewise.
9997         (debug_optab_libfuncs): Likewise.
9998         (gen_cond_trap): Likewise.
9999         * optabs.h (optab_handler, convert_optab_hanlder): New.
10000         * genopinit.c: Update optabs generation table.
10001         * reload.c (find_reloads_address_1): Use optabs accestors.
10002         * builtins.c (expand_builtin_mathfn): Likewise.
10003         (expand_builtin_mathfn_2): Likewise.
10004         (expand_builtin_mathfn_3): Likewise.
10005         (expand_builtin_interclass_mathfn): Likewise.
10006         (expand_builtin_sincos): Likewise.
10007         (expand_builtin_cexpi): Likewise.
10008         (expand_builtin_powi): Likewise.
10009         (expand_builtin_strlen): Likewise.
10010         * dojump.c (do_jump): Likewise.
10011         * expr.c (convert_move): Likewise.
10012         (move_by_pieces): Likewise.
10013         (move_by_pieces_ninsns): Likewise.
10014         (can_store_by_pieces): Likewise.
10015         (store_by_pieces_1): Likewise.
10016         (emit_move_via_integer): Likewise.
10017         (emit_move_complex): Likewise.
10018         (emit_move_ccmode): Likewise.
10019         (emit_move_insn_1): Likewise.
10020         (emit_single_push_insn): Likewise.
10021         (store_constructor): Likewise.
10022         (expand_expr_real_1): Likewise.
10023         (do_store_flag): Likewise.
10024         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
10025         (enumerate_modes): Likewise.
10026         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
10027         (supportable_widening_operation): Likewise.
10028         (supportable_narrowing_operation): Likewise.
10029         * expmed.c (store_bit_field_1): Likewise.
10030         (extract_bit_field_1): Likewise.
10031         (expand_mult_highpart_optab): Likewise.
10032         (expand_smod_pow2): Likewise.
10033         (expand_divmod): Likewise.
10034         (emit_store_flag): Likewise.
10035         * tree-vect-patterns.c
10036         (vect_pattern_recog_1): Likewise.
10037         * tree-ssa-loop-prefetch.c
10038         (nontemporal_store_p): Likewise.
10039         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
10040         (vect_create_epilog_for_reduction): Likewise.
10041         (vectorizable_reduction): Likewise.
10042         (vectorizable_operation): Likewise.
10043         (vect_strided_store_supported): Likewise.
10044         (vectorizable_store): Likewise.
10045         (vect_strided_load_supported): Likewise.
10046         (vectorizable_load): Likewise.
10047         * combine.c (simplify_comparison): Likewise.
10048         * tree-vect-generic.c
10049         (type_for_widest_vector_mode): Likewise.
10050         (expand_vector_operations_1): Likewise.
10051         * config/spu/spu.c (spu_expand_mov): Likewise.
10052         (spu_emit_vector_compare): Likewise.
10053         * config/rs6000/rs6000.c
10054         (rs6000_emit_vector_compare): Likewise.
10055         * stmt.c (add_case_node): Likewise.
10056         * reload1.c (gen_reload):
10057
10058 2007-08-09  Michael Matz  <matz@suse.de>
10059
10060         * tree.h (fixed_zerop): Declare as taking a const_tree.
10061         * tree.c (fixed_zerop): Take a const_tree.
10062
10063 2007-08-09  Ira Rosen  <irar@il.ibm.com>
10064
10065         * tree-vect-transform.c (vectorizable_store): Remove call to
10066         copy_virtual_operands() and call mark_symbols_for_renaming() for
10067         the created vector store.
10068         (vect_setup_realignment): Don't call copy_virtual_operands() and
10069         update_vuses_to_preheader(). 
10070         (vectorizable_load): Don't call copy_virtual_operands(). 
10071         (update_vuses_to_preheader): Remove.
10072
10073 2007-08-08  Chao-ying Fu  <fu@mips.com>
10074
10075         * tree.def (FIXED_POINT_TYPE): New type.
10076         (FIXED_CST): New constant.
10077         (FIXED_CONVERT_EXPR): New expr.
10078         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
10079         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
10080         * tree.h (struct tree_base): Add saturating_flag.
10081         Remove one bit of spare for saturating_flag.
10082         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
10083         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
10084         FIXED_POINT_TYPE_P): Define.
10085         (TYPE_SATURATING): Define.
10086         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
10087         (struct tree_fixed_cst): New.
10088         (TYPE_IBIT, TYPE_FBIT): Define.
10089         (tree_node): Add fixed_cst.
10090         (enum tree_index): Add new enumeration values of
10091         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
10092         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
10093         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
10094         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
10095         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
10096         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
10097         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
10098         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
10099         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
10100         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
10101         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
10102         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
10103         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
10104         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
10105         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
10106         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
10107         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
10108         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
10109         (sat_short_fract_type_node, sat_fract_type_node,
10110         sat_long_fract_type_node, sat_long_long_fract_type_node,
10111         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
10112         sat_unsigned_long_fract_type_node,
10113         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
10114         fract_type_node, long_fract_type_node, long_long_fract_type_node,
10115         unsigned_short_fract_type_node, unsigned_fract_type_node,
10116         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
10117         sat_short_accum_type_node, sat_accum_type_node,
10118         sat_long_accum_type_node, sat_long_long_accum_type_node,
10119         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
10120         sat_unsigned_long_accum_type_node,
10121         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
10122         accum_type_node, long_accum_type_node, long_long_accum_type_node,
10123         unsigned_short_accum_type_node, unsigned_accum_type_node,
10124         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
10125         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
10126         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
10127         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
10128         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
10129         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
10130         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
10131         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
10132         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
10133         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
10134         sat_uda_type_node, sat_uta_type_node): New macro.
10135         (make_fract_type, make_accum_type): Declare.
10136         (make_signed_fract_type, make_unsigned_fract_type,
10137         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
10138         make_signed_accum_type, make_unsigned_accum_type,
10139         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
10140         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
10141         make_or_reuse_sat_signed_fract_type,
10142         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
10143         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
10144         make_or_reuse_sat_unsigned_accum_type): New macro.
10145         (fixed_zerop): Declare.
10146         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
10147         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
10148         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
10149         LONG_LONG_ACCUM_TYPE_SIZE): Define.
10150         * treestruct.def: Add TS_FIXED_CST.
10151         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
10152         (tree.o): Likewise.
10153         (tree-dump.o): Likewise.
10154         (print-tree.o): Likewise.
10155         (tree-pretty-print.o): Likewise.
10156         (fold-const.o): Likewise.
10157         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
10158         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
10159         (is_gimple_min_invariant): Handle FIXED_CST.
10160         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
10161         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
10162         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
10163         (layout_type): Handle FIXED_POINT_TYPE.
10164         (make_fract_type, make_accum_type): New functions.
10165         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
10166         * tree-dump.c (fixed-value.h): New include.
10167         (dump_fixed): New function.
10168         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
10169         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
10170         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
10171         * tree-pretty-print.c (fixed-value.h): New include.
10172         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
10173         FIXED_CONVERT_EXPR.
10174         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
10175         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
10176         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
10177         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
10178         for non-saturating fixed-point types.
10179         (reassociate_bb): Likewise.
10180         * emit-rtl.c (fixed-value.h): New include.
10181         (fconst0, fconst1): New array.
10182         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
10183         * tree-vect-generic.c expand_vector_operation): Support
10184         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
10185         MODE_VECTOR_UACCUM.
10186         (type_for_widest_vector_mode): Add one parameter for the 
10187         saturating flag.
10188         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
10189         vector mode.
10190         Pass the satp parameter to type_for_mode for fixed-point types.
10191         (expand_vector_operations_1): Pass the saturating flag to
10192         type_for_widest_vector_mode.
10193         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
10194         and MODE_VECTOR_UACCUM.
10195         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
10196         (vectorizable_condition): Likewise.
10197         * tree.c (fixed-value.h): New include.
10198         (tree_code_size): Support FIXED_CST.
10199         (build_fixed): New function.
10200         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
10201         (fixed_zerop): New function.
10202         (tree_node_structure): Support FIXED_CST.
10203         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
10204         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
10205         (type_hash_eq): Handle FIXED_POINT_TYPE.
10206         (simple_cst_equal): Support FIXED_CST.
10207         (iterative_hash_expr): Handle FIXED_CST.
10208         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
10209         (get_narrower): Likewise.
10210         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
10211         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
10212         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
10213         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
10214         nodes.
10215         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
10216         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
10217         (initializer_zerop): Support FIXED_CST.
10218         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
10219         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
10220         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
10221         (is_base_type): Handle FIXED_POINT_TYPE.
10222         (add_type_attribute): Handle FIXED_POINT_TYPE.
10223         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
10224         * print-tree.c (fixed-value.h): New include.
10225         (print_node_brief): Support FIXED_CST.
10226         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
10227         * c-pretty-print.c (fixed-value.h): New include.
10228         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
10229         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
10230         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
10231         Support fixed-point types for inner items in VECTOR_TYPE.
10232         (pp_c_direct_declarator): Likewise.
10233         (pp_c_declarator): Likewise.
10234         (pp_c_fixed_constant): New function.
10235         (pp_c_constant): Handle FIXED_CST.
10236         (pp_c_primary_expression): Likewise.
10237         (pp_c_expression): Likewise.
10238         * fold-const.c (fixed-value.h): New include.
10239         (negate_expr_p): Return true for FIXED_CST.
10240         (fold_negate_expr): Support FIXED_CST.
10241         (split_tree): Support FIXED_CST.
10242         (const_binop): Support FIXED_CST.
10243         (fold_convert_const_int_from_fixed): New function to convert from
10244         fixed to int.
10245         (fold_convert_const_real_from_fixed): New function to convert from
10246         fixed to real.
10247         (fold_convert_const_fixed_from_fixed): New function to convert from
10248         fixed to another fixed.
10249         (fold_convert_const_fixed_from_int): New function to convert from
10250         int to fixed.
10251         (fold_convert_const_fixed_from_real): New function to convert from
10252         real to fixed.
10253         (fold_convert_const): Support conversions from fixed to int, from
10254         fixed to real, from fixed to fixed, from int to fixed, and from real
10255         to fixed.
10256         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
10257         (operand_equal_p): Support FIXED_CST.
10258         (make_range): For fixed-point modes, we need to pass the
10259         saturating flag as the 2nd parameter.
10260         (tree_swap_operands_p): Handle FIXED_CST.
10261         (fold_plusminus_mult_expr): For fract modes, we cannot generate
10262         constant 1.
10263         (fold_unary): Support FIXED_CONVERT_EXPR.
10264         (fold_binary): Handle FIXED_CST.
10265         Make sure the type is not saturating, before associating operations.
10266         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
10267         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
10268         (fold_negate_const): Support FIXED_CST.
10269         (fold_relational_const): Support FIXED_CST.
10270         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
10271         (gimplify_expr): Handle FIXED_CST.
10272         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
10273         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
10274         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
10275         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
10276         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
10277         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
10278         LONG_LONG_ACCUM_TYPE_SIZE.
10279         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
10280         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
10281         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
10282         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
10283         MODE_ACCUM, and MODE_UACCUM.
10284         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
10285         fixed-point types to disable reduction.
10286         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
10287
10288 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
10289
10290         * config/rs6000/x-rs6000: New file.
10291         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
10292         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
10293         (EXTRA_SPEC_FUNCTIONS): Define.
10294         (HAVE_LOCAL_CPU_DETECT): Define.
10295         (CC1_CPU_SPEC): Define.
10296         * config/rs6000/driver-rs6000.c: New file.
10297         * config/rs6000/aix.h (CC1_SPEC): Define.
10298         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
10299         * config.host: Add x-rs6000 to host_xmake_file if host and target
10300         are rs6000 or powerpc.
10301
10302 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
10303
10304         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
10305
10306 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10307             Sandra Loosemore  <sandra@codesourcery.com>
10308             Chao-ying Fu  <fu@mips.com>
10309             Nigel Stephens  <nigel@mips.com>
10310             David Ung  <davidu@mips.com>
10311
10312         * doc/invoke.texi (-mcode-readable): Document.
10313         * config/mips/mips.opt (mcode-readable): New option.
10314         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
10315         * config/mips/mips.h (mips_code_readable_setting): New enum.
10316         (mips_code_readable): Declare.
10317         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
10318         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
10319         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
10320         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
10321         boiler-plate comments.
10322         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
10323         * config/mips/mips.c (mips_code_readable): New variable.
10324         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
10325         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
10326         context and -mcode-readable setting to restrict the use of
10327         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
10328         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
10329         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
10330         (mips_blocks_for_constant_p): Only return false for
10331         TARGET_MIPS16_PCREL_LOADS.
10332         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
10333         for MIPS16.  Handle SYMBOL_32_HIGH.
10334         (mips_const_insns): Allow HIGHs for MIPS16 too.
10335         (mips_unspec_address_offset): New function, split out from...
10336         (mips_unspec_address): ...here.
10337         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
10338         16-bit symbolic constants.  Assert approropiate conditions for
10339         using the "la" and "dla" macros.
10340         (mips_handle_option): Handle -mcode-readable=.
10341         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
10342         Set up mips_lo_relocs[SYMBOL_32_HIGH].
10343         (mips_strip_unspec_address): New function, split out from...
10344         (print_operand_reloc): ...here.
10345         (print_operand): Pass constants through mips_strip_unspec_address.
10346         (print_operand_address): Likewise.
10347         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
10348         (mips_select_rtx_section): Remove MIPS16 handling.
10349         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
10350         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
10351         (mips16_lay_out_constants): Do nothing unless
10352         TARGET_MIPS16_PCREL_LOADS.
10353         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
10354         * config/mips/mips.md: Split HIGHs for MIPS16.
10355         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
10356
10357 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10358
10359         * config/mips/mips-protos.h (mips_emit_move): Declare.
10360         * config/mips/mips.c (mips_emit_move): New function.
10361         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
10362         (mips_legitimize_const_move): Likewise.
10363         (mips_legitimize_move): Likewise.
10364         (mips_split_64bit_move): Likewise.
10365         (mips_restore_gp): Likewise.
10366         (mips_load_call_address): Likewise.
10367         (mips_emit_fcc_reload): Likewise.
10368         (mips_set_return_address): Likewise.
10369         (mips_block_move_straight): Likewise.
10370         (mips_block_move_loop): Likewise.
10371         (mips_setup_incoming_varargs): Likewise.
10372         (mips_save_reg): Likewise.
10373         (mips_expand_prologue): Likewise.
10374         (mips_restore_reg): Likewise.
10375         (mips_expand_epilogue): Likewise.
10376         (mips_output_mi_thunk): Likewise.
10377         (build_mips16_call_stub): Likewise.
10378         (mips_builtin_branch_and_move): Likewise.
10379         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
10380         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
10381         (fixuns_truncdfdi2): Likewise.
10382         (fixuns_truncsfsi2): Likewise.
10383         (fixuns_truncsfdi2): Likewise.
10384         (loadgp_absolute): Likewise.
10385         (builtin_setjmp_setup): Likewise.
10386         (builtin_longjmp): Likewise.
10387         (untyped_call): Likewise.
10388
10389 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10390
10391         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
10392         an "rtx *" argument.  Return a bool.
10393         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
10394         values and return true if they can be split.  Take the same kind of
10395         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
10396         and store the lo_sum there if nonnull.  Use the symbol type to
10397         determine whether a $gp or HIGH is needed.
10398         (mips_legitimize_address): Update call to mips_split_symbol and
10399         simplify accordingly.
10400         (mips_legitimize_const_move): Likewise.
10401         * config/mips/mips.md: In the combine define_split,
10402         check mips_split_symbol instead of splittable_symbolic_operand.
10403         Update use of mips_split_symbol in the generator code.
10404         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
10405
10406 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10407
10408         * config/mips/mips.c (mips_symbolic_address_p): Delete.
10409         (mips_symbol_insns_1): New function, split out from...
10410         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
10411         and stores separately from load addresses.
10412         (mips_classify_address): Replace uses of mips_symbolic_address_p
10413         with uses of mips_symbol_insns.
10414         (mips_address_insns): Update calls to mips_symbol_insns.
10415         (mips_const_insns): Likewise.
10416         (mips_legitimize_address): Likewise.
10417
10418 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10419
10420         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
10421         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
10422         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
10423         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
10424         non-call contexts if TARGET_MIPS16.
10425         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
10426         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
10427         code for SYMBOL_ABSOLUTE.
10428         (mips_symbol_insns): Likewise.
10429
10430 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10431
10432         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
10433         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
10434         (mips_symbolic_constant_p): Likewise.  Update the call to
10435         mips_classify_symbol.
10436         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
10437         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
10438         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
10439         (print_operand_reloc): Add a context argument.  Update the call to
10440         mips_symbolic_constant_p.
10441         (print_operand): Update the calls to print_operand_reloc.
10442         (print_operand_address): Use print_operand_reloc rather than
10443         print_operand.
10444         (mips_rewrite_small_data_p): Add a context argument.  Update the call
10445         to mips_symbolic_constant_p.
10446         (mips_small_data_pattern_1): Make DATA the containing mem.
10447         Update the call to mips_rewrite_small_data_p.
10448         (mips_rewrite_small_data_1): Likewise.
10449         (mips_use_anchors_for_symbol_p): Update the call to
10450         mips_symbolic_constant_p.
10451         * config/mips/predicates.md (const_call_insn_operand): Likewise.
10452         (splittable_symbolic_operand): Likewise.
10453         (move_operand): Likewise.
10454         (absolute_symbolic_operand): Likewise.
10455         (got_disp_operand): Likewise.
10456         (got_page_ofst_operand): Likewise.
10457
10458 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10459
10460         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
10461         (SYMBOL_ABSOLUTE): ...this.
10462         (SYMBOL_SMALL_DATA): Rename to...
10463         (SYMBOL_GP_RELATIVE): ...this.
10464         (SYMBOL_CONSTANT_POOL): Rename to...
10465         (SYMBOL_PC_RELATIVE): ...this.
10466         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
10467         (mips_symbolic_address_p, mips_symbol_insns, override_options)
10468         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
10469         after above changes.
10470         * config/mips/predicates.md (const_call_insn_operand): Likewise.
10471         (general_symbolic_operand): Rename to...
10472         (absolute_symbolic_operand): ...this.
10473         * config/mips/mips.md: Update after above changes.
10474
10475 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
10476             Revital Eres  <eres@il.ibm.com>
10477
10478         * ddg.c (print_ddg): Add dump information.
10479         * modulo-sched.c (print_node_sched_params): Add parameter and
10480         verbosity.
10481         (calculate_maxii): Remove function.
10482         (undo_generate_reg_moves): Likewise.
10483         (undo_permute_partial_schedule): Likewise.
10484         (kernel_number_of_cycles): Likewise.
10485         (MAXII_FACTOR): New definition to calculate the upper bound of II.
10486         (sms_schedule): Use it.  Remove profitability checks.
10487         (sms_schedule_by_order): Fix order of nodes within the cycle.
10488
10489 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
10490
10491         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
10492         -profile option, add pie support.
10493         (ENDFILE_SPEC): New spec.
10494         * config/gnu.h (LIB_SPEC): Add -profile option.
10495
10496 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
10497
10498         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
10499         * config/gnu.h (LIB_SPEC): Likewise.
10500
10501 2007-08-07  Yaz Saito  <saito@google.com>
10502             Ian Lance Taylor  <iant@google.com>
10503
10504         * common.opt (finstrument-functions-exclude-function-list): New
10505         option.
10506         (finstrument-functions-exclude-file-list): New option.
10507         * opts.c (char_p): Define and DEF_VEC.
10508         (flag_instrument_functions_exclude_functions): New static
10509         variable.
10510         (flag_instrument_functions_exclude_files): New static variable.
10511         (add_instrument_functions_exclude_list): New static function.
10512         (flag_instrument_functions_exclude_p): New function.
10513         (common_handle_option): Handle new options.
10514         * flags.h (flag_instrument_functions_exclude_p): Declare.
10515         * gimplify.c (gimplify_function_tree): Call
10516         flag_instrument_functions_exclude_p.
10517         * doc/invoke.texi (Option Summary): Mention new options.
10518         (Code Gen Options): Document new options.
10519
10520 2007-08-07  Ian Lance Taylor  <iant@google.com>
10521
10522         PR rtl-optimization/32776
10523         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
10524         (resolve_use): Likewise.
10525         (decompose_multiword_subregs): Remove "changed" local variable.
10526
10527 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
10528
10529         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
10530         * configure: Regenerate.
10531         * config.in: Regenerate.
10532         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
10533         spec string.
10534
10535 2007-08-07  Ian Lance Taylor  <iant@google.com>
10536
10537         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
10538         note, just delete the insn.
10539
10540 2007-08-07  Andreas Schwab  <schwab@suse.de>
10541
10542         PR bootstrap/32973
10543         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
10544         struct definition.
10545
10546 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
10547
10548         * lower-subreg.c (resolve_subreg_use): Remove assertion.
10549         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
10550         (decompose_multiword_subregs): Use the functions above to decompose
10551         multiword shifts and zero-extends.
10552
10553 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
10554
10555         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
10556         "assemble" descriptions which were swapped.
10557
10558 2007-08-06  Chao-ying Fu  <fu@mips.com>
10559
10560         * fixed-value.h: New file.
10561         * fixed-value.c: New file.
10562         * Makefile.in (OBJS-common): Add fixed-value.o.
10563         (fixed-value.o): New rule.
10564         (GTFILES): Add fixed-value.h.
10565         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
10566         to compare a.low and b.low.
10567         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
10568
10569 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
10570             Daniel Jacobowitz  <dan@codesourcery.com>
10571
10572         PR target/31868
10573         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
10574         tmake_file.
10575         (x86_64-*-netbsd*): Likewise.
10576         (x86_64-*-linux*): Likewise.
10577         (x86_64-*-kfreebsd*-gnu): Likewise.
10578         (x86_64-*-knetbsd*-gnu): Likewise.
10579         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
10580
10581         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
10582
10583         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
10584         Add -fno-asynchronous-unwind-tables.
10585
10586         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
10587         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
10588         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
10589         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
10590         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
10591
10592 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
10593
10594         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
10595         (TARGET_C_MODE_FOR_SUFFIX): New.
10596
10597 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
10598
10599         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
10600
10601 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
10602
10603         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
10604
10605 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
10606
10607         * config/i386/i386.md: Check TARGET_ macros and optimize_size
10608         before checking function returns in conditional expressions.
10609
10610 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
10611
10612         PR pch/13676
10613         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
10614
10615 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10616
10617         PR middle-end/32988
10618         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
10619         for INTEGRAL_TYPE_P.
10620
10621 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
10622
10623         * configure.ac: Remove --enable-checking=df from default settings.
10624         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
10625         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
10626         if the parameter is true.
10627         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
10628         DF_VERIFY_SCHEDULED flag is true.
10629         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
10630         (df_finish_pass): Adjust prototype.
10631         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
10632         true.
10633
10634         * see.c (pass_see): Add TODO_df_verify.
10635         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
10636         * global.c (rest_of_handle_global_alloc): Schedule verification
10637         after the pass.
10638         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
10639         before the pass.
10640         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
10641         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
10642         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
10643
10644         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
10645         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
10646         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
10647
10648 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
10649             Revital Eres <eres@il.ibm.com>
10650
10651         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
10652         flag.
10653         * ddg.c (create_ddg_dependence): Rename to...
10654         (create_ddg_dep_from_intra_loop_link): This.  Do not check
10655         for interloop edges.  Do not create anti dependence edge when
10656         a true dependence edge exists in the opposite direction and
10657         -fmodulo-sched-allow-regmoves is set.
10658         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
10659         (add_cross_iteration_register_deps): Create anti dependence edge
10660         when -fno-modulo-sched-allow-regmoves is set.
10661         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
10662
10663 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
10664
10665         * config/arm/arm.md (movsi): Add braces.
10666
10667 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10668
10669         PR middle-end/32780
10670         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
10671         operands for the folding of "A - (A & B)" into "~B & A"; cast them
10672         to type.
10673
10674 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
10675
10676         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
10677         state accessor functions.
10678         * cfgloopmanip.c (remove_path, create_preheaders,
10679         force_single_succ_latches, fix_loop_structure): Ditto.
10680         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
10681         tree_duplicate_loop_to_header_edge): Ditto.
10682         * cfgloopanal.c (mark_irreducible_loops): Ditto.
10683         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
10684         Ditto.
10685         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
10686         cleanup_tree_cfg): Ditto.
10687         * tree-cfg.c (tree_merge_blocks): Ditto.
10688         * cfgloop.c (rescan_loop_exit, record_loop_exits,
10689         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
10690         loop_preheader_edge, single_exit): Ditto.
10691         (flow_loops_find): Do not clear loops->state.
10692         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
10693         loops_state_clear): New functions.
10694
10695 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10696
10697         PR middle-end/32399
10698         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
10699         when adding to the base and convert ELT to sizetype instead of type.
10700
10701 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10702
10703         PR middle-end/32304
10704         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
10705         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
10706
10707 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10708
10709         PR middle-end/32935
10710         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
10711          correct type the negate expression.
10712
10713 2007-08-03  Jan Hubicka  <jh@suse.cz>
10714
10715         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
10716         stack boundary.
10717
10718 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
10719
10720         * config/rs6000/rs6000.c (struct processor_cost): Change
10721         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
10722         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
10723         information.
10724         (rios1_costs, rios2_cost): Correct cache line size.
10725         (rs6000_override_options): Set l2-cache-size parameter.
10726
10727 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10728             Diego Novillo  <dnovillo@google.com>
10729
10730         PR 31521
10731         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
10732         if the range includes 0.
10733
10734 2007-08-03  Ben Elliston  <bje@au.ibm.com>
10735
10736         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
10737         mode to unspec expressions to silence a warning from the generator
10738         programs.
10739         
10740 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
10741
10742         * config/ia64/constraints.md ("U"): Make constraint vector only.
10743
10744 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
10745
10746         PR middle-end/25446
10747         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
10748         always_inline attribute on the function decl.
10749
10750 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
10751
10752         PR middle-end/25445
10753         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
10754         if we are compiling with -fPIC.
10755
10756 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
10757             Nigel Stephens  <nigel@mips.com>
10758
10759         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
10760         Define for MIPS32 and MIPS64.
10761
10762 2007-08-02  Nick Clifton  <nickc@redhat.com>
10763
10764         * config/host-hpux.c: Change copyright header to refer to version
10765         3 of the GNU General Public License and to point readers at the
10766         COPYING3 file and the FSF's license web page.
10767         * config/alpha/predicates.md, config/alpha/vms-ld.c,
10768         config/alpha/linux.h, config/alpha/alpha.opt,
10769         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
10770         config/alpha/vms-unwind.h, config/alpha/ev4.md,
10771         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
10772         config/alpha/alpha.h, config/alpha/sync.md,
10773         config/alpha/openbsd.h, config/alpha/alpha.md,
10774         config/alpha/alpha-modes.def, config/alpha/ev5.md,
10775         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
10776         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
10777         config/alpha/constraints.md, config/alpha/osf.h,
10778         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
10779         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
10780         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
10781         config/frv/frv-asm.h, config/frv/frv-protos.h,
10782         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
10783         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
10784         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
10785         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
10786         config/s390/s390.opt, config/s390/s390-modes.def,
10787         config/s390/fixdfdi.h, config/s390/constraints.md,
10788         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
10789         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
10790         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
10791         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
10792         config/m32c/prologue.md, config/m32c/m32c.abi,
10793         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
10794         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
10795         config/m32c/t-m32c, config/m32c/m32c-modes.def,
10796         config/m32c/jump.md, config/m32c/shift.md,
10797         config/m32c/m32c-protos.h, config/libgloss.h,
10798         config/spu/spu-protos.h, config/spu/predicates.md,
10799         config/spu/spu-builtins.h, config/spu/spu.c,
10800         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
10801         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
10802         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
10803         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
10804         config/sparc/hypersparc.md, config/sparc/predicates.md,
10805         config/sparc/linux.h, config/sparc/sp64-elf.h,
10806         config/sparc/supersparc.md, config/sparc/cypress.md,
10807         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
10808         config/sparc/niagara.md, config/sparc/sparc.md,
10809         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
10810         config/sparc/sparc.opt, config/sparc/sync.md,
10811         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
10812         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
10813         config/sparc/sparc.c, config/sparc/little-endian.opt,
10814         config/sparc/sysv4-only.h, config/sparc/sparc.h,
10815         config/sparc/linux64.h, config/sparc/freebsd.h,
10816         config/sparc/sol2.h, config/sparc/rtemself.h,
10817         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
10818         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
10819         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
10820         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
10821         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
10822         config/m32r/linux.h, config/m32r/constraints.md,
10823         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
10824         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
10825         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
10826         config/i386/i386.md, config/i386/netware-crt0.c,
10827         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
10828         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
10829         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
10830         config/i386/sol2.h, config/i386/constraints.md,
10831         config/i386/netware-libgcc.c, config/i386/sysv5.h,
10832         config/i386/predicates.md, config/i386/geode.md,
10833         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
10834         config/i386/freebsd64.h, config/i386/vxworksae.h,
10835         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
10836         config/i386/rtemself.h, config/i386/netbsd-elf.h,
10837         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
10838         config/i386/netware.h, config/i386/i386-modes.def,
10839         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
10840         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
10841         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
10842         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
10843         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
10844         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
10845         config/i386/xm-mingw32.h, config/i386/linux64.h,
10846         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
10847         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
10848         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
10849         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
10850         config/i386/cygwin2.c, config/i386/i386-protos.h,
10851         config/i386/sync.md, config/i386/openbsd.h,
10852         config/i386/host-mingw32.c, config/i386/i386-aout.h,
10853         config/i386/nto.h, config/i386/biarch64.h,
10854         config/i386/i386-coff.h, config/i386/freebsd.h,
10855         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
10856         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
10857         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
10858         config/darwin-protos.h, config/linux.opt, config/sol2.c,
10859         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
10860         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
10861         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
10862         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
10863         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
10864         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
10865         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
10866         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
10867         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
10868         config/sh/superh64.h, config/sh/rtemself.h,
10869         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
10870         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
10871         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
10872         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
10873         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
10874         config/avr/predicates.md, config/avr/constraints.md,
10875         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
10876         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
10877         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
10878         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
10879         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
10880         config/c4x/c4x-modes.def, config/c4x/rtems.h,
10881         config/c4x/predicates.md, config/c4x/c4x.h,
10882         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
10883         config/xtensa/predicates.md, config/xtensa/xtensa.c,
10884         config/xtensa/linux.h, config/xtensa/xtensa.h,
10885         config/xtensa/elf.h, config/xtensa/xtensa.md,
10886         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
10887         config/xtensa/xtensa-protos.h, config/dbx.h,
10888         config/stormy16/predicates.md, config/stormy16/stormy16.md,
10889         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
10890         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
10891         config/host-solaris.c, config/fr30/fr30.h,
10892         config/fr30/predicates.md, config/fr30/fr30-protos.h,
10893         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
10894         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
10895         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
10896         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
10897         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
10898         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
10899         config/host-linux.c, config/interix3.h, config/cris/cris.c,
10900         config/cris/predicates.md, config/cris/linux.h,
10901         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
10902         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
10903         config/cris/aout.opt, config/cris/cris-protos.h,
10904         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
10905         config/iq2000/iq2000.h, config/iq2000/predicates.md,
10906         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
10907         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
10908         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
10909         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
10910         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
10911         config/chorus.h, config/mn10300/mn10300.c,
10912         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
10913         config/mn10300/mn10300.h, config/mn10300/linux.h,
10914         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
10915         config/mn10300/mn10300.md, config/ia64/predicates.md,
10916         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
10917         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
10918         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
10919         config/ia64/freebsd.h, config/ia64/ia64.md,
10920         config/ia64/ia64-modes.def, config/ia64/constraints.md,
10921         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
10922         config/gofast.h, config/rtems.h, config/sol2-10.h,
10923         config/m68k/predicates.md, config/m68k/m68k.md,
10924         config/m68k/linux.h, config/m68k/m68k-modes.def,
10925         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
10926         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
10927         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
10928         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
10929         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
10930         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
10931         config/m68k/constraints.md, config/m68k/rtemself.h,
10932         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
10933         config/m68k/uclinux.h, config/rs6000/power4.md,
10934         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
10935         config/rs6000/linux.h, config/rs6000/eabi.h,
10936         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
10937         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
10938         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
10939         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
10940         config/rs6000/windiss.h, config/rs6000/603.md,
10941         config/rs6000/aix41.h, config/rs6000/cell.md,
10942         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
10943         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
10944         config/rs6000/darwin.md, config/rs6000/darwin64.h,
10945         config/rs6000/default64.h, config/rs6000/7xx.md,
10946         config/rs6000/darwin.opt, config/rs6000/spe.md,
10947         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
10948         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
10949         config/rs6000/7450.md, config/rs6000/linux64.h,
10950         config/rs6000/constraints.md, config/rs6000/440.md,
10951         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
10952         config/rs6000/rs6000.c, config/rs6000/aix52.h,
10953         config/rs6000/rs6000.h, config/rs6000/power6.md,
10954         config/rs6000/predicates.md, config/rs6000/altivec.md,
10955         config/rs6000/aix64.opt, config/rs6000/rios1.md,
10956         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
10957         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
10958         config/rs6000/darwin7.h, config/rs6000/dfp.md,
10959         config/rs6000/linux64.opt, config/rs6000/sync.md,
10960         config/rs6000/vxworksae.h, config/rs6000/power5.md,
10961         config/rs6000/lynx.h, config/rs6000/biarch64.h,
10962         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
10963         config/rs6000/eabispe.h, config/rs6000/e500.h,
10964         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
10965         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
10966         config/rs6000/aix.h, config/rs6000/vxworks.h,
10967         config/rs6000/40x.md, config/rs6000/aix51.h,
10968         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
10969         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
10970         config/arc/arc.h, config/mcore/mcore-elf.h,
10971         config/mcore/mcore-protos.h, config/mcore/predicates.md,
10972         config/mcore/mcore.md, config/mcore/mcore.c,
10973         config/mcore/mcore.opt, config/mcore/mcore.h,
10974         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
10975         config/score/predicates.md, config/score/score-version.h,
10976         config/score/score-protos.h, config/score/misc.md,
10977         config/score/elf.h, config/score/score.c, config/score/mac.md,
10978         config/score/score7.md, config/score/score.h,
10979         config/score/score-conv.h, config/score/score-mdaux.c,
10980         config/score/score.md, config/score/score.opt,
10981         config/score/score-modes.def, config/score/score-mdaux.h,
10982         config/score/mul-div.S, config/arm/uclinux-elf.h,
10983         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
10984         config/arm/symbian.h, config/arm/linux-elf.h,
10985         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
10986         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
10987         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
10988         config/arm/strongarm-pe.h, config/arm/arm.h,
10989         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
10990         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
10991         config/arm/arm-modes.def, config/arm/linux-eabi.h,
10992         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
10993         config/arm/arm-cores.def, config/arm/arm-protos.h,
10994         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
10995         config/arm/wince-pe.h, config/arm/neon.md,
10996         config/arm/constraints.md, config/arm/neon.ml,
10997         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
10998         config/arm/arm.opt, config/arm/arm926ejs.md,
10999         config/arm/predicates.md, config/arm/iwmmxt.md,
11000         config/arm/arm_neon.h, config/arm/unknown-elf.h,
11001         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
11002         config/arm/neon-testgen.ml, config/arm/arm.md,
11003         config/arm/xscale-coff.h, config/arm/pe.c,
11004         config/arm/arm-generic.md, config/arm/pe.h,
11005         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
11006         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
11007         config/arm/strongarm-elf.h, config/arm/cirrus.md,
11008         config/arm/netbsd-elf.h, config/arm/vxworks.h,
11009         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
11010         config/pa/predicates.md, config/pa/pa64-hpux.h,
11011         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
11012         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
11013         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
11014         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
11015         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
11016         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
11017         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
11018         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
11019         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
11020         config/pa/pa64-regs.h, config/pa/pa-modes.def,
11021         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
11022         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
11023         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
11024         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
11025         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
11026         config/mips/linux64.h, config/mips/elforion.h,
11027         config/mips/constraints.md, config/mips/generic.md,
11028         config/mips/predicates.md, config/mips/4300.md,
11029         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
11030         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
11031         config/mips/5k.md, config/mips/vr4120-div.S,
11032         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
11033         config/mips/mips-protos.h, config/mips/6000.md,
11034         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
11035         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
11036         config/mips/mips-modes.def, config/mips/vr.h,
11037         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
11038         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
11039         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
11040         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
11041         config/vax/openbsd1.h, config/vax/netbsd.h,
11042         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
11043         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
11044         config/h8300/rtems.h, config/h8300/predicates.md,
11045         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
11046         config/h8300/h8300.md, config/h8300/h8300.opt,
11047         config/h8300/coff.h, config/h8300/h8300-protos.h,
11048         config/v850/v850.md, config/v850/predicates.md,
11049         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
11050         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
11051         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
11052         config/mmix/mmix.h, config/mmix/predicates.md,
11053         config/mmix/mmix-protos.h, config/mmix/mmix.md,
11054         config/mmix/mmix.c, config/mmix/mmix.opt,
11055         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
11056         config/bfin/rtems.h, config/bfin/bfin-modes.def,
11057         config/bfin/predicates.md, config/bfin/bfin-protos.h,
11058         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
11059         Likewise.
11060
11061 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
11062
11063         * emit-rtl.c (reset_used_decls): Rename to...
11064         (set_used_decls): ...this.  Set the used flag rather than clearing it.
11065         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
11066         DECL_RTLs rather than resetting them.
11067
11068 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
11069
11070         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
11071
11072 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
11073
11074         * reload.c (find_reloads_address_part): Pass correct MEMREFLOC
11075         argument to find_reloads_address.
11076
11077 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
11078
11079         PR tree-optimization/32919
11080         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
11081         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
11082         (coalesce_ssa_name): Call it.
11083
11084 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
11085             David Ung  <davidu@mips.com>
11086
11087         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
11088         (__mips16_unorddf2, __mips16_floatunsidf): New.
11089         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
11090         above functions.
11091         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
11092
11093 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11094
11095         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
11096         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
11097         * tree.h (OMP_SECTIONS_CONTROL): New macro.
11098         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
11099         * omp-low.c (get_ws_args_for, determine_parallel_type,
11100         expand_omp_for_generic, expand_omp_for_static_nochunk,
11101         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
11102         Work with more precise CFG.
11103         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
11104         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
11105         OMP_CONTINUE.
11106         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
11107         * gimple-low.c (lower_stmt): Ditto.
11108         * tree-inline.c (estimate_num_insns_1): Ditto.
11109         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
11110         (OMP_SECTIONS_SWITCH): New.
11111         * tree-cfgcleanup.c (cleanup_omp_return): New.
11112         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
11113         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
11114         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
11115         (tree_redirect_edge_and_branch): Handle omp constructs.
11116
11117         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
11118         with three arguments.
11119
11120 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11121
11122         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
11123         in loop closed ssa.
11124
11125 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11126
11127         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
11128         the loop structures may need fixing.
11129         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
11130         New functions.
11131         (cleanup_tree_cfg_loop): Removed.
11132         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
11133         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
11134         instead of running cleanup_tree_cfg_loop.
11135         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
11136         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
11137         (tree_predictive_commoning): Declaration changed.
11138         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
11139
11140 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11141
11142         * doc/invoke.texi (l1-cache-size): Update documentation.
11143         (l2-cache-size): Document.
11144         * params.h (L2_CACHE_SIZE): New macro.
11145         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
11146         that L1_CACHE_SIZE is in kB now.
11147         (L2_CACHE_SIZE_BYTES): New macro.
11148         (tree_ssa_prefetch_arrays): Show size in kB.
11149         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
11150         and l2_cache_size fields.
11151         * config/i386/driver-i386.c (describe_cache): Detect cache size
11152         in kB.
11153         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
11154         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
11155         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
11156         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
11157         (override_options): Set l1-cache-size and l2-cache-size to default
11158         values if not specified otherwise.
11159         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
11160         (PARAM_L2_CACHE_SIZE): New.
11161
11162 2007-08-01  Nigel Stephens  <nigel@mips.com>
11163             David Ung  <davidu@mips.com>
11164             Thiemo Seufer  <ths@mips.com>
11165             Chris Dearman  <chris@mips.com>
11166             Richard Sandiford  <richard@codesourcery.com>
11167
11168         * config.gcc (mips*-sde-elf*): New stanza.
11169         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
11170         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
11171         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
11172         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
11173         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
11174         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
11175         to tmake_file.
11176         * config/mips/sde.h: New file.
11177         * config/mips/t-libgcc-mips16: Likewise.
11178         * config/mips/t-sde: Likewise.
11179         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
11180         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
11181         _MIPS_FPSET and _MIPS_SZINT.
11182         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
11183         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
11184         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
11185         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
11186         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
11187         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
11188         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
11189         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
11190         _MIPS_SZPTR and _MIPS_FPSET.
11191         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
11192         architecture is specified.
11193         (MIPS_32BIT_OPTION_SPEC): New macro.
11194
11195 2007-07-31  Dan Hipschman  <dsh@google.com>
11196
11197         * gcc.c (end_going_arg): New function.
11198         (do_spec_2): Use it.
11199         (do_spec_1): Use it.
11200
11201 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11202
11203         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
11204         only if ENABLE_CHECKING is defined.
11205
11206 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
11207
11208         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
11209         df_ru_add_problem, df_ru_get_bb_info): Removed.
11210         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
11211         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
11212         df_ru_free_bb_info, df_ru_alloc,
11213         df_ru_bb_local_compute_process_def,
11214         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
11215         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
11216         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
11217         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
11218         df_ru_add_problem): Removed.
11219
11220 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11221
11222         PR target/32847
11223         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
11224         (casesi32p, casesi64p): Likewise.
11225         (casesi): Adjust for above.
11226
11227 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
11228
11229         * mode-switching.c (create_pre_exit): Don't search past calls.
11230
11231 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
11232
11233         * config/mips/mips.h (ISA_HAS_SYNCI): Add !TARGET_MIPS16 test.
11234
11235 2007-07-31  Revital Eres  <eres@il.ibm.com>
11236
11237         * ddg.c (add_deps_for_def): Rename to...
11238         (add_cross_iteration_register_deps): This.  Change implementation
11239         to use only reaching def and def-use chains to construct the
11240         inter loop dependencies.
11241         (add_deps_for_use): Remove function.
11242         (build_inter_loop_deps): Call add_cross_iteration_register_deps
11243         function to build the inter loop dependencies.
11244         * modulo-sched.c (sms_schedule): Build only
11245         reaching def and def-use chains for the propose of the ddg
11246         construction.
11247
11248 2007-07-31  Julian Brown  <julian@codesourcery.com>
11249
11250         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
11251         New define_insns. Use correct RTL.
11252         (vec_set<mode>): Write as expander.
11253
11254 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
11255
11256         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
11257         to an unallocated space.
11258
11259 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
11260
11261         * tree-data-ref.c
11262         (split_constant_offset): Enable split_constant_offset to extract
11263         constants from other statements.
11264         * tree-vect-transform.c
11265         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
11266         to a temp var. Force base_offset to be simple.
11267
11268 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
11269
11270         * df-scan.c (df_scan_verify): Remove artificial limit on
11271         the number of blocks for verification.
11272         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
11273         df_simulate_defs): Avoid unnecessary insn checking for defs.
11274
11275 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
11276
11277         * config/m68k/lb1sf68.asm (FUNC): New macro.
11278         (__mulsi3): Use it.
11279         (__udivsi3): Likewise.
11280         (__divsi3): Likewise.
11281         (__umodsi3): Likewise.
11282         (__modsi3): Likewise.
11283         (__subdf3): Likewise.
11284         (__adddf3): Likewise.
11285         (__muldf3): Likewise.
11286         (__divdf3): Likewise.
11287         (__negdf2): Likewise.
11288         (__cmpdf2): Likewise.
11289         (__subsf3): Likewise.
11290         (__addsf3): Likewise.
11291         (__mulsf3): Likewise.
11292         (__divsf3): Likewise.
11293         (__negsf2): Likewise.
11294         (__cmpsf2): Likewise.
11295         (__eqdf2): Likewise.
11296         (__nedf2): Likewise.
11297         (__gtdf2): Likewise.
11298         (__gedf2): Likewise.
11299         (__ltdf2): Likewise.
11300         (__ledf2): Likewise.
11301         (__eqsf2): Likewise.
11302         (__nesf2): Likewise.
11303         (__gtsf2): Likewise.
11304         (__gesf2): Likewise.
11305         (__ltsf2): Likewise.
11306         (__lesf2): Likewise.
11307
11308 2007-07-30  Ollie Wild  <aaw@google.com>
11309
11310         * c-ppoutput.c (print_lines_directives_only): New function.
11311         (scan_translation_unit_directives_only): New function.
11312         (preprocess_file): Add call to scan_translation_unit_directives_only.
11313         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
11314         (sanitize_cpp_opts): Add default flag_dump_macros setting for
11315         -fdirectives-only.  Add errors for -fdirectives-only conflict with
11316         -Wunused-macros and -traditional.
11317         (finish_options): Add builtin macro initialization for
11318         -fdirectives-only + -fpreprocessed.
11319         * c.opt (fdirectives-only): New.
11320         * doc/cppopts.texi (fdirectives-only): New.
11321
11322 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11323
11324         * alias.c (record_set, memory_modified_1): Constify.
11325         * bt-load.c (note_btr_set): Likewise.
11326         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
11327         * combine.c (set_nonzero_bits_and_sign_copies,
11328         expand_field_assignment, record_dead_and_set_regs_1,
11329         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
11330         likely_spilled_retval_1): Likewise.
11331         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
11332         frv_io_handle_set): Likewise.
11333         * config/mips/mips.c (mips_sim_record_set,
11334         vr4130_true_reg_dependence_p_1): Likewise.
11335         * config/mt/mt.c (insn_dependent_p_1): Likewise.
11336         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
11337         * config/sh/sh.c (flow_dependent_p_1): Likewise.
11338         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
11339         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
11340         * ddg.c (mark_mem_store): Likewise.
11341         * df-problems.c (df_urec_mark_reg_change): Likewise.
11342         * function.c (update_epilogue_consts): Likewise.
11343         * gcse.c (record_set_info, record_last_set_info,
11344         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
11345         reg_clear_last_set): Likewise.
11346         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
11347         Likewise.
11348         * jump.c (reversed_comparison_code_parts): Likewise.
11349         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
11350         reg_is_set): Likewise.
11351         * loop-iv.c (mark_altered): Likewise.
11352         * mode-switching.c (reg_becomes_live): Likewise.
11353         * optabs.c (no_conflict_move_test): Likewise.
11354         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
11355         Likewise.
11356         * postreload.c (reload_combine_note_store, move2add_note_store):
11357         Likewise.
11358         * regmove.c (flags_set_1): Likewise.
11359         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
11360         Likewise.
11361         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
11362         Likewise. 
11363         * resource.c (update_live_status): Likewise.
11364         * rtl.h (set_of, note_stores): Likewise.
11365         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
11366         note_stores, parms_set): Likewise.
11367         * sched-rgn.c (sets_likely_spilled_1): Likewise.
11368         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
11369         Likewise. 
11370         * var-tracking.c (count_stores, add_stores): Likewise.
11371
11372 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11373
11374         * alias.c (mems_in_disjoint_alias_sets_p,
11375         fixed_scalar_and_varying_struct_p, aliases_everything_p,
11376         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
11377         write_dependence_p, mems_in_disjoint_alias_sets_p,
11378         read_dependence, true_dependence, canon_true_dependence,
11379         anti_dependence, output_dependence): Constify.
11380         * combine.c (extended_count): Likewise.
11381         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
11382         * cselib.c (get_value_hash, references_value_p,
11383         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
11384         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
11385         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
11386         * function.c (contains, prologue_epilogue_contains,
11387         sibcall_epilogue_contains): Likewise. 
11388         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
11389         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
11390         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
11391         reg_or_subregno): Likewise.
11392         * recog.c (asm_noperands): Likewise.
11393         * reload1.c (function_invariant_p): Likewise.
11394         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
11395         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
11396         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
11397         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
11398         true_regnum, reg_or_subregno, condjump_in_parallel_p,
11399         extended_count, prologue_epilogue_contains,
11400         sibcall_epilogue_contains, function_invariant_p, true_dependence,
11401         canon_true_dependence, read_dependence, anti_dependence,
11402         output_dependence): Likewise.
11403         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
11404
11405 2007-07-30  Julian Brown  <julian@codesourcery.com>
11406
11407         * config/arm/neon.md (V_ext): New mode attribute.
11408         (neon_vget_lane<mode>): Replace with define_expand.
11409         (neon_vget_lane<mode>_sext_internal)
11410         (neon_vget_lane<mode>_zext_internal): New define_insns for double
11411         and quad precision vectors.
11412         (neon_vget_lanedi): Add bounds check. Remove dead comment.
11413         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
11414         have typeless 32-bit result.
11415
11416 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11417
11418         PR tree-opt/32527
11419         * tree-affine.h (aff_tree): The type of rest is sizetype for types
11420         of pointers.
11421         * tree-affine.c (aff_combination_scale): If type is a pointer type,
11422         use sizetype for rest.
11423         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
11424         (aff_combination_convert): Don't convert rest for pointer types.
11425
11426 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
11427
11428         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
11429
11430         * tree-ssa-alias.c: Add alloc-pool.h.
11431         (init_alias_info): Free alias_bitmap_obstack.
11432         (delete_alias_info): Call delete_mem_ref_stats.
11433         (get_mem_sym_stats_for): Use alloc_pool.
11434         (init_mem_ref_stats): Do not delete mem_ref_stats here.
11435         (delete_mem_sym_stats): Removed.
11436         
11437 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
11438
11439         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
11440         functions cannot be represented as classical distance vectors.
11441
11442 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11443
11444         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
11445         * builtins.c (validate_arg, builtin_mathfn_code,
11446         validate_arglist): Likewise.
11447         * calls.c (call_expr_flags): Likewise.
11448         * combine.c (reg_nonzero_bits_for_combine,
11449         reg_num_sign_bit_copies_for_combine, get_last_value,
11450         reg_truncated_to_mode): Likewise.
11451         * emit-rtl.c (subreg_lowpart_p): Likewise.
11452         * expr.c (highest_pow2_factor_for_target,
11453         categorize_ctor_elements_1, categorize_ctor_elements,
11454         count_type_elements, contains_packed_reference,
11455         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
11456         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
11457         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
11458         native_encode_int, native_encode_real, native_encode_complex,
11459         native_encode_vector, native_encode_expr, native_interpret_int,
11460         native_interpret_real, native_interpret_complex,
11461         native_interpret_vector, native_interpret_expr): Likewise.
11462         * function.c (use_register_for_decl): Likewise.
11463         * gimplify.c (get_name): Likewise.
11464         * langhooks-def.h (lhd_return_null_const_tree): New.
11465         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
11466         * langhooks.c (lhd_return_null_const_tree): New.
11467         * langhooks.h (lang_get_callee_fndecl): Constify.
11468         * output.h (constructor_static_from_elts_p): Likewise.
11469         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
11470         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
11471         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
11472         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
11473         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
11474         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
11475         * rtlhooks-def.h (reg_nonzero_bits_general,
11476         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
11477         Likewise. 
11478         * rtlhooks.c (reg_num_sign_bit_copies_general,
11479         reg_nonzero_bits_general, reg_truncated_to_mode_general):
11480         Likewise. 
11481         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
11482         * stor-layout.c (mode_for_size_tree): Likewise.
11483         * tree-ssa-loop-im.c (memref_eq): Likewise.
11484         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
11485         * tree.c (contains_placeholder_p, type_list_equal,
11486         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
11487         Likewise. 
11488         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
11489         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
11490         contains_placeholder_p, contains_packed_reference,
11491         get_callee_fndecl, operand_equal_for_phi_arg_p,
11492         warn_if_unused_value, is_body_block, native_encode_expr,
11493         native_interpret_expr, fold_convertible_p, operand_equal_p,
11494         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
11495         validate_arglist, simple_cst_equal, type_list_equal,
11496         use_register_for_decl, call_expr_flags, get_name,
11497         highest_pow2_factor): Likewise.
11498         (const_call_expr_arg_iterator_d,
11499         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
11500         first_const_call_expr_arg, more_const_call_expr_args_p,
11501         FOR_EACH_CONST_CALL_EXPR_ARG): New.
11502         * varasm.c (constructor_static_from_elts_p): Constify.
11503
11504 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
11505
11506         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
11507         config/arm/neon-schedgen.ml, config/arm/neon.ml,
11508         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
11509         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
11510         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
11511         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
11512         spelling conventions.
11513         * doc/invoke.texi: Follow spelling conventions.
11514
11515 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
11516             Revital Eres  <eres@il.ibm.com>
11517
11518         * modulo-sched.c (sms_schedule): Avoid loops which includes
11519         auto-increment instructions.
11520
11521 2007-07-28  Richard Guenther  <rguenther@suse.de>
11522
11523         PR middle-end/32920
11524         * fold-const.c (fold_cond_expr_with_comparison): Convert
11525         operand zero of MIN/MAX_EXPR to correct type.
11526
11527 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11528
11529         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
11530         flags_from_decl_or_type): Constify.
11531         * gcc.c (do_spec_1): Likewise.
11532         * print-tree.c (dump_addr, print_node_brief): Likewise.
11533         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
11534         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
11535         tree_purge_all_dead_eh_edges): Likewise.
11536         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
11537         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
11538         Likewise. 
11539         * tree.c (expr_location, expr_has_location, expr_locus,
11540         expr_filename, expr_lineno, get_inner_array_type,
11541         fields_compatible_p): Likewise.
11542         * tree.h (get_inner_array_type, fields_compatible_p,
11543         expr_location, expr_has_location, expr_locus, expr_filename,
11544         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
11545         setjmp_call_p, alloca_call_p): Likewise.
11546
11547 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
11548
11549         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
11550         TV_FLOW_INSENSITIVE.
11551
11552         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
11553         TV_CALL_CLOBBER.
11554         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
11555         (compute_flow_insensitive_aliasing): Ditto for
11556         TV_FLOW_INSENSITIVE.    
11557
11558 2007-07-27  Jan Hubicka  <jh@suse.cz>
11559
11560         * config/i386/i386.c (register_move_cost): Remove accidentally
11561         comitted #if 0 block.
11562
11563         * attribs.c: Include hashtab.h
11564         (attribute_hash): New.
11565         (substring): New structure.
11566         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
11567         New function.
11568         (init_attributes): Initialize attribute hash.
11569         (decl_attributes): Use attribute hash.
11570         * Makefile.in (attribs.c): Depend on hashtab.h.
11571
11572 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
11573
11574         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
11575
11576 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
11577
11578         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
11579         __mips_dspr2 and __mips_dsp_rev macros.
11580         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
11581
11582 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
11583         
11584         * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
11585
11586 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
11587
11588         PR middle-end/32749
11589         
11590         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
11591         and the updating of the live and do_not_gen sets.
11592         (df_note_bb_compute): Added updating of live and do_not_gen sets
11593         for regular defs so that the case of clobber inside conditional
11594         call is processed correctly.
11595         
11596 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
11597
11598         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
11599         operands with compatible type.
11600
11601 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
11602
11603         * expr.h (store_bit_field): Don't return a value.
11604         * expmed.c (check_predicate_volatile_ok): New function.
11605         (store_bit_field_1): New function, extracted from store_bit_field.
11606         Take a fallback_p argument and return true if the operation succeeded.
11607         Only use store_fixed_bit_field if fallback_p.  Don't recompute
11608         mode_for_extraction; use op_mode instead.  Try forcing memories
11609         into registers if the insv expander fails.
11610         (store_bit_field): Use store_bit_field_1 with fallback_p true.
11611         Don't return a value.
11612         (convert_extracted_bit_field): New function, extracted from
11613         store_bit_field.
11614         (extract_bit_field_1): Likewise.  Take a fallback_p argument
11615         and return NULL if the operation succeeded.  Only use
11616         extract_fixed_bit_field if fallback_p.  Only calculate one
11617         extraction mode.  Combine code for extv and extzv.  Try forcing
11618         memories into registers if the ext(z)v expander fails.
11619         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
11620
11621 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
11622
11623         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
11624         into bitfields.
11625         (df_ref): Likewise.  Put regno with other integer fields.
11626
11627 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
11628
11629         * df.h (df_mw_hardreg): Remove "loc" field.
11630         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
11631         local variable.
11632         * df-problems.c (df_whole_mw_reg_unused_p): New function,
11633         split out from df_set_unused_notes_for_mw.  Return false for
11634         partial references.  Assert that mw_reg is a REG when returning true.
11635         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
11636         (df_whole_mw_reg_dead_p): New function, split out from
11637         df_set_dead_notes_for_mw.  Return false for partial references.
11638         Assert that mw_reg is a REG when returning true.
11639         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
11640         Remove redundant bitmap check.
11641
11642 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
11643
11644         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
11645         ($(T)crtend.o): Likwise.
11646         ($(T)crtbeginS.o): Likwise.
11647         ($(T)crtendS.o): Likwise.
11648         ($(T)crtfastmath.o): Likwise.
11649
11650 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
11651
11652         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
11653         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
11654         * basic-block.h (struct control_flow_graph): Added x_dom_computed
11655         and x_n_bbs_in_dom_tree fields.
11656
11657 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
11658
11659         PR tree-optimization/32087
11660         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
11661         Do not call scale_bbs_frequencies_int with prob of zero.
11662
11663 2007-07-26  Julian Brown  <julian@codesourcery.com>
11664
11665         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
11666         (neon_element_bits): Add prototypes.
11667         * config/arm/arm.c (bounds_check, neon_lane_bounds)
11668         (neon_const_bounds, neon_element_bits): New functions.
11669         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
11670         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
11671         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
11672         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
11673         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
11674         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
11675         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
11676         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
11677         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
11678         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
11679         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
11680         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
11681         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
11682
11683 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
11684
11685         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
11686         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
11687
11688 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
11689             Julian Brown  <julian@codesourcery.com>
11690
11691         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
11692         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
11693         * config/arm/cortex-a8.md: New.
11694         * config/arm/cortex-a8-neon.md: New.
11695         * config/arm/neon-schedgen.ml: New.
11696         * config/arm/neon.md (vqh_mnem): New.
11697         (neon_type): New.
11698         (Is_float_mode): New.
11699         (Scalar_mul_8_16): New.
11700         (Is_d_reg): New.
11701         (V_mode_nunits): New.
11702         (All instruction patterns): Annotate with neon_type attribute
11703         values.
11704         * config/arm/arm.md: Include cortex-a8.md.
11705         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
11706         values.
11707         Annotate instruction patterns accordingly.
11708         (generic_sched): Do not use generic scheduling for Cortex-A8.
11709         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
11710
11711 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
11712
11713         * fold-const.c (fold_read_from_constant_string): Use
11714         build_int_cst_type.
11715         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
11716
11717 2007-07-26  Nick Clifton  <nickc@redhat.com>
11718
11719         * tree-ssa-operands.h: Change copyright header to refer to version
11720         3 of the GNU General Public License and to point readers at the
11721         COPYING3 file and the FSF's license web page.
11722         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
11723         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
11724         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
11725         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
11726         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
11727         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
11728         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
11729         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
11730         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
11731         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
11732         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
11733         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
11734         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
11735         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
11736         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
11737         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
11738         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
11739         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
11740         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
11741         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
11742         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
11743         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
11744         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
11745         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
11746         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
11747         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
11748         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
11749         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
11750         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
11751         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
11752         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
11753         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
11754         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
11755         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
11756         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
11757         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
11758         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
11759         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
11760         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
11761         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
11762         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
11763         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
11764         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
11765         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
11766         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
11767         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
11768         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
11769         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
11770         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
11771         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
11772         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
11773         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
11774         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
11775         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
11776         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
11777         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
11778         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
11779         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
11780         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
11781         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
11782         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
11783         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
11784         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
11785         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
11786         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
11787         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
11788         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
11789         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
11790         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
11791         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
11792         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
11793         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
11794         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
11795         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
11796         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
11797         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
11798         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
11799         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
11800         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
11801         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
11802         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
11803         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
11804         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
11805         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
11806         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
11807         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
11808         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
11809         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
11810         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
11811         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
11812         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
11813         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
11814         vecprim.h, basic-block.h, tree-ssa-structalias.c,
11815         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
11816         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
11817         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
11818         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
11819         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
11820         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
11821         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
11822         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
11823         convert.c, convert.h, langhooks-def.h, reload1.c,
11824         tree-ssa-operands.c: Likewise.
11825
11826 2007-07-26  Jan Hubicka  <jh@suse.cz>
11827
11828         * tree-ssa-live.c: Include debug.h and flags.h.
11829         (mark_scope_block_unused): New function.
11830         (remove_unused_scope_block_p): New function.
11831         (remove_unused_locals): Remove unused blocks too.
11832
11833 2007-07-25  Ian Lance Taylor  <iant@google.com>
11834
11835         * combine.c (combine_max_regno): Remove.  Remove all uses.
11836         (struct reg_stat_struct): Rename from struct reg_stat.
11837         (reg_stat_type): Define, and declare VECs.
11838         (reg_stat): Change from pointer to VEC.  Change all uses.
11839         (combine_split_insns): New static function.
11840         (try_combine, find_split_point): Call it instead of split_insns.
11841
11842 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
11843
11844         * cfghooks.c (split_block): Fix the information about loop latch.
11845
11846 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
11847
11848         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
11849
11850 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
11851
11852         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
11853         Scan the new edge for loop exit info.
11854
11855 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
11856
11857         * config/darwin.c: Include debug.h.
11858
11859 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
11860
11861         PR target/32218
11862         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
11863
11864 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
11865
11866         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
11867         (HARD_REGNO_MODE_OK): Ditto.
11868         (MODES_TIEABLE_P): Ditto.
11869         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
11870         (CLASS_MAX_NREGS): Ditto.
11871         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
11872         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
11873         (divdf3_internal_thr): Removed.
11874         * config/ia64/div.md: New file.
11875         * config/ia64/constraints.md: Add H constraint.
11876
11877 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11878
11879         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
11880         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
11881         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
11882         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
11883         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
11884         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
11885         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
11886         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
11887         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
11888         dump_sbitmap_file, debug_sbitmap, popcount_table,
11889         sbitmap_popcount): Constify.
11890         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
11891         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
11892         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
11893         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
11894         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
11895         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
11896         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
11897         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
11898         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
11899         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
11900         sbitmap_popcount, sbitmap_verify_popcount): Constify.
11901
11902 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11903
11904         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
11905         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
11906         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
11907         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
11908         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
11909         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
11910         bitmap_intersect_p, bitmap_intersect_compl_p,
11911         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
11912         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
11913         Constify.
11914         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
11915         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
11916         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
11917         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
11918         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
11919         debug_bitmap, debug_bitmap_file, bitmap_print,
11920         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
11921         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
11922
11923 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
11924
11925         * config/darwin.c (darwin_override_options): Additional fix for
11926         debug info formats that don't support var tracking.
11927
11928 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11929
11930         * cselib.c (entry_and_rtx_equal_p): Constify.
11931         * gengtype.c (output_mangled_typename, write_types, write_local):
11932         Likewise.
11933         * gengtype.h (const_type_p): New.
11934         * see.c (eq_descriptor_extension, hash_descriptor_extension):
11935         Constify.
11936         * tlink.c (scan_linker_output): De-constify.
11937         * tree-ssa-loop-im.c (memref_eq): Constify.
11938         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
11939         (shared_bitmap_hash, shared_bitmap_eq): Constify.
11940
11941 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11942
11943         * c-common.c (fname_as_string, c_type_hash): Constify.
11944         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
11945         * cgraph.c (edge_hash, edge_eq): Likewise.
11946         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
11947         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
11948         reg_attrs_htab_eq): Likewise.
11949         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
11950         Likewise.
11951         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
11952         const_decl_t, const_state_t, const_automata_list_el_t): New.
11953         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
11954         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
11955         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
11956         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
11957         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
11958         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
11959         compare_max_occ_cycle_nums, out_state_arcs_num,
11960         compare_transition_els_num, units_cmp, state_reservs_cmp):
11961         Constify.
11962         * genmodes.c (cmp_modes): Likewise.
11963         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
11964         * gimplify.c (compare_case_labels): Likewise.
11965         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
11966         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
11967         * matrix-reorg.c (mtt_info_hash): Likewise.
11968         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
11969         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
11970         (htab_hash_bucket, htab_hash_elem): Constify.
11971         * tree-browser.c (TB_parent_eq): Likewise.
11972         * tree-scalar-evolution.c (hash_scev_info): Likewise.
11973         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
11974         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
11975         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
11976         Constify.
11977         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
11978         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
11979         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
11980         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
11981         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
11982         New.
11983         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
11984         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
11985         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
11986         * tree-ssa-threadupdate.c (redirection_data_hash,
11987         redirection_data_eq): Likewise. 
11988         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
11989         * tree-ssa.c (var_ann_eq): Likewise.
11990         * tree-vrp.c (compare_case_labels): Likewise.
11991         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
11992         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
11993         tree_not_check_failed, tree_class_check_failed,
11994         tree_range_check_failed, tree_not_class_check_failed,
11995         omp_clause_check_failed, omp_clause_range_check_failed,
11996         tree_contains_struct_check_failed, tree_operand_check_failed):
11997         Likewise. 
11998         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
11999         tree_not_check_failed, tree_class_check_failed,
12000         tree_range_check_failed, tree_not_class_check_failed,
12001         tree_operand_check_failed, omp_clause_operand_check_failed,
12002         tree_operand_length): Likewise. 
12003         * var-tracking.c (const_variable): New.
12004         (variable_htab_hash, variable_htab_eq): Constify.
12005         * varasm.c (const_desc_hash): Likewise.
12006
12007 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12008
12009         * expr.c (handled_component_p): Constify.
12010         * fold-const.c (fit_double_type): Likewise.
12011         * real.h (real_value_from_int_cst): Likewise.
12012         * tree-flow-inline.h (gimple_in_ssa_p,
12013         gimple_aliases_computed_p, gimple_addressable_vars,
12014         gimple_call_clobbered_vars, gimple_referenced_vars,
12015         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
12016         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
12017         may_aliases, end_readonly_imm_use_p, has_zero_uses,
12018         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
12019         is_label_stmt, is_global_var, phi_ssa_name_p,
12020         factoring_name_p, is_call_clobbered, tree_common_ann,
12021         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
12022         unmodifiable_var_p, array_ref_contains_indirect_ref,
12023         ref_contains_array_ref, lookup_subvars_for_var,
12024         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
12025         gimple_mem_ref_stats): Likewise.
12026         * tree-flow.h (tree_common_ann, var_ann, function_ann,
12027         may_aliases, is_exec_stmt, is_label_stmt,
12028         ref_contains_array_ref, array_ref_contains_indirect_ref,
12029         var_can_have_subvars, overlap_subvar, is_call_clobbered,
12030         unmodifiable_var_p): Likewise.
12031         * tree-gimple.c (is_gimple_min_invariant): Likewise.
12032         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
12033         * tree.c (type_hash_list, attribute_hash_list, tree_size,
12034         cst_and_fits_in_hwi, real_value_from_int_cst,
12035         build_real_from_int_cst, integer_zerop, integer_onep,
12036         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
12037         tree_floor_log2, real_zerop, real_onep, real_twop,
12038         real_minus_onep, really_constant_p, purpose_member, chain_member,
12039         list_length, fields_length, int_size_in_bytes, bit_position,
12040         int_bit_position, byte_position, int_byte_position, expr_align,
12041         array_type_nelts, tree_node_structure,
12042         type_contains_placeholder_1, iterative_hash_pointer,
12043         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
12044         tree_map_base_eq, type_hash_list, type_hash_eq,
12045         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
12046         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
12047         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
12048         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
12049         int_fits_type_p, get_containing_scope, decl_function_context,
12050         decl_type_context, omp_clause_operand_check_failed,
12051         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
12052         * tree.h (omp_clause_operand_check_failed, tree_size,
12053         build_real_from_int_cst, array_type_nelts, purpose_member,
12054         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
12055         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
12056         is_attribute_p, check_qualified_type, expr_align,
12057         int_size_in_bytes, bit_position, int_bit_position, byte_position,
12058         int_byte_position, list_length, fields_length, initializer_zerop,
12059         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
12060         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
12061         tree_node_structure, handled_component_p, get_containing_scope,
12062         decl_function_context, decl_type_context, real_zerop,
12063         type_num_arguments, fit_double_type, really_constant_p,
12064         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
12065         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
12066         real_twop, real_minus_onep, int_cst_value): Likewise.
12067
12068 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12069
12070         * cfglayout.c (insn_scope, insn_line): Constify.
12071         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
12072         const_double_htab_hash, const_double_htab_eq,
12073         mem_attrs_htab_hash): Likewise.
12074         * loop-iv.c (biv_eq): Likewise.
12075         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
12076         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
12077         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
12078         Likewise. 
12079         * rtl-error.c (location_for_asm, diagnostic_for_asm,
12080         error_for_asm, warning_for_asm, _fatal_insn,
12081         _fatal_insn_not_found): Likewise. 
12082         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
12083         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
12084         rtl_check_failed_type2, rtl_check_failed_code1,
12085         rtl_check_failed_code2, rtl_check_failed_code_mode,
12086         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
12087         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
12088         rtl_check_failed_type2, rtl_check_failed_code1,
12089         rtl_check_failed_code2, rtl_check_failed_code_mode,
12090         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
12091         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
12092         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
12093         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
12094         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
12095         rtx_unstable_p, get_integer_term, get_related_value,
12096         offset_within_block_p, reg_mentioned_p, count_occurrences,
12097         reg_referenced_p, reg_used_between_p, no_labels_between_p,
12098         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
12099         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
12100         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
12101         find_constant_src, find_reg_fusage, find_regno_fusage,
12102         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
12103         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
12104         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
12105         computed_jump_p, auto_inc_p, in_expr_list_p,
12106         remove_node_from_expr_list, loc_mentioned_in_p,
12107         label_is_jump_target_p, reversed_comparison_code_parts,
12108         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
12109         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
12110         print_inline_rtx): Likewise.
12111         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
12112         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
12113         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
12114         get_integer_term, get_related_value, offset_within_block_p,
12115         count_occurrences, reg_mentioned_p, no_labels_between_p,
12116         reg_used_between_p, reg_referenced_p, single_set_2,
12117         multiple_sets, set_noop_p, refers_to_regno_p,
12118         reg_overlap_mentioned_p, dead_or_set_p,
12119         covers_regno_no_parallel_p, covers_regno_p,
12120         dead_or_set_regno_p, find_reg_note, find_regno_note,
12121         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
12122         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
12123         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
12124         side_effects_p, may_trap_p_1, may_trap_p,
12125         may_trap_after_code_motion_p, may_trap_or_fault_p,
12126         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
12127         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
12128         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
12129         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
12130         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
12131         Likewise. 
12132         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
12133         warning_for_asm): Likewise.
12134         * tree.h (print_rtl): Likewise.
12135         * varasm.c (get_pool_mode): Likewise.
12136
12137 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12138
12139         * c-lex.c (c_lex_with_flags, lex_string): Constify.
12140         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
12141         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
12142         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
12143         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
12144         * ddg.c (compare_sccs): Likewise.
12145         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
12146         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
12147         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
12148         decimal_do_fix_trunc, decimal_real_to_integer,
12149         decimal_real_to_integer2, decimal_real_maxval): Likewise.
12150         * dse.c (const_group_info_t): New.
12151         (invariant_group_base_eq, invariant_group_base_hash): Constify.
12152         * dwarf2out.c (const_dw_die_ref): New.
12153         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
12154         * tree-browser.c (TB_parent_eq): Likewise.
12155         * unwind-dw2-fde.c (__register_frame_info_bases,
12156         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
12157         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
12158         Likewise.
12159         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
12160         * unwind-dw2.c (uw_frame_state_for): Likewise.
12161         * value-prof.c (histogram_hash, histogram_eq): Likewise.
12162         * value-prof.h (const_histogram_value): New.
12163
12164 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
12165
12166         * config/mips/mips.c (machine_function): Add
12167         initialized_mips16_gp_pseudo_p.
12168         (mips16_gp_pseudo_reg): Do not emit the initialization of
12169         mips16_gp_pseudo_rtx when being called from the gimple cost-
12170         calculation routines; emit it on the first use outside those
12171         routines.
12172
12173 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12174
12175         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
12176         New.
12177         
12178         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
12179         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
12180         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
12181         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
12182         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
12183         Preserve const-ness of parameters through use of __typeof(),
12184         also constify and tidy.
12185         
12186         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
12187         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
12188         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
12189         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
12190         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
12191         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
12192         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
12193         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
12194         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
12195
12196 2007-07-25  Julian Brown  <julian@codesourcery.com>
12197             Mark Shinwell  <shinwell@codesourcery.com>
12198
12199         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
12200         (alpha_mangle_type): This.
12201         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12202         (TARGET_MANGLE_TYPE): Define this instead.
12203         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
12204         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
12205         (arm_init_neon_builtins): Fix comment.
12206         (arm_mangle_map_entry): New.
12207         (arm_mangle_map): New.
12208         (arm_mangle_type): New.
12209         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
12210         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
12211         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
12212         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12213         (TARGET_MANGLE_TYPE): Define this instead.
12214         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
12215         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
12216         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
12217         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12218         (TARGET_MANGLE_TYPE): Define this instead.
12219         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
12220         to...
12221         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
12222         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12223         (TARGET_MANGLE_TYPE): Define this instead.
12224         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
12225         (s390_mangle_type): This.
12226         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12227         (TARGET_MANGLE_TYPE): Define this instead.
12228         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
12229         (sparc_mangle_type): This.
12230         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12231         (TARGET_MANGLE_TYPE): Define this instead.
12232         * cp/mangle.c (write_type): Call mangle_type target hook on all
12233         types before mangling.  Use original type, not main variant, as
12234         argument.
12235         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
12236         (TARGET_MANGLE_TYPE): This.
12237         * target.h (gcc_target): Rename mangle_fundamental_type to
12238         mangle_type.
12239         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
12240         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
12241
12242 2007-07-25  Julian Brown  <julian@codesourcery.com>
12243             Paul Brook  <paul@codesourcery.com>
12244             Joseph Myers  <joseph@codesourcery.com>
12245             Mark Shinwell  <shinwell@codesourcery.com>
12246
12247         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
12248         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
12249         (with_fpu): Allow --with-fpu=neon.
12250         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
12251         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
12252         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
12253         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
12254         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
12255         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
12256         (neon_emit_pair_result_insn, neon_disambiguate_copy)
12257         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
12258         (output_move_neon): Add prototypes.
12259         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
12260         (all_fpus): Add FPUTYPE_NEON.
12261         (fp_model_for_fpu): Add NEON field.
12262         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
12263         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
12264         in registers.
12265         (arm_legitimate_address_p): Don't support fancy addressing for NEON
12266         structure moves.
12267         (thumb2_legitimate_address_p): Likewise.
12268         (neon_valid_immediate): Recognize and prepare constants suitable for
12269         NEON instructions.
12270         (neon_immediate_valid_for_move): New function. Recognize and prepare
12271         immediates for NEON move instructions.
12272         (neon_immediate_valid_for_logic): New function. Recognize and
12273         prepare immediates for NEON logic instructions.
12274         (neon_output_logic_immediate): New function. Create asm string
12275         suitable for outputting immediate logic instructions.
12276         (neon_pairwise_reduce): New function. Implement reduction using
12277         pairwise operations.
12278         (neon_expand_vector_init): New function. Expand a (possibly
12279         non-constant) vector initialization.
12280         (neon_vector_mem_operand): New function. Memory operands supported
12281         for quad-word loads/stores to/from ARM or NEON registers. Don't
12282         allow base+offset addressing for core regs.
12283         (neon_struct_mem_operand): New function. Valid mems for NEON
12284         structure moves.
12285         (coproc_secondary_reload_class): Enable NEON registers to be loaded
12286         from neon_vector_mem_operand addresses without a secondary register.
12287         (add_minipool_forward_ref): Handle >8-byte minipool entries.
12288         (add_minipool_backward_ref): Likewise.
12289         (dump_minipool): Likewise.
12290         (push_minipool_fix): Likewise.
12291         (output_move_quad): New function. Output quad-word moves, loads and
12292         stores using ARM registers.
12293         (output_move_vfp): Add support for vectors in VFP (NEON) D
12294         registers.
12295         (output_move_neon): Output a NEON load/store to/from a quadword
12296         register.
12297         (arm_print_operand): Implement new codes:
12298         - 'c' for unadorned integers (without a # sign).
12299         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
12300         mode.
12301         - 'e', 'f' for the low and high D parts of a NEON Q register.
12302         - 'q' outputs a NEON Q register.
12303         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
12304         - 'T' prints NEON opcode features from a coded bitmask.
12305         - 'F' is similar to T, but signed/unsigned codes both print as
12306         'i'.
12307         - 't' is similar to T, but 'u' is printed instead of 'p'.
12308         - 'O' prints 'r' if NEON instruction should perform rounding (as
12309         specified by bitmask), else prints nothing.
12310         - '#' is a punctuation character to stop operand numbers from
12311         running together with following digits in the assembler
12312         strings for instructions (when using mode attributes).
12313         (arm_assemble_integer): Handle extra NEON vector modes. Permute
12314         constant vectors in big-endian mode, where necessary.
12315         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
12316         Handle EI, OI, CI, XI modes.
12317         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
12318         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
12319         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
12320         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
12321         (neon_builtin_type_bits): Add enumeration, one bit for each vector
12322         type.
12323         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
12324         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
12325         to turn v8qi, etc. into bits defined above.
12326         (neon_itype): New enumeration. Classifications of NEON builtins.
12327         (neon_builtin_datum): Define struct. Contains information about
12328         a single builtin (with multiple modes).
12329         (CF): Define helper macro for...
12330         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
12331         modes.
12332         (neon_builtin_data): New array. Define information about builtins
12333         for use during initialization/expansion.
12334         (arm_init_neon_builtins): New function.
12335         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
12336         true.
12337         (neon_builtin_compare): New function.
12338         (locate_neon_builtin_icode): New function. Find an insn code for a
12339         builtin given a function code for that builtin. Also return type of
12340         builtin (NEON_BINOP, NEON_UNOP etc.).
12341         (builtin_arg): New enumeration. Types of arguments for builtins.
12342         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
12343         Takes a variable argument list of builtin_arg types, terminated by
12344         NEON_ARG_STOP.
12345         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
12346         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
12347         (neon_emit_pair_result_insn): New function. Support returning pairs
12348         of vectors via a pointer.
12349         (neon_disambiguate_copy): New function. Set up operands for a
12350         multi-word copy such that registers do not get clobbered.
12351         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
12352         ARM_BUILTIN_NEON_BASE.
12353         (arm_file_start): Set float-abi attribute for NEON.
12354         (arm_vector_mode_supported_p): Enable NEON vector modes.
12355         (arm_mangle_map_entry): New.
12356         (arm_mangle_map): New.
12357         (arm_mangle_vector_type): New.
12358         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
12359         when appropriate.
12360         (TARGET_NEON): New macro. Target supports NEON.
12361         (fputype): Add FPUTYPE_NEON.
12362         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
12363         for vectorization based on command-line arg.
12364         (NEON_REGNO_OK_FOR_NREGS): Define.
12365         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
12366         (VALID_NEON_STRUCT_MODE): Define.
12367         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
12368         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
12369         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
12370         (consttable_16): Add pattern for outputting 16-byte minipool
12371         entries.
12372         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
12373         vec-common.md).
12374         (vec-common.md, neon.md): Include md files.
12375         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
12376         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
12377         (memory_constraint "Ut", "Un", "Us"): Define.
12378         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
12379         (MMX_char): New mode attribute.
12380         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
12381         (*add<mode>3_iwmmxt): New insn pattern.
12382         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
12383         (*sub<mode>3_iwmmxt): New insn pattern.
12384         (mulv4hi3): Rename to...
12385         (*mulv4hi3_iwmmxt): This.
12386         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
12387         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
12388         (uminv4hi3, uminv2si3): Remove. Replace with...
12389         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
12390         (*umin<mode>3_iwmmxt): These.
12391         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
12392         (ashr<mode>3_iwmmxt): This new pattern.
12393         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
12394         (lshr<mode>3_iwmmxt): This new pattern.
12395         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
12396         (ashl<mode>3_iwmmxt): This new pattern.
12397         * config/arm/neon-docgen.ml: New file. Generate documentation for
12398         intrinsics.
12399         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
12400         * config/arm/arm_neon.h: New (autogenerated).
12401         * config/arm/neon-testgen.ml: New file. Generate NEON tests
12402         automatically.
12403         * config/arm/neon.md: New file. Define NEON instructions.
12404         * config/arm/neon.ml: New file. Abstract description of NEON
12405         instructions, used to generate arm_neon.h header, documentation and
12406         tests.
12407         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
12408         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
12409         support.
12410         * doc/extend.texi (ARM Built-in Functions): Rename and remove
12411         extraneous comma.
12412         (ARM NEON Intrinsics): New subsection.
12413         * doc/arm-neon-intrinsics.texi: New (autogenerated).
12414
12415 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
12416
12417         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
12418         prototype.
12419
12420 2007-07-24  Jan Hubicka  <jh@suse.cz>
12421
12422         * regclass.c (move_table): New type.
12423         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
12424         (init_move_cost): Break out from ...
12425         (init_reg_sets_1): ... here; simplify computation of
12426         have_regs-of_mode and contains_reg_of_mode.
12427         (record_reg_classes): Unswitch internal loops.
12428         (copy_cost): Trigger lazy initialization of move cost
12429         (record_address_regs): Likewise.
12430
12431 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
12432
12433         * config/darwin.c (darwin_override_options): Don't force on
12434         flag_var_tracking_uninit when no debug info is requested.
12435
12436 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12437
12438         * cfgloop.c (init_loops_structure): New function.
12439         (flow_loops_find): Create root of the loop tree unconditionally.
12440
12441 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
12442
12443         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
12444
12445 2007-07-24  Jan Hubicka  <jh@suse.cz>
12446
12447         * caller-save.c: Include ggc.h, gt-caller-save.h
12448         (reg_save_code, reg_restore_code): Rename to ...
12449         (cached_reg_save_code, cached_reg_restore_code): ... those.
12450         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
12451         (reg_save_code, reg_restore_code): New functions.
12452         (init_caller_save): Do not intialize
12453         reg_save_code/reg_restore_code tables.
12454         * Makefile.in: (gt-caller-save.h): New.
12455
12456 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12457
12458         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
12459         with the mode of the original operand instead of
12460         integer_one_node.
12461
12462 2007-07-23  Jan Hubicka  <jH@suse.cz>
12463
12464         * i386.c (ix86_secondary_memory_needed): Break out to...
12465         (inline_secondary_memory_needed): ... here.
12466         (ix86_memory_move_cost): Break out to ...
12467         (inline_memory_move_cost): ... here; add support for IN value of 2 for
12468         maximum of input and output; fix handling of Q_REGS on 64bit.
12469         (ix86_secondary_memory_needed): Microoptimize.
12470
12471 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
12472
12473         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
12474         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
12475         stmts_from_loop, known_dependences_p, build_rdg): New.
12476         * tree-data-ref.h: Depends on graphds.h.
12477         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
12478         (build_rdg): Declared.
12479         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
12480
12481 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
12482
12483         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
12484         ccp_min_invariant.
12485
12486 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
12487             Jakub Jelinek  <jakub@redhat.com>
12488
12489         PR middle-end/PR28690
12490         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
12491         EQ compares.
12492         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
12493         and MEM_POINTER operands over REG and MEM operands.
12494         (swap_commutative_operands_p): Change return value to bool.
12495         * rtl.h: Update the corresponding prototype.
12496         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
12497         instead of gen_rtx_PLUS.
12498         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
12499         value to bool.  Change function arguments to rtx's and update code
12500         to match.
12501         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
12502         calls to match the new declaration.
12503         * simplify-rtx.c (simplify_associative_operation): Don't
12504         reorder simplify_binary_operation arguments.
12505
12506 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
12507
12508         * config/mips/mips.c (override_options): Use mips_costs to derive
12509         the default branch cost.
12510         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
12511         than mips_costs.
12512         * config/mips/mips.opt (mbranch-cost=): New option.
12513         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
12514
12515 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
12516
12517         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
12518         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
12519         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
12520         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
12521
12522 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
12523
12524         * config/mips/constraints.md (ks): New constraint.
12525         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
12526         (*add<mode>3_mips16): ...here.
12527
12528 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
12529
12530         * optabs.h (enum optab_index): Add new OTI_signbit.
12531         (signbit_optab): Define corresponding macro.
12532         (enum insn_code signbit_optab[]): Remove array.
12533         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
12534         (expand_copysign_absneg): If back end provides signbit insn, use it
12535         instead of bit operations on floating point argument.
12536         * builtins.c (enum insn_code signbit_optab[]): Remove array.
12537         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
12538         for availability of signbit insn.
12539
12540         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
12541         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
12542         SSE mode is not active.
12543         (isinf<mode>2): Disable for mfpmath=sse,387.
12544
12545 2007-07-22  Ben Elliston  <bje@au.ibm.com>
12546
12547         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
12548         `class' parameter.
12549         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
12550
12551 2007-07-20  Richard Guenther  <rguenther@suse.de>
12552
12553         * tree-cfg.c (verify_expr): COND_EXPRs can have any
12554         integral typed condition.
12555         * tree-ssa.c (useless_type_conversion_p): Do not preserve
12556         booleanness.  Only preserve conversions from a non-base
12557         type to a base type, not in general between types with
12558         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
12559         * tree.def (COND_EXPR): Document that the condition
12560         can be of any integral type.
12561
12562 2007-07-20  Nigel Stephens  <nigel@mips.com>
12563             Richard Sandiford  <richard@codesourcery.com>
12564
12565         * config/mips/mips.h (mips_dwarf_regno): Declare.
12566         (DBX_REGISTER_NUMBER): Remove redundant brackets.
12567         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
12568         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
12569         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
12570         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
12571         (REG_CLASS_NAMES): Update accordingly.
12572         * config/mips/mips.c (mips_dwarf_regno): New array.
12573         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
12574         (mips_subword): Remove special handling for accumulator registers.
12575         (override_options): Initiailize mips_dwarf_regno.  Remove use
12576         of ACC_HI_REG_P.
12577         (mips_swap_registers): New function.
12578         (mips_conditional_register_usage): Swap accumulator registers
12579         around if TARGET_LITTLE_ENDIAN.
12580         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
12581         * config/mips/constraints.md (h, l): Use the endianness to choose
12582         between MD0_REG and MD1_REG.
12583         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
12584         alternative-dependent template.
12585
12586 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
12587
12588         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
12589         no_new_pseudos.
12590
12591 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
12592
12593         * function.c (thread_prologue_and_epilogue_insns): Fix exit
12594         predecessor fallthru flags.
12595
12596 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
12597
12598         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
12599         of compare to the same type.
12600         * cfgloopmanip.c (add_loop): Update information about loop exits.
12601         (loop_version): Remove the innermost loop requirement.
12602         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
12603         to sizetype for pointers.
12604
12605 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
12606
12607         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
12608         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
12609         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
12610
12611         * config/dfp-bit.c: Empty for TFmode conversions.
12612
12613 2007-07-18  Caroline Tice  <ctice@apple.com>
12614         
12615         * var-tracking.c (find_src_status): Check for  COND_EXEC insns
12616         and handle them correctly; check that src is not NULL before
12617         trying to use it.
12618         (find_src_set_src): Likewise.
12619         
12620 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
12621         
12622         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
12623         (struct alignment_context, init_alignment_context): New.
12624         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
12625         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
12626         (XCHAL_HAVE_S32C1I): Likewise.
12627         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
12628         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
12629         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
12630         (ATOMIC, HQI): New macros.
12631         (memory_barrier, *memory_barrier): New.
12632         (sync_lock_releasesi): New.
12633         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
12634         (sync_lock_test_and_set<mode>): New.
12635         (sync_<atomic><mode>): New.
12636         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
12637         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
12638         (xtensa_expand_atomic): New.
12639         
12640 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12641
12642         PR target/30652
12643
12644         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
12645         transformation for builtin ISNORMAL.
12646         (expand_builtin): Handle BUILT_IN_ISNORMAL.
12647         * builtins.def (BUILT_IN_ISNORMAL): New.
12648         * doc/extend.texi: Document isnormal.
12649
12650 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12651
12652         PR target/30652
12653
12654         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
12655         optabs infrastructure.  Provide generic implementation for
12656         FINITE/ISFINITE.
12657         (expand_builtin): Handle FINITE/ISFINITE.
12658         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
12659         (fold_builtin_1): Likewise.
12660
12661         * builtins.def (BUILT_IN_ISFINITE): New.
12662
12663         * doc/extend.texi: Document isfinite.
12664
12665 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12666
12667         PR target/30652
12668         PR middle-end/20558
12669
12670         * builtins.c (expand_builtin_interclass_mathfn): Provide a
12671         generic fallback for isinf.
12672         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
12673         calculation code ...
12674         * real.c (get_max_float): ... to here.
12675         * real.h (get_max_float): New.
12676
12677 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12678
12679         PR middle-end/32668
12680
12681         * builtin-attrs.def (ATTR_TYPEGENERIC,
12682         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
12683
12684         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
12685         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
12686         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
12687         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
12688
12689         * c-common.c (handle_type_generic_attribute): New.
12690         (c_common_attribute_table): Add "type generic".
12691
12692         * c-typeck.c (convert_arguments): Handle "type generic" functions.
12693
12694 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
12695
12696         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
12697         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
12698         properly.
12699
12700 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12701
12702         PR target/32808
12703         * config/cris/cris.c (cris_print_index): Don't use XEXP before
12704         checking that the operand is an expression.
12705
12706 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
12707             Danny Smith  <dannysmith@users.sourceforge.net>
12708
12709         PR/other 30335
12710         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
12711         file mapping object in local namespace if Windows version later
12712         than NT4
12713
12714 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
12715
12716         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
12717         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
12718         arm_cannot_force_const_mem.
12719         (arm_cannot_force_const_mem): New function.
12720         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
12721         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
12722         of arm_tls_referenced_p.
12723         * config/arm/arm.md (movsi): Split out-of-section constants when
12724         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
12725         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
12726
12727 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
12728
12729         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
12730
12731 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
12732
12733         * config/mips/mips.md (*extendqihi2): Convert the destination
12734         to SImode.
12735
12736 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12737
12738         * config/pa/fptr.c: Update license header.
12739         * config/pa/milli64.S: Likewise.
12740
12741 2007-07-17  Nick Clifton  <nickc@redhat.com>
12742
12743         * COPYING_v3: New file.  Contains version 3 of the GNU General
12744         Public License.
12745         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
12746         Lesser General Public License.
12747         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
12748         the GNU General Public License.
12749
12750 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
12751
12752         PR rtl-optimization/32773
12753         * cfglayout.c (force_one_exit_fallthru): New function.
12754         (cfg_layout_finalize): Use it.
12755
12756 2007-07-16  Richard Guenther  <rguenther@suse.de>
12757             Uros Bizjak  <ubizjak@gmail.com>
12758
12759         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
12760         before forcing it to gimple operand.
12761
12762 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
12763             David Ung  <davidu@mips.com>
12764
12765         * config/mips/mips.h (TUNE_24K): Define.
12766         (TUNE_MACC_CHAINS): Add TUNE_24K.
12767         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
12768         imadd.
12769         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
12770         (r74k_int_madd): .. this new reservation.
12771         (define_bypass): Fixed bypasses for r74k_int_madd to use
12772         mips_linked_madd_p.
12773         * config/mips/24k.md (define_bypass): Define new
12774         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
12775
12776 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
12777             Nigel Stephens  <nigel@mips.com>
12778
12779         * config/mips/mips.md: Include 20kc.md.
12780         * config/mips/20kc.md: New file.
12781         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
12782         (mips_adjust_cost): Tweak for 20Kc.
12783         (mips_issue_rate): Likewise.
12784         * config/mips/mips.h (TUNE_20KC): Define.
12785
12786 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
12787
12788         * config/rs6000/rs6000.c (struct processor_cost): Add
12789         cache_line_size, l1_cache_lines, and simultaneous_prefetches
12790         fields.
12791         (*_cost): Add cache information.
12792         (rs6000_override_options): Set cache parameters.
12793
12794 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12795
12796         PR bootstrap/3456
12797         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
12798         * doc/install.texi (mips-sgi-irix6): pthread support works now.
12799
12800 2007-07-16  Paul Brook  <paul@codesourcery.com>
12801
12802         PR target/32753
12803         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
12804         (cirrus_thumb2_movsi_insn): Ditto.
12805
12806 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
12807
12808         * config/rs6000/darwin-fallback.c (interpret_libc): Change
12809         CR2_REGNO to R_CR2.
12810
12811 2007-07-15  Andrew Haley  <aph@redhat.com>
12812
12813         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
12814         before looking in the context.
12815
12816 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12817
12818         PR middle-end/32398
12819         PR middle-end/32769
12820         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
12821         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
12822         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
12823         (pa_output_function_prologue): Use rp_saved and
12824         current_function_is_leaf to generate .CALLINFO statement.
12825         (hppa_expand_prologue): Set rp_saved.
12826         (hppa_expand_epilogue): Use rp_saved.
12827         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
12828         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
12829
12830 2007-07-14  Dirk Mueller  <dmueller@suse.de>
12831
12832         * omega.c (coalesce): Fix memory leak on early exit.
12833         * matrix-reorg.c (check_allocation_function): Likewise.
12834         * tree-vect-transform.c (vect_get_new_vect_var): free result
12835         of concat().
12836         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
12837         pass pointer to edge vector
12838         (partition_hot_cold_basic_blocks): Fix memory leak.
12839         * collect2.c (prefix_from_string): Free temporary storage.
12840         * reload1.c (fixup_abnormal_edges): Free sbitmap.
12841
12842 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
12843
12844         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
12845         (DO_GLOBAL_DTORS_BODY): Likewise.
12846
12847 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
12848             Nigel Stephens  <nigel@mips.com>
12849
12850         * config/mips/mips.c (mips_classify_symbol): Don't return
12851         SYMBOL_SMALL_DATA for constant pool addresses if
12852         TARGET_EMBEDDED_DATA is true.
12853
12854 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
12855
12856         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
12857         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
12858         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
12859         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
12860         __builtin_ia32_storehps, __builtin_ia32_storelps,
12861         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
12862         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
12863         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
12864         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
12865         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
12866         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
12867         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
12868         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
12869         using def_builtin_const.
12870
12871 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
12872
12873         PR tree-optimization/32705
12874         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
12875         (simplify_binary_expression): Use SSA_VAL consistently.
12876
12877 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
12878
12879         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
12880         (SPEFSCR_REGNO): Delete definition.
12881         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
12882         COUNT_REGISTER_REGNUM -> CTR_REGNO.
12883         * config/rs6000/rs6000.h: Do not define *_REGNO.
12884         LINK_REGISTER_REGNUM -> LR_REGNO.
12885         COUNT_REGISTER_REGNUM -> CTR_REGNO.
12886         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
12887         COUNT_REGISTER_REGNUM -> CTR_REGNO.
12888         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
12889         R_VRSAVE, R_VSCR. Use them.
12890         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
12891         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
12892         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
12893         * config/rs6000/aix.h: Define R_LR.  Use it.
12894         
12895 2007-07-13  Caroline Tice  <ctice@apple.com>
12896         
12897         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
12898         flag_var_tracking is explicitly turned off (i.e. when variable
12899         tracking is not feasible); otherwise, turn flag_var_tracking on when
12900         flag_var_tracking_uninit is on.
12901         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
12902         note definitions, to allow recording of initialization status in the
12903         notes.
12904         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
12905         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
12906         determine if two note locations are equal.
12907         (output_loc_list): Don't output list entries whose start & end labels
12908         are the same.
12909         (reg_loc_descriptor): Add parameter for initialization status; pass it
12910         to other loc descriptor functions.
12911         (one_reg_loc_descriptor): Add parameter for initialization status;
12912         check its value and add DW_OP_GNU_uninit to returned loc descr if
12913         appropriate.
12914         (multiple_reg_loc_descriptor): Add parameter for initialization
12915         status;
12916         pass init status argument to other loc descriptor functions; check
12917         value of intialization parameter and add DW_OP_GNU_uninit to returned
12918         loc descr if appropriate.
12919         (based_loc_descr): Add parameter for initialization status; add new
12920         variable for return value; check value of initialization parameter and
12921         add DW_OP_GNU_uninit to returned loc descr if appropriate.
12922         (concatn_mem_loc_descriptor): Add parameter for initialization status;
12923         pass init status argument to other loc descriptor functions; check
12924         value of intialization parameter and add DW_OP_GNU_uninit to returned
12925         loc descr if appropriate.
12926         (mem_loc_descriptor): Likewise.
12927         (concat_loc_descriptor): Likewise.
12928         (concatn_loc_descriptor): Likewise.
12929         (loc_descriptor): Add parameter for initialization status; pass it as
12930         argument to other loc descriptor function calls.
12931         (loc_descriptor_from_tree_1): Add appropriate initialization status
12932         to loc descriptor function calls.
12933         (add_location_or_const_value_attribute): Get initialization status
12934         from VAR_LOCATION note; add initialization status to loc descriptor
12935         function calls.
12936         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
12937         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
12938         status is uninitialized, add "[uninint]" to output.
12939         * common.opt (fvar-tracking-uninit): New option, similar to
12940         fvar-tracking, to turn on tracking of uninitialized variables; creates
12941         a new global flag, flag_var_tracking_uninit.
12942         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
12943         (enum var_init_status): New type, for var initialization status field.
12944         * var-tracking.c (struct location_chain_def): Two new fields, init,
12945         for initialization status, and set_src for the assignment value expr.
12946         (unshare_variable): New parameter for initialization status;
12947         initialize new init and set_src fields.
12948         (var_reg_set): New parameters for initialization status and value;
12949         pass them to set_variable_part.
12950         (var_mem_set): Likewise.
12951         (get_init_value): New function.
12952         (var_reg_delete_and_set): New initialization status & value
12953         parameters; add call to get_init_value if status is unknown; pass new
12954         parameters to clobber_variable_part and var_reg_set.
12955         (var_mem_delete_and_set): Likewise.
12956         (var_reg_delete): Pass null set_src value to clobber_variable_part.
12957         (var_mem_delete): Likewise.
12958         (variable_union): Pass status to unshare_variable; initialize new init
12959         and set_src fields. If flag_var_tracking_uninit is not set, force
12960         status to initialized.
12961         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
12962         used later to get the set_src value.
12963         (find_src_status): New function.
12964         (find_src_set_src): New function.
12965         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
12966         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
12967         MO_SET, get set_src value and pass it to var_reg_delete_and_set
12968         and var_mem_delete_and_set.
12969         (dump_variable): Print out "[uninit]" if appropriate.
12970         (set_variable_part): Add new initialization and set_src parameters;
12971         pass status to unshare_variable; set node->init and node- >set_src
12972         fields and modify slot in hash table appropriately; save the init and
12973         set_src values if appropriate and assign to the new node.
12974         (clobber_variable_part): New set_src parameter; if two nodes have
12975         same variable and same location but different set_src (assignment)
12976         values, clobber old node.
12977         (delete_variable_part): Pass init status to unshare_variable.
12978         (emit_note_insn_var_location): Add initialized var; assign var's init
12979         status to new 'initialized'; pass new init status field to calls to
12980         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
12981         status to initialized.
12982         (emit_notes_in_bb): Pass initialization status to calls to
12983         var_reg_set, var_mem_set, var_reg_delete_and_set and
12984         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
12985         var_reg_delete_and_set and var_mem_delete_and_set; call
12986         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
12987         make up for change in add_stores.
12988         (vt_add_function_parameters): Add status to calls to
12989         set_variable_part.
12990         * config/darwin.c (darwin_override_options): Turn on uninitialized
12991         tracking automatically, if var_tracking is on and the system is
12992         10.5 or higher.
12993         
12994 2007-07-13  Sa Liu  <saliu@de.ibm.com>
12995
12996         * config.gcc: Add options for arch and tune on SPU.
12997         * config/spu/predicates.md: Add constant operands 0 and 1.
12998         * config/spu/spu-builtins.def: Add builtins for double precision 
12999         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
13000         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
13001         spu_testsv.
13002         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
13003         a CELLEDP target.
13004         * config/spu/spu-protos.h: Add new function prototypes. 
13005         * config/spu/spu.c (spu_override_options): Check options -march and
13006         -mtune.
13007         (spu_comp_icode): Add comparison code for DFmode and vector mode.
13008         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
13009         mode comparison.
13010         (spu_const_from_int): New.  Create a vector constant from 4 ints.
13011         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
13012         (spu_emit_vector_compare): New.  Emit vector compare.
13013         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
13014         * config/spu/spu.h: Add options -march and -mtune.  Define processor
13015         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
13016         CANONICALIZE_COMPARISON.
13017         * config/spu/spu.md: Add new insns for double precision compare
13018         and double precision vector compare.  Add vcond and smax/smin patterns
13019         to enable DFmode vector conditional expression.
13020         * config/spu/spu.opt: Add options -march and -mtune.
13021         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
13022         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
13023         both CELL and CELLEDP targets: spu_testsv.
13024         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
13025         values.
13026
13027 2007-07-13  Richard Guenther  <rguenther@suse.de>
13028
13029         PR tree-optimization/32721
13030         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
13031         TREE_THIS_VOLATILE on the folded reference.
13032         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
13033         if the array reference has TREE_THIS_VOLATILE set.
13034
13035 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
13036
13037         PR other/32188
13038         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
13039
13040 2007-07-13  Andreas Schwab  <schwab@suse.de>
13041
13042         * gengtype-lex.l: Allow declarations to be indented.
13043
13044 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
13045
13046         * ginclude/tgmath.h: New.
13047         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
13048         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
13049         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
13050         * configure: Regenerate.
13051
13052 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
13053
13054         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
13055         correct index when setting register save state for xd
13056         registers.
13057
13058 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
13059
13060         * config/sh/sh.c (mark_use): Remove.
13061
13062 2007-07-12  Paul Brook  <paul@codesourcery.com>
13063
13064         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
13065         reg does not overlap return value.
13066
13067 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
13068
13069         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
13070         (set_expression_vuses): Ditto.
13071         (init_pre): Initialize expression_vuses.
13072
13073 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
13074
13075         * config/i386/sse.md (storentdf, storentsf): New.
13076
13077 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
13078
13079         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
13080         FUNCTION_DECL.
13081         * tree.c (build_decl_stat): Move code from here...
13082         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
13083         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
13084         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
13085         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
13086         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
13087         FUNCTION_BOUNDARY.
13088
13089 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
13090             Devang Patel  <dpatel@apple.com>
13091
13092         PR tree-optimization/25413
13093         * targhooks.c (default_builtin_vector_alignment_reachable): New.
13094         * targhooks.h (default_builtin_vector_alignment_reachable): New.
13095         * tree.h (contains_packed_reference): New.
13096         * expr.c (contains_packed_reference): New.
13097         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
13098         (vect_enhance_data_refs_alignment): Call
13099         vector_alignment_reachable_p.
13100         * target.h (vector_alignment_reachable): New builtin.
13101         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
13102         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
13103         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
13104
13105 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
13106
13107         * target.h (builtin_vectorization_cost): Add new target builtin.
13108         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
13109         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
13110         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
13111         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
13112         uninitialized variables.
13113         * tree-vect-transform.c (cost_for_stmt): New function.
13114         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
13115         using cost 1 for all scalar stmts. Be less conservative when
13116         estimating the number of prologue/epulogue iterations. Call
13117         targetm.vectorize.builtin_vectorization_cost. Return
13118         min_profitable_iters-1.
13119         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
13120         initialization cost instead of TARG_VEC_STMT_COST. Use
13121         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
13122         epilogue code. Fix epilogue cost computation.
13123         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
13124         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
13125         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
13126         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
13127         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
13128         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
13129
13130 2007-07-12  Richard Guenther  <rguenther@suse.de>
13131
13132         * gimplify.c (gimplify_conversion): Make sure that the result
13133         from maybe_fold_offset_to_reference is trivially convertible
13134         to the desired type before doing the simplification.
13135         (gimplify_expr): Likewise.
13136         * fold-const.c (fold_binary): Use the correct types for
13137         building the simplified expression.
13138
13139 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
13140
13141         PR rtl-optimization/32729
13142         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
13143         that fallthru to exit.
13144
13145 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
13146
13147         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
13148         (symDTPOFF2reg): Likewise.
13149
13150 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
13151
13152         PR tree-optimization/32663
13153         
13154         * tree.h (VALUE_HANDLE_VUSES): Remove.
13155         (struct tree_value_handle): Remove vuses.
13156
13157         * tree-vn.c (create_value_handle_for_expr): Don't set
13158         VALUE_HANDLE_VUSES. 
13159
13160         * tree-ssa-pre.c (expression_vuses): New.
13161         (alloc_expression_id): Set up expression_vuses.
13162         (get_expression_vuses): New.
13163         (set_expression_vuses): Ditto.
13164         (clear_expression_ids): Modify for expression_vuses.
13165         (phi_translate_1): Ditto.
13166         (phi_translate_set): Ditto.
13167         (value_dies_in_block_x): Ditto
13168         (valid_in_sets): Ditto.
13169         (add_to_sets): Ditto.
13170         (find_existing_value_expr): Ditto.
13171         (create_value_handle_for_expr): Ditto.
13172         (make_values_for_stmt): Ditto.
13173         (vuse_equiv): Remove.
13174
13175 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
13176
13177         * Makefile.in (mostlyclean): Remove object files.
13178
13179 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
13180
13181         * toplev.c (no_new_pseudos): Deleted.
13182         * rtl.h (no_new_pseudos): Deleted.
13183         * tree-pass.h (pass_no_new_pseudos): Deleted. 
13184         * passes.c (pass_no_new_pseudos): Deleted.
13185         * final.c (rest_of_clean_state): Removed no_new_pseudos.
13186         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
13187         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
13188         reload_completed.
13189         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
13190         * rtlhooks.c (gen_lowpart_general): Ditto.
13191         * optabs.c (prepare_operand): Ditto.
13192         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
13193         no_new_pseudos.
13194         * modulo-sched.c (rest_of_handle_sms): Ditto.
13195         * see.c (rest_of_handle_see): Ditto.
13196         * ifcvt.c (if_convert): Ditto.
13197         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
13198         reload_completed.
13199         * init-regs.c (gate_initialize_regs): Deleted set of
13200         no_new_pseudos.
13201         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
13202         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
13203         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
13204         
13205 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
13206
13207         PR target/32661
13208         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
13209         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
13210         (*vec_extractv2di_1_rex64): New insn pattern.
13211
13212 2007-07-11  David Daney  <ddaney@avtrex.com>
13213
13214         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
13215         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
13216         for SIGNAL_UNWIND_RETURN_COLUMN.
13217         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
13218         (DWARF_FRAME_REGNUM): Rewrite.
13219         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
13220
13221 2007-07-11  Nick Clifton  <nickc@redhat.com>
13222
13223         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
13224         delta and use gen_int_mode in place of GET_INT instead.
13225
13226 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
13227
13228         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
13229         and letter field.
13230
13231 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
13232
13233         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
13234         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
13235         types or not.
13236         * params.h (VERIFY_CANONICAL_TYPES): Remove.
13237         (USE_CANONICAL_TYPES): New.
13238         * doc/invoke.texi (verify-canonical-types): Remove.
13239         (use-canonical-types): Add.
13240
13241 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
13242
13243         * config/spu/spu.c (spu_optimization_options): Remove setting of
13244         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
13245         (spu_override_options): Move it here.
13246
13247 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
13248
13249         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
13250         * config/mips/mips.c (mips_cpu_info_table): Mention
13251         MIPS_ISA_LEVEL_SPEC in the comment.
13252
13253 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
13254
13255         PR tree-optimization/32713
13256         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
13257
13258 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
13259
13260         PR middle-end/30482
13261         * c-opts.c (c_common_post_options): Do not change flag_complex_method
13262         conditional to flag_isoc99.
13263         (c_common_init_options): Do it here, unconditionally.
13264
13265 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
13266
13267         PR tree-optimization/32589
13268         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
13269         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
13270         * tree-ssa-propagate.c (valid_gimple_expression_p): New
13271         predicate, extracted from...
13272         (set_rhs): ...here.  Call it for the expression on entry.
13273         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
13274         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
13275         (simplify_binary_expression): Use valid_gimple_expression_p
13276         to validate the simplification.
13277         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
13278
13279 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
13280
13281         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
13282         DWARF2_DEBUG on 32 bit target too.
13283         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
13284
13285 2007-07-11  Nick Clifton  <nickc@redhat.com>
13286
13287         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
13288         version for 64-bit hosts.
13289
13290 2007-07-10  David Daney  <ddaney@avtrex.com>
13291
13292         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
13293         predicate.
13294         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
13295         call.
13296         * config/mips/mips.c (mips_expand_synci_loop): New function.
13297         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
13298         (UNSPEC_RDHWR): Same.
13299         (UNSPEC_SYNCI): Same.
13300         (UNSPEC_SYNC): Same.
13301         (clear_cache): New expand.
13302         (sync): New insn.
13303         (synci): Same.
13304         (rdhwr): Same.
13305         (clear_hazard): Same.
13306         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
13307         function.
13308         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
13309         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
13310
13311 2007-07-10  Ian Lance Taylor  <iant@google.com>
13312
13313         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
13314         no_new_pseudos.
13315
13316 2007-07-10  David Daney  <ddaney@avtrex.com>
13317
13318         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
13319         * builtins.c (expand_builtin___clear_cache): New function.
13320         (expand_builtin): Call expand_builtin___clear_cache for
13321         BUILT_IN_CLEAR_CACHE case.
13322         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
13323         * doc/md.texi (clear_cache): Document new instruction pattern.
13324         * testsuite/gcc.dg/builtins-64.c: New test.
13325
13326 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
13327
13328         * config/cris/cris.md ("movsi"): Fix typo in last change.
13329
13330 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
13331
13332         PR 32617
13333         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
13334         FUNCTION_DECLs.
13335         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
13336         * varasm.c (assemble_start_function): Honor DECL_ALIGN
13337         for FUNCTION_DECLs.  Don't use align_functions_log if
13338         DECL_USER_ALIGN.
13339         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
13340         even for FUNCTION_DECLs.
13341         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
13342         FUNCTION_DECLs.
13343         * tree.h (DECL_ALIGN): Update for new location of 'align'.
13344         (DECL_FUNCTION_CODE): Update for new location and name of
13345         'function_code'.
13346         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
13347         (struct tree_decl_common): Move 'align' and 'off_align' out
13348         of union, ensure they're still on a 32-bit boundary.  Remove
13349         other fields in union 'u1'.
13350         (struct tree_function_decl): Add field 'function_code' replacing
13351         'u1.f' in tree_decl_common.
13352         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
13353         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
13354         (Variable Attributes): Cross-reference 'aligned' attribute
13355         to Function Attributes.
13356         * flags.h (force_align_functions_log): Delete.
13357         * toplev.c (force_align_functions_log): Delete.
13358
13359 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
13360
13361         PR target/32708
13362         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
13363         (*vec_concatv2di_rex): New insn pattern.
13364
13365 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13366
13367         PR target/32538
13368         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
13369
13370 2007-07-10  Ian Lance Taylor  <iant@google.com>
13371
13372         Replace no_new_pseudos in backends.
13373         * rtl.h (can_create_pseudo_p): Define.
13374         * config/darwin.c (machopic_indirect_data_reference): Use
13375         can_create_pseudo_p () instead of no_new_pseudos.
13376         (machopic_indirect_data_reference): Likewise.
13377         (machopic_legitimize_pic_address): Likewise.
13378         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
13379         (alpha_emit_set_const_1): Likewise.
13380         (alpha_emit_set_const): Likewise.
13381         (alpha_emit_conditional_move): Likewise.
13382         (alpha_split_conditional_move): Likewise.
13383         * config/alpha/alpha.md (various splitters): Likewise.
13384         (movti): Likewise.
13385         * config/arm/arm.c (legitimize_pic_address): Likewise.
13386         (arm_load_pic_register): Likewise.
13387         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
13388         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
13389         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
13390         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
13391         * config/cris/cris.md (movsi): Likewise.
13392         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
13393         (symGOTOFF2reg_hilo): Likewise.
13394         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
13395         * config/h8300/h8300.md (insv, extzv): Likewise.
13396         * config/i386/i386.c (ix86_expand_move): Likewise.
13397         (ix86_expand_vector_move): Likewise.
13398         (ix86_prepare_fp_compare_args): Likewise.
13399         (ix86_expand_carry_flag_compare): Likewise.
13400         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
13401         (tls_dynamic_gnu2_combine_32): Likewise.
13402         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
13403         * config/ia64/ia64.c (ia64_expand_move): Likewise.
13404         (ia64_expand_movxf_movrf): Likewise.
13405         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
13406         (m32c_split_move): Likewise.
13407         (m32c_expand_insv): Likewise.
13408         * config/m68k/m68k.md (movsi): Likewise.
13409         * config/mips/mips.c (mips_force_temporary): Likewise.
13410         (mips_split_symbol): Likewise.
13411         (mips_move_integer): Likewise.
13412         (mips_legitimize_const_move): Likewise.
13413         * config/mn10300/mn10300.md (movsi): Likewise.
13414         * config/pa/pa.c (emit_move_sequence): Likewise.
13415         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
13416         (rs6000_got_register): Likewise.
13417         (create_TOC_reference): Likewise.
13418         (rs6000_machopic_legitimize_pic_address): Likewise.
13419         * config/rs6000/rs6000.md (add<mode>3): Likewise.
13420         (various splitters): Likewise.
13421         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
13422         (movsi_got): Likewise.
13423         * config/s390/s390.c (emit_symbolic_move): Likewise.
13424         * config/s390/s390.md (movhi, movqi): Likewise.
13425         (load_multiple, store_multiple): Likewise.
13426         * config/score/score.c (score_force_temporary): Likewise.
13427         * config/sh/sh.c (prepare_move_operands): Likewise.
13428         (prepare_cbranch_operands): Likewise.
13429         (emit_fpu_switch): Likewise.
13430         (fpscr_set_from_mem): Likewise.
13431         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
13432         (adddi3, subsi3): Likewise.
13433         (various splitters): Likewise.
13434         (divsi_inv_fp_combine): Likewise.
13435         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
13436         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
13437         (sne): Likewise.
13438         * config/sh/predicates.md (xor_operand): Likewise.
13439         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
13440         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
13441         (movdi_pic_label_ref): Likewise.
13442         * config/spu/spu.c (spu_split_immediate): Likewise.
13443         * config/alpha/alpha.md (various splitters): Remove test
13444         !no_new_pseudos || reload_completed.
13445         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
13446         no_new_pseudos.
13447         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
13448         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
13449         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
13450         * config/score/score.c (th_output_mi_thunk): Likewise.
13451         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
13452         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
13453
13454 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
13455
13456         PR rtl-optimization/32664
13457         * mode-switching.c (create_pre_exit): Skip barrier insns.
13458
13459 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
13460
13461         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
13462         force_gimple_operand_bsi.
13463         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
13464         rewrite_use_compare): Ditto.
13465         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
13466         Ditto.
13467         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
13468         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
13469         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
13470         * tree-profile.c (prepare_instrumented_value,
13471         tree_gen_interval_profiler, tree_gen_pow2_profiler,
13472         tree_gen_one_value_profiler, tree_gen_ic_profiler,
13473         tree_gen_ic_func_profiler, tree_gen_average_profiler,
13474         tree_gen_ior_profiler): Ditto.
13475         * tree-ssa-reassoc.c (negate_value): Ditto.
13476         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
13477         Use force_gimple_operand_bsi.
13478         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
13479         * tree-if-conv.c (add_to_dst_predicate_list,
13480         find_phi_replacement_condition): Ditto.
13481         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
13482         Call mark_symbols_for_renaming for new statements.
13483         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
13484
13485 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
13486
13487         * cfghooks.c (remove_edge): New function.
13488         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
13489         loop exit rescans.
13490         * cfghooks.h (remove_edge): Declare.
13491         * cfg.c (remove_edge): Renamed to remove_edge_raw.
13492         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
13493
13494 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
13495
13496         * optabs.h: Added declaration for signbit_optab.  
13497         * optabs.c: (init_optabs): Added initialization for signbit_optab.
13498         * genoptinit.c (optabs): Added entry for signbit insns.  
13499         * builtins.c (expand_builtin_signbit): Added code to use a signbit
13500         insn, if available.  
13501         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
13502         * config/s390/s390.md (signbit<mode>2): New expander.  
13503
13504 2007-07-09  Richard Guenther  <rguenther@suse.de>
13505
13506         PR middle-end/32698
13507         * fold-const.c (fold_plusminus_mult_expr): Move constant
13508         arguments second to allow decomposing.
13509
13510 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
13511
13512         Revert:
13513         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
13514         PR debug/23551
13515         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
13516         Disregard DECL_FROM_INLINE.
13517
13518 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
13519
13520         PR target/27855
13521         * doc/invoke.texi: Add ftree-reassoc flag.
13522         * common.opt (ftree-reassoc): New flag.
13523         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
13524         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
13525
13526 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
13527
13528         PR tree-optimization/32681
13529         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
13530         saved in second_edge->aux when first_bb is a loop header.
13531
13532 2007-07-09  Jan HUbicka  <jh@suse.cz>
13533
13534         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
13535
13536 2007-07-09  Richard Guenther  <rguenther@suse.de>
13537
13538         * c-decl.c (start_function): Do not promote return type.
13539
13540 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
13541
13542         * function.c (do_warn_unused_parameter): Do not warn if
13543         TREE_NO_WARNING is set.
13544
13545 2007-07-08  Andreas Schwab  <schwab@suse.de>
13546
13547         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
13548
13549 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
13550
13551         Revert this patch:
13552         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
13553
13554         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
13555         apply to assembly language, too.
13556         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
13557
13558 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
13559
13560         Revert (note the sccvn portions are *not* reverted)
13561         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
13562
13563         Fix PR tree-optimization/23488
13564
13565         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
13566         handles.
13567         * tree-flow-inline.h (get_value_handle): Ditto.
13568         * tree-ssa-pre.c (decl_vh_map): New.
13569         (decl_node_pool): New.
13570         (can_value_number_operation): Support DECL_P.
13571         (can_PRE_operation): Ditto.
13572         (create_expression_by_pieces): Ditto.
13573         (find_existing_value_expr): Modify to differnetiate between
13574         addressing and top level.
13575         (create_value_handle_for_expr): Handle DECL's.
13576         (poolify_tree): Ditto.
13577         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
13578         (make_values_for_stmt): Handle DECL's properly.
13579         (init_pre): Reorg to not init useless things during FRE.
13580         (fini_pre): Ditto.
13581         * tree-flow.h: Include pointer-set.h.
13582         (decl_vh_map): Declare.
13583         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
13584
13585 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
13586
13587         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
13588         the constraint description.
13589         * doc/md.texi: Update documentation of AVR constraints.
13590
13591 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
13592
13593         * auto-inc-dec.c, config/arm/arm.c,
13594         config/m32r/constraints.md, config/mips/mips.md,
13595         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
13596         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
13597         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
13598         typos.  Follow spelling conventions.
13599         * doc/invoke.texi, doc/rtl.texi: Fix typos.
13600
13601         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
13602         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
13603
13604         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
13605         realloc_vuse): Remove.
13606         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
13607         and realloc_vuse.
13608
13609 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
13610
13611         Fix PR tree-optimization/23488
13612
13613         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
13614         (try_to_simplify): Ditto.
13615         (visit_use): Ditto.
13616         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
13617         handles.
13618         * tree-flow-inline.h (get_value_handle): Ditto.
13619         * tree-ssa-pre.c (decl_vh_map): New.
13620         (decl_node_pool): New.
13621         (can_value_number_operation): Support DECL_P.
13622         (can_PRE_operation): Ditto.
13623         (create_expression_by_pieces): Ditto.
13624         (find_existing_value_expr): Modify to differnetiate between
13625         addressing and top level.
13626         (create_value_handle_for_expr): Handle DECL's.
13627         (poolify_tree): Ditto.
13628         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
13629         (make_values_for_stmt): Handle DECL's properly.
13630         (init_pre): Reorg to not init useless things during FRE.
13631         (fini_pre): Ditto.
13632         * tree-flow.h: Include pointer-set.h.
13633         (decl_vh_map): Declare.
13634         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
13635                 
13636 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
13637
13638         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
13639         apply to assembly language, too.
13640         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
13641
13642 2007-07-06  Ian Lance Taylor  <iant@google.com>
13643             Zack Weinberg  <zackw@panix.com>
13644
13645         PR middle-end/32441
13646         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
13647
13648 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
13649
13650         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
13651         (prefetch): Likewise if "pref" would be used.
13652
13653 2007-07-06  Josh Conner  <jconner@apple.com>
13654
13655         PR middle-end/32602
13656         PR middle-end/32603
13657         * calls.c (store_one_arg): Handle arguments which are partially
13658         on the stack when detecting argument overlap.
13659
13660 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
13661
13662         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
13663         chosen during find_reloads.
13664
13665 2007-07-06  Richard Guenther  <rguenther@suse.de>
13666
13667         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
13668         TYPE_ARG_TYPES for verification of argument types.  Use
13669         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
13670         parameters as variable arguments.
13671
13672 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
13673
13674         * libgcc2.h (word_type): Type definition removed.
13675         (cmp_return_type, shift_count_type): Type definitions added.
13676         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
13677         replaced with shift_count_type.
13678         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
13679         cmp_return_type.
13680         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
13681         changed from word_type to Wtype.
13682         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
13683         replaced with shift_count_type.
13684         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
13685         cmp_return_type.
13686         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
13687         and libgcc_shift_count attribute added.
13688         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
13689         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
13690         (TARGET_INITIALIZER): New target hooks added.
13691         * targhooks.c (default_libgcc_cmp_return_mode,
13692         default_libgcc_shift_count_mode): Default implementations for the new
13693         target hooks added.
13694         * targhooks.h (default_libgcc_cmp_return_mode,
13695         default_libgcc_shift_count_mode): Function prototypes added.
13696         * target.h (struct gcc_target): Fields for the new target hooks added.
13697         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
13698         as library call.
13699         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
13700         library call.
13701
13702         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
13703         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
13704
13705         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
13706         s390_libgcc_shift_count_mode): Functions added.
13707         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
13708         Target hooks defined.
13709
13710 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
13711
13712         * config/mips/mips.c (compute_frame_size): Restore the original
13713         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
13714         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
13715         Document why the difference is needed.
13716
13717 2007-07-06  Richard Guenther  <rguenther@suse.de>
13718
13719         * c-common.c (boolean_increment): Use correctly typed
13720         constant.
13721
13722 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
13723
13724         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
13725         the topmost argument register is not also included in the save mask.
13726         (mips16e_collect_argument_save_p): Take a pointer to the argument
13727         register, rather than a pointer to the number of arguments.
13728         (mips16e_collect_argument_saves): Only include argument saves
13729         that aren't in the register mask.
13730
13731 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
13732
13733         PR rtl-optimization/32450
13734         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
13735         to ensure that instructions are not moved into the prologue when
13736         profiling is on.  Remove unused prologue_end variable.
13737         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
13738         as a scheduling barrier.
13739
13740 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
13741
13742         PR debug/23551
13743         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
13744         Disregard DECL_FROM_INLINE.
13745
13746 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
13747
13748         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
13749         IORing with a constant.
13750
13751 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
13752
13753         PR rtl-optimization/32475
13754         * df-scan.c (df_def_record_1): Add a use of the stack pointer
13755         for every definition of the stack pointer.
13756
13757 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
13758
13759         * arm.c (vfp3_const_double_index): Copy signed results of
13760         REAL_VALUE_TO_INT into unsigned vars.
13761
13762 2007-07-05  Richard Guenther  <rguenther@suse.de>
13763
13764         PR middle-end/32639
13765         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
13766         FUNCTION_TYPE.
13767         * tree-ssa.c (useless_type_conversion_p): Check canonical
13768         types early.
13769
13770 2007-07-05 Anatoly Sokolov <aesok@post.ru>
13771
13772         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
13773         zero_extendhisi2): Change to define_insn_and_split. 
13774         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
13775
13776 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
13777
13778         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
13779         pass_match_asm_constraints): New.
13780         * passes.c (init_optimization_passes): Add new pass.
13781         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
13782         * function.h (struct function): Add has_asm_statement bit.
13783         (current_function_has_asm_statement): New.
13784         * tree-pass.h (pass_match_asm_constraints): New.
13785
13786 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
13787
13788         * config/mips/mips.c (mips_file_start): Avoid declaration
13789         after code.
13790
13791 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
13792
13793         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
13794
13795 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
13796
13797         * rtl.def (NOTE): Change print format string to print
13798         operand 5 as a note insn name.
13799
13800 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
13801             David Ung  <davidu@mips.com>
13802
13803         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
13804         * doc/invoke.texi: (MIPS Options): Document them.
13805
13806 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
13807             David Ung  <davidu@mips.com>
13808
13809         Add support for SmartMIPS ASE.
13810
13811         * optabs.c (expand_binop_directly): New, broken out from...
13812         (expand_binop): Here.  Make it try rotating in the other
13813         direction even when the second operand isn't constant.
13814         * config/mips/mips.md (*lwxs): New.
13815         * config/mips/mips.opt (msmartmips): New.
13816         * config/mips/mips.c (mips_lwxs_address_p): New.
13817         (mips_rtx_costs): Make it recognize scaled indexed addressing.
13818         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
13819         __mips_smartmips when compiling for TARGET_SMARTMIPS.
13820         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
13821         (ISA_HAS_LWXS): New.
13822         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
13823         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
13824         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
13825         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
13826         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
13827         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
13828         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
13829
13830 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
13831
13832         * tree-vectorizer.c (new_loop_vec_info): Initialize
13833         LOOP_VINFO_COST_MODEL_MIN_ITERS.
13834         * tree-vectorizer.h (_loop_vec_info): Added new filed
13835         min_profitable_iters.
13836         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
13837         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
13838         * tree-vect-analyze.c (vect_analyze_operations): Set
13839         LOOP_VINFO_COST_MODEL_MIN_ITERS.
13840         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
13841         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
13842         Fix calculation of peel_iters_prologue. Move consideration of epilogue
13843         and prologue cost to after they are computed.
13844         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
13845         TARG_VEC_STMT_COST.
13846         (vect_model_simple_cost): Takes additional argument dt. Consider cost
13847         of creating vectors from scalars according to dt.
13848         (vect_model_store_cost): Likewise.
13849         (vectorizable_call): Use dt array instead of scalar dt. Call
13850         vect_model_simple_cost with additional argument dt.
13851         (vectorizable_assignment): Likewise.
13852         (vectorizable_operation): Likewise.
13853         (vectorizable_type_demotion): Likewise.
13854         (vectorizable_type_promotion): Likewise.
13855         (vectorizable_store): Use dt array instead of scalar dt. Call
13856         vect_model_store_cost with additional argument dt.
13857         (vect_do_peeling_for_loop_bound): Don't call
13858         vect_estimate_min_profitable_iters. Instead, lookup
13859         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
13860         "may not be profitable".
13861
13862 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
13863
13864         PR testsuite/32014
13865         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
13866         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
13867         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
13868         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
13869
13870 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
13871
13872         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
13873         addressing modes cheaper.
13874
13875 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
13876
13877         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
13878         (dw_ranges_struct): Rename block_num to num.  Adjust.
13879         (dw_ranges_by_label_struct): New.
13880         (ranges_by_label, ranges_by_label_allocated,
13881         ranges_by_label_in_use): New variables.
13882         (add_ranges_num): Factored most of the code out of...
13883         (add_ranges): ... this one.  Rewrite in terms of the former.
13884         (add_ranges_by_labels): New.
13885         (output_ranges): Output by-label ranges.
13886         (dwarf2out_finish): Output range for multiple-section
13887         compile_unit.  Output standard DW_AT_low_pc in addition to
13888         unexpected DW_AT_entry_pc.
13889
13890 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
13891
13892         PR tree-optimization/32604
13893         PR tree-optimization/32606
13894
13895         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
13896         (compute_antic_safe): Removed.
13897         (ANTIC_SAFE_LOADS): Ditto.
13898         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
13899         (execute_pre): Don't call compute_antic_safe.
13900         (vuse_equiv): New function.
13901         (make_values_for_stmt): Use it
13902         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
13903         not always true.
13904
13905 2007-07-04 Anatoly Sokolov <aesok@post.ru>
13906
13907         PR target/31331
13908         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
13909         rather than a decl. 
13910         (avr_attribute_table): Make "naked" attribute apply to function types
13911         rather than to decls.
13912         (avr_handle_fntype_attribute): New function.
13913
13914 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
13915
13916         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
13917         after \.
13918
13919 2007-07-04  David Ung  <davidu@mips.com>
13920             Joseph Myers  <joseph@codesourcery.com>
13921
13922         * config/mips/mips.md (type): Add logical, signext and move.
13923         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
13924         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
13925         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
13926         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
13927         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
13928         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
13929         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
13930         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
13931         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
13932         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
13933         movv2sf_hardfloat_64bit): Use the new types.
13934         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
13935         *movdf_softfloat, *movdf_mips16): Use "multi".
13936         (extendqihi2): Replace with a define_expand.
13937         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
13938         Based on extend<SHORT:mode><GPR:mode>2 patterns.
13939         * config/mips/74k.md (r74k_int_logical): New reservation and
13940         bypasses.
13941         (r74k_int_arith): Remove "slt".
13942         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
13943         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
13944         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
13945         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
13946         reservations for "arith".
13947
13948 2007-07-04  Richard Guenther  <rguenther@suse.de>
13949
13950         * tree-ssa.c (useless_type_conversion_p): Add handling for
13951         scalar float and vector types.  Only call the types_compatible_p
13952         langhook for aggregate types as last resort.  Follow the
13953         rules.
13954
13955 2007-07-04  Richard Guenther  <rguenther@suse.de>
13956
13957         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
13958         the same as NOP_EXPR.
13959
13960 2007-07-04  Nick Clifton  <nickc@redhat.com>
13961
13962         * target.h (struct gcc_target): Add target_help field.
13963         * target-def.h (TARGET_HELP): New.
13964         (TARGET_INITIALIZER): Use TARGET_HELP.
13965         * opts.c (command_handle_option): Invoke target_help function, if
13966         defined, when the user has specified --target-help on the command
13967         line.
13968         * doc/invoke.texi: Mention that --target-help might print
13969         additional information.
13970         * doc/tm.texi: Document TARGET_HELP hook.
13971
13972         * arm.c (TARGET_HELP): Override default definition.
13973         (arm_target_help): New - display a wrapped list of cores and
13974         architectures supported.
13975
13976 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13977
13978         * config/v850/v850.c (expand_prologue): Make sure
13979         GEN_INT() argument is sign extended rather than zero extended.
13980         (expand_epilogue): Likewise.
13981         (output_move_double): Delete.
13982         * config/v850/v850-protos.h (output_move_double): Delete.
13983         * config/v850/v850.md (movdi): Delete.
13984         (*movdi_internal): Delete.
13985         (movdf): Delete.
13986         (*movdf_internal): Delete.
13987
13988 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
13989
13990         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
13991         unless compiling RTP PIC.
13992
13993 2007-07-04  Richard Guenther  <rguenther@suse.de>
13994
13995         PR tree-optimization/32482
13996         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
13997         original ssa name if we didn't find a shift expression.
13998         Fix shift constant for bit zero test.
13999
14000 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
14001
14002         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
14003
14004 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
14005
14006         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
14007         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
14008         * config/arm/vxworks.h (ASM_SPEC): Delete.
14009         (SUBTARGET_EXTRA_ASM_SPEC): Define.
14010
14011 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
14012
14013         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
14014         (DDR_REVERSED_P): New.
14015         * tree-data-ref.c (initialize_data_dependence_relation,
14016         build_classic_dist_vector): Set DDR_REVERSED_P.
14017
14018 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
14019
14020         PR middle-end/32457
14021         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
14022         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
14023         init_omega_for_ddr_1): Use non conservative number of iterations
14024         estimations.
14025         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
14026         (analyze_siv_subscript): Remove FIXME and reinitialization of 
14027         last_conflicts to chrec_dont_know.
14028         * testsuite/gfortran.dg/vect/pr32457.f90: New.
14029
14030 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
14031
14032         * tree.c (maybe_canonicalize_argtypes): Improve description.
14033
14034 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
14035
14036         * tree.c (maybe_canonicalize_argtypes): New.
14037         (build_function_type): Set canonical type.
14038         (build_method_type_directly): Ditto.
14039         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
14040         properly.
14041
14042 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14043
14044         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
14045         like PLUS_EXPR.
14046         (rewrite_use_nonlinear_expr): Likewise.
14047
14048 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
14049
14050         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
14051
14052 2007-07-04  Ben Elliston  <bje@au.ibm.com>
14053
14054         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
14055         of this file.
14056
14057         * c-objc-common.c (c_types_compatible_p): Fix indentation.
14058
14059         * doc/tm.texi (Run-time Target): Capitalise "CPU".
14060         (Exception Handling): Likewise.
14061
14062 2007-07-03  Jan Hubicka  <jh@suse.cz>
14063
14064         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
14065
14066 2007-07-03  Eric Christopher  <echristo@apple.com>
14067
14068         * doc/cppopts.texi: Add conflicting option note to -dM.
14069         * doc/invoke.texi: Add note about possible conflicts with
14070         -E for -dCHARS and note that -dM will not produce
14071         any results if there is no machine dependent reorg.
14072         
14073 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
14074
14075         * tree.h (DECL_ALIGN): Back out previous change.
14076
14077 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
14078
14079         * configure.ac: Test for .dtprelword support on MIPS.
14080         * configure, config.in: Regenerate.
14081         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
14082         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
14083
14084 2007-07-03  Julian Brown  <julian@codesourcery.com>
14085
14086         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
14087         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
14088         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
14089         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
14090         capability.
14091         (all_fpus): Add FPUTYPE_VFP3.
14092         (fp_model_for_fpu): Add VFPv3 field.
14093         (arm_rtx_costs_1): Give cost to VFPv3 constants.
14094         (vfp3_const_double_index): New function. Return integer index of
14095         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
14096         isn't suitable.
14097         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
14098         and argument represents a valid RTX for a VFPv3 constant.
14099         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
14100         two instructions.
14101         (vfp_emit_fstmd): Similar, for fstmd.
14102         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
14103         constants, represented as integer indices.
14104         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
14105         VFP_REGNO_OK_FOR_DOUBLE macros.
14106         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
14107         (arm_file_start): Set float-abi attribute for VFPv3, and output
14108         correct ".fpu" assembler directive.
14109         (arm_dbx_register_numbering): Add FIXME.
14110         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
14111         (fputype): Add FPUTYPE_VFP3.
14112         (FIXED_REGISTERS): Add 32 registers for D16-D31.
14113         (CALL_USED_REGISTERS): Likewise.
14114         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
14115         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
14116         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
14117         (D7_VFP_REGNUM): New.
14118         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
14119         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
14120         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
14121         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
14122         (REG_ALLOC_ORDER): Adjust for VFPv3.
14123         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
14124         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
14125         VFP_LO_REGS, VFP_HI_REGS.
14126         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
14127         (IS_VFP_CLASS): Define macro.
14128         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
14129         IS_VFP_CLASS.
14130         (REGISTER_MOVE_COST): Likewise.
14131         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
14132         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
14133         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
14134         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
14135         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
14136         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
14137         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
14138         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
14139         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
14140         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
14141         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
14142         where appropriate for single-word registers.
14143         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
14144         As above. Fix type attributes.
14145         * config/arm/constraints.md (register_contraint "t"): Define.
14146         (register_constraint "w"): Change to D0-D15, or D0-D31 for
14147         VFPv3/NEON.
14148         (register_constraint "x"): Define.
14149         (constraint "Dv"): Define.
14150
14151 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
14152
14153         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
14154
14155 2007-07-03  Tom Tromey  <tromey@redhat.com>
14156
14157         * c-parser.c (objc_pq_context): Removed.
14158         (objc_need_raw_identifier): Likewise.
14159         (c_parser) <objc_pq_context>: New field.
14160         <objc_need_raw_identifier>: Likewise.
14161         (OBJC_NEED_RAW_IDENTIFIER): Removed.
14162         (c_lex_one_token): Update.
14163         (c_parser_objc_protocol_definition): Update.
14164         (c_parser_objc_method_definition): Update.
14165         (c_parser_objc_methodproto): Update.
14166         (c_parser_declspecs): Update.
14167
14168 2007-07-03  David Ung  <davidu@mips.com>
14169
14170         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
14171
14172 2007-07-03  David Ung  <davidu@mips.com>
14173             Richard Sandiford  <richard@codesourcery.com>
14174
14175         * doc/invoke.texi: Document -march=74kf3_2.
14176         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
14177         (TUNE_74K): Check for it.
14178         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
14179         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
14180         * config/mips/mips.md (cpu): Add 74kf3_2.
14181         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
14182         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
14183         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
14184         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
14185         74kf3_2 to the CPU list.
14186         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
14187         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
14188         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
14189         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
14190         (r74kf3_2_fxfer_from_c1): New insn reservations.
14191
14192 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
14193             David Ung  <davidu@mips.com>
14194
14195         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
14196         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
14197         and 74k[fx].  Document aliases for the new options.
14198         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
14199         (PROCESSOR_24KF2_1): ...this.
14200         (PROCESSOR_24KX): Rename to...
14201         (PROCESSOR_24KF1_1): ...this.
14202         (PROCESSOR_74KF): Rename to...
14203         (PROCESSOR_74KF2_1): ...this.
14204         (PROCESSOR_74KX): Rename to...
14205         (PROCESSOR_74KF1_1): ...this.
14206         (TUNE_74K): Update PROCESSOR_* names.
14207         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
14208         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
14209         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
14210         (mips_rtx_cost_data): Update processor names in comments.
14211         (mips_issue_rate): Update PROCESSOR_* names.
14212         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
14213         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
14214         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
14215         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
14216         Update cpu attribute names.
14217         (r24k_fpu_iss): Rename this reservation to...
14218         (r24kf2_1_fpu_iss): ...this and update all uses.
14219         (r24kx_fpu_iss): Rename this reservation to...
14220         (r24kf1_1_fpu_iss): ...this and update all uses.
14221         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
14222         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
14223         Update cpu attribute names.
14224
14225 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
14226
14227         * config/m32r/constraints.md: New file.
14228         * config/m32r/m32r.c: Include tm-constrs.h.
14229         (small_data_operand): Use satisfies_constraint_* instead of macro.
14230         (addr24_operand, gen_compare): Likewise.
14231         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
14232         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
14233         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
14234         EXTRA_CONSTRAINT): Likewise.
14235         * config/m32r/m32r.md: Include constraints.md.
14236         (*movsi_insn): Use satisfies_constraint_* instead of macro.
14237         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
14238         * config/m32r/predicates.md (conditional_move_operand): Likewise.
14239         (two_insn_const_operand, int8_operand, uint16_operand,
14240         reg_or_int16_operand, reg_or_uint16_operand,
14241         reg_or_cmp_int16_operand, cmp_int16_operand,
14242         seth_add3_operand): Likewise.
14243
14244 2007-07-03  Eric Christopher  <echristo@gmail.com>
14245
14246         * libgcc2.h: Conditionally declare __bswapsi2 and
14247         __bswapdi2.
14248         
14249 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
14250
14251         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
14252         defined.
14253
14254 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14255
14256         PR target/28307
14257         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
14258         (__gthrw_pragma): Provide default definition.
14259         (__gthrw2): Use it.
14260         * gthr-posix.c (__gthrw_pragma): Define.
14261
14262 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
14263
14264         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
14265         before declaring inequality.
14266
14267 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14268
14269         * combine.c (recog_for_combine): Log the success or failure of
14270           matching new insn patterns against the machine description in
14271           detailed dumps.
14272
14273 2007-07-03  Revital Eres  <eres@il.ibm.com>
14274
14275         * ddg.c (print_sccs): New function.
14276         (check_sccs): New function.
14277         (create_ddg_all_sccs): Use it.
14278         * ddg.h (print_sccs): Declare.
14279         * modulo-sched.c (sms_order_nodes): Call print_sccs.
14280
14281 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
14282
14283         * targhooks.h (default_mode_for_suffix): New function declaration.
14284         * targhooks.c (default_mode_for_suffix): New default target hook.
14285         * target.h (struct c): New structure in the targetm struct.
14286         (mode_for_suffix): New target hook as part of struct c.
14287         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
14288         default_mode_for_suffix.
14289         (TARGET_C): New define.
14290         * c-lex.c: Include "target.h".
14291         (interpret_float): Use targetm.c.mode_for_suffix to determine
14292         the mode for a given non-standard suffix.
14293         Makefile.in (c-lex.o): Depend on $(TARGET_H).
14294
14295         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
14296         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
14297
14298         * doc/extend.texi (Floating Types): New node.  Document __float80 and
14299         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
14300
14301 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
14302
14303         PR target/32506
14304         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
14305         predicate instead of target_operand.
14306         (divsi3_i1_media, divsi3_media_2): Likewise.
14307
14308 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
14309
14310         * tree.h (alias_sets_might_conflict_p): Rename into
14311         alias_sets_must_conflict_p.
14312         * alias.c (alias_sets_might_conflict_p): Likewise.
14313         (alias_sets_conflict_p): Use it.
14314         (objects_must_conflict_p): Likewise.
14315         * c-common.c (strict_aliasing_warning): Adjust.
14316
14317 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14318
14319         * rtlhooks.c (gen_lowpart_if_possible): Check for
14320         invalid subreg before calling gen_lowpart_SUBREG.
14321
14322 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
14323
14324         * config/darwin9.h: Add copyright notice.
14325         (LINK_COMMAND_SPEC): Add comment.
14326         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
14327         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
14328         DARWIN_LIBSYSTEM_HAS_UNWIND.
14329
14330 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
14331
14332         PR libgomp/32468
14333         * omp-low.c (check_combined_parallel): New function.
14334         (lower_omp_parallel): Call it via walk_stmts, set
14335         OMP_PARALLEL_COMBINED if appropriate.
14336         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
14337         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
14338         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
14339         don't consider it as combined parallel.
14340
14341 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
14342
14343         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
14344         (gcc_tooldir): Likewise.
14345         * configure: Regenerate.
14346         * Makefile.in (libsubdir_to_prefix): New variable, based on the
14347         old configure.ac gcc_tooldir setting.
14348         (prefix_to_exec_prefix): New variable.
14349         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
14350         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
14351
14352 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
14353
14354         Fix PR tree-optimization/32583
14355         Fix PR tree-optimization/32584
14356         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
14357         (phi_translate_set): Use phi_translate directly now.
14358         (make_values_for_stmt): Don't value number RHS if we already know
14359         it is constant.
14360
14361 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
14362             Jim Wilson <wilson@specifix.com>
14363
14364         PR target/31684
14365         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
14366         copy_insn.
14367
14368 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
14369             Richard Sandiford  <richard@codesourcery.com>
14370             Nigel Stephens  <nigel@mips.com>
14371
14372         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
14373         (mips16e_output_save_restore): Declare.
14374         (mips16e_save_restore_pattern_p): Likewise.
14375         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
14376         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
14377         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
14378         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
14379         (BITSET_P): New global macro, extracted from...
14380         (mips_for_each_saved_reg): ...here.
14381         (mips16e_save_restore_info): New struct.
14382         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
14383         (mips16e_save_restore_regs): New variable.
14384         (mips_split_plus, mips16e_find_first_register): New functions.
14385         (mips16e_mask_registers): New function.
14386         (compute_frame_size): Expand the commentary before the function.
14387         Enforce the MIPS16e save and restore register range restrictions.
14388         Pad the general register save area at the low end.
14389         (mips16e_save_restore_reg, mips16e_build_save_restore)
14390         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
14391         (mips16e_output_save_restore, mips16e_collect_propagate_value)
14392         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
14393         New functions.
14394         (mips_expand_prologue, mips_expand_epilogue): Handle
14395         GENERATE_MIPS16E_SAVE_RESTORE.
14396         * config/mips/mips.md (*mips16e_save_restore): New pattern.
14397
14398 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
14399
14400         PR tree-optimization/31966
14401         PR tree-optimization/32533
14402         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
14403         "basic_block" description as its third argument.  Update function
14404         calls to get destination bb from "edge" argument.  Save "cond" into
14405         aux field of the edge.  Update prototype for changed arguments.
14406         (if_convertible_loop_p): Clear aux field of incoming edges if bb
14407         contains phi node.
14408         (find_phi_replacement_condition): Operate on incoming edges, not
14409         on predecessor blocks.  If there is a condition saved in the
14410         incoming edge aux field, AND it with incoming bb predicate.
14411         Return source bb of the first edge.
14412         (clean_predicate_lists): Clean aux field of outgoing node edges.
14413         (tree_if_conversion): Do not initialize cond variable. Move
14414         variable declaration into the loop.
14415         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
14416         initializations of new_stmt, arg0 and arg1 variables.
14417
14418 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
14419
14420         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
14421         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
14422
14423 2007-07-02  Richard Guenther  <rguenther@suse.de>
14424
14425         * tree-ssa.c (useless_type_conversion_p): Document
14426         future intent as defining the middle-end type system.
14427         Re-structure to call langhook last, group by type class,
14428         mark questionable parts.
14429
14430 2007-07-02  Richard Guenther  <rguenther@suse.de>
14431
14432         * tree-flow.h (types_compatible_p): Declare.
14433         * tree-ssa.c (types_compatible_p): New function.
14434         * ipa-type-escape.c (discover_unique_type): Use
14435         types_compatible_p instead of lang_hooks.types_compatible_p.
14436         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
14437         * tree-vn.c (expressions_equal_p): Likewise.
14438         * tree.c (fields_compatible_p): Likewise.
14439         * tree-ssa-dom.c (avail_expr_eq): Likewise.
14440         (cprop_operand): Use useless_type_conversion_p instead of
14441         lang_hooks.types_compatible_p.
14442         * tree-inline.c (setup_one_parameter): Likewise.
14443         (declare_return_variable): Likewise.
14444         * tree-nrv.c (tree_nrv): Likewise.
14445         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
14446         (maybe_fold_offset_to_component_ref): Likewise.
14447         (maybe_fold_offset_to_reference): Likewise.
14448         * tree-ssa-copy.c (may_propagate_copy): Likewise.
14449         (merge_alias_info): Likewise.
14450         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
14451         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
14452         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
14453         * tree-tailcall.c (find_tail_calls): Likewise.
14454         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
14455         * gimplify.c (canonicalize_addr_expr): Likewise.
14456         (fold_indirect_ref_rhs): Likewise.
14457         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
14458         (cpt_same_type): Likewise.
14459         (check_pointer_types_r): Swap parameters to cpt_same_type
14460         where appropriate.
14461         * fold-const.c (fold_convert): Revert fix for PR15988.
14462         * tree-inline.c (setup_one_parameter): Instead fix it here by
14463         using fold_build1 instead of fold_convert and checking for
14464         error_mark_node.  Convert only if the conversion is necessary.
14465
14466 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
14467
14468         * configure.ac: Check for .gnu_attribute on Power.
14469         * configure: Regenerate.
14470         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
14471         attribute for floating-point ABI.
14472
14473 2007-07-02  Ira Rosen  <irar@il.ibm.com>
14474
14475         PR tree-optimization/32230
14476         PR tree-optimization/32477
14477         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
14478         address is a constant.
14479
14480 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
14481
14482         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
14483         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
14484         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
14485         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
14486         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
14487         64-bit targets.  Add support for *-elfoabi*.
14488         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
14489         different settings if $(tm_defines) does not select the EABI.
14490         (MULTILIB_EXCLUSIONS): Define in those circumstances.
14491         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
14492         (MIPS_ARCH_OPTION_SPEC): Likewise.
14493         (MIPS_ISA_LEVEL_SPEC): Likewise.
14494         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
14495         * config/mips/elfoabi.h: New file.
14496
14497 2007-07-02  Richard Guenther  <rguenther@suse.de>
14498
14499         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
14500         (useless_type_conversion_p): ... this.
14501         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
14502         (useless_type_conversion_p): ... this.
14503         * builtins.c (fold_builtin_memory_op): Rename
14504         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
14505         * tree-cfg.c (verify_expr): Likewise.
14506         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
14507         * tree-ssa-ccp.c (ccp_fold): Likewise.
14508         * tree-ssa-copy.c (may_propagate_copy): Likewise.
14509         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
14510         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
14511         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
14512         * tree-ssa-pre.c (eliminate): Likewise.
14513         * tree-ssa.c (delete_tree_ssa): Likewise.
14514         (tree_ssa_useless_type_conversion): Likewise.
14515         * tree.c (build2_stat): Likewise.
14516
14517 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
14518
14519         Fix PR tree-optimization/32571
14520         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
14521         simplifying them.
14522
14523 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
14524
14525         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
14526         and other expected operations explicitly, change default to
14527         gcc_unreachable. 
14528
14529 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
14530
14531         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
14532         PARALLEL.
14533         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
14534         (tls_load_dot_plus_eight): Move the label number into the unspec.
14535         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
14536
14537 2007-07-01  Andreas Schwab  <schwab@suse.de>
14538
14539         * dwarf2out.c (initial_return_save): Define only if used.
14540
14541 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
14542
14543         Unreverting Richard's Revert of:
14544
14545         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
14546
14547         * dce.c (deletable_insn_p_1): New function, split out from...
14548         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
14549         specially, not those inside PARALLELs.  Remove BODY argument
14550         and adjust recursive call accordingly.
14551         (prescan_insns_for_dce): Update call to delete_insn_p.
14552
14553 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
14554             Revital Eres  <eres@il.ibm.com>
14555
14556         * ddg.c (create_ddg_all_sccs): Fix missed
14557         initialization of scc_nodes.
14558
14559 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
14560
14561         PR middle-end/32559
14562         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
14563         X + ~X to 1 only for INTEGRAL_TYPE_P type.
14564
14565 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
14566
14567         * configure.ac: Check for .gnu_attribute on MIPS.
14568         * configure, config.in: Regenerate.
14569         * config/mips/mips.c (mips_file_start): If supported, output
14570         attribute for floating-point ABI.
14571
14572 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
14573
14574         PR target/32433
14575         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
14576         (ffs_cmove): New expander to expand using ctz pattern.
14577         (*ffs_cmove): Remove pattern.
14578         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
14579         (ffsdi2): Expand using ctz pattern.
14580         (*ffs_rex64): Remove pattern.
14581
14582 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14583
14584         PR rtl-optimization/32296
14585         * pa.md (return): Delete pattern.
14586         (return_internal): Remove "(const_int 1)" from pattern.
14587         (epilogue): Use return_internal pattern for trivial returns.
14588         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
14589         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
14590
14591 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
14592
14593         * tree-ssa-pre.c (is_exception_related): New function
14594         (can_value_number_operation): Use it.
14595
14596 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
14597         
14598         Fix PR tree-optimization/32540
14599         Fix PR tree-optimization/31651
14600
14601         * tree-ssa-sccvn.c: New file.
14602
14603         * tree-ssa-sccvn.h: Ditto.
14604         
14605         * tree-vn.c: Include tree-ssa-sccvn.h
14606         (val_expr_paid_d): Removed.
14607         (value_table): Ditto.
14608         (vn_compute): Ditto.
14609         (val_expr_pair_hash): Ditto.
14610         (val_expr_pair_expr_eq): Ditto.
14611         (copy_vuses_from_stmt): Ditto.
14612         (vn_delete): Ditto.
14613         (vn_init): Ditto.
14614         (shared_vuses_from_stmt): Ditto.
14615         (print_creation_to_file): Moved up.
14616         (sort_vuses): Ditto.
14617         (sort_vuses_heap): Ditto.
14618         (set_value_handle): Make non-static.
14619         (make_value_handle): Ditto.
14620         (vn_add): Rewritten to use sccvn lookups.
14621         (vn_add_with_vuses): Ditto.
14622         (vn_lookup): Ditto (and second argument removed).
14623         (vn_lookup_with_vuses): Ditto.
14624         (vn_lookup_or_add): Ditto (and second argument removed);
14625         (vn_lookup_or_add_with_vuses): Ditto.
14626         (vn_lookup_with_stmt): New.
14627         (vn_lookup_or_add_with_stmt): Ditto.
14628         (create_value_handle_for_expr): Ditto.
14629
14630         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
14631         (seen_during_translate): New function.
14632         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
14633         (phi_trans_add): Ditto.
14634         (constant_expr_p): FIELD_DECL is always constant.
14635         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
14636         Use constant_expr_p.
14637         Avoid infinite recursion on mutually valued expressions.
14638         Change callers of vn_lookup_or_add.
14639         (phi_translate): New function.
14640         (compute_antic_safe): Allow phi nodes.
14641         (create_component_ref_by_pieces): Update for FIELD_DECL change.
14642         (find_or_generate_expression): Rewrite slightly.
14643         (create_expression_by_pieces): Updated for vn_lookup_or_add
14644         change.
14645         Update VN_INFO for new names.
14646         (insert_into_preds_of_block): Update for new names.
14647         (add_to_exp_gen): New function.
14648         (add_to_sets): Use vn_lookup_or_add_with_stmt.
14649         (find_existing_value_expr): Rewrite to changed vn_lookup.
14650         (create_value_expr_from): Ditto, and use add_to_exp_gen.
14651         (try_look_through_load): Removed.
14652         (try_combine_conversion): Ditto.
14653         (get_sccvn_value): New function.
14654         (make_values_for_phi): Ditto.
14655         (make_values_for_stmt): Ditto.
14656         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
14657         SCCVN.
14658         (init_pre): Update for SCCVN changes.
14659         (fini_pre): Ditto.
14660         (execute_pre): Ditto.
14661
14662         * tree-flow.h (make_value_handle): Declare.
14663         (set_value_handle): Ditto.
14664         (sort_vuses_heap): Ditto.
14665         (vn_lookup_or_add_with_stmt): Ditto.
14666         (vn_lookup_with_stmt): Ditto.
14667         (vn_compute): Remove.
14668         (vn_init): Ditto.
14669         (vn_delete): Ditto.
14670         (vn_lookup): Update arguments.
14671
14672         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
14673         (tree-vn.o): Ditto.
14674         (tree-ssa-sccvn.o): New.
14675         (OBJS-common): Add tree-ssa-sccvn.o
14676         
14677 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14678
14679         PR c/4076
14680         * c-typeck.c (build_external_ref): Don't mark as used if called
14681         from itself.
14682         * calls.c (rtx_for_function_call): Likewise.
14683         
14684 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
14685
14686         Revert:
14687
14688         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
14689
14690         * dce.c (deletable_insn_p_1): New function, split out from...
14691         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
14692         specially, not those inside PARALLELs.  Remove BODY argument
14693         and adjust recursive call accordingly.
14694         (prescan_insns_for_dce): Update call to delete_insn_p.
14695
14696 2007-06-30  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14697
14698         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
14699         (try_combine): Move potential calls to undo_all() so they happen
14700         before we commit to using the combined insns.
14701
14702 2007-06-30  Jan Hubicka  <jh@suse.cz>
14703
14704         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
14705         code.
14706
14707 2007-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
14708
14709         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
14710         (cgraph_remove_unreachable_nodes): Likewise.
14711         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
14712         * ipa-inline.c (update_caller_keys): Cast according to the coding
14713         conventions.
14714         (cgraph_decide_recursive_inlining): Likewise.
14715         (cgraph_decide_inlining_of_small_function): Likewise.
14716         (try_inline): Likewise.
14717         (cgraph_decide_inlining_incrementally): Likewise.
14718         * ipa-pure-const.c (get_function_state): Likewise.
14719         (scan_function): Likewise.
14720         (analyze_function): Likewise.
14721         (static_execute): Likewise.
14722         * ipa-reference.c (scan_for_static_refs): Likewise.
14723         (merge_callee_local_info): Likewise.
14724         (analyze_function): Use type safe memory macros.
14725         (static_execute): Likewise. Cast according to the coding conventions.
14726         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
14727         conventions.
14728         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
14729         names.
14730         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
14731         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
14732         variable names.
14733
14734 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14735
14736         PR middle-end/30024
14737         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
14738         for complex modes (both int and real).
14739
14740 2007-06-29  Jan Hubicka  <jh@suse.cz>
14741
14742         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
14743
14744 2007-06-29  Jan Hubicka  <jh@suse.cz>
14745
14746         PR middle-end/32372
14747         * cse.c (cse_insn): Avoid invalid sharing in between register note and
14748         the insn pattern.
14749
14750 2007-06-29  Anatoly Sokolov <aesok@post.ru>
14751
14752         PR target/32335
14753         * config/avr/avr.c: Include dataflow header file.
14754         (expand_prologue): Adjust for prologue insn change.
14755         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
14756         inside a insn.
14757
14758 2007-06-29  Richard Guenther  <rguenther@suse.de>
14759
14760         PR middle-end/32493
14761         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
14762         during type verification.
14763
14764 2007-06-29  Jan Hubicka  <jh@suse.cz>
14765
14766         * recog.c (validate_change_rtx_1): Unshare TO argument.
14767
14768 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
14769
14770         PR tree-optimization/24659
14771         * tree-vect-transform.c (vectorizable_call): Handle
14772         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
14773
14774         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
14775         * config/i386/i386.c (enum ix86_builtins)
14776         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
14777         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
14778         description.
14779         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
14780         const using def_builtin_const.
14781         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
14782         input operands in the same modes as the result.
14783         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
14784
14785 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
14786
14787         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
14788         (df_set_dead_notes_for_mw): Likewise.
14789
14790 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
14791
14792         * c-common.c (pointer_int_sum): Do the negation in sizetype.
14793
14794 2007-06-28  DJ Delorie  <dj@redhat.com>
14795
14796         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
14797
14798 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
14799
14800         * doc/invoke.texi (C++ Dialect Options): Document
14801         fvisibility-ms-compat.
14802         * c.opt (fvisibility-ms-compat): New.
14803
14804 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14805
14806         PR tree-opt/32417
14807         * tree-affine.c (aff_combination_add_elt): Handle
14808         pointer addition specially.
14809
14810 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
14811
14812         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
14813         decl is non-external for AIX ABI.
14814
14815 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
14816
14817         * config/rs6000/predicates.md (current_file_function_operand):
14818         Ensure the symbol is non-external for AIX ABI.
14819
14820 2007-06-28  Nick Clifton  <nickc@redhat.com>
14821
14822         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
14823         (fdce, fdse, fpredictive-commoning): Likewise.
14824
14825 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
14826
14827         PR other/31400
14828         * gcc.c (process_command): Recognize the new -static-libgfortran
14829         option.
14830
14831 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14832
14833         PR target/32418
14834         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
14835         Use a call clobbered hard reg instead of a pseudo reg.
14836
14837 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
14838
14839         * config/sh/sh.md (load_gbr): Use correct operand constraint.
14840
14841 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
14842
14843         PR target/32479
14844         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
14845         REG_LIBCALL and REG_RETVAL notes.
14846         (divsi3, mulsi3): Likewise.
14847         (mulhisi3): Likewise.  Use emit_libcall_block.
14848         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
14849
14850 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
14851
14852         PR rtl-optimization/32481
14853         * combine.c (adjust_for_new_dest): Rescan the changed insn.
14854
14855 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
14856
14857         * dce.c (deletable_insn_p_1): New function, split out from...
14858         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
14859         specially, not those inside PARALLELs.  Remove BODY argument
14860         and adjust recursive call accordingly.
14861         (prescan_insns_for_dce): Update call to delete_insn_p.
14862
14863 2007-06-27  Richard Guenther  <rguenther@suse.de>
14864
14865         PR middle-end/32492
14866         * tree.h (fold_convertible_p): Declare.
14867         * fold-const.c (fold_convertible_p): New function.
14868         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
14869         instead of lang_hooks.types_compatible_p.
14870
14871 2007-06-26  Jan Hubicka  <jh@suse.cz>
14872
14873         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
14874         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
14875         early use validate_unshare_change.
14876         (reload_combine): Likewise.
14877         * recog.c (change_t): New field unshare.
14878         (validate_change_1): Rename from validate_change; add argument unshare.
14879         (validate_change): Turn into wrapper of validate_change_1; update
14880         prototype for bools.
14881         (validate_unshare_change): New.
14882         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
14883         calls of df_insn_rescan.
14884         * recog.h (validate_change): Replace ints by bools.
14885         (validate_unshare_change): Declare.
14886
14887 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
14888
14889         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
14890         
14891 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
14892
14893         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
14894
14895 2007-06-25  Jan Hubicka  <jh@suse.cz>
14896
14897         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
14898         uninlinable call.
14899         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
14900         cgraph_decide_inlining_incrementally): Move uninlinability checks to
14901         places other call site specific checks are performed.
14902
14903 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14904
14905         PR tree-opt/32421
14906         * tree-vect-transform.c (vectorizable_operation): Convert
14907         POINTER_PLUS_EXPR over to PLUS_EXPR.
14908
14909 2007-06-25  Chao-ying Fu  <fu@mips.com>
14910
14911         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
14912         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
14913         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
14914         Document GET_MODE_IBIT, and GET_MODE_FBIT.
14915
14916         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
14917         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
14918         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
14919         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
14920         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
14921         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
14922         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
14923         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
14924         ALL_FIXED_POINT_MODE_P): New define.
14925         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
14926         MODE_UACCUM.
14927         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
14928
14929         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
14930         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
14931         MODE_VECTOR_UACCUM): New mode classes.
14932
14933         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
14934         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
14935         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
14936         USA, UDA, and UTA.
14937
14938         * genmodes.c (struct mode_data): Add ibit and fbit fields.
14939         (blank_mode): Initialize ibit and fbit.
14940         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
14941         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
14942         MODE_UACCUM.
14943         (new_adjust): Change required_class to required_class_from and
14944         required_class_to for testing within a range.
14945         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
14946         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
14947         MODE_VECTOR_UACCUM.
14948         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
14949         (make_fixed_point_mode): New.
14950         (_ADD_ADJUST): Change C to C1 and C2.
14951         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
14952         use a range for machine classes.
14953         (ADJUST_IBIT, ADJUST_FBIT): New.
14954         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
14955         CONST_MODE_FBIT.
14956         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
14957         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
14958         Emit adjustment for ibit and fbit.
14959         (emit_mode_ibit, emit_mode_fbit): New.
14960         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
14961
14962 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
14963
14964         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
14965         as the source of the set.
14966
14967 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
14968
14969         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
14970         FP_REGNO_P): Use IN_RANGE.
14971         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
14972         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
14973         (DATA_REG_P): Use DATA_REGNO_P.
14974         (FP_REG_P): Use FP_REGNO_P.
14975         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
14976         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
14977         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
14978
14979 2007-06-24  Jan Hubicka  <jh@suse.cz>
14980
14981         PR middle-end/30563
14982         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
14983
14984 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
14985
14986         PR middle-end/32461
14987         * fold-const.c (fold_binary): Strip nops of operand 0
14988         of BIT_NOT_EXPR before calling operand_equal_p.
14989         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
14990         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
14991
14992 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
14993
14994         * doc/extend.texi: Document that dllimport and dllexport imply
14995         default visibility.
14996         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
14997         imported or exported declaration, including type declarations.
14998         * c-common.c (handle_visibility_attribute): Check for conflicts
14999         with dllimport/dllexport.
15000         (c_determine_visibility): Handle dllimport/dllexport as an
15001         explicit visibility atttribute.
15002
15003 2007-06-23  Richard Guenther  <rguenther@suse.de>
15004
15005         PR tree-optimization/16876
15006         PR middle-end/29478
15007         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
15008         for CALL_EXPRs.
15009         * tree-inline.c (initialize_inlined_parameters): Do not call
15010         lang_hooks.tree_inlining.convert_parm_for_inlining.
15011         * cgraphbuild.c (initialize_inline_failed): Set inline failed
15012         reason for mismatched types.
15013         * gimplify.c (gimplify_call_expr): Verify the call expression
15014         arguments match the called function type signature.  Otherwise
15015         mark the call expression to be not considered for inlining
15016         using CALL_CANNOT_INLINE_P flag.
15017         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
15018         edges call expression.
15019         (cgraph_decide_inlining_of_small_function): Likewise.
15020         (cgraph_decide_inlining): Likewise.
15021         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
15022         Remove define.
15023         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
15024         * c-typeck.c (c_convert_parm_for_inlining): Remove.
15025         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
15026         Remove declaration.
15027         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
15028         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
15029         Remove.
15030         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
15031         convert_parm_for_inlining member.
15032
15033 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
15034
15035         PR target/31152
15036         * arm.md (negscc): Match the correct operand for optimized LT0 test.
15037         Remove optimization for GT.
15038
15039 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
15040
15041         PR middle-end/32437
15042         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
15043         is a PARALLEL.
15044         (prescan_insns_for_dce): Add extra parameter.
15045         
15046 2007-06-23  Jan Hubicka  <jh@suse.cz>
15047
15048         PR middle-end/31541
15049         * gimplify.c (mark_addressable): New function.
15050         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
15051
15052 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
15053
15054         PR middle-end/32374
15055         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
15056
15057 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
15058
15059         PR target/32413
15060         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
15061         moves between MMX/SSE registers to at least 8 units to prevent
15062         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
15063
15064 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
15065
15066         * config/i386/i386.c (override_options): Correct x86_sahf
15067         setting condition.
15068
15069 2007-06-21  David Daney  <ddaney@avtrex.com>
15070
15071         PR target/32406
15072         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
15073         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
15074         (exception_receiver): Renamed to ...
15075         (nonlocal_goto_receiver): ... this.
15076
15077 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
15078
15079         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
15080         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
15081         partial register accesses.
15082
15083 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
15084
15085         * fold-const.c (debug_fold_checksum): Move it under
15086         ENABLE_FOLD_CHECKING.
15087
15088 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
15089
15090         PR middle-end/20623
15091         * tree.h (debug_fold_checksum): Declared.
15092         * fold-const.c (build_fold_addr_expr_with_type_1): New.
15093         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
15094         build_fold_addr_expr_with_type_1.
15095         (fold_addr_expr, debug_fold_checksum): New.
15096         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
15097         (fold_unary, fold_comparison, split_address_to_core_and_offset):
15098         Use fold_addr_expr.
15099         
15100 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
15101
15102         PR tree-optimization/19590
15103         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
15104         of scev is a constant.
15105
15106 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
15107
15108         * df-problems.c (df_note_bb_compute): Made computation of live
15109         info consistent with df_lr.
15110
15111 2007-06-21  Richard Guenther  <rguenther@suse.de>
15112
15113         PR tree-optimization/32453
15114         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
15115         for pointer anti-range.
15116
15117 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
15118
15119         * config/i386/i386.c (processor_target_table): Increase maximum
15120         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
15121         default 64bit.
15122
15123         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
15124         byte alignment if > 8 byte alignment is preferred.
15125         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
15126
15127 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
15128
15129         PR tree-optimization/31866
15130         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
15131         if ASM_EXPR's input is not a SSA_NAME.
15132
15133         PR middle-end/32362
15134         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
15135         but decl is a global var, instead return decl.
15136         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
15137         even for is_global_var decls, if they are private in some outer
15138         context.
15139
15140 2007-06-21  Richard Guenther  <rguenther@suse.de>
15141
15142         PR tree-optimization/32451
15143         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
15144
15145 2007-06-21  Christian Bruel  <christian.bruel@st.com>
15146
15147         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
15148         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
15149         (push_regs): Changed saving order or banked registers.
15150         (sh_expand_epilogue): Likewise.
15151         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
15152         (FIRST_BANKED_REG): Likewise.
15153         (LAST_BANKED_REG): Likewise.
15154         * config/sh/sh.md (banked) New attribute.
15155         (in_delay_slot): Check banked attribute.
15156         
15157 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
15158
15159         PR tree-optimization/32075
15160         * tree-data-ref.c (subscript_dependence_tester_1, 
15161         analyze_miv_subscript, analyze_overlapping_iterations,
15162         add_distance_for_zero_overlaps, build_classic_dist_vector,
15163         subscript_dependence_tester_1, analyze_overlapping_iterations,
15164         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
15165         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
15166         to evolution_function_is_affine_multivariate_p.
15167
15168 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
15169
15170         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
15171
15172 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15173
15174         PR target/32335
15175         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
15176         for TARGET_A16.
15177         * config/m32c/prologue.md (epilogue_exitd_16): New.
15178         (epilogue_reit_16): New.
15179         (epilogue_exitd): Rename to epilogue_exitd_24.
15180         (epilogue_reit): Rename to epilogue_reit_24.
15181
15182 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
15183             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
15184
15185         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
15186         New counters.
15187         * haifa-sched.c (queue_to_ready): Don't requeue next insn
15188         if dbg_cnt (sched_insn) reaches the limit.
15189         (choose_ready): New parameter INSN_PTR and new return value.
15190         (schedule_block): Handle dbg_cnt (sched_insn). Handle
15191         the new return value from choose_ready.
15192         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
15193         (rest_of_handle_global_alloc): New global_alloc_at_func.
15194
15195 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
15196
15197         PR tree-optimization/25737
15198         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
15199         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
15200         * tree-flow.h (struct fieldoff): Add new field alias_set.
15201         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
15202         argument addressable_type.  Set alias_set of fieldoff.
15203         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
15204         (create_overlap_variables_for): Pass alias_set from fieldoff to
15205         create_sft.
15206         * alias.c (get_alias_set): Use alias_set from SFT if set.
15207
15208 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
15209
15210         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
15211         of a variable as an unsigned HOST_WIDE_INT integer.
15212
15213 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
15214
15215         PR rtl-optimization/32405
15216         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
15217
15218 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
15219
15220         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
15221
15222         PR middle-end/31959
15223         * builtins.c: Include diagnostic.h.
15224         (expand_builtin_expect): Make gcc_assert more permissive.
15225         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
15226
15227         PR inline-asm/32109
15228         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
15229         and !allows_mem.
15230
15231         PR middle-end/32285
15232         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
15233         if ACCUMULATE_OUTGOING_ARGS.
15234
15235 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15236
15237         * config/m68hc11/m68hc11.c: Include dataflow header file.
15238         (m68hc11_reorg): Port to dataflow.
15239
15240 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
15241
15242         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
15243         (struct df_problem.free_blocks_on_set_blocks): New field.
15244         (struct dataflow.optional_p): New field.
15245         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
15246         (df_live_set_all_dirty): New function.
15247         * df-scan.c (df_scan_alloc): Initialize optional_p.
15248         (problem_SCAN): Initialize free_blocks_on_set_blocks.
15249         * df-core.c (df_set_blocks): Removed use of
15250         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
15251         df_problem.free_blocks_on_set_blocks to determine which blocks are
15252         recycled.
15253         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
15254         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
15255         uses dataflow.optional_p to determine if problem should be
15256         deleted.
15257         (rest_of_handle_df_initialize): Only start live problem if 
15258         -02 or above.
15259         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
15260         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
15261         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
15262         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
15263         problem_NOTE): Initialize free_blocks_on_set_blocks.
15264         (df_lr_bb_local_compute): Recompute luids if df_live problem is
15265         not active.
15266         (df_live_set_all_dirty, df_note_alloc): New function.
15267         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
15268         df_get_live_*.
15269         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
15270         * postreload.c (reload_combine): Ditto.
15271         * cse.c (cse_extended_basic_block): Ditto.
15272         * regmove.c (mark_flags_life_zones): Ditto.
15273         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
15274         erase_matching_seqs): Ditto.
15275         * bt-load.c (compute_defs_uses_and_gen): Ditto.
15276         * integrate (allocate_initial_values): Ditto.
15277         * combine.c (reg_dead_at_p): Ditto.
15278         * resource.c (mark_target_live_regs): Ditto.
15279         * sched-rgn.c (check_live_1, update_live_1): Ditto.
15280         * config/sh/sh.c (find_r0_life_regions): Ditto.
15281         * global.c (rest_of_handle_global_alloc): Only add back df_live
15282         for -O > 1.
15283         * local-alloc.c (rest_of_handle_local_alloc): Only remove
15284         df_live for -O > 1.
15285         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
15286         df_get_live_*.
15287         (if_convert): Make sure df_live is there at -O == 1.
15288         (pass_if_after_combine): Cleanup flags.
15289         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
15290         is there at -O == 1.
15291         
15292 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
15293
15294         * config/arm/arm.c (arm_get_frame_offsets): Set
15295         offsets->locals_base to avoid negative stack size.
15296         (thumb1_expand_prologue): Assert on negative stack size.
15297
15298 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
15299
15300         PR tree-optimization/32367
15301         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
15302         of the chrec has no evolution in that loop.
15303         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
15304
15305 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
15306
15307         * config/xtensa/xtensa.c: Include "df.h".
15308         (xtensa_builtin_saveregs): Use adjust_address instead of
15309         change_address.
15310         (xtensa_va_start): Invoke make_tree with sizetype for
15311         expand_builtin_saveregs and then convert the result to a pointer.
15312         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
15313         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
15314         Subtract argument size from index value as integers and then use
15315         POINTER_PLUS_EXPR to add the result to the array address.
15316         
15317 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15318
15319         PR target/32335
15320         * config/m32c/m32c.c: Include dataflow header file.
15321         (m32c_emit_prologue): Adjust for prologue insn change.
15322         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
15323         once inside a PARALLEL. Assume frame size passed in operand 0
15324         includes space to save the fb register.
15325         (prologue_enter_24): Likewise.
15326         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
15327
15328 2007-06-19  David Daney  <ddaney@avtrex.com
15329
15330         PR target/32313
15331         * config/mips/mips.md (cprestore): Mark $gp as used.
15332
15333 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15334
15335         PR target/32369
15336         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
15337         (frv_ifcvt_modify_insn): Likewise.
15338
15339 2007-06-19  Richard Guenther  <rguenther@suse.de>
15340
15341         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
15342         only handle positive offsets that fit in a HOST_WIDE_INT.
15343
15344 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
15345
15346         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
15347         result of rsqrt insn for zero input argument to avoid NaN.
15348
15349 2007-06-19  Richard Guenther  <rguenther@suse.de>
15350
15351         PR middle-end/31950
15352         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
15353
15354 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
15355
15356         PR tree-optimization/32353
15357         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
15358
15359 2007-06-19  Nick Clifton  <nickc@redhat.com>
15360
15361         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
15362
15363 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
15364
15365         PR target/32389
15366         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
15367         * config/i386/i386.c (assign_386_stack_local): Assert that
15368         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
15369         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
15370         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
15371         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
15372
15373 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
15374
15375         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
15376
15377 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
15378
15379         PR rtl-optimization/32321
15380         * gcse.c (replace_store_insn): Update the note before
15381         calling emit_insn_after.
15382
15383 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
15384
15385         PR middle-end/32355
15386         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
15387         cse_main.
15388         * df-problems.c (df_note_bb_compute): Fix dumping info.
15389         
15390 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
15391
15392         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
15393         insn with emit_jump_insn.
15394
15395 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
15396
15397         PR tree-optimization/32383
15398         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
15399         * targhooks.h (default_builtin_reciprocal): Update prototype.
15400         * target.h (struct gcc_target): Update builtin_reciprocal.
15401         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
15402         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
15403         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
15404         when fndecl is in BUILT_IN_MD class.
15405         (execute_convert_to_rsqrt): Ditto.
15406
15407         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
15408         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
15409         Convert BUILT_IN_SQRTF code only  when md_fn is false.
15410
15411 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
15412
15413         * bt-load.c (move_btr_def): Fix the order of arguments
15414         to validate_replace_rtx.
15415
15416 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
15417
15418         * config/m68k/m68k-devices.def: Add 54450..54455.
15419
15420 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
15421
15422         PR rtl-optimization/32366
15423         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
15424         FLOAT_EXTEND]: Prevent non-scalar modes from entering
15425         significand_size.
15426
15427 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
15428
15429         PR middle-end/32349
15430         * modulo-sched (generate_reg_moves): Added rescan parameter and if
15431         this is true, rescan insn being modified.
15432         (sms_schedule): Added rescan parameter.
15433         (rest_of_handle_sms): Moved freeing of dominance info to before
15434         getting out of cfg_layout.
15435         
15436 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
15437
15438         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
15439         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
15440         appropriate.
15441
15442         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
15443         FL_CF_EMAC from the entry for isac.
15444
15445         * config/m68k/predicates.md (const_call_operand): Adjust comment.
15446         (const_sibcall_operand): New.
15447         (sibcall_operand): Use it.
15448         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
15449         (m68k_isas): ISAC does not imply FPU or EMAC.
15450         (override_options): Add ISA_C logic for symbolic jump & call.
15451
15452 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
15453
15454         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
15455         return mode from the builtin itself.
15456         (sparc_fold_builtin): Fix cast of zero constant.
15457
15458 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
15459
15460         * targhooks.c (default_builtin_reciprocal): New default target hook.
15461         * targhooks.h (default_builtin_reciprocal): Add prototype.
15462         * hooks.c (hook_tree_tree_bool_null): Remove hook.
15463         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
15464         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
15465         default_builtin_reciprocal.
15466
15467 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
15468
15469         PR middle-end/31723
15470         * hooks.c (hook_tree_tree_bool_null): New hook.
15471         * hooks.h (hook_tree_tree_bool_null): Add prototype.
15472         * tree-pass.h (pass_convert_to_rsqrt): Declare.
15473         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
15474         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
15475         and convert it to reciprocal a*rfunc(b).
15476         (execute_convert_to_rsqrt): New function.
15477         (gate_convert_to_rsqrt): New function.
15478         (pass_convert_to_rsqrt): New pass definition.
15479         * target.h (struct gcc_target): Add builtin_reciprocal.
15480         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
15481         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
15482         TARGET_BUILTIN_RECIPROCAL.
15483         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
15484
15485         * config/i386/i386.h (TARGET_RECIP): New define.
15486         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
15487         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15488         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15489         and not optimizing for size.
15490         (*rcpsf2_sse): New insn pattern.
15491         (*rsqrtsf2_sse): Ditto.
15492         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
15493         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15494         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15495         and not optimizing for size.
15496         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
15497         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15498         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15499         and not optimizing for size.
15500         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
15501         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15502         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15503         and not optimizing for size.
15504         (*sse_rsqrtv4sf2): Do not export.
15505         (sqrtv4sf2): Ditto.
15506         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
15507         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15508         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15509         and not optimizing for size.
15510         (sqrtv4sf2): Ditto.
15511         * config/i386/i386.opt (mrecip): New option.
15512         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
15513         (ix86_emit_swsqrtsf): Ditto.
15514         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
15515         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
15516         builtin definition.
15517         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
15518         ix86_expand_unop1_builtin.
15519         (ix86_emit_swdivsf): New function.
15520         (ix86_emit_swsqrtsf): Ditto.
15521         (ix86_builtin_reciprocal): New function.
15522         (TARGET_BUILTIN_RECIPROCAL): Use it.
15523         (ix86_vectorize_builtin_conversion): Rename from
15524         ix86_builtin_conversion.
15525         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
15526         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
15527         "i386 and x86_64 Options" section.
15528         (Intel 386 and AMD x86_64 Options): Document -mrecip.
15529
15530 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
15531             Zdenek Dvorak <dvorakz@suse.cz>
15532             Richard Guenther  <rguenther@suse.de>
15533             Kaz Kojima  <kkojima@gcc.gnu.org>
15534
15535         * tree-vrp.c (compare_values_warnv): Convert val2 to
15536         the type of val1.
15537         (extract_range_from_assert): Create
15538         POINTER_PLUS_EXPR for pointer types.
15539         (extract_range_from_binary_expr): Handle
15540         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
15541         for pointer types.
15542         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
15543         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
15544         POINTER_PLUS_EXPR as PLUS_EXPR.
15545         (number_of_iterations_lt_to_ne):
15546         For pointer types, use sizetype when
15547         creating MINUS_EXPR/PLUS_EXPRs.
15548         (assert_loop_rolls_lt): For pointer types, use sizetype when
15549         creating MINUS_EXPR/PLUS_EXPRs.
15550         (number_of_iterations_le): Likewise.
15551         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
15552         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
15553         like PLUS_EXPR and MINUS_EXPR.
15554         * tree-pretty-print.c (dump_generic_node): Handle
15555         POINTER_PLUS_EXPR.
15556         (op_prio): Likewise.
15557         (op_symbol_1): Likewise.
15558         * optabs.c (optab_for_tree_code): Likewise.
15559         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
15560         specially.
15561         * tree-tailcall.c (process_assignment): Mention
15562         POINTER_PLUS_EXPR in a TODO comment.
15563         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
15564         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
15565         not used with a pointer and an integer type.
15566         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
15567         increment using chrec_convert_rhs instead of chrec_convert.
15568         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
15569         PLUS_EXPR except for the right hand side's type will be
15570         sizetype.
15571         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
15572         (fold_used_pointer_cast): Kill.
15573         (pointer_offset_p): Kill.
15574         (fold_used_pointer): Kill.
15575         (pointer_used_p): Kill.
15576         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
15577         call fold_used_pointer.
15578         (instantiate_parameters_1): Convert the increment
15579         using chrec_convert_rhs instead of chrec_convert.
15580         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
15581         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
15582         instead of PLUS_EXPR.
15583         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
15584         PLUS_EXPR for pointers.
15585         (std_gimplify_va_arg_expr): Likewise.
15586         (fold_builtin_memory_op): Likewise.
15587         (fold_builtin_strstr): Likewise.
15588         (fold_builtin_strchr): Likewise.
15589         (fold_builtin_strrchr): Likewise.
15590         (fold_builtin_strpbrk): Likewise.
15591         (expand_builtin_memory_chk): Likewise.
15592         (fold_builtin_memory_chk): Likewise.
15593         (std_expand_builtin_va_start): Use
15594         sizetype for the call to make_tree and then convert
15595         to the pointer type.
15596         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
15597         instead of PLUS_EXPR for adding to a pointer.
15598         (std_gimplify_va_arg_expr): Use fold_build2 for
15599         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
15600         the operands to sizetype first and then cast the BIT_AND_EXPR
15601         back to the pointer type.
15602         * fold-const.c (build_range_check): Handle pointer types
15603         specially.
15604         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
15605         of PLUS_EXPR's. Make sure the offset is converted to
15606         sizetype.
15607         (try_move_mult_to_index): Strip the NOPs from the offset.
15608         Remove code argument and replace all uses with PLUS_EXPR.
15609         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
15610         specially. Don't use a pointer type for MINUS_EXPR.
15611         (fold_unary): Handle for (T1)(X op Y),
15612         only p+ as that is the only as that can be handled for
15613         binary operators now.
15614         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
15615         POINTER_PLUS_EXPR.
15616         <case PLUS_EXPR>: Add folding of PTR+INT into
15617         PTR p+ INT.
15618         Don't call try_move_mult_to_index.
15619         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
15620         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
15621         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
15622         Don't call try_move_mult_to_index.
15623         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
15624         (tree_expr_nonzero_p): Likewise.
15625         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
15626         of PLUS_EXPR for the complex expression folding.
15627         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
15628         first chrec is a pointer type, then the second should
15629         be sizetype and not the first's type.
15630         For POINTER_PLUS_EXPR, use a different right hand side type.
15631         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
15632         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
15633         different right hand side type.
15634         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
15635         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
15636         instead of PLUS_EXPR.
15637         When either operand is zero, convert the other operand.
15638         (chrec_apply): Use chrec_convert_rhs
15639         on the argument x instead of chrec_convert.
15640         (reset_evolution_in_loop): For pointer types, the new_evol
15641         should be sizetype.
15642         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
15643         different right hand side type.
15644         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
15645         (chrec_convert_rhs): New function.
15646         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
15647         different right hand side type.
15648         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
15649         * tree-chrec.h (chrec_convert_rhs): New prototype.
15650         (build_polynomial_chrec): For pointer types, the right hand
15651         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
15652         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
15653         Remove subtraction case as it is always addition now.
15654         Make sure the offset is converted to sizetype.
15655         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
15656         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
15657         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
15658         PLUS_EXPR in pointer type.
15659         Handle POINTER_PLUS_EXPR.
15660         (tree_to_aff_combination): Likewise.
15661         (force_expr_to_var_cost): Likewise.
15662         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
15663         instead of PLUS_EXPR for pointers.
15664         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
15665         instead of PLUS_EXPR of pointer types.
15666         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
15667         as PLUS_EXPR.
15668         (check_va_list_escapes): Likewise.
15669         (check_all_va_list_escapes): Likewise.
15670         * dwarf2out.c (loc_descriptor_from_tree_1):
15671         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
15672         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
15673         (string_constant): Likewise.
15674         * tree-ssa-address.c (tree_mem_ref_addr): When adding
15675         the offset to the base, use POINTER_PLUS_EXPR.
15676         (add_to_parts): Convert the index to sizetype.
15677         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
15678         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
15679         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
15680         Offset only holds something for PLUS_EXPR.
15681         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
15682         a PLUS_EXPR.
15683         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
15684         and not PLUS_EXPR.
15685         (analyze_accesses_for_modify_stmt): Likewise.
15686         Remove comment about the type being integral type as it is
15687         wrong now.
15688         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
15689         PLUS_EXPR.
15690         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
15691         and not PLUS_EXPR.
15692         Correct the type which the artimentic is done in (is now
15693         sizetype).
15694         Reindent one loop.
15695         * tree-data-ref.c (split_constant_offset): Handle
15696         POINTER_PLUS_EXPR
15697         * tree-affine.c (tree_to_aff_combination): Likewise.
15698         * c-typeck.c (build_unary_op): For pointers create the increment
15699         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
15700         for pointers.
15701         * gimplify.c (gimplify_self_mod_expr): Create a
15702         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
15703         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
15704         * tree.def (POINTER_PLUS_EXPR): New tree code.
15705         * tree-predcom.c (ref_at_iteration): If we have a pointer
15706         type do the multiplication in sizetype.
15707         * tree-mudflap.c (mf_xform_derefs_1): Create a
15708         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
15709         * tree-ssa-forwprop.c 
15710         (forward_propagate_addr_into_variable_array_index):
15711         Don't expect there to be a cast for the index as that
15712         does not exist anymore.
15713         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
15714         instead of PLUS_EXPR.
15715         Don't check for the first operand of the POINTER_PLUS_EXPR
15716         was the index as it cannot be.
15717         Call forward_propagate_addr_into_variable_array_index with
15718         the SSA_NAME instead of the statement.
15719         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
15720         (compare_constant): Likewise.
15721         (copy_constant): Likewise.
15722         (compute_reloc_for_constant): Likewise.
15723         (output_addressed_constants): Likewise.
15724         (initializer_constant_valid_p): Likewise.
15725         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
15726         Convert the MIN/MAX of the inner type to the outer
15727         type before comparing them.
15728         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
15729         POINTER_PLUS_EXPR instead of PLUS_EXPR.
15730         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
15731         of PLUS_EXPR for pointers.
15732         * tree-inline.c (estimate_num_insns_1): Handle
15733         POINTER_PLUS_EXPR.
15734         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
15735         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
15736         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
15737         instead of PLUS_EXPR for the pointer increment statement.
15738         (vect_update_ivs_after_vectorizer): For pointer types, create
15739         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
15740         MULT_EXPR in sizetype.
15741         (vect_gen_niters_for_prolog_loop): Add a cast when creating
15742         byte_misalign.
15743         * tree-object-size.c (plus_expr_object_size): Handle
15744         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
15745         code which is trying to figure out which side is a pointer and 
15746         is the index.
15747         (check_for_plus_in_loops_1): Likewise.
15748         (check_for_plus_in_loops): Likewise.
15749         * c-common.c (pointer_int_sum): Create a
15750         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
15751         * tree-ssa-structalias.c (handle_ptr_arith): Handle
15752         only POINTER_PLUS_EXPR.  Removing all the extra
15753         code which is trying to figure out which side is a pointer and 
15754         is the index.
15755         * tree-cfg.c (verify_expr): Add extra checking for pointers and
15756         PLUS_EXPR and MINUS_EXPR.
15757         Also add checking to make sure the operands of POINTER_PLUS_EXPR
15758         are correct.
15759         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
15760         with make_tree, instead of a pointer type.
15761         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
15762         for pointers instead of PLUS_EXPR.
15763         (s390_gimplify_va_arg): Likewise.
15764         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
15765         instead of PLUS_EXPR when doing addition on pointer
15766         types.  Use sizetype for the second operand.
15767         (spu_gimplify_va_arg_expr): Likewise.
15768         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
15769         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
15770         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
15771         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
15772         for the pointer addition and also use size_int/sizetype
15773         for the offset.
15774         (ix86_gimplify_va_arg): Likewise.
15775         Perform BIT_AND_EXPR on sizetype arguments.
15776         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
15777         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
15778         for the pointer additions and also use size_int for the offsets.
15779         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
15780         additions and also use size_int for the offsets.  Perform
15781         BIT_AND_EXPR on sizetype arguments.
15782         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
15783         POINTER_PLUS_EXPR for pointers and create the
15784         BIT_AND_EXPR in sizetype.
15785         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
15786         instead of PLUS_EXPR for pointer addition.
15787         (rs6000_va_start): Likewise.
15788         Also use sizetype for the offset.
15789         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
15790         as PLUS_EXPR/MINUS_EXPR.
15791         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
15792         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
15793         Don't use BIT_AND_EXPR on a pointer type, convert the
15794         expression to sizetype first.
15795         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
15796         for pointers.
15797         (mips_gimplify_va_arg_expr): Likewise.
15798         Don't create BIT_AND_EXPR in a pointer type.
15799
15800 2007-06-15  Eric Christopher  <echristo@apple.com>
15801
15802         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
15803         (x86_64-*-darwin*): Ditto.
15804         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
15805         for above.
15806
15807 2007-06-15  Matthew Wilcox <matthew@wil.cx>
15808
15809         * doc/extend.texi: Document behavior of __attribute__((aligned))
15810         on typedefs.
15811
15812 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
15813
15814         * rtlanal.c (note_stores): Improve documentation.
15815
15816 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
15817
15818         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
15819         LOCAL_LABEL_PREFIX): Delete.
15820         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
15821         (bfin_internal_label): Delete.
15822
15823 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
15824
15825         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
15826         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
15827         otherwise define to LIBGCC2_TF_CEXT.
15828         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
15829         (LIBGCC_TF_CEXT): Ditto.
15830         (TF_SIZE): Ditto.
15831
15832 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
15833
15834         PR rtl-optimization/32339
15835         * df-scan.c (df_uses_record): Don't modify flags but just add to
15836         it for df_ref_record.
15837
15838 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15839
15840         * tree-mudflap.c: Fix whitespace issues.
15841
15842 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
15843
15844         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
15845
15846 2007-06-14  Eric Christopher  <echristo@apple.com>
15847
15848         * config/i386/sse.md (movdi_to_sse): Rewrite body.
15849         (movv4sf): Use gcc_unreachable instead of abort.
15850
15851 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
15852
15853         PR target/32268
15854         * config/i386/sfp-machine.h (CMPtype): New define.
15855         (mach stubs): Use CMPtype instead of int as a return type.
15856
15857 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
15858
15859         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
15860         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
15861         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
15862         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
15863         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
15864         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
15865         config/soft-fp/soft-fp.h: Update from glibc CVS.
15866
15867 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
15868
15869         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
15870
15871 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15872
15873         PR target/32341
15874         * config/v850/v850.c: Include dataflow header file.
15875         (substitute_ep_register): Fix typo.
15876
15877 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
15878
15879         * configure.ac: Fix earlier checkin.
15880         * configure: Regenerated.
15881
15882 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
15883
15884         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
15885         * aclocal.m4: Regenerate.
15886         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
15887         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
15888         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
15889         * configure: Regenerate.
15890         * Makefile.in (LOOSE_WARN): Subst loose_warn.
15891
15892         * Makefile.in (quickstrap): Build libgcc too.
15893
15894 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
15895
15896         * configure.ac: Add --enable-checking=df.  Explicitly mention that
15897         the variables are initialized as for "release".
15898         * df-core.c: Use it.
15899         * configure: Regenerate.
15900         * config.in: Regenerate.
15901
15902 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
15903
15904         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
15905         validate_replace_rtx instead of replace_rtx.
15906         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
15907
15908 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
15909
15910         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
15911         (DWARF2_UNWIND_INFO): Override default if configured with
15912         SJLJ EH disabled.
15913         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
15914         (ENDFILE_SPEC): Add crtend.o.
15915         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
15916         (ENDFILE_SPEC): Add crtend.o.
15917         (TARGET_USE_JCR_SECTION): Define.
15918         (MD_UNWIND_SUPPORT): Define for 32-bit target.
15919
15920         * config/i386/cygming-crtbegin.c: New file.
15921         * config/i386/cygming-crtend.c: New file.
15922
15923 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
15924
15925         * config/i386/w32-unwind.h: New file.
15926
15927 2007-06-13  Eric Christopher  <echristo@apple.com>
15928
15929         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
15930         the user set a value below STACK_BOUNDARY.
15931
15932 2007-06-13  Thiemo Seufer  <ths@networkno.de>
15933
15934         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
15935         imply -lpthread for -pthread.
15936
15937 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
15938
15939         * basic-block.h: Remove the prototype for
15940         free_basic_block_vars.
15941         * cfglayout.h: Remove the prototype for
15942         insn_locators_initialize.
15943         * tree.h: Remove the prototype for emit_line_note.
15944
15945         * tree-ssa-pre.c (mergephitemp): Remove.
15946         (init_pre): Don't use mergephitemp.
15947
15948 2007-06-13  Eric Christopher  <echristo@apple.com>
15949
15950         * config/i386/i386.c (override_options): If we've specified
15951         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
15952
15953 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
15954
15955         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
15956         is defined.
15957
15958 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
15959
15960         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
15961         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
15962         (eh_store_handler): New pattern.
15963         (eh_return): Emit it instead of a plain move.
15964
15965 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
15966
15967         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
15968         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
15969         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
15970         def_builtin_const.
15971
15972 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
15973
15974         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
15975         (find_next_insn_start, find_load): New functions.
15976         (bfin_reorg): Use them to deal with the fact that parallel insns are
15977         no longer represented as a SEQUENCE.
15978
15979 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
15980
15981         * config/sparc/sparc.c (sparc_override_options): Initialize
15982         fpu mask correctly.
15983
15984 2007-06-13  Dave Korn  <dave.korn@artimi.com>
15985
15986         * config/i386/i386.c (ix86_eax_live_at_start_p): Use df_get_live_out.
15987
15988 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
15989
15990         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
15991         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
15992         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
15993         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
15994         tree-vect-transform.c: Fix comment typos.  Follow spelling
15995         conventions.
15996
15997 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
15998
15999         * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
16000         to the exit block use set.
16001         (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
16002         * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
16003         * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
16004
16005 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
16006
16007         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
16008         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
16009         to indicate an error.
16010         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
16011         New functions.
16012         (dbg_cnt_process_opt): Print an error on a bad argument.
16013         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
16014         * common.opt (-fdbg-cnt-list): New.
16015         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
16016
16017 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
16018
16019         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
16020         flag on ref-all pointers.
16021
16022 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16023
16024         PR middle-end/31579
16025         * expr.c (expand_expr_addr_expr_1): Call expand_expr
16026         for the offset with the modifier as EXPAND_INITIALIZER
16027         if the modifier is EXPAND_INITIALIZER.
16028         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
16029         a register if we had an overflow.
16030
16031 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16032
16033         * real.c (real_isfinite): New.
16034         (real_sqrt): Use it.
16035         * real.h (real_isfinite): New.
16036         * builtins.c: Use it.
16037
16038 2007-06-12  Ian Lance Taylor  <iant@google.com>
16039             Daniel Berlin  <dberlin@dberlin.org>
16040
16041         PR libstdc++/29286
16042         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
16043         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
16044         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
16045         (DECL_NO_TBAA_P): Define.
16046         (struct tree_decl_common): Add no_tbaa_flag field.
16047         * tree-ssa-structalias.c (struct variable_info): Add
16048         no_tbaa_pruning field.
16049         (new_var_info): Initialize no_tbaa_pruning field.
16050         (unify_nodes): Copy no_tbaa_pruning field.
16051         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
16052         (dump_solution_for_var): Print no_tbaa_pruning flag.
16053         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
16054         callers.
16055         (compute_tbaa_pruning): New static function.
16056         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
16057         Call compute_tbaa_pruning.
16058         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
16059         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
16060         * gimple-low.c (lower_stmt): Likewise.
16061         * tree-gimple.c (is_gimple_stmt): Likewise.
16062         * tree-ssa-operands.c (get_expr_operands): Likewise.
16063         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
16064         * tree-inline.c (estimate_num_insns_1): Likewise.
16065         (copy_result_decl_to_var): Likewise.
16066         * expr.c (expand_expr_real_1): Likewise.
16067         * tree-pretty-print.c (dump_generic_node): Likewise.
16068         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
16069         * omp-low.c (omp_copy_decl_2): Likewise.
16070         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
16071         * doc/c-tree.texi (Expression trees): Document
16072         CHANGE_DYNAMIC_TYPE_EXPR.
16073
16074 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16075
16076         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
16077         with !HONOR_NANS and !HONOR_INFINITIES.
16078         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
16079
16080 2007-06-12  Tristan Gingold  <gingold@adacore.com>
16081
16082         * gcov.c: Comments updated.
16083         (source_info): Add file_time field.
16084         (source_index): New variable.
16085         (mutiple_files): New variable.
16086         (generate_results): New function extracted from process_file.
16087         (process_file): Save and restore chain of functions, generate
16088         results and free structures only if not merging results.
16089         (release_structures): File names are now freed in create_file_names
16090         (create_file_names): Free previous file names.
16091         (find_source): File date is now read here and modifications in
16092         source files is checked here.
16093         (read_graph_file): Only reverse order of functions for the current
16094         object file.
16095         (make_gcov_file_name): Do not generate long names if input_name is
16096         NULL.
16097         (output_lines): If merging results do not display graph, data and
16098         runs informations.
16099         Checking source file modification is done in find_source.
16100
16101         * doc/gcov.texi: Append an s to sourcefile.
16102
16103 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
16104
16105         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
16106         (forced_nop): New pattern.
16107         * config/bfin/bfin.c: Include "df.h".
16108         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
16109         (bfin_discover_loop): Use df_get_live_in instead of
16110         global_live_at_start.
16111         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
16112         df_analyze when done.
16113         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
16114         the insns.  Use QImode for the final insn in a bundle.  Call
16115         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
16116         gen_nop.
16117         (reorder_var_tracking_notes): New function.
16118         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
16119         update_life_info.  Call df_analyze after scheduling and bundle
16120         generation.  Call reorder_var_tracking_notes if generating these
16121         notes.  Call df_finish_pass at the end.
16122
16123 2007-06-12  Dirk Mueller  <dmueller@suse.de>
16124
16125         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
16126         a comparison, not an assignment.
16127
16128 2007-06-12  Olivier Hainque  <hainque@adacore.com>
16129
16130         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
16131         Request walking the subtrees only, leaving the current is_lhs/val_only
16132         untouched.
16133         (convert_non_local_reference): Likewise.
16134
16135 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
16136
16137         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
16138
16139 2007-06-12  Richard Guenther  <rguenther@suse.de>
16140
16141         PR tree-optimization/15353
16142         PR tree-optimization/31657
16143         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
16144         * timevar.def: Add TV_TREE_IFCOMBINE.
16145         * tree-pass.h (pass_tree_ifcombine): Declare.
16146         * tree-ssa-ifcombine.c: New file.
16147         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
16148         * tree-flow.h (blocks_in_phiopt_order): Declare.
16149         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
16150         (tree-ssa-ifcombine.o): New dependencies.
16151
16152 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
16153
16154         PR rtl-optimization/32293
16155         * combine.c (simplify_if_then_else): Truncate return from
16156         nonzero_bits() to correct mode.
16157
16158 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
16159
16160         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
16161         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
16162
16163 2007-06-11  Diego Novillo  <dnovillo@google.com>
16164
16165         * Makefile.in (reload1.o-warn): Remove.
16166
16167 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
16168
16169         * combine.c (subst): Use reg_overlap_mentioned_p
16170         instead of comparing register numbers directly.
16171
16172 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
16173
16174         * reload1.c (mark_home_live_1): Use the mode parameter.
16175
16176 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
16177
16178         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
16179         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
16180         word "deferred".
16181         * df-core.c: Ditto.
16182
16183 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
16184
16185         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
16186
16187 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
16188
16189         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
16190         from integer registers.
16191         (FP mode splitters): Handle TFmode.
16192
16193 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
16194
16195         * tree-ssa-structalias.c (find_what_p_points_to): Return false
16196         for ref-all pointers that point-to anything.
16197
16198 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
16199
16200         * config/arm/arm.c (arm_output_dwarf_dtprel,
16201         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
16202
16203 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
16204
16205         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
16206         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
16207         to memory moves.
16208
16209 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
16210
16211         * tree.c (signed_or_unsigned_type_for): New.
16212         (unsigned_type_for): Use signed_or_unsigned_type_for.
16213         (signed_type_for): Use signed_or_unsigned_type_for.
16214         * tree.h (signed_or_unsigned_type_for): New.
16215         (get_signed_or_unsigned_type): Remove.
16216         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
16217         lang_hooks.types.signed_type
16218         (size_diffop): Likewise.
16219         (all_ones_mask_p): Likewise.
16220         (build_range_check): Likewise.
16221         (fold_cond_expr_with_comparison): Likewise.
16222         (fold_cond_expr_with_comparison): Likewise.
16223         (unextend): Likewise.
16224         (extract_muldiv_1): Likewise.
16225         (fold_single_bit_test_into_sign_test): Likewise.
16226         (fold_binary): Likewise.
16227         (fold_ternary): Likewise.
16228         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
16229         instead of get_signed_or_unsigned_type.
16230         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
16231         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
16232         * expr.c (signed_or_unsigned_type_for): Use
16233         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
16234         * langhooks.c (get_signed_or_unsigned_type): Remove.
16235         (lhd_signed_or_unsigned_type): Remove.
16236         * langhooks.h (lang_hooks_for_types): Remove signed_type and
16237         signed_or_unsigned_type.
16238         (lhd_signed_or_unsigned_type): Remove.
16239         * expmed.c (make_tree): Use signed_type_for instead of
16240         lang_hooks.types.signed_type.
16241         * c-common.c (same_scalar_type_ignoring_signedness): Use
16242         c_common_signed_type instead of lang_hooks.types.signed_type.
16243         (c_common_unsigned_type): New.
16244         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
16245         (shorten_compare): Use c_common_unsigned_type instead of
16246         c_common_signed_or_unsigned_type.
16247         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
16248         unsigned_type_for.
16249         * convert.c (convert_to_integer): Use signed_type_for instead of
16250         lang_hooks.types.signed_type.
16251         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
16252         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
16253         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
16254         * c-format.c (check_format_types): Use c_common_unsigned_type
16255         instead of unsigned_type_for.
16256         * c-decl.c (groakdeclarator): Likewise.
16257         * c-typeck.c (convert_for_assignment): Likewise.
16258         * c-common.h (c_common_unsigned_type): New.
16259
16260 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
16261
16262         PR target/32280
16263         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
16264         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
16265
16266 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
16267
16268         PR middle-end/32279
16269         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
16270         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
16271
16272 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
16273             Sebastian Pop  <sebpop@gmail.com>
16274
16275         * lambda-code.c (remove_iv): New.
16276         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
16277
16278 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
16279
16280         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
16281         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
16282         * tree-ssa-loop-prefetch.c: Include optabs.h.
16283         (FENCE_FOLLOWING_MOVNT): New macro.
16284         (struct mem_ref): Add independent_p and storent_p fields.
16285         (record_ref): Initalize the new fields.
16286         (gather_memory_references_ref): Return true if the reference
16287         could be analysed.
16288         (gather_memory_references): Check whether all memory accesses
16289         in loop were recorded.
16290         (should_issue_prefetch_p): Return false for nontemporal stores.
16291         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
16292         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
16293         (determine_loop_nest_reuse): Detect independent memory references.
16294         (loop_prefetch_arrays): Call mark_nontemporal_stores.
16295         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
16296         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
16297         * config/i386/i386.h (x86_mfence): Declare.
16298         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
16299         * config/i386/i386.c (x86_mfence): New variable.
16300         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
16301
16302         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
16303         * optabs.c (init_optabs): Initialize storent_optab.
16304         * optabs.h (enum optab_index): Add OTI_storent.
16305         (storent_optab): Declare.
16306         * genopinit.c (optabs): Add initialization for storent_optab.
16307         * tree.h (MOVE_NONTEMPORAL): New macro.
16308         * expr.c (expand_assignment, store_expr, store_constructor_field,
16309         store_constructor, store_field, expand_expr_real_1): Propagate
16310         nontemporality of the expanded store.
16311         (emit_storent_insn): New function.
16312         * expr.h (expand_assignment, store_expr): Declaration changed.
16313         * function.c (assign_parm_setup_reg): Pass false as nontemporality
16314         to expand_assignment.
16315         * stmt.c (expand_asm_expr): Ditto.
16316         * calls.c (initialize_argument_information): Pass false as
16317         nontemporality to store_expr.
16318         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
16319         storentsi): New.
16320
16321 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
16322
16323         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
16324         parameter, use it.
16325         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
16326
16327 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
16328
16329         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
16330         and allow DECL_P here.
16331
16332 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
16333
16334         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
16335         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
16336         track of the size of the expression.
16337         * cfghooks.c (merge_blocks): Remove block from loops structure only
16338         after call of the merge_blocks hook.
16339
16340 2007-06-09  Tom Tromey  <tromey@redhat.com>
16341
16342         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
16343         (deprecated_state): Removed.
16344         (start_decl): Update.
16345         (enum deprecated_states): Moved earlier.
16346         (groktypename): Update.
16347         (push_parm_decl): Likewise.
16348         (grokfield): Likewise.
16349         (start_function): Likewise.
16350
16351 2007-06-09  Ian Lance Taylor  <iant@google.com>
16352
16353         PR tree-optimization/32169
16354         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
16355         CONVERT_EXPR, check whether min and max both converted to an
16356         overflow infinity representation.
16357
16358 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
16359
16360         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
16361         not inserted on the edge.
16362
16363 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
16364
16365         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
16366         instructions if they are supported.
16367         (__divsi3, __umodsi3, __modsi3): Likewise.
16368         (__ashldi3, __ashrdi3, __lshrdi3): New.
16369         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
16370
16371 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
16372             Tony Linthicum <tony.linthicum@amd.com>
16373
16374         * doc/invoke.texi: Add fvect-cost-model flag.
16375         * common.opt (fvect-cost-model): New flag.
16376         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
16377         cost fields in stmt_vec_info struct for STMT.
16378         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
16379         fields in stmt_vec_info struct and access functions for the same.
16380         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
16381         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
16382         load, store and vector to scalar operation.
16383         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
16384         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
16385         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
16386         (TARG_VEC_STORE_COST): Define cost of vector store.
16387         (vect_estimate_min_profitable_iters): Define new function.
16388         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
16389         check to evaluate if loop iterations are less than minimum profitable
16390         iterations determined by cost model or minimum vect loop bound defined
16391         by user, whichever is more conservative.
16392         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
16393         run-time check to evaluate if loop iterations are less than minimum
16394         profitable iterations determined by cost model or minimum vect loop
16395         bound defined by user, whichever is more conservative.
16396         (vect_estimate_min_profitable_iterations): New function to estimate
16397         mimimimum iterartions required for vector version of loop to be
16398         profitable over scalar version.
16399         (vect_model_reduction_cost): New function.
16400         (vect_model_induction_cost): New function.
16401         (vect_model_simple_cost): New function.
16402         (vect_cost_strided_group_size): New function.
16403         (vect_model_store_cost): New function.
16404         (vect_model_load_cost): New function.
16405         (vectorizable_reduction): Call vect_model_reduction_cost during
16406         analysis phase.
16407         (vectorizable_induction): Call vect_model_induction_cost during
16408         analysis phase.
16409         (vectorizable_load): Call vect_model_load_cost during analysis phase.
16410         (vectorizable_store): Call vect_model_store_cost during analysis phase.
16411         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
16412         vectorizable_promotion, vectorizable_demotion): Call
16413         vect_model_simple_cost during analysis phase.
16414
16415 2007-06-08  Simon Baldwin  <simonb@google.com>
16416
16417         * reg-stack.c (get_true_reg): Readability change.  Moved default case
16418         label into direct switch statement scope.
16419
16420 2007-06-08  Simon Baldwin  <simonb@google.com>
16421
16422         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
16423         in gcc_assert() with '==' comparison.
16424
16425 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16426
16427         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
16428         TARGET_ABM handling of x86_popcnt variable.
16429
16430 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16431
16432         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
16433         __builtin_copysignq and __builtin_infq built-in functions.
16434
16435 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16436
16437         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
16438         SSE4.2 section.  Correct built-in function names in SSE4A section.
16439
16440 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16441
16442         PR tree-optimization/32243
16443         * tree-vect-transform.c (vectorizable_type_promotion): Move check
16444         for ncopies after ratio check between nunits_out and nunits_in.
16445         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
16446
16447 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
16448
16449         PR tree-optimization/32224
16450         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
16451         vectorization upon a non GIMPLE_MODIFY_STMT.
16452
16453 2007-06-08  Christian Bruel  <christian.bruel@st.com>
16454
16455         PR target/29953
16456         * config/sh/sh.md (doloop_end): New pattern and splitter.
16457         * loop-iv.c (simple_rhs_p): Check for hardware registers.
16458
16459 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
16460
16461         PR middle-end/32209
16462         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
16463         functions.
16464         (verify_dominators): Do not change dominance tree.
16465
16466 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
16467
16468         * config/sh/constraints.md: New file.
16469         * config/sh/sh.c: Include tm-constrs.h.
16470         (reg_class_from_letter): Remove.
16471         (prepare_cbranch_operands): Use satisfies_constraint_*
16472         function instead of macro.
16473         (andcosts, broken_move, sh_secondary_reload): Likewise.
16474         * config/sh/predicates.md (trapping_target_operand): Likewise.
16475         (and_operand, arith_operand, arith_reg_or_0_operand,
16476         cmp_operand, logical_operand, target_operand,
16477         ua_address_operand, ua_offset, xor_operand): Likewise.
16478         * config/sh/sh.md: Include constraints.md.
16479         (*movsicc_t_false): Use satisfies_constraint_* function
16480         instead of macro.
16481         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
16482         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
16483         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
16484         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
16485         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
16486         (REG_CLASS_FROM_CONSTRAINT): Remove.
16487         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
16488         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
16489         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
16490         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
16491         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
16492         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
16493         function instead of macro.
16494         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
16495         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
16496         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
16497         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
16498         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
16499         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
16500         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
16501         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
16502         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
16503         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
16504         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
16505         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
16506         EXTRA_CONSTRAINT_STR): Likewise.
16507         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
16508
16509 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
16510
16511         * config/i386/darwin.h (STACK_BOUNDARY): Define.
16512
16513 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
16514
16515         PR c++/30759
16516         * c-common.h (flag_cpp0x): Replaced by...
16517         (cxx_dialect): ... this new variable specifying the C++ dialect that
16518         is used.
16519         * c-common.c (flag_cpp0x): Removed.
16520         (cxx_dialect): Defined.
16521         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
16522         cxx_dialect.
16523         * c-opts.c (c_common_post_options): Likewise.
16524         (set_std_cxx98): Set cxx_dialect to cxx98.
16525         (set_std_cxx0x): Set cxx_dialect to cxx0x.
16526
16527 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
16528             Hui-May Chang <hm.chang@apple.com>
16529
16530         * doc/invoke.texi (Darwin Options): Update documentation for
16531         -mmacosx-version-min.
16532         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
16533         * config/darwin-driver.c: New file.
16534         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
16535         * config/t-darwin (darwin-driver.o): New rule.
16536
16537         * config/darwin-c.c (version_as_macro): Ignore low digit.
16538
16539 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
16540
16541         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
16542         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
16543         (CSGNMODE): New mode macro.
16544         (CSGNVMODE): New mode attribute.
16545         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
16546         expander using CSGNMODE mode macro.  Handle TFmode.
16547         (copysign<mode>3_const): Rename from copysignsf3_const and
16548         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
16549         Handle TFmode.
16550         (copysign<mode>3_var): Rename from copysignsf3_var and
16551         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
16552         Handle TFmode.
16553         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
16554         mode macro.  Handle TFmode.
16555         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
16556         (iortf3, *iortf3): Ditto.
16557         (xortf3, *xortf3): Ditto.
16558         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
16559         TFmode and TImode masks.
16560         (ix86_expand_copysign): Expand TFmode copysign insn.
16561         (IX86_BUILTIN_INFQ): New.
16562         (IX86_BUILTIN_FABSQ): Ditto.
16563         (IX86_BUILTIN_COPYSIGNQ): Ditto.
16564         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
16565         [__builtin_fabsq]: Ditto.
16566         [__builtin_copysignq]: Ditto.
16567         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
16568         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
16569         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
16570         ix86_expand_binop_builtin().
16571
16572 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
16573
16574         * config/xtensa/lib1funcs.asm: Clean up whitespace.
16575
16576 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
16577
16578         PR target/31850
16579         * rtl.h (push_to_sequence2): New.
16580         * emit-rtl.c (push_to_sequence2): New.
16581         * function.c (assign_parm_data_all): Add new fields.
16582         (assign_parm_setup_block): Call push_to_sequence2 instead of
16583         push_to_sequence.
16584         (assign_parm_setup_reg): Ditto.
16585         (assign_parm_setup_stack): Ditto.
16586         (assign_parms_unsplit_complex): Ditto.
16587         (assign_parms): Change field name.
16588
16589 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
16590
16591         PR tree-optimization/32220
16592         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
16593         phi node is reached before defining statement.
16594
16595 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16596
16597         PR tree-opt/32231
16598         * tree-vect-transform.c (vectorizable_call): Call update_stmt
16599         after changing the right hand side of the assignment.
16600
16601 2007-06-06  Eric Christopher  <echristo@apple.com>
16602
16603         * config.gcc (i?86-*-darwin*): Remove arch parameter.
16604         (x86_64-*-darwin*): Ditto.
16605         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
16606         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
16607
16608 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
16609
16610         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
16611         coding conventions.
16612         (add_key): Likewise.
16613         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
16614         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
16615         variable names.
16616         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
16617         macros.
16618         (add_cost_one_coalesce): Likewise.
16619         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
16620         variable names. Rename orig to orig_name for consistency.
16621         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
16622         coding conventions.
16623         (cprop_into_successor_phis): Avoid using C++ keywords as variable
16624         names.
16625         (record_equivalences_from_stmt): Likewise.
16626         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
16627         the coding conventions.
16628         (memory_ssa_name_same): Likewise.
16629         (dse_optimize_stmt): Likewise.
16630         (dse_record_phis): Likewise.
16631         (dse_finalize_block): Likewise.
16632         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
16633         keywords as variable names.
16634         (may_move_till): Cast according to the coding conventions.
16635         (force_move_till_expr): Avoid using C++ keywords as variable names.
16636         (force_move_till): Cast according to the coding conventions.
16637         (memref_hash): Likewise.
16638         (memref_eq): Likewise.
16639         (gather_mem_refs_stmt): Likewise.
16640         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
16641         using C++ keywords as variable names.
16642         (idx_find_step): Cast according to the coding conventions.
16643         (idx_record_use): Likewise.
16644         (find_depends): Likewise.
16645         (prepare_decl_rtl): Likewise.
16646         (mbc_entry_hash): Likewise.
16647         (mbc_entry_eq): Likewise.
16648         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
16649         (simplify_replace_tree): Avoid using C++ keywords as variable names.
16650         (idx_infer_loop_bounds): Cast according to the coding conventions.
16651         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
16652         * tree-ssa-math-opts.c (occ_new ): Likwise.
16653         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
16654         macros.
16655         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
16656         variable names.
16657         (add_use_op): Likewise.
16658         (add_vop): Likewise.
16659         (add_vuse_op): Likewise.
16660         (add_vdef_op): Likewise.
16661         (get_expr_operands): Likewise.
16662         (push_stmt_changes): Use type safe memory macros.
16663         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
16664         keywords as variable names.
16665         (conditional_replacement): Likewise.
16666         (minmax_replacement): Likewise.
16667         (abs_replacement): Likewise.
16668         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
16669         coding conventions.
16670         (insert_fake_stores): Avoid using C++ keywords as variable names.
16671         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
16672         conventions.
16673         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
16674         (heapvar_insert): Use type safe memory macros.
16675         (new_var_info): Cast according to the coding conventions.
16676         (new_constraint): Likewise.
16677         (remove_preds_and_fake_succs): Use type safe memory macros.
16678         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
16679         conventions.
16680         (thread_single_edge): Likewise.
16681         (thread_through_loop_header): Likewise.
16682
16683 2007-06-06  Eric Christopher  <echristo@apple.com>
16684
16685         * config/i386/i386.c (override_options): Move handling
16686         of TARGET_SUBTARGET* earlier.
16687
16688 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
16689
16690         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
16691         use %n on printf.
16692
16693 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
16694
16695         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
16696         emited outside of basic block.
16697         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
16698         the created blocks.
16699         * rtl.h (delete_insn_chain): Declaration changed.
16700         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
16701         non-removed insns.
16702         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
16703         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
16704         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
16705         to delete_insn_chain.
16706         (rtl_verify_flow_info_1): Verify that the insns in header and footer
16707         do not have bb field set.
16708         (rtl_verify_flow_info): Verify that insns between basic blocks do not
16709         have bb field set.
16710         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
16711         * cfgcleanup.c (try_optimize_cfg): Ditto.
16712
16713 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
16714
16715         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
16716         (lambda_body_vector_new): Use type safe memory macros.
16717         (lambda_linear_expression_new): Likewise.
16718         (lambda_loopnest_new): Likewise.
16719         (lambda_lattice_new): Likewise.
16720         (replace_uses_equiv_to_x_with_y): Cast according to the coding
16721         conventions. Use type safe memory macros.
16722         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
16723         (lambda_body_vector_s): Likewise.
16724         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
16725         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
16726
16727 2007-06-06  Richard Guenther  <rguenther@suse.de>
16728
16729         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
16730         if we need to schedule cfg_cleanup.
16731         (tree_ssa_forward_propagate_single_use_vars): Do so.
16732
16733 2007-06-06  Ian Lance Taylor  <iant@google.com>
16734
16735         * fold-const.c (merge_ranges): If range_successor or
16736         range_predecessor fail, just return 0.
16737
16738 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
16739
16740         PR tree-optimization/32216
16741         * tree-vectorizer.c (supportable_widening_operation): Determine
16742         signedness of FIX_TRUNC_EXPR from output operand.
16743         (supportable_narrowing_operation): Ditto.
16744         * tree-vect-generic.c (expand_vector_operations_1): Determine
16745         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
16746         from input operand.
16747
16748 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
16749
16750         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
16751         (struct pta): ...from here. Change flags to unsigned to avoid
16752         excessive casting (as it is used as a bit mask).
16753         (override_options): Add casts according to the coding convenventions.
16754         (x86_64_elf_unique_section): Likewise.
16755         (examine_argument): Avoid using C++ keywords as variable names.
16756         (construct_container): Likewise.
16757         (legitimize_pic_address): Likewise.
16758         (get_dllimport_decl): Cast according to the coding conventions. Use
16759         type safe memory macros.
16760         (legitimize_address): Cast according to the coding conventions.
16761         (emit_i387_cw_initialization): Corrected the type of slot to enum
16762         ix86_stack_slot.
16763         (ix86_init_machine_status): Use type safe memory macros.
16764         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
16765         (bdesc_pcmpistr): Likewise.
16766         (bdesc_crc32): Likewise.
16767         (bdesc_sse_3arg): Likewise.
16768         (bdesc_2arg): Likewise.
16769         (bdesc_1arg): Likewise.
16770         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
16771         (ix86_expand_sse_pcmpistr): Likewise.
16772         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
16773         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
16774         int to match the langhook definition.
16775         (ix86_builtin_conversion): Change the type of code to unsigned init to
16776         match the langhook definition.
16777         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
16778         names.
16779         (ix86_preferred_output_reload_class): Likewise.
16780         (ix86_cannot_change_mode_class): Likewise.
16781         (ix86_memory_move_cost): Likewise.
16782         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
16783         avoid excessive casting later on.
16784         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
16785
16786 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
16787
16788         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
16789         as flags setting insn.
16790         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
16791
16792 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
16793
16794         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
16795         (UNSPEC_ROUND): New.
16796         ("sse4_1_round<mode>2"): New insn pattern.
16797         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
16798         SSE4.1 targets.
16799         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
16800         expander using SSEMODEF mode macro.  Expand using
16801         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
16802         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
16803         expander using SSEMODEF mode macro.  Expand using
16804         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
16805         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
16806         expander using SSEMODEF mode macro.  Expand using
16807         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
16808         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
16809         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
16810         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
16811         UNSPEC_ROUNDS.
16812
16813 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
16814             Sebastian Pop  <sebpop@gmail.com>
16815
16816         * lambda.h (build_linear_expr): New.
16817         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
16818         Use build_linear_expr, call fold and force_gimple_operand.
16819         (lambda_loopnest_to_gcc_loopnest): Check that there is
16820         something to insert.
16821         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
16822
16823 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
16824
16825         PR preprocessor/23479
16826         * doc/extend.texi: Document the 0b-prefixed binary integer
16827         constant extension.
16828
16829 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
16830
16831         PR tree-optimization/32215
16832         * tree-vectorizer.c (supportable_widening_operation): Return false
16833         for unsupported FIX_TRUNC_EXPR tree code.
16834         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
16835
16836 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
16837
16838         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
16839         register on SPE targets.  Change documentation to reflect
16840         reality.
16841         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
16842         Change FIXED_SCRATCH to 14 and document why we're keeping r14
16843         out of the register allocation pool.
16844         (rs6000_reg_live_or_pic_offset_p): New function.
16845         (rs6000_emit_prologue): Move the actual saving of LR up to free
16846         r0 for holding r11.  Split saving of SPE 64-bit registers into
16847         its own case.  Ensure that offsets will always be in-range for
16848         'evstdd' by using r11 as a scratch register to point at the start
16849         of the SPE save area.  Save r11 if necessary, as it is the static
16850         chain register.
16851         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
16852         into its own case.  Ensure that offsets will always be in-range
16853         for 'evldd' by using r11 as a scratch register to point at the
16854         start of the SPE save area.  Also adjust r11 when restoring
16855         the stack pointer to compensate for pre-loading r11.
16856
16857 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
16858
16859         * cfg.c (init_flow): Use type safe memory macros.
16860         (alloc_block): Likewise.
16861         (unchecked_make_edge): Likewise.
16862         (dump_flow_info): Avoid using C++ keywords as variable names.
16863         (copy_original_table_clear): Cast according to the coding conventions.
16864         (copy_original_table_set): Likewise.
16865         * cfgexpand (label_rtx_for_bb): Likewise.
16866         (expand_gimple_basic_block): Likewise.
16867         * cfghooks.c (dump_bb): Likewise.
16868         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
16869         variable names.
16870         (lv_add_condition_to_bb): Likewise.
16871         * cfglayout (relink_block_chain): Cast according to the coding
16872         conventions.
16873         (fixup_reorder_chain): Likewise.
16874         (fixup_fallthru_exit_predecessor): Likewise.
16875         * cfgloop.c (glb_enum_p): Likewise.
16876         (get_exit_description): Likewise.
16877         (dump_recorded_exit): Likewise.
16878         * cfgloop.h (enum loop_estimation): Move out of struct scope...
16879         (struct loop): ... from here.
16880         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
16881         conventions.
16882         * cfgrtl.c (rtl_create_basic_block): Likewise.
16883         (rtl_split_block): Likewise.
16884         (rtl_dump_bb): Likewise.
16885         (cfg_layout_split_block): Likewise.
16886         (init_rtl_bb_info): Use typesafe memory macros.
16887
16888         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
16889         * graphds.h: Updated all usages of edge to graph_edge.
16890         * graphds.c: Likewise.
16891         * cfgloopanal.c: Likewise.
16892
16893 2007-06-05  Ian Lance Taylor  <iant@google.com>
16894
16895         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
16896         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
16897         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
16898         expression.
16899         (test_for_singularity): Likewise.
16900
16901 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
16902
16903         * config/i386/constraints.md ("Y2"): Replaced by ...
16904         ("Yt"): This.
16905         * config/i386/i386.md: Likewise.
16906         * config/i386/mmx.md: Likewise.
16907         * config/i386/sse.md: Likewise.
16908
16909 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
16910
16911         * config/i386/constraints.md ("z"): Replaced by ...
16912         ("Y0"): This.
16913         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
16914         (sse4_1_blendvps): Likewise.
16915         (sse4_1_pblendvb): Likewise.
16916         (sse4_2_pcmpestr): Likewise.
16917         (sse4_2_pcmpestrm): Likewise.
16918         (sse4_2_pcmpestr_cconly): Likewise.
16919         (sse4_2_pcmpistr): Likewise.
16920         (sse4_2_pcmpistrm): Likewise.
16921         (sse4_2_pcmpistr_cconly): Likewise.
16922
16923 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
16924
16925         * matrix-reorg.c (transform_access_sites): Fix computation.
16926         (transform_allocation_sites): Same.
16927
16928 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
16929
16930         * config/i386/i386.c (override_options): Use
16931         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
16932
16933 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
16934
16935         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
16936         (nonimm_not_xmm0_operand): Ditto.
16937         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
16938         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
16939         as operand[2] predicate.  Require "z" class XMM register for
16940         operand[3].  Adjust asm template.
16941         ("sse4_1_blendvpd"): Ditto.
16942         ("sse4_1_pblendvb"): Ditto.
16943         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
16944         force op2 into xmm0 register for variable blend instructions.
16945
16946 2007-06-04  Tom Tromey  <tromey@redhat.com>
16947
16948         * c-tree.h (start_enum): Update.
16949         (build_enumerator): Likewise.
16950         * c-decl.c (enum_next_value): Removed.
16951         (enum_overflow): Likewise.
16952         (start_enum): Add c_enum_contents argument.  Don't use globals.
16953         (build_enumerator): Likewise.
16954         * c-tree.h (struct c_enum_contents): New struct.
16955
16956 2007-06-04  Tom Tromey  <tromey@redhat.com>
16957
16958         * c-common.c (c_common_get_alias_set): Fix indentation.
16959
16960 2007-06-04  Ian Lance Taylor  <iant@google.com>
16961
16962         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
16963         to overflow, reduce overflow infinity to regular infinity.
16964         (vrp_var_may_overflow): New static function.
16965         (vrp_visit_phi_node): Check vrp_var_may_overflow.
16966
16967 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
16968
16969         * stor-layout.c (layout_type): Remove duplicate code.
16970
16971 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
16972
16973         PR c/32191
16974         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
16975         before build_common_builtin_nodes ().
16976
16977 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
16978
16979         PR target/31733
16980         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
16981
16982 2007-06-04  Jan Hubicka  <jh@suse.cz>
16983
16984         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
16985         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
16986         instead of _stat version.
16987
16988 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
16989
16990         PR tree-optimization/32194
16991         * tree-predcom.c (determine_offset): Check that both references have
16992         the same type.
16993
16994 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
16995
16996         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
16997         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
16998         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
16999         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
17000         Add argument to iterate_fix_dominators call.
17001         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
17002         * gcse.c (hoist_code): Change domby to vector.
17003         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
17004         Add argument to iterate_fix_dominators call.
17005         * loop-doloop.c (doloop_modify): Changed recount_dominator to
17006         recompute_dominator.
17007         * lambda-code.c (perfect_nestify): Ditto.
17008         * cfgloopanal.c: Include graphds.h.
17009         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
17010         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
17011         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
17012         add_edge call.
17013         * graphds.c: New file.
17014         * graphds.h: New file.
17015         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
17016         (get_dominated_by, get_dominated_by_region): Change return type to
17017         vector.
17018         (verify_dominators): Recompute all dominators and compare the results.
17019         (recount_dominator): Renamed to ...
17020         (recompute_dominator): ... this.  Do not check that the block is
17021         dominated by entry.
17022         (iterate_fix_dominators): Reimplemented.
17023         (prune_bbs_to_update_dominators, root_of_dom_tree,
17024         determine_dominators_for_sons): New functions.
17025         * et-forest.c (et_root): New function.
17026         * et-forest.h (et_root): Declare.
17027         * Makefile.in (graphds.o): Add.
17028         (cfgloopanal.o): Add graphds.h dependency.
17029         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
17030         * basic-block.h (get_dominated_by, get_dominated_by_region,
17031         iterate_fix_dominators): Declaration changed.
17032         (recount_dominator): Renamed to ...
17033         (recompute_dominator): ... this.
17034         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
17035         (thread_through_all_blocks): Do not free dominance info.
17036
17037 2007-06-03  Andreas Schwab  <schwab@suse.de>
17038
17039         * config/m68k/m68k.c (override_options): Don't override
17040         REAL_MODE_FORMAT.
17041         * config/m68k/m68k-modes.def (SF, DF): Define to use
17042         motorola_single_format and motorola_double_format, resp.
17043         * real.c (motorola_single_format): Renamed from
17044         coldfire_single_format.
17045         (motorola_double_format): Renamed from coldfire_double_format.
17046         (encode_ieee_extended): Generate a proper canonical NaN image
17047         respecting canonical_nan_lsbs_set.
17048         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
17049         true.
17050         * real.h: Adjust declarations.
17051
17052 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
17053
17054         PR target/32163
17055         * config/sh/sh.md (symGOT_load): Don't schedule insns when
17056         the symbol is generated with the stack protector.
17057
17058 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
17059
17060         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
17061         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
17062         "interrupt".
17063         * doc/extend.texi (interrupt): Mention m68k.
17064
17065 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
17066
17067         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
17068         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
17069         (ix86_expand_sse_pcmpestr): Do not check operands for
17070         "register_operand", when insn operand predicate is "register_operand".
17071         (ix86_expand_sse_pcmpistr): Ditto.
17072
17073 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
17074             Uros Bizjak  <ubizjak@gmail.com>
17075
17076         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
17077         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
17078         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
17079         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
17080         * config/i386/constraints.md ("z"): New register constraint
17081         for members of SSE_FIRST_REG class.
17082         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
17083         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
17084         SSE_FIRST_REG class.
17085         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
17086         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
17087         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
17088         (IX86_BUILTIN_PCMPESTRM128): Likewise.
17089         (IX86_BUILTIN_PCMPESTRA128): Likewise.
17090         (IX86_BUILTIN_PCMPESTRC128): Likewise.
17091         (IX86_BUILTIN_PCMPESTRO128): Likewise.
17092         (IX86_BUILTIN_PCMPESTRS128): Likewise.
17093         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
17094         (IX86_BUILTIN_PCMPISTRI128): Likewise.
17095         (IX86_BUILTIN_PCMPISTRM128): Likewise.
17096         (IX86_BUILTIN_PCMPISTRA128): Likewise.
17097         (IX86_BUILTIN_PCMPISTRC128): Likewise.
17098         (IX86_BUILTIN_PCMPISTRO128): Likewise.
17099         (IX86_BUILTIN_PCMPISTRS128): Likewise.
17100         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
17101         (struct builtin_description): Change "flag" field to unsigned.
17102         (bdesc_pcmpestr): New builtin description table.
17103         (bdesc_pcmpistr): Likewise.
17104         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
17105         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
17106         Initialize pcmp[ei]str[im] insns for SSE4.2.
17107         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
17108         (ix86_expand_sse_pcmpistr): Likewise.
17109         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
17110         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
17111         (UNSPEC_PCMPISTR): Likewise.
17112         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
17113         (sse4_2_pcmpestri):New isns pattern.
17114         (sse4_2_pcmpestrm): Likewise.
17115         (sse4_2_pcmpestr_cconly): Likewise.
17116         (sse4_2_pcmpistr): New insn patern and splitter.
17117         (sse4_2_pcmpistri):New isns pattern.
17118         (sse4_2_pcmpistrm): Likewise.
17119         (sse4_2_pcmpistr_cconly): Likewise.
17120         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
17121         in SSE4.2.
17122
17123 2007-06-01  David Daney  <ddaney@avtrex.com>
17124
17125         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
17126         LOADGP_ABSOLUTE and not binds_local_p.
17127
17128 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
17129
17130         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
17131
17132 2007-06-01  Ian Lance Taylor  <iant@google.com>
17133
17134         * tree-vrp.c (compare_name_with_value): Always set
17135         used_strict_overflow if we get a result from the variable itself.
17136
17137 2007-06-01  Ian Lance Taylor  <iant@google.com>
17138
17139         PR rtl-optimization/31455
17140         * lower-subreg.c (find_decomposable_subregs): Don't decompose
17141         subregs which have a cast between modes which are not tieable.
17142
17143 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
17144
17145         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
17146         breaks after return statements.
17147
17148 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
17149
17150         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
17151         only after no_new_pseudos.
17152
17153 2007-05-31  Eric Christopher  <echristo@apple.com>
17154
17155         * expr.c (convert_move): Assert that we don't have a BLKmode
17156         operand.
17157         (store_expr): Handle BLKmode moves by calling emit_block_move.
17158
17159 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
17160
17161         * c-typeck.c (build_indirect_ref): Include type in error message.
17162         (build_binary_op): Pass types to binary_op_error.
17163         * c-common.c (binary_op_error): Take two type arguments, print out
17164         types with error.
17165         * c-common.h (binary_op_error): Update prototype.
17166
17167 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
17168
17169         * config/i386/i386.c: Correct coments on -mno-sse4.
17170
17171 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
17172
17173         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
17174         (x86_64-*-*): Likewise.
17175         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
17176         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
17177         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
17178         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
17179         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
17180         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
17181         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
17182         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
17183         (OPTION_MASK_ISA_SSE4): Likewise.
17184         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
17185         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
17186         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
17187         (override_options): Support SSE4.2.
17188         (ix86_build_const_vector): Support SImode and DImode.
17189         (ix86_build_signbit_mask): Likewise.
17190         (ix86_expand_int_vcond): Support V2DImode.
17191         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
17192         (IX86_BUILTIN_CRC32HI): Likewise.
17193         (IX86_BUILTIN_CRC32SI): Likewise.
17194         (IX86_BUILTIN_CRC32DI): Likewise.
17195         (IX86_BUILTIN_PCMPGTQ): Likewise.
17196         (bdesc_crc32): Likewise.
17197         (bdesc_sse_3arg): Likewise.
17198         (ix86_expand_crc32): Likewise.
17199         (ix86_init_mmx_sse_builtins): Support SSE4.2.
17200         (ix86_expand_builtin): Likewise.
17201         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
17202         __SSE4_2__ for -msse4.2.
17203         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
17204         (CRC32MODE): Likewise.
17205         (crc32modesuffix): Likewise.
17206         (crc32modeconstraint): Likewise.
17207         (sse4_2_crc32<mode>): Likewise.
17208         (sse4_2_crc32di): Likewise.
17209         * config/i386/i386.opt (msse4.2): New for SSE4.2.
17210         (msse4): Likewise.
17211         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
17212         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
17213         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
17214         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
17215         (vcondu<mode>): Likewise.
17216         * doc/extend.texi: Document SSE4.2 built-in functions.
17217         * doc/invoke.texi: Document -msse4.2/-msse4.
17218
17219 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
17220
17221         PR tree-optimization/32160
17222         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
17223         variable as gimple reg.
17224         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
17225
17226 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
17227
17228         * gcc.c (main): Don't consider linker options when issuing the
17229         warning about a linker input file not being used.
17230
17231 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17232
17233         * tree-vrp.c (compare_names): Initialize sop.
17234
17235 2007-05-30  Dirk Mueller  <dmueller@suse.de>
17236
17237         * cgraphunit.c (cgraph_analyze_function): Remove
17238         computation of inline parameters.
17239
17240 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
17241
17242         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
17243
17244 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
17245
17246         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
17247         Add vx-common.h.  Include vxworks.h between vx-common.h and
17248         arm/vxworks.h.
17249         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
17250         redefining.
17251         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
17252         (TARGET_ASM_DESTRUCTOR): Likewise.
17253         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
17254         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
17255         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
17256         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
17257         (VXWORKS_ENDIAN_SPEC): Define.
17258         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
17259         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
17260         VXWORKS_* equivalents.
17261         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
17262         (ASM_FILE_START): Delete.
17263         (TARGET_VERSION): Reformat.
17264         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
17265         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
17266         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
17267         (FPBIT, DPBIT): Define.
17268         (fp-bit.c, dp-bit.c): New rules.
17269         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
17270         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
17271         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
17272         * config/arm/arm.h: Include vxworks-dummy.h.
17273         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
17274         Mark with ATTRIBUTE_UNUSED.
17275         (arm_override_options): Do not allow VxWorks RTP PIC to be used
17276         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
17277         make it incompatible with -msingle-pic-base.
17278         (arm_function_ok_for_sibcall): Return false for calls that might
17279         go through a VxWorks PIC PLT entry.
17280         (require_pic_register): New function, split out from...
17281         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
17282         for VxWorks RTPs.
17283         (arm_load_pic_register): Handle the VxWorks RTP initialization
17284         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
17285         (arm_emit_call_insn): New function.
17286         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
17287         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
17288         (pic_offset_arm): New pattern.
17289         (call, call_value): Use arm_emit_call_insn.
17290         (call_internal, call_value_internal): New expanders.
17291         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
17292         VxWorks unless __PIC__.
17293
17294 2007-05-30  Eric Christopher  <echristo@gmail.com>
17295
17296         * genrecog.c: Include regs.h in generated file.
17297         * genemit.c: Ditto. Fix up formatting.
17298         * config/mn10300/constraints.md: New.
17299         * config/mn10300/mn10300.md: Include.
17300         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
17301         Fix up for removed macro.
17302         * config/mn10300/predicates.md (call_address_operand): Ditto.
17303         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
17304         (CONST_OK_FOR_I): Ditto.
17305         (CONST_OK_FOR_J): Ditto.
17306         (CONST_OK_FOR_K): Ditto.
17307         (CONST_OK_FOR_L): Ditto.
17308         (CONST_OK_FOR_M): Ditto.
17309         (CONST_OK_FOR_N): Ditto.
17310         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
17311         (OK_FOR_Q): Ditto.
17312         (OK_FOR_R): Ditto.
17313         (OK_FOR_T): Ditto.
17314         (EXTRA_CONSTRAINT): Ditto.
17315
17316 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
17317
17318         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
17319         Remove defines.
17320         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
17321         OPTION_MASK_ISA_64BIT.
17322         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
17323
17324 2007-05-30  Richard Guenther  <rguenther@suse.de>
17325
17326         PR middle-end/32152
17327         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
17328         types for comparison.
17329         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
17330         with original typed arguments.
17331         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
17332
17333 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
17334
17335         PR tree-optimization/31769
17336         * except.c (duplicate_eh_regions): Clear prev_try if
17337         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
17338
17339 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
17340
17341         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
17342         * tree-ssa-sink.c (statement_sink_location): Return basic block and
17343         bsi of the location where statements should be inserted.
17344         (sink_code_in_bb): Take bsi from statement_sink_location.
17345         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
17346         instead of bsi_start.
17347         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
17348         bsi_insert_after.
17349         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
17350         (bsi_move_before): Document inconsistency with bsi_move_after.
17351         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
17352
17353 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
17354
17355         * config/i386/i386.h (TARGET_ABM): New define.
17356         (TARGET_POPCNT): Ditto.
17357         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
17358         New temporary defines to redefine from OPTION_ISA_* defines.
17359         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
17360         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
17361         (ix86_isa_flags): New extern int declaration.
17362         (TARGET_SUBTARGET_DEFAULT): New define.
17363         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
17364         (TARGET_SUBTARGET32_DEFAULT): Ditto.
17365         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
17366         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
17367         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
17368         * config/i386/darwin.h: Change TARGET_64BIT define to
17369         OPTION_ISA_64BIT.
17370
17371         * config/i386/i386.opt (m3dnowa): Define as undocumented option
17372         using existing "ix86_isa_flags" varible.
17373         (m32, m64): Use existing "ix86_isa_flags" variable.
17374         (mmmx, m3dnow): Ditto.
17375         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
17376         (mabm): Define as non-negative option using "x86_abm" variable.
17377         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
17378
17379         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
17380         Rewrite feature test bitmap.
17381         (ix86_isa_flags): New initialized global int varible.
17382         (ix86_isa_flags_explicit): New static int variable.
17383         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
17384         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
17385         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
17386         target_flags_explicit.
17387         (override_options): Remove "target_enable" and "target_disable" fields
17388         from "struct ptt". Update processor_target_table accordingly. Remove
17389         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
17390         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
17391         "target_flags" and "ix86_isa_flags_explicit" instead of
17392         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
17393         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
17394         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
17395         to true when either of PTA_POPCNT or PTA_ABM is set in
17396         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
17397         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
17398         processor_alias_table flags entry.  Remove handling of
17399         "target_enable" and "target_disable" fields of processor_target_table.
17400         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
17401         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
17402         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
17403         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
17404         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
17405         "target_flags".
17406         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
17407
17408 2007-05-29  David Daney  <ddaney@avtrex.com>
17409
17410         PR gcc/31975
17411         * config/mips/mips.c (mips_output_mi_thunk): Emit
17412         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
17413
17414 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
17415         * config/i386/i386.c (ix86_function_regparm): Added checking of
17416         ix86_force_align_arg_pointer to determine the number of
17417         register parameters.
17418
17419 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
17420
17421         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
17422         (SET_DR_MISALIGNMENT): New.
17423         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
17424         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
17425         Use SET_DR_MISALIGNMENT.
17426         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
17427         pointer.
17428         * tree-data-ref.c (create_data_ref, compute_all_dependences,
17429         find_loop_nest): Export.
17430         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
17431         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
17432         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
17433         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
17434         New macros.
17435         (struct mem_ref): Add field reuse_distance.
17436         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
17437         Initialize reuse_distance field.
17438         (issue_prefetch_ref): Select temporality of prefetch according to
17439         reuse_distance.
17440         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
17441         self_reuse_distance, determine_loop_nest_reuse): New functions.
17442         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
17443         (tree_ssa_prefetch_arrays): Dump L2 cache size.
17444         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
17445         dependency.
17446
17447 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
17448
17449         * tree-ssa-alias.c: Add aliasing overview.
17450
17451 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
17452             Danny Smith  <dannysmith@users.sourceforge.net>
17453
17454         PR target/29498
17455         * config/i386/t-crtfm: Compile crtfastmath.o with
17456         -minline-all-stringops.
17457         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
17458         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
17459
17460 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17461
17462         * doc/md.texi: Document constraints on HP PA-RISC.
17463
17464         * pa/constraints.md: New file.
17465         * pa.md: Include constraints.md.
17466         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
17467         (integer_store_memory_operand, ldil_cint_p): New functions.
17468         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
17469         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
17470         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
17471         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
17472         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
17473
17474 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
17475
17476         PR c/31339
17477         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
17478         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
17479         case POSTDECREMENT_EXPR>): Return the error_mark_node
17480         if either the real or imaginary parts would an
17481         error_mark_node.
17482
17483 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
17484
17485         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
17486         name when we remove it from a call.
17487
17488 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
17489
17490         * targhooks.c (default_narrow_bitfield): Remove.
17491         * targhooks.h: Remove the prototype for
17492         default_narrow_bitfield.
17493
17494         * langhooks-def.h: Remove the prototype for
17495         hook_get_alias_set_0.
17496         * langhooks.c (hook_get_alias_set_0): Remove.
17497
17498         * global.c (EXECUTE_IF_CONFLICT): Remove.
17499
17500 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17501
17502         PR tree-opt/32100
17503         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
17504         return true when truth_value_p is true and the type
17505         is of signed:1.
17506
17507 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
17508
17509         * doc/install.texi (Prerequisites): We no longer require Autoconf
17510         2.13 for the top-level.
17511
17512 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
17513
17514         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
17515         memory access via x86_expand_vector_move_misalign() only for
17516         TImode values on 32-bit targets.
17517
17518 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
17519
17520         * matrix-reorg.c: New file. Implement matrix flattening and
17521         transposing optimization.
17522         * tree-pass.h: Add matrix reorg pass.
17523         * common.opt: Add fipa-mreorg flag.
17524         * Makefile.in: Add matrix-reorg.c.
17525         * passes.c: Add matrix reorg pass.
17526         * varpool.c (add_new_static_var): New function.
17527         * cgraph.h (add_new_static_var): Declare.
17528
17529 2007-05-27  Eric Christopher  <echristo@apple.com>
17530
17531         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
17532         sp_offset depending on stack size. Save r12 depending
17533         on registers we're saving later.
17534         (rs6000_emit_epilogue): Update sp_offset depending only
17535         on stack size.
17536
17537 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
17538
17539         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
17540         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
17541         * ifcvt.c (if_convert): Ditto.
17542         * tree-ssa-threadupdate.c (thread_block): Ditto.
17543         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
17544         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
17545         verify_loop_closed_ssa): Check number_of_loops instead of
17546         current_loops.
17547         * predict.c (tree_estimate_probability): Ditto.
17548         * tree-if-conv.c (main_tree_if_conversion): Ditto.
17549         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
17550         * modulo-sched.c (sms_schedule): Ditto.
17551         * tree-scalar-evolution.c (scev_const_prop): Ditto.
17552         (scev_finalize): Do not do anything if scev analysis was not
17553         initialized.
17554         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
17555         current_loops == NULL.
17556         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
17557         * loop-init.c (loop_optimizer_init): Do not free current_loops when
17558         there are no loops.
17559         (loop_optimizer_finalize): Assert that loops were analyzed.
17560         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
17561         rtl_doloop): Check number_of_loops instead of current_loops.
17562         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
17563         current_loops == NULL.
17564         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
17565         gate_tree_vectorize tree_linear_transform, check_data_deps,
17566         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
17567         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
17568         Check number_of_loops instead of current_loops.
17569         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
17570         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
17571         free loops if available.
17572         (execute_pre): Do not pass do_fre to fini_pre.
17573
17574 2007-05-27  Tobias Burnus  <burnus@net-b.de>
17575
17576         PR middle-end/32083
17577         * real.c (mpfr_from_real): Fix sign of -Inf.
17578
17579 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
17580
17581         * tree-vect-transform.c (vectorizable_conversion): Initialize
17582         tree_code variables to ERROR_MARK.
17583         (vectorizable_type_demotion): Likewise.
17584         (vectorizable_type_promotion): Likewise.
17585
17586 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
17587
17588         PR target/32065
17589         * config/i386/i386.md (movti): Handle push operands via
17590         ix86_expand_push().
17591
17592 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
17593
17594         * basic-block.h: Remove the prototype for merge_seq_blocks.
17595         * cfgcleanup.c (merge_seq_blocks): Remove.
17596
17597         * tree-flow.h: Remove the prototype for is_aliased_with.
17598         * tree-ssa-alias.c (is_aliased_with): Remove.
17599
17600 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
17601
17602         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
17603
17604         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
17605
17606         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
17607         ix86_expand_sse4_unpack if SSE4.1 is enabled.
17608         (vec_unpacks_hi_v16qi): Likewise.
17609         (vec_unpacku_lo_v16qi): Likewise.
17610         (vec_unpacks_lo_v16qi): Likewise.
17611         (vec_unpacku_hi_v8hi): Likewise.
17612         (vec_unpacks_hi_v8hi): Likewise.
17613         (vec_unpacku_lo_v8hi): Likewise.
17614         (vec_unpacks_lo_v8hi): Likewise.
17615         (vec_unpacku_hi_v4si): Likewise.
17616         (vec_unpacks_hi_v4si): Likewise.
17617         (vec_unpacku_lo_v4si): Likewise.
17618         (vec_unpacks_lo_v4si): Likewise.
17619
17620 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
17621
17622         * c-typeck.c, config/arm/arm.c, config/darwin.c,
17623         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
17624         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
17625         follow spelling conventions in various
17626         warning/error/diagnostic messages.
17627
17628         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
17629         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
17630         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
17631         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
17632         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
17633         * doc/tm.texi: Follow spelling conventions.
17634
17635 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17636
17637         PR tree-opt/32090
17638         * tree-ssa-forwprop.c
17639         (forward_propagate_addr_into_variable_array_index): Remove
17640         the lhs argument.  Use the type of def_rhs instead of lhs.
17641         (forward_propagate_addr_expr_1): Update use of
17642         forward_propagate_addr_into_variable_array_index.
17643
17644 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
17645             Nigel Stephens  <nigel@mips.com>
17646
17647         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
17648         function attributes, "far" being an alias for "long_call".
17649         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
17650         (mips_near_type_p, mips_far_type_p): New.
17651         (mips_comp_type_attributes): New function to check that attributes
17652         attached to a function type are compatible.
17653         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
17654         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
17655         to the target function of the thunk.
17656         (mips_encode_section_info): Check for "near" and "far" function
17657         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
17658
17659         * config/mips/predicates.md (const_call_insn_operand): Test only
17660         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
17661
17662         * doc/extend.texi (Function Attributes): Document MIPS "near" and
17663         "far" attributes.
17664
17665         * testsuite/gcc.target/mips/near-far-1.c: New test case.
17666         * testsuite/gcc.target/mips/near-far-2.c: New test case.
17667         * testsuite/gcc.target/mips/near-far-3.c: New test case.
17668         * testsuite/gcc.target/mips/near-far-4.c: New test case.
17669
17670 2007-05-25  Eric Christopher  <echristo@apple.com>
17671
17672         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
17673         to x86-darwin configurations.
17674         * config/i386/t-darwin: Add softfp support.
17675         * config/i386/t-darwin64: Ditto.
17676         * config/i386/sfp-machine.h: If mach then don't use
17677         aliasing, emit a stub to call.
17678
17679 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
17680
17681         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
17682         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
17683         tree-predcom.c, tree-ssa-alias-warnings.c,
17684         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
17685         comment typos.  Follow spelling conventions.
17686         * doc/cpp.texi, doc/invoke.texi: Fix typos.
17687
17688 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
17689
17690         PR target/32065
17691         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
17692         constants into memory.  Expand unaligned memory references for
17693         SSE modes via x86_expand_vector_move_misalign() function.
17694
17695 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
17696
17697         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
17698         "memory" attribute for "sseishft" type insn without operands[2].
17699
17700 2007-05-25  Dirk Mueller  <dmueller@suse.de>
17701             Marcus Meissner <meissner@suse.de>
17702
17703         * doc/extend.texi (alloc_size): New attribute.
17704         * c-common.c (handle_alloc_size_attribute): New.
17705         * tree-object-size.c (alloc_object_size): Use alloc_size
17706         attribute, if available.
17707
17708 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
17709
17710         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
17711         with MASK_SSE2.
17712         (__builtin_ia32_vec_ext_v2di): Likewise.
17713         (__builtin_ia32_vec_ext_v4si): Likewise.
17714         (__builtin_ia32_vec_ext_v8hi): Likewise.
17715         (__builtin_ia32_vec_ext_v16qi): Likewise.
17716         (__builtin_ia32_vec_set_v8hi): Likewise.
17717
17718 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
17719
17720         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
17721
17722 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
17723
17724         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
17725         (arm_is_longcall_p): Rename to...
17726         (arm_is_long_call_p): ...this.  Take a single tree argument and
17727         return a bool.
17728         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
17729         (CUMULATIVE_ARGS): Remove call_cookie.
17730         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
17731         (ENCODED_LONG_CALL_ATTR_P): Delete.
17732         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
17733         LONG_CALL_FLAG_CHAR cases.
17734         (ARM_DECLARE_FUNCTION_SIZE): Delete.
17735         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
17736         ARM_DECLARE_FUNCTION_SIZE.
17737         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
17738         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
17739         (arm_encode_call_attribute, current_file_function_operand): Delete.
17740         (arm_function_in_section_p): New function.
17741         (arm_is_longcall_p): Rename to...
17742         (arm_is_long_call_p): ...this.  Take the target function as a single
17743         argument and return a bool.  Do not rely on call cookies.  Check
17744         whether the target symbol is in the same section as the current
17745         function, not just the same compilation unit.
17746         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
17747         (arm_encode_section_info): Don't encode a call type.
17748         * config/arm/arm.md (call, call_value): Update calls to
17749         arm_is_long(_)call_p.  Simplify logic.
17750         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
17751         Update calls to arm_is_long(_)call_p.
17752
17753 2007-05-25  Richard Guenther  <rguenther@suse.de>
17754
17755         PR tree-optimization/31982
17756         * tree-ssa-forwprop.c
17757         (forward_propagate_addr_into_variable_array_index): Handle arrays
17758         with element size one.
17759
17760 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17761
17762         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
17763         (umulsi3_highpart): Likewise.
17764
17765 2007-05-24  Ian Lance Taylor  <iant@google.com>
17766
17767         PR rtl-optimization/32069
17768         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
17769         is NULL.
17770
17771 2007-05-24  Ollie Wild  <aaw@google.com>
17772
17773         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
17774         description.
17775
17776 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
17777
17778         * postreload-gcse.c (reg_changed_after_insn_p): New function.
17779         (oprs_unchanged_p): Use it to check all registers in a REG.
17780         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
17781         (reg_set_between_after_reload_p): Delete.
17782         (reg_used_between_after_reload_p): Likewise.
17783         (reg_set_or_used_since_bb_start): Likewise.
17784         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
17785         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
17786         Use reg_set_between_p instead of reg_set_between_after_reload_p.
17787         * rtlanal.c (reg_set_p): Check whether REG overlaps
17788         regs_invalidated_by_call, rather than just checking the
17789         membership of REGNO (REG).
17790
17791 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
17792
17793         * doc/passes.texi: Document predictive commoning.
17794         * doc/invoke.texi (-fpredictive-commoning): Document.
17795         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
17796         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
17797         adding indices to the generated name.
17798         (schedule_sm): Pass 0 to get_lsm_tmp_name.
17799         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
17800         * tree-pretty-print.c (op_symbol_1): Renamed to ...
17801         (op_symbol_code): ... and exported.
17802         (dump_omp_clause, op_symbol): Use op_symbol_code
17803         instead of op_symbol_1.
17804         * tree-pass.h (pass_predcom): Declare.
17805         * timevar.def (TV_PREDCOM): New timevar.
17806         * tree-ssa-loop.c (run_tree_predictive_commoning,
17807         gate_tree_predictive_commoning, pass_predcom): New.
17808         * tree-data-ref.c (find_data_references_in_loop): Find the
17809         references in dominance order.
17810         (canonicalize_base_object_address): Ensure that the result has
17811         pointer type.
17812         (dr_analyze_innermost): Export.
17813         (create_data_ref): Code to fail for references with invariant
17814         address moved ...
17815         (find_data_references_in_stmt): ... here.
17816         * tree-data-ref.h (dr_analyze_innermost): Declare.
17817         * tree-affine.c: Include tree-gimple.h and hashtab.h.
17818         (aff_combination_find_elt, name_expansion_hash,
17819         name_expansion_eq, tree_to_aff_combination_expand,
17820         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
17821         New functions.
17822         * tree-affine.h (aff_combination_constant_multiple_p,
17823         tree_to_aff_combination_expand): Declare.
17824         * tree-predcom.c: New file.
17825         * common.opt (fpredictive-commoning): New option.
17826         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
17827         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
17828         * Makefile.in (tree-predcom.o): Add.
17829         (tree-affine.o): Add TREE_GIMPLE_H dependency.
17830         * passes.c (init_optimization_passes): Add dceloop after
17831         copy propagation in loop optimizer.  Add predictive commoning
17832         to loop optimizer passes.
17833
17834 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
17835
17836         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
17837         default hook.
17838
17839 2007-05-24  Jan Hubicka  <jh@suse.cz>
17840
17841         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
17842         statistics.
17843         (genheader): Include statistics.h.
17844
17845         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
17846         notes are gone.
17847         * print-rtl.c (flag_dump_unnumbered): Update comments.
17848         (print_rtl): Fix my previous change.
17849         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
17850         specific data.
17851
17852 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
17853
17854         PR middle-end/32018
17855         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
17856         set_loop_copy.
17857         (thread_through_all_blocks): Call initialize_original_copy_tables
17858         and free_original_copy_tables.
17859         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
17860         Use set_loop_copy.
17861         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
17862         * cfghooks.c (duplicate_block): Use get_loop_copy.
17863         * cfg.c: Include cfgloop.h.
17864         (loop_copy): New hash table.
17865         (initialize_original_copy_tables): Initialize loop_copy table.
17866         (free_original_copy_tables): Free loop_copy table.
17867         (copy_original_table_clear, copy_original_table_set,
17868         set_loop_copy, get_loop_copy): New functions.
17869         (set_bb_original, set_bb_copy): Use copy_original_table_set.
17870         * cfgloop.h (struct loop): Remove copy field.
17871         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
17872         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
17873
17874 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
17875
17876         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
17877         -msse/-msse2/-msse3.
17878
17879 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
17880
17881         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
17882         __builtin_ia32_vec_set_v2di with MASK_64BIT.
17883
17884 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
17885
17886         PR target/27067
17887         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
17888         * targhooks.h (default_mangle_decl_assembler_name): Declare
17889         default hook.
17890         * targhooks.c (default_mangle_decl_assembler_name): Define
17891         default hook.
17892         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
17893         default hook.
17894         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
17895         * langhooks.c (lhd_set_decl_assembler_name): Call
17896         targetm.mangle_decl_assembler_name for names with global scope.
17897
17898         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
17899         default.
17900         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
17901         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
17902         Declare.
17903         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
17904         New. Factored out of i386_pe_encode_section_info.
17905         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
17906         Move check for prior decoration of stdcall
17907         symbols to i386_pe_encode_section_info.
17908         (i386_pe_encode_section_info): Adjust call to
17909         gen_stdcall_or_fastcall_suffix.  Use
17910         i386_pe_maybe_mangle_decl_assembler_name, if needed.
17911         (i386_pe_mangle_decl_assembler_name): New. Wrap
17912         i386_pe_maybe_mangle_decl_assembler_name.
17913
17914 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
17915
17916         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
17917         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
17918         * langhooks.c (get_signed_or_unsigned_type): Don't check for
17919         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
17920         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
17921         TYPE_UNSIGNED.
17922
17923 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
17924             Nigel Stephens  <nigel@mips.com>
17925             Richard Sandiford  <richard@codesourcery.com>
17926
17927         Fix up MIPS16 hard float and add support for complex.
17928
17929         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
17930         (TARGET_SOFT_FLOAT_ABI): New.
17931         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
17932         __mips_soft_float to reflect the ABI in use, not whether the
17933         FPU is directly accessible (e.g., in MIPS16 mode).
17934         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
17935         (UNITS_PER_FPVALUE): Likewise.
17936
17937         * config/mips/mips.c (mips_expand_call): Remove redundant
17938         TARGET_MIPS16 check.
17939         (mips_arg_regno): New.
17940         (function_arg_advance): When setting bits in cum->fp_code for
17941         MIPS16, don't subtract 1 from cum->arg_number, since it is now
17942         zero-based.
17943         (function_arg): Use mips_arg_regno.
17944         (mips_return_mode_in_fpr_p): New.
17945         (mips16_call_stub_mode_suffix): New.
17946         (mips16_cfun_returns_in_fpr_p): New.
17947         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
17948         (mips_output_function_prologue): Test mips16_hard_float, not
17949         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
17950         (mips_expand_epilogue): Call MIPS16 helper routines to copy
17951         return value into a floating-point register.
17952         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
17953         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
17954         (mips16_fp_args): Handle MIPS32r2 ISA which supports
17955         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
17956         word of double arguments from or to the high bits of 64-bit
17957         floating point registers.
17958         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
17959         (mips16_fpret_double): New helper function.
17960         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
17961         support for complex modes.  Fill in DECL_RESULT for stubdecl.
17962         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
17963
17964         * config/mips/mips16.S
17965         (RET, ARG1, ARG2): New.
17966         (MERGE_GPRf, MERGE_GPRt): New.
17967         (DELAYt, DELAYf): New.
17968         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
17969         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
17970         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
17971         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
17972         (SFOP): Renamed to...
17973         (OPSF3): This, and macro-ified.  Updated all uses.
17974         (SFOP2): Renamed to...
17975         (OPSF2): This, and macro-ified.  Updated all uses.
17976         (SFCMP): Renamed to...
17977         (CMPSF): This, and macro-ified.  Updated all uses.
17978         (SFREVCMP): Renamed to...
17979         (REVCMPSF): This, and macro-ified.  Updated all uses.
17980         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
17981         (LDDBL1, LDDBL2, RETDBL): Deleted.
17982         (DFOP): Renamed to...
17983         (OPDF3): This, and macro-ified.  Updated all uses.
17984         (DFOP2): Renamed to...
17985         (OPDF2): This, and macro-ified.  Updated all uses.
17986         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
17987         (DFCMP): Renamed to...
17988         (CMPDF): This, and macro-ified.  Updated all uses.
17989         (DFREVCMP): Renamed to...
17990         (REVCMPDF): This, and macro-ified.  Updated all uses.
17991         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
17992         (RET_FUNCTION): New.
17993         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
17994         (__mips16_ret_sc, __mips16_ret_dc): New.
17995         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
17996         STUB_ARGS_6, STUB_ARGS_10): New.
17997         (CALL_STUB_NO_RET): New.
17998         (__mips16_call_stub_1): Macro-ified.
17999         (__mips16_call_stub_5): Macro-ified.
18000         (__mips16_call_stub_2): Macro-ified.
18001         (__mips16_call_stub_6): Macro-ified.
18002         (__mips16_call_stub_9): Macro-ified.
18003         (__mips16_call_stub_10): Macro-ified.
18004         (CALL_STUB_RET): New.
18005         (__mips16_call_stub_sf_0): Macro-ified.
18006         (__mips16_call_stub_sf_1): Macro-ified.
18007         (__mips16_call_stub_sf_5): Macro-ified.
18008         (__mips16_call_stub_sf_2): Macro-ified.
18009         (__mips16_call_stub_sf_6): Macro-ified.
18010         (__mips16_call_stub_sf_9): Macro-ified.
18011         (__mips16_call_stub_sf_10): Macro-ified.
18012         (__mips16_call_stub_df_0): Macro-ified.
18013         (__mips16_call_stub_df_1): Macro-ified.
18014         (__mips16_call_stub_df_5): Macro-ified.
18015         (__mips16_call_stub_df_2): Macro-ified.
18016         (__mips16_call_stub_df_6): Macro-ified.
18017         (__mips16_call_stub_df_9): Macro-ified.
18018         (__mips16_call_stub_df_10): Macro-ified.
18019         (__mips16_call_stub_sc_0): New.
18020         (__mips16_call_stub_sc_1): New.
18021         (__mips16_call_stub_sc_5): New.
18022         (__mips16_call_stub_sc_2): New.
18023         (__mips16_call_stub_sc_6): New.
18024         (__mips16_call_stub_sc_9): New.
18025         (__mips16_call_stub_sc_10): New.
18026         (__mips16_call_stub_dc_0): New.
18027         (__mips16_call_stub_dc_1): New.
18028         (__mips16_call_stub_dc_5): New.
18029         (__mips16_call_stub_dc_2): New.
18030         (__mips16_call_stub_dc_6): New.
18031         (__mips16_call_stub_dc_9): New.
18032         (__mips16_call_stub_dc_10): New.
18033
18034         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
18035         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
18036         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
18037
18038 2007-05-23  Ian Lance Taylor  <iant@google.com>
18039
18040         * doc/invoke.texi (Invoking GCC): Document that the order of the
18041         -l option matters.
18042
18043 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
18044
18045         PR target/30987
18046         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
18047         * config/score/predicate.md (const_pow2, const_npow2): Remove.
18048         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
18049         undef.
18050
18051         PR target/30474
18052         * config/score/score.c (score_print_operand): Make sure that only
18053         lower bits are used.
18054
18055 2007-05-22  Ian Lance Taylor  <iant@google.com>
18056
18057         * tree-vrp.c (avoid_overflow_infinity): New static function,
18058         broken out of set_value_range_to_value.
18059         (set_value_range_to_value): Call avoid_overflow_infinity.
18060         (extract_range_from_assert): Likewise.
18061
18062 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18063
18064         PR middle-end/31095
18065          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
18066         change the type before looking for a COMPOUND_EXPR.
18067
18068 2007-05-22  Ian Lance Taylor  <iant@google.com>
18069
18070         * lower-subreg.c (decompose_multiword_subregs): If we change an
18071         insn, call remove_retval_note on it.
18072
18073 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
18074
18075         * regs.h (end_hard_regno): New function.
18076         (END_HARD_REGNO, END_REGNO): New macros.
18077         (add_to_hard_reg_set): New function.
18078         (remove_from_hard_reg_set): Likewise.
18079         (in_hard_reg_set_p): Likewise.
18080         (overlaps_hard_reg_set_p): Likewise.
18081         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
18082         (note_btr_set): Use END_HARD_REGNO.
18083         * caller-save.c (setup_save_areas): Use end_hard_regno.
18084         (mark_set_regs): Use END_HARD_REGNO.
18085         (add_stored_regs): Use end_hard_regno.
18086         (mark_referenced_regs): Use add_to_hard_reg_set.
18087         * combine.c (update_table_tick): Use END_REGNO.
18088         (record_value_for_reg): Likewise.
18089         (record_dead_and_set_regs): Likewise.
18090         (get_last_value_validate): Likewise.
18091         (use_crosses_set_p): Likewise.
18092         (reg_dead_at_p_1): Likewise.
18093         (reg_dead_at_p): Likewise.
18094         (mark_used_regs_combine): Use add_to_hard_reg_set.
18095         (move_deaths): Use END_HARD_REGNO.
18096         (reg_bitfield_target_p): Use end_hard_regno.
18097         (distribute_notes): Use END_HARD_REGNO.
18098         * cse.c (mention_regs): Use END_REGNO.
18099         (insert): Use add_to_hard_reg_set.
18100         (invalidate): Use END_HARD_REGNO.
18101         (invalidate_for_call): Likewise.
18102         (exp_equiv_p): Use END_REGNO.
18103         (cse_insn): Likewise.
18104         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
18105         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
18106         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
18107         * function.c (keep_stack_depressed): Use end_hard_regno.
18108         * global.c (global_alloc): Use end_hard_regno.
18109         (global_conflicts): Use add_to_hard_reg_set instead of
18110         mark_reg_live_nc.
18111         (find_reg): Likewise.
18112         (mark_reg_store): Likewise.
18113         (mark_reg_conflicts): Likewise.
18114         (mark_reg_death): Use remove_from_hard_reg_set.
18115         (mark_reg_live_nc): Delete.
18116         (set_preference): Use end_hard_regno.
18117         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
18118         remove_from_hard_reg_set.
18119         (post_mark_life): Use add_to_hard_reg_set.
18120         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
18121         (reg_becomes_live): Use add_to_hard_reg_set.
18122         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
18123         (peep2_find_free_register): Use add_to_hard_reg_set.
18124         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
18125         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
18126         * regrename.c (note_sets): Use add_to_hard_reg_set.
18127         (clear_dead_regs): Use remove_from_hard_reg_set.
18128         (regrename_optimize): Use add_to_hard_reg_set.
18129         (find_oldest_value_reg): Use in_hard_reg_set_p.
18130         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
18131         (hard_reg_set_here_p): Use end_hard_regno.
18132         (decompose): Likewise.
18133         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
18134         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
18135         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
18136         (mark_home_live): Use end_hard_regno.
18137         (spill_hard_reg): Likewise.
18138         (clear_reload_reg_in_use): Likewise.
18139         * reorg.c (delete_prior_computation): Use END_REGNO.
18140         * resource.c (update_live_status): Use END_HARD_REGNO.
18141         (mark_referenced_resources): Use add_to_hard_reg_set.
18142         (mark_set_resources): Likewise.
18143         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
18144         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
18145         (reg_overlap_mentioned_p): Likewise.
18146         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
18147         (covers_regno_no_parallel_p): Use END_REGNO.
18148         (find_regno_note): Likewise.
18149         (find_reg_fusage): Use END_HARD_REGNO.
18150         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
18151         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
18152
18153 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
18154
18155         * mode-switching.c (reg_dies): Change type of second argument to
18156         "HARD_REG_SET *".
18157         (optimize_mode_switching): Update accordingly.
18158
18159 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
18160
18161         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
18162         in favor of...
18163         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
18164         (hard_reg_set_empty_p): ...these new functions.
18165         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
18166         GO_IF_HARD_REG_SUBSET.
18167         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
18168         instead of GO_IF_HARD_REG_EQUAL.
18169         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
18170         instead of GO_IF_HARD_REG_EQUAL.
18171         * global.c (find_reg): Use hard_reg_set_empty_p instead of
18172         GO_IF_HARD_REG_SUBSET.
18173         (modify_reg_pav): Use hard_reg_set_empty_p instead of
18174         GO_IF_HARD_REG_EQUAL.
18175         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
18176         of GO_IF_HARD_REG_SUBSET.
18177         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
18178         instead of GO_IF_HARD_REG_EQUAL.
18179         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
18180         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
18181         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
18182         of GO_IF_HARD_REG_SUBSET,
18183         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
18184         GO_IF_HARD_REG_SUBSET.
18185         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
18186         instead of GO_IF_HARD_REG_EQUAL.
18187         * config/sh/sh.c (push_regs, calc_live_regs): Use
18188         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
18189         (hard_regs_intersect_p): Delete.
18190
18191 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
18192
18193         * doc/sourcebuild.texi (Test Directives) Add dg-message.
18194
18195 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
18196             Richard Henderson  <rth@redhat.com>
18197
18198         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
18199         extra_headers.
18200         (x86_64-*-*): Likewise.
18201
18202         * i386/i386-modes.def (V2QI): New.
18203
18204         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
18205         SSE4A.
18206         (override_options): Support SSE4.1.
18207         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
18208         (IX86_BUILTIN_BLENDPS): Likewise.
18209         (IX86_BUILTIN_BLENDVPD): Likewise.
18210         (IX86_BUILTIN_BLENDVPS): Likewise.
18211         (IX86_BUILTIN_PBLENDVB128): Likewise.
18212         (IX86_BUILTIN_PBLENDW128): Likewise.
18213         (IX86_BUILTIN_DPPD): Likewise.
18214         (IX86_BUILTIN_DPPS): Likewise.
18215         (IX86_BUILTIN_INSERTPS128): Likewise.
18216         (IX86_BUILTIN_MOVNTDQA): Likewise.
18217         (IX86_BUILTIN_MPSADBW128): Likewise.
18218         (IX86_BUILTIN_PACKUSDW128): Likewise.
18219         (IX86_BUILTIN_PCMPEQQ): Likewise.
18220         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
18221         (IX86_BUILTIN_PMAXSB128): Likewise.
18222         (IX86_BUILTIN_PMAXSD128): Likewise.
18223         (IX86_BUILTIN_PMAXUD128): Likewise.
18224         (IX86_BUILTIN_PMAXUW128): Likewise.
18225         (IX86_BUILTIN_PMINSB128): Likewise.
18226         (IX86_BUILTIN_PMINSD128): Likewise.
18227         (IX86_BUILTIN_PMINUD128): Likewise.
18228         (IX86_BUILTIN_PMINUW128): Likewise.
18229         (IX86_BUILTIN_PMOVSXBW128): Likewise.
18230         (IX86_BUILTIN_PMOVSXBD128): Likewise.
18231         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
18232         (IX86_BUILTIN_PMOVSXWD128): Likewise.
18233         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
18234         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
18235         (IX86_BUILTIN_PMOVZXBW128): Likewise.
18236         (IX86_BUILTIN_PMOVZXBD128): Likewise.
18237         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
18238         (IX86_BUILTIN_PMOVZXWD128): Likewise.
18239         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
18240         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
18241         (IX86_BUILTIN_PMULDQ128): Likewise.
18242         (IX86_BUILTIN_PMULLD128): Likewise.
18243         (IX86_BUILTIN_ROUNDPD): Likewise.
18244         (IX86_BUILTIN_ROUNDPS): Likewise.
18245         (IX86_BUILTIN_ROUNDSD): Likewise.
18246         (IX86_BUILTIN_ROUNDSS): Likewise.
18247         (IX86_BUILTIN_PTESTZ): Likewise.
18248         (IX86_BUILTIN_PTESTC): Likewise.
18249         (IX86_BUILTIN_PTESTNZC): Likewise.
18250         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
18251         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
18252         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
18253         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
18254         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
18255         (bdesc_ptest): New.
18256         (bdesc_sse_3arg): Likewise.
18257         (bdesc_2arg): Likewise.
18258         (bdesc_1arg): Likewise.
18259         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
18260         with 3 args.
18261         (ix86_expand_sse_4_operands_builtin): New.
18262         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
18263         smaller than 8 bits as the 2nd arg.
18264         (ix86_expand_sse_ptest): New.
18265         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
18266         (ix86_expand_vector_set): Support SSE4.1.
18267         (ix86_expand_vector_extract): Likewise.
18268
18269         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
18270         __SSE4_1__ for -msse4.1.
18271
18272         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
18273         (UNSPEC_INSERTPS): Likewise.
18274         (UNSPEC_DP): Likewise.
18275         (UNSPEC_MOVNTDQA): Likewise.
18276         (UNSPEC_MPSADBW): Likewise.
18277         (UNSPEC_PHMINPOSUW): Likewise.
18278         (UNSPEC_PTEST): Likewise.
18279         (UNSPEC_ROUNDP): Likewise.
18280         (UNSPEC_ROUNDS): Likewise.
18281
18282         * config/i386/i386.opt (msse4.1): New for SSE4.1.
18283
18284         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
18285         (const_pow2_1_to_32768_operand): Likewise.
18286
18287         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
18288         file.
18289
18290         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
18291         SSE4.1.
18292         (sse4_1_insertps): Likewise.
18293         (*sse4_1_extractps): Likewise.
18294         (sse4_1_ptest): Likewise.
18295         (sse4_1_mulv2siv2di3): Likewise.
18296         (*sse4_1_mulv4si3): Likewise.
18297         (*sse4_1_smax<mode>3): Likewise.
18298         (*sse4_1_umax<mode>3): Likewise.
18299         (*sse4_1_smin<mode>3): Likewise.
18300         (*sse4_1_umin<mode>3): Likewise.
18301         (sse4_1_eqv2di3): Likewise.
18302         (*sse4_1_pinsrb): Likewise.
18303         (*sse4_1_pinsrd): Likewise.
18304         (*sse4_1_pinsrq): Likewise.
18305         (*sse4_1_pextrb): Likewise.
18306         (*sse4_1_pextrb_memory): Likewise.
18307         (*sse4_1_pextrw_memory): Likewise.
18308         (*sse4_1_pextrq): Likewise.
18309         (sse4_1_blendpd): Likewise.
18310         (sse4_1_blendps): Likewise.
18311         (sse4_1_blendvpd): Likewise.
18312         (sse4_1_blendvps): Likewise.
18313         (sse4_1_dppd): Likewise.
18314         (sse4_1_dpps): Likewise.
18315         (sse4_1_movntdqa): Likewise.
18316         (sse4_1_mpsadbw): Likewise.
18317         (sse4_1_packusdw): Likewise.
18318         (sse4_1_pblendvb): Likewise.
18319         (sse4_1_pblendw): Likewise.
18320         (sse4_1_phminposuw): Likewise.
18321         (sse4_1_extendv8qiv8hi2): Likewise.
18322         (*sse4_1_extendv8qiv8hi2): Likewise.
18323         (sse4_1_extendv4qiv4si2): Likewise.
18324         (*sse4_1_extendv4qiv4si2): Likewise.
18325         (sse4_1_extendv2qiv2di2): Likewise.
18326         (*sse4_1_extendv2qiv2di2): Likewise.
18327         (sse4_1_extendv4hiv4si2): Likewise.
18328         (*sse4_1_extendv4hiv4si2): Likewise.
18329         (sse4_1_extendv2hiv2di2): Likewise.
18330         (*sse4_1_extendv2hiv2di2): Likewise.
18331         (sse4_1_extendv2siv2di2): Likewise.
18332         (*sse4_1_extendv2siv2di2): Likewise.
18333         (sse4_1_zero_extendv8qiv8hi2): Likewise.
18334         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
18335         (sse4_1_zero_extendv4qiv4si2): Likewise.
18336         (*sse4_1_zero_extendv4qiv4si2): Likewise.
18337         (sse4_1_zero_extendv2qiv2di2): Likewise.
18338         (*sse4_1_zero_extendv2qiv2di2): Likewise.
18339         (sse4_1_zero_extendv4hiv4si2): Likewise.
18340         (*sse4_1_zero_extendv4hiv4si2): Likewise.
18341         (sse4_1_zero_extendv2hiv2di2): Likewise.
18342         (*sse4_1_zero_extendv2hiv2di2): Likewise.
18343         (sse4_1_zero_extendv2siv2di2): Likewise.
18344         (*sse4_1_zero_extendv2siv2di2): Likewise.
18345         (sse4_1_roundpd): Likewise.
18346         (sse4_1_roundps): Likewise.
18347         (sse4_1_roundsd): Likewise.
18348         (sse4_1_roundss): Likewise.
18349         (mulv4si3): Don't expand for SSE4.1.
18350         (smax<mode>3): Likewise.
18351         (umaxv4si3): Likewise.
18352         (uminv16qi3): Likewise.
18353         (umin<mode>3): Likewise.
18354         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
18355
18356         * doc/extend.texi: Document SSE4.1 built-in functions.
18357
18358         * doc/invoke.texi: Document -msse4.1.
18359
18360 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
18361
18362         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
18363         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
18364         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
18365         (ASM_SPEC): Add asm_pcrel_spec.
18366         (EXTRA_SPECS): Add asm_pcrel_spec.
18367
18368 2007-05-21  David Daney  <ddaney@avtrex.com>
18369
18370         * doc/install.texi (Building a cross compiler): Add requirements
18371         for Java cross compiler.
18372
18373 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18374
18375         PR middle-end/31995
18376         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
18377         Add loopno argument.  Use evolution_function_is_invariant_rec_p
18378         instead of evolution_function_is_constant_p.
18379         Update calls to evolution_function_is_affine_multivariate_p.
18380         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
18381         Add loopno argument.
18382         * tree-scalar-evolution.c (gather_chrec_stats): Call
18383         evolution_function_is_affine_multivariate_p with a loop
18384         number of 0.
18385         * tree-data-ref.c (analyze_miv_subscript): Likewise.
18386         (analyze_overlapping_iterations): Likewise.
18387         (access_functions_are_affine_or_constant_p): Likewise.
18388         (build_classic_dist_vector_1): If the access functions
18389         are equal, don't do anything.
18390
18391 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
18392             Paolo Carlini  <pcarlini@suse.de>
18393             Uros Bizjak  <ubizjak@gmail.com>
18394
18395         * c-cppbuiltin.c (c_cpp_builtins): Define
18396         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
18397         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
18398         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
18399         * doc/cpp.texi ([Standard Predefined Macros]): Document.
18400
18401 2007-05-21  Mike Stump  <mrs@apple.com>
18402
18403         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
18404         handling as well.
18405         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
18406
18407 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
18408
18409         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
18410         implementation if __OPTIMIZE__ is not defined.
18411         (_mm_alignr_pi8): Ditto.
18412         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
18413         (_mm_inserti_si64): Ditto.
18414         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
18415         (_mm_slli_epi16): Ditto.
18416         (_mm_slli_epi32): Ditto.
18417         (_mm_slli_epi64): Ditto.
18418         (_mm_srai_epi16): Ditto.
18419         (_mm_srai_epi32): Ditto.
18420         (_mm_srli_si128): Ditto.
18421         (_mm_slli_si128): Ditto.
18422         (_mm_srli_epi16): Ditto.
18423         (_mm_srli_epi32): Ditto.
18424         (_mm_srli_epi64): Ditto.
18425         (_mm_extract_epi16): Ditto.
18426         (_mm_insert_epi16): Ditto.
18427         (_mm_shufflehi_epi16): Ditto.
18428         (_mm_shufflelo_epi16): Ditto.
18429         (_mm_shuffle_epi32): Ditto.
18430         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
18431         (_m_pextrw): Ditto.
18432         (_mm_insert_pi16): Ditto.
18433         (_m_pinsrw): Ditto.
18434         (_mm_shuffle_pi16): Ditto.
18435         (_m_pshufw): Ditto.
18436         (_mm_shufle_ps): Ditto.
18437         (_mm_prefetch): Ditto.
18438
18439 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
18440
18441         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
18442         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
18443         * real.c (encode_i370_single, decode_i370_single,
18444         encode_i370_double, decode_i370_double): Functions removed.
18445         (i370_single_format, i370_double_format): Initializations removed.
18446         (real_maxval, round_for_format, exact_real_truncate, significand_size):
18447         Consider the log2_b field to always be one.
18448         (ieee_single_format, mips_single_format, coldfire_single_format,
18449         ieee_double_format, mips_double_format, coldfire_double_format,
18450         ieee_extended_motorola_format, ieee_extended_intel_96_format,
18451         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
18452         ibm_extended_format, mips_extended_format, ieee_quad_format,
18453         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
18454         decimal_single_format, decimal_double_format, decimal_quad_format,
18455         c4x_single_format, c4x_extended_format, real_internal_format): Remove
18456         initialization of log2_b.
18457         * real.h (i370_single_format, i370_double_format): Declarations
18458         removed.
18459         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
18460         field to always be one.
18461
18462 2007-05-21  Andreas Schwab  <schwab@suse.de>
18463
18464         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
18465         NOTE_INSN_BASIC_BLOCK_P.
18466         (process_for_unwind_directive): Likewise.
18467
18468 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
18469
18470         * builtins.c (expand_builtin_setjmp_setup): Update comment.
18471         * function.h (struct function): Move va_list_gpr_size,
18472         va_list_fpr_size, function_frequency to front of bitfields.  Add
18473         calls_unwind_init.
18474         (current_function_calls_unwind_init): New.
18475         * except.c (expand_builtin_unwind_init): Set
18476         current_function_calls_unwind_init not
18477         current_function_has_nonlocal_label.
18478         * reload1.c (has_nonexceptional_receiver): New.
18479         (reload): Use it and current_function_calls_unwind_init to
18480         determine whether call-saved regs must be saved.
18481
18482 2007-05-20  Jan Hubicka  <jh@suse.cz>
18483
18484         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
18485         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
18486         * ddg.c (create_ddg): LIkewise.
18487         * final.c (final): Remove hunk moving line number notes around since
18488         they are no longer present at this stage.
18489         (final_scan_insn): Use NOTE_KIND instead of
18490         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
18491         (output_asm_label): Likewise.
18492         * reorg.c (dbr_schedule): Likewise.
18493         * haifa-sched.c (unlink_other_notes): Likewise.
18494         * mode-switching.c (optimize_mode_switching): Likewise.
18495         * graph.c (start_bb): Likewise.
18496         * rtl.def (NOTE): Update description.
18497         * jump.c (squeeze_notes): Delete.
18498         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
18499         NOTE_INSN_BASIC_BLOCK_P when possible.
18500         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
18501         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
18502         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
18503         (dwarf2out_var_location): Likewise.
18504         * cfgbuild.c (make_edges): Likewise.
18505         (find_basic_blocks_1): Likewise.
18506         * function.c (reorder_blocks_1): Likewise.
18507         (epilogue_done): Likewise.
18508         (reposition_prologue_and_epilogue_notes): Likewise.
18509         * print-rtl.c (print_rtx): Likewise; drop code for printing
18510         line number notes.
18511         (print_rtl): Likewise.
18512         (print_rtl_single): Likewise.
18513         * gcse.c (insert_insn_start_bb): Likewise.
18514         * alias.c (init_alias_analysis): Likewise.
18515         * calls.c (fixup_tail_calls): Likewise.
18516         * except.c (sjlj_emit_function_enter): Likewise.
18517         * emit-rtl.c (add_insn_after): Likeiwse.
18518         (emit_label_before): Likewise.
18519         (emit_label_after): Likewise.
18520         (emit_note_before, emit_note_after, emit_note): Update
18521         parameter to be enum insn_note; do not deal with source
18522         files.
18523         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
18524         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
18525         when possible.
18526         (merge_blocks_move_successor_nojumps): Simplify now when
18527         we don't have BLOCK notes.
18528         (try_optimize_cfg): Likewise.
18529         * cfglayout.c (skip_insns_after_block): Likewise.
18530         (record_effective_endpoints): Likewise.
18531         (duplicate_insn_chain): Likewise.
18532         * varasm.c (output_constant_pool_1): Likewise.
18533         * sched-deps.c (sched_analyze): Likewise.
18534         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
18535         Exterminate.
18536         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
18537         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
18538         (SET_INSN_DELETED): Simplify.
18539         (NOTE_LINE_NUMBER): Exterminate.
18540         (NOTE_LINE_KIND): New.
18541         (NOTE_INSN_BASIC_BLOCK_P): Update.
18542         (enum insn_note): Simplify.
18543         (GET_NOTE_INSN_NAME) Simplify.
18544         (emit_note_before, emit_note_after, emit_note): Update prototype.
18545         (squeeze_notes): Remove.
18546         * sched-int.h (NOTE_NOT_BB_P): Update.
18547         * resource.c (mark_target_live_regs): Update.
18548         * sched-rgn.c (debug_dependencies): Update.
18549         * sched-vis.c (print_insn): Update.
18550         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
18551         * config/i386/i386.c (ix86_output_function_epilogue): Update.
18552         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
18553         (TARGET_ADJUST_UNROLL_MAX): Likewise.
18554         (split_branches): Update.
18555         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
18556         4.0.0.
18557         (sh_adjust_unroll_max): Exterminate.
18558         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
18559         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
18560         (m68hc11_reorg): Likewise.
18561         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
18562         (emit_predicate_relation_info): Update.
18563         (process_for_unwind_directive): Update.
18564         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
18565         (output_call): Update.
18566         * config/pa/pa.c (output_lbranch): Update.
18567         (output_millicode_call): Update.
18568         (output_call): Update.
18569         (pa_combine_instructions): Update.
18570         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
18571         * config/bfin/bfin.c (gen_one_bundle): Update.
18572         * cfgrtl.c (can_delete_note_p): Update.
18573         (delete_insn): Update.
18574         (rtl_merge_blocks): Update.
18575         (commit_one_edge_insertion): Update.
18576         (rtl_verify_flow_info): Update.
18577         * stmt.c (expand_case): Do not call squeeze_notes.
18578
18579 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18580
18581         PR middle-end/7651
18582         PR c++/11856
18583         PR c/12963
18584         PR c/23587
18585         PR other/29694
18586         * c.opt (Wtype-limits): New.
18587         * doc/invoke.texi (Wtype-limits): Document it.
18588         (Wextra): Enabled by -Wextra.
18589         * c-opts.c (c_common_post_options): Enabled by -Wextra.
18590         * c-common.c (shorten_compare): Warn with Wtype-limits.
18591
18592 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
18593
18594         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
18595         inlined function, not as a macro.
18596         (_mm_alignr_pi8): Ditto.
18597         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
18598         (_mm_inserti_si64): Ditto.
18599         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
18600         (_mm_extract_epi16): Ditto.
18601         (_mm_insert_epi16): Ditto.
18602         (_mm_shufflehi_epi16): Ditto.
18603         (_mm_shufflelo_epi16): Ditto.
18604         (_mm_shuffle_epi32): Ditto.
18605         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
18606         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
18607         all functions.
18608         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
18609         float constant.
18610         (_m_to_float): Use C89 compatible assignment.
18611
18612 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
18613
18614         PR target/32007
18615         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
18616
18617 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18618
18619         PR middle-end/7651
18620         * doc/invoke.texi (Wreturn-type): Complete description.
18621         (Wextra): Delete item about return-type warning.
18622         * c-decl.c: Delete redundant Wextra warning.
18623
18624 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
18625
18626         PR target/31585
18627         * config/i386/pmmintrin.h: Do not include xmmintrin.h
18628         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
18629         inlined function, not as a macro.
18630         (_mm_prefetch): Ditto.
18631         (_m_pextrw): Ditto.
18632         (_mm_insert_pi16): Ditto.
18633         (_m_pinsrw): Ditto.
18634         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
18635         (_m_pshufw): Ditto. Add const to __N argument.
18636         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
18637         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
18638         (_mm_slli_epi32): Ditto.
18639         (_mm_srli_si128): Implement as always inlined function, not as a
18640         macro.  Add __inline to function declaration.
18641         (_mm_slli_si128): Ditto.
18642
18643 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
18644
18645         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
18646         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
18647         New constants.
18648         (struct fenv): New structure.
18649         (FP_HANDLE_EXCEPTIONS): New define.
18650         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
18651         (_FP_DECL_EXP): New define.
18652         (FP_INIT_ROUNDMODE): New define.
18653         (FP_ROUNDMODE): New define.
18654
18655 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18656
18657         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
18658         (Wconversion): Update description.
18659         (Wconversion-sign): New.
18660         * c.opt (Wconversion-sign): New.
18661         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
18662         means disabled for C++. Otherwise, take the status of Wconversion.
18663         * c-common.c (conversion_warning): Warn with either Wconversion or
18664         Wconversion-sign.
18665         (warnings_for_convert_and_check): Conditions are already checked by
18666         conversion_warning.
18667         (convert_and_check): Don't check warnings if the conversion failed.
18668
18669 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
18670            Anatoly Sokolov <aesok@dol.ru>
18671
18672         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
18673         avr_epilogue_uses) : Add declaration.
18674         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
18675         * config/avr/constraints.md (R): New constraint.
18676         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
18677         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
18678         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
18679         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
18680         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
18681         call_prologue_saves, epilogue_restores, return_from_epilogue,
18682         return_from_main_epilogue, return_from_interrupt_epilogue,
18683         return_from_naked_epilogue, prologue, epilogue): New patterns.
18684         (jump): Handle symbol reference.
18685         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
18686         avr_output_function_prologue, avr_output_function_epilogue): Remove
18687         functions.
18688         (avr_init_machine_status, expand_prologue, expand_epilogue,
18689         avr_asm_function_end_prologue, avr_epilogue_uses,
18690         avr_asm_function_begin_epilogue): New functions.
18691         (prologue_size, epilogue_size, jump_tables_size): Remove global
18692         variables.
18693         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
18694         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
18695         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
18696         (avr_override_options): Initialise init_machine_status.
18697         (output_movhi): Handle all stack pointer loads.
18698         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
18699         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
18700         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
18701         (EPILOGUE_USES) Redefine.
18702         (machine_function) Declare.
18703
18704 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
18705
18706         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
18707         Use a single return statement.
18708
18709 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18710
18711         PR middle-end/30250
18712         * builtins.c (do_mpfr_lgamma_r): New.
18713         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
18714         * tree.h (CASE_FLT_FN_REENT): New.
18715
18716 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
18717
18718         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
18719         (output_die): Use 'unsigned long' with %x.
18720         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
18721         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
18722         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
18723
18724         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
18725
18726 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
18727
18728         PR target/31989
18729         PR target/31681
18730         PR target/31666
18731         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
18732         true if function has no argument.
18733
18734 2007-05-18  DJ Delorie  <dj@redhat.com>
18735
18736         * config/mips/mips.c (mips_offset_within_alignment_p): New.
18737         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
18738
18739 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
18740
18741         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
18742         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
18743         count_trailing_zeros.
18744         (__i386__): Implement count_leading_zeros using __builtin_clz().
18745         Implement count_trailing_zeros usign __builtin_ctz().
18746
18747 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
18748
18749         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
18750
18751 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
18752
18753         PR middle-end/31344
18754         * expr.c (emit_move_change_mode): Change mode of push operands here.
18755
18756 2007-05-17  Ian Lance Taylor  <iant@google.com>
18757
18758         PR tree-optimization/31953
18759         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
18760         Change all callers.
18761         (set_value_range_to_null): Call set_value_range_to_value.
18762         (extract_range_from_comparison): Likewise.
18763
18764 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18765
18766         * toplev.c (print_version): Output GMP/MPFR version info.
18767
18768         * builtins.c (CASE_MATHFN_REENT): New macro.
18769         (mathfn_built_in): Use it.
18770         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
18771         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
18772         BUILT_IN_LGAMMAL_R): New.
18773         * doc/extend.texi: Document new builtins.
18774
18775         PR middle-end/31796
18776         * builtins.c (do_mpfr_remquo): New.
18777         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
18778         (fold_builtin_3): Handle BUILT_IN_REMQUO.
18779
18780         PR middle-end/30251
18781         * builtins.c (fold_builtin_1): Handle y0, y1.
18782         (fold_builtin_2): Handle yn.
18783
18784         PR middle-end/30251
18785         * builtins.c (do_mpfr_bessel_n): New.
18786         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
18787         (fold_builtin_2): Handle BUILT_IN_JN.
18788
18789 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
18790
18791         PR target/31965
18792         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
18793         TYPE_PRECISION (intmax_type_node).
18794
18795 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
18796
18797         PR target/31850
18798         * reload.c (subst_reloads): Remove checking.
18799
18800 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
18801
18802         PR rtl-optimization/31691
18803         * combine.c (simplify_set): Build a new src pattern instead of
18804         substituting its operands in the COMPARE case.
18805
18806 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
18807
18808         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
18809         (execute_vrp): Preserve loops through jump threading.
18810         * tree-ssa-threadupdate.c (thread_single_edge,
18811         dbds_continue_enumeration_p, determine_bb_domination_status,
18812         thread_through_loop_header): New functions.
18813         (create_edge_and_update_destination_phis,
18814         create_edge_and_update_destination_phis): Set loops for the new blocks.
18815         (prune_undesirable_thread_requests): Removed.
18816         (redirect_edges): Do not pretend that redirect_edge_and_branch can
18817         create new blocks.
18818         (thread_block): Do not call prune_undesirable_thread_requests.
18819         Update loops.
18820         (mark_threaded_blocks): Select edges to thread here.
18821         (thread_through_all_blocks): Take may_peel_loop_headers argument.
18822         Thread edges through loop headers independently.
18823         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
18824         * tree-pass.h (TODO_mark_first_instance): New.
18825         (first_pass_instance): Declare.
18826         * cfghooks.c (duplicate_block): Put the block to the original loop
18827         if copy is not specified.
18828         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
18829         jump threading.  Pass may_peel_loop_headers to
18830         thread_through_all_blocks according to first_pass_instance.
18831         * cfgloop.h (create_preheader): Declare.
18832         * tree-flow.h (thread_through_all_blocks): Declaration changed.
18833         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
18834         * passes.c (first_pass_instance): New variable.
18835         (next_pass_1): Set TODO_mark_first_instance.
18836         (execute_todo): Set first_pass_instance.
18837
18838 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
18839
18840         PR tree-optimization/24659
18841         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
18842         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
18843         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
18844         OTI_vec_pack_ufix_trunc.
18845         (vec_unpacks_float_hi_optab): Define new macro.
18846         (vec_unpacks_float_lo_optab): Ditto.
18847         (vec_unpacku_float_hi_optab): Ditto.
18848         (vec_unpacku_float_lo_optab): Ditto.
18849         (vec_pack_sfix_trunc_optab): Ditto.
18850         (vec_pack_ufix_trunc_optab): Ditto.
18851         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
18852         and vec_pack_[s|u]fix_trunc_optab using
18853         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
18854         * tree-vectorizer.c (supportable_widening_operation): Handle
18855         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
18856         (supportable_narrowing_operation): New function.
18857         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
18858         * tree-vect-transform.c (vectorizable_conversion): Handle
18859         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
18860         (vect_gen_widened_results_half): Move before vectorizable_conversion.
18861         (vectorizable_type_demotion): Call supportable_narrowing_operation()
18862         to check for target support.
18863         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
18864         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
18865         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
18866         for VEC_PACK_FIX_TRUNC_EXPR.
18867         (expand_binop): Special case mode of the result for
18868         vec_pack_[u|s]fix_trunc_optab.
18869         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
18870         vec_pack_[u|s]fix_trunc_optab.
18871
18872         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
18873         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
18874         * tree-pretty-print.c (dump_generic_node): Handle
18875         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
18876         VEC_PACK_FIX_TRUNC_EXPR.
18877         (op_prio): Ditto.
18878         * expr.c (expand_expr_real_1): Ditto.
18879         * tree-inline.c (estimate_num_insns_1): Ditto.
18880         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
18881
18882         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
18883         (vec_unpacks_float_lo_v8hi): Ditto.
18884         (vec_unpacku_float_hi_v8hi): Ditto.
18885         (vec_unpacku_float_lo_v8hi): Ditto.
18886         (vec_unpacks_float_hi_v4si): Ditto.
18887         (vec_unpacks_float_lo_v4si): Ditto.
18888         (vec_pack_sfix_trunc_v2df): Ditto.
18889
18890         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
18891         Document.
18892         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
18893         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
18894         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
18895         [vec_pack_ufix_trunc]: Ditto.
18896         [vec_unpacks_float_hi]: Ditto.
18897         [vec_unpacks_float_lo]: Ditto.
18898         [vec_unpacku_float_hi]: Ditto.
18899         [vec_unpacku_float_lo]: Ditto.
18900
18901 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
18902
18903         * soft-fp/README: Update for new files.
18904         * soft-fp/floattisf.c: New file.
18905         * soft-fp/floattidf.c: New file.
18906         * soft-fp/floattitf.c: New file.
18907         * soft-fp/floatuntisf.c: New file.
18908         * soft-fp/floatuntidf.c: New file.
18909         * soft-fp/floatuntitf.c: New file.
18910         * soft-fp/fixsfti.c: New file.
18911         * soft-fp/fixdfti.c: New file.
18912         * soft-fp/fixtfti.c: New file.
18913         * soft-fp/fixunssfti.c: New file.
18914         * soft-fp/fixunsdfti.c: New file.
18915         * soft-fp/fixunstfti.c: New file.
18916         * soft-fp/extendxftf.c: New file.
18917         * soft-fp/trunctfxf.c: New file.
18918
18919         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
18920         (__trunctfxf2): Ditto.
18921
18922         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
18923         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
18924         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
18925         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
18926         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
18927         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
18928
18929         * config/i386/t-fprules-softfp64: New file.
18930         * config/i386/sfp-machine.h: New file.
18931         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
18932         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
18933         and soft-fp/t-softfp to tmake_file.
18934         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
18935         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
18936
18937         * config/i386/t-linux64 (softfp_wrap_start): New.
18938         (softfp_wrap_end): New.
18939         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
18940         supported for TARGET_64BIT.
18941
18942 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
18943
18944         * c-common.c (c_common_signed_or_unsigned_type): Emulate
18945         c_common_unsigned_type behavior.
18946
18947 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
18948
18949         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
18950         calls as pure.
18951
18952 2007-05-16  Eric Christopher  <echristo@apple.com>
18953
18954         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
18955         saving after stack push. Set sp_offset whenever we push.
18956         (rs6000_emit_epilogue): Move altivec register restore before
18957         stack push.
18958
18959 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
18960
18961         * configure.ac: Allow sysroots to be relocated under $prefix as
18962         well as $exec_prefix.
18963         * configure: Regenerate.
18964
18965 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
18966
18967         Revert:
18968
18969         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
18970
18971         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
18972         (gcc_tooldir): Likewise.
18973         * configure: Regenerate.
18974         * Makefile.in (libsubdir_to_prefix): New variable, based on the
18975         old configure.ac gcc_tooldir setting.
18976         (prefix_to_exec_prefix): New variable.
18977         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
18978         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
18979
18980 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
18981
18982         * c-typeck.c (build_binary_op): Return early for error.
18983
18984 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
18985
18986         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
18987         struct nb_iter_bound.
18988         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
18989         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
18990         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
18991         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
18992         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
18993         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
18994         (del_scev_info): Use ggc_free.
18995         (scev_initialize): Allocate scalar_evolution_info in gc memory.
18996         * loop-init.c: Include ggc.h.
18997         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
18998         (loop_optimizer_finalize): Use ggc_free.
18999         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
19000         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
19001         pass_iv_optimize): Add TODO_ggc_collect.
19002         * function.h (struct function): Remove skip marker from
19003         x_current_loops.
19004         * cfgloop.c: Include ggc.h.
19005         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
19006         memory.
19007         (establish_preds): Vector superloops is gc allocated.
19008         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
19009         loop->exits list.
19010         (flow_loops_find): Vector larray is gc allocated.
19011         (loop_exit_free): Use ggc_free.
19012         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
19013         that head of exits list is now not a part of struct loop.
19014         (record_loop_exits): Allocate exits table in gc memory.
19015         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
19016         that head of exits list is now not a part of struct loop.
19017         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
19018         struct loop_exit): Add GTY marker.
19019         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
19020         Add skip marker to aux field.  Make head of exits list a separate
19021         object.
19022         (struct loops): Add GTY marker.  Make larray vector gc allocated.
19023         Add param marker to exits table.
19024         (get_loops): Type changed.
19025         * Makefile.in (tree-scalar-evolution.o): Add
19026         gt-tree-scalar-evolution.h dependency.
19027         (cfgloop.o, loop-init.o): Add ggc.h dependency.
19028         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
19029         * basic-block.h (struct basic_block_def): Remove skip marker from
19030         loop_father field.
19031
19032 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
19033
19034         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
19035         of 0 in the call to expand_expr().
19036         (expand_builtin_mathfn_3): Ditto.
19037         (expand_builtin_interclass_mathfn): Ditto.
19038         (expand_builtin_cexpi): Ditto.
19039         (expand_builtin_int_roundingfn): Ditto.
19040         (expand_builtin_int_roundingfn_2): Ditto.
19041         (expand_builtin_pow): Ditto.
19042         (expand_builtin_powi): Ditto.
19043         (expand_builtin_bswap): Ditto.
19044         (expand_builtin_unop): Ditto.
19045         (expand_builtin_fabs): Ditto.
19046         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
19047         the call to expand_expr().
19048         (expand_builtin_sync_operation): Ditto.
19049         (expand_builtin_compare_and_swap): Ditto.
19050         (expand_builtin_lock_test_and_set): Ditto.
19051         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
19052         instead of 0 in the call to expand_expr().
19053         (expand_builtin_extract_return_addr): Ditto.
19054         (expand_builtin_eh_return): Ditto.
19055         (expand_eh_return): Ditto.
19056         * explow.c (expr_size): Ditto.
19057         * expr.c (optimize_bitfield_assignment_op): Ditto.
19058         (expand_assignement): Ditto.
19059         (store_expr): Ditto.
19060         (store_field): Ditto.
19061         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
19062         the call to expand_expr().
19063         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
19064         in the call to expand_expr().
19065         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
19066         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
19067         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
19068         of expand_expr().
19069         * optabs.c (expand_vec_shift_expr): Ditto.
19070         (expand_vec_cond_expr): Ditto.
19071         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
19072         call to expand_expr().
19073         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
19074         in the call to expand_expr().
19075
19076 2007-05-14  Dave Korn  <dave.korn@artimi.com>
19077
19078         * genautomata.c (gen_regexp_el): Allocate correct size for regexp.
19079
19080 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
19081
19082         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
19083         instead of c_common_unsigned_type.
19084         (c_common_unsigned_type): Remove.
19085         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
19086         c_common_unsigned_type.
19087         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
19088         c_common_unsigned_type.
19089         * c-common.h (c_common_unsigned_type): Remove.
19090         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
19091         c_common_unsigned_type.
19092         * c-format.c (check_format_types): Use unsigned_type_for instead of
19093         c_common_unsigned_type.
19094         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
19095         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
19096         of c_common_unsigned_type.
19097         * convert.c (convert_to_integer): Use unsigned_type_for instead of
19098         lang_hooks.types.unsigned_type.
19099         * expmed.c (make_tree): Use unsigned_type_for instead of
19100         lang_hooks.types.unsigned_type.
19101         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
19102         lang_hooks.types.unsigned_type.
19103         (build_range_check): Likewise.
19104         (fold_unary): Likewise.
19105         (fold_binary): Likewise.
19106         (fold_ternary): Likewise.
19107         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
19108         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
19109         * tree.c (get_unsigned_type): New.
19110         (unsigned_type_for): Use get_unsigned_type instead of
19111         lang_hooks.types.unsigned_type.
19112
19113 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
19114
19115         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
19116         to m68k_get_function_kind.  Update its prototype.
19117         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
19118         interrupt_thread.
19119         (m68k_interrupt_function_p): Return enum m68k_function_type
19120         instead of bool.  Rename to m68k_get_function_kind.
19121         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
19122         target is not fido.
19123         (m68k_compute_frame_layout): Don't mark any register for save
19124         if an interrupt_thread attribute is specified.
19125         (m68k_hard_regno_rename_ok): Update a use of
19126         m68k_interrupt_function_p.
19127         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
19128         m68k_interrupt_function_p.
19129         (m68k_function_type): New.
19130         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
19131         for a function with an interrupt_thread attribute.
19132         * doc/extend.texi: Document the interrupt_thread attribute.
19133
19134 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
19135
19136         Fix PR tree-optimization/31911
19137         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
19138         if they didn't change the expression.
19139
19140 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
19141
19142         * tree-scalar-evolution.c (resolve_mixers): Exported.
19143         * tree-scalar-evolution.h (resolve_mixers): Declare.
19144         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
19145         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
19146         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
19147         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
19148         init_array_ref, init_pointer_ref, analyze_indirect_ref,
19149         strip_conversion, analyze_offset_expr, address_analysis,
19150         object_analysis, analyze_offset): Removed.
19151         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
19152         split_constant_offset, canonicalize_base_object_address,
19153         object_address_invariant_in_loop_p, disjoint_objects_p,
19154         dr_may_alias_p, dr_address_invariant_p): New functions.
19155         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
19156         and dr_analyze_alias.
19157         (initialize_data_dependence_relation): Use dr_may_alias_p
19158         and object_address_invariant_in_loop_p.
19159         (compute_self_dependence): Handle the case when
19160         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
19161         (find_data_references_in_stmt): Restrict the analysis of data
19162         references to the given loop nest.
19163         (find_data_references_in_loop): Made static.  Pass loop nest to
19164         find_data_references_in_stmt.
19165         (compute_data_dependences_for_loop): Use DR_VOPS.
19166         (free_data_ref): Free DR_VOPS.
19167         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
19168         (struct innermost_loop_behavior): ... new.
19169         (struct base_object_info): Replaced by ...
19170         (struct indices): ... new.
19171         (struct dr_alias): New.
19172         (enum data_ref_type): Removed.
19173         (struct data_reference): Consist of struct innermost_loop_behavior,
19174         struct indices and struct dr_alias.
19175         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
19176         (DR_MEMTAG): Renamed to ...
19177         (DR_SYMBOL_TAG): ... this.
19178         (find_data_references_in_loop): Declaration removed.
19179         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
19180         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
19181         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
19182         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
19183
19184 2007-05-13  Revital Eres  <eres@il.ibm.com>
19185
19186         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
19187         which walks virtual def-use chains to find redundant stores.
19188         (dse_optimize_stmt): Call it.
19189
19190 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
19191
19192         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
19193         * passes.c (init_optimization_passes): Move pass_jump_bypass
19194         after loop2.
19195
19196         * basic-block.h (bb_has_eh_pred): Fix style issue.
19197
19198 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
19199
19200         PR rtl-optimization/31848
19201         * loop-invariant.c (move_invariant_reg): If we move an insn
19202         with a REG_EQUAL note, and that insn is not always executed,
19203         remove the REG_EQUAL note.
19204
19205 2007-05-12  Richard Guenther  <rguenther@suse.de>
19206
19207         PR tree-optimization/31797
19208         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
19209         propagate into a stmt that has volatile ops.
19210
19211 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
19212
19213         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
19214         (gcc_tooldir): Likewise.
19215         * configure: Regenerate.
19216         * Makefile.in (libsubdir_to_prefix): New variable, based on the
19217         old configure.ac gcc_tooldir setting.
19218         (prefix_to_exec_prefix): New variable.
19219         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
19220         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
19221
19222 2007-05-11  Silvius Rus  <rus@google.com>
19223
19224         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
19225         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
19226         * c-common.h (strict_aliasing_warning): Change return type.
19227         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
19228         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
19229         (build_c_cast): Condition call to strict_aliasing_warning.
19230         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
19231         * flags.h (set_Wstrict_aliasing): Declare.
19232         * opts.c (set_Wstrict_alising): Define, add call to.
19233         * tree-flow.h (strict_aliasing_warning_backend): Declare.
19234         * tree-ssa-alias-warnings.c: New file.
19235         * tree-ssa-alias.c (compute_may_aliases): Add call to
19236         strict_aliasing_warning_backend.
19237
19238 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
19239
19240         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
19241         Use loop_depth and loop_outer accessor functions.
19242         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
19243         determine_invariantness_stmt, move_computations_stmt): Ditto.
19244         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
19245         add_loop, loopify, unloop, fix_loop_structure): Ditto.
19246         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
19247         * tree-scalar-evolution.c (interpret_loop_phi,
19248         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
19249         instantiate_parameters_1, scev_const_prop): Ditto.
19250         * cfghooks.c (make_forwarder_block): Ditto.
19251         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
19252         * modulo-sched.c (loop_canon_p): Ditto.
19253         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
19254         slpeel_can_duplicate_loop_p): Ditto.
19255         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
19256         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
19257         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
19258         cancel_loop, verify_loop_structure): Ditto.
19259         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
19260         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
19261         superloops vector instead of "pred" array.
19262         (establish_preds): Take father loop as an argument.  Initialize the
19263         superloops vector.
19264         (flow_loop_tree_node_add): Pass father loop to establish_preds.
19265         Do not initialize loop->outer.
19266         (flow_loop_tree_node_remove): Truncate the superloops vector.
19267         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
19268         "pred" merged to "superloops" vector.
19269         (loop_depth, loop_outer): New.
19270         (fel_init): Use loop_outer.
19271
19272 2007-05-11  Jan Hubicka  <jh@suse.cz>
19273
19274         * cgraphunit.c: Include gt-cgraphunit.h
19275         (static_ctors, static_dtors): New static vars.
19276         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
19277         based on implementation in c-common.c
19278         (cgraph_finalize_function): Call record_cdtor_fn.
19279         (cgraph_optimize): Call cgraph_build_cdtor_fns.
19280         * decl.c (finish_function): Do not call c_record_cdtor_fn.
19281         (c_write_global_declarations): Do not call c_build_cdtor_fns.
19282         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
19283         build_cdtor, c_build_cdtor_fns): Remove.
19284         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
19285         c_build_cdtor_fns): Remove prototype.
19286
19287 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
19288
19289         PR other/31852
19290         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
19291         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
19292         * builtins.c (fold_builtin_memchr): New.
19293         (expand_builtin_memchr): Call the latter.
19294         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
19295         * doc/extend.texi ([Other built-in functions provided by GCC]):
19296         Document memchr.
19297
19298 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
19299
19300         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
19301         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
19302         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
19303         PFPO_OP1_TYPE_SHIFT): Constants added.
19304         (DFP_ALL): Mode macro defined.
19305         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
19306         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
19307         Insn definitions added.
19308         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
19309         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
19310         Expanders added.
19311
19312 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
19313
19314         PR tree-optimization/31885
19315         * tree-chrec.c (chrec_contains_undetermined): Do not consider
19316         NULL_TREE to be undetermined.
19317         (automatically_generated_chrec_p): Return false for NULL.
19318
19319 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
19320
19321         * config/bfin/bfin.h (MOVE_RATIO): Define.
19322
19323 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
19324
19325         * config.gcc (sparc-wrs-vxworks): New target.
19326         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
19327         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
19328         * config/sparc/sparc.h: Include vxworks-dummy.h.
19329         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
19330         include LABEL_REFs too.
19331         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
19332         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
19333         VxWorks.
19334         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
19335         on VxWorks.
19336         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
19337         (sparc_emit_call_insn): New function.
19338         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
19339         functions when generating VxWorks PIC.
19340         * config/sparc/sparc.md (vxworks_load_got): New pattern.
19341         (call, call_value): Use sparc_emit_call_insn instead of
19342         emit_call_insn.
19343
19344 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
19345
19346         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
19347
19348 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
19349
19350         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
19351         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
19352         split_double instead of operand_subword.
19353
19354 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
19355
19356         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
19357         * config/bfin/bfin.c (bfin_local_alignment): New function.
19358         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
19359
19360 2007-05-08  Chao-ying Fu  <fu@mips.com>
19361
19362         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
19363         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
19364         (smsub_widen_optab, umsub_widen_optab): Define.
19365         * optabs.c (init_optabs): Initialize smsub_widen_optab and
19366         umsub_widen_optab.
19367         * genopinit.c (optabs): Fill in smsub_widen_optab and
19368         umsub_widen_optab.
19369         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
19370         and umsub_widen_optab to implement multiply-subtract sequences.
19371         * config/mips/mips.md (*msac<u>_di): Rename to...
19372         (<u>msubsidi4): ...this.  Extend condition to include
19373         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
19374         of operand 0 to "ka" and use the three-operand form of msub<u>
19375         for TARGET_DSPR2.
19376         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
19377         to define_expands.
19378
19379 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
19380
19381         PR rtl-optimization/28011
19382         * reload.c (push_reload): Set dont_share if IN appears in OUT
19383         also when IN is a PLUS rtx.
19384         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
19385         are same PLUS rtx.
19386
19387 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
19388
19389         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
19390         call unshare_all_decls.
19391         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
19392         (unshare_all_decls): Remove.
19393
19394 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
19395
19396         PR 31847
19397         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
19398         dumps.
19399
19400 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
19401             Nigel Stephens  <nigel@mips.com>
19402
19403         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
19404         Update comments and all uses.
19405         (MIN_FPRS_PER_FMT): Define.
19406         * config/mips/mips.c (function_arg): Fix to correctly handle
19407         the -mips32r2 -mfp64 -mabi=32 case.
19408         (override_options): Enable use of odd-numbered registers for
19409         SFmode values on MIPS32.
19410         (mips_save_reg_p): Save whole floating-point register pair if
19411         either half is used.
19412         (compute_frame_size): Fix comment.
19413
19414 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
19415
19416         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
19417         argument of type bool.
19418         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
19419         argument. Safely select temporary P register according to it.
19420         (do_link): Change call site of add_to_reg accordingly.
19421         (do_unlink): Add epilogue_p as a fourth argument and pass it
19422         to add_to_reg.
19423         (expand_interrupt_handler_epilogue): Change call of do_unlink
19424         accordingly.
19425         (bfin_expand_prologue): Add a third argument sibcall_p.
19426         * config/bfin/bfin.md (epilogue): Change call of
19427         bfin_expand_epilogue accordingly.
19428         (sibcall_epilogue): Likewise.
19429         (eh_return_internal): Likewise.
19430
19431         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
19432         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
19433         * config/bfin/bfin.c (bfin_handle_option): Handle
19434         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
19435         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
19436         Support bf534, bf536 and bf561.
19437         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
19438
19439 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
19440
19441         PR target/31854
19442         * config/i386/i386.c (ix86_function_regparm): Process local
19443         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
19444
19445 2007-05-07  Mike Stump  <mrs@apple.com>
19446
19447         * doc/invoke.texi (Warning Options): Document that -Wempty-body
19448         also checks for and while statements in C++.
19449
19450 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
19451
19452         * gcc.c (at_file_supplied): New variable.
19453         (main): Set it if we expanded argv.
19454         (do_spec_1): Pass an @-file to the linker if we were called with
19455         an @-file argument and HAVE_GNU_LD.
19456         * collect2.c (at_file_supplied): New variable.
19457         (response_file): New variable.
19458         (collect_exit): Unlink response_file if necessary.
19459         (handler): Likewise.
19460         (do_wait): Likewise.
19461         (main): Set at_file_supplied if we expanded argv.
19462         (collect_execute): Pass an @-file to subprocesses if we were called
19463         with an @-file argument.
19464         * configure.ac: Add define for HAVE_GNU_LD.
19465         * configure: Regenerate.
19466         * config.in: Regenerate.
19467
19468 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
19469
19470         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
19471         operand to HI mode.
19472         (mulsi3): New.
19473         (divsi3): New.
19474         (udivsi3): New.
19475
19476 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
19477
19478         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
19479         (TARGET_ENCODE_SECTION_INFO): Re-define.
19480         (m32c_encode_section_info): New
19481         (function_vector_handler): New
19482         (current_function_special_page_vector): New
19483         (m32c_special_page_vector_p): New.
19484         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
19485         Prototype.
19486         * config/m32c/jump.md: Added instruction JSRS for functions
19487         with attribute "function_vector".
19488         * doc/extend.texi (function_vector): Added description
19489         for M16C, M32C targets.
19490
19491 2007-05-07  DJ Delorie  <dj@redhat.com>
19492
19493         PR 31794
19494         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
19495         ashrpsi3, lshrpsi3): Update shift count constraint.
19496
19497 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
19498             Nathan Froyd  <froydnj@codesourcery.com>
19499
19500         PR 22133
19501         * c-incpath.c (add_path): Strip trailing path separators.
19502
19503 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
19504
19505         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
19506         Free dominance info before purging EH edges.
19507         (eliminate_degenerate_phis): Likewise.
19508         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
19509
19510 2007-05-07  Jan Hubicka  <jh@suse.cz>
19511
19512         * gimplify.c (gimplify_expr): Do not crash when folding
19513         (void *)(int)&a + 4.
19514
19515 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
19516
19517         PR driver/31694
19518         * c-opts.c (lang_fortran): Make it non static.
19519         * c-common.h (lang_fortran): New prototype.
19520         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
19521         -lang-fortran option was passed by the driver.
19522
19523 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
19524
19525         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
19526         of ASSERT_CHECKING.  Tweak message.
19527
19528 2007-05-06  Revital Eres  <eres@il.ibm.com>
19529
19530         PR 30957
19531         * loop-unroll.c (insert_var_expansion_initialization):
19532         Initialize the expansions with -zero instead of +zero.
19533
19534 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
19535
19536         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
19537         into pic and non-pic versions. Mark r19 as used for
19538         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
19539         for tgd_load, tld_load and tie_load .
19540         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
19541         version of tgd_load, tld_load and tie_load depending on the
19542         value of flag_pic.
19543
19544 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
19545             Jakub Jelinek  <jakub@redhat.com>
19546
19547         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
19548         (__do_global_dtors_aux): Use more paranoid loop to run
19549         destructors if HIDDEN_DTOR_LIST_END.
19550         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
19551
19552 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
19553
19554         * varasm.c (align_variable): Don't increase alignment for
19555         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
19556         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
19557
19558 2007-05-04  Josh Conner  <jconner@apple.com>
19559
19560         * basic-block.h (cdi_direction): Assign values to all enumeration
19561         constants.
19562         (dom_computed): Remove.
19563         (dom_info_state): New.
19564         (set_dom_info_availability): New.
19565         * tree-ssa-loop-im.c (determine_invariantness): Initialize
19566         walk_data.dom_direction.
19567         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
19568         instead of dom_computed[].
19569         (split_edge): Likewise.
19570         (create_basic_block): Likewise.
19571         (merge_blocks): Likewise.
19572         * ifcvt.c (find_if_header): Likewise.
19573         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
19574         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
19575         * tree-ssa.c (verify_ssa): Likewise.
19576         * tree-cfg.c (tree_verify_flow_info): Likewise.
19577         (remove_edge_and_dominated_blocks): Likewise.
19578         * dominance.c (dom_computed): Make static.
19579         (calc_dfs_tree_nonrec): Change third param to a bool.
19580         (calc_dfs_tree): Change second param to a bool.
19581         (calc_idioms): Change second param to a bool.  Use
19582         dom_convert_dir_to_idx.
19583         (init_dom_info): Validate dir before using.
19584         (dom_convert_dir_to_idx): New.
19585         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
19586         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
19587         (free_dominance_info): Use dom_convert_dir_to_idx.
19588         (get_immediate_dominator): Likewise.
19589         (set_immediate_dominator): Likewise.
19590         (get_dominated_by): Likewise.
19591         (redirect_immediate_dominators): Likewise.
19592         (nearest_common_denominator): Likewise.
19593         (dominated_by_p): Likewise.
19594         (bb_dom_dfs_in): Likewise.
19595         (bb_dom_dfs_out): Likewise.
19596         (recount_dominator): Likewise.
19597         (iterate_fix_dominators): Likewise.
19598         (add_to_dominance_info): Likewise.
19599         (delete_from_dominance_info): Likewise.
19600         (first_dom_son): Likewise.
19601         (next_dom_son): Likewise.
19602         (dom_info_available_p): Likewise.
19603         (dom_info_state): New.
19604         (set_dom_info_availability): New.
19605
19606 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
19607
19608         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
19609         Expander removed.
19610         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
19611
19612 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
19613
19614         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
19615         (subdi3, subdi_carry): Delete.
19616
19617 2007-05-04  Jan Hubicka  <jh@suse.cz>
19618             Richard Guenther  <rguenther@suse.de>
19619
19620         * opts.c (decode_options): Do not fiddle with inlining
19621         parameters in case of optimizing for size.
19622         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
19623         for size do nothing.
19624         (cgraph_decide_inlining_of_small_function): When optimizing for
19625         size never inline functions increasing caller size.
19626         (cgraph_early_inlining): Inline for size when optimizing for size.
19627
19628 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
19629
19630         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
19631         logical operations piecewise.
19632         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
19633         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
19634         subdi_sesidi_di): Delete.
19635         (add_with_carry): Produce carry in CC instead of a DREG to shorten
19636         the generated sequence.  Allow three-reg add in constraints.  Rewrite
19637         the rtl expression for carry to avoid zero_extend of a constant.
19638         (sub_with_carry): New pattern.
19639         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
19640         different sequence not involving jumps.
19641         (notbi): Now a named pattern.
19642
19643 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
19644
19645         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
19646         Add the note about a significant loss of accuracy of some
19647         mathematical routines when these options are used.
19648
19649 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
19650
19651         * haifa-sched.c (rtx_vec_t): New typedef.
19652         (contributes_to_priority_p): Extract piece of priority () into new
19653         static function.
19654         (priority): Use the function.  Add assertion.
19655         (rank_for_schedule, set_priorities): Add assertion to check that
19656         insn's priority is initialized.
19657         (clear_priorities, calc_priorities): Change signature.  Make it update
19658         all relevant insns.  Update all callers ('add_to_speculative_block ()'
19659         and 'create_block_check_twin ()').
19660         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
19661         Add new field 'priority_status'.
19662         (INSN_PRIORITY_STATUS): New macro.
19663         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
19664
19665 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
19666
19667         * sched-ebb.c (debug_ebb_dependencies): New static function.
19668         (init_ready_list): Use it.
19669
19670         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
19671         with changed signature and 'debug_rgn_dependencies ()'.
19672         (debug_rgn_dependencies): New static function.
19673         (init_ready_list): Use it.
19674
19675         * sched-int.h (debug_dependencies): Declare.
19676
19677 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
19678
19679         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
19680
19681 2007-05-04  Dirk Mueller  <dmueller@suse.de>
19682
19683         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
19684
19685 2007-05-03  Jan Hubicka  <jh@suse.cz>
19686
19687         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
19688         ((T1)X op (T1)Y), for pointer type in more cases than before.
19689
19690         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
19691
19692         * tree-object-size.c (plus_expr_object_size): When operand size is
19693         unknown, return unknown.
19694
19695 2007-05-03  Dirk Mueller  <dmueller@suse.de>
19696
19697         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
19698
19699         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
19700         options.
19701
19702         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
19703
19704 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
19705
19706         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
19707
19708 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
19709
19710         * config/soft-fp/double.h, config/soft-fp/extended.h,
19711         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
19712         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
19713         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
19714         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
19715         glibc CVS.
19716
19717 2007-05-03  Ian Lance Taylor  <iant@google.com>
19718
19719         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
19720         MASK_PPC_GFXOPT for 8540 or 8548.
19721
19722 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
19723
19724         * tree-vect-transform.c (vect_update_inits_of_drs): Use
19725         vect_print_dump_info() to output debug information.
19726
19727 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
19728
19729         PR target/31768
19730         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
19731         operands of size 2 when operand is not MEM_P.
19732
19733 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
19734
19735         PR tree-optimization/30565
19736         * lambda-code.c (perfect_nestify): Fix updating of dominators.
19737
19738 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
19739
19740         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
19741         (umulsi3_highpart): Use them.
19742         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
19743         for final accumulator to D regisster tranfser.
19744
19745 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
19746
19747         PR tree-optimization/31699
19748         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
19749         wrong code.
19750         (vect_enhance_data_refs_alignment): Compute peel amount using
19751         TYPE_VECTOR_SUBPARTS instead of vf.
19752         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
19753
19754 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
19755
19756         PR bootstrap/31776
19757         * system.h: Remove inclusion of double-int.h
19758         * tree.h: Include double-int.h
19759         * gengtype.c: Likewise
19760         * cfgloop.h: Likewise
19761         * Makefile.in: Adjust dependencies on double-int.h
19762
19763 2007-05-02  Eric Christopher  <echristo@apple.com>
19764
19765         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
19766         -shared to -Zdynamiclib.
19767
19768 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
19769
19770         PR c++/31663
19771         * c-common.c (strip_pointer_or_array_types): New function.
19772         * c-common.h (strip_pointer_or_array_types): New function declaration.
19773
19774 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
19775
19776         PR tree-optimization/31771
19777         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
19778
19779 2007-05-02  Paul Brook  <paul@codesourcery.com>
19780
19781         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
19782
19783 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19784
19785         PR middle-end/29715
19786         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
19787         transformation.
19788
19789 2007-05-02  Nick Clifton  <nickc@redhat.com>
19790
19791         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
19792
19793 2007-05-02  Richard Guenther  <rguenther@suse.de>
19794
19795         PR tree-optimization/31146
19796         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
19797         argument, single_use_p.  If we have a single use that is
19798         a conversion to the definition rhs type, propagate that rhs.
19799         (forward_propagate_addr_expr): Pass single_use_p argument
19800         to forward_propagate_addr_expr_1.
19801
19802 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19803
19804         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
19805         variable.
19806
19807 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
19808
19809         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
19810         'AMD Family 10 core'.
19811
19812 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
19813
19814         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
19815         and athlon64-sse3 as improved versions of k8, opteron and athlon64
19816         with SSE3 instruction set support.
19817         * doc/invoke.texi: Likewise.
19818
19819 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
19820
19821         * config/i386/i386.c (override_options): Tuning 32-byte loop
19822         alignment for amdfam10 architecture. Increasing the max loop
19823         alignment to 24 bytes.
19824
19825 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
19826
19827         * config/m68k/constraints.md: New.
19828         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
19829         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
19830         EXTRA_CONSTRAINT): Remove.
19831         * config/m68k/m68k.md: Include constraints.md.
19832         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
19833
19834 2007-05-01  Ian Lance Taylor  <iant@google.com>
19835
19836         PR tree-optimization/31739
19837         * tree-vrp.c (vrp_val_is_max): New static function.
19838         (vrp_val_is_min): New static function.
19839         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
19840         copying the node.
19841         (set_value_range): Use vrp_val_is_{max,min}.
19842         (extract_range_from_assert): Likewise.
19843         (extract_range_from_binary_expr): Likewise.
19844         (extract_range_from_unary_expr): Likewise.
19845         (dump_value_range, vrp_meet): Likewise.
19846         (vrp_visit_phi_node): Likewise.
19847         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
19848
19849 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
19850
19851         * config/i386/gmon-sol2.c (size_t): New type.
19852         (intptr_t): Likewise.
19853         (s_textsize): Declare as size_t.
19854         (sbrk): Declare.
19855         (monstartup): Use size_t for sizes.
19856         (_mcount): Save and restore registers.
19857         (internal_mcount): Pass 0 as the first argument to monstartup
19858         in 64-bit mode.
19859         (moncontrol): Convert pointer to appropriately sized integer
19860         before passing to profil.
19861
19862 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
19863
19864         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
19865         __NO_FPRS__, not just if _SOFT_DOUBLE.
19866         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
19867         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
19868         also for E500 double.
19869         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
19870         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
19871         && !TARGET_FPRS).
19872
19873 2007-05-01  Richard Guenther  <rguenther@suse.de>
19874
19875         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
19876         is NULL.
19877
19878 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
19879
19880         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
19881
19882 2007-05-01  Jan Hubicka  <jh@suse.cz>
19883
19884         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
19885         invariant.
19886
19887 2007-05-01  Jan Hubicka  <jh@suse.cz>
19888
19889         * tree.h (maybe_fold_offset_to_component_ref): Remove.
19890         (maybe_fold_offset_to_reference): Declare.
19891         * fold-const.c (fold_unary): Do not fold
19892         (type *)&A into &A->field_of_type_and_offset_0
19893         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
19894         size is unknown, give up.
19895         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
19896         offsets.
19897         (maybe_fold_offset_to_reference): New.
19898         (maybe_fold_stmt_indirect): Use it.
19899         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
19900         * gimplify.c (gimplify_conversion): Canonicalize conversions to
19901         field references.
19902         (gimplify_expr): Likewise for plus_expr.
19903
19904 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
19905
19906         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
19907         bsi_after_labels.  Always insert statements before bsi.
19908         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
19909         * predict.c (apply_return_prediction): Check for empty blocks.
19910         * cfgexpand.c (lab_rtx_for_bb): New variable.
19911         (label_rtx_for_bb): Do not create new tree labels.
19912         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
19913         (tree_expand_cfg): Initialize lab_rtx_for_bb.
19914         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
19915         creating edges.
19916         (label_for_bb): Add field used.
19917         (update_eh_label, main_block_label): Mark the label used.
19918         (cleanup_dead_labels): Remove unused labels.
19919
19920 2007-05-01  Richard Guenther  <rguenther@suse.de>
19921
19922         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
19923         if it is not about to be set.
19924         (get_value_range): Do not pre-allocate equiv bitmap.
19925         (update_value_range): No need to clear equiv field.
19926         (add_equivalence): Change prototype to get bitmap pointer.
19927         Allocate bitmap here if it is not already.
19928         (extract_range_from_assert): Do not allocate bitmap here.
19929         Update callers to add_equivalence.
19930         (extract_range_from_ssa_name): Likewise.
19931         (get_vr_for_comparison): New static helper.
19932         (compare_name_with_value): Handle NULL equiv bitmap by
19933         peeling the first iteration of the comparison loop.
19934         Use get_vr_for_comparison.
19935         (compare_names): Handle NULL equiv bitmaps by using fake
19936         ones.  Use get_vr_for_comparison.
19937
19938 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
19939
19940         * double-int.c (mpz_set_double_int): Moved from
19941         tree-ssa-loop-niter.c.
19942         (mpz_get_double_int): Likewise; also, add option to wrap
19943         out-of-range integers.
19944         * double-int.h: New prototypes for above.
19945         * tree.c (get_static_type_bounds): Moved from
19946         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
19947         TYPE_MAX_VALUE if they exist..
19948         * tree.h: New prototype for above.
19949         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
19950         get_type_bounds calls.
19951         (mpz_set_double_int): Move to double-int.c.
19952         (get_type_bounds): Move to tree.c, rename to
19953         get_static_type_bounds.
19954         (mpz_to_double_int): Move to double-int.c, rename to
19955         mpz_get_double_int.
19956
19957 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
19958
19959         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
19960         DIV0 exception can fall through to a normal return.
19961
19962 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
19963
19964         PR middle-end/22156
19965         Temporarily revert:
19966         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
19967         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
19968         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
19969         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
19970         initialize align to silence bogus warning.
19971         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
19972         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
19973         all_no_warning.
19974         (struct sra_walk_fns): Remove use_all parameter from use.
19975         (sra_hash_tree): Handle BIT_FIELD_REFs.
19976         (sra_elt_hash): Don't hash bitfld blocks.
19977         (sra_elt_eq): Skip them in parent compares as well.  Handle
19978         BIT_FIELD_REFs.
19979         (sra_walk_expr): Don't maintain or pass down use_all_p.
19980         (scan_use): Remove use_all parameter.
19981         (scalarize_use): Likewise.  Re-expand assignment to
19982         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
19983         output, and re-scalarize after output.  Don't mark anything
19984         for no warning.
19985         (scalarize_ldst): Adjust.
19986         (scalarize_walk_gimple_modify_statement): Likewise.
19987         (build_element_name_1): Handle BIT_FIELD_REFs.
19988         (instantiate_element): Don't warn for any element whose parent
19989         is used as a whole.
19990         (instantiate_missing_elements_1): Return the sra_elt.
19991         (canon_type_for_field): New.
19992         (try_instantiate_multiple_fields): New.
19993         (instantiate_missing_elemnts): Use them.
19994         (mark_no_warning): Removed.
19995         (generate_one_element_ref): Handle BIT_FIELD_REFs.
19996         (REPLDUP, sra_build_elt_assignment): New.
19997         (generate_copy_inout): Use them.
19998         (generate_element_copy): Likewise.  Handle bitfld differences.
19999         (generate_element_zero): Don't recurse for blocks.  Use
20000         sra_build_elt_assignment.
20001         (generate_one_element_int): Take elt instead of var.  Use
20002         sra_build_elt_assignment.
20003         (generate_element_init_1): Adjust.
20004         (scalarize_use, scalarize_copy): Use REPLDUP.
20005         (scalarize_ldst): Move assert before dereference.
20006         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
20007
20008 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20009
20010         PR C++/31721
20011         * tree.c (reconstruct_complex_type): Reconstruct a reference
20012         correctly.
20013         Also use the same mode for the pointer as the old pointer type.
20014
20015 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
20016
20017         * doc/trouble.texi (Interoperation): Remove note about Ultrix
20018         Fortran compiler.
20019
20020 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
20021
20022         PR rtl-optimization/31676
20023         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
20024         (df_refs_record): Call it.
20025
20026 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
20027
20028         * rtl.def (SS_ABS): New code.
20029         * config/bfin/bfin.c (print_operand): New modifier 'v'.
20030         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
20031         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
20032         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
20033         (bfin_init_builtins): Define them.
20034         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
20035         (bfin_expand_builtin): ... and handle the others here.
20036         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
20037         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
20038         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
20039         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
20040         operand is only HImode.
20041
20042 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
20043
20044         * regclass.c (scan_one_insn): Remove splitting of
20045         two address insns.
20046
20047 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
20048             Nigel Stephens  <nigel@mips.com>
20049
20050         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
20051
20052 2007-04-28  Jan Hubicka  <jh@suse.cz>
20053
20054         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
20055         insn_locators_alloc instead of insn_locators_initialize;
20056         call reset_block_changes.
20057         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
20058         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
20059         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
20060         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
20061         * config/score/score.c (th_output_mi_thunk): Likewise.
20062         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
20063         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
20064         tolerate uninitialized locator info.
20065
20066         Re-apply:
20067         * function.c (init_function_start): Don't init line number info.
20068         (expand_function_end): Update.
20069         (reset_block_changes, record_block_change, finalize_block_changes,
20070         check_block_change, free_block_changes): Kill.
20071         * function.h (reset_block_changes, record_block_change,
20072         finalize_block_changes, check_block_change, free_block_changes):
20073         Remove prototypes.
20074         (struct function): Remove ib_boundaries_block.
20075         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
20076         Use curr_insn_locator to initialize locator.
20077         (emit_line_note): Remove.
20078         * cfgexpand.c (expand_gimple_cond_expr): Update.
20079         (construct_exit_block): Likewise.
20080         (tree_expand_cfg): Initialize/finalize locators.
20081         * expr.c (expand_expr_real): Update.
20082         * cfglayout.c (line_locators_locs, line_locators_lines,
20083         file_locators_locs, file_locators_files): Remove.
20084         (set_block_levels): Move to cfgexpand.c.
20085         (insn_locators_initialize): Remove.
20086         (pass_insn_locators_initialize): Remove.
20087         (locations_locators_locs, locations_locators_vals): New static vars.
20088         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
20089         Likewise.
20090         (insn_locators_alloc, insn_locators_finalize,
20091         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20092         New functions.
20093         (locator_location): New.
20094         (locator_line, locator_file): Rewrite.
20095         * rtl.h (emit_line_note): Kill.
20096         (insn_locators_alloc, insn_locators_finalize,
20097         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20098         Declare.
20099         * tree-inline.c (initialize_cfun): Do not initialize
20100         ib_boundaries_block.
20101         * passes.c (pass_insn_locators_initialize): Remove.
20102
20103 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
20104
20105         * tree-cfg.c (move_block_to_fn): Release bb from dominance
20106         info.  Update last_basic_block correctly.
20107
20108 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
20109
20110         PR target/31701
20111         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
20112         register itself to hold the offset constant.  Tell flow the use
20113         of r4 and r5 when they are used.
20114
20115 2007-04-27  Richard Guenther  <rguenther@suse.de>
20116
20117         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
20118         if we simplified anything.
20119         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
20120         warnings until we did a simplification and the stmt was not
20121         marked as TREE_NO_WARNING.
20122
20123 2007-04-27  Mike Stump  <mrs@apple.com>
20124
20125         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
20126
20127 2007-04-27  Ian Lance Taylor  <iant@google.com>
20128
20129         PR middle-end/31710
20130         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
20131         TYPE_MAX_VALUE exist, convert them to the new type.
20132
20133 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
20134
20135         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
20136         if it claims to be available.
20137         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
20138         edge is redirected.
20139         (perform_tree_ssa_dce): Always free postdominators.
20140
20141 2007-04-27  Richard Henderson  <rth@redhat.com>
20142
20143         * config/alpha/predicates.md (aligned_memory_operand): Mark
20144         as define_special_predicate.
20145         (unaligned_memory_operand, normal_memory_operand): Likewise.
20146         (reg_or_unaligned_mem_operand): Remove.
20147         (any_memory_operand): Match the documentation and check for
20148         non-renumbered pseudos during reload.
20149         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
20150         alpha_secondary_reload_class, update to new interface, make static.
20151         Handle CQImode like HImode.  Remove FP subreg check.
20152         (alpha_expand_mov): Use replace_equiv_address.
20153         (alpha_expand_mov_nobwx): Use any_memory_operand.
20154         (TARGET_SECONDARY_RELOAD): New.
20155         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
20156         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
20157         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
20158         * config/alpha/alpha.md: ... here.
20159         (RELOAD12, reloadmode): New.
20160         (movcqi): New.
20161         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
20162         Don't handle the aligned case here.
20163         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
20164         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
20165         reload_inhi_help.  Don't expect a scratch register.
20166         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
20167         reload_outhi_help.
20168         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
20169
20170 2007-04-27  Richard Guenther  <rguenther@suse.de>
20171
20172         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
20173
20174 2007-04-27  Richard Guenther  <rguenther@suse.de>
20175
20176         PR tree-optimization/30965
20177         PR tree-optimization/30978
20178         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
20179         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
20180         (find_equivalent_equality_comparison): Likewise.
20181         (simplify_cond): Likewise.
20182         (get_prop_source_stmt): New helper.
20183         (get_prop_dest_stmt): Likewise.
20184         (can_propagate_from): Likewise.
20185         (remove_prop_source_from_use): Likewise.
20186         (combine_cond_expr_cond): Likewise.
20187         (forward_propagate_comparison): New function.
20188         (forward_propagate_into_cond): Rewrite to use fold for
20189         tree combining.
20190         (tree_ssa_forward_propagate_single_use_vars): Call
20191         forward_propagate_comparison to propagate comparisons.
20192
20193 2007-04-27  Richard Guenther  <rguenther@suse.de>
20194
20195         PR tree-optimization/31715
20196         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
20197         sure to do computation on the offset in an appropriate
20198         signed type.
20199
20200 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
20201
20202         * reload.h (elimination_target_reg_p): Declare.
20203         * reload.c (find_reloads): Don't apply the reg_rtx move
20204         optimization if the SET_DEST satisfies elimination_target_reg_p.
20205         * reload1.c (elimination_target_reg_p): New function.
20206         (gen_reload): In the move/add2 fallback, make sure that op0
20207         does not overlap the destination register.
20208
20209 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
20210
20211         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
20212         transform only GIMPLE_MODIFY_STMTs.
20213         * tree-complex.c (expand_complex_operations_1): Ditto.
20214         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
20215         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
20216         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
20217         branches.
20218         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
20219         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
20220         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
20221         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
20222         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
20223         slpeel_add_loop_guard): Ditto.
20224         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
20225         * lambda-code.c (perfect_nestify): Ditto.
20226         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
20227         before the first statement.
20228         * tree-optimize.c (execute_free_datastructures): Fix comments.
20229         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
20230         * tree-flow.h (disband_implicit_edges): Declaration removed.
20231         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
20232         branches.
20233         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
20234         COND_EXPRs without gotos.
20235         (disband_implicit_edges, has_label_p): Removed.
20236         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
20237         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
20238         branches.
20239         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
20240         side effects.
20241         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
20242         also for COND_EXPRs.
20243         * cfgexpand.c (label_rtx_for_bb): New function.
20244         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
20245         Use label_rtx_for_bb to find the labels.
20246         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
20247         last block.  Detect fallthru edges.
20248
20249 2007-04-26  Ian Lance Taylor  <iant@google.com>
20250
20251         PR target/28675
20252         * reload.c (find_reloads_subreg_address): If the address was valid
20253         in the original mode but not in the new mode, reload the whole
20254         address.
20255
20256 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
20257
20258         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
20259         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
20260         (cleanup_control_expr_graph): Do not invalidate dominance info.
20261         Record altered blocks.
20262         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
20263         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
20264         cleanup_tree_cfg_bb): New functions.
20265         (remove_forwarder_block): Do not maintain the worklist of blocks.
20266         Record altered blocks.
20267         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
20268         not over whole cfg.
20269         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
20270         delete_unreachable_blocks if dominators are not available.
20271         * tree-inline.c (optimize_inline_calls): Free dominance information
20272         earlier.
20273         * tree-flow.h (remove_edge_and_dominated_blocks,
20274         cfgcleanup_altered_bbs): Altered.
20275         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
20276         blocks.
20277         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
20278         functions.
20279         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
20280         do not invalidate dominators.
20281
20282 2007-04-26  Anatoly Sokolov <aesok@post.ru>
20283
20284         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
20285         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
20286         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
20287         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
20288
20289 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
20290
20291         * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
20292
20293 2007-04-26  Richard Guenther  <rguenther@suse.de>
20294
20295         PR tree-optimization/31703
20296         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
20297         the right type for the target of the bittest.
20298
20299 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20300
20301         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
20302         ix86_sol10_return_in_memory.
20303
20304 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20305
20306         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
20307         variables.
20308
20309 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
20310
20311         PR c++/31598
20312         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
20313
20314         PR tree-optimization/30558
20315         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
20316         clear this_state.prev_try.
20317
20318 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20319             Mark Mitchell  <mark@codesourcery.com>
20320
20321         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
20322         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
20323         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
20324
20325 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20326
20327         PR driver/31107
20328         * doc/invoke.texi (%:print-asm-header): Document.
20329         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
20330         and -ftarget-help.
20331         (static_spec_functions): Add print-asm-header.
20332         (main): Print a banner before the --target-help linker options.
20333         (print_asm_header_spec_function): New function.
20334
20335 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
20336
20337         PR target/31403
20338         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
20339         (movsf_ie): Likewise.
20340
20341 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
20342
20343         * doc/extend.texi ([Type Traits]): Adjust per N2255.
20344
20345 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
20346
20347         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
20348         exception for divide-by-zero.
20349         (__umodsi3, __modsi3): Likewise.
20350
20351 2007-04-25  Dirk Mueller  <dmueller@suse.de>
20352
20353         * c-typeck.c (build_compound_expr): Annotate warning()
20354         call with OPT_Wunused_value.
20355         * tree-ssa.c (warn_uninit): Annotate warning with
20356         OPT_Wunintialized.
20357         * c-common.c (handle_sentinel_attribute): Annotate warning
20358         call with OPT_Wattributes.
20359
20360 2007-04-25  Thiemo Seufer  <ths@mips.com>
20361
20362         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
20363         (mips16): Fix typo.
20364         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
20365         on to the assembler.  Improve handling of -mno-mips16.  Add handling
20366         of -mno-mips3d, -mno-dsp, -mno-dspr2.
20367         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
20368         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
20369         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
20370
20371 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
20372
20373         PR target/31680
20374         * config/i386/winnt.c (i386_pe_file_end): Strip only
20375         USER_LABEL_PREFIX when writing export name.
20376
20377 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
20378
20379         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
20380         sh/elf.h, vx-common.h and vxworks.h.
20381         * config/sh/sh.h: Include config/vxworks-dummy.h.
20382         (SUBTARGET_OVERRIDE_OPTIONS): Define.
20383         (OVERRIDE_OPTIONS): Use it.
20384         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
20385         (vxworks_picreg): New pattern.
20386         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
20387         VXWORKS_OS_CPP_BUILTINS.
20388         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
20389         to their VXWORKS_* equivalents.
20390         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
20391         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
20392         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
20393         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
20394         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
20395         -mrtp/-fPIC multilibs.
20396         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
20397         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
20398         (MULTILIB_OSDIRNAMES): Delete.
20399
20400 2007-04-25  Anatoly Sokolov <aesok@post.ru>
20401
20402         PR target/18989
20403         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
20404
20405 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
20406
20407         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
20408         rounding mode to be specified by the caller.
20409         (real_to_mpfr) Likewise.
20410         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
20411         include new arguments.
20412         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
20413
20414 2007-04-24  Ian Lance Taylor  <iant@google.com>
20415
20416         PR tree-optimization/31605
20417         * tree-vrp.c (set_value_range): Check that min and max are not
20418         both overflow infinities.
20419         (set_value_range_to_value): New static function.
20420         (extract_range_from_binary_expr): Call set_value_range_to_value.
20421         (extract_range_from_cond_expr): Likewise.
20422         (extract_range_from_expr): Likewise.
20423         (extract_range_from_unary_expr): Likewise.  Don't create a range
20424         which overflows on both sides.
20425         (vrp_meet): Check for a useless range.
20426         (vrp_visit_phi_node): If we see a constant which looks like an
20427         overflow infinity, turn off the TREE_OVERFLOW flag.
20428
20429 2007-04-24  Ian Lance Taylor  <iant@google.com>
20430
20431         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
20432
20433 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
20434
20435         PR diagnostic/25923
20436         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
20437         diagnostic message is being built.
20438         * tree-pretty-print.c (dump_generic_node): Only write the
20439         formatted text into BUFFER's stream if we are not building a
20440         diagnostic message.
20441         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
20442         dump_generic_node.
20443         * Makefile.in (toplev.o): Depend on tree-pass.h.
20444
20445 2007-04-24  Ian Lance Taylor  <iant@google.com>
20446
20447         PR tree-optimization/31602
20448         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
20449         conditionals in the copied loop header.
20450         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
20451         warnings if TREE_NO_WARNING is set.
20452         * doc/invoke.texi (Warning Options): Clarify that
20453         -Wstrict-overflow does not warn about loops.
20454
20455 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
20456
20457         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
20458         expand on the comment about _Decimal128 arguments and check the
20459         integer result of the modulus operation; for 64-bit ELF ABI, ensure
20460         that _Decimal128 argument uses even/odd register pair.
20461         (function_arg): Ditto.
20462
20463 2007-04-24  Hui-May Chang <hm.chang@apple.com>
20464
20465         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
20466         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
20467
20468 2007-04-24  Richard Guenther  <rguenther@suse.de>
20469             Olga Golovanevsky  <olga@il.ibm.com>
20470
20471         * fold-const.c (multiple_of_p): Check for bottom
20472         to be zero.
20473
20474 2007-04-24  Richard Henderson  <rth@redhat.com>
20475
20476         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
20477         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
20478         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
20479         looking for non-zero bits shifted out.  Avoid a recursive call
20480         when constructing the scalar.
20481         (__floatundisf): Likewise.
20482
20483 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
20484
20485         * dwarf2out.c (field_byte_offset): Move the existing logic
20486         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
20487         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
20488
20489 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20490
20491         PR target/31641
20492         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
20493         length argument of 0 for memset.
20494         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
20495         unsigned shift instead of the signed variant.
20496
20497 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20498
20499         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
20500         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
20501         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
20502         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
20503         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
20504         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
20505         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
20506         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
20507         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
20508         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
20509         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
20510         "mul<mode>3", "div<mode>3"): Insn definitions added.
20511         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
20512         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
20513         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
20514         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
20515         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
20516         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
20517         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
20518         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
20519         TARGET_FLOAT_FORMAT): Macro definitions removed.
20520         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
20521         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
20522         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
20523         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
20524         (s390_gen_rtx_const_DI): Function removed.
20525         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
20526
20527 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
20528
20529         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
20530         over an external ffs function.
20531
20532 2007-04-24  Chao-ying Fu  <fu@mips.com>
20533             Richard Sandiford  <richard@nildram.co.uk>
20534
20535         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
20536         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
20537         (smadd_widen_optab, umadd_widen_optab): Define.
20538         * optabs.c (init_optabs): Initialize smadd_widen_optab and
20539         umadd_widen_optab.
20540         * genopinit.c (optabs): Fill in smadd_widen_optab and
20541         umadd_widen_optab.
20542         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
20543         and umadd_widen_optab to implement multiply-add sequences.
20544         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
20545         (<u>maddsidi4): ...this.  Extend condition to include
20546         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
20547         of operand 0 to "ka" and use the three-operand form of madd<u>
20548         for TARGET_DSPR2.
20549         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
20550         to define_expands.
20551         * config/mips/constraints.md (ka): New register constraint.
20552
20553 2007-04-24  Jan Hubicka  <j@suse.cz>
20554
20555         Revert:
20556
20557         2007-04-23  Jan Hubicka  <jh@suse.cz>
20558         * function.c (init_function_start): Don't init line number info.
20559         (expand_function_end): Update.
20560         (reset_block_changes, record_block_change, finalize_block_changes,
20561         check_block_change, free_block_changes): Kill.
20562         * function.h (reset_block_changes, record_block_change,
20563         finalize_block_changes, check_block_change, free_block_changes):
20564         Remove prototypes.
20565         (struct function): Remove ib_boundaries_block.
20566         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
20567         Use curr_insn_locator to initialize locator.
20568         (emit_line_note): Remove.
20569         * cfgexpand.c (expand_gimple_cond_expr): Update.
20570         (construct_exit_block): Likewise.
20571         (tree_expand_cfg): Initialize/finalize locators.
20572         * expr.c (expand_expr_real): Update.
20573         * cfglayout.c (line_locators_locs, line_locators_lines,
20574         file_locators_locs, file_locators_files): Remove.
20575         (set_block_levels): Move to cfgexpand.c.
20576         (insn_locators_initialize): Remove.
20577         (pass_insn_locators_initialize): Remove.
20578         (locations_locators_locs, locations_locators_vals): New static vars.
20579         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
20580         Likewise.
20581         (insn_locators_alloc, insn_locators_finalize,
20582         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20583         New functions.
20584         (locator_location): New.
20585         (locator_line, locator_file): Rewrite.
20586         * rtl.h (emit_line_note): Kill.
20587         (insn_locators_alloc, insn_locators_finalize,
20588         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20589         Declare.
20590         * tree-inline.c (initialize_cfun): Do not initialize
20591         ib_boundaries_block.
20592         * passes.c (pass_insn_locators_initialize): Remove.
20593
20594 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
20595
20596         * doc/invoke.texi: Removed leading '-' from option index entries.
20597
20598 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
20599
20600         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
20601         Use phi_nodes_ptr.
20602         (create_phi_node): Use set_phi_nodes.
20603         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
20604         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
20605         (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
20606         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
20607         (bsi_start, bsi_last): Use bb_stmt_list.
20608         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
20609         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
20610         Traverse the statements using tsi iterator.
20611         * basic-block.h (struct basic_block_def): Fields stmt_list
20612         and phi_nodes moved to ...
20613         (struct tree_bb_info): ... new structure.
20614         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
20615         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
20616         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
20617         (tree_verify_flow_info): Verify that il.tree is not set for
20618         entry and exit block.
20619         (tree_split_block): Use set_bb_stmt_list.
20620
20621 2007-04-23  Mike Stump  <mrs@apple.com>
20622
20623         * config/i386/i386.c (ix86_tune_features
20624         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
20625         nocona and core2.
20626
20627 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
20628
20629         * config/i386/i386.md (prefix_extra): New attribute.
20630         (length): Add prefix_extra.
20631
20632         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
20633         (sse2_movntv2di): Likewise.
20634         (sse2_cvtps2dq): Likewise.
20635         (sse2_cvtpd2pi): Likewise.
20636         (sse2_cvttpd2pi): Likewise.
20637         (*sse2_cvtpd2ps): Likewise.
20638         (*add<mode>3): Likewise.
20639         (sse2_ssadd<mode>3): Likewise.
20640         (sse2_usadd<mode>3): Likewise.
20641         (*sub<mode>3): Likewise.
20642         (sse2_sssub<mode>3): Likewise.
20643         (sse2_ussub<mode>3): Likewise.
20644         (*mulv8hi3): Likewise.
20645         (*smulv8hi3_highpart): Likewise.
20646         (*umulv8hi3_highpart): Likewise.
20647         (sse2_umulv2siv2di3): Likewise.
20648         (sse2_pmaddwd): Likewise.
20649         (ashr<mode>3): Likewise.
20650         (lshr<mode>3): Likewise.
20651         (ashl<mode>3): Likewise.
20652         (sse2_ashlti3): Likewise.
20653         (sse2_lshrti3): Likewise.
20654         (*umaxv16qi3): Likewise.
20655         (*smaxv8hi3): Likewise.
20656         (*uminv16qi3): Likewise.
20657         (*sminv8hi3): Likewise.
20658         (sse2_eq<mode>3): Likewise.
20659         (sse2_gt<mode>3): Likewise.
20660         (*and<mode>3): Likewise.
20661         (sse2_nand<mode>3): Likewise.
20662         (*ior<mode>3): Likewise.
20663         (*xor<mode>3): Likewise.
20664         (sse2_packsswb): Likewise.
20665         (sse2_packssdw): Likewise.
20666         (sse2_packuswb): Likewise.
20667         (sse2_punpckhbw): Likewise.
20668         (sse2_punpcklbw): Likewise.
20669         (sse2_punpckhwd): Likewise.
20670         (sse2_punpcklwd): Likewise.
20671         (sse2_punpckhdq): Likewise.
20672         (sse2_punpckldq): Likewise.
20673         (sse2_punpckhqdq): Likewise.
20674         (sse2_punpcklqdq): Likewise.
20675         (*sse2_pinsrw): Likewise.
20676         (*sse2_pextrw): Likewise.
20677         (sse2_pshufd_1): Likewise.
20678         (sse2_uavgv16qi3): Likewise.
20679         (sse2_uavgv8hi3): Likewise.
20680         (sse2_psadbw): Likewise.
20681         (sse2_pmovmskb): Likewise.
20682         (*sse2_maskmovdqu): Likewise.
20683         (*sse2_maskmovdqu_rex64): Likewise.
20684         (sse4a_extrqi): Likewise.
20685         (sse4a_extrq): Likewise.
20686         (sse3_lddqu): Set prefix_rep.
20687         (sse3_addsubv4sf3): Likewise.
20688         (sse3_haddv4sf3): Likewise.
20689         (sse3_hsubv4sf3): Likewise.
20690         (sse_cvtss2si): Likewise.
20691         (sse_cvtss2si_2): Likewise.
20692         (sse_cvtss2siq): Likewise.
20693         (sse_cvtss2siq_2): Likewise.
20694         (sse_cvttss2si): Likewise.
20695         (sse_cvttss2siq): Likewise.
20696         (sse2_cvttps2dq): Likewise.
20697         (sse3_movshdup): Likewise.
20698         (sse3_movsldup): Likewise.
20699         (sse2_cvtsd2si): Likewise.
20700         (sse2_cvtsd2si_2): Likewise.
20701         (sse2_cvtsd2siq): Likewise.
20702         (sse2_cvtsd2siq_2): Likewise.
20703         (sse2_cvttsd2si): Likewise.
20704         (sse2_cvttsd2siq): Likewise.
20705         (*sse2_cvtpd2dq): Likewise.
20706         (*sse2_cvttpd2dq): Likewise.
20707         (sse2_pshuflw_1): Likewise.
20708         (sse2_pshufhw_1): Likewise.
20709         (sse4a_insertqi): Likewise.
20710         (sse4a_insertq): Likewise.
20711         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
20712         (ssse3_phadddv4si3): Likewise.
20713         (ssse3_phaddswv8hi3): Likewise.
20714         (ssse3_phsubwv8hi3): Likewise.
20715         (ssse3_phsubdv4si3): Likewise.
20716         (ssse3_phsubswv8hi3): Likewise.
20717         (ssse3_pmaddubswv8hi3): Likewise.
20718         (ssse3_pmulhrswv8hi3): Likewise.
20719         (ssse3_pshufbv16qi3): Likewise.
20720         (ssse3_psign<mode>3): Likewise.
20721         (ssse3_palignrti): Likewise.
20722         (abs<mode>2): Likewise.
20723         (ssse3_phaddwv4hi3): Set prefix_extra.
20724         (ssse3_phadddv2si3): Likewise.
20725         (ssse3_phaddswv4hi3): Likewise.
20726         (ssse3_phsubwv4hi3): Likewise.
20727         (ssse3_phsubdv2si3): Likewise.
20728         (ssse3_phsubswv4hi3): Likewise.
20729         (ssse3_pmaddubswv4hi3): Likewise.
20730         (ssse3_pmulhrswv4hi3): Likewise.
20731         (ssse3_pshufbv8qi3): Likewise.
20732         (ssse3_psign<mode>3): Likewise.
20733         (ssse3_palignrdi): Likewise.
20734         (abs<mode>2): Likewise.
20735         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
20736         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
20737         (sse2_pmovmskb): Set mode to SI instead of V2DF.
20738
20739 2007-04-23  Nick Clifton  <nickc@redhat.com>
20740
20741         * params.def: Fix formatting of emacs local variables.
20742
20743 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
20744
20745         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
20746         move if inter-unit move isn't allowed.
20747         Don't split moving the first element of V2DI to DI to inter-unit
20748         move if inter-unit move isn't allowed.
20749
20750 2007-04-23  Richard Guenther  <rguenther@suse.de>
20751
20752         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
20753         and CDI_POST_DOMINATORS separately.
20754
20755 2007-04-23  Nick Clifton  <nickc@redhat.com>
20756
20757         * c.opt (Wformat-contains-nul): Add warning attribute.
20758
20759 2007-04-23  Jan Hubicka  <jh@suse.cz>
20760
20761         * function.c (init_function_start): Don't init line number info.
20762         (expand_function_end): Update.
20763         (reset_block_changes, record_block_change, finalize_block_changes,
20764         check_block_change, free_block_changes): Kill.
20765         * function.h (reset_block_changes, record_block_change,
20766         finalize_block_changes, check_block_change, free_block_changes):
20767         Remove prototypes.
20768         (struct function): Remove ib_boundaries_block.
20769         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
20770         Use curr_insn_locator to initialize locator.
20771         (emit_line_note): Remove.
20772         * cfgexpand.c (expand_gimple_cond_expr): Update.
20773         (construct_exit_block): Likewise.
20774         (tree_expand_cfg): Initialize/finalize locators.
20775         * expr.c (expand_expr_real): Update.
20776         * cfglayout.c (line_locators_locs, line_locators_lines,
20777         file_locators_locs, file_locators_files): Remove.
20778         (set_block_levels): Move to cfgexpand.c.
20779         (insn_locators_initialize): Remove.
20780         (pass_insn_locators_initialize): Remove.
20781         (locations_locators_locs, locations_locators_vals): New static vars.
20782         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
20783         Likewise.
20784         (insn_locators_alloc, insn_locators_finalize,
20785         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20786         New functions.
20787         (locator_location): New.
20788         (locator_line, locator_file): Rewrite.
20789         * rtl.h (emit_line_note): Kill.
20790         (insn_locators_alloc, insn_locators_finalize,
20791         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20792         Declare.
20793         * tree-inline.c (initialize_cfun): Do not initialize
20794         ib_boundaries_block.
20795         * passes.c (pass_insn_locators_initialize): Remove.
20796
20797 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20798
20799         PR middle-end/31448
20800         * expr.c (reduce_to_bit_field_precision): Handle
20801         CONST_INT rtx's.
20802
20803 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
20804
20805         PR tree-optimization/24659
20806         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
20807         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
20808         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
20809         * genopinit.c (optabs): Rename vec_pack_mod_optab
20810         to vec_pack_trunc_optab.
20811         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
20812         early for scalar floating point operands for NOP_EXPR.
20813         (vectorizable_type_promotion): Ditto.
20814         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
20815         vec_pack_trunc_optab.
20816         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
20817
20818         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
20819         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
20820         Rename from VEC_PACK_MOD_EXPR.
20821         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
20822         * expr.c (expand_expr_real_1): Ditto.
20823         * tree-inline.c (estimate_num_insns_1): Ditto.
20824         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
20825
20826         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
20827         (vec_unpacks_lo_v4sf): Ditto.
20828         (vec_pack_trunc_v2df): Ditto.
20829         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
20830         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
20831         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
20832
20833         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
20834         vec_pack_mod_v8hi.
20835         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
20836
20837         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
20838         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
20839         packing of floating point operands.
20840         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
20841         represent unpacking of floating point operands.
20842         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
20843         [vec_unpacks_hi]: Ditto.
20844         [vec_unpacks_lo]: Ditto.
20845
20846 2007-04-22  Jan Hubicka  <jh@suse.cz>
20847
20848         * final.c (rest_of_handle_final): Call
20849         targetm.asm_out.constructor/targetm.asm_out.destructor
20850         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
20851         proper priority via decl_*_priority_insert.
20852         * c-common.c (c_expand_body): Likewise.
20853
20854 2007-04-22  Richard Guenther  <rguenther@suse.de>
20855
20856         PR tree-optimization/29789
20857         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
20858         (rewrite_reciprocal): New helper split out from
20859         determine_invariantness_stmt.
20860         (rewrite_bittest): Likewise.
20861         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
20862         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
20863         is not.
20864
20865 2007-04-22  Revital Eres  <eres@il.ibm.com>
20866
20867         * loop-unroll.c (var_to_expand): New field to support also
20868         insns of the form x = something + x.
20869         (analyze_insn_to_expand_var): Use it.
20870         (expand_var_during_unrolling): Likewise.
20871
20872 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
20873
20874         * predict.c: Include pointer-set.h.
20875         (bb_predictions): New variable.
20876         (tree_predicted_by_p, tree_predict_edge,
20877         remove_predictions_associated_with_edge): Use bb_predictions map
20878         instead of bb->predictions.
20879         (clear_bb_predictions, assert_is_empty): New functions.
20880         (combine_predictions_for_bb): Use bb_predictions map.  Call
20881         clear_bb_predictions.
20882         (tree_estimate_probability): Create and free bb_predictions map.
20883         * Makefile.in (predict.o): Add pointer-set.h dependency.
20884         * basic-block.h (struct basic_block_def): Remove predictions
20885         field.
20886         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
20887
20888 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
20889
20890         PR target/31480
20891         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
20892         is null.
20893
20894 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20895
20896         * timevar.c (timevar_print): Change reference of --disable-checking to
20897         --enable-checking=release.  Also warn if assert checking is disabled.
20898
20899 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20900
20901         PR C/30265
20902         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
20903         decl as addressable if the compound literal was marked as
20904         addressable.
20905         Mark the decl as a gimple register if it is a complex or
20906         vector decl and does not live in memory.
20907
20908 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20909
20910         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
20911         (GENERIC_NEXT): New function macro.
20912         (PHI_CHAIN): Use phi_node's new chain variable.
20913         (tree_phi_node): Change tree_common to tree_base
20914         and add the chain field.
20915         * tree-phinodes.c (make_phi_node): Don't set
20916         TREE_TYPE on the new node.
20917         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
20918         instead of checking GIMPLE_TUPLE_P in chain_next.
20919         * tree-vect-transform.c
20920         (get_initial_def_for_induction): Look at
20921         PHI_RESULT_TREE for the type of the phi node.
20922         (update_vuses_to_preheader): Use PHI_CHAIN
20923         instead of TREE_CHAIN on the phi node.
20924         * tree-ssa-structalias.c (compute_points_to_sets):
20925         Likewise.
20926         (ipa_pta_execute): Likewise.
20927
20928 2007-04-21  Richard Guenther  <rguenther@suse.de>
20929
20930         PR middle-end/31136
20931         * fold-const.c (fold_unary): Call fold_convert_const on the
20932         original tree.
20933
20934 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
20935
20936         * gcse.c (store_killed_in_insn): Handle PARALLELs.
20937         (store_killed_in_pat): New.
20938
20939 2007-04-20  Richard Henderson  <rth@redhat.com>
20940
20941         PR target/31628
20942         * config/i386/i386.c (type_has_variadic_args_p): Look for any
20943         TREE_LIST with a void_type_node value, not void_list_node exactly.
20944
20945 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
20946
20947         * doc/standards.texi: Re-arrange into language-specific
20948         subsections. Add a C++ section, documenting which standards we
20949         support.
20950
20951 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
20952
20953         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
20954         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
20955
20956 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
20957
20958         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
20959         ecrti.o and crtbegin.o.
20960         (LIB_DEFAULT_SPEC): Include -lc.
20961         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
20962
20963 2007-04-20  Richard Henderson  <rth@redhat.com>
20964
20965         PR target/28623
20966         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
20967         argument; update all callers.
20968         (get_unaligned_offset): New.
20969         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
20970         get_unaligned_address, just pass on the address directly.
20971         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
20972         the subreg in the helper patterns.
20973         (unaligned_extendqidi_le): Use get_unaligned_offset.
20974         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
20975         (unaligned_extendhidi_be): Likewise.
20976         (unaligned_extendhidi): Tidy.
20977         * config/alpha/alpha-protos.h: Update.
20978
20979 2007-04-20  Richard Henderson  <rth@redhat.com>
20980
20981         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
20982         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
20983         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
20984         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
20985         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
20986         (CPP_SPEC): Don't include %(cpp_subtarget).
20987         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
20988         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
20989         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
20990
20991 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
20992
20993         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
20994         for __builtin_ia32_cmpordss.
20995
20996         PR tree-optimization/31632
20997         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
20998         and arg1 for optimizations of comparison against min/max values.
20999         Fold arg0 to arg1's type for optimizations of comparison against
21000         min+1 and max-1 values.
21001
21002 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
21003
21004         * reload.c (combine_reloads): When trying to use a dying register,
21005         check whether it's uninitialized and don't use if so.
21006
21007 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
21008
21009         * fold-const.c: Remove prototypes for native_encode_expr and
21010         native_interpret_expr.
21011         (native_encode_expr): Make non-static.
21012         (native_interpret_expr): Likewise.
21013         * tree.h: Add prototypes for the above.
21014
21015 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
21016
21017         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
21018         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
21019         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
21020         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
21021         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
21022         Add length attributes.
21023
21024 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
21025
21026         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
21027         not that it is 1.
21028
21029         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
21030         __STDC_WANT_DEC_FP__.
21031
21032 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
21033
21034         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
21035         for long double compatibility.
21036         * configure: Regenerate.
21037
21038 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
21039
21040         PR rtl-optimization/29841
21041         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
21042         trap instructions.
21043         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
21044         that may cause control flow transfer from being moved.
21045
21046 2007-04-18  Jan Hubicka  <jh@suse.cz>
21047
21048         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
21049         types.
21050
21051 2007-04-18  Eric Christopher  <echristo@apple.com>
21052
21053         * config/rs6000/darwin.md (load_macho_picbase): Use link register
21054         only. Update operands.
21055         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
21056         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
21057         link register to pic register.
21058
21059 2007-04-18  Dirk Mueller  <dmueller@suse.de>
21060
21061         PR diagnostic/31227
21062         * tree-vrp.c (search_for_addr_array): New.
21063         (check_array_bounds): Suppress warning about
21064         address taken of array refs if its not de-referenced.
21065
21066 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
21067
21068         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
21069         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
21070
21071         * tree-vectorizer.h (NITERS_KNOWN_P): New.
21072         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
21073         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
21074
21075         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
21076         dump print.
21077         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
21078         print message.
21079         (vect_analyze_scalar_cycles): Fix indentation.
21080         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
21081         (vect_mark_relevant): Include phis in relevance analysis.
21082
21083         * tree-vect-transform.c (vect_transform_loop): Add an assert.
21084
21085 2007-04-18  Anatoly Sokolov <aesok@post.ru>
21086
21087         * config/avr/avr.c (ptrreg_to_str): Replace error() with
21088         output_operand_lossage().
21089
21090 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
21091
21092         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
21093         the unused code for reduction without adjust-in-epilog to simplify the
21094         function.
21095
21096 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
21097
21098         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
21099         (S390_TDC_NEGATIVE_ZERO): New constant.
21100         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
21101         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
21102         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
21103         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
21104         (S390_TDC_POSITIVE_INFINITY): New constant.
21105         (S390_TDC_NEGATIVE_INFINITY): New constant.
21106         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
21107         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
21108         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
21109         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
21110         (S390_TDC_INFINITY): New constant.
21111         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
21112         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
21113         optimization for UNSPEC_CCZ_TO_INT.
21114         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
21115         ("*ccz_to_int"): New insn.
21116         ("isinf<mode>2"): New insn.
21117         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
21118         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
21119         (UNSPEC_CCZ_TO_INT): New constant.
21120
21121 2007-04-18  Richard Guenther  <rguenther@suse.de>
21122
21123         PR tree-optimization/19431
21124         PR tree-optimization/21463
21125         * tree-pass.h (pass_phiprop): Declare.
21126         * passes.c (init_optimization_passes): New phiprop pass.
21127         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
21128         (phivn_valid_p): New helper function.
21129         (phiprop_insert_phi): Likewise.
21130         (propagate_with_phi): Likewise.
21131         (tree_ssa_phiprop): New propagator propagating loads
21132         through phi nodes if profitable.
21133
21134 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
21135
21136         * tree-vect-analyze.c (process_use): New function.
21137         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
21138         Check phis in all bbs.
21139         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
21140         assert.
21141
21142 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
21143
21144         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
21145         we use REG_EQUAL.
21146
21147 2007-04-17  Anatoly Sokolov <aesok@post.ru>
21148
21149         PR target/30483
21150         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
21151         error().
21152
21153 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
21154
21155         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
21156         on "0".
21157         (sse_vmmulv4sf3): Likewise.
21158         (sse2_vmaddv2df3): Likewise.
21159         (sse2_vmmulv2df3): Likewise.
21160
21161 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
21162
21163         PR rtl-optimization/31360
21164         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
21165         (target_reg_cost): New.
21166         (init_set_costs): Initialize target_reg_cost.  Add comments
21167         regarding the rationale of the costs.
21168         (global_cost_for_size): Renamed to...
21169         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
21170         of register pressure.
21171         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
21172         estimate_reg_pressure_cost.  Add number of ivs.
21173         (determine_set_costs): Dump target_reg_cost.
21174         * loop-invariant.c (gain_for_invariant): Use
21175         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
21176         (best_gain_for_invariant, find_invariants_to_move): Remove
21177         n_inv_uses.
21178         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
21179         (target_reg_cost): Declare.
21180         (global_cost_for_size): Declaration removed.
21181         (estimate_reg_pressure_cost): Declare.
21182
21183 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
21184
21185         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
21186         regnos into even/odd register pairs.
21187         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
21188         TDmode similar to the other floating point modes.
21189         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
21190         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
21191         define_expand's.
21192         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
21193         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
21194         (movdd_hardfloat64): Use TARGET_MFPGPR.
21195
21196 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
21197
21198         * reload1.c (delete_output_reload): Don't count output in n_inherited.
21199
21200         Revert
21201         2005-01-05  Richard Henderson  <rth@redhat.com>
21202         PR rtl-opt/10692
21203         * reload1.c (do_input_reload): Restrict the optimization deleteing
21204         a previous output reload to RELOAD_FOR_INPUT.
21205
21206 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
21207
21208         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
21209         induc_vec_info_type.
21210         (vectorizable_induction): New function declaration.
21211         * tree-vect-transform.c (get_initial_def_for_induction): No need to
21212         check if already vectorized.  Find first place in BB where new stmts
21213         can be inserted.  Takes only one argument.
21214         (vectorizable_induction): New function.
21215         (vect_transform_stmt): Add case for induc_vec_info_type to call
21216         vectorizable_induction.
21217         (vect_transform_loop): Consider phis for vectorization.
21218         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
21219         condition.
21220         (analyze_operations): Call vectorizable_induction when analyzing phis.
21221         Fix comment.
21222         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
21223         (vect_mark_relevant): Include phis in relevance analysis.
21224         (vect_mark_stmts_to_be_vectorize): Likewise.
21225         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
21226
21227 2007-04-16  Lawrence Crowl  <crowl@google.com>
21228
21229         * doc/invoke.texi (Debugging Options): Add documentation for the
21230         -femit-struct-debug options -femit-struct-debug-baseonly,
21231         -femit-struct-debug-reduced, and
21232         -femit-struct-debug-detailed[=...].
21233
21234         * c-opts.c (c_common_handle_option): Add
21235         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
21236         and OPT_femit_struct_debug_detailed_.
21237         * c.opt: Add specifications for
21238         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
21239         and -femit-struct-debug-detailed[=...].
21240         * opts.c (set_struct_debug_option): Parse the
21241         -femit-struct-debug-... options.
21242         * opts.c (matches_main_base, main_input_basename,
21243         main_input_baselength, base_of_path, matches_main_base): Add
21244         variables and functions to compare header base name to compilation
21245         unit base name.
21246         * opts.c (should_emit_struct_debug): Add to determine to emit a
21247         structure based on the option.
21248         (dump_struct_debug) Also disabled function to debug this
21249         function.
21250         * opts.c (handle_options): Save the base name of the
21251         compilation unit.
21252
21253         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
21254         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
21255         This hook indicates if a type is generic.  Set it by default
21256         to "never generic".
21257         * langhooks.h (struct lang_hooks_for_types): Add a new hook
21258         to determine if a struct type is generic or not.
21259         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
21260         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
21261         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
21262         with live C++ hook.
21263
21264         * flags.h (enum debug_info_usage): Add an enumeration to describe
21265         a program's use of a structure type.
21266         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
21267         to indicate the program's usage of the type.  Filter structs based
21268         on the -femit-struct-debug-... specification.
21269         (gen_type_die): Split into two routines, gen_type_die and
21270         gen_type_die_with_usage.  gen_type_die is now a wrapper
21271         that assumes direct usage.
21272         (gen_type_die_with_usage): Replace calls to gen_type_die
21273         with gen_type_die_with_usage adding the program usage of
21274         the referenced type.
21275         (dwarf2out_imported_module_or_decl): Suppress struct debug
21276         information using should_emit_struct_debug when appropriate.
21277
21278 2007-04-16  Ian Lance Taylor  <iant@google.com>
21279
21280         PR tree-optimization/31522
21281         * tree-vrp.c (vr_phi_edge_counts): New static variable.
21282         (vrp_initialize): Allocate vr_phi_edge_counts.
21283         (vrp_visit_phi_node): Don't push to infinity if we saw a new
21284         executable edge.  Drop test for all constants.
21285         (vrp_finalize): Free vrp_phi_edge_counts.
21286
21287         * doc/cpp.texi (Common Predefined Macros): Clarify description of
21288         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
21289
21290         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
21291         predecessors at head rather than tail.
21292
21293 2007-04-16  Matthias Klose  <doko@debian.org>
21294
21295         * config/alpha/linux.h (CPP_SPEC): Define.
21296         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
21297
21298 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
21299
21300         * function.h: Remove sequence_stack extern declaration.
21301
21302 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
21303
21304         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
21305         TARGET_FIDOA.
21306         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
21307         defined.
21308
21309 2007-04-16  Anatoly Sokolov <aesok@post.ru>
21310
21311         * config/avr/avr.c (avr_arch_types): Rearranging  array.
21312         (enum avr_arch): Add.
21313         (avr_mcu_types): Use avr_arch enumeration constants instead of
21314         numbers.
21315         * config/avr/avr.h (LINK_SPEC): Simplify.
21316
21317 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
21318
21319         * config/m68k/m68k.c (m68k_libcall_value,
21320         m68k_function_value): Use macros for register names more.
21321
21322         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
21323         instead.
21324         (M68K_REGNAME): Use A6_REG.
21325         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
21326
21327 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
21328
21329         PR middle-end/28071
21330         * sched-int.h (struct deps): Split field 'pending_lists_length' into
21331         'pending_read_list_length' and 'pending_write_list_length'.  Update
21332         comment.
21333         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
21334         to handle two length counters instead of one.  Update all uses.
21335         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
21336         two length counters instead of one.
21337         * sched-rgn.c (propagate_deps): Update to handle two length counters
21338         instead of one.
21339
21340 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
21341
21342         PR target/31582
21343         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
21344         copy of source, pass it to ix86_expand_vector_set and return
21345         it as target.
21346
21347 2007-04-16  David Ung  <davidu@mips.com>
21348             Joseph Myers  <joseph@codesourcery.com>
21349
21350         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
21351         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
21352         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
21353         Add 74K processor information.
21354         * config/mips/mips.md: Include 74k.md.
21355         (cpu): Add 74kc,74kf,74kx.
21356         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
21357         * config/mips/74k.md: New.
21358         * doc/invoke.texi (MIPS Options): Document 74K support.
21359
21360 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
21361
21362         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
21363         vectorizable_* functions.
21364         * tree-vect-transform.c (vectorizable_call): Add check for
21365         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
21366         (vectorizable_store): likewise.
21367         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
21368         Add comments.
21369         (vectorizable_operation, vectorizable_type_demotion): Likewise.
21370         (vectorizable_type_promotion, vectorizable_load): Likewise.
21371         (vectorizable_live_operation, vectorizable_condition): Likewise.
21372         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
21373         STMT_VINFO_LIVE_P.
21374         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
21375
21376 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
21377
21378         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
21379         register numbers more.
21380         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
21381         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
21382         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
21383         FUNCTION_VALUE_REGNO_P): Likewise.
21384         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
21385         STATIC_CHAIN_REGNUM): Likewise.
21386         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
21387         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
21388         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
21389         * config/m68k/m68k.md (FP_REG): New.
21390
21391 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
21392
21393         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
21394         alignment on fido.
21395
21396 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
21397
21398         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
21399         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
21400         comment typos.
21401
21402 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
21403
21404         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
21405         cold loops.
21406
21407 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21408
21409         PR c/31520
21410         * c-decl.c (finish_decl): Grab the type of the decl after the call
21411         to store_init_value.
21412
21413 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
21414
21415         * common.opt (fforward-propagate): Fix "Optimization" annotation.
21416
21417 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
21418
21419         PR c++/25874
21420         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
21421         dominators, post dominators and cleanup cfg before returning.
21422
21423 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
21424
21425         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
21426         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
21427
21428 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
21429
21430         * config.gcc: Recognize fido.
21431         * config/m68k/m68k-devices.def (fidoa): New.
21432         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
21433         __mfido__.
21434         (FL_FIDOA, TARGET_FIDOA): New.
21435         * config/m68k/m68k.opt (mfidoa): New.
21436
21437 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21438
21439         PR middle-end/31322
21440         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
21441         when a personality function is used.
21442
21443 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
21444
21445         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
21446
21447 2007-04-13  Mike Stump  <mrs@apple.com>
21448
21449         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
21450         we can...
21451         * config/darwin.opt (fapple-kext): Make C++ only.
21452         * config/darwin.c (darwin_override_options): Remove code to ensure
21453         -fapple-kext is given for C++ only.
21454
21455 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
21456
21457         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
21458         * config/mips/mips.c (override_options): Call
21459         SUBTARGET_OVERRIDE_OPTIONS, if defined.
21460
21461 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
21462
21463         * config/i386/i386.opt (msvr3-shlib): Removed.
21464
21465         * doc/invoke.texi: Remove -msvr3-shlib.
21466
21467 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
21468
21469         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
21470         with "popcnt" instruction.
21471
21472 2007-04-13  Richard Guenther  <rguenther@suse.de>
21473
21474         PR tree-optimization/21258
21475         * tree-vrp.c (compare_case_labels): New helper.
21476         (find_switch_asserts): New function.
21477         (find_assert_locations): Call it for SWITCH_EXPRs.
21478
21479 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
21480
21481         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
21482         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
21483         check is now implied in X87_FLOAT_MODE_P.
21484         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
21485         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
21486         (fix_trunc<mode>_i386_fisttp): Ditto.
21487         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
21488         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
21489         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
21490         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
21491         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
21492         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
21493         (unnamed_splitters): Ditto.
21494         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
21495         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
21496         FIRST_SSE_REG for local functions when SSE math is enabled or
21497         for functions with sseregparm attribute.
21498         (standard_80387_constant_p): Return -1 if mode is not
21499         X87_FLOAT_MODE_P.
21500         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
21501         (ix86_expand_compare): Ditto.
21502         (ix86_expand_carry_flag_compare): Ditto.
21503         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
21504         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
21505         DECIMAL_FLOAT_MODE_P.
21506         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
21507         of SCALAR_FLOAT_MODE_P.
21508         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
21509         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
21510         checks before FLOAT_MODE_P.
21511         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
21512         before FLOAT_MODE_P.
21513         [DIV]: Ditto.
21514         [NEG]: Ditto.
21515         [ABS]: Ditto.
21516         [SQRT]: Ditto.
21517         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
21518
21519 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
21520             Charles Wilson  <libtool@cwilson.fastmail.fm>
21521
21522         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
21523         (libgcc.mvars): Don't depend on them.
21524         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
21525         * exec-tool.in: New.
21526
21527 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
21528
21529         * doc/invoke.text (--help): Document --help=common.
21530
21531 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
21532
21533         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
21534
21535 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21536
21537         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
21538         * genemit.c (main): Emit #include "integrate.h".
21539         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
21540         (LOADGP_RTP): New mips_loadgp_style.
21541         * config/mips/mips.h: Include config/vxworks-dummy.h.
21542         (TARGET_RTP_PIC): New macro.
21543         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
21544         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
21545         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
21546         for TARGET_RTP_PIC.
21547         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
21548         -mvxworks-pic when using -mrtp and a PIC option.
21549         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
21550         for RTP PIC.
21551         (mips_symbolic_constant_p, mips_symbolic_address_p)
21552         (mips_symbol_insns): Handle SYMBOL_HALF.
21553         (override_options): Warn about -G and -mrtp being used together.
21554         Initialize mips_lo_relocs[SYMBOL_HALF].
21555         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
21556         (mips_emit_loadgp): Handle LOADGP_RTP.
21557         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
21558         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
21559         (tablejump): Handle function-relative case table entries if
21560         TARGET_RTP_PIC.
21561         * config/mips/predicates.md (symbol_ref_operand): New predicate.
21562
21563 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21564
21565         * config/mips/mips.md (load_call<mode>): Allow any general register.
21566         destination.
21567         (sibcall_value_internal, sibcall_value_multiple_internal)
21568         (call_value_internal, call_value_split, call_value_multiple_internal)
21569         (call_value_multiple_split): Remove constraints from operand 0.
21570
21571 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21572
21573         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
21574         rather than loadgp_noshared.
21575         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
21576         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
21577         gen_loadgp.
21578         * config/mips/mips.md (loadgp): Rename to...
21579         (loadgp_newabi): ...this.
21580         (loadgp_noshared): Rename to...
21581         (loadgp_absolute): ...this.
21582
21583 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21584
21585         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
21586         false for locally-binding symbols.
21587         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
21588
21589 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21590
21591         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
21592         (SYMBOL_GOT_PAGE_OFST): ...this.
21593         (SYMBOL_GOT_GLOBAL): Rename to...
21594         (SYMBOL_GOT_DISP): ...this.
21595         (SYMBOL_GOTOFF_GLOBAL): Rename to...
21596         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
21597         * config/mips/mips.c (mips_global_symbol_p): New function.
21598         (mips_symbol_binds_local_p): Likewise.
21599         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
21600         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
21601         mips_global_symbol_p and mips_symbol_binds_local_p.
21602         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
21603         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
21604         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
21605         SYMBOL_GOTOFF_DISP.
21606         (mips_ok_for_lazy_binding_p): New function.
21607         (mips_load_call_address, mips_expand_call): Use it.
21608         (mips_dangerous_for_la25_p): Likewise.
21609         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
21610         (*got_disp<mode>): Use got_disp_operand instead of
21611         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
21612         SYMBOL_GOTOFF_GLOBAL.
21613         (*got_page<mode>): Use got_page_ofst_operand instead of
21614         local_got_operand.
21615         * config/mips/predicates.md (const_call_insn_operand): Use
21616         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
21617         (global_got_operand): Rename to...
21618         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
21619         SYMBOL_GOT_GLOBAL.
21620         (local_got_operand): Rename to...
21621         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
21622         of SYMBOL_GOT_LOCAL.
21623
21624 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21625
21626         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
21627         TARGET_CALL_CLOBBERED_GP.
21628         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
21629         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
21630         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
21631         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
21632         of TARGET_ABICALLS && !TARGET_NEWABI.
21633         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
21634         * config/mips/mips.c (mips_load_call_address): Check
21635         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
21636         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
21637         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
21638         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
21639         TARGET_ABICALLS && TARGET_NEWABI.
21640         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
21641         TARGET_ABICALLS.
21642         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
21643         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
21644         TARGET_ABICALLS && TARGET_NEWABI.
21645         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
21646         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
21647         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
21648         whether indirect calls must use $25.
21649         (mips_extra_live_on_entry): Check TARGET_GOT instead of
21650         TARGET_ABICALLS.
21651         * config/mips/mips.md (jal_macro): Check flag_pic and
21652         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
21653         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
21654         instead of TARGET_ABICALLS.
21655         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
21656         TARGET_ABICALLS && TARGET_OLDABI.
21657         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
21658         (sibcall): In the comment above the define_insn, mention
21659         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
21660         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
21661         instead of TARGET_ABICALLS.
21662
21663 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
21664
21665         * doc/md.texi (Blackfin family constraints): Document PA and PB.
21666         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
21667         (MACFLAGS_MATCH_P): New macro.
21668         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
21669         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
21670         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
21671         the other MACFLAG constants.
21672         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
21673         (flag_machi): Tighten constraints.  Renumber some of the operands.
21674         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
21675         output template.
21676         (flag_machi_parts_acconly): New pattern.
21677         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
21678         used.
21679         (flag_macinit1hi): Tighten constraints.
21680         (flag_mul_macv2hi_parts_acconly): New pattern.
21681
21682         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
21683         Use a more efficient implementation.
21684         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
21685         inline sequences when not optimizing for size.
21686
21687         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
21688         movhi_high2low): Delete, merge functionality into...
21689         (packv2hi): ... this pattern.
21690
21691         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
21692         * config/bfin/bfin.opt (msim): New option.
21693         (mcpu=): New option.
21694         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
21695         (bfin_cpu_t): Typedef of enum bfin_cpu.
21696         (bfin_cpu_type): New declaration.
21697         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
21698         -msim and -mcpu= options.
21699         (LIB_SPEC): Likewise.
21700         * config/bfin/bfin.c (bfin_cpu_type): Define.
21701         (bfin_handle_option): Handle -mcpu= option.
21702         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
21703         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
21704         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
21705
21706 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21707
21708         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
21709         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
21710         (powerpc-wrs-vxworksae): Use ${tm_file}.
21711         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
21712         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
21713         * config/i386/vx-common.h: New file.
21714
21715 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21716
21717         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
21718         of crt0.o%s.
21719
21720 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
21721
21722         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
21723         ldxtr.
21724
21725 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
21726
21727         PR c++/31078
21728         PR c++/31103
21729         * c-common.c (c_build_qualified_type): Set canonical type
21730         appropriately.
21731
21732 2007-04-12  Richard Guenther  <rguenther@suse.de>
21733
21734         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
21735         lower bound and element size if lower bound is not zero
21736         or either of the ARRAY_REF operands is set.
21737
21738 2007-04-12  Richard Guenther  <rguenther@suse.de>
21739
21740         PR tree-optimization/24689
21741         PR tree-optimization/31307
21742         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
21743         indices by value.
21744         * gimplify.c (canonicalize_addr_expr): To be consistent with
21745         gimplify_compound_lval only set operands two and three of
21746         ARRAY_REFs if they are not gimple_min_invariant.  This makes
21747         it never at this place.
21748         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
21749
21750 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21751
21752         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
21753         null before emitting a .nsubspa directive.
21754
21755 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
21756
21757         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
21758         need_to_partition_p if there are no memory statements in the
21759         function.
21760
21761 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
21762
21763         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
21764         (gcd_of_steps_may_divide_p): New function.
21765         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
21766
21767 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
21768
21769         * reload.c (find_reloads_toplev, find_reloads_address,
21770         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
21771         not a pointer equality test, to decide if we need to call
21772         push_reg_equiv_alt_mem.
21773
21774 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
21775
21776         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
21777         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
21778         New.
21779         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
21780
21781 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
21782
21783         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
21784         vector to be positive.
21785
21786 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
21787
21788         PR 30735
21789         PR 31090
21790         * doc/invoke.texi: Document --params max-aliased-vops and
21791         avg-aliased-vops.
21792         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
21793         debug_memory_partitions): Move to tree-flow.h
21794         * params.h (AVG_ALIASED_VOPS): Define.
21795         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
21796         users.
21797         (mp_info_t): Likewise.
21798         (get_mem_sym_stats_for): New.
21799         (set_memory_partition): Move from tree-flow-inline.h.
21800         (mark_non_addressable): Only clear the set of symbols for the
21801         partition if it exists.
21802         (dump_memory_partitions): Move from tree-ssa-operands.c
21803         (debug_memory_partitions): Likewise.
21804         (need_to_partition_p): New.
21805         (dump_mem_ref_stats): New.
21806         (debug_mem_ref_stats): New.
21807         (dump_mem_sym_stats): New.
21808         (debug_mem_sym_stats): New.
21809         (update_mem_sym_stats_from_stmt): New.
21810         (compare_mp_info_entries): New.
21811         (mp_info_cmp): Call it.
21812         (sort_mp_info): Change argument to a list of mem_sym_stats_t
21813         objects.
21814         (get_mpt_for): Move from tree-ssa-operands.c.
21815         (find_partition_for): New.
21816         (create_partition_for): Remove.
21817         (estimate_vop_reduction): New.
21818         (update_reference_counts): New.
21819         (build_mp_info): New.
21820         (compute_memory_partitions): Refactor.
21821         Document new heuristic.
21822         Call build_mp_info, update_reference_counts,
21823         find_partition_for and estimate_vop_reduction.
21824         (compute_may_aliases): Populate virtual operands before
21825         calling debugging dumps.
21826         (delete_mem_sym_stats): New.
21827         (delete_mem_ref_stats): New.
21828         (init_mem_ref_stats): New.
21829         (init_alias_info): Call it.
21830         (maybe_create_global_var): Remove alias_info argument.
21831         Get number of call sites and number of pure/const call sites
21832         from gimple_mem_ref_stats().
21833         (dump_alias_info): Call dump_memory_partitions first.
21834         (dump_points_to_info_for): Show how many times a pointer has
21835         been dereferenced.
21836         * opts.c (decode_options): For -O2 set --param
21837         max-aliased-vops to 500.
21838         For -O3 set --param max-aliased-vops to 1000 and --param
21839         avg-aliased-vops to 3.
21840         * fortran/options.c (gfc_init_options): Remove assignment to
21841         MAX_ALIASED_VOPS.
21842         * tree-flow-inline.h (gimple_mem_ref_stats): New.
21843         * tree-dfa.c (dump_variable): Dump memory reference
21844         statistics.
21845         Dump NO_ALIAS* settings.
21846         (referenced_var_lookup): Tidy.
21847         (mem_sym_stats): New.
21848         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
21849         and ORIG are different SSA names for a memory partition.
21850         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
21851         * tree-flow.h (struct mem_sym_stats_d): Define.
21852         (mem_sym_stats_t): Define.
21853         (struct mem_ref_stats_d): Define.
21854         (struct gimple_df): Add field mem_ref_stats.
21855         (enum noalias_state): Define.
21856         (struct var_ann_d): Add bitfield noalias_state.
21857         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
21858         debug_mem_ref_stats, debug_memory_partitions,
21859         debug_mem_sym_stats): Declare.
21860         * tree-ssa-structalias.c (update_alias_info): Update call
21861         sites, pure/const call sites and asm sites in structure
21862         returned by gimple_mem_ref_stats.
21863         Remove local variable IS_POTENTIAL_DEREF.
21864         Increase NUM_DEREFS if the memory expression is a potential
21865         dereference.
21866         Call update_mem_sym_stats_from_stmt.
21867         If the memory references memory, call
21868         update_mem_sym_stats_from_stmt for all the direct memory
21869         symbol references found.
21870         (intra_create_variable_infos): Set noalias_state field for
21871         pointer arguments according to the value of
21872         flag_argument_noalias.
21873         * tree-ssa-structalias.h (struct alias_info): Remove fields
21874         num_calls_found and num_pure_const_calls_found.
21875         (update_mem_sym_stats_from_stmt): Declare.
21876         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
21877         Set default value to 100.
21878         (PARAM_AVG_ALIASED_VOPS): Define.
21879
21880 2007-04-11  Richard Guenther  <rguenther@suse.de>
21881
21882         PR middle-end/31530
21883         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
21884         a * -b + c as c - a * b if we honor sign dependent rounding.
21885
21886 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
21887
21888         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
21889         bfin_expand_strmov.
21890         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
21891         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
21892         variables.
21893         (initialize_trampoline): Don't use old-style function definition.
21894         (bfin_secondary_reload): Mark IN_P argument as unused.
21895
21896 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
21897
21898         PR tree-optimization/31343
21899         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
21900         (build_polynomial_chrec): Return a scalar when the evolution is zero.
21901         * testsuite/gcc.dg/vect/pr31343.c: New.
21902
21903 2007-04-10  Eric Christopher  <echristo@apple.com>
21904
21905         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
21906         * config/i386/i386.md (*cmpfp0): Use.
21907         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
21908         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
21909         (fix_trunc<mode>_i386_fisttp): Ditto.
21910         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
21911         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
21912         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
21913         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
21914         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
21915         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
21916         (unnamed_splitters): Ditto.
21917         * config/i386/i386.c (output_fix_trunc): Assert that
21918         we're not being passed a TFmode operand.
21919
21920 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
21921
21922         PR tree-optimization/31526
21923         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
21924         n_basic_blocks to find newly added blocks.
21925
21926 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
21927
21928         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
21929         alternative.
21930         (fix_trunc<mode>si_sse): Ditto.
21931         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
21932         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
21933         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
21934         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
21935         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
21936         expander using SSEMODEF mode macro.
21937         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
21938         expander using SSEMODEF mode macro.
21939         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
21940         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
21941         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
21942         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
21943         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
21944         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
21945         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
21946         Macroize insn using X87MODEF mode macro.
21947
21948 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
21949
21950         * config/i386/sse.md (sse2_pinsrw): Removed.
21951         (sse2_pextrw): Renamed to ...
21952         (*sse2_pextrw): This.
21953
21954 2007-04-09  Jan Hubicka  <jh@suse.cz>
21955
21956         PR target/27869
21957         * config/i386/sse.md
21958         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
21959         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
21960         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
21961         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
21962
21963 2007-04-09  Jan Hubicka  <jh@suse.cz>
21964
21965         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
21966         multiple fields of union.
21967
21968 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
21969
21970         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
21971         (create_preheaders): Check that loops are available.
21972         (fix_loop_structure): Clean up, improve comments.
21973         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
21974         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
21975         state flags.
21976         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
21977         * predict.c (tree_estimate_probability): Do not call
21978         calculate_dominance_info.  Call create_preheaders.
21979         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
21980         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
21981         flags.
21982         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
21983         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
21984         * tree-cfg.c (tree_split_edge): Make an assert more precise.
21985         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
21986         arguments.
21987
21988 2007-04-08  Jan Hubicka  <jh@suse.cz>
21989
21990         * tree.h (maybe_fold_offset_to_component_ref): Declare.
21991         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
21992         * fold-const.c (fold_unary): Use it.
21993
21994 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21995
21996         * varasm.c (assemble_variable): Remove call to
21997         lang_hooks.decls.prepare_assemble_variable.
21998         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
21999         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
22000         * langhooks.h (lang_hooks_for_decls): Remove
22001         prepare_assemble_variable.
22002
22003 2007-04-08  Mike Stump  <mrs@apple.com>
22004
22005         * config/i386/i386.c: Use inc/dec on Core2.
22006
22007 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
22008
22009         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
22010         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
22011         lhd_tree_inlining_end_inlining): Remove.
22012         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
22013         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
22014         end_inlining hooks.
22015         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
22016         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
22017         lhd_tree_inlining_end_inlining): Remove prototypes.
22018         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
22019         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
22020         LANG_HOOKS_TREE_INLINING_START_INLINING,
22021         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
22022
22023         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
22024         not set it.
22025
22026 2007-04-08  Anatoly Sokolov <aesok@post.ru>
22027
22028         PR target/29932
22029         * config/avr/predicates.md (io_address_operand): Delete predicate.
22030         (low_io_address_operand): Don't use 'mode' argument.
22031         (higth_io_address_operand): Rename ...
22032         (high_io_address_operand): ... to this. Don't use 'mode' argument.
22033         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
22034         for above change.
22035
22036 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
22037
22038         Revert change removing staticp.
22039
22040 2007-04-07  Anatoly Sokolov <aesok@post.ru>
22041
22042         PR target/30289
22043         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
22044         earlyclobber.
22045
22046 2007-04-07  Bruce Korb  <bkorb@gnu.org>
22047
22048         * c.opt: Add -Wformat-contains-nul.
22049         * c-format.c (set_Wformat): Set warn_format_contains_nul to the
22050           -Wformat setting.
22051         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
22052         the NUL byte warning.
22053
22054 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
22055
22056         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
22057
22058 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
22059
22060         * tree.c (staticp): No longer use staticp langhook.
22061         * langhooks.c (lhd_staticp): Removed.
22062         * langhooks.h (struct lang_hooks): Remove staticp.
22063         * c-common.c (c_staticp): Remove.
22064         * c-common.h (c_staticp): Ditto.
22065         * langhooks-defs.h (lhd_staticp): Ditto.
22066         (LHD_HOOKS_STATICP): Ditto
22067         * tree.h (gcc_assert_lowered): New macro.
22068
22069 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
22070
22071         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
22072         argument "reliable".
22073         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
22074         Add argument "reliable".  Propagate it through calls.
22075         (infer_loop_bounds_from_undefined): Derive number of iterations
22076         estimates from references in blocks that do not dominate loop latch.
22077         (gcov_type_to_double_int): New function.
22078         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
22079         and expected_loop_iterations_unbounded.
22080         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
22081         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
22082         * tree-data-ref.c (estimated_loop_iterations): Export.
22083         (get_references_in_stmt): Fix -- do not return addresses of local
22084         objects.
22085         * cfgloop.h (expected_loop_iterations_unbounded,
22086         estimated_loop_iterations): Declare.
22087
22088 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
22089
22090         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
22091
22092 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
22093
22094         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
22095         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
22096         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
22097         Use output_387_reg_move().
22098         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
22099         expander using X87MODEF12 mode macro.
22100         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
22101         choosing register preferences.  Use output_387_reg_move().
22102         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
22103         instead of "x".  Use output_387_reg_move().
22104         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
22105         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
22106         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
22107         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
22108         Use output_387_reg_move().
22109         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
22110         mode macro.
22111         (*truncxf?f_i387 splitter): Ditto.
22112
22113 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
22114
22115         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
22116         LANG_HOOKS_SAFE_FROM_P.
22117         * expr.c (safe_from_p): Remove langhook call.
22118         * langhooks.h (lang_hooks): Remove safe_from_p.
22119         (lhd_safe_from_p): Remove prototype.
22120         * langhooks.c (lhd_safe_from_p): Remove.
22121
22122 2007-04-06  Jan Hubicka  <jh@suse.cz>
22123
22124         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
22125         functions.
22126
22127 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
22128
22129         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
22130         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
22131         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
22132         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
22133         alternative.
22134         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
22135         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
22136
22137 2007-04-05  Richard Henderson  <rth@redhat.com>
22138
22139         * config/alpha/alpha.c (print_operand) [+]: Remove.
22140         (alpha_end_function): Print nop if call at end of function.
22141         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
22142         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
22143         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
22144         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
22145         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
22146         the call pattern. Update peepholes to match.
22147
22148 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
22149
22150         * doc/extend.texi (Other Builtins): Add decimal float variants
22151         of signbit.
22152         * builtins.def: Ditto.
22153         * builtins.c (expand_builtin): Ditto.
22154
22155 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
22156             H.J. Lu  <hongjiu.lu@intel.com>
22157
22158         PR target/31478
22159         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
22160         of V8HImode when calling ix86_binary_operator_ok.
22161         (sse2_pmaddwd): Call ix86_binary_operator_ok.
22162         (sdot_prodv8hi): Operands 1 and 2 must be register.
22163
22164 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
22165
22166         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
22167         initialize align to silence bogus warning.
22168
22169 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
22170
22171         PR middle-end/22156
22172         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
22173         all_no_warning.
22174         (struct sra_walk_fns): Remove use_all parameter from use.
22175         (sra_hash_tree): Handle BIT_FIELD_REFs.
22176         (sra_elt_hash): Don't hash bitfld blocks.
22177         (sra_elt_eq): Skip them in parent compares as well.  Handle
22178         BIT_FIELD_REFs.
22179         (sra_walk_expr): Don't maintain or pass down use_all_p.
22180         (scan_use): Remove use_all parameter.
22181         (scalarize_use): Likewise.  Re-expand assignment to
22182         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
22183         output, and re-scalarize after output.  Don't mark anything
22184         for no warning.
22185         (scalarize_ldst): Adjust.
22186         (scalarize_walk_gimple_modify_statement): Likewise.
22187         (build_element_name_1): Handle BIT_FIELD_REFs.
22188         (instantiate_element): Don't warn for any element whose parent
22189         is used as a whole.
22190         (instantiate_missing_elements_1): Return the sra_elt.
22191         (canon_type_for_field): New.
22192         (try_instantiate_multiple_fields): New.
22193         (instantiate_missing_elemnts): Use them.
22194         (mark_no_warning): Removed.
22195         (generate_one_element_ref): Handle BIT_FIELD_REFs.
22196         (REPLDUP, sra_build_elt_assignment): New.
22197         (generate_copy_inout): Use them.
22198         (generate_element_copy): Likewise.  Handle bitfld differences.
22199         (generate_element_zero): Don't recurse for blocks.  Use
22200         sra_build_elt_assignment.
22201         (generate_one_element_int): Take elt instead of var.  Use
22202         sra_build_elt_assignment.
22203         (generate_element_init_1): Adjust.
22204         (scalarize_use, scalarize_copy): Use REPLDUP.
22205         (scalarize_ldst): Move assert before dereference.
22206         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
22207
22208 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
22209
22210         * regmove.c: Fix unused variable warnings due to previous commit.
22211
22212 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
22213
22214         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
22215         (regmove_bb_head): Remove.
22216         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
22217         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
22218         problems with fixup_match_1.
22219         Don't initialize/free regmove_bb_head.
22220
22221         (reg_is_remote_constant_p): If an insn is in the same basic block
22222         but not before INSN, consider it remote, too.
22223
22224 2007-04-05  Anatoly Sokolov <aesok@post.ru>
22225
22226         PR target/25448
22227         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
22228         DECL_ASSEMBLER_NAME, not the DECL_NAME.
22229
22230 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
22231
22232         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
22233         (CONDITIONAL_REGISTER_USAGE): Likewise.
22234
22235 2007-04-04  Richard Henderson  <rth@redhat.com>
22236
22237         * config/alpha/lib1funcs.asm: Remove unused file.
22238
22239 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
22240
22241         PR other/31356
22242         * opts.c (print_specific_help): Fix --help=<language>
22243         header line.
22244         (common_handle_option): Support --help=common.
22245
22246 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
22247
22248         PR other/31353
22249         * gcc.c (main): Do not run the linker if
22250         print_subprocess_help indicates that it shouldn't be
22251         run.
22252
22253 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
22254
22255         PR doc/31355
22256         * doc/invoke.texi (--help=): Document <languages> value, fix
22257         formatting in tables of values.
22258
22259 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
22260
22261         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
22262         dllimport attribute of virtual methods.
22263
22264 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
22265
22266         * config/score/crti.asm: Change _bss_start to __bss_start.
22267         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
22268         (OUTGOING_REG_PARM_STACK_SPACE) update.
22269         * config/score/score.opt: add options to make backend support
22270         score5, score5u, score7 and score7d.
22271         * config/score/score.md: Likewise.
22272         * config/score/misc.md: Likewise.
22273         * config/score/mac.md: Likewise.
22274         * doc/invoke.texi: Likewise.
22275         * doc/md.texi: update constraints define.
22276
22277 2007-04-03  Richard Henderson  <rth@redhat.com>
22278
22279         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
22280         an appropriate type, use the mode instead.
22281
22282 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
22283
22284         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
22285         Set the default --with-arch setting to mips2.
22286         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
22287         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
22288         (MULTILIB_OSDIRNAMES): Delete.
22289         (MULTILIB_DIRNAMES): Define.
22290         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
22291         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
22292         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
22293         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
22294         VXWORKS_OS_CPP_BUILTINS.
22295         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
22296         (MIPS_DEBUGGING_INFO): Undefine.
22297         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
22298
22299 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
22300
22301         PR middle-end/30704
22302         * fold-const.c (native_encode_real): Encode real.c provided longs
22303         as a series of 32-bit native integers.
22304         (native_interpret_real): Interpret buffer as a series of 32-bit
22305         native integers.
22306
22307 2007-04-03  Richard Guenther  <rguenther@suse.de>
22308
22309         * genpreds.c (write_insn_constraint_len): Write function
22310         optimized for CONSTRAINT_LEN implementation.
22311         (write_tm_preds_h): Output insn_constraint_len inline and
22312         use it for CONSTRAINT_LEN.
22313         (write_insn_preds_c): Don't output insn_constraint_len.
22314         * doc/md.texi (define_register_constraint): Document multi-letter
22315         constraints shall have the same length if they start with the same
22316         letter.
22317
22318 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
22319
22320         PR target/31175
22321         * config/i386/i386.md (isinf<mode>2): Expand only when
22322         TARGET_C99_FUNCTIONS is set.
22323
22324 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
22325
22326         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
22327         (x86_64-*-linux*): Ditto.
22328         * config/i386/i386.opt (mpc): New option.
22329         * config/i386/i386.c (overrride_options): Handle
22330         ix87_precision_string.
22331         * config/i386/crtprec.c: New file.
22332         * config/i386/t-crtpc: Ditto.
22333         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
22334         and -mpc80 options.
22335         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
22336         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
22337         crtprec32.o, crtprec64.o and crtprec80.o.
22338
22339         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
22340         and -mpc80 options.
22341         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
22342
22343 2007-04-02  Eric Christopher  <echristo@apple.com>
22344
22345         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
22346         limitations on darwin.
22347
22348 2007-04-02  Anatoly Sokolov <aesok@post.ru>
22349
22350         PR target/31137
22351         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
22352
22353 2007-04-02  Dave Korn  <dave.korn@artimi.com>
22354
22355         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
22356
22357 2007-04-02  Dave Korn  <dave.korn@artimi.com>
22358
22359         * libgcc2.h (exception_descriptor): Don't forward-declare.
22360         (__get_eh_table_language, __get_eh_table_version): Delete
22361         prototypes of long-dead functions.
22362
22363 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
22364
22365         * ebitmap.h: New file
22366         * ebitmap.c: New file
22367         * Makefile.in (ebitmap.o): New target.
22368
22369 2007-04-01  Jan Hubicka  <jh@suse.cz>
22370
22371         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
22372         before very first instruction.
22373
22374 2007-04-01  Jan Hubicka  <jh@suse.cz>
22375
22376         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
22377         waring on 64bit hosts.
22378         * bitmap.h: Fix typo in bitmap_head_def.
22379
22380 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
22381
22382         PR rtl-optimization/31391
22383         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
22384         into a DELETED_LABEL note, and the label is in an empty basic
22385         block, update BB_END as well as BB_HEAD.
22386
22387 2007-04-01  Richard Henderson  <rth@redhat.com>
22388
22389         PR tree-optimization/31169
22390         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
22391         to varying if the range is outside [0,  prec-1].
22392
22393 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
22394
22395         PR target/31388
22396         * config/mips/mips.md (load_const_gp): New insn.
22397         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
22398         the MIPS16 GP pseudo register if no_new_pseudos.
22399         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
22400
22401 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22402
22403         PR target/31364
22404         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
22405         secureplt.
22406         (call_value): Likewise.
22407
22408 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
22409             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22410
22411         PR 14737
22412         * doc/invoke.texi: (optimization options): Reword description
22413         of -ffast-math. Document its primary purpose.
22414
22415 2007-03-31  Richard Guenther  <rguenther@suse.de>
22416
22417         * omp-low.c (splay-tree.h): Include.
22418         (lookup_decl): Replace splay-tree usage by pointer-map.
22419         (maybe_lookup_decl): Likewise.
22420         (new_omp_context): Likewise.
22421         (delete_omp_context): Likewise.
22422         * gimplify.c (splay-tree.h): Include.
22423         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
22424         pointer-map.
22425         (remap_ssa_name): Likewise.
22426         (remap_decl): Likewise.
22427         (remap_type_1): Likewise.
22428         (remap_type): Likewise.
22429         (copy_body_r): Likewise.
22430         (expand_call_inline): Likewise.
22431         (clone_body): Likewise.
22432         (copy_tree_r): Likewise.
22433         (remap_save_expr): Likewise.
22434         (unsave_r): Likewise.
22435         (unsave_expr_now): Likewise.
22436         (tree_function_versioning): Likewise.
22437         (build_duplicate_type): Likewise.
22438         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
22439         (struct copy_body_data): Replace splay-tree by pointer-map.
22440         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
22441         not $(SPLAY_TREE_H).
22442         (gimplify.o): Depend on $(SPLAY_TREE_H).
22443         (omp-low.p): Likewise.
22444
22445 2007-03-31  Anatoly Sokolov <aesok@post.ru>
22446
22447         * config/avr/predicates.md (even_register_operand,
22448         odd_register_operand): New predicates.
22449         * config/avr/avr.md (movw peephole2): New.
22450         (movw_r peephole2): New.
22451
22452 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
22453
22454         * tree.h (get_signed_or_unsigned_type): New.
22455         * fold-const.c (operand_equal_for_comparison_p): Use
22456         get_signed_or_unsigned_type instead of
22457         lang_hooks.types.signed_or_unsigned_type.
22458         * expr.c (store_expr): Ditto.
22459         * langhooks.c (get_signed_or_unsigned_type): New.
22460         (lhd_signed_or_unsigned_type): New.
22461         * langhooks.h (lhd_signed_or_unsigned_type): New.
22462         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
22463
22464 2007-03-30  Richard Henderson  <rth@redhat.com>
22465
22466         * tree-ssa-loop-ivopts.c: Include target.h.
22467         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
22468         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
22469         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
22470         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
22471
22472 2007-03-30  Richard Henderson  <rth@redhat.com>
22473             Kai Tietz  <kai.tietz@onevision.com>
22474
22475         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
22476         default for 64-bit.
22477         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
22478         (TARGET_64BIT_MS_ABI): New.
22479         (DBX_REGISTER_NUMBER): Handle 64-bit.
22480         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
22481         (LONG_TYPE_SIZE): Force to 32.
22482         (REG_PARM_STACK_SPACE): New.
22483         (OUTGOING_REG_PARM_STACK_SPACE): New.
22484         (REGPARM_MAX, SSE_REGPARM_MAX): New.
22485         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
22486         (STACK_BOUNDARY): Use 128 for 64-bit.
22487         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
22488         Add 64-bit implementation.
22489         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
22490         argument unused.
22491         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
22492         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
22493         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
22494         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
22495         (ix86_handle_cconv_attribute): Don't warn when ignoring if
22496         TARGET_64BIT_MS_ABI.
22497         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
22498         (ix86_pass_by_reference): Likewise.
22499         (ix86_function_value_regno_p): Likewise.
22500         (ix86_build_builtin_va_list): Likewise.
22501         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
22502         (function_arg_advance_ms_64): New.
22503         (function_arg_advance): Call it.
22504         (function_arg_ms_64): New.
22505         (function_arg): Call it.
22506         (function_value_ms_64): New.
22507         (ix86_function_value_1): Call it.
22508         (return_in_memory_ms_64): New.
22509         (ix86_return_in_memory): Call it.
22510         (setup_incoming_varargs_ms_64): New.
22511         (ix86_setup_incoming_varargs): Call it.
22512         (ix86_expand_prologue): Handle 64-bit stack probing.
22513         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
22514         (output_pic_addr_const): Likewise.
22515         (x86_this_parameter): Likewise.
22516         (x86_output_mi_thunk): Likewise.
22517         (x86_function_profiler): Likewise.
22518         (TARGET_STRICT_ARGUMENT_NAMING): New.
22519         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
22520         (TARGET_64BIT_MS_ABI): New.
22521         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
22522         * config/i386/i386.md (allocate_stack_worker): Remove.
22523         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
22524         describe the clobber of eax without a match_scratch.
22525         (allocate_stack_worker_postreload): Remove.
22526         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
22527         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
22528         (allocate_stack_worker_rex64_postreload): Remove.
22529         (allocate_stack): Handle 64-bit.
22530         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
22531         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
22532         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
22533         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
22534         (STANDARD_STARTFILE_PREFIX_1): Likewise.
22535         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
22536         * config.build (x86_64-*-mingw*): New host.
22537         * config.host (x86_64-*-mingw*): New host.
22538         * config.gcc (x86_64-*-mingw*): New target.
22539         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
22540
22541 2007-03-30  Richard Henderson  <rth@redhat.com>
22542             Kai Tietz  <kai.tietz@onevision.com>
22543
22544         * c-pragma.c (struct def_pragma_macro_value): New.
22545         (struct def_pragma_macro): New.
22546         (pushed_macro_table): New.
22547         (dpm_hash, dpm_eq): New.
22548         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
22549         (init_pragma): Install them.
22550         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
22551
22552 2007-03-30  Anatoly Sokolov <aesok@post.ru>
22553
22554         * config/avr/avr.c (avr_override_options): Clear
22555         'flag_delete_null_pointer_checks'.
22556
22557 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
22558
22559         PR c++/26099
22560         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
22561         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
22562         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
22563         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
22564         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
22565         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
22566         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
22567         C++ extensions.
22568         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
22569
22570 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
22571
22572         * regmove.c: Move all of pass_stack_adjustments from here...
22573         * combine-stack-adj.c: ...to this new file.
22574         * Makefile.in: Add rules for combine-stack-adj.o.
22575
22576 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
22577
22578         PR tree-optimization/31383
22579         * tree-data-ref.c (affine_function_equal_p): Do not require the
22580         vectors to have the same length.
22581
22582 2007-03-30  Jan Hubicka  <jh@suse.cz>
22583
22584         PR middle-end/30700
22585         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
22586         availablility; add more sanity checking; ask varpool only about
22587         VAR_DECL.
22588
22589 2007-03-29  Richard Henderson  <rth@redhat.com>
22590
22591         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
22592         to decide, but __SIZEOF_LONG_LONG__.
22593
22594 2007-03-29  Richard Henderson  <rth@redhat.com>
22595
22596         * emutls.c (struct __emutls_array): New.
22597         (emutls_destroy): Use it instead of casting element 0 from void*.
22598         (__emutls_get_address): Likewise.
22599
22600 2007-03-29  Richard Henderson  <rth@redhat.com>
22601
22602         * varasm.c (initializer_constant_valid_p): Don't deny
22603         DECL_DLLIMPORT_P on functions.
22604
22605         * config/i386/cygming.h: Remove function declarations.
22606         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
22607         (ASM_OUTPUT_LABELREF): Remove.
22608         (COMMON_ASM_OP): Remove.
22609         (ASM_OUTPUT_COMMON): Remove.
22610         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
22611         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
22612         (ASM_DECLARE_FUNCTION_NAME): Likewise.
22613         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
22614         Rename from TARGET_ENCODE_SECTION_INFO.
22615         * config/i386/netware.h: Likewise.
22616         * config/i386/i386-protos.h: Update.
22617         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
22618         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
22619         (legitimate_constant_p): Reject dllimports.
22620         (dllimport_map, get_dllimport_decl): New.
22621         (legitimize_dllimport_symbol): New.
22622         (legitimize_address, ix86_expand_move): Use it.
22623         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
22624         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
22625         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
22626         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
22627         * config/i386/predicates.md (constant_call_address_operand): Only
22628         accept symbols; reject dllimport_p symbols.
22629         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
22630         i386_pe_maybe_record_exported_symbol.
22631         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
22632         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
22633         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
22634         trust the setting of DECL_DLLIMPORT_P.
22635         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
22636         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
22637         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
22638         tidy the argument scanning loop.
22639         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
22640         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
22641         (i386_pe_strip_name_encoding): Remove.
22642         (i386_pe_binds_local_p): New.
22643         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
22644         (i386_pe_output_labelref): Remove.
22645         (i386_pe_asm_output_aligned_decl_common): New.
22646         (i386_pe_maybe_record_exported_symbol): Rename from
22647         i386_pe_record_exported_symbol; check for dllexported symbols.
22648
22649 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
22650
22651         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
22652         add comment explaining why vsnprintf cannot be used.
22653
22654 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
22655
22656         PR tree-optimization/30666
22657         * tree.c (build_complex_type): When creating type names for DWARF2
22658         debug info, create TYPE_DECLs for TYPE_NAME instead of
22659         IDENTIFIER_NODEs.
22660         (build_common_tree_nodes_2): Use build_complex_type when building
22661         predefined complex types, to preserve canonical types.
22662
22663 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
22664
22665         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
22666         (noce_get_alt_condition): Look at it to determine whether to
22667         reverse the condition or not.
22668         (noce_get_condition): Substitute the truth for lies.
22669         (noce_find_if_block): Set the then_else_reversed field.
22670
22671 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
22672
22673         * config/fr30/fr30.md (movdi): Do not accept immediates as the
22674         destination of this insn.
22675         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
22676         than calling gen_rtx_SET directly.  Use r0 to hold the value of
22677         'address + 4' rather than a stack based temporary which can be
22678         mis-optimized away.
22679
22680 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
22681
22682         * config/s390/s390.c (s390_secondary_input_reload_class,
22683         s390_secondary_output_reload_class): Functions removed.
22684         (s390_secondary_reload): New function.
22685         (TARGET_SECONDARY_RELOAD): Target macro defined.
22686         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
22687         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
22688         * config/s390/s390.md ("reload_outti", "reload_outdi",
22689         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
22690         "reload_out<mode>"): Expanders removed.
22691         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
22692         "reload<mode>_nonoffmem_out"): Expanders added.
22693
22694 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
22695
22696         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
22697         action if SRC->DEST replacement failed anyway.
22698
22699 2007-03-28  Mike Stump  <mrs@apple.com>
22700
22701         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
22702         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
22703         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
22704
22705 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
22706
22707         * config.gcc: Accept barcelona as a variant of amdfam10.
22708         * config/i386/i386.c (override_options): Likewise.
22709         * doc/invoke.texi: Likewise.
22710
22711 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
22712
22713         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
22714         offsets for BIT_FIELD_REF and COMPONENT_REF.
22715
22716 2007-03-28  Richard Guenther  <rguenther@suse.de>
22717
22718         * tree.c (is_global_var): Move ...
22719         * tree-flow-inline.h (is_global_var): ... here.
22720         * tree.h (is_global_var): Remove declaration.
22721
22722 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
22723
22724         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
22725         option.
22726         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
22727         * config/i386/i386.c (ix86_tune_features): Initialize new
22728         tuning option.
22729         * config/i386/predicates.md (promotable_binary_operator): Use
22730         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
22731
22732 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
22733
22734         PR target/31380
22735         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
22736
22737 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
22738
22739         * config/fr30/fr30.md (movsi_internal): Change destination
22740         constraint from m to V and add m to the end.
22741
22742 2007-03-28  Christian Bruel  <christian.bruel@st.com>
22743
22744         * config/sh/sh.md (movsi_i): Fix type attribute.
22745
22746 2007-03-28  Christian Bruel  <christian.bruel@st.com>
22747
22748         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
22749         (movsf_ie): Likewise.
22750
22751 2007-03-28  Christian Bruel  <christian.bruel@st.com>
22752
22753         * config.gcc: Add sh4-300 to multilib.
22754         * config/sh/t-mlib-sh4-300: New file.
22755
22756 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
22757
22758         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
22759         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
22760         fix_trunc<mode>di2.
22761         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
22762         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
22763         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
22764         "fixuns_trunctddi2"): Whitespace fix.
22765
22766 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
22767
22768         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
22769         the definition of struct sh_args.
22770         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
22771         CALL_COOKIE_INT_REG_GET): Likewise.
22772
22773 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
22774
22775         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
22776         transformations are applied successfully.
22777
22778 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
22779
22780         * tree.c (tree_contains_struct): Permit 512 tree codes.
22781         * tree.h (tree_contains_struct): Ditto.
22782         (MAX_TREE_CODES): Ditto.
22783         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
22784         SPARE member to store remaining padding bits.
22785
22786 2007-03-27  Anatoly Sokolov <aesok@post.ru>
22787
22788         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
22789         architecture.
22790
22791 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
22792
22793         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
22794         * configure: Regenerate.
22795
22796         * configure: Regenerate using the correct version of autoconf.
22797
22798 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
22799
22800         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
22801         pointer regs.
22802         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
22803         regs to "__SP_L__" and "__SP_H__".
22804
22805 2007-03-27  Richard Guenther  <rguenther@suse.de>
22806
22807         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
22808         computations with it with a HOST_WIDE_INT variable.
22809
22810 2007-03-26  Mike Stump  <mrs@apple.com>
22811
22812         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
22813         objective-c-header, objective-c++-header and objc++-cpp-output
22814         support.
22815         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
22816
22817 2007-03-26  Richard Henderson  <rth@redhat.com>
22818
22819         PR target/31361
22820         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
22821         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
22822         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
22823         IX86_BUILTIN_PSRLQ128): New.
22824         (ix86_init_mmx_sse_builtins): Add them.
22825         (ix86_expand_builtin): Expand them.
22826         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
22827         operand 2 be TImode.
22828         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
22829         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
22830         _mm_srli_epi64): Mark __B const.
22831         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
22832         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
22833         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
22834         new two-vector shift builtins.
22835
22836 2007-03-26  Ian Lance Taylor  <iant@google.com>
22837
22838         PR tree-optimization/31345
22839         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
22840         [+INF, +INF(OVF)] into VARYING.
22841
22842 2007-03-26  Zack Weinberg  <zackw@panix.com>
22843
22844         * gengtype-parse.c: New file.
22845         * gengtype-yacc.y: Delete.
22846         * gengtype-lex.l: Don't include gengtype-yacc.h.
22847         Define YY_DECL and yyterminate appropriately for recursive
22848         descent parser.  yylval is now a string out-parameter to yylex.
22849         (HWS, EOID): New shorthand.
22850         (IWORD): Add a couple more types.
22851         (yylex): Add a setup stanza.  Remove the complex rules for
22852         detecting GTY'ed types and typedefs; replace with simple
22853         keyword detectors.  Adjust everything for the changed
22854         definition of yylval.  Ignore all pp-directives, not just #define.
22855         (yyerror): Delete.
22856         (parse_file): Rename yybegin; do not call yyparse.
22857         (yyend): New.
22858         * gengtype.c (xasprintf): Export again.
22859         (this_file): New.  Use everywhere __FILE__ was being used.
22860         (get_lang_bitmap): Special case types defined in gengtype.c.
22861         (do_typedef, new_structure): Suppress definition of certain types.
22862         (new_structure): Improve diagnostics of duplicate definitions.
22863         Make sure location_s is associated with input.h.
22864         (nreverse_pairs, define_location_structures): New functions.
22865         (main): Improve tagging of kludge types.  Remove old kludges
22866         for input.h types; use define_location_structures.
22867         * gengtype.h: Update prototypes.  Define token codes here.
22868         * Makefile.in: Remove all references to gengtype-yacc.
22869         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
22870         and gengtype.
22871         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
22872         add GTY((skip)) to the field that's only conditionally there.
22873         * doc/install.texi: Document that Bison is no longer required
22874         unless building treelang.
22875
22876         * gengtype.c: Don't include gtyp-gen.h.
22877         (srcdir): Declare here.
22878         (base_files, lang_dir_names): Allocate dynamically.
22879         (gt_files, num_gt_files, num_lang_dirs): New globals.
22880         (measure_input_list, read_input_line, read_input_list)
22881         (set_lang_bitmap): New functions.
22882         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
22883         simplify, relying on read_input_list to set up the bitmaps.
22884         (main): Arguments are no longer unused.  Check for correct number
22885         of command line arguments, set srcdir and srcdir_len, then call
22886         read_input_list, before doing anything else.  No need to worry
22887         about duplicates in main loop.
22888         * configure.ac: Simplify the calculation of all_gtfiles.
22889         Put language tags in there.  Don't set or substitute
22890         all_gtfiles_files_langs or all_gtfiles_files_frags.
22891         * Makefile.in: Revamp the way gengtype is invoked, now that it
22892         takes a file on its command line with a much simpler format.
22893         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
22894         (GTFILES): Remove duplicates and C source files.
22895         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
22896         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
22897         * configure: Regenerate.
22898
22899         * gengtype.h: Remove all type definitions to gengtype.c; leave
22900         only definitions of options_p, type_p, and pair_p as opaque
22901         pointers.  Update prototypes.
22902         * gengtype.c: Many type definitions moved here from gengtype.h.
22903         Consolidate type definitions at the top of the file.
22904         (xvasprintf): Delete.
22905         (xasprintf): Make static.
22906         (create_nested_pointer_option): Add 'next' parameter.
22907         (create_field_all, create_field_at): New functions.
22908         (create_field): Now a thin wrapper around create_field_all.
22909         (create_optional_field): Rename create_optional_field_ and add
22910         line argument.  Original name is now a macro which supplies
22911         __LINE__.
22912         (oprintf): Use vsnprintf directly.
22913         (close_output_files): Use fatal rather than perror/exit.
22914         (note_def_vec, note_def_vec_alloc): Use create_field_at.
22915         (main): Set progname.  Don't use exit.
22916         * gengtype-yacc.y (struct_fields): Use create_field_at.
22917         (option, optionseqopt): Delete.
22918         (optionseq): Consolidate productions from option here so we
22919         can use the first argument to create_option.
22920
22921         * gengtype-lex.l: Distinguish unions from structures in the
22922         token type.  Don't call find_structure; return the tag as a string.
22923         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
22924         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
22925         string.  Reorganize typedef_struct production accordingly.
22926         Use create_nested_ptr_option.
22927         * gengtype.c (create_nested_ptr_option): New function.
22928         * gengtype.h: Declare it.
22929
22930         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
22931         (string_type): Don't declare.
22932         (do_scalar_typedef): Declare.
22933         (create_scalar_type): Update prototype.
22934         * gengtype.c (string_type): Make static.
22935         (scalar_nonchar, scalar_char): New.
22936         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
22937         (resolve_typedef): Use scalar_nonchar for error recovery.
22938         (create_scalar_type): Remove name_len field.  Return scalar_char
22939         or scalar_nonchar as appropriate.
22940         (adjust_field_type): Look at scalar_is_char boolean to decide whether
22941         to use string_type.
22942         (throughout): Use scalar_nonchar instead of calling
22943         create_scalar_type, whenever possible.
22944         (main): Initialize scalar_char and scalar_nonchar before calling
22945         gen_rtx_next.
22946         * gengtype-lex.l: Adjust for removal of second argument to
22947         create_scalar_type.  Use yylval.s instead of yylval.t when
22948         returning SCALAR.
22949         * gengtype-yacc.y: Type of SCALAR is string.  Call
22950         create_scalar_type from type:SCALAR rule.  Adjust for removal of
22951         second argument to create_scalar_type.
22952
22953         * vec.h: Remove all #if IN_GENGTYPE blocks.
22954         Add comment saying that changes may require adjustments to gengtype.
22955         * gengtype.c: Don't include coretypes.h or tm.h.
22956         Add comment to inclusion of errors.h.
22957         (note_def_vec, note_def_vec_alloc): New functions.
22958         * gengtype.h: Declare new functions.
22959         * gengtype-lex.l: Don't include coretypes.h.
22960         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
22961         Delete.
22962         (update_lineno): Remove unnecessary prototype.
22963         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
22964         (VEC rule): Just return VEC_TOKEN.
22965         * gengtype-yacc.y (VEC_TOKEN): New token type.
22966         (type): Add a production for VEC(a,b).
22967         * Makefile.in: Update dependencies.
22968
22969         * gengtype-lex.l: Remove rules for parsing pointer-to-function
22970         typedefs that use the old PARAMS macro.
22971
22972         * gengtype-lex.l: Remove all rules and states relating to yacc
22973         input files.
22974         * gengtype-yacc.y: Similarly.
22975         * gengtype.c (note_yacc_type): Delete function.
22976         * gengtype.h: Update prototypes.
22977
22978 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
22979
22980         * tree-pretty-print.c (dump_generic_node): Report precision of
22981         unnamed integer types.
22982
22983 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
22984
22985         * ifcvt.c (noce_try_store_flag_constants): Don't check
22986         no_new_pseudos here.
22987         (noce_try_store_flag_constants): Don't check no_new_pseudos.
22988         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
22989         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
22990         noce_try_sign_mask): Likewise.
22991         (if_convert): Check no_new_pseudos here.
22992
22993         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
22994         Remove prototypes.
22995         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
22996         (noce_get_condition): Handle new then_else_reversed argument.
22997         (noce_init_if_info): Remove, fold into noce_find_if_block.
22998         (noce_process_if_block): Take a struct noce_if_info as the
22999         argument.  Don't set up one based on ce_if_info.  Update pointer
23000         references accordingly.
23001         (cond_move_process_if_block): Likewise.
23002         (process_if_block): Removed.
23003         (find_if_block): Removed.  Move functionality two new functions,
23004         noce_find_if_block and cond_exec_find_if_block.
23005         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
23006         blocks and the symmetric IF-ELSE-JOIN case.
23007         (cond_exec_find_if_block): Also new function mostly based on old
23008         find_if_block and process_if_block.
23009         (find_if_header): Replace find_if_block call with separately
23010         guarded calls to noce_find_if_block and cond_exec_find_if_block.
23011         (find_cond_trap): Update noce_get_condition call.
23012         (dead_or_predicable): Likewise.
23013
23014 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
23015
23016         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
23017         Remove.
23018         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
23019         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
23020         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
23021         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
23022         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
23023         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
23024         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
23025         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
23026         __builtin_ia32_psrad128 builtins.
23027
23028 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
23029
23030         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
23031         * config/i386/constraints.md
23032         (define_constraint "I"): Use IN_RANGE macro.
23033         (define_constraint "J"): Ditto.
23034         (define_constraint "K"): Ditto.
23035         (define_constraint "M"): Ditto.
23036         (define_constraint "N"): Ditto.
23037         (define_constraint "O"): Ditto.
23038         * config/i386/predicates.md
23039         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
23040         (define_predicate "const_0_to_3_operand"): Ditto.
23041         (define_predicate "const_0_to_7_operand"): Ditto.
23042         (define_predicate "const_0_to_15_operand"): Ditto.
23043         (define_predicate "const_0_to_63_operand"): Ditto.
23044         (define_predicate "const_0_to_255_operand"): Ditto.
23045         (define_predicate "const_1_to_31_operand"): Ditto.
23046         (define_predicate "const_2_to_3_operand"): Ditto.
23047         (define_predicate "const_4_to_7_operand"): Ditto.
23048
23049 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
23050
23051         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
23052         in SImode for save_world.
23053         * config/rs6000/altivec.md (save_world, restore_world): Convert to
23054         LR hard reg.
23055
23056 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
23057
23058         PR tree-optimization/30784
23059         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
23060         BIT_FIELD_REF.
23061
23062 2007-03-25  Revital Eres  <eres@il.ibm.com>
23063
23064         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
23065           Fold movement_possibility function into it.
23066
23067 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
23068
23069         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
23070         (load_macho_picbase_{si,di}): Convert to LR hard reg.
23071         (call_indirect_nonlocal_darwin64): Same.
23072         (call_nonlocal_darwin64): Same.
23073         (call_value_indirect_nonlocal_darwin64): Same.
23074         (call_value_nonlocal_darwin64): Same.
23075         (sibcall_nonlocal_darwin64): Same.
23076         (sibcall_value_nonlocal_darwin64): Same.
23077         (sibcall_symbolic_64): Same.
23078         (sibcall_value_symbolic_64): Same.
23079         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
23080         LR pseudo.
23081         (rs6000_emit_load_toc_table): Same.
23082         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
23083         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
23084         (mull_call): Same.
23085         (divss_call): Same.
23086         (divus_call): Same.
23087         (quoss_call): Same.
23088         (quous_call): Same.
23089         (load_toc_v4_pic_si): Same
23090         (load_toc_v4_PIC_1): Same.
23091         (load_toc_v4_PIC_1b): Same.
23092         (call_indirect_aix{32,64}): Same.
23093         (call_value_indirect_aix{32,64}): Same.
23094         (call): Same.
23095         (call_value): Same.
23096         (call_local{32,64}): Same.
23097         (call_value_local{32,64}): Same.
23098         (call_indirect_nonlocal_aix{32,64}): Same.
23099         (call_nonlocal_aix{32,64}): Same.
23100         (call_value_indirect_nonlocal_aix{32,64}): Same.
23101         (call_value_nonlocal_aix{32,64}): Same.
23102         (call_indirect_nonlocal_sysv<mode>): Same.
23103         (call_nonlocal_sysv<mode>): Same.
23104         (call_value_indirect_nonlocal_sysv<mode>): Same.
23105         (call_value_nonlocal_sysv<mode>): Same.
23106         (sibcall): Same.
23107         (sibcall_local{32,64}): Same.
23108         (sibcall_value_local{32,64}): Same.
23109         (sibcall_nonlocal_aix{32,64}): Same.
23110         (sibcall_value_nonlocal_aix{32,64}): Same.
23111         (sibcall_nonlocal_sysv<mode>): Same.
23112         (sibcall_value): Same.
23113         (sibcall_value_nonlocal_sysv<mode>): Same.
23114
23115 2007-03-24  Paul Brook  <paul@codesourcery.com>
23116
23117         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
23118         * config/arm/linux-eabi.h: Remove legacy syscall hack.
23119
23120 2007-03-24  Richard Henderson  <rth@redhat.com>
23121
23122         * config/ia64/constraints.md: New file.
23123         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
23124         satisfies_constraint_?.
23125         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
23126         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
23127         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
23128         ia64_output_mi_thunk): Likewise.
23129         (ia64_const_ok_for_letter_p): Remove.
23130         (ia64_const_double_ok_for_letter_p): Remove.
23131         (ia64_extra_constraint): Remove.
23132         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
23133         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
23134         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
23135         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
23136         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
23137         EXTRA_MEMORY_CONSTRAINT): Remove.
23138         * config/ia64/ia64.md: Include constriants.md.  Replace
23139         CONST_OK_FOR_? with satisfies_constraint_?.
23140
23141 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
23142             H.J. Lu  <hongjiu.lu@intel.com>
23143
23144         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
23145         DPD or BID name.
23146         (name macros): Use DPD_BID_NAME to convert names properly.
23147
23148         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
23149         decimal floating point format.
23150         (init_floating_libfuncs): Change decimal functions so that they
23151         have a "bid_" prefix if the decimal system uses the BID format,
23152         and "dpd_" prefix if the decimal system uses the DPD format.
23153         (init_interclass_conv_libfuncs): Ditto.
23154         (init_intraclass_conv_libfuncs): Ditto.
23155
23156         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
23157         using the BID format.
23158
23159         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
23160         whether we are using the BID decimal format.
23161         * configure: Regenerate.
23162
23163         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
23164         the compiler has decimal floating point enabled.  Define
23165         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
23166         instead of DPD.
23167
23168         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
23169         using the BID format.
23170
23171         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
23172         whether we are using the BID decimal format.
23173         * configure: Regenerate.
23174
23175         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
23176         the compiler has decimal floating point enabled.  Define
23177         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
23178         instead of DPD.
23179
23180         * doc/install.texi (--enable-decimal-float): Document BID and DPD
23181         options, and that it is enabled for i386/x86_64 systems.
23182
23183         * Makefile.in (enable_decimal_float): New.
23184         (DECNUMFMT): New.
23185         (DECNUMINC): Add  -I$(DECNUMFMT).
23186         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
23187         to $(DECNUMFMT) from $(DECNUM).
23188
23189         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
23190         Substitute enable_decimal_float.
23191         * configure: Regenerated.
23192
23193         PR other/30529
23194         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
23195         unsigned long.
23196
23197         * configure.ac: Enable decimal float for x86_64-*-linux*.
23198         * configure: Regenerated.
23199
23200         PR other/30530
23201         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
23202         decimal128ClearSign to flip and clear the sign bit in decimal128.
23203         (decimal_real_maxval): Set decimal128SetSign to set the sign
23204         bit in decimal128.
23205
23206 2007-03-23  Ian Lance Taylor  <iant@google.com>
23207
23208         * fold-const.c (fold_binary): Correct warning for X - c >= X.
23209
23210 2007-03-23  Ian Lance Taylor  <iant@google.com>
23211
23212         * tree-dump.c (dump_files): Correct comment.
23213
23214 2007-03-23  Ian Lance Taylor  <iant@google.com>
23215
23216         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
23217
23218 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
23219
23220         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
23221         in cfglayout mode.  Don't go into and out of cfglayout mode.
23222         Link the blocks in the order of the constructed traces.
23223         (rest_of_handle_tracer): Adjust call to tracer.
23224         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
23225         Don't go into cfglayout mode.
23226         (rtl_loop_done): Don't go out of cfglayout mode.
23227         * cfglayout.c (relink_block_chain): New function, split out from...
23228         (fixup_reorder_chain): ...here.  Remove redundant checking.
23229         (cfg_layout_finalize): Don't clear the header, footer, and aux
23230         fields here, move the code to do so to relink_block_chain.  Likewise
23231         for free_original_copy_tables.
23232         * rtl.h (tracer): Update prototype.
23233         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
23234         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
23235         mode.  Use relink_block_chain to serialize the CFG according to the
23236         new basic block order.  Move targetm.cannot_modify_jumps_p check from
23237         here...
23238         (gate_handle_reorder_blocks): ...to here.
23239         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
23240         from here...
23241         (gate_duplicate_computed_gotos): ...to here.
23242         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
23243         something always changes when going into and out of cfglayout mode.
23244         Perform an expensive cfg cleanup while going into cfglayout mode.
23245         Always update liveness information on HAVE_conditional_execution
23246         targets.  Reserialize the basic blocks and go out of cfglayout mode.
23247         * reg-stack.c: Include cfglayout.h.
23248         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
23249         the call to reorder_basic_blocks.
23250         * basic-block.h (reorder_basic_blocks): Update prototype.
23251         (relink_block_chain): New prototype.
23252         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
23253
23254 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
23255
23256         * config/mips/mips.md (type, hazard, *movdi_32bit,
23257         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
23258         *movhi_internal, *movqi_internal, *movsf_hardfloat,
23259         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
23260         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
23261         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
23262         applicable.
23263         (movcc): Change first xfer to multi.
23264         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
23265         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
23266         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
23267         config/mips/generic.md: Change reservations using "xfer" to use
23268         "mfc,mtc".
23269         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
23270         using match_operand.
23271         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
23272         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
23273         examining mode.
23274         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
23275
23276 2007-03-22  Richard Henderson  <rth@redhat.com>
23277
23278         * config/i386/i386.c: Remove unnecessary function declarations.
23279         Move targetm definition, and all related macros, to the end of
23280         the file.  Resort some functions to put definitions before uses.
23281         (ix86_attribute_table): Make static.  Move to end of file.
23282         (ix86_gimplify_va_arg): Make static.
23283
23284 2007-03-22  Richard Henderson  <rth@redhat.com>
23285
23286         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
23287         don't increase local_regparm with force_align_arg_pointer check.
23288         (ix86_function_sseregparm): Assert 32-bit.
23289         (type_has_variadic_args_p): New.
23290         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
23291         type_has_variadic_args_p.
23292         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
23293         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
23294         use memset instead.  Do maybe_vaarg check first; skip attribute
23295         tests if true; skip attribute tests for 64-bit.
23296         (construct_container): Remove TARGET_DEBUG_ARG.
23297         (function_arg_advance_32, function_arg_advance_64): Split out ...
23298         (function_arg_advance): ... from here.
23299         (function_arg_32, function_arg_64): Split out ...
23300         (function_arg): ... from here.
23301         (ix86_pass_by_reference): Tidy.
23302         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
23303         (function_value_32): New, from parts of ix86_function_value
23304         and ix86_value_regno.
23305         (function_value_64): New, from parts of ix86_function_value
23306         and ix86_libcall_value.
23307         (ix86_function_value_1): New.
23308         (ix86_function_value, ix86_libcall_value): Use it.
23309         (return_in_memory_32, return_in_memory_64): Split out ...
23310         (ix86_return_in_memory): ... from here.
23311         (ix86_struct_value_rtx): Skip for 64-bit.
23312         (ix86_libcall_value, ix86_value_regno): Remove.
23313         (setup_incoming_varargs_64): Split out ...
23314         (ix86_setup_incoming_varargs): ... from here.
23315         (ix86_va_start): Remove TARGET_DEBUG_ARG.
23316         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
23317         * config/i386/i386-protos.h (ix86_function_value): Remove.
23318         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
23319
23320 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23321
23322         PR other/23572
23323         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
23324         infinities not supported, otherwise emit warning if -Woverflow. On
23325         underflow, emit warning if -Woverflow.
23326         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
23327         and 0 otherwise.
23328         * real.h (real_from_string): Update declaration
23329
23330 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
23331             Richard Henderson  <rth@redhat.com>
23332
23333         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
23334         * calls.c (compute_argument_block_size, expand_call,
23335         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
23336         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
23337         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
23338         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
23339         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
23340         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
23341         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
23342         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
23343         Set to 1.
23344
23345 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
23346
23347         * c-incpath.c (add_sysroot_to_chain): New.
23348         (merge_include_chains): Add sysroot argument.  Call
23349         add_sysroot_to_chain if sysrooted.
23350         (register_include_chains): Update call to merge_include_chains.
23351         * doc/cppopts.texi: Document use of '=' in include directory
23352         arguments.
23353
23354 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
23355
23356         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
23357         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
23358         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
23359         insn pattern using X87MODEF12 mode macro.
23360
23361 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
23362
23363         * regmove.c (regmove_optimize): Use reg_mentioned_p
23364         instead of reg_overlap_mentioned_p for DST.
23365
23366 2007-03-21  Mike Stump  <mrs@apple.com>
23367
23368         * c.opt: Fixup for Objective-C/C++.
23369
23370 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
23371
23372         * explow.c (convert_memory_address): Fold memory reference when
23373         POINTERS_EXTEND_UNSIGNED < 0
23374
23375 2007-03-21  Richard Henderson  <rth@redhat.com>
23376
23377         PR target/31245
23378         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
23379         * config/i386/mmintrin.h (__m64): Likewise.
23380         * config/i386/xmmintrin.h (__m128): Likewise.
23381
23382 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
23383
23384         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
23385         (VXWORKS_OS_CPP_BUILTINS): Define.
23386         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
23387         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
23388
23389 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
23390
23391         * rtl.h (constant_pool_reference_p): Delete.
23392         (find_constant_src): Declare.
23393         * rtlanal.c (find_constant_src): New function.
23394         * simplify-rtx.c (constant_pool_reference_p): Delete.
23395         * config/i386/i386.md: Use find_constant_src instead of
23396         constant_pool_reference_p/avoid_constant_pool_reference pairs.
23397
23398 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
23399
23400         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
23401         * c-cppbuiltin.c (c_cpp_builtins): Define them.
23402
23403 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
23404
23405         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
23406         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
23407         (arm_elf_asm_constructor): Use it.
23408         (arm_elf_asm_destructor): New function.
23409
23410 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
23411
23412         * jump.c (mark_jump_label): Treat SEQUENCE specially.
23413
23414 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
23415
23416         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
23417
23418 2007-03-19  Andrew Haley  <aph@redhat.com>
23419
23420         PR tree-optimization/31264
23421         * tree-vrp.c (register_edge_assert_for_1): Don't look though
23422         VIEW_CONVERT_EXPRs.
23423
23424 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
23425
23426         PR rtl-optimization/30907
23427         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
23428         (fwprop_init): Always call loop_optimizer_initialize.
23429         (fwprop_done): Always call loop_optimizer_finalize.
23430         (fwprop): We always have loop info now.
23431         (gate_fwprop_addr): Remove.
23432         (pass_fwprop_addr): Use gate_fwprop as gate.
23433
23434         PR rtl-optimization/30841
23435         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
23436         df_chain_alloc): Call df_reorganize_refs unconditionally.
23437         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
23438         refs_organized to refs_organized_size.
23439         (df_ref_create_structure): Use refs_organized_size instead of
23440         bitmap_size if refs had been organized, and keep refs_organized_size
23441         up-to-date.
23442         * df.h (struct df_ref_info): Change refs_organized to
23443         refs_organized_size.
23444         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
23445         bitmap_size.
23446
23447 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
23448
23449         * except.c (output_function_exception_table): Do not reference the
23450         EH personality routine for functions that do not require an
23451         exception table.
23452
23453 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
23454
23455         PR c/30762
23456         * c-typeck.c (convert_for_assignment): Call comptypes for
23457         RECORD_TYPE or UNION_TYPE.
23458
23459         PR inline-asm/30505
23460         * reload1.c (reload): Do invalid ASM checking after
23461         cleanup_subreg_operands.
23462
23463 2007-03-19  Jeff Law  <law@redhat.com>
23464
23465         * tree-cfg.c (find_taken_edge): Tighten conditions for
23466         optimizing computed gotos.
23467
23468 2007-03-19  Michael Matz  <matz@suse.de>
23469
23470         * builtins.c (expand_builtin_sync_operation,
23471         expand_builtin_compare_and_swap,
23472         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
23473         correctly.
23474
23475         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
23476         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
23477         for operand 3.
23478
23479 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23480
23481         * doc/tm.texi: Add brackets around the return type of
23482         TARGET_SECONDARY_RELOAD.
23483
23484 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23485         Richard Guenther  <rguenther@suse.de>
23486
23487         PR tree-optimization/31254
23488         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
23489         Use handled_component_p () where appropriate.  Continue
23490         propagating into the rhs if we propagated into an INDIRECT_REF
23491         on the lhs.
23492
23493 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23494
23495         * config/s390/s390.md (op_type attribute): RRR instruction type added.
23496         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
23497         (xde, xdee): Mode attributes adjusted to support DFP modes.
23498         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
23499         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
23500         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
23501         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
23502         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
23503         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
23504         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
23505         numbers.
23506         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
23507         "movsf"): Insn definitions removed.
23508         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
23509         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
23510         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
23511         definitions added.
23512         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
23513         "reload_in<mode>", "reload_out<mode>"): Expander added.
23514         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
23515         Expander removed.
23516
23517 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23518
23519         * config/s390/s390.md: Only non-functional changes.  Renamed
23520         FPR mode macro to BFP all over the file.
23521
23522 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23523
23524         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
23525         (op_type attribute): RRF instruction type added.
23526         (fT0): New mode attribute.
23527         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
23528         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
23529         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
23530         instruction no secondary memory is needed when moving DFmode values
23531         between GPRs and FPRs.
23532
23533 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23534
23535         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
23536         inverted and documentation adjusted.
23537         ("mhard-dfp", "msoft-dfp"): New options.
23538         * config/s390/s390.c (s390_handle_arch_option): New architecture
23539         switch: z9-ec.
23540         (override_options): Sanity checks for the new options added.
23541         * config.gcc: New architecture switch: z9-ec.
23542         * config/s390/s390.h (processor_flags): PF_DFP added.
23543         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
23544         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
23545         when the bit is NOT set so remove it from the defaults.
23546
23547 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23548
23549         * genemit.c (main): Print include statement for dfp.h.
23550         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
23551         is not available.
23552
23553 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
23554
23555         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
23556
23557 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
23558
23559         PR target/31022
23560         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
23561         instead of PATTERN.
23562
23563 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23564
23565         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
23566         attr_length_call, output_call, output_indirect_call): Cleanup
23567         formatting of targetm calls.
23568
23569 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
23570
23571         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
23572
23573 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23574
23575         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
23576         reservation, bypass and anti-bypass descriptions for these
23577         instructions.  Update move patterns.
23578         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
23579         TYPE_FPSTORE.
23580
23581 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
23582
23583         * tree-vect-transform.c (get_initial_def_for_induction): Replace
23584         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
23585         (get_initial_def_for_reduction): Likewise.
23586
23587 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
23588
23589         Fix PR tree-optimization/29922
23590         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
23591         (get_representative): Removed.
23592         (value_dies_in_block_x): Update for rvuse removal.
23593         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
23594         (compute_antic_aux): Handle when PHI nodes appear in
23595         non-single-successors.
23596         (dump_bitmap_of_names): Removed.
23597         (compute_antic_safe): Renamed and removed rvuse calculation.
23598         Calculate only antic safe.
23599         (insert_into_preds_of_block): Remove assert.
23600         (execute_pre): Update for renamed functions.
23601         (defer_or_phi_translate_block): New function.
23602
23603 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
23604
23605         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
23606         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
23607         typos.
23608         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
23609         Follow spelling conventions.
23610
23611         * tree-data-ref.h: Remove the prototype for analyze_array.
23612
23613 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
23614
23615         PR tree-optimization/31041
23616         * tree-vect-transform.c (get_initial_def_for_induction): Call
23617         force_gimple_operand.
23618
23619 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
23620
23621         * ipa-type-escape.c (look_for_casts) : Revert code to use
23622         handled_component_p due to ada test a-numaux.adb.
23623
23624 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
23625
23626         * final.c (final_scan_insn): Alter the condition of a
23627         conditional trap if we have nonstandard CC.
23628
23629 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
23630
23631         * configure.ac: Remove excess quoting from asm line 0 test.
23632         * configure: Rebuilt.
23633
23634 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23635
23636         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
23637         * c-common.c (convert_and_check): Move warning logic to...
23638         (warnings_for_convert_and_check): ...here. Define.
23639         * c-common.h (warnings_for_convert_and_check): Declare.
23640
23641 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23642
23643         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
23644         (output_call): Likewise.
23645
23646 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
23647
23648         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
23649
23650 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
23651
23652         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
23653
23654 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
23655
23656         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
23657         opteron, athlon-64 and athlon-fx processor_alias_table entries.
23658
23659 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
23660
23661         PR tree-optimization/31183
23662         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
23663         Use double_int instead of unsigned int for representing access_strides.
23664         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
23665
23666 2007-03-16  Richard Guenther  <rguenther@suse.de>
23667
23668         PR tree-optimization/31146
23669         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
23670         to allow recursion of forward_propagate_addr_expr.
23671         (forward_propagate_addr_into_variable_array_index): Likewise.
23672         (forward_propagate_addr_expr): Likewise.
23673         (tree_ssa_forward_propagate_single_use_vars): Likewise.
23674         (forward_propagate_addr_expr_1): Recurse on simple copies
23675         instead of propagating into them.  Do so for useless conversions
23676         as well.
23677         (forward_propagate_addr_expr): Clean up unused statements after
23678         recursion.
23679
23680 2007-03-16  Richard Guenther  <rguenther@suse.de>
23681
23682         * builtins.c (expand_builtin_cexpi): Use the right argument
23683         for the expansion via cexp.
23684
23685 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
23686
23687         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
23688         * configure: Rebuilt.
23689
23690 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
23691
23692         PR debug/29906
23693         * dwarf2out.c (force_type_die): Adjust comment.
23694         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
23695
23696 2007-03-15  DJ Delorie  <dj@redhat.com>
23697
23698         * config/frv/predicates.md (minmax_operator): Don't check operands
23699         here.
23700
23701 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
23702
23703         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
23704         Update constant estimates of number of iterations.
23705         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
23706         argument renamed to "realistic".
23707         (compute_estimated_nb_iterations): Removed.
23708         (record_niter_bound): New function.
23709         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
23710         call record_nonwrapping_iv with upper = false.
23711         (infer_loop_bounds_from_signedness): Pass upper argument to
23712         record_nonwrapping_iv.
23713         (estimate_numbers_of_iterations_loop): Do not call
23714         compute_estimated_nb_iterations.  Record estimate based on profile
23715         information.  Initialize the constant estimates of number of
23716         iterations.
23717         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
23718         estimates.
23719         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
23720         number of iterations is too small.
23721         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
23722         (EST_NOT_AVAILABLE): Removed.
23723         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
23724         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
23725         fields.
23726
23727 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
23728
23729         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
23730         Handle NE_EXPR guards.
23731
23732 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23733
23734         PR c++/24924
23735         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
23736         Set also -pedantic-errors by default for the  preprocessor unless
23737         -fpermissive is given.
23738
23739 2007-03-15  Richard Guenther  <rguenther@suse.de>
23740
23741         PR middle-end/29719
23742         PR middle-end/31161
23743         * builtins.c (expand_builtin_cexpi): As a fallback if we
23744         don't have builtins for sincos or cexp create a function
23745         declaration for cexp and expand to a call to that.
23746         (expand_builtin_int_roundingfn): Always fall
23747         back to floor/ceil and its variants even if they may be
23748         not available.
23749
23750 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
23751
23752         PR middle-end/31159
23753         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
23754         jump tables, move the call to delete_dead_jumptables from here...
23755         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
23756         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
23757         don't allow merging of blocks that try_redirect_by_replacing_jump
23758         also does not handle when not optimizing.
23759
23760 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
23761             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
23762
23763         * config/i386/i386.md (x86_sahf_1): Correctly handle
23764         HAVE_AS_IX86_SAHF.
23765
23766 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
23767
23768         PR target/31167
23769         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
23770         x86_64_general_operand as operand[2] predicate.  Remove "iF"
23771         from operand constraints and use "e" constraint instead.
23772         (*subti3_1, *subti3_1 splitter): Ditto.
23773         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
23774         operand[1] predicate.
23775
23776 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
23777
23778         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
23779         arrays, multiply the access strides by the size of the sub-array.
23780         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
23781
23782 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
23783
23784         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
23785         the configured assembler supports the sahf mnemonic.
23786         * configure: Regenerate.
23787         * config.in: Regenerate.
23788
23789         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
23790         emit "sahf" or ".byte\t0x9e" as asm template.
23791
23792 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
23793
23794         PR 31018
23795         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
23796         option to replace hard coded TARGET_xxx in md file.
23797         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
23798         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
23799         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
23800         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
23801         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
23802         (X86_TUNE_NOT_VECTORMODE): Ditto.
23803         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
23804         (TUNE_AVOID_VECTOR_DECODE): Ditto.
23805         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
23806         (TUNE_SLOW_IMUL_IMM8): Ditto.
23807         (TUNE_MOVE_M1_VIA_OR): Ditto.
23808         (TUNE_NOT_UNPAIRABLE): Ditto.
23809         (TUNE_NOT_VECTORMODE): Ditto.
23810
23811         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
23812         options.
23813
23814         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
23815         tuning options instead of hard coded TARGET_xxx.
23816         (fix ssemode peephole2's): Ditto.
23817         (imul peephole2's): Ditto.
23818         (movsi_or): Ditto.
23819         (movdi_or_rex64): Ditto.
23820         (move peephole2): Ditto.
23821         (not peephole2's): Ditto.
23822
23823 2007-03-14  Dirk Mueller  <dmueller@suse.de>
23824
23825         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
23826         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
23827         * c-parser.c (c_parser_if_body): Always add an empty statement in case
23828         of empty body.
23829         * c-parser.c (c_parser_do_statement): Warn about empty body in
23830         do/while statement.
23831         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
23832         * doc/invoke.texi (-Wempty-body): Update documentation.
23833
23834 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23835
23836         PR c/21438
23837         * c-common.h (warn_for_div_by_zero): Declare.
23838         * c-common.c (warn_for_div_by_zero): Define.
23839         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
23840         warning.
23841
23842 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
23843
23844         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
23845         to PREFIX and STANDARD_PREFIX.
23846
23847 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
23848             Phil Edwards  <phil@codesourcery.com>
23849
23850         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
23851         (__gthread_once_t): Remove busy field for RTPs.
23852         (__GTHREAD_ONCE_INIT): Update accordingly.
23853
23854 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
23855
23856         * doc/invoke.texi: Document VxWorks options.
23857
23858 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
23859
23860         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
23861
23862 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
23863
23864         PR tree-optimization/30590
23865         * tree-nrv.c (tree_nrv): Check for the partial update of the
23866         return value.
23867
23868 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
23869
23870         * flags.h (flag_random_seed): Remove declaration, in favor of...
23871         * toplev.h (get_random_seed, set_random_seed): ... these.
23872         * tree.c (get_file_function_name): Use the former.
23873         * opts.c (common_handle_option): Use the latter.
23874         * toplev.c
23875
23876 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
23877
23878         PR middle-end/31127
23879         * cse.c (cse_find_path): Do not bail out if a basic block that
23880         we already visited now becomes part of a path that starts at a
23881         different basic block.  Just disallow this, to make sure we
23882         visit each basic block at most once.
23883
23884 2007-03-13  Jan Hubicka  <jh@suse.cz>
23885
23886         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
23887         attributes, when profile esitmate is present, calls with very low
23888         frequency are cold.
23889
23890 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
23891
23892         PR tree-optimization/30730
23893         PR tree-optimization/26900
23894         * tree-ssa-loop-niter.c: Include gmp.h.
23895         (bounds): New type.
23896         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
23897         split_to_var_and_offset, determine_value_range,
23898         bound_difference_of_offsetted_base, refine_bounds_using_guard,
23899         bound_difference, bounds_add, bounds_negate,
23900         number_of_iterations_ne_max, dump_affine_iv): New functions.
23901         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
23902         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
23903         difference of initial and final value of control iv to validate
23904         results.
23905         (number_of_iterations_cond): Add loop parameter.  Determine bounds
23906         on the difference of the extremes of the control iv.  Add dumps.
23907         (expand_simple_operations): Handle phi nodes.
23908         (simplify_using_initial_conditions): Do not record used conditions.
23909         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
23910         Do not set additional_info.
23911         (implies_nonnegative_p, implies_ge_p): Removed.
23912         (derive_constant_upper_bound): Do not use parameter `additional'.
23913         (record_estimate): Parameter `additional' removed.  Parameter
23914         `i_bound' added.  Do not call derive_constant_upper_bound.
23915         (record_nonwrapping_iv): Use derive_constant_upper_bound to
23916         bound the number of iterations estimate.
23917         (estimate_numbers_of_iterations_loop): Pass the estimate from
23918         the number of iterations analysis to record_estimate.
23919         * tree.h (multiple_of_p): Declare.
23920         * tree-scalar-evolution.c (expression_expensive_p): Removed.
23921         (scev_const_prop): Do not check expression_expensive_p.
23922         * fold-const.c (multiple_of_p): Exported.
23923         * double-int.c (double_int_mask): Exported.
23924         * double-int.h (double_int_mask): Declare.
23925         * tree-flow.h (struct tree_niter_desc): Removed additional_info
23926         field.  Added max field.
23927
23928 2007-03-13  David Taylor  <taylor@candd.org>
23929
23930         PR driver/12448:
23931         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
23932         default -MQ.
23933
23934 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23935
23936         PR target/31123
23937         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
23938         two unamed patterns.
23939
23940 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
23941
23942         * config/i386/i386.opt (mcx16, msahf): New options.
23943         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
23944         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
23945
23946         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
23947         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
23948         Output -mcx16 and -msahf options when corresponding bit is set.
23949
23950         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
23951         and -msahf options.
23952
23953 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
23954
23955         * configure.ac: Test for assembler tolerance to # 0 "".
23956         * configure, config.in: Rebuilt.
23957         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
23958
23959 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
23960
23961         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
23962
23963         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
23964         (handle_syscall): Handle direct system calls.
23965         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
23966
23967 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
23968
23969         * doc/invoke.texi: Fix cpp.info cross-reference.
23970         * doc/passes.texi: Fix gcc.info cross-reference.
23971
23972 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
23973
23974         PR tree-optimization/30835
23975         * lambda-code.c (can_convert_to_perfect_nest): Check whether
23976         bb_for_stmt is not NULL before accessing it.
23977
23978 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
23979
23980         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
23981         some multilibs.
23982
23983 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
23984
23985         PR 30635
23986         * doc/install.texi: Document --enable-stage1-languages
23987
23988 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
23989
23990         * tree-pass.h (pass_into_cfg_layout_mode,
23991         pass_outof_cfg_layout_mode): Declare.
23992         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
23993         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
23994         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
23995         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
23996
23997 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
23998
23999         * c-decl.c (warn_variable_length_array): New function.
24000         Refactored from grokdeclarator to handle warn_vla
24001         and handle unnamed array case.
24002         (grokdeclarator): Refactored VLA warning case.
24003         * c.opt (Wvla): New flag.
24004         * doc/invoke.texi (Wvla): New warning.
24005
24006 2007-03-12  Richard Henderson  <rth@redhat.com>
24007
24008         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
24009         (TARGET_SECTION_TYPE_FLAGS): New.
24010
24011 2007-03-12  Richard Henderson  <rth@redhat.com>
24012
24013         * config/darwin.c (machopic_reloc_rw_mask): New.
24014         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
24015         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
24016
24017 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
24018
24019         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
24020         * cppdefault.h (cpp_PREFIX): Document.
24021         (cpp_PREFIX_len): Likewise.
24022         (cpp_EXEC_PREFIX): New variable.
24023         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
24024         * c-incpath.c (add_standard_paths): Correct logic for relocating
24025         paths within prefix.
24026
24027 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
24028
24029         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
24030         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
24031         mode macro.
24032         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
24033         fix_truncdfdi_sse using SSEMODEF mode macro.
24034         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
24035         fix_truncdfsi_sse using SSEMODEF mode macro.
24036         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
24037         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
24038
24039 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
24040
24041         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
24042         elfos.h to tm_file.
24043
24044 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
24045
24046         * tree.h : Add multiple_of_p declaration.
24047         * fold-const.c (multiple_of_p): Make multiple_of_p public.
24048         * ipa-type-escape.c (results_of_malloc): Redundant.
24049         (visited_stmts): New. Visited stmt for walk_use_def_chains.
24050         (cast_type): Extended with new members.
24051         (check_cast): Returns cast_type.
24052         (cast): New structure for data of walk_use_def_chains.
24053         (is_malloc_result, is_cast_from_non_pointer_1,
24054         is_cast_from_non_pointer,
24055         is_array_access_through_pointer_and_index): New functions.
24056         (look_for_casts): Returns cast types.
24057         (check_call): Returns void.
24058         (okay_pointer_operation): Use support of pointer plus index,
24059         pointer plus constant and allow all multiplications.
24060
24061 2007-03-11  Richard Guenther  <rguenther@suse.de>
24062
24063         PR tree-optimization/31115
24064         * tree-vrp.c (extract_range_from_binary_expr): Make sure
24065         the shift count is positive and non-anti-range for RSHIFT_EXPR.
24066         A shift count of zero is not special as with *_DIV_EXPR.
24067         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
24068         direction.
24069
24070 2007-03-11  Ian Lance Taylor  <iant@google.com>
24071
24072         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
24073         the *_DIV_EXPR codes correctly with overflow infinities.
24074
24075 2007-03-11  Ira Rosen  <irar@il.ibm.com>
24076
24077         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
24078         indicate success/failure of the analysis. Add negation to subtrahend
24079         in case of subtraction. Fail if both operands contain constants.
24080         (create_data_ref): Fail if analyze_offset fails.
24081
24082 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
24083
24084         * config/i386/i386.md (frndintxf2): Rename to ...
24085         (rintxf2): ... this. Remove expander having same name.
24086         (rintsf2, rintdf2): Implement using SSEMODEF macro.
24087         (roundsf2, rounddf2): Ditto.
24088         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
24089         (lround<mode>di2, lround<mode>si2): Ditto.
24090
24091 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
24092
24093         * lower-subreg.c: Include except.h.
24094         (decompose_multiword_subregs): Verify that the only control flow
24095         insns we can split are loads to multi-words pseudos.
24096         Handle breaking such blocks after splitting, instead of calling
24097         find_many_sub_basic_blocks.
24098
24099         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
24100         on the new basic block.  Add a lengthy comment explaining why we
24101         thought this was necessary.
24102         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
24103
24104 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
24105
24106         PR c++/30924
24107         * tree.c (walk_type_fields): Recurse into the element type of
24108         ARRAY_TYPEs if there is a pointer set.
24109
24110 2007-03-10  Dirk Mueller  <dmueller@suse.de>
24111
24112         * c-common.c (warn_logical_operator): Fix condition.
24113
24114 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
24115
24116         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
24117         quotation mark.
24118         * config/darwin.c (machopic_select_section): Remove superfluous
24119         argument in call to categorize_decl_for_section.  Remove unused
24120         variable shlib.
24121
24122 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
24123
24124         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
24125         defined.
24126         * configure: Regenerate.
24127
24128 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
24129
24130         PR target/31101
24131         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
24132         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
24133         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
24134         Add LABEL_NUSES to emitted label.
24135         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
24136         branch probability value to emitted jump insn.
24137         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
24138         Do not check life information and do not re-arrange input operands
24139         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
24140
24141 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
24142
24143         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
24144         the change of decode_asm_operands.
24145
24146 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
24147
24148         * mode-switching.c (create_pre_exit): Skip blockage insn.
24149
24150 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
24151
24152         * tree-pass.h (TODO_update_smt_usage): Remove.
24153         Update all users.
24154         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
24155         argument SOME.
24156         Update all users.
24157
24158 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24159
24160         * pa.c (attr_length_call): Revise condition for long
24161         pc-relative branch.
24162         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
24163         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
24164         sequence on SOM target.
24165
24166 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
24167
24168         * gcc.c: Document %{, in big comment at top.
24169         (input_suffix_matches): Remove special handling for .s and
24170         .S.
24171         (input_spec_matches): New.
24172         (handle_braces): Handle %{,.
24173         (validate_switches): ',' indicates a value which is not a switch.
24174         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
24175         to detect assembler input.
24176         * config/i386/sol2.h (CPP_SPEC): Likewise.
24177         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
24178         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
24179         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
24180         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
24181         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
24182         -m64 causes deployment target to default to 10.5.
24183         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
24184
24185 2007-03-09  Richard Henderson  <rth@redhat.com>
24186
24187         PR target/26090
24188         * target.h (targetm.asm.out.reloc_rw_mask): New.
24189         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
24190         (TARGET_ASM_OUT): Use it.
24191         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
24192         * varasm.c (categorize_decl_for_section): Remove shlib argument;
24193         use the new reloc_rw_mask target hook instead.
24194         (default_section_type_flags_1): Merge into...
24195         (default_section_type_flags): ... here.
24196         (decl_readonly_section_1): Merge into...
24197         (decl_readonly_section): ... here.
24198         (default_elf_select_section_1): Merge into...
24199         (default_elf_select_section): ... here.
24200         (default_unique_section_1): Merge into...
24201         (default_unique_section): ... here.
24202         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
24203         (default_select_rtx_section): Use it.
24204         (default_elf_select_rtx_section): Likewise.
24205         * output.h: Update to match.
24206         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
24207         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
24208         (TARGET_ASM_RELOC_RW_MASK): New.
24209         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
24210         to categorize_decl_for_section.
24211         (x86_64_elf_unique_section): Likewise.
24212         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
24213         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
24214         (TARGET_ASM_RELOC_RW_MASK): New.
24215         * config/ia64/ia64.c (ia64_rwreloc_select_section,
24216         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
24217         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
24218         (TARGET_RWRELOC): Remove.
24219         (ia64_section_type_flags): Adjust call to default_section_type_flags.
24220         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
24221         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
24222         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
24223         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
24224         (rs6000_xcoff_select_section): Use decl_readonly_section.
24225         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
24226         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
24227         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
24228         (TARGET_SECTION_TYPE_FLAGS): Remove.
24229         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
24230
24231 2007-03-09  Roger Sayle  <roger@eyesopen.com>
24232
24233         * fold-const.c (fold_comparison): Remove compile-time evaluation of
24234         complex constant equality/inequality comparisons for here.
24235         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
24236         known at compile-time or can be simplified to a scalar comparison.
24237         (fold_relational_const): Move compile-time evaluation of complex
24238         constant equality/inequality comparisons to here.
24239
24240 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24241
24242         PR rtl-optimization/30643
24243         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
24244         dest_addr_elt.
24245         (fold_rtx): Recurse, like before 2006-11-03.
24246
24247 2007-03-09  DJ Delorie  <dj@redhat.com>
24248
24249         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
24250         m32c-pragma.o.
24251
24252 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
24253
24254         PR tree-optimization/30375
24255         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
24256         LHS of statements is not the same.
24257         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
24258
24259 2007-03-09  Chao-ying Fu  <fu@mips.com>
24260
24261         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
24262         REV 2.
24263         * doc/invoke.texi (-mdspr2): Document new option.
24264         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
24265         New unspec for DSP REV 2.
24266         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
24267         these instructions are extended in DSP REV 2.
24268         (mips-dspr2.md): Include.
24269         * config/mips/mips.opt (mdspr2): New option.
24270         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
24271         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
24272         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
24273         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
24274         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
24275         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
24276         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
24277         and 2 builtins.
24278         (bdesc_map): Add one field of unsupported_target_flags.
24279         (bdesc_arrays): Update entries to have extra fields.  Add
24280         dsp_32only_bdesc.
24281         (mips_init_builtins): Initialize new function types.
24282         Check unsupported_target_fileds to filter out builtins.
24283         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
24284         TARGET_DSPR2.
24285         (ASM_SPEC): Pass mdspr2 to the assembler.
24286         * config/mips/mips-dspr2.md: New file.
24287
24288 2007-03-09  Sa Liu  <saliu@de.ibm.com>
24289
24290         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
24291
24292 2007-03-09  Ian Lance Taylor  <iant@google.com>
24293
24294         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
24295         argument) like -Wstrict-overflow=2.
24296         * doc/invoke.texi (Warning Options): Update documentation.
24297
24298 2007-03-09  Dirk Mueller  <dmueller@suse.de>
24299
24300         PR c++/17946
24301         * doc/invoke.texi (-Wlogical-op): Document.
24302         * common.opt (-Wlogical-op): New.
24303         * c-common.h (warn_logical_operator): Declare.
24304         * c-common.c (warn_logical_operator): Define.
24305         * c-typeck.c (parser_build_binary_op): Call
24306         warn_logical_operator.
24307
24308 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24309
24310         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
24311         * final.c (final_scan_insn): Test for non-"" file name.
24312
24313 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
24314
24315         * doc/loop.texi: Document the Omega linear constraints solver.
24316         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
24317         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
24318         omega-hash-table-size, omega-max-keys, and
24319         omega-eliminate-redundant-constraints.
24320         * tree-pass.h (pass_check_data_deps): Declared.
24321         * omega.c: New.
24322         * omega.h: New.
24323         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
24324         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
24325         pass_check_data_deps): New.
24326         * tree-data-ref.c (init_data_ref): Remove declaration.
24327         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
24328         (analyze_array): Renamed init_array_ref, move up initializations.
24329         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
24330         Removed arguments that are set to NULL.
24331         (analyze_indirect_ref): Correct indentation, correct call to
24332         init_pointer_ref.
24333         (object_analysis): Call init_array_ref instead of analyze_array.
24334         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
24335         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
24336         of DR_ACCESS_FNS_ADDR.
24337         (init_omega_eq_with_af, omega_extract_distance_vectors,
24338         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
24339         ddr_consistent_p): New.
24340         (compute_affine_dependence): Check consistency of ddrs when
24341         flag_check_data_deps is passed.
24342         (analyze_all_data_dependences): Uncomment.
24343         (tree_check_data_deps): New.
24344         * tree-data-ref.h: Include omega.h.
24345         (DR_ACCESS_FNS_ADDR): Removed.
24346         (data_dependence_relation): Add inner_loop.
24347         (DDR_INNER_LOOP): New.
24348         * common.opt (fcheck-data-deps): New.
24349         * tree-flow.h (tree_check_data_deps): Declare.
24350         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
24351         (OBJS-common): Depend on omega.o.
24352         (omega.o): Define.
24353         * passes.c (pass_check_data_deps): Scheduled.
24354         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
24355         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
24356         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
24357         PARAM_VECT_MAX_VERSION_CHECKS,
24358         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
24359
24360 2007-03-09  Richard Guenther  <rguenther@suse.de>
24361
24362         PR tree-optimization/30904
24363         PR middle-end/31058
24364         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
24365         the same way as *_DIV_EXPR.
24366
24367 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24368
24369         * recog.c (decode_asm_operands): No mixed declarations and code.
24370
24371 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24372
24373         * rtl.def (ASM_INPUT): Add location.
24374         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
24375         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
24376         (decode_asm_operands): Add loc operand.
24377         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
24378         * stmt.c (expand_asm): Rename to...
24379         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
24380         gen_rtx_ASM_INPUT_loc.
24381         (expand_asm_expr): Adjust.
24382         * recog.c (decode_asm_operands): Add loc operand.
24383         (check_asm_operands, extract_insn): Adjust.
24384         * reload1.c (maybe_fix_stack_asms): Likewise.
24385         * final.c (asm_insn_count): Likewise.
24386         (final_scan_insn): Output # line before and after asm.
24387
24388 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
24389
24390         * tree-ssa-structalias.c (variable_info): Remove
24391         finished_solution.
24392         (new_var_info): Ditto.
24393         (shared_bitmap_info_t): New structure.
24394         (shared_bitmap_table): New variable.
24395         (shared_bitmap_hash): New function.
24396         (shared_bitmap_eq): Ditto
24397         (shared_bitmap_lookup): Ditto.
24398         (shared_bitmap_add): Ditto.
24399         (merge_smts_into): Change to take bitmap directly.
24400         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
24401         (init_alias_vars): Init shared bitmap hashtable.
24402         (delete_points_to_sets): Delete shared bitmap hashtable.
24403         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
24404         is_aliased removal as a change that was still necessary was
24405         deleted.
24406
24407 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
24408
24409         * config/i386/i386.h (override_options): Conditionally disable
24410         x86_sahf for 64bit targets only.
24411
24412 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24413
24414         PR C/31072
24415         * c-decl.c (merge_decls): Don't call make_var_volatile.
24416         * varasm.c (make_var_volatile): Remove.
24417         * output.h (make_var_volatile): Remove.
24418
24419 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
24420
24421         PR tree-optimization/31085
24422         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
24423
24424 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24425
24426         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
24427         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
24428         ATTR_CONST_NOTHROW_LIST.
24429
24430         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
24431         FIX_TRUNC_EXPR.
24432
24433 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
24434
24435         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
24436
24437 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
24438
24439         PR 31013
24440         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
24441         is declared.
24442         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
24443         passed, use shared libgcc.
24444
24445 2007-03-08  Roger Sayle  <roger@eyesopen.com>
24446
24447         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
24448         instead of calling build2 with a GIMPLE_MODIFY_STMT.
24449         (honor_protect_cleanup_actions, lower_try_finally_switch):
24450         Likewise.
24451         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
24452         ifc_temp_var): Likewise.
24453         * tree-inline.c (setup_one_parameter): Likewise.
24454         * tree-mudflap.c (mf_decl_cache_locals,
24455         mf_build_check_statement_for): Likewise.
24456         * tree-nested.c (init_tmp_var, save_tmp_var,
24457         finalize_nesting_tree_1): Likewise.
24458         * tree-outof-ssa.c (insert_copy_on_edge,
24459         insert_backedge_copies): Likewise.
24460         * tree-profile.c (tree_gen_edge_profiler,
24461         tree_gen_ic_profiler): Likewise.
24462         * tree-scalar-evolution.c (scev_const_prop): Likewise.
24463         * tree-sra.c (sra_build_assignment): Likewise.
24464         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
24465         * tree-ssa-math-opts.c (insert_reciprocals,
24466         execute_cse_sincos_1): Likewise.
24467         * tree-tailcall.c (adjust_accumulator_values,
24468         adjust_return_value): Likewise.
24469         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
24470         * tree-vect-transform.c (vect_create_data_ref_ptr,
24471         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
24472         vect_create_epilog_for_reduction, vectorizable_reduction,
24473         vectorizable_call, vectorizable_conversion,
24474         vectorizable_assignment, vectorizable_operation,
24475         vectorizable_type_demotion, vect_gen_widened_results_half,
24476         vect_permute_store_chain, vectorizable_store,
24477         vect_setup_realignment, vect_permute_load_chain,
24478         vectorizable_load, vectorizable_condition,
24479         vect_create_cond_for_align_checks): Likewise.
24480         * tree-vrp.c (build_assert_expr_for): Likewise.
24481
24482 2007-03-08  Ian Lance Taylor  <iant@google.com>
24483
24484         * tree-vrp.c: Include "intl.h".
24485         (usable_range_p): New static function.
24486         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
24487         overflowed values, juts set *strict_overflow_p.
24488         (compare_values): Only return -2 if one of the operands is not a
24489         constant.
24490         (compare_ranges): Call usable_range_p.
24491         (compare_range_with_value): Likewise.
24492         (vrp_evaluate_conditional_warnv): Rename from
24493         vrp_evaluate_conditional.  Make static.  Change all callers.
24494         (vrp_evaluate_conditional): New function.
24495         (simplify_div_or_mod_using_ranges): Issue warning about reliance
24496         on signed overflow.
24497         (simplify_abs_using_ranges): Likewise.
24498         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
24499         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
24500         within_stmt parameter.
24501         * tree-ssa-propagate.c (fold_predicate_in): Update call to
24502         vrp_evaluate_conditional.
24503         * tree-ssa-threadedge.c
24504         (record_temporary_equivalences_from_stmts_at_dest): Change
24505         simplify parameter to take a second tree parameter.
24506         (simplify_control_stmt_condition): Likewise.
24507         (thread_across_edge): Likewise.
24508         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
24509         (thread_across_edge): Likewise.
24510         * Makefile.in (tree-vrp.o): Depend upon intl.h.
24511
24512 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
24513
24514         * config/i386/i386.h (TARGET_SAHF): New define.
24515         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
24516         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
24517         (x86_sahf): New global variable.
24518         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
24519         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
24520         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
24521         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
24522         for 64-bit.
24523         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
24524         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
24525         when expanding fcomi/sahf based tests.
24526         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
24527         expanding sahf based alternative. Emit sahf based sequence when
24528         optimizing for code size.
24529         * config/i386/i386.md (x86_sahf_1): Do not disable for
24530         TARGET_64BIT, enable for TARGET_SAHF.
24531
24532 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
24533
24534         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
24535         spurious whitespace from error message.
24536
24537 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
24538
24539         PR c++/30852
24540         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
24541
24542 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
24543
24544         * c-decl.c (grokdeclarator): Disable warnings for anonymous
24545         bitfields.
24546         * tree-sra.c (instantiate_element): Propagate disabled warnings
24547         from the element itself to the created variable.
24548
24549 2007-03-07  Richard Henderson  <rth@redhat.com>
24550
24551         PR target/30848
24552         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
24553         silently fix up the stack in the case of a missing register.
24554
24555 2007-03-07  Paul Brook  <paul@codesourcery.com>
24556
24557         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
24558
24559 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
24560
24561         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
24562         New.
24563         (phase1_vrs): Use them.
24564         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
24565         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
24566         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
24567         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
24568         __gnu_Unwind_Restore_WMMXC if required.
24569         (_Unwind_VRS_Pop): Implement iWMMXt support.
24570         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
24571         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
24572         gnu_Unwind_Save_WMMXC): Define.
24573
24574 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
24575
24576         * config/vxworks.h (vxworks_override_options): Declare.
24577         (VXWORKS_OVERRIDE_OPTIONS): Use it.
24578         * config/vxworks.c: Include target.h and toplev.h.
24579         (vxworks_override_options): New function.
24580         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
24581
24582 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
24583
24584         * config/s390/s390.c (override_options): Don't emit an error when
24585         -mstack-size is used without providing -mstack-guard.
24586         (s390_emit_prologue): Choose stack_guard value automatically if not
24587         provided via command line.
24588         * doc/invoke.texi: Adjust description of -mstack-guard and
24589         -mstack-size.
24590
24591 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
24592
24593         * config/i386/i386.c (output_set_got): Add a GOT initialization
24594         sequence for VxWorks PIC.
24595         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
24596         around labels as well as symbols.  Use gotoff_operand instead
24597         of local_symbolic_operand.
24598         (legitimize_pic_address): Use gotoff_operand instead of
24599         local_symbolic_operand.  Use @GOT accesses for labels as
24600         well as symbols.
24601         (ix86_output_addr_diff_elt): Use PC-relative rather than
24602         GP-relative offsets for VxWorks PIC.
24603         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
24604         no_new_pseudos.  Check whether the returned register is op0.
24605         * config/i386/i386.md (tablejump): Use PC-relative rather than
24606         GP-relative offsets for VxWorks PIC.
24607         * config/i386/predicates.md (gotoff_operand): New predicate.
24608
24609 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24610
24611         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
24612         before defining.
24613         * config/vxworks-dummy.h: New file.
24614         * config/i386/i386.h: Include it.
24615
24616 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
24617
24618         * dwarf2out.c (is_inlined_entry_point): New
24619         (add_high_low_attributes): Emit DW_AT_entry_pc along with
24620         DW_AT_ranges if the first subblock is the entry point.
24621
24622 2007-03-06  David Daney  <ddaney@avtrex.com>
24623
24624         * doc/install.texi (mips-*-*): Change recommended binutils
24625         version.
24626
24627 2007-03-06  Anatoly Sokolov <aesok@post.ru>
24628
24629         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
24630         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
24631         devices.
24632         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
24633         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
24634
24635 2007-03-06  Jan Hubicka  <jh@suse.cz>
24636
24637         * errors.h (warning, error, fatal, internal_error): Mark as cold.
24638         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
24639         functions are hot.
24640         (probably_cold_bb_p): Cold functions are cold.
24641         (probably_never_executed_bb_p): Cold functions are cold.
24642         (tree_bb_level_predictions): Predict calls to cold functions as not
24643         taken.
24644         (compute_function_frequency): Check hot/cold attributes.
24645         * function.h (function_frequency): Update comments.
24646         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
24647         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
24648         (c_common_att): Add cold and hot.
24649
24650         * doc/extend.texi (hot,cold attributes): Document.
24651
24652 2007-03-06  Andrew Haley  <aph@redhat.com>
24653
24654         * function.c (expand_function_end): Move blockage to just after we
24655         emit the label for the naked return from the function.
24656
24657 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24658
24659         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
24660         before redefining.
24661
24662 2007-03-06  Jan Hubicka  <jh@suse.cz>
24663
24664         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
24665         loaded for constant large models.  Non-large 64bit PIC can do.
24666         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
24667         * cmodel.h: Add LARGE PIC.
24668         * i386.md (UNSPEC_PLTOFF): New.
24669         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
24670         unspecs as needed.
24671         (*call_1_rex64): Disable for large models.
24672         (*call_1_rex64_large): New.
24673         (*call_value_1_rex64): Disable for large models.
24674         (*call_value_1_rex64_large): New.
24675         (set_rip_rex4): New.
24676         (set_got_offset_rex64): New.
24677         * predicates.md (constant_call_address_operand): For large model
24678         constant calls are not possible.
24679         * i386-protos.h (construct_plt_address): Declare.
24680         * i386.c (override_options): Accept large models.
24681         (ix86_expand_prologue): Expand large PIC GOT pointer load.
24682         (legitimate_constant_p): Add new UNSPECs.
24683         (legitimate_pic_operand_p): Likewise.
24684         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
24685         (legitimize_pic_address): Do easy RIP relative way for TLS only for
24686         non-large model.
24687         (output_pic_addr_const): Add PLTOFF.
24688         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
24689         (ix86_expand_move): Legitimize pic address when in PIC mode.
24690         (construct_plt_address): New function.
24691         (ix86_expand_call): Offload the address to register and use GOT
24692         pointer for large model.
24693         * invoke.texi (mcmodel=large): Update documentation.
24694
24695 2007-03-06  Richard Henderson  <rth@redhat.com>
24696
24697         * config/i386/i386.c (x86_use_leave, x86_push_memory,
24698         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
24699         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
24700         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
24701         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
24702         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
24703         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
24704         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
24705         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
24706         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
24707         x86_partial_reg_dependency, x86_memory_mismatch_stall,
24708         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
24709         x86_sse_partial_reg_dependency, x86_sse_split_regs,
24710         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
24711         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
24712         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
24713         x86_schedule, x86_use_bt, x86_pad_returns,
24714         x86_use_xchgb): Merge into ...
24715         (ix86_tune_features): ... here.  New array.
24716         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
24717         x86_bswap): Merge into ...
24718         (ix86_arch_features): ... here.  New array.
24719         (x86_3dnow_a): Remove.
24720         (x86_accumulate_outgoing_args): Make static.
24721         (x86_arch_always_fancy_math_387): Make static.
24722         (ix86_tune_mask, ix86_arch_mask): Move ...
24723         (override_options): ... to local variables here.  Apply the
24724         appropriate mask to each element of ix86_arch_features and
24725         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
24726         as were done in the old macros.
24727         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
24728         * config/i386/i386.h (x86_use_leave, x86_push_memory,
24729         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
24730         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
24731         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
24732         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
24733         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
24734         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
24735         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
24736         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
24737         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
24738         x86_partial_reg_dependency, x86_memory_mismatch_stall,
24739         x86_accumulate_outgoing_args, x86_prologue_using_move,
24740         x86_epilogue_using_move, x86_decompose_lea,
24741         x86_arch_always_fancy_math_387, x86_shift1,
24742         x86_sse_partial_reg_dependency, x86_sse_split_regs,
24743         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
24744         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
24745         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
24746         x86_use_incdec, x86_pad_returns, x86_bswap,
24747         x86_partial_flag_reg_stall): Remove.
24748         (enum ix86_tune_indices): New.
24749         (ix86_tune_features): New.
24750         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
24751         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
24752         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
24753         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
24754         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
24755         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
24756         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
24757         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
24758         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
24759         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
24760         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
24761         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
24762         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
24763         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
24764         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
24765         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
24766         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
24767         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
24768         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
24769         TARGET_EXT_80387_CONSTANTS): Use it.
24770         (enum ix86_arch_indices): New.
24771         (ix86_arch_features): New.
24772         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
24773         TARGET_BSWAP): Use it.
24774         (ix86_tune_mask, ix86_arch_mask): Remove.
24775
24776 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
24777
24778         PR bootstrap/31020
24779         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
24780         Define using $${sysroot_headers_suffix}.
24781         * configure: Regenerate.
24782         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
24783         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
24784         defined.
24785         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
24786         * gcc.c (print_sysroot_headers_suffix): New.
24787         (option_map): Include --print-sysroot-headers-suffix.
24788         (display_help): Mention -print-sysroot-headers-suffix.
24789         (process_command): Handle -print-sysroot-headers-suffix.
24790         (do_spec_1): Append multilib directory to include-fixed path if
24791         sysroot suffixes in use.
24792         (main): Handle -print-sysroot-headers-suffix.
24793         * Makefile.in (start.encap): Don't depend on xlimits.h
24794         (xlimits.h): Remove.
24795         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
24796         limits.h for each multilib in fixinc_list.
24797         (fixinc_list, s-fixinc_list): New.
24798         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
24799         generate them for each multilib in fixinc_list.
24800         (stmp-fixproto): Use include-fixed.  Run fixproto for each
24801         multilib in fixinc_list.
24802         (mostlyclean): Don't remove xlimits.h.
24803         (clean): Remove include-fixed.
24804         (real-install-headers-tar, real-install-headers-cpio,
24805         real-install-headers-cp): Don't copy include, only include-fixed.
24806         (install-mkheaders): Depend on fixinc_list.  Don't depend on
24807         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
24808         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
24809         SYSTEM_HEADER_DIR setting in mkheaders.conf.
24810
24811 2007-03-06  Jan Hubicka  <jh@suse.cz>
24812
24813         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
24814         NANs easilly.
24815
24816 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24817
24818         * configure.ac: Allow tm_file to contain build-directory files.
24819         * configure: Regenerate.
24820         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
24821         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
24822         * config/m68k/print-sysroot-suffix.sh: New file.
24823
24824 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24825
24826         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
24827         of pic_offset_table_rtx if reload_completed.
24828         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
24829         PIC_OFFSET_TABLE_REGNUM.
24830         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
24831         return true.
24832         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
24833         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
24834
24835 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24836
24837         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
24838         functions that call eh_return.
24839
24840 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24841
24842         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
24843         functions that need a constant pool.
24844
24845 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24846
24847         PR target/28181
24848         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
24849         (m68k_preferred_reload_class): Likewise.
24850         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
24851         (SECONDARY_RELOAD_CLASS): Define.
24852         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
24853         (LIMIT_RELOAD_CLASS): Delete.
24854         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
24855         registers from storing bytes.
24856         (m68k_secondary_reload_class): New function.
24857         (m68k_preferred_reload_class): Likewise.
24858
24859 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24860
24861         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
24862         leaf functions.
24863         (m68k_expand_prologue): Likewise.
24864
24865 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24866
24867         * config/m68k/m68k-protos.h (output_sibcall): Declare.
24868         (mips_expand_epilogue): Add a bool parameter.
24869         (m68k_legitimize_sibcall_address): Declare.
24870         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
24871         (m68k_expand_epilogue): Add a parameter to select between sibling
24872         and normal epilogues.  Only generate a return for the latter.
24873         (m68k_ok_for_sibcall_p): New function.
24874         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
24875         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
24876         (sibcall_value, *sibcall_value): Likewise.
24877         (*call, *call_value): Require !SIBLING_CALL_P.
24878         (epilogue): Update call to m68k_expand_epilogue.
24879         (sibcall_epilogue): New pattern.
24880         * config/m68k/predicates.md (const_call_operand): Say that this
24881         predicate applies to sibling calls too.
24882         (sibcall_operand): New predicate.
24883
24884 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24885
24886         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
24887         alternatives as movsi_cf.
24888         (movsf_cf_hard): Add commentary.
24889
24890 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
24891             Richard Sandiford  <richard@codesourcery.com>
24892
24893         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
24894         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
24895         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
24896         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
24897         as being live on exit from an interrupt function.
24898         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
24899         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
24900         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
24901         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
24902         (m68k_interrupt_function_p): Globalize.
24903         (m68k_compute_frame_layout): Remove reverse mask code.
24904         (m68k_emit_movem, m68k_set_frame_related): New functions.
24905         (m68k_output_function_prologue): Delete in favor of...
24906         (m68k_expand_prologue): ...this new function.
24907         (m68k_output_function_epilogue): Delete in favor of...
24908         (m68k_expand_epilogue): ...this new function.
24909         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
24910         functions.
24911         (print_operand): Handle %?.
24912         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
24913         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
24914         (prologue, epilogue): New patterns.
24915         (return): Turn into a define_expand.
24916         (*return): New pattern, derived from old "return" pattern.  Use rte
24917         rather than rts for interrupt functions.  Only use rtd if the pop
24918         count is nonzero.
24919         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
24920         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
24921         (link, *link, unlink, *unlink, load_got): Likewise.
24922
24923 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24924
24925         PR target/23482
24926         PR target/17114
24927         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
24928         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
24929         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
24930         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
24931         and m68k_matches_u_p.
24932         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
24933         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
24934         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
24935         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
24936         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
24937         (REG_STRICT_P): New macro.
24938         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
24939         PCREL_GENERAL_OPERAND_OK.
24940         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
24941         m68k_legitimate_base_reg_p.
24942         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
24943         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
24944         (PIC_CASE_VECTOR_ADDRESS): Update comment.
24945         * config/m68k/m68k.c (m68k_address): New structure.
24946         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
24947         (m68k_decompose_index, m68k_legitimate_constant_address_p)
24948         (m68k_jump_table_ref_p, m68k_decompose_address)
24949         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
24950         (m68k_matches_u_p): New functions.
24951         (print_operand_address): Rewrite to use m68k_decompose_index.
24952
24953 2007-03-05  David Taylor  <dtaylor@emc.com>
24954
24955         * gcc.c: Correct copyright date in --version output.
24956
24957 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24958
24959         * pa.md: In unamed move patterns, disparge copies between general
24960         and floating point registers using '?' modifier.  Don't include 'f'
24961         constraint for register preferences in DImode, SImode, HImode and
24962         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
24963         Remove constraints for copies between general and floating registers
24964         in soft-float DFmode pattern.
24965         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
24966         floating register.
24967         (movsf): Likewise.
24968
24969 2007-03-05  Mike Stump  <mrs@apple.com>
24970
24971         * c-common.c (targetcm): Add.
24972         * c-opts.c (c_common_handle_option): Handle language specific
24973         target options.
24974         * opts.c (handle_option): Verify language for target options, if
24975         any are given.
24976         * opth-gen.awk: Add CL_LANG_ALL.
24977         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
24978         (TARGETCM_INITIALIZER): Add.
24979         * target.h (struct gcc_targetcm): Add.
24980         (targetcm): Add.
24981         * targhooks.c (default_handle_c_option): Add.
24982         * targhooks.h (default_handle_c_option): Add.
24983         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
24984
24985         * config/darwin.opt (iframework): Add.
24986         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
24987         * config/darwin-c.c (handle_c_option): Add.
24988         (TARGET_HANDLE_C_OPTION): Add.
24989         (targetcm): Add.
24990         * doc/invoke.texi (Darwin Options): Add -iframework.
24991
24992 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24993
24994         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
24995         conversion.
24996
24997 2007-03-05  Ian Lance Taylor  <iant@google.com>
24998
24999         * c.opt (fgnu89-inline): New option.
25000         * c-opts.c (c_common_post_options): Set default value for
25001         flag_gnu89_inline.
25002         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
25003         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
25004         inline functions.
25005         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
25006         (grokdeclarator, start_function): Likewise.
25007         * c-cppbuiltin.c (c_cpp_builtins): Define either
25008         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
25009         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
25010         (C Dialect Options): Document -fgnu89-inline.
25011         * doc/extend.texi (Function Attributes): Explain what the
25012         gnu_inline attribute does.
25013         * doc/cpp.texi (Common Predefined Macros): Document
25014         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
25015
25016 2007-03-05  Ian Lance Taylor  <iant@google.com>
25017
25018         PR tree-optimization/31034
25019         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
25020         half-range if the other side is an overflow infinity.
25021
25022 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
25023
25024         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
25025         (bfin*-linux-uclibc*): New configuration.
25026         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
25027         defining.
25028         * config/bfin/linux.h: New file.
25029         * config/bfin/libgcc-bfin.ver: New file.
25030         * config/bfin/t-bfin-uclinux: New file.
25031         * config/bfin/t-bfin-linux: New file.
25032         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
25033         (TARGET_OS_CPP_BUILTINS): New macro.
25034
25035 2007-03-05  Richard Guenther  <rguenther@suse.de>
25036
25037         * fold-const.c (fold_binary): Remove duplicate folding
25038         of comparison of non-null ADDR_EXPR against null.
25039
25040 2007-03-05  Richard Guenther  <rguenther@suse.de>
25041             Dorit Nuzman  <dorit@il.ibm.com>
25042
25043         PR tree-optimization/26420
25044         * tree-vectorizer.c (vectorize_loops): Bail out early if there
25045         are no loops in the function.  Only print the number of
25046         vectorized loops if it is greater than zero or we are supposed
25047         to print information about unvectorized loops.
25048
25049 2007-03-05  Revital Eres  <eres@il.ibm.com>
25050
25051         * gcc.dg/var-expand1.c: New test.
25052         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
25053         when an accumulator is expanded.
25054
25055 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25056
25057         PR other/30465
25058         * c-common.c (convert_and_check): Don't give warnings for
25059         conversion if 'expr' already overflowed.
25060
25061 2007-03-04  Roger Sayle  <roger@eyesopen.com>
25062
25063         PR middle-end/30744
25064         * fold-const.c (fold_comparison): Enforce type consistency when
25065         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
25066
25067 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
25068
25069         * tree-ssa-address.c (create_mem_ref): Do not put an expression
25070         containing a cast to the base of TARGET_MEM_REF.
25071
25072 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
25073
25074         * tree.c (tree_contains_struct_check_failed): Remove spurious
25075         whitespace from error message.
25076
25077 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
25078
25079         PR target/30406
25080         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
25081         instead of precision.
25082
25083 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
25084             Nathan Sidwell  <nathan@codesourcery.com>
25085
25086         * emit-rtl.c (find_auto_inc): New.
25087         (try_split): recreate REG_INC notes,
25088         Use regular for loops rather than whiles.
25089
25090 2007-03-03  Andreas Schwab  <schwab@suse.de>
25091
25092         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
25093         * configure: Regenerate.
25094
25095 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25096
25097         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
25098         flag_rounding_math, not flag_unsafe_math_optimizations.
25099
25100         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
25101         fold_build2.
25102         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
25103         alpha_fold_vector_minmax): Likewise.
25104         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
25105         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
25106
25107 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
25108
25109         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
25110         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
25111         if the lhs has side-effects.
25112         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
25113
25114 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
25115
25116         * config/i386/i386.h (TUNEMASK): Remove define.
25117         (ARCHMASK): Remove define.
25118         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
25119          Use ix86_arch_mask variable instead of ARCHMASK.
25120         * config/i386/i386.c (override_options): Ditto.
25121         (standard_80387_constant_p): Ditto.
25122
25123 2007-03-02  Ian Lance Taylor  <iant@google.com>
25124
25125         Used signed infinities in VRP.
25126         * tree-vrp.c (uses_overflow_infinity): New static function.
25127         (supports_overflow_infinity): New static function.
25128         (make_overflow_infinity): New static function.
25129         (negative_overflow_infinity): New static function.
25130         (positive_overflow_infinity): New static function.
25131         (is_negative_overflow_infinity): New static function.
25132         (is_positive_overflow_infinity): New static function.
25133         (is_overflow_infinity): New static function.
25134         (overflow_infinity_range_p): New static function.
25135         (compare_values_warnv): New function split out of compare_values.
25136         (compare_value): Call it.
25137         (set_value_range_to_nonnegative): Add overflow_infinity
25138         parameter.  Change caller.
25139         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
25140         Change callers.
25141         (vrp_expr_computes_nonzero): Likewise.
25142         (compare_ranges, compare_range_with_value): Likewise.
25143         (compare_name_with_value, compare_names): Likewise.
25144         (vrp_evaluate_conditional): Likewise.
25145         (set_value_range): Handle infinity
25146         (vrp_operand_equal_p, operand_less_p): Likewise.
25147         (extract_range_from_assert): Likewise.
25148         (vrp_int_const_binop): Likewise.
25149         (extract_range_from_binary_expr): Likewise.
25150         (extract_range_from_unary_expr): Likewise.
25151         (extract_range_from_comparison): Likewise.
25152         (extract_range_from_expr): Likewise.
25153         (dump_value_range): Likewise.
25154         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
25155         (test_for_singularity): Likewise.
25156         (vrp_int_const_binop): Remove inline qualifier.
25157         (adjust_range_with_scev): Add comment.
25158         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
25159
25160 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
25161
25162         * tree-ssa-structalias.c (could_have_pointers): Tidy.
25163         (get_constraint_for): Likewise.
25164         (do_structure_copy): Likewise.
25165         (find_func_aliases): Fix references to MODIFY_EXPR.
25166         (intra_create_variable_infos): Tidy.
25167         * tree-ssa-operands.c (add_virtual_operand): Add argument
25168         IS_CALL_SITE.
25169         When adding members of alias sets, if IS_CALL_SITE is true and
25170         the symbol is not call-clobbered, skip it.
25171         Adjust all callers.
25172
25173 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
25174
25175         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
25176         entry by means of emit_insn_at_entry.
25177
25178 2007-03-02  Richard Henderson  <rth@redhat.com>
25179
25180         * expr.h (promoted_input_arg): Remove decl.
25181         * function.c (promoted_input_arg): Merge into ...
25182         * combine.c (setup_incoming_promotions): ... only caller.
25183         Rearrange to avoid double loop.
25184
25185 2007-03-02  Ben Elliston  <bje@au.ibm.com>
25186             Peter Bergner  <bergner@vnet.ibm.com>
25187             Janis Johnson  <janis187@us.ibm.com>
25188
25189         * config/rs6000/dfp.md: New file.
25190         * config/rs6000/rs6000.md: Include dfp.md.
25191         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
25192         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
25193         and TDmode decimal float modes in FP registers.
25194         (num_insns_constant): Likewise.
25195         (rs6000_legitimate_offset_address_p): Likewise.
25196         (rs6000_legitimize_address): Likewise.
25197         (rs6000_legitimize_reload_address): Likewise.
25198         (rs6000_legitimate_address): Likewise.
25199         (rs6000_emit_move): Likewise.
25200         (function_arg_boundary): Likewise.
25201         (function_arg_advance): Likewise.
25202         (rs6000_darwin64_record_arg_recurse): Likewise.
25203         (function_arg): Likewise.
25204         (rs6000_gimplify_va_arg): Likewise.
25205         (rs6000_split_multireg_move): Likewise.
25206         (rs6000_output_function_epilogue): Likewise.
25207         (rs6000_output_function_epilogue): Likewise.
25208         (rs6000_register_move_cost): Likewise.
25209         (rs6000_function_value): Likewise.
25210         (rs6000_libcall_value): Likewise.
25211
25212 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
25213
25214         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
25215
25216 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
25217
25218         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
25219         Use $MULTIDIR to choose between the kernel and RTP headers,
25220         and use $WIND_BASE and $WIND_USR to locate them.
25221
25222 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
25223
25224         * config/i386/i386.c (override_options): Put initialization of
25225         ix86_tune_mask and ix86_arch_mask to the correct place.
25226
25227 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
25228             Michael Meissner  <michael.meissner@amd.com>
25229
25230         PR target/31019
25231         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
25232         (ARCHMASK): Define.
25233         (TARGET_CMOVE): Use ARCHMASK.
25234         (TARGET_CMPXCHG): Ditto.
25235         (TARGET_CMPXCHG8B): Ditto.
25236         (TARGET_XADD): Ditto.
25237         (TARGET_BSWAP): Ditto.
25238         * config/i386/i386.c (ix86_tune_mask): New global variable.
25239         (ix86_arch_mask): Ditto.
25240         (override_options): Initialize ix86_tune_mask and
25241         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
25242         target_flags.
25243
25244 2007-03-02  Ben Elliston  <bje@au.ibm.com>
25245
25246         PR 30992
25247         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
25248
25249 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
25250
25251         * target.h (init_dwarf_reg_sizes_extra): New target hook.
25252         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
25253         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
25254         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
25255         hook.
25256         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
25257         rs6000_init_dwarf_reg_sizes_extra): New.
25258         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
25259         SPE register high parts.
25260
25261 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
25262
25263         * Makefile.in: Add install-pdf target as
25264         copied from automake v1.10 rules.
25265         * configure.ac: Add install-pdf to target list.
25266         * configure: Regenerate.
25267
25268 2007-03-01  Paul Brook  <paul@codesourcery.com>
25269
25270         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
25271         modes to LDRD for DImode.
25272         (output_move_double): Fixup out of range ldrd/strd.
25273         (vfp_secondary_reload_class): Rename...
25274         (coproc_secondary_reload_class): ... to this.  Add wb argument.
25275         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
25276         coproc_secondary_reload_class for CLASS_IWMMXT.
25277         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
25278         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
25279
25280 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
25281
25282         * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the
25283         unroll factor by the estimated number of iterations.
25284         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
25285         than prefetch latency.
25286
25287         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
25288         decode_caches_intel, detect_caches_intel): New functions.
25289         (host_detect_local_cpu): Use detect_caches_amd and
25290         detect_caches_intel.
25291
25292 2007-03-01  Richard Henderson  <rth@redhat.com>
25293
25294         * expr.c (emit_move_complex_push): Export.
25295         (emit_move_complex_parts): Split out from ...
25296         (emit_move_complex): ... here.
25297         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
25298         * config/i386/i386.md (movcdi): New.
25299
25300 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
25301
25302         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
25303         size of mode1 to check for tieable modes in MMX case.
25304
25305 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
25306
25307         * Makefile.in (rtlanal.o): Depend on tree.h.
25308         * rtl.h (offset_within_section_p, split_const): Declare.
25309         * rtlanal.c: Include tree.h.
25310         (offset_within_block_p): New function, taken from
25311         mips_offset_within_object_p.
25312         (split_const): New function, taken from mips_split_const.
25313         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
25314         Declare.
25315         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
25316         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
25317         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
25318         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
25319         (m68k_illegitimate_symbolic_constant_p): New function.
25320         * config/m68k/m68k.md (movsi): Remove misleading predicates.
25321         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
25322         symbolic constant that might be outside the symbol's section,
25323         move the symbol first and then add the offset.
25324         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
25325         Override.
25326         * config/mips/mips.c (mips_split_const): Delete.
25327         (mips_offset_within_object_p): Delete.
25328         (mips_symbolic_constant_p): Use offset_within_section_p and
25329         split_const instead of mips_offset_within_object_p and
25330         mips_split_const.
25331         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
25332         (mips_legitimize_const_move, print_operand_reloc)
25333         (mips_dangerous_for_la25_p): Use split_const instead of
25334         mips_split_const.
25335
25336 2007-02-28  Eric Christopher  <echristo@apple.com>
25337
25338         * Makefile.in (install-include-dir): Don't rm -rf include.
25339
25340 2007-02-28  Richard Guenther  <rguenther@suse.de>
25341
25342         PR middle-end/30364
25343         * fold-const.c (fold_binary): Do not associate expressions
25344         with more than one variable for integer types that do not wrap.
25345
25346 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
25347
25348         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
25349         Delete, and replace with...
25350         (fold_builtin_call_array): This.  Update callers to use it.
25351         * fold-const.c (fold_build_call_list): Delete, and replace with...
25352         (fold_build_call_array): This.
25353         (fold_build_call_list_initializer): Delete, and replace with...
25354         (fold_build_call_array_initializer): This.
25355         * tree.h: Update declarations to reflect above changes.
25356
25357         * c-typeck.c (build_function_call): Store converted arguments
25358         in a stack-allocated array instead of building a list.
25359         (convert_arguments): Store arguments in the array passed in as an
25360         argument, and return the actual number of arguments.
25361         * c-format.c: (check_function_format): Pass arguments in an
25362         array instead of a list.
25363         * c-common.c (check_function_nonnull): Likewise.
25364         (check_function_sentinel): Likewise.
25365         (check_function_arguments): Likewise.
25366         * c-common.h: Update declarations to reflect above changes.
25367
25368 2007-02-28  Jan Hubicka  <jh@suse.cz>
25369
25370         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
25371         PRED_NEGATIVE_RETURN): Update outcomes.
25372
25373 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
25374
25375         * calls.c (emit_library_call_value_1): Handle partial registers
25376         correctly when building up CALL_INSN_FUNCTION_USAGE.
25377
25378 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25379
25380         * pa/predicates.md (move_src_operand): Allow zero for mode.
25381         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
25382         move pattern.
25383
25384 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
25385
25386         PR target/30970
25387         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
25388         *movv2df_internal): Enable pattern only for valid operand
25389         combinations.
25390         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
25391         tie only 128bit modes. For MMX registers, tie only 64bit modes.
25392
25393 2007-02-27  Mike Stump  <mrs@apple.com>
25394
25395         * config/darwin-crt3.c: Avoid compilation when compiling for a
25396         kext multilib.
25397
25398 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
25399
25400         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
25401         FIXED_INCLUDE_DIR.
25402         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
25403         for fixed headers and limits.h.
25404         (install-include-dir, install-headers-tar, install-headers-cpio,
25405         install-headers-cp, real-install-headers-tar,
25406         real-install-headers-cpio, real-install-headers-cp): Handle
25407         include-fixed as well as include.
25408         (install-mkheaders): Don't install files that go only in include
25409         not include-fixed.
25410         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
25411         from GCC_INCLUDE_DIR.
25412         * gcc.c (process_command): Remove special -BstageN/ handling.
25413         (do_spec_1): Add include-fixed directories.
25414
25415 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
25416
25417         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
25418         _smulsi3_highpart.
25419         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
25420         New functions.
25421         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
25422         patterns.
25423
25424 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
25425
25426         * c-common.c (get_priority): Add check for
25427         SUPPORTS_INIT_PRIORITY.
25428
25429 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
25430
25431         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
25432
25433         * config/bfin/bfin.c: Include "cfglayout.h".
25434         (MAX_LSETUP_DISTANCE): New macro.
25435         (struct loop_info): New members incoming, incoming_src and
25436         incoming_dest.  Delete member predecessor.
25437         (length_for_loop): New function.
25438         (bfin_optimize_loop): Handle more different loop structures.
25439         (bfin_discover_loop): Rework detection of predecessor blocks by
25440         examining incoming edges.
25441         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
25442         bfin_reorg_loops.
25443         (bfin_reorder_loops): New function.
25444         (bfin_reorg_loops): Use these three new functions.
25445
25446         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
25447         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
25448         (CONSTRAINT_LEN): Add entry for 'q'.
25449         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
25450         Add 'q' constraints.
25451         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
25452         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
25453
25454         * config/bfin/bfin.md (add_with_carry): New pattern.
25455         (s_or_u, su_optab, su_modifier): New code macros/attrs.
25456         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
25457         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
25458         support unsigned multiplies too.  Removed incorrect commutativity from
25459         operand 1 constraint where appropriate.
25460         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
25461         patterns.
25462         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
25463         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
25464         New patterns.
25465         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
25466         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
25467         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
25468         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
25469         usmulhisi_hh_huh): New patterns.
25470
25471         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
25472         lshifthi3): Fix output template to use half reg for operand 2.
25473
25474         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
25475         instead of R2.
25476
25477         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
25478
25479 2007-02-27  Andreas Schwab  <schwab@suse.de>
25480
25481         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
25482
25483 2007-02-27  Jan Hubicka  <jh@suse.cz>
25484
25485         * predict.c (last_basic_block_p): Remove.
25486         (tree_estimate_probability): Update return heuristic for commonized
25487         return blocks.
25488
25489 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
25490
25491         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
25492
25493 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
25494
25495         * doc/include/gcc-common.texi (versionsubtitle): New macro.
25496         * doc/cpp.texi: Standardize title page.
25497         * doc/cppinternals.texi: Likewise.
25498         * doc/gcc.texi: Standardize title page, remove version number
25499         from copyright page.
25500         * doc/gccint.texi: Likewise.
25501         * doc/install.texi: Standardize title page, add table of
25502         contents.
25503
25504 2007-02-26  Jan Hubicka  <jh@suse.cz>
25505
25506         * predict.def: Set outcomes according to more recent results.
25507         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
25508         Remove dead predictors.
25509         * predict.c (return_prediction): Fix pasto.
25510
25511 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
25512
25513         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
25514         change; avoid a memory leak when returning early.
25515
25516 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
25517
25518         * c-decl.c (static_ctors): Move to c-common.c.
25519         (static_dtors): Likewise.
25520         (finish_function): Use c_record_cdtor_fn.
25521         (build_cdtor): Move to c-common.c.
25522         (c_write_global_declarations): Use c_build_cdtor_fns.
25523         * c-common.h (static_ctors): Declare.
25524         (static_dtors): Likewise.
25525         (c_record_cdtor_fn): Likewise.
25526         (c_build_cdtor_fns): Likewise.
25527         * c-common.c (static_ctors): New variable.
25528         (static_dtors): Likewise.
25529         (c_record_cdtor_fn): New function.
25530         (build_cdtor): Move from c-decl.c
25531         (c_build_cdtor_fns): New function.
25532
25533         * output.h (assemble_addr_to_section): Declare.
25534         (get_cdtor_priority_section): Likewise.
25535         * varasm.c (assemble_addr_to_section): New function.
25536         (get_cdtor_priority_section): Likewise.
25537         (default_named_section_asm_out_destructor): Use them.
25538         (destor_dtor_section_asm_out_destructor): Likewise.
25539         (default_named_section_asm_out_constructor): Likewise.
25540         (default_ctor_section_asm_out_constructor): Likewise.
25541         * config.gcc (*-*-vxworks*): Include vxworks.o.
25542         * config/t-vxworks (vxworks.o): New target.
25543         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
25544         (TARGET_ASM_CONSTRUCTOR): Define.
25545         (TARGET_ASM_DESTRUCTOR): Likewise.
25546         (vxworks_asm_out_constructor): Declare.
25547         (vxworks_asm_out_destructor): Likewise.
25548
25549         * c-common.c (get_priority): Check that we have not just an
25550         INTEGER_CST, but an integer constant with integeral type.
25551
25552 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
25553
25554         PR tree-optimization/30938
25555         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
25556         use &dt[nargs-1] instead of &dt[nargs] in the call to
25557         vect_is_simple_use().
25558
25559 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
25560
25561         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
25562         from register elimination as PRE_MODIFY / POST_MODIFY increments.
25563         Do not attempt to handle MEM inside auto-inc expressions.
25564         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
25565         of a register modified by an auto-inc expression.  However, do handle
25566         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
25567         (elimination_effects): Prohibit elimination of a register modified
25568         by an auto-inc expression.  Disable register elimination rules whose
25569         target register is modified by an auto-inc expression with variable
25570         increment.
25571
25572 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
25573
25574         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
25575         off-by-one error.
25576         (array_at_struct_end_p): New function.
25577         (idx_infer_loop_bounds): Use it.
25578         (estimate_numbers_of_iterations_loop): Export.
25579         * predict.c (predict_loops): Use estimated_loop_iterations_int.
25580         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
25581         (tree_estimate_probability): Call record_loop_exits.
25582         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
25583         (estimated_loop_iterations, estimated_loop_iterations_int,
25584         estimated_loop_iterations_tree): New functions.
25585         (analyze_siv_subscript_cst_affine,
25586         compute_overlap_steps_for_affine_1_2,
25587         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
25588         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
25589         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
25590         (PRED_LOOP_ITERATIONS_GUESSED): New.
25591         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
25592         * cfgloop.h (estimate_numbers_of_iterations_loop,
25593         estimated_loop_iterations_int): Declare.
25594
25595 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
25596
25597         * doc/extend.texi: Document optional priority argument to
25598         constructors and destructors.
25599         * tree.c (init_priority_for_decl): Adjust GTY markers.
25600         (init_ttree): Use priority-info hash functions for
25601         init_priority_for_decl.
25602         (tree_map_eq): Rename to ...
25603         (tree_map_base_eq): ... this.
25604         (tree_map_marked_p): Rename to ...
25605         (tree_map_base_marked_p): ... this.
25606         (tree_map_base_hash): New function.
25607         (decl_init_priority_lookup): Rework.
25608         (decl_fini_priority_lookup): New function.
25609         (decl_priority_info): New function.
25610         (decl_init_priority_insert): Use it.
25611         (decl_fini_priority_insert): Likewise.
25612         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
25613         hierarchy.
25614         (decl_restrict_base_insert): Likewise.
25615         (decl_debug_expr_insert): Likewise.
25616         (decl_value_expr_lookup): Likewise.
25617         (decl_value_expr_insert): Likewise.
25618         * tree.h (priority_type): New type.
25619         (decl_init_priority_lookup): Use priority_type.
25620         (decl_fini_priority_lookup): New function.
25621         (decl_init_priority_insert): Use priority_type.
25622         (decl_fini_priority_insert): New function.
25623         (DECL_HAS_INIT_PRIORITY): Tweak comments.
25624         (DECL_INIT_PRIORITY): Likewise.
25625         (SET_DECL_INIT_PRIORITY): Add comment.
25626         (DECL_FINI_PRIORITY): New macro.
25627         (SET_DECL_FINI_PRIORITY): Likewise.
25628         (DEFAULT_INIT_PRIORITY): Document.
25629         (MAX_INIT_PRIORITY): Likewise.
25630         (MAX_RESERVED_INIT_PRIORITY): Likewise.
25631         (tree_map_base): New type.
25632         (tree_map_base_eq): New function.
25633         (tree_map_base_hash): Likewise.
25634         (tree_map_base_marked_p): Likewise.
25635         (tree_map): Inherit from tree_map_base.
25636         (tree_map_eq): Make it a macro.
25637         (tree_map_marked_p): Likewise.
25638         (tree_int_map): Inherit from tree_map_base.
25639         (tree_int_map_eq): Make it a macro.
25640         (tree_int_map_hash): Likewise.
25641         (tree_int_map_marked_p): Likewise.
25642         (tree_priority_map): New type.
25643         (tree_priority_map_eq): New macro.
25644         (tree_priority_map_hash): Likewise.
25645         (tree_priority_map_marked_p): Likewise.
25646         * varasm.c (emults_decl): Adjust for refactoring of tree_map
25647         hierarchy.
25648         (emutls_common_1): Likewise.
25649         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
25650         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
25651         of tree_map hierarchy.
25652         * tree-cfg.c (move_stmt_r): Likewise.
25653         (new_label_mapper): Likewise.
25654         * c-tree.h (c_expand_body): Move to ...
25655         * c-common.h (c_expand_body): ... here.
25656         * c-decl.c (c_expand_body): Move to ...
25657         * c-common.c (c_expand_body): ... here.
25658         (c_common_attribute_table): Allow 1 argument for the constructor
25659         and destructor attributes.
25660         (get_priority): New function.
25661         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
25662         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
25663
25664 2007-02-24  Jan Hubicka  <jh@suse.cz>
25665
25666         PR middle-end/30509
25667         * tree-inline.c (copy_bb): Produce exact copy of EH info when
25668         copying for inlining.
25669
25670 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
25671             Jan Hubicka  <jh@suse.cz>
25672
25673         PR target/30778
25674         * i386.c (counter_mode): New function.
25675         (expand_set_or_movmem_via_loop): Use it.
25676         (expand_movmem_epilogue): Likewise; fix pasto.
25677         (ix86_expand_movmem): Do emit guard even for constant counts.
25678         (ix86_expand_setmem): Likewise.
25679
25680 2007-02-25  Nick Clifton  <nickc@redhat.com>
25681
25682         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
25683         (JUMP_TABLES_IN_TEXT_SECTION): Define.
25684
25685 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
25686
25687         PR target/30770
25688         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
25689         count argument with 0x10, not with 0x16.
25690         (expand_setmem_epilogue): Ditto.
25691
25692 2007-02-24  Mike Stump  <mrs@apple.com>
25693
25694         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
25695         symbols.
25696
25697 2007-02-24  Richard Guenther  <rguenther@suse.de>
25698
25699         PR middle-end/30951
25700         * fold-const.c (fold_binary): Fold x +- CST op x for
25701         EQ_EXPR and NE_EXPR.
25702
25703 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25704
25705         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
25706
25707 2007-02-24  Jan Hubicka  <jh@suse.cz>
25708
25709         * cgraphunit.c (decide_is_function_needed): Honor
25710         -fkeep-inline-functions.
25711
25712 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25713
25714         * builtins.c (fold_builtin_modf): New.
25715         (fold_builtin_2): Use it.
25716
25717 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25718
25719         * loop-iv.c (implies_p): Detect additional cases where A implies B.
25720         (determine_max_iter): Take additional LOOP arg; all callers changed.
25721         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
25722         one using simplifications.
25723         (simplify_using_initial_values): Return if the expression becomes
25724         invalid due to altered regs.
25725
25726 2007-02-23  DJ Delorie  <dj@redhat.com>
25727
25728         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
25729
25730 2007-02-23  Mike Stump  <mrs@apple.com>
25731
25732         * tlink.c (scan_linker_output): Parse linker messages from
25733         darwin9's linker better.
25734
25735 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
25736
25737         PR debug/29614
25738         * varpool.c (varpool_assemble_pending_decls): Set
25739         varpool_last_needed_node to null.
25740
25741 2007-02-23  DJ Delorie  <dj@redhat.com>
25742
25743         * config/i386/i386.c (ix86_data_alignment): Don't specify an
25744         alignment bigger than the object file can handle.
25745
25746 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
25747
25748         PR target/30825
25749         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
25750         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
25751         (*movsf_1): Penalize MMX moves.
25752
25753 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
25754
25755         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
25756         2^32-1 or more times unless flag_unsafe_loop_optimizations.
25757
25758         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
25759
25760 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25761
25762         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
25763         (fold_builtin_1): Use them.
25764         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
25765         BUILT_IN_SIGNIFICAND.
25766
25767 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
25768
25769         * config/i386/i386.c (bdesc_1arg): Initialize
25770         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
25771         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
25772         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
25773         and IX86_BUILTIN_MOVSLDUP.
25774
25775 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
25776
25777         PR rtl-optimization/30841
25778         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
25779
25780 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25781
25782         * builtins.c (fold_builtin_frexp): New.
25783         (fold_builtin_2): Use it.
25784
25785 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
25786
25787         * doc/invoke.texi (Spec Files): Document getenv spec function.
25788
25789         * gcc.c (getenv_spec_function): New function.
25790         (static_spec_functions): Add it.
25791         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
25792         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
25793         header files.
25794
25795 2007-02-22  Michael Matz  <matz@suse.de
25796
25797         PR c++/29433
25798         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
25799         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
25800
25801 2007-02-22  Ian Lance Taylor  <iant@google.com>
25802
25803         PR debug/30898
25804         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
25805         (mem_loc_descriptor): Call it.
25806
25807 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
25808             Ira Rosen  <irar@il.ibm.com>
25809
25810         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
25811
25812 2007-02-22  Ira Rosen  <irar@il.ibm.com>
25813
25814         PR tree-optimization/30843
25815         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
25816         stores only after all the group is vectorized.
25817
25818 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
25819
25820         PR tree-optimization/30858
25821         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
25822         in the reduction cycle have a single use in the loop.
25823         * tree-vectorizer.h (relevant): Add documentation.
25824
25825 2007-02-20  Mike Stump  <mrs@apple.com>
25826
25827         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
25828         * configure: Regenerate.
25829
25830 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
25831
25832         Change the defaults of some parameters and options.
25833         * config/spu/spu-protos.h (spu_optimization_options): Declare.
25834         * config/spu/spu.c (spu_optimization_options): Add.
25835         (spu_override_options): Change params in spu_optimization_options.
25836         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
25837
25838         Register 127 is only 16 byte aligned when used as a frame pointer.
25839         * config/spu/spu-protos.h (spu_init_expanders): Declare.
25840         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
25841         HARD_FRAME_POINTER_REGNUM.
25842         (spu_legitimate_address): Use regno_aligned_for_reload.
25843         (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
25844         aligned when frame_pointer_needed is true.
25845         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
25846         to 8 bits.
25847         * config/spu/spu.h (INIT_EXPANDERS): Define.
25848
25849         Make sure shift and rotate instructions have valid immediate operands.
25850         * config/spu/predicates.md (spu_shift_operand): Remove.
25851         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
25852         * config/spu/constraints.md (W, O): Extend range.
25853         * config/spu/spu.md (umask, nmask): Define.
25854         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
25855         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
25856         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
25857         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
25858         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
25859         (lshr<mode>3_reg): Fix rtl description.
25860
25861         Make sure mulhisi immediate operands are valid.
25862         * config/spu/predicates.md (imm_K_operand): Add.
25863         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
25864
25865         Generate constants using fsmbi and andi.
25866         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
25867         (print_operand, spu_split_immediate, classify_immediate,
25868         fsmbi_const_p): Handle IC_FSMBI2.
25869
25870         Correctly handle a CONST_VECTOR containing symbols.
25871         * config/spu/spu.c (print_operand): Handle HIGH correctly.
25872         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
25873         (immediate_load_p): Allow symbols that use 2 instructions to create.
25874         (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
25875         with symbols when flag_pic is set.
25876         (const_vector_immediate_p): New.
25877         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
25878         accept a CONST_VECTOR with symbols.
25879         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
25880         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
25881         correctly.
25882         * config/spu/spu.md (high, low): Delete.
25883         (low_<mode>): Define.
25884
25885         Remove INTRmode and INTR_REGNUM, which didn't work.
25886         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
25887         of INTR_REGNUM.
25888         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
25889         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
25890         peephole2 pattern): Don't use INTR or 131.
25891         (movintrcc): Delete.
25892         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
25893         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
25894         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
25895         (UNSPEC_SET_INTR): Add.
25896         * config/spu/spu-modes.def (INTR): Remove.
25897
25898         More accurate warnings about run-time relocations.
25899         * config/spu/spu.c (reloc_diagnostic): Test in_section.
25900
25901         Correctly warn about immediate arguments to specific intrinsics.
25902         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
25903         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
25904         the instruction predicate.
25905
25906         Fix tree check errors with latest update.
25907         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
25908         CALL_EXPR_ARG.
25909         (spu_expand_builtin): Use CALL_EXPR_FN.
25910
25911         Add missing specific intrinsics.
25912         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
25913         si_bislede.
25914         * config/spu/spu_internals.h: Ditto.
25915
25916         Fix incorrect operand modifiers.
25917         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
25918         * config/spu/spu.md (xor<mode>3): Change %S to %J.
25919
25920         Optimize one case of zero_extend of a vec_select.
25921         * config/spu/spu.md (_vec_extractv8hi_ze): Add.
25922
25923         Accept any immediate for hbr.
25924         * config/spu/spu.md (hbr): Change s constraints to i.
25925
25926 2007-02-21  Paul Brook  <paul@codesourcery.com>
25927
25928         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
25929         condexec_count when skipping USE and CLOBBER.
25930
25931 2007-02-21  Nick Clifton  <nickc@redhat.com>
25932
25933         * common.opt (Warray-bounds): Add Warning attribute.
25934         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
25935         Likewise.
25936         (fsized-zeroes): Add Optimization attribute.
25937         (fsplit-wide-types, ftree-scev-cprop): Likewise.
25938         * c.opt (Wc++0x-compat): Add Warning attribute.
25939
25940 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
25941
25942         PR middle-end/30761
25943         * reload1.c (eliminate_regs_in_insn): In the single_set special
25944         case, attempt to re-recognize the insn before falling back to
25945         having reload fix it up.
25946
25947 2007-02-20  Eric Christopher  <echristo@gmail.com>
25948
25949         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
25950         Rewrite accordingly.
25951         (frv_read_iacc_argument): Ditto.
25952         (frv_expand_set_builtin): Take a call instead of arglist, update for
25953         above changes.
25954         (frv_expand_unop_builtin): Ditto.
25955         (frv_expand_binop_builtin): Ditto.
25956         (frv_expand_cut_builtin): Ditto.
25957         (frv_expand_binopimm_builtin): Ditto.
25958         (frv_expand_voidbinop_builtin): Ditto.
25959         (frv_expand_int_void2arg): Ditto.
25960         (frv_expand_prefetches): Ditto.
25961         (frv_expand_voidtriop_builtin): Ditto.
25962         (frv_expand_voidaccop_builtin): Ditto.
25963         (frv_expand_load_builtin): Ditto.
25964         (frv_expand_store_builtin): Ditto.
25965         (frv_expand_mdpackh_builtin): Ditto.
25966         (frv_expand_mclracc_builtin): Ditto.
25967         (frv_expand_mrdacc_builtin): Ditto.
25968         (frv_expand_mwtacc_builtin): Ditto.
25969         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
25970         calls for above.
25971
25972 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
25973
25974         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
25975         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
25976         cmpb instruction.
25977         (HAVE_GAS_DFP): Check for assembler support of decimal floating
25978         point instructions.
25979         * configure: Regenerate.
25980         * config.in: Regenerate.
25981         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
25982         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
25983         masks to power6 and power6x and to POWERPC_MASKS.
25984         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
25985         _ARCH_PWR6.
25986         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
25987         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
25988         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
25989         Access PROTOTYPE as variable, not mask.
25990
25991 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
25992
25993         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
25994         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
25995         * combine.c (adjust_for_new_dest): Use it.
25996         * postreload.c (reload_combine): Likewise.
25997
25998 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
25999
26000         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
26001         notes on an insn with multiple sets, even if single_set returns
26002         non-NULL for that insn.
26003
26004 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26005
26006         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
26007         scalbn and scalbln.
26008
26009 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
26010
26011         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
26012         if user didn't pass it.
26013         * config/i386/darwin.h (CC1_SPEC): Likewise.
26014         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
26015         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
26016         -mmacosx-version-min.
26017
26018 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26019             Uros Bizjak  <ubizjak@gmail.com>
26020
26021         * optabs.h (enum optab_index): Add new OTI_scalb.
26022         (scalb_optab): Define corresponding macro.
26023         * optabs.c (init_optabs): Initialize scalb_optab.
26024         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
26025         patterns.
26026         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
26027         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
26028         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
26029         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
26030         flag_unsafe_math_optimizations is set.
26031
26032         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
26033         to implement scalbf, scalb and scalbl built-ins as inline x87
26034         intrinsics.
26035
26036 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26037             DJ Delorie <dj@redhat.com>
26038
26039         PR other/30824
26040         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
26041         (diagnostic_report_diagnostic): ... here, and turn them into real
26042         errors. If warnings are inhibited, no need to do anything.
26043
26044 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
26045
26046         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
26047         better code generation.
26048
26049 2007-02-20  Ben Elliston  <bje@au.ibm.com>
26050
26051         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
26052
26053 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
26054
26055         * config/alpha/alpha.c, config/alpha/alpha.md,
26056         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
26057         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
26058         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
26059         config/arm/lib1funcs.asm: Follow spelling conventions.
26060
26061         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
26062         config/fr30/fr30.md, config/i386/i386.h,
26063         config/iq2000/iq2000.h, config/iq2000/predicates.md,
26064         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
26065         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
26066         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
26067         config/rs6000/altivec.md, config/rs6000/rs6000.c,
26068         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
26069         config/sparc/sparc.c, config/sparc/sparc.h,
26070         config/sparc/sparc.md, config/spu/constraints.md,
26071         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
26072         conventions.
26073
26074 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
26075
26076         PR target/29943
26077         * varasm.c (use_blocks_for_decl_p): Return false for decls with
26078         alias attribute.
26079
26080 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
26081
26082         * doc/invoke.texi (-ftree-lrs): Remove.
26083
26084 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
26085
26086         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
26087         NULL.
26088
26089 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
26090
26091         * config/ia64/ia64.c (ia64_expand_builtin): Use the
26092         new CALL_EXPR_FN macro for retrieving the function
26093         declaration of the input expression.
26094
26095 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26096
26097         * c.opt (Waddress): New.
26098         * common.opt (Walways-true): Delete.
26099         (Wstring-literal-comparison): Delete.
26100         * doc/invoke.texi (Warning Options): Delete -Walways-true and
26101         -Wstring-literal-comparison. Add -Waddress.
26102         (Waddress): New.
26103         (Walways-true): Delete.
26104         (Wstring-literal-comparison): Delete.
26105         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
26106         consistently instead of -Walways-true in example.
26107         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
26108         * c-typeck.c (parser_build_binary_op): Replace
26109         -Wstring-literal-comparison and -Walways-true with -Waddress.
26110         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
26111         with -Waddress.
26112
26113 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
26114
26115         * tree-cfg.c (dump_function_to_file): Be prepared for functions
26116         without DECL_STRUCT_FUNCTION initialized.
26117
26118 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
26119
26120         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
26121         due to calls to functions taking pointers as parameters.
26122
26123 2007-02-19  Richard Henderson  <rth@redhat.com>
26124
26125         PR debug/29558
26126         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
26127         in memory.
26128
26129 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
26130
26131         * config/s390/s390.c (s390_call_saved_register_used,
26132         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
26133         accessed to the new scheme.
26134
26135 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
26136
26137         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
26138         (cris_print_index, cris_print_operand, cris_print_operand_address)
26139         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
26140         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
26141         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
26142         GET_CODE () == xxx.
26143         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
26144         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
26145         GO_IF_LEGITIMATE_ADDRESS): Ditto.
26146         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
26147         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
26148         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
26149         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
26150         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
26151         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
26152         (uminsi3, call, call_value): Ditto.
26153         (define_split: indir_to_reg_split, unnamed): Ditto.
26154
26155 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
26156
26157         PR tree-optimization/30975
26158         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
26159         wrong assert.
26160
26161 2007-02-18  Eric Christopher  <echristo@gmail.com>
26162
26163         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
26164         Remove use of arglist.
26165         (mips_expand_builtin): Remove use of arglist, pass in expr.
26166         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
26167         (mips_expand_builtin_movtf): Ditto.
26168         (mips_expand_builtin_compare): Ditto.
26169
26170 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
26171
26172         * tree-sra.c (sra_build_assignment): Replace assertion
26173         checking with a comment explaining why it can't be done.
26174
26175 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
26176
26177         PR middle-end/30833
26178         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
26179         during CALL_EXPR representation conversion.
26180         * tree-ssa-propagate.c (set_rhs): Likewise.
26181
26182 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
26183
26184         * tree-sra.c (sra_build_assignment): Disable assertion checking
26185         for now.
26186
26187 2007-02-18  Roger Sayle  <roger@eyesopen.com>
26188
26189         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
26190         instead of calling build2 with a GIMPLE_MODIFY_STMT.
26191         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
26192         Likewise.
26193         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
26194         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
26195         gimplify_init_ctor_eval_range, gimple_push_cleanup,
26196         gimplify_omp_for, gimplify_omp_atomic_pipeline,
26197         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
26198         force_gimple_operand): Likewise.
26199         * ipa-cp.c (constant_val_insert): Likewise.
26200         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
26201         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
26202         perfect_nestify): Likewise.
26203         * langhooks.c (lhd_omp_assignment): Likewise.
26204         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
26205         lower_copyprivate_clauses, lower_send_clauses,
26206         lower_send_shared_vars, expand_parallel_call,
26207         expand_omp_for_generic, expand_omp_for_static_nochunk,
26208         expand_omp_for_static_chunk, expand_omp_sections,
26209         lower_omp_single_copy, lower_omp_for_lastprivate,
26210         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
26211         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
26212         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
26213         Likewise.
26214
26215 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
26216
26217         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
26218         config/sh/sh.md: Follow spelling conventions.
26219
26220         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
26221         config/frv/predicates.md: Follow spelling conventions.
26222
26223         * config/m68k/linux-unwind.h: Fix a comment typo.
26224         * target.h: Follow spelling conventions.
26225
26226 2007-02-18  Roger Sayle  <roger@eyesopen.com>
26227
26228         PR rtl-optimization/28173
26229         * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
26230         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
26231         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
26232         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
26233         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
26234
26235 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26236
26237         * builtins.c (fold_builtin_load_exponent): New.
26238         (fold_builtin_2): Use it.
26239
26240 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
26241
26242         PR rtl-optimization/30773
26243         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
26244         if we fail to attach a REG_EQUIV note.
26245
26246 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
26247             Roger Sayle  <roger@eyesopen.com>
26248
26249         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
26250
26251 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
26252
26253         * calls.c (initialize_argument_information): Pass original EXP
26254         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
26255         code to split complex arguments here, as part of initializing the
26256         ARGS array.
26257         (expand_call): Remove code that builds a list of arguments and
26258         inserts implicit arguments into it.  Instead, just count how many
26259         implicit arguments there will be so we can determine the size of
26260         the ARGS array, and let initialize_argument_information do the work.
26261         (split_complex_values): Delete unused function.
26262
26263 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
26264
26265         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
26266
26267 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
26268
26269         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
26270         for arg pointer based indexed addressing.
26271
26272 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
26273
26274         * config/ia64/ia64.h, config/ia64/ia64.md,
26275         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
26276         spelling conventions.
26277
26278 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
26279
26280         * config/m68k/m68k.c (split_di): New.
26281         * config/m68k/m68k-protos.h: Declare split_di.
26282         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
26283           Improve predicate handling and split constant shifts.
26284
26285 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
26286
26287         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
26288         parameter for register bitfield operations, general predicates
26289         cleanup
26290
26291 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
26292
26293         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
26294         * config/m68k/linux-unwind.h: New file.
26295
26296 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
26297
26298         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
26299         config/i386/athlon.md, config/ia64/ia64.md,
26300         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
26301         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
26302         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
26303         tree-ssa-loop-niter.c, tree-vect-analyze.c,
26304         tree-vect-transform.c: Fix comment typos.
26305
26306 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
26307
26308         * sched-deps.c (find_insn_list): Remove.
26309         * sched-int.h: Remove the prototype for find_insn_list.
26310
26311 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
26312
26313         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
26314         to linker.
26315         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
26316         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
26317         darwin_rs6000_override_options.
26318         (C_COMMON_OVERRIDE_OPTIONS): Expect
26319         darwin_macosx_version_min to be non-NULL always.
26320         (TARGET_C99_FUNCTIONS): Likewise.
26321         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
26322         (DARWIN_MINVERSION_SPEC): New.
26323         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
26324         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
26325         to cc1*.
26326         (DARWIN_MINVERSION_SPEC): New.
26327         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
26328         value.
26329         * config/darwin-c.c (darwin_cpp_builtins): Expect
26330         darwin_macosx_version_min to be non-NULL always.
26331
26332         * config/rs6000/rs6000.c: Clean up trailing whitespace.
26333
26334 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
26335
26336         * config/i386/i386.h (x86_use_xchgb): New.
26337         (TARGET_USE_XCHGB): New macro.
26338         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
26339         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
26340         Split after reload into bswaphi for shifts of 8.
26341         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
26342         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
26343         or when optimizing for size.
26344
26345 2007-02-16  Richard Guenther  <rguenther@suse.de>
26346             Christian Bruel  <christian.bruel@st.com>
26347
26348         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
26349         DECLs but prefer SSA_NAMEs over DECLs.
26350
26351 2007-02-16  Richard Guenther  <rguenther@suse.de>
26352
26353         * tree-flow-inline.h (single_imm_use_p): Remove.
26354         (zero_imm_uses_p): Likewise.
26355         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
26356         instead of single_imm_use_p.
26357         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
26358         zero_imm_uses_p.
26359
26360 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26361
26362         PR other/27843
26363         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
26364         nested double- and backquotes.
26365
26366 2007-02-15  Roger Sayle  <roger@eyesopen.com>
26367
26368         PR middle-end/30391
26369         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
26370         should be unreachable.
26371         (build2_stat): Allow construction of MODIFY_EXPR at any time.
26372         For the time being redirect GIMPLE_MODIFY_STMT to the new
26373         (renamed) build_gimple_modify_stmt_stat.
26374         (build2_gimple_stat): Rename to...
26375         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
26376         Always build a GIMPLE_MODIFY_STMT node.
26377         * tree.h (build2_gimple, build2_gimple_stat): Delete.
26378         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
26379         declarations.
26380
26381         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
26382         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
26383         * tree-complex.c (set_component_ssa_name, expand_complex_move,
26384         expand_complex_div_wide): Likewise.
26385         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
26386         * tree-ssa-loop-im.c (schedule_sm): Likewise.
26387         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
26388         * tree-ssa-loop-manip.c (create_iv): Likewise.
26389         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
26390         abs_replacement): Likewise.
26391         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
26392         realify_fake_stores): Likewise.
26393
26394         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
26395         node rather than a GIMPLE_MODIFY_STMT node.
26396         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
26397         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
26398         Likewise.
26399         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
26400         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
26401         GIMPLE_MODIFY_STMT.
26402
26403 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26404
26405         PR middle-end/30433
26406         * fold-const.c (fold_comparison): Add back the
26407         folding of constant complex comparisions.
26408
26409 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26410
26411         PR middle-end/30729
26412         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
26413         effects unknown to this function, return early.
26414
26415 2007-02-15  Ian Lance Taylor  <iant@google.com>
26416
26417         * lower-subreg.c (move_eh_region_note): New static function.
26418         (resolve_simple_move): Call it.
26419         (decompose_multiword_subregs): Track blocks for which we resolve a
26420         simple move which is also a control flow insn.  Pass them to
26421         find_many_sub_basic_blocks.
26422         (pass_lower_subreg): Add TODO_verify_flow.
26423         (pass_lower_subreg2): Likewise.
26424
26425 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26426             Brooks Moses  <brooks.moses@codesourcery.com>
26427             Lee Millward  <lee.millward@codesourcery.com>
26428
26429         * tree.h (enum tree_code_class): Add tcc_vl_exp.
26430         (VL_EXP_CLASS_P): New.
26431         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
26432         TREE_CODE_LENGTH.
26433         (TREE_OPERAND_CHECK_CODE): Likewise.
26434         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
26435         (TREE_RTL_OPERAND_CHECK): Likewise.
26436         (tree_operand_check_failed): Make second parameter the whole tree
26437         instead of its code.  Fixed callers.
26438         (VL_EXP_CHECK): New.
26439         (TREE_OPERAND_LENGTH): New.
26440         (VL_EXP_OPERAND_LENGTH): New.
26441         (CALL_EXPR_FN): New.
26442         (CALL_EXPR_STATIC_CHAIN): New.
26443         (CALL_EXPR_ARGS): New.
26444         (CALL_EXPR_ARG): New.
26445         (call_expr_nargs): New.
26446         (CALL_EXPR_ARGP): New.
26447         (build_nt_call_list): Declare.
26448         (build_vl_exp_stat): Declare.
26449         (build_vl_exp): New.
26450         (build_call_list): Declare.
26451         (build_call_nary): Declare.
26452         (build_call_valist): Declare.
26453         (build_call_array): Declare.
26454         (call_expr_arg): Declare.
26455         (call_expr_argp): Declare.
26456         (call_expr_arglist): Declare.
26457         (fold_build_call_list): Declare.
26458         (fold_build_call_list_initializer): Declare.
26459         (fold_call_expr): Declare to replace fold_builtin.
26460         (fold_builtin_fputs): Update to agree with modified definition.
26461         (fold_builtin_strcpy): Likewise.
26462         (fold_builtin_strncpy): Likewise.
26463         (fold_builtin_memory_chk): Likewise.
26464         (fold_builtin_stxcpy_chk): Likewise.
26465         (fold_builtin_strncpy_chk): Likewise.
26466         (fold_builtin_next_arg): Likewise.
26467         (fold_build_call_expr): Declare.
26468         (fold_builtin_call_list): Declare.
26469         (fold_builtin_call_valist): Declare.
26470         (build_call_expr): Declare.
26471         (validate_arglist): Update to agree with modified definition.
26472         (tree_operand_length): New.
26473         (call_expr_arg_iterator): New.
26474         (init_call_expr_arg_iterator): New.
26475         (next_call_expr_arg): New.
26476         (first_call_expr_arg): New.
26477         (more_call_expr_args_p): New.
26478         (FOR_EACH_CALL_EXPR_ARG): New.
26479
26480         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
26481         and tcc_gimple_stmt.
26482         (tree_code_size): Update documentation.  Use sizeof (tree) rather
26483         than sizeof (char *).
26484         (tree_size): Likewise.  Add case for tcc_vl_exp.
26485         (tree_node_structure): Add case for tcc_vl_exp.
26486         (contains_placeholder_p): Likewise.
26487         (substitute_in_expr): Likewise.
26488         (substitute_placeholder_in_expr): Likewise.
26489         (stabilize_reference_1): Likewise.
26490         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
26491         to diagnose breakage of this interface for constructing CALL_EXPRs.
26492         (build_nt): Add similar assertion here.
26493         (build_nt_call_list): New.
26494         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
26495         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
26496         TREE_CODE_LENGTH.
26497         (get_callee_fndecl): Use new CALL_EXPR accessors.
26498         (tree_operand_check_failed): Change parameters to pass entire node
26499         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
26500         (process_call_operands): New.
26501         (build_vl_exp_stat): New.
26502         (build_call_list): New.
26503         (build_call_nary): New.
26504         (build_call_valist): New.
26505         (build_call_array): New.
26506         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26507         (call_expr_arglist): New.
26508
26509         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
26510         tcc_vl_exp instead of a fixed-size tcc_expression.
26511
26512         * doc/c-tree.texi (CALL_EXPR): Document new representation and
26513         accessors for CALL_EXPRs.
26514         (AGGR_INIT_EXPR): Likewise.
26515
26516 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26517             Brooks Moses  <brooks.moses@codesourcery.com>
26518             Lee Millward  <lee.millward@codesourcery.com>
26519
26520         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
26521         (expand_builtin_nonlocal_goto): Change parameter to be entire
26522         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
26523         (expand_builtin_prefetch): Likewise.
26524         (expand_builtin_classify_type): Likewise.
26525         (mathfn_built_in): Return NULL_TREE instead of 0.
26526         (expand_errno_check): Use new CALL_EXPR accessors.
26527         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
26528         Return NULL_RTX instead of 0.
26529         (expand_builtin_mathfn_2): Likewise.
26530         (expand_builtin_mathfn_3): Likewise.
26531         (expand_builtin_interclass_mathfn): Likewise.
26532         (expand_builtin_sincos): Likewise.
26533         (expand_builtin_cexpi): Likewise.
26534         (expand_builtin_int_roundingfn): Likewise.
26535         (expand_builtin_int_roundingfn_2): Likewise.
26536         (expand_builtin_pow): Likewise.
26537         (expand_builtin_powi): Likewise.
26538         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
26539         of arglist, fixing callers appropriately.  Use new CALL_EXPR
26540         accessors and constructors.  Return NULL_RTX instead of 0.
26541         (expand_builtin_strstr): Likewise.
26542         (expand_builtin_strchr): Likewise.
26543         (expand_builtin_strrchr): Likewise.
26544         (expand_builtin_strpbrk): Likewise.
26545         (expand_builtin_memcpy): Likewise.
26546         (expand_builtin_mempcpy): Likewise.
26547         (expand_builtin_mempcpy_args): New.
26548         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
26549         (expand_builtin_memmove_args): New.
26550         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
26551         (expand_movstr): Likewise.
26552         (expand_builtin_strcpy): Likewise.
26553         (expand_builtin_strcpy_args): New.
26554         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
26555         (expand_builtin_strncpy): Likewise.
26556         (expand_builtin_memset): Likewise.
26557         (expand_builtin_memset_args): New.
26558         (expand_builtin_bzero): Similarly to expand_builtin_memset.
26559         (expand_builtin_memcmp): Likewise.
26560         (expand_builtin_strcmp): Likewise.
26561         (expand_builtin_strncmp): Likewise.
26562         (expand_builtin_strcat): Likewise.
26563         (expand_builtin_strncat): Likewise.
26564         (expand_builtin_strspn): Likewise.
26565         (expand_builtin_strcspn): Likewise.
26566         (expand_builtin_args_info): Likewise.
26567         (expand_builtin_va_start): Likewise.
26568         (gimplify_va_arg_expr): Likewise.
26569         (expand_builtin_va_end): Likewise.
26570         (expand_builtin_va_copy): Likewise.
26571         (expand_builtin_frame_address): Likewise.
26572         (expand_builtin_alloca): Likewise.
26573         (expand_builtin_bswap): Likewise.
26574         (expand_builtin_unop): Likewise.
26575         (expand_builtin_fputs): Likewise.
26576         (expand_builtin_expect): Likewise.
26577         (expand_builtin_fabs): Likewise.
26578         (expand_builtin_copysign): Likewise.
26579         (expand_builtin_printf): Likewise.
26580         (expand_builtin_fprintf): Likewise.
26581         (expand_builtin_sprintf): Likewise.
26582         (expand_builtin_init_trampoline): Likewise.
26583         (expand_builtin_signbit): Likewise.
26584         (expand_builtin_fork_or_exec): Likewise.
26585         (expand_builtin_sync_operation): Likewise.
26586         (expand_builtin_compare_and_swap): Likewise.
26587         (expand_builtin_lock_test_and_set): Likewise.
26588         (expand_builtin_lock_release): Likewise.
26589         (expand_builtin): Likewise.
26590         (builtin_mathfn_code): Likewise.
26591
26592         (fold_builtin_constant_p): Pass call arguments individually instead
26593         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
26594         accessors and constructors.  Return NULL_TREE instead of 0.
26595         (fold_builtin_expect): Likewise.
26596         (fold_builtin_classify_type): Likewise.
26597         (fold_builtin_strlen): Likewise.
26598         (fold_builtin_nan): Likewise.
26599         (integer_valued_real_p): Likewise.
26600         (fold_trunc_transparent_mathfn): Likewise.
26601         (fold_fixed_mathfn): Likewise.
26602         (fold_builtin_cabs): Likewise.
26603         (fold_builtin_sqrt): Likewise.
26604         (fold_builtin_cbrt): Likewise.
26605         (fold_builtin_cos): Likewise.
26606         (fold_builtin_cosh): Likewise.
26607         (fold_builtin_tan): Likewise.
26608         (fold_builtin_sincos): Likewise.
26609         (fold_builtin_cexp): Likewise.
26610         (fold_builtin_trunc): Likewise.
26611         (fold_builtin_floor): Likewise.
26612         (fold_builtin_ceil): Likewise.
26613         (fold_builtin_round): Likewise.
26614         (fold_builtin_int_roundingfn): Likewise.
26615         (fold_builtin_bitop): Likewise.
26616         (fold_builtin_bswap): Likewise.
26617         (fold_builtin_logarithm): Likewise.
26618         (fold_builtin_hypot): Likewise.
26619         (fold_builtin_pow): Likewise.
26620         (fold_builtin_powi): Likewise.
26621         (fold_builtin_exponent): Likewise.
26622         (fold_builtin_memset): Likewise.
26623         (fold_builtin_bzero): Likewise.
26624         (fold_builtin_memory_op): Likewise.
26625         (fold_builtin_bcopy): Deleted; call site changed to invoke
26626         fold_builtin_memory_op directly.
26627         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
26628         (fold_builtin_strncpy): Likewise.
26629         (fold_builtin_memcmp): Likewise.
26630         (fold_builtin_strcmp): Likewise.
26631         (fold_builtin_strncmp): Likewise.
26632         (fold_builtin_signbit): Likewise.
26633         (fold_builtin_copysign): Likewise.
26634         (fold_builtin_isascii): Likewise.
26635         (fold_builtin_toascii): Likewise.
26636         (fold_builtin_isdigit): Likewise.
26637         (fold_builtin_fabs): Likewise.
26638         (fold_builtin_abs): Likewise.
26639         (fold_builtin_fmin_fmax): Likewise.
26640         (fold_builtin_carg): Likewise.
26641         (fold_builtin_classify): Likewise.
26642         (fold_builtin_unordered_cmp): Likewise.
26643
26644         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
26645         New functions split out from fold_builtin_1.
26646         (fold_builtin_n): New.
26647         (fold_builtin_varargs): New.
26648         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
26649         instead.
26650         (fold_call_expr): New.
26651         (build_function_call_expr): Rewrite to use new helper function.
26652         (fold_builtin_call_list): New.
26653         (build_call_expr): New.
26654         (fold_builtin_call_valist): New.
26655         (rewrite_call_expr): New.
26656         (validate_arg): New.
26657         (validate_arglist): Change parameter to be entire CALL_EXPR instead
26658         of an arglist.  Change return type to bool.  Use new CALL_EXPR
26659         accessors.
26660
26661         (fold_builtin_strstr): Pass call arguments individually instead
26662         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
26663         accessors and constructors.  Return NULL_TREE instead of 0.
26664         (fold_builtin_strchr): Likewise.
26665         (fold_builtin_strrchr): Likewise.
26666         (fold_builtin_strpbrk): Likewise.
26667         (fold_builtin_strcat): Likewise.
26668         (fold_builtin_strncat): Likewise.
26669         (fold_builtin_strspn): Likewise.
26670         (fold_builtin_strcspn): Likewise.
26671         (fold_builtin_fputs): Likewise.
26672         (fold_builtin_next_arg): Likewise.
26673         (fold_builtin_sprintf): Likewise.
26674
26675         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
26676         NULL_RTX instead of 0.
26677         (expand_builtin_memory_chk): Likewise.
26678         (maybe_emit_chk_warning): Likewise.
26679         (maybe_emit_sprintf_chk_warning): Likewise.
26680
26681         (fold_builtin_object_size): Pass call arguments individually instead
26682         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
26683         accessors and constructors.  Return NULL_TREE instead of 0.
26684         (fold_builtin_memory_chk): Likewise.
26685         (fold_builtin_stxcpy_chk): Likewise.
26686         (fold_builtin_strncpy_chk): Likewise.
26687         (fold_builtin_strcat_chk): Likewise.
26688         (fold_builtin_strcat_chk): Likewise.
26689         (fold_builtin_strncat_chk): Likewise.
26690         (fold_builtin_sprintf_chk): Likewise.
26691         (fold_builtin_snprintf_chk): Likewise.
26692         (fold_builtin_printf): Likewise.
26693         (fold_builtin_vprintf): Likewise.
26694
26695         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
26696         constructors.
26697         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
26698         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26699         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
26700         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
26701         (fold_unary): Likewise.
26702         (fold_binary): Likewise.
26703         (fold_ternary): Remove CALL_EXPR case, since they are no longer
26704         ternary expressions.
26705         (fold): Add logic for tcc_vl_exp.
26706         (fold_checksum_tree): Make it know about tcc_vl_exp.  Use
26707         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26708         (fold_build3_stat): Add assertion to flag broken interface for
26709         constructing CALL_EXPRs.
26710         (fold_build_call_list): New.
26711         (fold_build_call_list_initializer): New.
26712         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
26713         constructors.
26714         (fold_strip_sign_ops): Likewise.
26715
26716 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26717             Brooks Moses  <brooks.moses@codesourcery.com>
26718             Lee Millward  <lee.millward@codesourcery.com>
26719
26720         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
26721         accessors and dump arguments explicitly.
26722
26723         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
26724         TREE_CODE_LENGTH.
26725         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
26726         explicitly.
26727         (print_call_name): Use new CALL_EXPR accessors.
26728
26729         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
26730         CALL_EXPR arguments explicitly instead of as a list.  Use
26731         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26732
26733         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
26734         (vrp_visit_stmt): Likewise.
26735
26736         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
26737         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
26738         TREE_CODE_LENGTH.
26739         (force_move_till_expr): Likewise.
26740
26741         * targhooks.c (default_external_stack_protect_fail): Use
26742         build_call_expr instead of build_function_call_expr.
26743         (default_hidden_stack_protect_fail): Likewise.
26744
26745         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
26746         build the call.
26747
26748         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
26749         and walk arguments explicitly.
26750
26751         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
26752         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26753         (expand_simple_operations): Likewise.
26754         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
26755
26756         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
26757         of TREE_CODE_LENGTH.
26758         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
26759
26760         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
26761         instead of TREE_CODE_LENGTH.
26762
26763         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
26764         (tree_ic_transform): Likewise.
26765         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
26766         parameter instead of arglist.  Fix callers.
26767         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
26768         (tree_stringops_transform): Likewise.
26769         (tree_indirect_call_to_profile): Likewise.
26770         (tree_stringops_values_to_profile): Likewise.
26771
26772         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
26773         (eliminate_tail_call): Likewise.
26774
26775         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
26776
26777         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
26778         Use TREE_OPERAND_LENGTH and generalize to handle any number of
26779         operands.
26780         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
26781
26782         * omp-low.c (build_omp_barrier): Use build_call_expr.
26783         (lower_rec_input_clauses): Likewise.
26784         (lower_reduction_clauses): Likewise.
26785         (expand_parallel_call): Likewise.
26786         (maybe_catch_exception): Likewise.
26787         (expand_omp_for_generic): Likewise.
26788         (expand_omp_for_static_nochunk): Likewise.
26789         (expand_omp_sections): Likewise.
26790         (lower_omp_single_simple): Likewise.
26791         (lower_omp_single_copy): Likewise.
26792         (lower_omp_master): Likewise.
26793         (lower_omp_ordered): Likewise.
26794         (lower_omp_critical): Likewise.
26795
26796         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
26797         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
26798
26799         * tree-gimple.c (is_gimple_call_addr): Fix doc.
26800         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
26801         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
26802
26803         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
26804         and generalize to handle any number of operands.
26805         (chrec_contains_undetermined): Likewise.
26806         (tree_contains_chrecs): Likewise.
26807         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
26808
26809         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
26810
26811         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
26812         fold_call_expr instead of fold_builtin.
26813         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
26814         match declarations there.
26815         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
26816         updates.
26817
26818         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
26819         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26820
26821         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
26822         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
26823
26824         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
26825         accessors.
26826
26827         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
26828         (execute_cse_sincos): Use new CALL_EXPR accessors.
26829
26830         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
26831
26832         * gimple-low.c (lower_function_body): Use build_call_expr.
26833         (lower_builtin_setjmp): Likewise.
26834
26835         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
26836         (set_storage_via_libcall): Likewise.
26837         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
26838         instead of TREE_CODE_LENGTH.
26839         (expand_expr_real_1): Use new CALL_EXPR accessors.
26840
26841         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
26842         generalize to handle any number of operands.
26843         (TB_parent_eq): Likewise.
26844
26845         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
26846         (strip_builtin_expect): Likewise.
26847
26848         * function.c (gimplify_parameters): Use build_call_expr.
26849
26850         * tree-vectorizer.c (vect_is_simple_reduction): Use
26851         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26852
26853         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
26854         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
26855
26856         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
26857         iterators.
26858
26859         * gimplify.c (build_stack_save_restore): Use build_call_expr.
26860         (gimplify_decl_expr): Likewise.
26861         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
26862         Use new CALL_EXPR iterators.
26863         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
26864         (gimplify_modify_expr_to_memset): Likewise.
26865         (gimplify_variable_sized_compare): Likewise.
26866         (gimplify_omp_atomic_fetch_op): Likewise.
26867         (gimplify_omp_atomic_pipeline): Likewise.
26868         (gimplify_omp_atomic_mutex): Likewise.
26869         (gimplify_function_tree): Likewise.
26870
26871         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
26872         (call_expr_flags): Likewise.
26873         (expand_call): Likewise.
26874
26875         * except.c (expand_builtin_eh_return_data_regno): Pass entire
26876         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
26877         accessors.
26878
26879         * coverage.c (create_coverage): Use build_call_expr.
26880
26881         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
26882         (temp_call_expr_obstack): New.
26883         (pool_copy_list): Delete.
26884         (temp_copy_call_expr): New.
26885         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
26886         CALL_EXPR accessors.  Get rid of special goo for copying argument
26887         lists and use temp_copy_call_expr instead.
26888         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
26889         CALL_EXPR accessors.
26890         (create_expression_by_pieces): Likewise.  Use build_call_array
26891         to construct the result instead of fold_build3.
26892         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
26893         dealing with argument lists.
26894         (init_pre): Remove references to expression_node_pool and
26895         list_node_pool.  Init temp_call_expr_obstack instead.
26896         (fini_pre): Remove references to expression_node_pool and
26897         list_node_pool.
26898
26899         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
26900         and walk arguments explicitly instead of as a list.
26901
26902         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
26903         (mx_register_decls): Likewise.
26904         (mudflap_register_call): Likewise.
26905         (mudflap_finish_file): Likewise.
26906
26907         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
26908         (ipa_callsite_compute_param): Likewise.
26909
26910         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
26911         accessors and constructor.
26912
26913         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
26914         accessors and constructor.
26915         (convert_tramp_reference): Likewise.
26916         (convert_call_expr): Likewise.
26917         (finalize_nesting_tree_1): Likewise.
26918
26919         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
26920         accessors.
26921
26922         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
26923
26924         * tree-inline.c (initialize_inlined_parameters): Pass entire
26925         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
26926         accessors.
26927         (estimate_num_insns_1): Use new CALL_EXPR accessors.
26928         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
26929
26930         * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
26931         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26932         (vectorizable_reduction): Likewise.
26933         (vectorizable_call): Use new CALL_EXPR iterators.
26934         (vectorizable_conversion): Use build_call_expr.
26935         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
26936         (vect_gen_widened_results_half): Use build_call_expr.
26937         (vect_setup_realignment): Likewise.
26938         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
26939
26940         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
26941         (pass_through_call): Likewise.
26942         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
26943         fold_builtin.
26944
26945         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
26946         (tree_gen_pow2_profiler): Likewise.
26947         (tree_gen_one_value_profiler): Likewise.
26948         (tree_gen_ic_func_profiler): Likewise.
26949         (tree_gen_average_profiler): Likewise.
26950         (tree_gen_ior_profiler): Likewise.
26951
26952         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
26953         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
26954         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26955
26956         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
26957         of TREE_CODE_LENGTH.
26958
26959         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
26960         of TREE_CODE_LENGTH.
26961
26962         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
26963         constructor.
26964         (convert_to_integer): Likewise.
26965
26966         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
26967         accessors.
26968
26969 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26970             Brooks Moses  <brooks.moses@codesourcery.com>
26971             Lee Millward  <lee.millward@codesourcery.com>
26972
26973         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
26974         accessors.
26975         * config/frv/frv.c (frv_expand_builtin): Likewise.
26976         * config/s390/s390.c (s390_expand_builtin): Likewise.
26977
26978         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
26979         (sparc_expand_builtin): Use new CALL_EXPR accessors.
26980
26981         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
26982         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
26983         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
26984         (ix86_expand_store_builtin): Likewise.
26985         (ix86_expand_unop_builtin): Likewise.
26986         (ix86_expand_unop1_builtin): Likewise.
26987         (ix86_expand_sse_compare): Likewise.
26988         (ix86_expand_sse_comi): Likewise.
26989         (ix86_expand_vec_init_builtin): Likewise.
26990         (ix86_expand_vec_ext_builtin): Likewise.
26991         (ix86_expand_vec_set_builtin): Likewise.
26992         (ix86_expand_builtin): Use new CALL_EXPR accessors.
26993
26994         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
26995         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
26996
26997         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
26998         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
26999         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
27000
27001         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
27002         build_call_expr.
27003         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
27004         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
27005         arglist.  Use new CALL_EXPR accessors.  Fix callers.
27006         (altivec_expand_abs_builtin): Likewise.
27007         (rs6000_expand_binop_builtin): Likewise.
27008         (altivec_expand_predicate_builtin): Likewise.
27009         (altivec_expand_lv_builtin): Likewise.
27010         (spe_expand_stv_builtin): Likewise.
27011         (altivec_expand_stv_builtin): Likewise.
27012         (rs6000_expand_ternop_builtin): Likewise.
27013         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
27014         (altivec_expand_st_builtin): Likewise.
27015         (altivec_expand_dst_builtin): Likewise.
27016         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
27017         arglist.  Use new CALL_EXPR accessors.  Fix callers.
27018         (altivec_expand_vec_set_builtin): Likewise.
27019         (altivec_expand_vec_ext_builtin): Likewise.
27020         (altivec_expand_builtin): Use new CALL_EXPR accessors.
27021         (spe_expand_builtin): Likewise.
27022         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
27023         arglist.  Use new CALL_EXPR accessors.  Fix callers.
27024         (spe_expand_evsel_builtin): Likewise.
27025         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
27026         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
27027
27028         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
27029         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
27030         (arm_expand_unop_builtin): Likewise.
27031         (arm_expand_builtin): Use new CALL_EXPR accessors.
27032
27033         * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
27034         accessors.
27035
27036         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
27037         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
27038         Fix callers.
27039         (bfin_expand_unop_builtin): Likewise.
27040         (bfin_expand_builtin): Use new CALL_EXPR accessors.
27041
27042 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27043             Brooks Moses  <brooks.moses@codesourcery.com>
27044             Lee Millward  <lee.millward@codesourcery.com>
27045
27046         * c-semantics.c (build_stmt): Add internal diagnostic check.
27047
27048         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
27049         accessors.  Print arguments explicitly instead of as a list.
27050
27051         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
27052
27053         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
27054         (c_finish_omp_flish): Likewise.
27055
27056         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
27057         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
27058         instead of TREE_CODE_LENGTH.
27059         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
27060         (c_warn_unused_result): Likewise.
27061
27062 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27063
27064         PR c/26494
27065         * doc/invoke.texi (Warning Options): Remove
27066         -Werror-implicit-function-declaration.
27067         (Wimplicit-function-declaration): Update description.
27068         * opts.c (common_handle_option): Move handling of -Werror=* to...
27069         (enable_warning_as_error): ...here.
27070         * opts.h (enable_warning_as_error): Declare.
27071         * c-decl.c (implicit_decl_warning): Unless
27072         -Wno-implicit-function-declaration is given, emit a pedwarn if
27073         -std=c99 or emit a warning if -Wimplicit-function-declaration.
27074         * c.opt (Wimplicit-function-declaration): Replace
27075         mesg_implicit_function_declaration with
27076         warn_implicit_function_declaration.
27077         * c-opts.c (c_common_handle_option):
27078         -Werror-implicit-function-declaration is exactly equal as
27079         -Werror=implicit-function-declaration.
27080         (set_Wimplicit): Replace mesg_implicit_function_declaration with
27081         warn_implicit_function_declaration.
27082         (c_common_post_options): -Wimplict-function-declaration is enabled
27083         by default by -std=c99, otherwise is disabled by default.
27084         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
27085
27086 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
27087
27088         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
27089         DECL on the rhs to a DECL on the lhs for debug info purposes if the
27090         former is ignored but not the latter.
27091
27092 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
27093
27094         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
27095         is made and the reference doesn't use the alias set of its type,
27096         do not create the temporary using that type.
27097
27098 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
27099
27100         * jump.c: Remove prototypes for delete_computation and
27101         delete_prior_computation.
27102
27103 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
27104
27105         * jump.c (get_label_after): Delete.
27106         (get_label_before, delete_computation, delete_jump,
27107         delete_prior_computation, follow_jumps): Move...
27108         * reorg.c (delete_computation, delete_prior_computation): ... here...
27109         (get_label_before, delete_jump): ... making these static ...
27110         (follow_jumps): ... and simplifying this since it only runs after
27111         reload.
27112         * rtl.h (get_label_after, get_label_before, delete_jump,
27113         follow_jumps): Delete prototypes.
27114
27115 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
27116
27117         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
27118
27119 2007-02-15  Nick Clifton  <nickc@redhat.com>
27120
27121         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
27122         order to prevent it from being munged by the target.
27123
27124 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
27125
27126         * config/i386/i386.md: Remove misleading comment.
27127
27128 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27129
27130         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
27131         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
27132         invalid patterns.
27133
27134 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27135
27136         * tree-sra.c (instantiate_missing_elements): Canonicalize
27137         bit-field types.
27138         (sra_build_assignment): New.
27139         (generate_copy_inout, generate_element_copy,
27140         generate_element_zero, generate_one_element_init): Use it.
27141
27142 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27143
27144         * tree-sra.c (instantiate_missing_elements): Canonicalize
27145         bit-field types.
27146         (sra_build_assignment): New.
27147         (generate_copy_inout, generate_element_copy,
27148         generate_element_zero, generate_one_element_init): Use it.
27149
27150 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27151
27152         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
27153         limbo die nodes.
27154
27155 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
27156
27157         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
27158         types as aggregates not scalars.
27159         * function.c (assign_stack_temp_for_type): Likewise.
27160
27161 2007-02-14  Roger Sayle  <roger@eyesopen.com>
27162             Zdenek Dvorak  <dvorakz@suse.cz>
27163
27164         * tree-dump.c (dump_switch_p_1): Require exact match of the option
27165         name.
27166
27167 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
27168
27169         * passes.c (next_pass_1): Clear the next field of the copied
27170         pass structure.
27171
27172 2007-02-14  Richard Henderson  <rth@redhat.com>
27173
27174         * tree-sra.c (early_sra): New.
27175         (decl_can_be_decomposed_p): Deny va_list if early_sra.
27176         (tree_sra_early, pass_sra_early): New.
27177         * tree-pass.h (pass_sra_early): Declare.
27178         * passes.c (init_optimization_passes): Use it.
27179
27180 2007-02-14  Richard Guenther  <rguenther@suse.de>
27181
27182         * flags.h (issue_strict_overflow_warning): Convert to a macro.
27183
27184 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
27185
27186          PR tree-optimization/30771
27187         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
27188         also phi nodes.
27189         (vect_analyze_operations): Induction phis can now be marked as
27190         used_in_loop.
27191         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
27192         Update documentation accordingly.
27193
27194 2007-02-14  Nick Clifton  <nickc@redhat.com>
27195
27196         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
27197         most 3 arguments are supported.
27198         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
27199
27200 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
27201
27202         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
27203         Ensure dst->current is valid.
27204
27205 2007-02-13  Paul Brook  <paul@codesourcery.com>
27206
27207         * config.gcc: Add arm*-*-uclinux-*eabi.
27208         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
27209         (SUBTARGET_EXTRA_LINK_SPEC): Define.
27210         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
27211         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
27212         (LINK_SPEC): Define.
27213         (LIB_SPEC): Define.
27214         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
27215         register.
27216         * config/arm/uclinux-eabi.h: New file.
27217         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
27218         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
27219         based targets.
27220
27221 2007-02-13  Ian Lance Taylor  <iant@google.com>
27222
27223         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
27224         * flags.h (warn_strict_overflow): Declare.
27225         (enum warn_strict_overflow_code): Define.
27226         (issue_strict_overflow_warning): New static inline function.
27227         * opts.c (warn_strict_overflow): New variable.
27228         (common_handle_option): Handle OPT_Wstrict_overflow and
27229         OPT_Wstrict_overflow_.
27230         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
27231         OPT_Wall.
27232         * fold-const.c: Include intl.h.
27233         (fold_deferring_overflow_warnings): New static variable.
27234         (fold_deferred_overflow_warning): New static variable.
27235         (fold_deferred_overflow_code): New static variable.
27236         (fold_defer_overflow_warnings): New function.
27237         (fold_undefer_overflow_warnings): New function.
27238         (fold_undefer_and_ignore_overflow_warnings): New function.
27239         (fold_deferring_overflow_warnings_p): New function.
27240         (fold_overflow_warning): New static function.
27241         (make_range): Add strict_overflow_p parameter.  Change all
27242         callers.
27243         (extract_muldiv, extract_muldiv_1): Likewise.
27244         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
27245         tree_expr_nonnegative_p.
27246         (fold_negate_expr): Call fold_overflow_warning.
27247         (fold_range_test): Likewise.
27248         (fold_comparison): Likewise.
27249         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
27250         instead of tree_expr_nonnegative_p.
27251         (tree_expr_nonnegative_warnv_p): Rename from
27252         tree_expr_nonnegative_p, add strict_overflow_p parameter.
27253         (tree_expr_nonnegative_p): New function.
27254         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
27255         strict_overflow_p parameter.
27256         (tree_expr_nonzero_p): New function.
27257         * passes.c (verify_interpass_invariants): New static function.
27258         (execute_one_pass): Call it.
27259         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
27260         warnings.
27261         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
27262         (estimate_numbers_of_iterations): Likewise.
27263         (scev_probably_wraps_p): Likewise.
27264         * tree-ssa-ccp.c: Include "toplev.h".
27265         (evaluate_stmt): Defer fold overflow warnings until we know we are
27266         going to optimize.
27267         (struct fold_stmt_r_data): Add stmt field.
27268         (fold_stmt_r): Defer fold overflow warnings until we know we
27269         optimized.
27270         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
27271         (fold_stmt_inplace): Likewise.
27272         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
27273         (cleanup_control_expr_graph): Defer fold overflow warnings until
27274         we know we are going to optimize.
27275         * tree-cfg.c (fold_cond_expr_cond): Likewise.
27276         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
27277         Likewise.
27278         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
27279         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
27280         * tree-ssa-loop-manip.c (create_iv): Likewise.
27281         * c-typeck.c (build_conditional_expr): Likewise.
27282         (build_binary_op): Likewise.
27283         * tree-vrp.c (vrp_expr_computes_nonzero): Call
27284         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
27285         (extract_range_from_unary_expr): Likewise.
27286         * simplify-rtx.c (simplify_const_relational_operation): Warn when
27287         assuming that signed overflow does not occur.
27288         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
27289         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
27290         (fold_defer_overflow_warnings): Declare.
27291         (fold_undefer_overflow_warnings): Declare.
27292         (fold_undefer_and_ignore_overflow_warnings): Declare.
27293         (fold_deferring_overflow_warnings_p): Declare.
27294         (tree_expr_nonzero_warnv_p): Declare.
27295         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
27296         of warning options.
27297         (Warning Options): Document -Wstrict-overflow.
27298         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
27299         (tree-ssa-ccp.o): Likewise.
27300         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
27301         (fold-const.o): Depend on intl.h.
27302
27303 2007-02-13  Ian Lance Taylor  <iant@google.com>
27304
27305         PR middle-end/30751
27306         * lower-subreg.c (resolve_simple_move): Decompose subregs in
27307         addresses.
27308
27309 2007-02-13  Stuart Hastings  <stuart@apple.com>
27310
27311         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
27312
27313 2007-02-13  Richard Henderson  <rth@redhat.com>
27314
27315         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
27316         handled_component_p before looking for the indirect_ref.
27317
27318 2007-02-13  Richard Henderson  <rth@redhat.com>
27319
27320         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
27321         remove flags clobber.
27322         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
27323         (bswaphi_lowpart): New.
27324         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
27325         remove TARGET_BSWAP test.  Delete expander of the same name.
27326
27327         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
27328         (expand_unop): Use them.
27329
27330 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
27331
27332         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
27333         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
27334         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
27335         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
27336         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
27337         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
27338         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
27339         assembler dialect choice from asm templates.
27340
27341 2007-02-12  Richard Henderson  <rth@redhat.com>
27342
27343         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
27344         (fixuns_trunc<SSEMODEF>si2): Use it.
27345         * config/i386/sse.md (vec_setv4sf_0): Export.
27346         * config/i386/i386.c (ix86_build_const_vector): Export.
27347         (ix86_split_convert_uns_si_sse): Rename from
27348         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
27349         * config/i386/i386-protos.h: Update.
27350
27351 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27352
27353         PR c/29521
27354         * c-typeck.c (c_finish_return): Improve warning message.
27355
27356 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27357
27358         * alias.c (find_symbolic_term): Delete unused function.
27359
27360 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
27361
27362         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
27363         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
27364         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
27365
27366 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
27367
27368         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
27369         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
27370         the function, temporarily point the debug interface to the null one.
27371
27372 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
27373
27374         * dwarf2out.c (round_up_to_align): New static function.
27375         (field_byte_offset): Use it to round the offset.
27376
27377 2007-02-12  Richard Henderson  <rth@redhat.com>
27378
27379         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
27380         (inswl_const): Export.
27381
27382 2007-02-12  Richard Henderson  <rth@redhat.com>
27383
27384         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
27385         result mode of the libcall, convert back to outmode.
27386
27387 2007-02-12  Roger Sayle  <roger@eyesopen.com>
27388
27389         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
27390         (bswapdi2): New define_expand to implement 32-bit implementation.
27391
27392 2007-02-12  Nick Clifton  <nickc@redhat.com>
27393
27394         * doc/invoke.texi (Overall Options): Document --help=.
27395         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
27396         (cc1_options): Pass --help= on to cc1.
27397         (display_help): Add description of --help=.
27398         (process_command): Add code to handle --help=.  Allow translated
27399         --help and --target-help switches to be passed on to compiler
27400         sub-process.
27401         (main): Remove unused if statement.
27402         * opts.c (columns): Remove.
27403         (LEFT_COLUMN): Define.
27404         (wrap_help): Add columns argument.
27405         (print_filtered_help): Change parameters to be an include bitmask,
27406         an exclude bitmask, an any bitmask and the column width.  Move the
27407         code to display the params list here.  Add code to display the
27408         status of options rather than their descriptions if the quiet flag
27409         is not active.
27410         (print_specific_help): Change parameters to be an include bitmask,
27411         an exclude bitmask and an any bitmask.  Move code to look up the
27412         column width here.  Decide upon the title for an options listing.
27413         (common_handle_options): Add code to handle --help=.  Adapt code
27414         for --help and --target-help to use the revised form of the
27415         print_specific_help function.
27416         (print_help): Delete.
27417         (print_param_help): Delete.
27418         (print_switch): Delete.
27419         * opts.h (cl_lang_count): Add prototype.
27420         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
27421         CL_MAX_OPTION_CLASS): New defines.
27422         * optc-gen.awk: Add construction of cl_lang_count.
27423         * c.opt: Add Warning attribute to warning options and Optimization
27424         attribute to optimization options.
27425         * common.opt: Likewise.
27426         Add --help=.
27427         Add -fhelp and -ftarget-help as aliases for the transformed --help
27428         and --target-help options.
27429         * opt-functions.awk: Add code to handle Warning and Optimization
27430         attributes.
27431
27432 2007-02-12  Richard Henderson  <rth@redhat.com>
27433
27434         * config/alpha/constraints.md: New file.
27435         * config/alpha/alpha.c: Include tm-constrs.h.
27436         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
27437         alpha_extra_constraint): Remove.
27438         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
27439         * config/alpha/alpha-protos.h: Update.
27440         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
27441         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
27442         (EXTRA_CONSTRAINT): Remove.
27443         * config/alpha/alpha.md: Include constraints.md.
27444         (adddi splitter): Use satisfies_constraint_*.
27445         * config/alpha/predicates.md (add_operand): Likewise.
27446         (sext_add_operand, addition_operation): Likewise.
27447
27448 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
27449
27450         PR tree-optimization/29145
27451         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
27452         in our handling of restrict qualified pointers.
27453
27454 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27455
27456         PR middle-end/7651
27457         * doc/invoke.texi (Wunused-value): Update description.
27458         (Wextra): Delete item.
27459         * opts.c (set_Wextra): Don't use the value of Wextra to set the
27460         value of Wunused-value.
27461         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
27462         (c_finish_stmt_expr): Don't check extra_warnings.
27463         (emit_side_effect_warnings): The caller is responsible to check
27464         warn_unused_value.
27465
27466 2007-02-11  Roger Sayle  <roger@eyesopen.com>
27467             Matt Thomas  <matt@3am-software.com>
27468
27469         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
27470
27471 2007-02-11  Roger Sayle  <roger@eyesopen.com>
27472
27473         * simplify-rtx.c (simplify_relational_operation_1): Optimize
27474         comparisons of POPCOUNT against zero.
27475         (simplify_const_relational_operation): Likewise.
27476
27477 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27478
27479         * doc/invoke.texi (Wextra): Delete outdated paragraph.
27480
27481 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27482
27483         * dwarf2out.c (root_type): Delete unused function.
27484
27485 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27486
27487         * genattrtab.c (contained_in_p): Delete unused function.
27488         (write_expr_attr_cache): Likewise.
27489
27490 2007-02-11  Jan Hubicka  <jh@suse.cz>
27491
27492         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
27493         previous patch.
27494
27495 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
27496
27497         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
27498         to add the REG_EQ* note.
27499         * see.c (see_merge_one_use_extension): Likewise.
27500         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
27501         turn REG_EQUAL notes into REG_EQUIV notes if the target
27502         register may have more than one set.
27503         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
27504         * gcse.c (try_replace_reg): Likewise.
27505         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
27506         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
27507         more than one REG_EQUIV note.
27508         * reload1.c (gen_reload): Use set_unique_reg_note.
27509
27510 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
27511
27512         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
27513         (ix86_builtin_conversion): New function.
27514
27515 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
27516
27517         PR target/29487
27518         * tree.h (DECL_REPLACEABLE_P): New macro.
27519         * except.c (set_nothrow_function_flags): Likewise.
27520
27521 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
27522             Ira Rosen  <irar@il.ibm.com>
27523             Dorit Nuzman  <dorit@il.ibm.com>
27524
27525         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
27526         * targhooks.c (default_builtin_vectorized_conversion): New.
27527         * targhooks.h (default_builtin_vectorized_function): New declaration.
27528         * target.h (struct vectorize): Add builtin_conversion field.
27529         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
27530         stmt_vec_info_type value.
27531         (vectorizable_conversion): New declaration.
27532         * tree-vect-analyze.c (vect_analyze_operations): Add
27533         vectorizable_conversion call.
27534         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
27535         * tree-vect-transform.c (vectorizable_conversion): New function.
27536         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
27537         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
27538         mode.
27539         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
27540         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
27541         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
27542         or ALTIVEC_BUILTIN_VCFSX.
27543
27544 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27545
27546         PR target/30634
27547         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
27548         CONST_DOUBLE and operand 0 is a hard register.
27549         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
27550         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
27551         is a hard floating-point register.
27552
27553 2007-02-10  Richard Henderson  <rth@redhat.com>
27554             Jakub Jelinek  <jakub@redhat.com>
27555             Alexandre Oliva  <aoliva@redhat.com>
27556
27557         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
27558         * builtin-types.def (BT_WORD): Make unsigned.
27559         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
27560         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
27561         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
27562         * c-decl.c (grokdeclarator): Don't error if !have_tls.
27563         * c-parser.c (c_parser_omp_threadprivate): Likewise.
27564         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
27565         emulated tls.
27566         * expr.c (emutls_var_address): New.
27567         (expand_expr_real_1): Expand emulated tls.
27568         (expand_expr_addr_expr_1): Likewise.
27569         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
27570         * output.h (emutls_finish): Declare.
27571         * toplev.c (compile_file): Call it.
27572         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
27573         address before wrapping in CONST.
27574         * varasm.c (emutls_htab, emutls_object_type): New.
27575         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
27576         (get_emutls_object_name, get_emutls_object_type): New.
27577         (get_emutls_init_templ_addr, emutls_decl): New.
27578         (emutls_common_1, emutls_finish): New.
27579         (assemble_variable): When emulating tls, swap decls; generate
27580         constructor for the emutls objects.
27581         (do_assemble_alias): When emulating tls, swap decl and target name.
27582         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
27583         for emulated tls.
27584         * varpool.c (decide_is_variable_needed): Look at force_output.
27585         Recurse for emulated tls.
27586         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
27587         with decide_is_variable_needed.
27588         * emutls.c: New file.
27589         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
27590         tls_object for real tls.
27591
27592 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
27593
27594         PR rtl-optimization/29599
27595         * reload1.c (eliminate_regs_in_insn): Take the destination
27596         mode into account when computing the offset.
27597
27598 2007-02-09  Stuart Hastings  <stuart@apple.com>
27599             Richard Henderson  <rth@redhat.com>
27600
27601         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
27602         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
27603         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
27604         fixuns_truncdfhi2): New.
27605         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
27606         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
27607         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
27608         (floatunssidf2): Allow nonimmediate source.
27609         * config/i386/sse.md (movdi_to_sse): New.
27610         (vec_concatv2di): Drop '*'.
27611         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
27612         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
27613         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
27614         New.
27615         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
27616         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
27617         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
27618         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
27619         (ix86_build_signbit_mask): Fix decl of v, refactor to call
27620         ix86_build_const_vector.
27621         (x86_emit_floatuns): Rewrite.
27622
27623 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27624
27625         * genautomata.c (longest_path_length): Delete unused function.
27626         (struct state): Delete unused longest_path_length.
27627         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
27628         (get_free_state): Delete unused.
27629
27630 2007-02-09  Jan Hubicka  <jh@suse.cz>
27631
27632         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
27633         * doc/invoke.texi (inline-unit-growth): Update default value.
27634
27635         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
27636         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
27637         (rebuild_cgraph_edges): Likewise.
27638         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
27639         (dump_cgraph_node): Dump frequencies.
27640         (cgraph_clone_edge): Add frequency scales.
27641         (cgraph_clone_node): Add freuqnecy.
27642         * cgraph.h (cgraph_edge): Add freuqnecy argument.
27643         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
27644         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
27645         * tree-pass.h (TODO_rebuild_frequencies): New constant.
27646         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
27647         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
27648         (save_inline_function_body): Likewise.
27649         * ipa-inline.c: inluce rtl.h
27650         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
27651         (cgraph_edge_badness): Use frequencies.
27652         (cgraph_decide_recursive_inlining): Update clonning.
27653         (cgraph_decide_inlining_of_small_function): Dump frequency.
27654         * predict.c (estimate_bb_frequencies): Export.
27655         * predict.h (estimate_bb_frequencies): Declare.
27656         * tree-inline.c (copy_bb): Watch overflows.
27657         (expand_call_inline): Update call of cgraph_create_edge.
27658         (optimize_inline_calls): Use TODO flags to update frequnecies.
27659         * passes.h: Include predict.h
27660         (init_optimization_passes): Move profile ahead.
27661         (execute_function_todo): Handle TODO_rebuild_frequencies.
27662
27663 2007-02-09  Roger Sayle  <roger@eyesopen.com>
27664
27665         * config/alpha/alpha.c (emit_insxl): Force the first operand of
27666         the insbl or inswl pattern into a register.
27667
27668 2007-02-09  Roger Sayle  <roger@eyesopen.com>
27669
27670         * config/ia64/ia64.md (bswapdi2): New define_insn.
27671
27672 2007-02-09  Richard Henderson  <rth@redhat.com>
27673
27674         * config/i386/constraints.md (Ym): New constraint.
27675         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
27676         (movdi_1_rex64): Split sse and xmm general register moves from
27677         memory move alternatives.  Use conditional register constraints.
27678         (movsf_1, movdf_integer): Likewise.
27679         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
27680         (movdf_integer_rex64): New.
27681         (pushsf_rex64): Fix output constraints.
27682         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
27683         (sse2_stored): Likewise.
27684         (sse2_storeq_rex64): New.
27685         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
27686         amd and not generic.
27687         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
27688         for optimize_size.  Remove SF/DFmode hack.
27689
27690 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
27691
27692         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
27693         (bit_SSE4a): New.
27694
27695 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
27696             Richard Sandiford  <richard@codesourcery.com>
27697
27698         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
27699         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
27700         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
27701         m68k/t-mlib to tmake_file.
27702         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
27703         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
27704         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
27705         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
27706         variable is not empty, add t-$m68k_arch_family to tmake_file.
27707         Add t-mlibs to tmake_file.
27708         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
27709         * config/m68k/t-cf: New file.
27710         * config/m68k/t-m68k: Likewise.
27711         * config/m68k/t-mlibs: Likewise.
27712         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
27713         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
27714         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
27715         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
27716         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
27717         Delete.
27718         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
27719         (INSTALL_LIBGCC): Delete.
27720         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
27721         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
27722         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
27723         (M68K_MLIB_CPU): Define.
27724         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
27725         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
27726         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
27727
27728 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
27729             Richard Guenther  <rguenther@suse.de>
27730
27731         PR middle-end/23361
27732         * fold-const.c (fold_comparison): Handle obfuscated comparisons
27733         against INT_MIN/INT_MAX.
27734         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
27735         file if a loop is removed.
27736
27737 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
27738
27739         * calls.c (store_one_arg): Pass correct alignment to
27740         emit_push_insn for non-BLKmode values.
27741         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
27742         unaligned stack slot via a suitably aligned slot.
27743
27744 2007-02-08  DJ Delorie  <dj@redhat.com>
27745
27746         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
27747         warnings.
27748         (legal_subregs): Use unsigned char, make const.
27749         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
27750
27751 2007-02-08  Paul Brook  <paul@codesourcery.com>
27752
27753         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
27754         special interworking needed.
27755
27756 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
27757
27758         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
27759         conditional to __SSE2__.
27760         (Entries below should have been added to first ChangeLog
27761         entry for amdfam10 dated 2007-02-05)
27762         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
27763         defined.
27764         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
27765         defined.
27766         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
27767         defined.
27768
27769 2007-02-08  DJ Delorie  <dj@redhat.com>
27770
27771         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
27772         * config/m32c/m32c.c (legal_subregs): New.
27773         (m32c_illegal_subreg_p): New.
27774         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
27775         unsupported subregs of hard regs.
27776
27777 2007-02-08  Jan Hubicka  <jh@suse.cz>
27778
27779         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
27780         the same one; always update histograms.
27781
27782 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
27783
27784         * passes.c (init_optimization_passes): Tidy comment.
27785
27786 2007-02-08  Roger Sayle  <roger@eyesopen.com>
27787
27788         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
27789         strip zero_extend, bswap and rotates from POCOUNT's argument.
27790         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
27791         zero_extend and rotates from PARITY's argument.
27792         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
27793         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
27794         of an integer constant at compile-time.
27795
27796 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
27797
27798         PR 30562
27799         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
27800         Update all users.
27801         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
27802         users.
27803         (init_alias_info):
27804         * tree-ssa-live.c (remove_unused_locals): Do not remove
27805         TREE_ADDRESSABLE variables.
27806         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
27807         * tree-ssa-operands.c (add_virtual_operand): Remove argument
27808         FOR_CLOBBER.  Update all users.
27809         If VAR has an associated alias set, add a virtual operand for
27810         it if no alias is found to conflict with the memory reference.
27811
27812 2007-02-07  Jan Hubicka  <jh@suse.cz>
27813             Robert Kidd <rkidd@crhc.uiuc.edu>
27814
27815         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
27816
27817 2007-02-07  Ian Lance Taylor  <iant@google.com>
27818
27819         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
27820
27821 2007-02-07  Roger Sayle  <roger@eyesopen.com>
27822
27823         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
27824         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
27825         tablejumpdi, movsi_to_cr_one): Remove constraints from
27826         define_expand's match_operands.
27827
27828 2007-02-07  Roger Sayle  <roger@eyesopen.com>
27829
27830         * global.c (compute_regsets): Move declatation of "i" inside of
27831         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
27832
27833 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
27834
27835         PR c++/30703
27836         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
27837         of INDIRECT_REF <RESULT_DECL>.
27838
27839         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
27840
27841 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
27842             Kaz Kojima  <kkojima@gcc.gnu.org>
27843
27844         PR target/29746
27845         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
27846         properly.
27847         (sh_initialize_trampoline): Add parentheses to avoid a warning.
27848
27849 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
27850
27851         * doc/loop.texi: Document possibility not to perform disambiguation
27852         of loops with multiple latches.
27853         * cfgloopmanip.c (alp_enum_p): Removed.
27854         (add_loop): Handle subloops.  Use get_loop_body_with_size.
27855         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
27856         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
27857         the new forwarder block.
27858         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
27859         Handle the case latch is NULL.
27860         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
27861         modifications when marking loop exits.
27862         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
27863         be modified.
27864         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
27865         disambiguate_loops_with_multiple_latches.
27866         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
27867         before fix_loop_structure.
27868         * cfgloop.c: Include pointer-set.h and output.h.
27869         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
27870         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
27871         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
27872         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
27873         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
27874         disambiguate_multiple_latches, get_loop_body_with_size,
27875         disambiguate_loops_with_multiple_latches): New functions.
27876         (flow_loop_dump): Dump multiple latch edges.
27877         (flow_loop_nodes_find): Handle loops with multiple latches.
27878         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
27879         (glb_enum_p): Modified.
27880         (get_loop_body): Use get_loop_body_with_size.
27881         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
27882         (AVOID_CFG_MODIFICATIONS): New constant.
27883         (disambiguate_loops_with_multiple_latches, add_loop,
27884         get_loop_body_with_size): Declare.
27885         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
27886
27887 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
27888
27889         PR inline-asm/28686
27890         * global.c (compute_regsets): New function.
27891         (global_alloc): Refactored ELIMINABLE_REGSET
27892         and NO_GLOBAL_ALLOC_REGS computation out.
27893         (rest_of_handle_global_alloc): Call compute_regsets()
27894         for non-optimizing case.
27895
27896 2007-02-06  Richard Henderson  <rth@redhat.com>
27897
27898         * config/i386/constraints.md (Y2): Rename from Y.
27899         (Yi): New constraint.
27900         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
27901         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
27902         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
27903         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
27904         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
27905         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
27906         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
27907         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
27908         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
27909         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
27910         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
27911         vec_extractv2si_1): Change Y constraints to Y2.
27912         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
27913         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
27914         Change Y constraints to Y2.
27915         (sse2_loadld): Change Y constraints to x.
27916
27917 2007-02-06  Roger Sayle  <roger@eyesopen.com>
27918
27919         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
27920         (parity<mode>2): New define_expand using rs6000_emit_parity.
27921         * config/rs6000/rs6000.c (rs6000_emit_popcount,
27922         rs6000_emit_parity): New functions.
27923         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
27924         rs6000_emit_parity): Prototype here.
27925
27926 2007-02-06  Ian Lance Taylor  <iant@google.com>
27927
27928         * lower-subreg.c (simple_move_operand): Reject CONST.
27929         (resolve_clobber): Call validate_change rather than directly
27930         assigning to XEXP (pat, 0).
27931
27932 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
27933
27934         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
27935         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
27936         (tree-cfg.o): Remove hashtab.h dependency.
27937
27938         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
27939         (struct ivopts_data): Change niters to pointer_map_t.
27940         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
27941         (niter_for_exit): Create pointer_map on demand.  Change for
27942         pointer_map API.
27943         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
27944         (free_loop_data): Destroy data->niters if created and reset field.
27945         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
27946         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
27947
27948         * tree-ssa-reassoc.c: Include pointer-set.h.
27949         (bb_rank): Change to long *.
27950         (operand_rank): Change to pointer_map_t.
27951         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
27952         (insert_operand_rank): Accept long.
27953         (operand_entry_hash, operand_entry_eq): Remove.
27954         (get_rank): Return long.  Adjust for changes above.
27955         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
27956         and operand_rank.
27957         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
27958
27959         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
27960         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
27961         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
27962         is not NULL.
27963         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
27964         directly since it cannot be NULL.
27965         (get_vi_for_tree): Rewrite for pointer_map API.
27966         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
27967         (init_alias_vars): Create vi_for_tree as pointer_map.
27968         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
27969
27970         * tree-cfg.c: Don't include hashtab.h.
27971         (edge_to_cases): Declare as pointer_map.
27972         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
27973         Delete.
27974         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
27975         (start_recording_case_labels): Create edge_to_cases as pointer_map.
27976         (end_recoding_case_labels): Cleanup edge_to_cases manually before
27977         destroying it.
27978         (record_switch_edge): Delete.
27979         (get_cases_for_edge): Adjust for pointer_map API, inline
27980         record_switch_edge (rewritten for new API), remove goto.
27981
27982 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
27983
27984         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
27985         * tree-nested.c: Include pointer-set.h.
27986         (var_map_elt, var_map_eq, var_map_hash): Delete.
27987         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
27988         to pointer_map_t's.
27989         (nesting_info_bitmap_obstack): New.
27990         (lookup_field_for_decl): Adjust for pointer_map API.
27991         (lookup_tramp_for_decl): Adjust for pointer_map API.
27992         (get_nonlocal_debug_decl): Adjust for pointer_map API.
27993         (get_local_debug_decl): Adjust for pointer_map API.
27994         (convert_nl_goto_reference): Adjust for pointer_map API.
27995         (convert_nl_goto_receiver): Adjust for pointer_map API.
27996         (create_nesting_tree): Create outside GGC space.  Create bitmap on
27997         the new obstack.  Create field_map and var_map as pointer_maps.
27998         (free_nesting_tree): Adjust for changes to create_nesting_tree.
27999         (root): Delete.
28000         (lower_nested_functions): Move root here, no need to NULL it.
28001         Initialize and release the obstack.
28002
28003 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
28004
28005         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
28006         Remove prototypes and make them non-static.
28007         (struct tree_int_map): Remove.
28008         * tree.h (struct tree_int_map): Move here, turning TO into an
28009         unsigned int.
28010         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
28011
28012         * tree.h (TREE_COMPLEXITY): Remove.
28013         (struct tree_exp): Remove complexity field.
28014         * tree.c (build1_stat): Don't set it.
28015
28016 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
28017             Victor Kaplansky  <victork@il.ibm.com>
28018
28019         * tree-vectorizer.c (vect_is_simple_use): Support induction.
28020         (vect_is_simple_reduction): Support reduction with induction as
28021         one of the operands.
28022         (vect_is_simple_iv_evolution): Fix formatting.
28023         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
28024         formatting.  Don't mark induction phis for vectorization.
28025         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
28026         * tree-vect-transform.c (get_initial_def_for_induction): New function.
28027         (vect_get_vec_def_for_operand): Support induction.
28028         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
28029         induction case.
28030         (vectorizable_reduction): Support reduction with induction as one of
28031         the operands.
28032         (vectorizable_type_demotion): Use def-type of stmt argument rather
28033         than dummy def-type.
28034
28035         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
28036         flag_tree_scev_cprop.
28037         * common.opt (tree-scev-cprop): New flag.
28038
28039         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
28040         call to vect_get_new_vect_var.
28041
28042 2007-02-06  Ira Rosen  <irar@il.ibm.com>
28043
28044         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
28045         vectype is not NULL.
28046         (vect_pattern_recog_1): Likewise.
28047
28048 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28049
28050         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
28051         (fold_negate_expr): Likewise.
28052
28053 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
28054
28055         PR debug/30189
28056         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
28057         even if cv-qualification is the same.
28058
28059 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
28060
28061         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
28062         __enable_execute_stack on completion.
28063
28064 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28065
28066         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
28067         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
28068         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
28069         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
28070         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
28071         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
28072         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
28073         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
28074
28075 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28076
28077         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
28078         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
28079         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
28080         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
28081         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
28082         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
28083         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
28084         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
28085         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
28086         umuldi3_highpart_rex64, umulsi3_highpart_insn,
28087         umulsi3_highpart_zext, smuldi3_highpart_rex64,
28088         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
28089         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
28090         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
28091         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
28092         sqrtextenddfxf2_i387): Added amdfam10_decode.
28093
28094         * config/i386/athlon.md (athlon_idirect_amdfam10,
28095         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
28096         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
28097         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
28098         athlon_ivector_store_amdfam10): New define_insn_reservation.
28099         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
28100         amdfam10.
28101
28102 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28103
28104         * config/i386/athlon.md (athlon_call_amdfam10,
28105         athlon_pop_amdfam10, athlon_lea_amdfam10): New
28106         define_insn_reservation.
28107         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
28108         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
28109         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
28110
28111 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28112
28113         * config/i386/athlon.md (athlon_sseld_amdfam10,
28114         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
28115         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
28116
28117 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28118
28119         * config/i386/athlon.md (athlon_sseins_amdfam10): New
28120         define_insn_reservation.
28121         * config/i386/i386.md (sseins): Added sseins to define_attr type
28122         and define_attr unit.
28123         * config/i386/sse.md: Set type attribute to sseins for insertq
28124         and insertqi.
28125
28126 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28127
28128         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
28129         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
28130         ssecomi_load_amdfam10, ssecomi_amdfam10,
28131         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
28132         define_insn_reservation.
28133         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
28134
28135 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28136
28137         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
28138         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
28139         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
28140         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
28141         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
28142         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
28143         define_insn_reservation.
28144
28145         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
28146         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
28147         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
28148         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
28149         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
28150
28151 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28152
28153         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
28154         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
28155         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
28156         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
28157         athlon_ssemul_load_k8): Added amdfam10.
28158
28159 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28160
28161         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
28162         (x86_sse_unaligned_move_optimal): New variable.
28163
28164         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
28165         m_AMDFAM10.
28166         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
28167         for unaligned vector SSE double/single precision loads for AMDFAM10.
28168
28169 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28170
28171         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
28172         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
28173         Define TARGET_CPU_DEFAULT_amdfam10.
28174         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
28175         (processor_type): Add PROCESSOR_AMDFAM10.
28176
28177         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
28178         processor_type in config/i386/i386.h.
28179         Enable imul peepholes for TARGET_AMDFAM10.
28180
28181         * config.gcc: Add support for --with-cpu option for amdfam10.
28182
28183         * config/i386/i386.c (amdfam10_cost): New variable.
28184         (m_AMDFAM10): New macro.
28185         (m_ATHLON_K8_AMDFAM10): New macro.
28186         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
28187         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
28188         x86_promote_QImode, x86_integer_DFmode_moves,
28189         x86_partial_reg_dependency, x86_memory_mismatch_stall,
28190         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
28191         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
28192         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
28193         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
28194         Enable/disable for amdfam10.
28195         (override_options): Add amdfam10_cost to processor_target_table.
28196         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
28197         processor_alias_table.
28198         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
28199         (ix86_adjust_cost): Add code for amdfam10.
28200
28201 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28202
28203         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
28204         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
28205         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
28206         * config/i386/i386.h: Add builtin definition for SSE4A.
28207         * config/i386/i386.md: Add support for ABM instructions
28208         (popcnt and lzcnt).
28209         * config/i386/sse.md: Add support for SSE4A instructions
28210         (movntss, movntsd, extrq, insertq).
28211         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
28212         Add -march=amdfam10 flag.
28213         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
28214         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
28215         and amdfam10.
28216         * doc/extend.texi: Add documentation for SSE4A builtins.
28217
28218 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
28219
28220         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
28221
28222 2007-02-05  Richard Guenther  <rguenther@suse.de>
28223
28224         * tree-vectorizer.h (vectorizable_function): Add argument type
28225         argument, change return type.
28226         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
28227         * tree-vect-transform.c (vectorizable_function): Handle extra
28228         argument, return vectorized function decl.
28229         (build_vectorized_function_call): Remove.
28230         (vectorizable_call): Handle calls with result and argument types
28231         differing.  Handle loop vectorization factor correctly.
28232         * targhooks.c (default_builtin_vectorized_function): Adjust for
28233         extra argument.
28234         * targhooks.h (default_builtin_vectorized_function): Likewise.
28235         * target.h (builtin_vectorized_function): Add argument type
28236         argument.
28237         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
28238         extra argument, allow vectorizing of lrintf.
28239         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
28240         documentation of target hook.
28241
28242 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
28243
28244         PR target/30665
28245         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
28246         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
28247         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
28248
28249 2007-02-05  Roger Sayle  <roger@eyesopen.com>
28250
28251         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
28252         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
28253         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
28254         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
28255         before canonicalizing sincos to cexpi.
28256         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
28257
28258 2007-02-05  Roger Sayle  <roger@eyesopen.com>
28259
28260         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
28261         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
28262         (alpha_init_builtins): Use alpha_add_builtins to process tables.
28263
28264 2007-02-05  Roger Sayle  <roger@eyesopen.com>
28265
28266         * mips-tfile.c (initialize_init_file): Correct endianness test.
28267
28268 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
28269
28270         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
28271         the 'y' constraint.
28272
28273 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
28274
28275         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
28276         saves in a PARALLEL before the register assignments.
28277
28278 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
28279
28280         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
28281         DWARF_FRAME_RETURN_COLUMN to be a general register.
28282         * dwarf2out.c (init_return_column_size): New function, split from...
28283         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
28284         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
28285         to be nongeneral registers.
28286         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
28287         integer registers.
28288         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
28289         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
28290
28291 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
28292
28293         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
28294
28295 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
28296
28297         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
28298         (remove_path): Use can_remove_branch_p and remove_branch instead
28299         of loop_delete_branch_edge.
28300         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
28301         (tree_transform_and_unroll_loop): Remove dead branches immediately.
28302         Update profile using scale_dominated_blocks_in_loop.
28303         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
28304         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
28305         (can_remove_branch_p, remove_branch): Declare.
28306         * tree-cfg.c (tree_can_remove_branch_p): New function.
28307         (tree_cfg_hooks): Add tree_can_remove_branch_p.
28308         * cfgrtl.c (rtl_can_remove_branch_p): New function.
28309         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
28310
28311 2007-02-05  Jan Hubicka  <jh@suse.cz>
28312
28313         PR middle-end/30696
28314         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
28315         nodes in cgraph, don't remove offline copy of the function.
28316
28317 2007-02-04  Jan Hubicka  <jh@suse.cz>
28318
28319         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
28320         vectors might cause maybe_lookup_element_for_expr to be called
28321         on non-sra-candidate.
28322
28323 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
28324
28325         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
28326         config/bfin/bfin.md, config/bfin/predicates.md: Follow
28327         spelling conventions.
28328
28329 2007-02-04  Richard Guenther  <rguenther@suse.de>
28330
28331         PR middle-end/30636
28332         * fold-const.c (try_move_mult_to_index): Make sure to not
28333         overflow one dimension of a multi-dimensional array access.
28334
28335 2007-02-04  Jan Hubicka  <jh@suse.cz>
28336
28337         * passes.c (init_optimization_passes): Reindent.
28338
28339 2007-02-04  Jan Hubicka  <jh@suse.cz>
28340             Eric Botcazou  <ebotcazou@adacore.com>
28341
28342         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
28343         (execute_fixup_cfg): Break out the abnormal goto code.
28344         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
28345         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
28346         (optimize_inline_calls): Call make_nonlocal_label_edges.
28347
28348 2007-02-04  Jan Hubicka  <jh@suse.cz>
28349
28350         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
28351         true when something was changed.
28352         (rename_ssa_copies): When something was changed, do
28353         TODO_remove_unused_locals.
28354         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
28355         add TODO_remove_unused_locals when instruction was removed.
28356
28357 2007-02-04  Jan Hubicka  <jh@suse.cz>
28358
28359         * ipa-inline.c (try_inline): Improve debug output; work on already
28360         inline edges too.
28361         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
28362         call try_inline for already inlined edges too when flattening;
28363         inline also functions that make callee growth but overall unit size
28364         reduce.
28365
28366 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
28367
28368         * config/m32c/bitops.md, config/m32c/jump.md,
28369         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
28370         config/m32r/m32r.h, config/m32r/m32r.md,
28371         config/m32r/predicates.md, config/m68hc11/larith.asm,
28372         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
28373         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
28374         config/mips/mips-protos.h, config/mips/mips.c,
28375         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
28376         config/mn10300/mn10300.h, config/mn10300/predicates.md,
28377         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
28378         spelling conventions.
28379
28380         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
28381         Follow spelling conventions.
28382
28383 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
28384
28385         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
28386         warn about C++0x compatibility.
28387
28388 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
28389
28390         * config/h8300/h8300.c, config/h8300/h8300.h,
28391         config/h8300/h8300.md: Follow spelling conventions.
28392
28393 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
28394
28395         PR middle-end/30667
28396         * combine.c (try_combine): Do not substitute source operand
28397         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
28398
28399 2007-02-03  Jan Hubicka  <jh@suse.cz>
28400
28401         PR gcov-profile/30650
28402         * value-prof.c (stringop_block_profile): Fix handling of size counter;
28403         do not divide by zero for never executed counters.
28404         (tree_find_values_to_profile): Fix counters.
28405         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
28406
28407 2007-02-03  Ian Lance Taylor  <iant@google.com>
28408
28409         * lower-subreg.c (simple_move_operand): New static function,
28410         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
28411         operands.
28412         (simple_move): Call simple_move_operand.
28413         (find_decomposable_subregs): Add special handling of MEMs.
28414         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
28415         meaning of return value.  If we see a hard register, test whether
28416         it can store a word_mode value.  Change all callers.
28417
28418 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28419
28420         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
28421         ftrapv insns and expanders.
28422         (subdi3): Change define_expand operand 1 to arith11_operand, and
28423         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
28424         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
28425         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
28426         respectively.
28427
28428         PR middle-end/30174
28429         * varasm.c (notice_global_symbol): Treat global objects as weak when
28430         flag_shlib is true.
28431
28432 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28433
28434         * emit-rtl.c (dconstpi): Delete.
28435         (dconstsqrt2): New.
28436         (init_emit_once): Delete dconstpi and init dconstsqrt2.
28437         * real.h (dconstpi): Delete.
28438         (dconstsqrt2): New.
28439         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
28440         (fold_builtin_hypot): Likewise.
28441
28442 2007-02-03  Tom Tromey  <tromey@redhat.com>
28443
28444         PR driver/30246
28445         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
28446         -gcoff3, -gxcoff3, -gvms3 implies -dD.
28447
28448 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
28449
28450         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
28451         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
28452         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
28453         config/rs6000/cell.md, config/rs6000/darwin.h,
28454         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
28455         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
28456         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
28457         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
28458         typos.  Follow spelling conventions.
28459         * doc/invoke.texi: Follow spelling conventions.
28460
28461 2007-02-03  Roger Sayle  <roger@eyesopen.com>
28462
28463         * simplify-rtx.c (simplify_relational_operation_1): Implement some
28464         canonicalization transformations that attempt to simplify integer
28465         constant comparisons to become comparisons against zero.
28466
28467 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28468
28469         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
28470         fabs(x)*sqrt(2).
28471         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
28472         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
28473
28474 2007-02-02  Mike Stump  <mrs@apple.com>
28475
28476         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
28477         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
28478         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
28479         generate a branch island.
28480
28481 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
28482
28483         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
28484         (xtensa_legitimate_address_p): New.
28485         (xtensa_legitimize_address): New.
28486         (xtensa_output_addr_const_extra): New.
28487         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
28488         (BASE_REG_P): New.
28489         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
28490         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
28491         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
28492         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
28493         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
28494         (xtensa_legitimize_address): New.
28495         (xtensa_output_addr_const_extra): New.
28496
28497 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
28498
28499         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
28500
28501 2007-02-02  Ian Lance Taylor  <iant@google.com>
28502
28503         * expmed.c (expand_divmod): Add comment.
28504
28505 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
28506
28507         * emit-rtl.c (renumber_insns): Remove.
28508         * flags.h: Remove the extern for flag_renumber_insns.
28509         * rtl.h: Remove the prototype for renumber_insns.
28510         * toplev.c (flag_renumber_insns): Remove.
28511
28512 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
28513
28514         Revert for x86 darwin:
28515         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
28516
28517         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
28518         code before the following patch under TARGET_MACHO.
28519         (ix86_function_value_regno_p): Likewise.
28520
28521 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28522
28523         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
28524         COMPLEX_EXPR.
28525
28526 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
28527
28528         PR target/29682
28529         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
28530         loads to general or fp registers.  Add comments.
28531         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
28532
28533 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
28534
28535         * pointer-set.c (insert_aux): Only return insertion slot.
28536         (pointer_set_insert): Adjust.
28537         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
28538         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
28539         pointer_map_traverse): New.
28540         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
28541         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
28542         pointer_map_contains, pointer_map_traverse): Declare.
28543
28544 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
28545
28546         PR middle-end/30473
28547         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
28548         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
28549
28550 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
28551
28552         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
28553
28554         (struct _dep): New type.
28555         (dep_t): New typedef.
28556         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
28557         (DEP_STATUS): New access macro.  The macro with the same name was
28558         renamed to DEP_LINK_STATUS.
28559         (dep_init): Declare function
28560
28561         (struct _dep_link): New type.
28562         (dep_link_t): New typedef.
28563         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
28564         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
28565         (DEP_LINK_STATUS): New macro.
28566         (debug_dep_links): New debug function.
28567
28568         (struct _deps_list): New type.
28569         (deps_list_t): New typedef.
28570         (DEPS_LIST_FIRST): New access macro.
28571         (FOR_EACH_DEP_LINK): New cycle macro.
28572         (create_deps_list, free_deps_list, delete_deps_list): Declare
28573         functions.
28574         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
28575         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
28576         (copy_deps_list_change_con): Ditto.
28577
28578         (move_dep_link): Declare function.
28579
28580         (struct _dep_node): New type.
28581         (dep_node_t): New typedef.
28582         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
28583
28584         (struct haifa_insn_data.back_deps): New field to hold backward
28585         dependencies of the insn.
28586         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
28587         to deps_list_t.
28588         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
28589         Change its type to deps_list_t.
28590         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
28591         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
28592         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
28593
28594         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
28595
28596         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
28597
28598         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
28599         and all callers.
28600         (dep_cost): Declare.
28601
28602         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
28603         (ds_to_dk, dk_to_ds): New functions.
28604
28605         (init_dep_1): New static function.
28606         (init_dep): New function.
28607         (copy_dep): New static function.
28608
28609         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
28610         functions.
28611         (detach_dep_link): New static function.
28612         (move_dep_link): New function.
28613
28614         (dep_links_consistent_p, dump_dep_links): New static functions.
28615         (debug_dep_links): New debugging function.
28616
28617         (deps_obstack, dl_obstack, dn_obstack): New static variables.
28618
28619         (alloc_deps_list, init_deps_list): New static functions.
28620         (create_deps_list): New function.
28621         (clear_deps_list): New static function.
28622         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
28623         (deps_list_consistent_p, dump_deps_list): New static functions.
28624         (debug_deps_list): New function.
28625         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
28626         functions.
28627         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
28628
28629         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
28630         use new scheduler dependencies lists.
28631         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
28632         (sched_analyze): Ditto.  Initialize dependencies lists.
28633         (add_forw_dep, compute_forward_dependences): Update to use new
28634         scheduler dependencies lists.
28635
28636         (init_dependency_caches): Init deps_obstack.
28637         (free_dependency_caches): Free deps_obstack.
28638
28639         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
28640         new scheduler dependencies lists.
28641         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
28642         (add_back_forw_dep, delete_back_forw_dep): Ditto.
28643
28644         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
28645         Update to use new scheduler dependencies lists.
28646         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
28647         (debug_dependencies): Ditto.
28648         (schedule_region): Update comments.
28649
28650         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
28651         scheduler dependencies lists.
28652         (schedule_ebb): Update comments.
28653
28654         * rtl.def (DEPS_LIST): Remove.
28655
28656         * lists.c (unused_deps_list): Remove.
28657         (free_list): Update assertions.
28658
28659         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
28660         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
28661
28662         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
28663         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
28664
28665         * haifa-sched.c (comments): Update.
28666         (insn_cost1): Remove.  Inline the code into insn_cost ().
28667         (insn_cost): Update to use new scheduler dependencies lists.  Move
28668         processing of the dependency cost to dep_cost ().
28669         (dep_cost): New function.  Use it instead of insn_cost () when
28670         evaluating cost of the dependency.  Use compatible interface to
28671         interact with the target.
28672         (priority): Update to use new scheduler dependencies lists.
28673         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
28674         with greater number of insns that depend on the insn.
28675         (schedule_insn): Update to use new scheduler dependencies lists.  Add
28676         code to free backward dependencies lists.  Inline and optimize code
28677         from resolve_dep () - see PR28071.
28678         (ok_for_early_queue_removal): Update to use new scheduler dependencies
28679         lists.  Update call to targetm.sched.is_costly_dependence hook.
28680
28681         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
28682         scheduler dependencies lists.
28683
28684         (resolve_dep): Remove.  Move the logic to schedule_insn ().
28685         (init_h_i_d): Initialize dependencies lists.
28686
28687         (process_insn_depend_be_in_spec): Rename to
28688         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
28689         dependencies lists.
28690         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
28691         Update to use new scheduler dependencies lists.
28692         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
28693
28694         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
28695         new scheduler dependencies lists.
28696         (build_intra_loop_deps): Ditto.
28697
28698         * target.h (struct _dep): Declare to use in
28699         gcc_target.sched.is_costly_dependence.
28700         (struct gcc_target.sched.adjust_cost): Fix typo.
28701         (struct gcc_target.sched.is_costly_dependence): Change signature to
28702         use single dep_t parameter instead of an equivalent triad.
28703         (struct gcc_target.sched.adjust_cost_2): Remove.
28704
28705         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
28706
28707         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
28708
28709         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
28710         documentation.
28711         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
28712
28713         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
28714         (REG_DEP_TRUE): Document.
28715
28716         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
28717         Change signature to correspond to the targetm.sched.adjust_cost hook.
28718         Update use in TARGET_SCHED_ADJUST_COST_2.
28719         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
28720         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
28721         new scheduler dependencies lists.
28722         (ia64_gen_check): Ditto.
28723
28724         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
28725         scheduler dependencies lists.
28726
28727         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
28728         signature to correspond to the targetm.sched.is_costly_dependence hook.
28729         (is_costly_group): Update to use new scheduler dependencies lists.
28730
28731         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
28732         instead of INSN_COST () macro.
28733
28734 2007-02-01  Ian Lance Taylor  <iant@google.com>
28735
28736         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
28737
28738 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
28739
28740         * pa.md (tp_load): Correct mfctl instruction syntax.
28741
28742 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
28743
28744         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
28745         altivec_padding_size calculation on AIX.  Improve comment, add
28746         assert to verify that it's right.
28747
28748         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
28749         64-bit.
28750
28751 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
28752
28753         PR inline-asm/28686
28754         * global.c (global_alloc): Add mising initialization of
28755         ELIMINABLE_REGSET.
28756
28757 2007-02-01  Roger Sayle  <roger@eyesopen.com>
28758
28759         * alias.c (init_alias_analysis): Correct whitespace.
28760         * bb-reorder.c (fix_edges_for_rarely_executed_code,
28761         partition_hot_cold_basic_blocks): Likewise.
28762         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
28763         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
28764         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
28765         fold_builtin_snprintf_chk, fold_builtin_printf,
28766         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
28767         do_mpfr_arg3, do_mpfr_sincos): Likewise.
28768         * cfgcleanup.c (cleanup_cfg): Likewise.
28769         * cfgexpand.c (tree_expand_cfg): Likewise.
28770         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
28771         * function.c (get_next_funcdef_no): Likewise.
28772         * gengtype.c (main): Likewise.
28773         * genmodes.c (main): Likewise.
28774         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
28775         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
28776         * ifcvt.c (noce_emit_move_insn): Likewise.
28777         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
28778         Likewise.
28779         * stor-layout.c (get_best_mode): Likewise.
28780         * tree-ssa-loop-niter.c (get_val_for): Likewise.
28781         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
28782         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
28783         perform_var_substitution, solve_graph): Likewise.
28784         * tree-vrp.c (vrp_finalize): Likewise.
28785
28786 2007-02-01  Ian Lance Taylor  <iant@google.com>
28787
28788         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
28789         high part of a paradoxical subreg, return a constant zero.
28790
28791 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
28792
28793         * toplev.c (lang_dependent_init): Call init_set_costs.
28794         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
28795
28796 2007-02-01  Richard Guenther  <rguenther@suse.de>
28797
28798         PR middle-end/30656
28799         * fold-const.c (fold_negate_expr): Allow negating a
28800         constant if overflow does not change.
28801
28802 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28803
28804         * doc/c-tree.texi (Expression trees): Improve markup.
28805         * doc/tm.texi (Register Classes, Addressing Modes)
28806         (Floating Point): Fix spacing after abbreviations.  Fix some
28807         typos.
28808
28809 2007-02-01  Ben Elliston  <bje@au.ibm.com>
28810
28811         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
28812         * doc/contrib.texi: Likewise.
28813         * doc/install.texi: Likewise.
28814
28815 2007-01-31  Richard Henderson  <rth@redhat.com>
28816             Ian Lance Taylor  <iant@google.com>
28817
28818         * lower-subreg.c: New file.
28819         * rtl.def (CONCATN): Define.
28820         * passes.c (init_optimization_passes): Add pass_lower_subreg and
28821         pass_lower_subreg2.
28822         * emit-rtl.c (update_reg_offset): New static function, broken out
28823         of gen_rtx_REG_offset.
28824         (gen_rtx_REG_offset): Call update_reg_offset.
28825         (gen_reg_rtx_offset): New function.
28826         * regclass.c: Revert patch of 2006-03-05, restoring
28827         reg_scan_update.
28828         (clear_reg_info_regno): New function.
28829         * dwarf2out.c (concatn_loc_descriptor): New static function.
28830         (loc_descriptor): Handle CONCATN.
28831         * common.opt (fsplit_wide_types): New option.
28832         * opts.c (decode_options): Set flag_split_wide_types when
28833         optimizing.
28834         * timevar.def (TV_LOWER_SUBREG): Define.
28835         * rtl.h (gen_reg_rtx_offset): Declare.
28836         (reg_scan_update): Declare.
28837         * regs.h (clear_reg_info_regno): Declare.
28838         * tree-pass.h (pass_lower_subreg): Declare.
28839         (pass_lower_subreg2): Declare.
28840         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
28841         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
28842         -fsplit-wide-types.
28843         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
28844         * Makefile.in (OBJS-common): Add lower-subreg.o.
28845         (lower-subreg.o): New target.
28846
28847 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
28848
28849         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
28850
28851 2007-01-31  Anatoly Sokolov <aesok@post.ru>
28852
28853         PR target/19087
28854         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
28855
28856 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28857
28858         PR middle-end/29335
28859         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
28860
28861 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
28862
28863         * cfgloop.h: Include vec-prim.h.
28864         (enum li_flags): Remove LI_ONLY_OLD.
28865         (loop_iterator): Changed.
28866         (fel_next, fel_init): Iterate over loop tree.
28867         (FOR_EACH_LOOP_BREAK): New macro.
28868         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
28869         FOR_EACH_LOOP.
28870         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
28871         * modulo-sched.c (sms_schedule): Ditto.
28872         * tree-vectorizer.c (vectorize_loops): Ditto.
28873         * doc/loop.texi: Update information on loop numbering and behavior of
28874         FOR_EACH_LOOP wrto new loops.
28875         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
28876         add_to_evolution_1): Test nestedness of loops instead of comparing
28877         their numbers.
28878         * tree-chrec.c (chrec_fold_plus_poly_poly,
28879         chrec_fold_multiply_poly_poly, chrec_evaluate,
28880         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
28881         reset_evolution_in_loop): Ditto.
28882         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
28883
28884 2007-01-31  Dirk Mueller  <dmueller@suse.de>
28885
28886         * c-common.c (warn_about_parentheses): Separate warning about
28887         un-parenthized sequence of comparison operators from the one
28888         which is supposed to warn about x <= y <= z.
28889
28890 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
28891
28892         * optabs.h (enum optab_index): Add new OTI_isinf.
28893         (isinf_optab): Define corresponding macro.
28894         * optabs.c (init_optabs): Initialize isinf_optab.
28895         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
28896         patterns.
28897         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
28898         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
28899         using isinf_optab.
28900         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
28901         expand_builtin_interclass_mathfn.
28902         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
28903         * config/i386/i386.md (UNSPEC_FXAM): New constant.
28904         (fxam<mode>2_i387): New insn pattern.
28905         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
28906         built-in functions as x87 inline asm.
28907
28908 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
28909
28910         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
28911
28912 2007-01-30  Eric Christopher  <echristo@apple.com>
28913
28914         * config.gcc: Add geode.
28915
28916 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
28917
28918         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
28919         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
28920         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
28921         value-prof.c: Fix comment typos.
28922
28923 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28924
28925         PR c++/24745
28926         * doc/invoke.texi (Wpointer-arith): Document warning.
28927
28928 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
28929
28930         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
28931         the list of discrepancies from the draft TR.
28932
28933 2007-01-30  Dirk Mueller  <dmueller@suse.de>
28934
28935         PR c++/30601
28936         * doc/invoke.texi (-Wreturn-type): Update description to
28937         match new behavior.
28938
28939 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
28940
28941         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
28942
28943 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
28944
28945         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
28946         to handle optabs that operate on floating point input argument and
28947         output to integer output.
28948         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
28949         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
28950         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
28951         expand_builtin_interclass_mathfn ().
28952         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
28953         (ilogbsi2): Remove.
28954         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
28955         ilogbl built-in functions as x87 intrinsics.
28956
28957 2007-01-30  Richard Guenther  <rguenther@suse.de>
28958
28959         PR middle-end/27657
28960         * dwarf2out.c (reference_to_unused): Query varpool if the
28961         variable was output.
28962
28963 2007-01-30  Richard Guenther  <rguenther@suse.de>
28964
28965         PR middle-end/30313
28966         * passes.c (execute_one_pass): Reset in_gimple_form to not
28967         confuse non-unit-at-a-time mode.
28968
28969 2007-01-29  Roger Sayle  <roger@eyesopen.com>
28970             Richard Guenther  <rguenther@suse.de>
28971
28972         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
28973         avoid undefined behaviour on overflow.  Use force_fit_type_double
28974         to construct the constant with the specified TREE_OVERFLOW.
28975
28976 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
28977
28978         * config/dfp-bit.c: Add parameterized support for fp exceptions.
28979         * config/dfp-bit.h: Ditto.
28980
28981 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28982
28983         * c-decl.c (pop_scope): Replace warnings with call to
28984         warn_for_unused_label.
28985         * c-common.h (warn_for_unused_label): Declare.
28986         * c-common.c (warn_for_unused_label): Define.
28987
28988 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28989
28990         * tree-optimize.c (update_inlined_to_pointers): Delete unused
28991         function.
28992
28993 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
28994
28995         * Makefile.in (USER_H): Remove decfloat.h.
28996         * ginclude/decfloat.h: Delete, moving contents to ...
28997         * ginclude/float.h: Add support for decimal floating point,
28998         guarded by __STDC_WANT_DEC_FP__.
28999
29000 2007-01-29  Mike Stump  <mrs@apple.com>
29001
29002         * doc/gccint.texi (Top): Rename Loop Representation to Loop
29003         Analysis and Representation to resolve case insensitive conflict.
29004         * doc/loop.texi (Loop Analysis and Representation): Likewise.
29005
29006 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
29007
29008         * tree.h (struct tree_memory_tag): Add aliases member.
29009         (MTAG_ALIASES): New macro.
29010         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
29011         (add_may_alias): Remove pointer-set. Update for may_aliases being
29012         a bitmap.
29013         (mark_aliases_call_clobbered): Update for may_aliases being a
29014         bitmap.
29015         (compute_tag_properties): Ditto.
29016         (create_partition_for): Ditto.
29017         (compute_memory_partitions): Ditto.
29018         (dump_may_aliases_for): Ditto.
29019         (is_aliased_with): Ditto.
29020         (add_may_alias_for_new_tag): Ditto.
29021         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
29022         (compute_is_aliased): New function.
29023         (compute_may_aliases): Call compute_is_aliased).
29024         (init_alias_info): Initialize alias_bitmap_obstack.
29025         (union_alias_set_into): New function.
29026         (compute_flow_sensitive_aliasing): Use union_aliases_into.
29027         (have_common_aliases_p): Rewrite to take two bitmaps and use
29028         intersection.
29029         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
29030         Update for bitmaps.
29031         (finalize_ref_all_pointers): Update for add_may_alias changes.
29032         (new_type_alias): Ditto.
29033         * tree-flow-inline.h (may_aliases): Return a bitmap.
29034         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
29035         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
29036         may_aliases being a bitmap.
29037         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
29038         may_aliases now returns a bitmap.
29039         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
29040         being a bitmap.
29041         * tree-ssa-operands.c (add_virtual_operand): Update for
29042         may_aliases being a bitmap.
29043
29044 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
29045
29046         PR tree-optimization/30630
29047         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
29048         variable as changed.
29049
29050 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
29051
29052         PR c++/28266
29053         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
29054         expanded only once even if an error occurs.
29055
29056 2007-01-29  Ben Elliston  <bje@au.ibm.com>
29057
29058         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
29059         (__gcov_average_profiler): Likewise.
29060         (__gcov_ior_profiler): Likewise.
29061         (__gcov_merge_ior): Likewise.
29062
29063 2007-01-28  Jan Hubicka  <jh@suse.cz>
29064
29065         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
29066         * value-prof.c (stringop_block_profile): Likewise.
29067
29068 2007-01-28  Jan Hubicka  <jh@suse.cz>
29069
29070         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
29071         Add variant handling histograms; add wrapper.
29072         (clear_storage_via_libcall): Export.
29073         (emit_block_move_hints): Break out from ...; add histograms.
29074         (emit_block_move): ... this one.
29075         (clear_storage_hints): Break out from ...; add histograms.
29076         (clear_storage): ... this one.
29077         (set_storage_via_memset): Handle histogram.
29078         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
29079         (clear_storage_hints, clear_storage_via_libcall): Declare.
29080         (set_storage_via_setmem): Update prototype.
29081         * doc/md.texi (movmem, setmem): Document new arguments.
29082
29083         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
29084         Add new histograms.
29085         (stringop_block_profile): New global function.
29086         (tree_stringops_values_to_profile): Profile block size and alignment.
29087         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
29088         HIST_TYPE_IOR.
29089         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
29090         (stringop_block_profile): Declare.
29091         * builtins.c: Include value-prof.h.
29092         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
29093         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
29094         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
29095         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
29096         * profile.c (instrument_values): Add new counters.
29097         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
29098         calls.
29099         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
29100         (tree_init_edge_profiler): Build new profilers.
29101         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
29102         (pass_tree_profile): Add dump.
29103         (tree_profile_hooks): Update.
29104         * Makefile.in (LIBGCOV): Add new constants.
29105         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
29106         __gcov_ior_profiler): New.
29107         * i386.md (movmem/setmem expanders): Add new optional arguments.
29108
29109 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
29110
29111         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
29112
29113 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
29114
29115         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
29116         (tree_unswitch_single_loop): Pass eni_size_weights to
29117         tree_num_loop_insns.
29118         * tree-ssa-loop-manip.c: Include tree-inline.h.
29119         (can_unroll_loop_p): Pass eni_size_weights to
29120         tree_num_loop_insns.
29121         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
29122         Pass eni_size_weights to estimate_num_insns.
29123         * tree.h (init_inline_once): Export.
29124         * toplev.c (backend_init): Call init_inline_once.
29125         * cgraphunit.c (cgraph_process_new_functions,
29126         cgraph_analyze_function): Pass eni_inlining_weights to
29127         estimate_num_insns.
29128         * ipa-inline.c (compute_inline_parameters): Ditto.
29129         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
29130         to estimate_num_insns.
29131         (try_unroll_loop_completely): Pass eni_size_weights to
29132         tree_num_loop_insns.
29133         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
29134         ot estimate_num_insns.
29135         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
29136         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
29137         * tree-inline.c (eni_inlining_weights, eni_size_weights,
29138         eni_time_weights): New variables.
29139         (init_inline_once): Initialize them.
29140         (struct eni_data): Mew.
29141         (estimate_num_insns_1, estimate_num_insns): Use weights.
29142         * tree-inline.h (struct eni_weights_d): New.
29143         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
29144         (estimate_num_insns): Declaration changed.
29145         * cfgloop.h (tree_num_loop_insns): Declaration changed.
29146         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
29147         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
29148
29149 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
29150
29151         * tree-data-ref.c (conflict_fn): Assert that the number of affine
29152         relations in the conflict function is valid.
29153
29154 2007-01-27  Ian Lance Taylor  <iant@google.com>
29155
29156         * common.opt: Add fstrict-overflow.
29157         * opts.c (decode_options): Set flag_strict_overflow if -O2.
29158         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
29159         (TYPE_OVERFLOW_UNDEFINED): Define.
29160         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
29161         Replace all uses.
29162         * tree.h (TYPE_TRAP_SIGNED): Don't define.
29163         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
29164         (fold_negate_expr): Likewise.
29165         (make_range): Likewise.
29166         (extract_muldiv_1): Likewise.
29167         (maybe_canonicalize_comparison): Likewise.
29168         (fold_comparison): Likewise.
29169         (fold_binary): Likewise.
29170         (tree_expr_nonnegative_p): Likewise.
29171         (tree_expr_nonzero_p): Likewise.
29172         * tree-vrp.c (compare_values): Likewise.
29173         (extract_range_from_binary_expr): Likewise.
29174         (extract_range_from_unary_expr): Likewise.
29175         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
29176         Likewise.
29177         (nowrap_type_p): Likewise.
29178         * tree-scalar-evolution.c (simple_iv): Likewise.
29179         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
29180         (build_range_check): Likewise.
29181         (extract_muldiv_1): Likewise.
29182         (fold_comparison): Likewise.
29183         * tree-vrp.c (vrp_int_const_binop): Likewise.
29184         (extract_range_from_unary_expr): Likewise.
29185         * convert.c (convert_to_integer): Likewise.
29186         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
29187         (fold_comparison): Likewise.
29188         (fold_binary): Likewise.
29189         * optabs.c (optab_for_tree_code): Likewise.
29190         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
29191         * simplify-rtx.c (simplify_const_relational_operation): Check
29192         flag_strict_overflow and flag_trapv.
29193         (simplify_const_relational_operation): Likewise.
29194         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
29195         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
29196         -fstrict-overflow.
29197
29198 2007-01-27  Roger Sayle  <roger@eyesopen.com>
29199
29200         * tree.c (tree_fold_gcd): Delete.
29201         * tree.h (tree_fold_gcd): Remove prototype.
29202         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
29203         test whether one constant integer is a multiple of another.  Instead
29204         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
29205         * fold-const.c (multiple_of_p): We've determined both TOP and
29206         BOTTOM are integer constants so we can call int_const_binop directly
29207         instead of the more generic const_binop.
29208
29209 2007-01-27  Roger Sayle  <roger@eyesopen.com>
29210
29211         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
29212         1*X check that the constant hasn't overflowed, to preserve the
29213         TREE_OVERFLOW bit.
29214         (round_up): Provide an efficient implementation when rouding-up an
29215         INTEGER_CST to a power-of-two.
29216
29217 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29218
29219         * doc/sourcebuild.texi: Add comma for clarity.
29220         * doc/extend.texi: Fix some typos.
29221         * doc/passes.texi: Likewise.
29222         * doc/cppinternals.texi: Likewise.
29223         * doc/c-tree.texi: Likewise.
29224         * doc/tree-ssa.texi: Likewise.
29225         * doc/install.texi: Likewise.
29226
29227 2007-01-27  Jan Hubicka  <jh@suse.cz>
29228
29229         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
29230         (pass_sra): Do not require alias information.
29231         * passes.c (init_optimization_passes): Add SRA
29232
29233 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
29234
29235         * tracer.c (rest_of_handle_tracer): We already cleaned
29236         up the CFG in tracer() so don't do it here again.
29237         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
29238         cleanup_cfg here, either.  And don't call renumber_insns.
29239
29240         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
29241         and BB_HEAD are in the insn stream here.  Instead make sure
29242         that BB_INSN is valid on all insns.  Also, do check here that
29243         there are no pending branch predictions...
29244         (rtl_verify_flow_info): ...instead of doing it here.  Checks
29245         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
29246         here.
29247
29248 2007-01-26  Roger Sayle  <roger@eyesopen.com>
29249
29250         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
29251         function to simplify/factorize operand order canonicalization.
29252         (ix86_fixup_binary_operands): Reorganize using the above function.
29253         (ix86_binary_operator_ok): Likewise.
29254
29255 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
29256
29257         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
29258         file scope from optimize_attrs.
29259         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
29260         up search.
29261         (optimize_attrs): Clear insn_code_values after freeing it.
29262
29263 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
29264
29265         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
29266         a parts.base assignment.
29267
29268 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
29269
29270         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
29271         (compute_subscript_distance, initialize_data_dependence_relation,
29272         finalize_ddr_dependent, analyze_ziv_subscript,
29273         analyze_siv_subscript_cst_affine,
29274         compute_overlap_steps_for_affine_univar,
29275         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
29276         analyze_siv_subscript, analyze_miv_subscript,
29277         analyze_overlapping_iterations, subscript_dependence_tester_1,
29278         compute_self_dependence, free_dependence_relation): Work
29279         with affine_fn instead of chrecs.
29280         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
29281         common_affine_function, affine_function_base,
29282         affine_function_constant_p, affine_fn_op, affine_fn_plus,
29283         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
29284         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
29285         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
29286         (all_chrecs_equal_p): Removed.
29287         * tree-data-ref.h (affine_fn, conflict_function): New types.
29288         (struct subscript): Change type of conflicting_iterations_in_a
29289         and conflicting_iterations_in_b.
29290
29291 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
29292
29293         PR other/30182
29294         * config/pa/pa.h (TARGET_HPUX_11): New.
29295         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
29296         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
29297
29298 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
29299         Richard Guenther  <rguenther@suse.de>
29300
29301         * tree-ssa-structalias.c (solve_graph): Handle case
29302         we merged the variable to another.
29303
29304 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29305
29306         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
29307         functions.
29308
29309         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
29310         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
29311
29312 2007-01-25  DJ Delorie  <dj@redhat.com>
29313
29314         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
29315         allow changes to modes which don't fit in those registers.
29316
29317         * reload1.c (choose_reload_regs): Check for invalid subregs before
29318         computing their locations, not after.
29319
29320 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
29321
29322         PR 25127
29323         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
29324         save Altivec registers in an eh_return function.
29325         (compute_vrsave_mask): Likewise.
29326         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
29327         for saving Altivec registers.
29328         (rs6000_emit_prologue): Don't allocate stack twice in
29329         eh_return function.  Correct expected value of altivec_save_offset
29330         when using save_world.  Describe save of R0 to stack when using
29331         save_world.  Describe stack pointer adjustment when using
29332         save_world.  Remove duplicated eh_return parameter register saving.
29333         Update sp_offset variable after save_world.
29334         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
29335         darwin-world.asm.
29336         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
29337         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
29338         implies Altivec.
29339
29340 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
29341
29342         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
29343
29344 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
29345
29346         PR other/30182
29347         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
29348         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
29349
29350 2007-01-25  Richard Guenther  <rguenther@suse.de>
29351
29352         * doc/invoke.texi (-Wcoverage-mismatch): Document.
29353         * common.opt (-Wcoverage-mismatch): New warning option.
29354         * coverage.c (get_coverage_counts): Ignore coverage mismatch
29355         if -Wcoverage-mismatch is given.
29356
29357 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
29358
29359         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
29360         (ipcp_driver): Change to static definition.
29361         Add dumping of the ifunctions.
29362         (constant_val_insert): Remove unused parameter. Support for SSA.
29363         (ipcp_propagate_const): Support for SSA.
29364         (ipcp_profile_bb_print): Print only analyzed nodes.
29365         (ipcp_replace_map_create): Remove support for Fortran constant
29366         for now.
29367         * ipa-prop.c (ipa_method_modify_stmt,
29368         ipa_callsite_compute_param): Support for SSA.
29369         * ipa-prop.h (ipcp_driver): Remove declaration.
29370         (IS_VALID_TREE_MAP_INDEX): Add define.
29371
29372 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
29373
29374         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
29375
29376 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29377
29378         PR middle-end/30447
29379         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
29380         constant argument to cabs and do it without checking for
29381         -funsafe-math-optimizations.
29382
29383 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
29384
29385         * c-common.h (RID_FIRST_CXX0X): New.
29386         (RID_LAST_CXX0X): New.
29387         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
29388         by -Wall.
29389         * c.opt (Wc++0x-compat): New.
29390         * doc/invoke.texi (-Wc++0x-compat): Document.
29391
29392 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29393
29394         * builtins.c (fold_builtin_carg): New.
29395         (fold_builtin_1): Use it.
29396
29397 2007-01-24  Jan Hubicka  <jh@suse.cz>
29398
29399         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
29400
29401         * ipa-inline.c (initial_insns, max_insns): Delete.
29402         (compute_max_insns): New function.
29403         (cgraph_decide_inlining_of_small_function): Use it; take minimal
29404         amount of insns as base for code growth.
29405         (cgraph_decide_inlining): Make initial_insns local; do not compute
29406         max_insns.
29407         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
29408         * doc/invoke.texi (inline-unit-growth): Update docs.
29409
29410 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
29411
29412         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
29413         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
29414         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
29415         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
29416         for CPUs that have PTA_CX16 set.
29417
29418         PR middle-end/27416
29419         * gimplify.c (omp_check_private): New function.
29420         (gimplify_scan_omp_clauses): Use it for
29421         firstprivate/lastprivate/reduction.
29422
29423         PR middle-end/30494
29424         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
29425         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
29426
29427         PR middle-end/30421
29428         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
29429         If lower_lastprivate_clauses emits some statements, append them
29430         to dlist rather than body_p and to body_p append an initializer.
29431         (lower_omp_for): Adjust caller.
29432
29433 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
29434
29435         * target.h (globalize_decl_name): New.
29436         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
29437         * output.h (default_globalize_decl_name): New.
29438         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
29439         globalize_label.
29440         (globalize_decl): Ditto.
29441         (default_globalize_decl_name): New.
29442         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
29443         (ia64_handle_version_id_attribute): New.
29444         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
29445         (ia64_asm_output_external): Use globalize_decl_name instead
29446         of globalize_label.
29447         * doc/extend.texi (version_id): New pragma.
29448         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
29449
29450 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
29451
29452         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
29453         _uleb128_t and _Unwind_SWord with _sleb128_t.
29454         * unwind-dw2.c (extract_cie_info, execute_stack_op,
29455         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
29456         Likewise.
29457         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
29458         * unwind-pe.h (read_uleb128, read_sleb128,
29459         read_encoded_value_with_base): Likewise.
29460         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
29461
29462 2007-01-24  Richard Guenther  <rguenther@suse.de>
29463
29464         * builtins.c (expand_builtin_cexpi): Get the fndecl
29465         for cexp in the correct way.
29466
29467 2007-01-24  Jan Hubicka  <jh@suse.cz>
29468
29469         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
29470         of calls.
29471
29472 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
29473
29474         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
29475         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
29476         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
29477         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
29478         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
29479         __SIZEOF_PTRDIFF_T__.
29480         * doc/cpp.texi: Documentation for the new builtin macros added.
29481
29482 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
29483
29484         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
29485         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
29486         instead of operands[2] to avoid access past the end of array.
29487
29488 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
29489
29490         * reload1.c (emit_reload_insns): Pass the reload register
29491         for a non-spill output reload through forget_old_reloads_1.
29492
29493 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
29494
29495         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
29496         _SOFT_DOUBLE if doubles use software floating-point.
29497         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
29498         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
29499         * config/rs6000/darwin-ldouble.c: Also compile functions for
29500         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
29501         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
29502         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
29503         commented-out long double override.
29504         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
29505         * config/rs6000/eabispe.h: Likewise.
29506         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
29507         long double for non-SPE.
29508         (rs6000_handle_option): Likewise.
29509         (invalid_e500_subreg): Disallow more subregs involding DImode,
29510         DFmode, TImode or TFmode.
29511         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
29512         E500 double.
29513         (legitimate_lo_sum_address_p): Also check for TFmode for E500
29514         double.
29515         (rs6000_legitimize_address): Also handle TFmode for E500 double.
29516         (rs6000_legitimize_reload_address): Also handle TFmode for E500
29517         double.
29518         (rs6000_legitimate_address): Also check for TFmode for E500
29519         double.
29520         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
29521         (spe_build_register_parallel): Handle TFmode and TCmode.
29522         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
29523         double.
29524         (function_arg): Handle TFmode and TCmode for E500 double.
29525         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
29526         in general.
29527         (print_operand): Handle TFmode and TImode for %y.
29528         (rs6000_generate_compare): Handle TFmode comparisons for E500
29529         double.
29530         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
29531         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
29532         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
29533         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
29534         TFmode for E500 double.
29535         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
29536         (floatsidf2): Enable for E500 double.
29537         (movtf_softfloat): Use rs6000_nonimmediate_operand.
29538         (extenddftf2): Change to extenddftf2_fprs.
29539         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
29540         depending on TARGET_E500_DOUBLE.
29541         (extendsftf2): Enable for E500 double.
29542         (trunctfdf2): Enable for E500 double.
29543         (trunctfsf2): Change to trunctfsf2_fprs.
29544         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
29545         depending on TARGET_E500_DOUBLE.
29546         (floatsitf2): Enable for E500 double.
29547         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
29548         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
29549         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
29550         (negtf2): Change to negtf2_internal.
29551         (negtf2): New expander.
29552         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
29553         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
29554         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
29555         (movdi_internal32): Use rs6000_nonimmediate_operand.
29556         (unnamed splitter): Likewise.
29557         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
29558         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
29559         (SPE64TF, DITI): New mode macros.
29560         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
29561         modes.
29562         (frob_tf_ti): New.
29563         (frob_<mode>_di_2): New.
29564         (frob_tf_di_8_2): New.
29565         (frob_di_df): Change to frob_di_<mode>; allow more modes.
29566         (frob_ti_tf): New.
29567         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
29568         more modes.
29569         (frob_ti_<mode>_8_2): New.
29570         (frob_ti_tf_2): New.
29571         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
29572         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
29573         TFmode.
29574         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
29575         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
29576         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
29577         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
29578         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
29579         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
29580         tsttflt_gp): New.
29581
29582 2007-01-23  Ian Lance Taylor  <iant@google.com>
29583
29584         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
29585         insn-*.o first.
29586         (OBJS-archive): Reformat, alphabetize.
29587         (OBJS): Change out_object_file to OBJS-md.
29588
29589 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
29590
29591         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
29592         JUMP_P and CALL_P predicates where applicable.
29593         * config/i386/i386.c: Ditto.
29594         * config/i386/i386.md: Ditto.
29595         * config/i386/mmx.md: Ditto.
29596         * config/i386/predicates.md: Ditto.
29597
29598 2007-01-22  Andreas Schwab  <schwab@suse.de>
29599
29600         * config/m68k/m68k.h: Fix comment.
29601
29602 2007-01-22  Jan Hubicka  <jh@suse.cz>
29603
29604         * passes.c (init_optimization_passes): Do not rerun
29605         pass_early_warn_uninitialized.
29606
29607 2007-01-22  Richard Guenther  <rguenther@suse.de>
29608
29609         PR tree-optimization/30038
29610         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
29611         function.
29612         (execute_cse_sincos_1): Likewise.
29613         (execute_cse_sincos): Likewise.
29614         (gate_cse_sincos): Likewise.
29615         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
29616         the cexpi() canonicalization of sincos().
29617         * tree-pass.h (pass_cse_sincos): Declare.
29618         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
29619
29620 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
29621
29622         PR rtl-optimization/29329
29623         * combine.c (replaced_rhs_insn): Rename to i2mod.
29624         (replaced_rhs_value): Rename to i2mod_new_rhs.
29625         (i2mod_old_rhs): New global variable.
29626         (combine_instructions): Adjust for above change.  Save a copy of
29627         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
29628         note are substituted in the second instruction.
29629         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
29630         ditch the note if it pertains to the second eliminated register
29631         and this register is mentioned in i2mod_old_rhs.
29632
29633         Revert:
29634         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
29635
29636         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
29637         the insn to which the note was originally attached.
29638
29639 2007-01-21  Jan Hubicka  <jh@suse.cz>
29640
29641         * ipa-inline.c (inlining_mode): Comment, move up.
29642         (cgraph_decide_inlining_incrementally): Do not perform inlining
29643         itself; fix handling of flattening of self recursive functions.
29644         (cgraph_find_cycles): Remove.
29645         (cgraph_flatten_node): Remove.
29646         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
29647         (try_inline): New function.
29648         (cgraph_early_inlining): Update call of
29649         cgraph_decide_inlining_incrementally.  Apply inlining here.
29650         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
29651
29652 2007-01-21  Dirk Mueller  <dmueller@suse.de>
29653
29654         PR bootstrap/30511
29655         * tree-vrp.c (check_array_bounds): do not warn
29656         about ADDR_EXPR's of ARRAY_REF's which are immediately
29657         used in binary expressions.
29658
29659 2007-01-21  Ira Rosen  <irar@il.ibm.com>
29660
29661         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
29662         read_write_dep and macros for its access.
29663         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
29664         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
29665         argument, call vect_check_interleaving for every independent pair of
29666         data-refs. Mark loads that access the same memory location as a store
29667         in the loop.
29668         (vect_check_dependences): Remove.
29669         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
29670         call, fix the call to vect_analyze_data_ref_dependence.
29671         (vect_analyze_data_ref_access): For statements that access the same
29672         data-ref, check that they are not stores; for loads, check that there
29673         is no store that access the same location.
29674
29675 2007-01-20  Roger Sayle  <roger@eyesopen.com>
29676             Joseph Myers  <joseph@codesourcery.com>
29677
29678         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
29679         (-fdump-rtl-stack): Likewise.
29680         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
29681         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
29682         (-mpt-fixed): Use @minus{} for minus sign.
29683         (Using Precompiled Headers): Fix under/overfull hbox.
29684
29685 2007-01-20  Jan Hubicka  <jh@suse.cz>
29686
29687         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
29688         place within annotation.
29689
29690 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
29691
29692         * pa.c (output_move_double): Change array size of xoperands to 4.
29693
29694 2007-01-20  Jan Hubicka  <jh@suse.cz>
29695
29696         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
29697         as temporary.
29698
29699 2007-01-19  Ian Lance Taylor  <iant@google.com>
29700
29701         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
29702         constant to unsigned HOST_WIDE_INT before negating.
29703
29704 2007-01-19  Ian Lance Taylor  <iant@google.com>
29705
29706         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
29707         to unsigned.
29708         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
29709         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
29710         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
29711         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
29712         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
29713         (realloc_vdef, realloc_vuse): Change second parameter to
29714         unsigned.
29715         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
29716         fields to unsigned.
29717         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
29718         unsigned. Change x and lim locals to unsigned.
29719         (realloc_vdef, realloc_vuse): Change num_elem parameter to
29720         unsigned.
29721         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
29722         (copy_virtual_operands): Change i and n locals to unsigned.
29723
29724 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29725
29726         PR middle-end/29335
29727         * builtins.c (fold_builtin_1): Handle builtin fdim.
29728
29729 2007-01-20  Jan Hubicka  <jh@suse.cz>
29730
29731         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
29732         * tree-ssa-structalias.c (compute_points_to_sets): Do call
29733         init_alias_heapvars.
29734         (init_alias_heapvars): Initialize only when not already initialized.
29735         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
29736
29737 2007-01-19  Roger Sayle  <roger@eyesopen.com>
29738
29739         * common.opt (fsigned-zeros): New command line option.
29740         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
29741         of flag_unsafe_math_optimizations.
29742         * opts.c (set_fast_math_flags): The -ffast-math command line option
29743         implies -fno-signed-zeros.
29744         (fast_math_flags_set_p): Likewise.
29745
29746         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
29747         the documentation of -ffast-math appropriately.  Wrap long lines.
29748
29749 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
29750
29751         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
29752         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
29753
29754 2007-01-19  Tomas Bily  <tbily@suse.cz>
29755
29756         * cgraphunit.c (cgraph_finalize_function): Updating of pid
29757         * tree-profile.c:
29758         (tree_init_ic_make_global_vars): New function
29759         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
29760         (tree_gen_ic_profiler): New function
29761         (tree_gen_ic_func_profiler): New function
29762         (tree_profiling): Added calling of tree_gen_ic_func_profiler
29763         (tree_profile_hooks): Added hook for indirec/virtual calls
29764         * value-prof.c (tree_find_values_to_profile): New case for
29765         indirect calls
29766         (tree_values_to_profile): Call for determining indirect/virtual
29767         counters
29768         (tree_indirect_call_to_profile): New function
29769         (tree_ic_transform): New function
29770         (tree_ic): New function
29771         (find_func_by_pid): New function
29772         (init_pid_map): New function
29773         (tree_value_profile_transformations): Added check for
29774         indirect/virtual call transformation
29775         * value-prof.h (enum hist_type): New counter type for
29776         indirect/virtual calls
29777         (profile_hooks): Added new hook for profiling indirect/virtual
29778         calls
29779         * profile.c (instrument_values): New case for indirect/virtual
29780         call added
29781         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
29782         (GCOV_COUNTER_V_INDIR): New counter type
29783         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
29784         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
29785         call added
29786         * cgraph.c: Definition of cgraph_max_pid
29787         (cgraph_create_node): Default init of pid attribute
29788         * cgraph.h: Declaration of cgraph_max_pid
29789         (struct cgraph_node): Added pid attribute
29790         * libgcov.c (__gcov_indirect_call_profiler): New function
29791         (__gcov_one_value_profiler_body): New function
29792         (__gcov_one_value_profiler): Body was moved to
29793         __gcov_one_value_profiler_body and calls it
29794
29795 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
29796
29797         * doc/gty.texi (Options): Document the mark_hook option to GTY.
29798         * gengtype.c (write_types_data, write_func_for_structure,
29799         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
29800         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
29801         (walk_type, write_func_for_structure): Generate the mark_hook if
29802         needed.
29803
29804 2007-01-19  Jan Hubicka  <jh@suse.cz>
29805
29806         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
29807         'early' argument take inlining mode argument specifying whether to
29808         inline for size/speeed or all functions; add support for flattening;
29809         improve dumpting.
29810         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
29811
29812 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29813
29814         PR c++/17947
29815         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
29816         the name of the declared identifier.
29817
29818 2007-01-19  Dirk Mueller  <dmueller@suse.de>
29819
29820         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
29821         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
29822         duplicate evaluation.
29823
29824 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
29825
29826         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
29827         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
29828         to XFMode, use acosxf2 and truncate result to requested mode.
29829         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
29830         (asin<mode>2): Similarly, with asin expanders.
29831         (*fscalexf4_i387): Rename from *fscalexf4.
29832         (expNcorexf3): New expander.
29833         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
29834         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
29835         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
29836         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
29837         patterns for SSE math.
29838         (exp10<mode>2): Similarly, with exp10 expanders.
29839         (exp2<mode>2): Similarly, with exp2 expanders.
29840         (expm1<mode>2): Similarly, with expm1 expanders.
29841         (ldexp<mode>3): Similarly, with ldexp expanders.
29842         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
29843         Use gen_truncxf<mode>2_i387_noop to truncate result.
29844
29845 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29846
29847         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
29848         for ColdFire targets.
29849
29850 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
29851             Richard Sandiford  <richard@codesourcery.com>
29852
29853         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
29854         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
29855         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
29856         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
29857         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
29858         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
29859
29860 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29861
29862         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
29863         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
29864         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
29865         (*adddi_dilshr32_cf): New pattern.
29866         (adddi3, subdi3): Remove first alternatives.
29867
29868 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29869
29870         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
29871         implemented using move.l, do not use its cc result for floating-point
29872         comparisons.
29873
29874 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29875
29876         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
29877         from accepting 's' constraints if flag_pic.
29878
29879 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29880
29881         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
29882         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
29883         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
29884         condition from TARGET_68881 to TARGET_HARD_FLOAT.
29885
29886 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
29887
29888         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
29889         ColdFire alternatives.
29890         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
29891         * config/m68k/m68k.md (clzsi2): Define for ColdFire
29892         architectures that support ff1 instruction.
29893
29894 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29895             Julian Brown  <julian@codesourcery.com>
29896
29897         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
29898         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
29899         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
29900         Add commentary.
29901
29902 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29903
29904         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
29905         and return a bool.
29906         (output_move_const_into_data_reg, output_move_simode_const): Delete.
29907         * config/m68k/m68k.c (const_method, const_int_cost): Take a
29908         HOST_WIDE_INT instead of an rtx.
29909         (m68k_rtx_costs): Update call accordingly.
29910         (output_move_const_into_data_reg): Likewise.  Fix formatting.
29911         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
29912         Return a bool.
29913         (output_move_simode_const): Update calls after above changes.
29914         Rework to use automatic variables and predicates like MEM_P.
29915         * config/m68k/m68k.md (pushexthisi_const): Update call to
29916         valid_mov3q_const.
29917
29918 2007-01-19  Dirk Mueller  <dmueller@suse.de>
29919
29920         * tree-ssa-alias.c (perform_var_substitution): Fix typo
29921         in dump_flags test.
29922
29923 2007-01-19  Richard Guenther  <rguenther@suse.de>
29924
29925         * builtins.c (expand_builtin_cexpi): Fall back to expanding
29926         via cexp in case sincos is not available.
29927
29928 2007-01-19  Richard Guenther  <rguenther@suse.de>
29929
29930         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
29931         * defaults.h (TARGET_HAS_SINCOS): Default to off.
29932         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
29933         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
29934         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
29935         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
29936         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
29937         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
29938
29939 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
29940
29941         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
29942         New insn patterns.
29943         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
29944         (atan2xf3): Directly generate RTL pattern.
29945         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
29946         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
29947         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
29948         disable patterns for SSE math.
29949         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
29950         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
29951         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
29952         disable patterns for SSE math.
29953
29954 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
29955
29956         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
29957
29958 2007-01-18  Roger Sayle  <roger@eyesopen.com>
29959
29960         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
29961         VIEW_CONVERT_EXPR to the same type as it's operand.
29962
29963 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
29964
29965         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
29966         configured for long double 128.
29967
29968 2007-01-18  Mike Stump  <mrs@apple.com>
29969
29970         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
29971         error.
29972
29973 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
29974
29975         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
29976         type correct.
29977
29978 2007-01-18  Jan Hubicka  <jh@suse.cz>
29979
29980         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
29981         greater than NUM_VOP_FREE_BUCKETS.
29982
29983 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
29984
29985         * tree-ssa-structalias.c: Update comments.
29986         (ptabitmap_obstack): Removed.
29987         (pta_obstack): New.
29988         (oldpta_obstack): Ditto.
29989         (stats): Add a few members.
29990         (struct variable_info): Remove node, complex, address_taken, and
29991         indirect_target members. Add oldsolution member.
29992         (new_var_info): Do not initialize removed members.
29993         (constraint_expr_type): Remove INCLUDES.
29994         (constraint_graph): Add size, implicit_preds, rep,
29995         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
29996         (FIRST_REF_NODE): New macro.
29997         (LAST_REF_NODE): Ditto.
29998         (FIRST_ADDR_NODE): Ditto.
29999         (find): New function.
30000         (unite): Ditto.
30001         (dump_constraint): Do not handle INCLUDES.
30002         (insert_into_complex): Do not insert duplicate constraints.
30003         (condense_varmap_nodes): Renamed and rewritten into ...
30004         (merge_node_constraints): This. Also fix bug in handling of
30005         offseted copy constraints.
30006         (clear_edges_for_node): No longer need to deal with preds at all,
30007         or removing associated preds/succs.
30008         (merge_graph_nodes): Deal with indirect_cycles.
30009         Don't deal with predecessors.
30010         (add_implicit_graph_edge): New function.
30011         (add_pred_graph_edge): Ditto.
30012         (add_graph_edge): Don't deal with predecessors.
30013         (build_constraint_graph): Removed.
30014         (build_pred_graph): New function.
30015         (build_succ_graph): Ditto.
30016         (struct scc_info): Removed in_component. Added roots, dfs, and
30017         node_mapping. Remove visited_index, unification_queue.
30018         (scc_visit): Deal with union-find we do now.
30019         Deal with cycles with REF nodes.
30020         (collapse_nodes): Renamed and rewritten to ...
30021         (unify_nodes): This.
30022         (process_unification_queue): Removed.
30023         (topo_visit): Cleanup
30024         (do_da_constraint): Use find.
30025         (do_sd_constraint): Ditto.
30026         (do_ds_constraint): Ditto.
30027         (do_complex_constraint): Ditto.
30028         (init_scc_info): Update for removed and added members.
30029         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
30030         (find_indirect_cycles): This.
30031         (equivalence_class): New variable.
30032         (label_visit): New function.
30033         (perform_variable_substitution): Rewritten.
30034         (free_var_substitution_info): New function.
30035         (find_equivalent_node): Ditto.
30036         (move_complex_constraints): Ditto.
30037         (eliminate_indirect_cycles): Ditto.
30038         (solve_graph): Only propagate changed bits.
30039         Use indirect cycle elimination.
30040         Use find.
30041         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
30042         (tree_id_eq): Renamed to ...
30043         (tree_vi_eq): This. Update for member change
30044         (insert_id_for_tree): Renamed and rewritten to ...
30045         (insert_vi_for_tree): This.
30046         (lookup_id_for_tree): Renamed and rewritten to ...
30047         (lookup_vi_for_tree): This.
30048         (get_id_for_tree): Renamed and rewritten to ...
30049         (get_vi_for_tree): Ditto.
30050         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
30051         (process_constraint): Don't handle INCLUDES.
30052         Remove special ADDRESSOF case.
30053         (find_func_aliases): Rewrite to use vi functions instead of id
30054         ones.
30055         (create_function_info_for): Ditto.
30056         (create_variable_info_for): Ditto.
30057         (intra_create_variable_infos): Ditto.
30058         (merge_smts_into): Ditto.
30059         (find_what_p_points_to): Ditto.
30060         (init_base_vars): Ditto.
30061         (init_alias_vars): Ditto.
30062         (remove_preds_and_fake_succs): New function.
30063         (dump_sa_points_to_info): Dump new stats.
30064         (dump_solution_for_var): Use find.
30065         (set_used_smts): Fix formatting.
30066         (compute_points_to_sets): Updated for new functions.
30067         (ipa_pta_execute): Ditto.
30068
30069 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30070             Richard Sandiford  <richard@codesourcery.com>
30071
30072         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
30073         parallels.
30074         * calls.c (expand_call): If the return value is a PARALLEL,
30075         extract its first member.
30076         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
30077         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
30078         use FUNCTION_EXTRA_EPILOGUE.
30079         (m68k_function_value): Return a PARALLEL if the return value
30080         is of a pointer type.
30081         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
30082         (FUNCTION_EXTRA_EPILOGUE): Remove.
30083         * config/m68k/m68k.md (D0_REG): New constant.
30084
30085 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30086
30087         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
30088         output a NOP for empty epilogues.
30089
30090 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30091
30092         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
30093         before function.  Extend register save check to include all
30094         registers, not just integer ones.
30095
30096 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30097
30098         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
30099         (m68k_use_return_insn): ...this.
30100         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
30101         * config/m68k/m68k.c (use_return_insn): Rename to...
30102         (m68k_use_return_insn): ...this.
30103         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
30104         of USE_RETURN_INSN.
30105
30106 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30107
30108         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
30109         nearest even, fix denormal rounding overflow.
30110
30111 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30112
30113         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
30114         f%$smove and f%$move.
30115         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
30116         (extendsfdf2_cf): Use fdmove instead of f%&move.
30117         (truncdfsf2_cf): Use fsmove instead of f%$smove.
30118         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
30119
30120 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30121
30122         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
30123         GPR<-GPR moves.
30124
30125 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30126
30127         * real.h (real_format): Add a canonical_nan_lsbs_set field.
30128         (coldfire_single_format): Declare.
30129         (coldfire_double_format): Likewise.
30130         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
30131         of qnan_msb_set to determine the lower bits of a canonical
30132         NaN significand.
30133         (encode_ieee_double): Likewise.
30134         (encode_ieee_quad): Likewise.
30135         (ieee_single_format): Initialize canonical_nan_lsbs_set.
30136         (mips_single_format): Likewise.
30137         (ieee_double_format): Likewise.
30138         (mips_double_format): Likewise.
30139         (ieee_extended_motorola_format): Likewise.
30140         (ieee_extended_intel_96_format): Likewise.
30141         (ieee_extended_intel_128_format): Likewise.
30142         (ieee_extended_intel_96_round_53_format): Likewise.
30143         (ibm_extended_format): Likewise.
30144         (mips_extended_format): Likewise.
30145         (ieee_quad_format): Likewise.
30146         (mips_quad_format): Likewise.
30147         (vax_f_format): Likewise.
30148         (vax_d_format): Likewise.
30149         (vax_g_format): Likewise.
30150         (i370_single_format): Likewise.
30151         (i370_double_format): Likewise.
30152         (decimal_single_format): Likewise.
30153         (decimal_double_format): Likewise.
30154         (decimal_quad_format): Likewise.
30155         (c4x_single_format): Likewise.
30156         (c4x_extended_format): Likewise.
30157         (real_internal_format): Likewise.
30158         (coldfire_single_format): New real_format.
30159         (coldfire_double_format): Likewise.
30160         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
30161         canonical_nan_lsbs_set.
30162         (pdp11_d_format): Likewise.
30163         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
30164         if TARGET_COLDFIRE_CPU.
30165
30166 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30167
30168         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
30169         (output_call, m68k_legitimize_call_address): Declare.
30170         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
30171         parenthesees.  Add support for a 'W' constraint.
30172         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
30173         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
30174         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
30175         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
30176         variables.
30177         (override_options): Initialize them.  Do not set flag_no_function_cse
30178         for TARGET_ID_SHARED_LIBRARY.
30179         (m68k_output_pic_call): Delete.
30180         (m68k_legitimize_call_address): New function.
30181         (print_operand): Remove the %o prefix.  Handle the %p prefix.
30182         (output_call): New function.
30183         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
30184         target address from the GOT if symbolic jumps are not allowed.
30185         * config/m68k/m68k.md (call, general_operand): Do not set
30186         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
30187         Merge separate flag_pic and !flag_pic define_insns into...
30188         (*call, *call_value): ...these new patterns.  Match the address
30189         rather than the containing MEM and require it to be a call_operand.
30190         Use output_call to generate the asm template.
30191         * config/m68k/predicates.md (const_call_operand): New predicate.
30192         (call_operand): Likewise.
30193
30194 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30195
30196         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
30197         (STACK_GROWS_DOWNWARD): Define to 1.
30198         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
30199         comments, emphasizing that these values are only defaults.
30200         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
30201         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
30202
30203 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30204
30205         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
30206
30207 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30208             Richard Sandiford  <richard@codesourcery.com>
30209
30210         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
30211         (FP_REGNO_P): New macros.
30212         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
30213         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
30214         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
30215         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
30216
30217 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30218
30219         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
30220         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
30221         to $tmake_file.
30222         * config/m68k/t-floatlib: New file, extracting common code from...
30223         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
30224         * config/m68k/t-uclinux: Here.
30225         * config/m68k/fpgnulib.c: Do not compile extendeed precision
30226         routines on ColdFire targets.
30227
30228 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30229
30230         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
30231         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
30232         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
30233         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
30234         explicitly set MOTOROLA to 1.
30235         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
30236
30237 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30238             Nathan Sidwell  <nathan@codesourcery.com>
30239
30240         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
30241         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
30242         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
30243         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
30244         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
30245         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
30246         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
30247         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
30248         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
30249         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
30250         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
30251         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
30252         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
30253         (DBX_REGISTER_NUMBER): Delete.
30254         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
30255         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
30256         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
30257
30258 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30259
30260         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
30261         * config/flat.h: New file.
30262         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
30263         OBJECT_FORMAT_FLAT.
30264         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
30265         indirect references for -msep-data or -mid-shared-library.
30266         Do not use PC-relative code addresses either.
30267         * config/m68k/m68k.c (override_options): Restrict -fPIC error
30268         to -mpcrel.
30269         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
30270         for shared libraries and crt1.o for executables.  Use crti.o and
30271         crtbegin.o.
30272         (ENDFILE_SPEC): Use crtend.o and crtn.o.
30273         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
30274         Do not add -elf2flt or -shared-lib-id options here.
30275         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
30276         Pass -shared-lib-id if -mid-shared-library, taking the library
30277         identifier from -mshared-library-id if given, otherwise
30278         defaulting to 0.
30279         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
30280         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
30281         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
30282         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
30283         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
30284         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
30285         and crtend.o.
30286         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
30287         jump sequence for ISA A and ISA A+.
30288         (PICJUMP): Likewise.
30289
30290 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30291
30292         * config.gcc (m68k-*-uclinux*): Base the port on the common
30293         and m68k GNU/Linux files rather than on the generic ELF ones.
30294         * config/m68k/uclinux.h (TARGET_VERSION): Override.
30295         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
30296
30297 2007-01-18  Julian Brown  <julian@codesourcery.com>
30298             Richard Sandiford  <richard@codesourcery.com>
30299
30300         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
30301         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
30302         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
30303         before redefining.
30304         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
30305         80 unconditionally.
30306         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
30307
30308 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30309
30310         * doc/install.texi: Document m68k-uclinuxoldabi.
30311         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
30312         * config/m68k/uclinux-oldabi.h: New file, copied from
30313         config/m68k/uclinux.h.
30314
30315 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
30316
30317         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
30318         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
30319         (m32r_compute_frame_size): Use unsigned for regno.
30320         (m32r_reload_lr): Use gen_frame_mem.
30321         (pop): New.
30322         (m32r_output_function_epilogue): Don't output the function epilogue
30323         textually here.
30324         (m32r_expand_epilogue): New.
30325         (direct_return): Return false if the function has the interrupt
30326         attribute.
30327         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
30328         * config/m32r/m32r.md (epilogue): New expander.
30329         (return_lr, return_rte): New insns.
30330         (return): Make it expander.
30331         (return_normal): New expander.
30332
30333 2007-01-18  Josh Conner  <jconner@apple.com>
30334
30335         PR target/30485
30336         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
30337         support for UNLE, UNLT, UNGE, and UNGT.
30338
30339 2007-01-18  Jan Hubicka  <jh@suse.cz>
30340
30341         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
30342         * tree-tailcall (add_virtual_phis): Likewise.
30343         (optimize_tail_call): Return TODOs.
30344         (execute_tail_calls): Return TODOs.
30345         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
30346         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
30347         changed.
30348         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
30349         Cleanup cfg using TODO.
30350         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
30351         * passes.c (execute_function_todo): When cleanup did something, remove
30352         unused locals.
30353         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
30354         (make_edges): Don't cleanup_cfg.
30355
30356 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
30357
30358         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
30359         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
30360         operate on the top of stack.
30361         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
30362         register handling of instructions that output to the second
30363         stack slot.
30364         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
30365         (move_for_stack_reg): Special-case check for dead destination
30366         stack slot for constant load of 1.0 inside UNSPEC_TAN.
30367
30368         * config/i386/i386.md (UNSPEC_TAN): New constant.
30369         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
30370         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
30371         to correctly model move of constant 1.0 to top stack slot.
30372         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
30373         (unnamed peephole2 pattern): Remove corresponding peephole2
30374         pattern that optimizes tan insn and loading of constant 1.0.
30375         (tanxf2): Use fptanxf4_i387.
30376         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
30377         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
30378         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
30379         disable patterns for SSE math.
30380         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
30381         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
30382
30383 2007-01-18  Dirk Mueller  <dmueller@suse.de>
30384             Richard Guenther <rguenther@suse.de>
30385
30386         PR diagnostic/8268
30387         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
30388         * common.opt (Warray-bounds): Add new warning option.
30389         * c-opts.c (c_common_handle_option): Define -Warray-bounds
30390         if -Wall is given.
30391         * Makefile.in: make tree-vrp.o depend on toplev.h
30392         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
30393         is enabled.
30394         (check_array_refs, check_array_bounds, check_array_ref): New.
30395
30396 2007-01-18  Jan Hubicka  <jh@suse.cz>
30397
30398         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
30399         (execute_ssa_ccp): Return flags conditionally.
30400         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
30401         changed.
30402         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
30403
30404 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
30405
30406         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
30407         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
30408
30409         * Makefile.c (GTFILES): Add cfglayout.h.
30410         * gengtype.c (open_base_files): Likewise.
30411         * cfglayout.c (cfg_layout_function_footer,
30412         cfg_layout_function_header) Reindent to make gengtype happy.
30413         * cfglayout.h (cfg_layout_function_footer,
30414         cfg_layout_function_header): Add GTY(()) marker.
30415
30416         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
30417
30418 2007-01-18  Ben Elliston  <bje@au.ibm.com>
30419
30420         * genautomata.c (write_automata): Include xstrerror output in the
30421         error message if writing the DFA description file fails.
30422
30423 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
30424
30425         * config/mips/mips-protos.h (mips_output_external): Make it
30426         return void.
30427         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
30428         * config/mips/mips.c (irix_output_external_libcall): Likewise.
30429         (extern_list): Likewise.
30430         (extern_head): Likewise.
30431         (TARGET_ASM_FILE_END): Likewise.
30432         (mips_file_end): Likewise.
30433         (mips_output_external): Rewritten.
30434
30435 2007-01-18  Ben Elliston  <bje@au.ibm.com>
30436
30437         * genpreds.c (write_insn_preds_c): Only write out the function
30438         body for regclass_for_constraint if we have register constraints.
30439
30440 2007-01-17  Tom Tromey  <tromey@redhat.com>
30441
30442         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
30443         * doc/install.texi (Testing): Use sourceware.org.
30444         (Binaries): Likewise.
30445         (Specific): Likewise.
30446         * doc/contrib.texi (Contributors): Use sourceware.org.
30447
30448 2007-01-17  Anatoly Sokolov <aesok@post.ru>
30449
30450         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
30451         (AVR_ENHANCED): Rename to ...
30452         (AVR_HAVE_MUL): ... new.
30453         (avr_enhanced_p): Rename to ...
30454         (avr_have_mul_p): ... new.
30455         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
30456         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
30457         * config/avr/avr.c (avr_enhanced_p): Rename to ...
30458         (avr_have_mul_p): ... new.
30459         (base_arch_s): Rename 'enhanced' to 'have_mul'.
30460         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
30461         'avr_enhanced_p' and 'enhanced'.
30462         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
30463         AVR_HAVE_MUL instead of AVR_ENHANCED.
30464         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
30465         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
30466         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
30467         instead of AVR_ENHANCED.
30468         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
30469         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
30470         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
30471
30472 2007-01-17  Ian Lance Taylor  <iant@google.com>
30473
30474         * vec.h (VEC_reserve_exact): Define.
30475         (vec_gc_p_reserve_exact): Declare.
30476         (vec_gc_o_reserve_exact): Declare.
30477         (vec_heap_p_reserve_exact): Declare.
30478         (vec_heap_o_reserve_exact): Declare.
30479         (VEC_OP (T,A,reserve_exact)): New static inline function, three
30480         versions.
30481         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
30482         negative parameter.
30483         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
30484         (VEC_OP (T,A,copy)) [all versions]: Likewise.
30485         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
30486         * vec.c (calculate_allocation): Add exact parameter.  Change all
30487         callers.
30488         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
30489         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
30490         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
30491         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
30492         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
30493         (vec_heap_p_reserve_exact): New function.
30494         (vec_heap_o_reserve_exact): New function.
30495
30496 2007-01-17  Jan Hubicka  <jh@suse.cz>
30497
30498         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
30499
30500 2007-01-17  Eric Christopher  <echristo@apple.com>
30501
30502         * config.gcc: Support core2 processor.
30503
30504 2007-01-16  Jan Hubicka  <jh@suse.cz>
30505
30506         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
30507         the names, just unlink the chain so we don't crash on dangling
30508         pointers
30509         to dead SSA names.
30510
30511 2007-01-16  Jan Hubicka  <jh@suse.cz>
30512
30513         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
30514         * tree-pass.h: Reorder to make IPA passes appear toegher.
30515         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
30516         Declare.
30517         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
30518         parameters, do not call early inliner.
30519         * ipa-inline.c: Update comments.  Include tree-flow.h
30520         (cgraph_decide_inlining): Do not compute inlining parameters.
30521         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
30522         be called with function context set up.
30523         (pass_ipa_inline): Remove unreachable functions before pass.
30524         (cgraph_early_inlining): Simplify assuming to be called from the
30525         PM as local pass.
30526         (pass_early_inline): New pass.
30527         (cgraph_gate_ipa_early_inlining): New gate.
30528         (pass_ipa_early_inline): Turn into simple wrapper.
30529         (compute_inline_parameters): New function.
30530         (gate_inline_passes): New gate.
30531         (pass_inline_parameters): New pass.
30532         (apply_inline): Move here from tree-optimize.c
30533         (pass_apply_inline): New pass.
30534         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
30535         transforming.
30536         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
30537         doing them by hand.
30538         (tree_function_versioning): Do not allocate dummy struct function.
30539         * tree-inline.h (optimize_inline_calls): Update prototype.
30540         * tree-optimize.c (execute_fixup_cfg): Export.
30541         (pass_fixup_cfg): Remove
30542         (tree_rest_of_compilation): Do not apply inlines.
30543         * tree-flow.h (execute_fixup_cfg): Declare.
30544         * Makefile.in (gt-passes.c): New.
30545         * passes.c: Include gt-passes.h
30546         (init_optimization_passes): New passes.
30547         (nnodes, order): New static vars.
30548         (do_per_function_toporder): New function.
30549         (execute_one_pass): Dump current pass here.
30550         (execute_ipa_pass_list): Don't dump current pass here.
30551
30552 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
30553
30554         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
30555         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
30556
30557 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
30558
30559         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
30560         (strong_alias): Define.
30561         (__gcc_qmul): Provide non-FMA for soft-float.
30562         (__gcc_qdiv): Same.
30563         (__gcc_qneg): New.
30564         (__gcc_qeq): New.
30565         (__gcc_qle): New.
30566         (__gcc_qge): New.
30567         (__gcc_qunord): New.
30568         (__gcc_stoq): New.
30569         (__gcc_dtoq): New.
30570         (__gcc_qtos): New.
30571         (__gcc_qtod): New.
30572         (__gcc_qtoi): New.
30573         (__gcc_qtou): New.
30574         (__gcc_itoq): New.
30575         (__gcc_utoq): New.
30576         (fmsub): New.
30577         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
30578         soft-float functions.
30579         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
30580         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
30581         about long double soft float.
30582
30583 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
30584             Tehila Meyzels  <tehila@il.ibm.com>
30585
30586         * tree-vectorizer.h (is_pattern_stmt_p): New.
30587         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
30588         formatting (tabs instead of spaces). Cleanup and clarify setting
30589         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
30590         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
30591         (vectorizable_type_demotion): Check that types are integral.
30592         (vectorizable_type_promotion): Likewise.
30593         (vectorizable_store): Fix typo.  Eliminate new-line at end of
30594         comments.
30595
30596 2007-01-16  Jan Hubicka  <jh@suse.cz>
30597
30598         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
30599         cgraph edges too.
30600
30601 2007-01-15  Eric Christopher  <echristo@apple.com>
30602
30603         * ifcvt.c: Include vec.h, vecprim.h.
30604         (check_cond_move_block): New argument regs.
30605         Reorganize. Add registers used to regs.
30606         (cond_move_process_if_block): Use regs set above as
30607         loop bounds.
30608
30609 2007-01-15  Eric Christopher  <echristo@apple.com>
30610
30611         * config/darwin.h: Update copyright.
30612         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
30613         (LINK_COMMAND_SPEC): Add -u.
30614         (LINK_SPEC): Fix umbrella for above.
30615
30616 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
30617
30618         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
30619         glibc CVS.
30620
30621 2007-01-15  Tom Tromey  <tromey@redhat.com>
30622
30623         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
30624         * doc/install.texi (Testing): Don't mention jacks.
30625         (Configuration): Document --enable-java-maintainer-mode.  Move
30626         --with-java-home to libgcj-specific section.  Document
30627         --with-ecj-jar.
30628         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
30629
30630 2007-01-15  Jan Hubicka  <jh@suse.cz>
30631
30632         * tree-ssa-dce.c (DCE_TODOs): New.
30633         (propagate_necessity): Return if something changed.
30634         (eliminate_unnecessary_stmts): Likewise.
30635         (perform_tree_ssa_dce): Return TODO flags when needed.
30636         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
30637
30638 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
30639
30640         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
30641         (fyl2x_extend<mode>xf3_i387): New insn pattern.
30642         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
30643         patterns using X87MODEF12 mode macro.  Extend operand 1
30644         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
30645         (log10<mode>2): Ditto.
30646         (log2<mode>2): Ditto.
30647         (log1p<mode>2): Ditto.
30648         (logb<mode>2): Ditto.
30649         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
30650         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
30651         (*fxtractxf3_i387): Rename from *fxtractxf3.
30652         (fxtract_extend<mode>xf3_i387): New insn pattern.
30653         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
30654         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
30655         and gen_fyl2xxf3_i387().
30656
30657 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
30658
30659         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
30660         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
30661         get_loop_exit_edges.  Changed return type to bool.
30662         * cfgloop.h (fix_loop_placement): Declaration removed.
30663
30664 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
30665
30666         * param.h (MIN_VECT_LOOP_BOUND): New.
30667         * params.def (MIN_VECT_LOOP_BOUND): New.
30668         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
30669         argument - minimum threshold for number of iterations.
30670         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
30671         argument to declaration.
30672         * tree-vect-analyze.c (vect_analyze_operations): Check value of
30673         MIN_VECT_LOOP_BOUND.
30674         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
30675         slpeel_tree_peel_loop_to_edge with additional argument.
30676         (vect_do_peeling_for_alignment): Likewise.
30677         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
30678
30679 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
30680
30681         PR target/30413
30682         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
30683         operands of size 1.
30684
30685 2007-01-14  Jan Hubicka  <jh@suse.cz>
30686
30687         * tree-dfa.c (remove_referenced_var): New function.
30688         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
30689         prune referenced vars list too.
30690         * tree-flow.h (remove_referenced_var): Declare.
30691
30692 2007-01-14  Jan Hubicka  <jh@suse.cz>
30693
30694         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
30695         separately.
30696         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
30697         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
30698         * except.h (verify_eh_throw_table_statements): Kill prototype.
30699         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
30700         into call exrepssions.
30701         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
30702         eh trhow verifier.
30703         * tree-cfg.c: Include pointer-set.h.
30704         (verify_node_sharing): Work on pointer set.
30705         (verify_eh_throw_stmt_node): New.
30706         (verify_stmts): Use pointers sets, verify throw_stmt.
30707
30708 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
30709
30710         * ipa-reference.c (analyze_function): Consider also addresses taken
30711         in phi nodes.
30712
30713 2007-01-12  Roger Sayle  <roger@eyesopen.com>
30714
30715         * c-typeck.c (null_pointer_constant_p): Replace use of
30716         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
30717         (build_c_cast): Likewise.
30718
30719 2007-01-12  Roger Sayle  <roger@eyesopen.com>
30720
30721         * tree.h (force_fit_type_double): Remove unused final argument.
30722         * c-common.c (constant_expression_warning): Replace use of
30723         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
30724         (convert_and_check): Likewise.
30725         (shorten_compare): Update call to force_fit_type_double.
30726         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
30727         * convert.c (convert_to_pointer): Update call to
30728         force_fit_type_double.
30729         * fold-const.c (force_fit_type_double): Remove overflowed_const
30730         argument.
30731         (int_const_binop, fold_convert_const_int_from_int,
30732         fold_convert_const_int_from_real, fold_div_compare,
30733         fold_sign_changed_comparison, fold_unary, fold_negate_const,
30734         fold_abs_const, fold_not_const): Remove the final argument from
30735         calls to force_fit_type_double.
30736
30737 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30738
30739         * configure.ac: Set insn to "nop" for spu-*-* also.
30740         * configure: Regenerate.
30741
30742 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
30743
30744         * builtins.def : Add BUILT_IN_FREE.
30745
30746 2007-01-12  Jan Hubicka  <jh@suse.cz>
30747
30748         PR tree-optimization/30443
30749         * tree-inline.c (tree_function_versioning): Do not optimize when
30750         cloning for inlining.
30751
30752 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
30753
30754         * doc/loop.texi: Document recording of loop exits.
30755         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
30756         (update_single_exits_after_duplication,
30757         update_single_exit_for_duplicated_loop,
30758         update_single_exit_for_duplicated_loops): Removed.
30759         (duplicate_loop_to_header_edge): Do not call
30760         update_single_exits_after_duplication and
30761         update_single_exit_for_duplicated_loops.
30762         (loop_version): Do not update single_exit information.
30763         (fix_loop_structure): Use record_loop_exits instead of
30764         mark_single_exit_loops.
30765         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
30766         the lists of loop exits.
30767         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
30768         split_edge, merge_blocks): Update the lists of loop exits.
30769         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
30770         loop_optimizer_init.
30771         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
30772         of mark_single_exit_loops.
30773         (loop_optimizer_finalize): Call release_recorded_exits.
30774         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
30775         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
30776         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
30777         update single exit information.
30778         * lambda-code.c (perfect_nestify): Ditto.
30779         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
30780         (mark_single_exit_loops): Removed.
30781         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
30782         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
30783         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
30784         functions.
30785         (get_loop_exit_edges, single_exit): Use recorded exit lists.
30786         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
30787         (verify_loop_structure): Verify consistency of the exit lists.
30788         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
30789         (set_single_exit): Removed.
30790         * cfgloop.h (struct loop_exit): New function.
30791         (struct loop): single_exit_ field replaced by exits field.
30792         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
30793         LOOPS_HAVE_RECORDED_EXITS.
30794         (struct loops): Added exits hash.
30795         (mark_single_exit_loops, set_single_exit): Declaration removed.
30796         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
30797
30798 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30799
30800         * doc/invoke.texi: Avoid use of @headitem.
30801
30802 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30803
30804         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
30805
30806 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30807
30808         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
30809         list of targets.
30810
30811 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
30812             Richard Sandiford  <richard@codesourcery.com>
30813
30814         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
30815         * config/m68k/m68k.opt: Resort options.
30816         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
30817
30818 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
30819             Richard Sandiford  <richard@codesourcery.com>
30820
30821         * doc/invoke.texi: Document the macros that are defined by
30822         m68k's -mtune and -mhard-float options.
30823         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
30824         (m68k_cpp_cpu_family): Likewise.
30825         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
30826         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
30827         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
30828         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
30829         (m68k_cpp_cpu_family): Likewise.
30830
30831 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30832
30833         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
30834         macros besides mc68000 as tuning macros.  Use a switch statement
30835         to set them and mcpu32.
30836
30837 2007-01-12  Julian Brown  <julian@codesourcery.com>
30838
30839         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
30840         (TARGET_68040_ONLY): Rename to...
30841         (TARGET_68040): ...this.
30842         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
30843         * config/m68k/m68k.md: Likewise.
30844
30845 2007-01-12  Julian Brown  <julian@codesourcery.com>
30846             Nathan Sidwell  <nathan@codesourcery.com>
30847             Richard Sandiford  <richard@codesourcery.com>
30848
30849         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
30850         the -mcpu= argument associated with the --with-cpu setting.
30851         Define M68K_DEFAULT_TUNE to the default -mtune= option,
30852         if different from the one implied by the -mcpu setting.
30853         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
30854         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
30855         * doc/invoke.texi: Mention ColdFire in the introduction to the
30856         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
30857         -mno-div and -mhard-float options.  Make -m68881 a synonym for
30858         -mhard-float.  Document the previously-undocumented -m5206e,
30859         -m528x, -m5307 and -m5407 options.  Tweak the existing option
30860         documentation for consistency.
30861         * doc/install.texi: Mention new --with-cpu arguments.
30862         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
30863         default CPU if neither -mcpu nor -march are specified.
30864         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
30865         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
30866         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
30867         using m68k_tune to decide between families that implement the
30868         same ISA.  Use m68k_tune to set __mcfv4e__.
30869         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
30870         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
30871         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
30872         (FL_ISA_C, FL_ISA_MMU): New macros.
30873         (MASK_COLDFIRE): Delete.
30874         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
30875         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
30876         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
30877         (TARGET_HARD_FLOAT): Do not define here.
30878         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
30879         (TUNE_68000): New macro.
30880         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
30881         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
30882         (TUNE_CFV2): Redefine in terms of m68k_tune.
30883         (uarch_type, target_device, fpu_type): New enums.
30884         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
30885         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
30886         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
30887         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
30888         (FL_FOR_isa_c): New macros.
30889         (m68k_isa): New enum.
30890         (m68k_target_selection): New structure.
30891         (all_devices, all_isas, all_microarchs): New tables.
30892         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
30893         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
30894         (MASK_ALL_CPU_BITS): Delete.
30895         (m68k_find_selection): New function.
30896         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
30897         Map the legacy target options to a combination of the new ones.
30898         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
30899         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
30900         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
30901         settings.
30902         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
30903         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
30904         properties.
30905         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
30906         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
30907         * config/m68k/m68k-devices.def: New file.
30908
30909 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30910             Nathan Sidwell  <nathan@codesourcery.com>
30911
30912         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
30913         (SUBTARGET_EXTRA_SPECS): New macros.
30914         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
30915         use %(asm_cpu_spec) instead.
30916         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
30917         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
30918         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
30919         (EXTRA_SPECS): Rename to...
30920         (SUBTARGET_EXTRA_SPECS): ...this.
30921
30922 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
30923             Richard Sandiford  <richard@codesourcery.com>
30924             Julian Brown  <julian@codesourcery.com>
30925
30926         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
30927         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
30928         to the configuration's default CPU.
30929         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
30930         Remove default masks.
30931         (m680[012]0-*-*): Set the default with_cpu to the first part of
30932         the target name.
30933         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
30934         (m68k*-*-linux): Extend the --with-cpu handling to...
30935         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
30936         and m68010.  Don't set target_cpu_default2.
30937         * doc/install.texi: Document --with-cpu for m68k.
30938         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
30939         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
30940         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
30941         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
30942         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
30943         (ASM_SPEC): Remove use of %(asm_cpu_default).
30944         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
30945         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
30946         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
30947         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
30948         __HAVE_FPU__ if TARGET_HARD_FLOAT.
30949         (TARGET_DEFAULT): Delete.
30950         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
30951         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
30952         (CPP_CPU_SPEC): Delete.
30953         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
30954         the appropriate string.
30955         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
30956         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
30957         (ASM_SPEC): Don't use %(asm_default_spec).
30958         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
30959         TARGET_DEFAULT and add MASK_68881.
30960         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
30961
30962 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30963
30964         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
30965         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
30966         MASK_68010 alongside MASK_68020.
30967         * doc/invoke.texi: Document -m68010.
30968         * config/m68k/m68k.opt (m68010): New.
30969         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
30970         if TUNE_68010.
30971         (TUNE_68010): New macro.
30972         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
30973         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
30974         (M68K_CPU_m68332): Add MASK_68010.
30975         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
30976         fallback definition.
30977         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
30978         defines.
30979         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
30980         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
30981         to all entries that use MASK_68020.
30982         (output_move_simode_const, output_move_himode, output_move_qimode)
30983         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
30984         instead of TARGET_68020 to select clr behavior.  Remove comment
30985         about there being no TARGET_68010.
30986         * config/m68k/m68k.md: Likewise throughout.
30987
30988 2007-01-12  Julian Brown  <julian@codesourcery.com>
30989
30990         * config/m68k/m68k.h (TARGET_ISAB): New macro.
30991         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
30992         * config/m68k/m68k.md: Likewise.
30993
30994 2007-01-12  Julian Brown  <julian@codesourcery.com>
30995
30996         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
30997         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
30998
30999 2007-01-12  Julian Brown  <julian@codesourcery.com>
31000
31001         * config/m68k/m68k.h (TUNE_68040_60): New macro.
31002         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
31003         * config/m68k/m68k.md: Likewise.
31004
31005 2007-01-12  Julian Brown  <julian@codesourcery.com>
31006             Richard Sandiford  <richard@codesourcery.com>
31007
31008         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
31009         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
31010         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
31011         TARGET_CPU32.
31012         (TARGET_CPU32): Rename to...
31013         (TUNE_CPU32): ...this.
31014         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
31015         (TUNE_CFV2): New macros.
31016         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
31017         remove conditions that are implied by TARGET_68020.
31018         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
31019         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
31020         (m68k_output_function_epilogue): Likewise.
31021         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
31022         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
31023         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
31024         non-68000 timings.  Refactor multiplication and division costs.
31025         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
31026         TUNE_CPU32 instead of TARGET_CPU32.
31027         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
31028         and TUNE_68060 instead of TARGET_68060.
31029         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
31030         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
31031         TARGET_CPU32.
31032         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
31033         && !TARGET_COLDFIRE" to choose between moveq and clr.
31034         Likewise in the unnamed movsf pattern.
31035         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
31036         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
31037         ashiftrt pattern.
31038
31039 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31040
31041         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
31042         of tabbing before backslashes.
31043
31044 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31045
31046         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
31047         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
31048         (ASM_OUTPUT_INTERNAL_LABEL): Define.
31049
31050 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
31051
31052         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
31053         find_interesting_uses_cond.
31054         (find_interesting_uses_cond): Use extract_cond_operands.
31055         (rewrite_use_compare): Use extract_cond_operands and
31056         force_gimple_operand_bsi.  Do not call update_stmt.
31057         (determine_use_iv_cost_condition): Use extract_cond_operands.
31058         Return cheaper of using original bound and changing the exit bound.
31059
31060 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
31061
31062         PR tree-optimization/29516
31063         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
31064         most_expensive_mult_to_index, addr_to_parts,
31065         create_mem_ref, maybe_fold_tmr): Make the type of
31066         fields of TARGET_MEM_REF sizetype.
31067         (move_fixed_address_to_symbol, move_pointer_to_base):
31068         New functions.
31069         * tree.def (TARGET_MEM_REF): Add comment on types of
31070         the operands.
31071
31072 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
31073
31074         * c-common.c (vector_types_convertible_p): Treat opaque types as
31075         always convertible if they have the same size, but not otherwise.
31076
31077 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
31078
31079         * ifcvt.c (struct noce_if_info): Add comments to the fields.
31080         Remove the b_unconditional field.
31081         (noce_try_sign_mask): Do not look at b_unconditional.
31082         (noce_process_if_block): Do not use merge_if_blocks.  Update
31083         the CFG here.  Do not set b_unconditional.
31084         (cond_move_process_if_block): Likewise.
31085         (find_cond_trap): Likewise.
31086         (check_cond_move_block): Require simple jump insns at the end
31087         of the basic block.
31088
31089 2007-01-11  Jan Hubicka  <jh@suse.cz>
31090
31091         PR tree-optimization/1046
31092         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
31093         when alias info is not ready.
31094         (pass_tail_recursion): Do not require aliasing.
31095         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
31096         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
31097         * tree-ssa-copy.c (pass_copy_prop): Likewise.
31098         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
31099         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
31100         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
31101         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
31102         before inlining.
31103         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
31104         When aliasing is not build, mark statement as volatile.
31105
31106 2007-01-11  Tom Tromey  <tromey@redhat.com>
31107
31108         PR preprocessor/15185, PR preprocessor/20989:
31109         * doc/cppopts.texi <-MT>: Update description of algorithm for
31110         computing default target.
31111         <-M, -MD>: Reword "basename" text.
31112
31113 2007-01-11  Roger Sayle  <roger@eyesopen.com>
31114
31115         * builtins.c (expand_builtin_pow, expand_builtin_powi,
31116         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
31117         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
31118         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
31119         fold_builtin_bswap, real_constp, fold_builtin_pow,
31120         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
31121         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
31122         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
31123         * convert.c (convert_to_pointer): Likewise.
31124         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
31125         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
31126         const_binop, fold_convert_const_int_from_int,
31127         fold_convert_const_int_from_real,
31128         fold_convert_const_real_from_real, sign_bit_p,
31129         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
31130         fold_sign_changed_comparison, fold_unary, fold_comparison,
31131         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
31132         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
31133         * print-tree.c (print_node_brief, print_node): Likewise.
31134         * stor-layout.c (place_field, layout_type): Likewise.
31135         * tree-chrec.c (keep_cast): Likewise.
31136         * tree.c (build_vector, build_real, build_real_from_int_cst,
31137         build_complex): Likewise.
31138
31139 2007-01-11  Roger Sayle  <roger@eyesopen.com>
31140
31141         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
31142         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
31143
31144 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
31145
31146         * configure.ac (strict1_warn): Rename to strict_warn.
31147         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
31148         cc_set_by_configure, quoted_cc_set_by_configure,
31149         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
31150         all_boot_languages, all_stagestuff): Remove.
31151         (target_list): Remove bootstrap targets.
31152         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
31153         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
31154         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
31155         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
31156         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
31157         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
31158         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
31159         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
31160         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
31161         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
31162         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
31163         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
31164         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
31165         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
31166         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
31167         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
31168         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
31169         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
31170         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
31171         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
31172         (mostlyclean): Adjust.
31173         (clean, distclean): Don't mention bootstrap stuff.
31174         * configure: Regenerate.
31175         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
31176         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
31177         treelang/config-lang.in (stagestuff): Remove.
31178         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
31179         stageprofile, stagefeedback, stagestuff): Remove mention.
31180
31181 2007-01-11  Nick Clifton  <nickc@redhat.com>
31182
31183         * config/mcore/predicates.md (mcore_general_movesrc_operand):
31184         Accept CONSTs.
31185         (mcore_general_movdst_operand): Do not accept CONST_INTs.
31186         (mcore_arith_K_S_operand): Run the test for the S constraint not
31187         the test for the M constraint.
31188         (mcore_addsub_operand): Do not accept integer values that are
31189         larger than 32 bits.
31190         * config/mcore/mcore.md: Remove unused constraints from split.
31191         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
31192         (addsi3): Likewise.
31193         (allocate_stack): Likewise.
31194         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
31195         operands to 32 bits.
31196         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
31197         INTVAL.
31198         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
31199         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
31200         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
31201         mcore_output_bclri, mcore_output_andn, output_inline_const,
31202         mcore_output_move, mcore_output_movedouble): Likewise.
31203         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
31204         (output_inline_const): Likewise.
31205         (output_inline_const): Fix format strings used in sprintf
31206         statements.
31207         * config/mcore/mcore-protos.h: Update prototypes for changed
31208         functions in mcore.c.
31209         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
31210         HOST_WIDE_INT and not int.
31211         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
31212         CONST_OK_FOR_N): Likewise.
31213         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
31214         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
31215         an INTVAL.
31216
31217 2007-01-10  Jan Hubicka  <jh@suse.cz>
31218
31219         * tree-vrp.c (remove_range_assertions): Release defs.
31220         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
31221         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
31222
31223 2007-01-10  Paul Brook  <paul@codesourcery.com>
31224
31225         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
31226         * config/arm/arm.md (mulsi3subsi): New insn.
31227
31228 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
31229
31230         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
31231         (tree_transform_and_unroll_loop): New.
31232         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
31233         Declare.
31234
31235 2007-01-10  Robert Kennedy <jimbob@google.com>
31236
31237         * fold-const.c (fold_comparison): Fold comparisons like (x *
31238         1000 < 0) to (x < 0).
31239
31240 2007-01-10  Ian Lance Taylor  <iant@google.com>
31241
31242         * tree-pretty-print.c (dump_generic_node): Print parentheses when
31243         operands have the same priority.
31244
31245 2007-01-10  Tom Tromey  <tromey@redhat.com>
31246
31247         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
31248         (fold_binary): Likewise.
31249         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
31250         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
31251         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
31252         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
31253         * langhooks.h (struct lang_hooks): Removed field
31254         'can_use_bit_fields_p'.
31255
31256 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
31257
31258         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
31259
31260 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
31261
31262         * function.c (get_last_funcdef_no): New function.
31263         * function.h (get_last_funcdef_no): Declare.
31264         * tree-inline.c (initialize_cfun): Add initialization.
31265         (tree_function_versioning): Cleanup.
31266
31267 2007-01-10  Jan Hubicka  <jh@suse.cz>
31268
31269         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
31270         PHIs.
31271
31272 2007-01-10  Sa Liu  <saliu@de.ibm.com>
31273             Ben Elliston  <bje@au.ibm.com>
31274
31275         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
31276         for SAVE_NONLOCAL and Pmode for any other save level.
31277         * spu-protos.h (spu_restore_stack_block): Declare.
31278         * spu.md (save_stack_block): Remove.
31279         (restore_stack_block): Call spu_restore_stack_block.
31280         * spu.c (spu_restore_stack_block): New function.
31281         (spu_expand_epilogue): Remove old comment.
31282
31283 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
31284
31285         PR tree-optimization/30322
31286         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
31287         (cand_value_at): Return the value as aff_tree.
31288         (may_eliminate_iv): Convert the bound from aff_tree to tree.
31289         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
31290         aff_combination_mult): New functions.
31291         (aff_combination_add): Use aff_combination_add_cst.
31292         (aff_combination_convert): Allow conversions to a wider type.
31293         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
31294         * tree-affine.h (aff_combination_mult): Declare.
31295
31296 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
31297
31298         * doc/tm.texi: Update documentation to reflect reality of exec
31299         and start file search behaviours. Update copyright year.
31300         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
31301         header file directories.
31302
31303 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
31304
31305         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
31306         (*cosxf2): Rename to cosxf2_i387.
31307         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
31308         using X87MODEF12 mode macro. Rename patterns to
31309         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
31310         for SSE math.
31311         (*cosdf2, *cossf2): Ditto.
31312         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
31313         to match extended input operands.
31314         (sincos<mode>3): New expander.
31315         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
31316         insn patterns and corresponding splitters.
31317
31318 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
31319
31320         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
31321         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
31322
31323 2007-01-09  Nicolas Pitre  <nico@cam.org>
31324
31325         PR target/30173
31326         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
31327
31328 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
31329
31330         * target.h (struct gcc_target): New field library_rtti_comdat.
31331         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
31332         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
31333         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
31334         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
31335
31336 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
31337
31338         * doc/invoke.texi (Optimize Options): Correct description of -O0.
31339
31340 2007-01-08  Richard Guenther  <rguenther@suse.de>
31341
31342         * tree.h (force_fit_type_double): Export.
31343         (force_fit_type): Remove.
31344         * fold-const.c (force_fit_type_double): New function.
31345         (force_fit_type): Remove.
31346         (int_const_binop): Use it.
31347         (fold_convert_const_int_from_int): Likewise.
31348         (fold_convert_const_int_from_real): Likewise.
31349         (fold_div_compare): Likewise.
31350         (fold_sign_changed_comparison): Likewise.
31351         (fold_unary): Likewise.
31352         (fold_negate_const): Likewise.
31353         (fold_abs_const): Likewise.
31354         (fold_not_const): Likewise.
31355         * c-common.c (shorten_compare): Use force_fit_type_double.
31356         * convert.c (convert_to_pointer): Likewise.
31357
31358 2007-01-08  Richard Guenther  <rguenther@suse.de>
31359
31360         * tree.h (build_int_cst_wide_type): Export.
31361         * tree.c (build_int_cst_wide_type): New function.
31362         (build_int_cst_wide): Fix comment.
31363         * builtins.c (fold_builtin_object_size): Use build_int_cst
31364         to build -1 or 0 of the correct type.  Use fit_double_type
31365         to check for overflow.
31366         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
31367         to build the mask.
31368         (decode_field_reference): Likewise.
31369         (all_ones_mask_p): Likewise.
31370         (native_interpret_int): Use build_int_cst_wide_type.
31371         (fold_binary): Use build_int_cst_type to build an all-ones
31372         value.
31373         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
31374
31375 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
31376
31377         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
31378
31379 2007-01-09  Ben Elliston  <bje@au.ibm.com>
31380
31381         * genautomata.c (STATS_OPTION): New option.
31382         (stats_flag): New flag.
31383         (gen_automata_option): Handle it.
31384         (initiate_automaton_gen): Ditto.
31385         (write_automata): Output statistics only if stats_flag is
31386         set. Likewise, output time statistics only if time_flag is set.
31387         * doc/md.texi (Processor pipeline description): Document new flag.
31388
31389 2007-01-08  Richard Guenther  <rguenther@suse.de>
31390
31391         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
31392         * tree.c (build_int_cst_type): Likewise.
31393         (size_in_bytes): Don't call force_fit_type on the result.
31394         (int_fits_type_p): Use fit_double_type.
31395         * fold-const.c (fit_double_type): New function.
31396         (force_fit_type): Use it.
31397         * tree.h (fit_double_type): Export.
31398
31399 2007-01-08  Jan Hubicka  <jh@suse.cz>
31400
31401         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
31402         * ipa.c (function_and_variable_visibility): Fix return type.
31403
31404 2007-01-08  Richard Guenther  <rguenther@suse.de>
31405
31406         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
31407         of offset to build the index.
31408         * tree-pretty-print.c (dump_generic_node): Don't build negated
31409         const just for printing.
31410         * c-pretty-print.c (pp_c_integer_constant): Likewise.
31411         * builtins.c (fold_builtin_int_roundingfn): Check if result
31412         fits the type by using force_fit_type and comparing the result.
31413         * predict.c (predict_loops): Use compare_tree_int for comparison.
31414         * tree.c (build_int_cst): Fall back to integer_type_node for
31415         NULL_TREE type.
31416         (build_int_cst_wide): Assert type is non-null.
31417
31418 2007-01-08  Roberto Costa  <roberto.costa@st.com>
31419
31420         * tree-vrp.c (extract_range_from_cond_expr): New.
31421         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
31422         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
31423         as expressions.
31424         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
31425         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
31426         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
31427         used as expressions.
31428         * tree-object-size.c (cond_expr_object_size): New.
31429         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
31430
31431 2007-01-08  Jan Hubicka  <jh@suse.cz>
31432
31433         * tree-ssa-forwprop.c (forward_propagate_into_cond,
31434         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
31435         statement.
31436
31437 2007-01-08  Richard Guenther  <rguenther@suse.de>
31438
31439         PR tree-optimization/23603
31440         * tree-vrp.c (set_value_range_to_truthvalue): New function.
31441         (extract_range_from_binary): Fall back to truthvalue instead of
31442         varying for TRUTH_*_EXPR.
31443         (extract_range_from_comparison): Fall back to truthvalue instead of
31444         varying.
31445         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
31446         if all visited PHI values were constant.
31447
31448 2007-01-08  Jan Hubicka  <jh@suse.cz>
31449
31450         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
31451         (cgraph_analyze_function): break out from ...
31452         (cgraph_finalize_compilation_unit): ... here.
31453         (cgraph_expand_function): Remove forgoten commented out line.
31454         (cgraph_optimize): Analyze functions.
31455
31456 2007-01-08  Jan Hubicka  <jh@suse.cz>
31457
31458         * tree-pas.h (TODO_remove_function): New flag.
31459         (TODO_update*): Renumber.
31460         (pass_ipa_increase_alignment,
31461         pass_ipa_function_and_variable_visibility): New passes.
31462         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
31463         (cgraph_function_and_variable_visibility): Move to ipa.c
31464         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
31465         cgraph_increase_alignment.
31466         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
31467         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
31468         calling tree-inline.
31469         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
31470         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
31471         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
31472         (gate_increase_alignment): New function.
31473         (pass_ipa_increase_alignment): New pass.
31474         * ipa.c: Inline tree-pass.h and timevar.h
31475         (function_and_variable_visibility): Move here from cgraphunit.c
31476         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
31477         * passes.c (init_optimization_passes): Add the two new passes.
31478         (execute_todo): Handle cgraph_remove_functions.
31479
31480 2007-01-08  Nick Clifton  <nickc@redhat.com>
31481
31482         * config/frv/predicates.md (reg_or_0_operand): Accept
31483         CONST_DOUBLEs.
31484
31485 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
31486
31487         * config/bfin/rtems.h, config/bfin/t-rtems: New.
31488         * config.gcc: Add bfin*-rtems*.
31489
31490 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
31491
31492         * c.opt: Add -flax-vector-conversions.
31493         * c-typeck.c (convert_for_assignment): Pass flag to
31494         vector_types_convertible_p to allow emission of note.
31495         (digest_init): Likewise.
31496         * c-opts.c: Handle -flax-vector-conversions.
31497         * c-common.c (flag_lax_vector_conversions): New.
31498         (vector_types_convertible_p): Unless -flax-vector conversions
31499         has been passed, disallow conversions between vectors with
31500         differing numbers of subparts and/or element types.  If such
31501         a conversion is disallowed, possibly emit a note on the first
31502         occasion only to inform the user of -flax-vector-conversions.
31503         The new last argument specifies this.
31504         * c-common.h (flag_lax_vector_conversions): New.
31505         (vector_types_convertible_p): Add extra argument.
31506         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
31507         char_type_node for V*QI type vectors.
31508         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
31509         Update to satisfy new typechecking rules.
31510         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
31511         C and C++ variants.
31512         * doc/invoke.texi (C Dialect Options): Document
31513         -flax-vector-conversions.
31514
31515 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
31516
31517         PR tree-optimization/29877
31518         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
31519         a register variable on the RHS to not be replaceable.
31520
31521 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
31522         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
31523         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
31524         const_simm15, const_pow2, const_npow2): Added.
31525         * config/score/misc.md (insv, extv, extzv, movmemsi,
31526         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
31527         * config/score/score.c (score_address_cost, score_select_cc_mode):
31528         Added.
31529         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
31530         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
31531         Update score_print_operand.
31532         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
31533         Adjust register allocate order and update some macro define.
31534         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
31535         mdx_block_move_straight, mdx_block_move_loop_head,
31536         mdx_block_move_loop_body, mdx_block_move_loop_foot,
31537         mdx_block_move_loop, mdx_block_move): Added.
31538         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
31539         mdp_limm): Updated and fix some bug and typo.
31540         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
31541         (movsf, movdf, doloop_end): Added.
31542
31543 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
31544
31545         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
31546         config/arm/thumb2.md: Fix comment typos.
31547         * doc/extend.texi: Fix a typo.
31548
31549 2007-01-07  Eric Christopher  <echristo@apple.com>
31550
31551         * configure.ac: Check for __stack_chk_fail for darwin.
31552         * configure: Regenerate.
31553
31554 2007-01-07  Richard Guenther  <rguenther@suse.de>
31555
31556         * tree-vrp.c (extract_range_from_assert): CSE calls to
31557         compare_values where possible.
31558         (extract_range_from_unary_expr): Likewise.
31559
31560 2007-01-07  Anatoly Sokolov <aesok@post.ru>
31561
31562         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
31563         * config/avr/avr.c (call_insn_operand): Delete function.
31564         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
31565         instead of register number. Use predicates.
31566         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
31567         call_insn_operand): Add.
31568
31569 2007-01-06  Jan Hubicka  <jh@suse.cz>
31570
31571         * tree-pass.h (pass_build_cgraph_edges): Declare.
31572         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
31573         (visited_nodes): Remove.
31574         (cgraph_create_edges): Move to cgraphbuild.c; rename to
31575         build_cgrpah_edges; make visited_nodes local.
31576         (cgraph_process_new_functions): DO not call initialize_inline_failed.
31577         (record_references_in_initializer): Move to cgraphbuild.c
31578         (initialize_inline_failed, rebuild_cgraph_edges,
31579         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
31580         (verify_cgraph_node): Make visited_nodes local.
31581         (cgraph_analyze_function): Do not call cgraph_create_edges and
31582         initialize_inline_failed.
31583         (cgraph_expand_function): Do not call cgraph_lower_function;
31584         assert that function is already lowered.
31585         * Makefile.in (cgraphbuild.o): New.
31586         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
31587         at the end of lowering passes.
31588
31589 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
31590
31591         * ifcvt.c (cond_move_convert_if_block): New function, code
31592         factored out from...
31593         (cond_move_process_if_block): ...here.  Call the new function
31594         on the THEN and ELSE blocks.
31595         (merge_if_block): Do not copy global_live_at_end, merge_blocks
31596         already takes care of this.
31597
31598 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
31599
31600         PR c/19978
31601         * tree.h (TREE_OVERFLOW_P): New.
31602         * c-typeck.c (parser_build_unary_op): Warn only if result
31603         overflowed and operands did not.
31604         (parser_build_binary_op): Likewise.
31605         (convert_for_assignment): Remove redundant overflow_warning.
31606         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
31607
31608 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
31609
31610         * c-typeck.c (store_init_value): Split over two lines to follow
31611         the GNU coding style.
31612
31613 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
31614
31615         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
31616         __GXX_EXPERIMENTAL_CXX0X__.
31617         * doc/cpp.texi: Same.
31618
31619 2007-01-05  Richard Guenther  <rguenther@suse.de>
31620
31621         PR middle-end/27826
31622         * tree.c (get_narrower): Do not construct COMPONENT_REFs
31623         with mismatched types.  Instead explicitly build a
31624         conversion NOP_EXPR.
31625
31626 2007-01-05  Ian Lance Taylor  <iant@google.com>
31627
31628         * c-common.c (decl_with_nonnull_addr_p): New function.
31629         (c_common_truthvalue_conversion): Call it.
31630         * c-typeck.c (build_binary_op): Likewise.
31631         * c-common.h (decl_with_nonnull_addr_p): Declare.
31632
31633 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
31634
31635         PR c/30360
31636         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
31637         denom against 0.0.
31638
31639 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
31640
31641         * doc/install.texi (Final install): Document the fact that
31642         the GNAT runtime should not be stripped.
31643
31644 2007-01-04  Jan Hubicka  <jh@suse.cz>
31645
31646         * tree-inline.c (fold_marked_statements): Update operand caches
31647         and EH after folding
31648
31649 2007-01-04  Ian Lance Taylor  <iant@google.com>
31650
31651         * c-common.c (check_function_nonnull): Whitespace fix.
31652
31653 2007-01-04  Jan Hubicka  <jh@suse.cz>
31654
31655         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
31656         comitted older version of patch.
31657         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
31658         function, celanup cfg and collect garbage.
31659
31660 2007-01-04  Mike Stump  <mrs@apple.com>
31661
31662         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
31663         (clean): Likewise.
31664
31665 2007-01-04  Eric Christopher  <echristo@apple.com>
31666
31667         * libgcc2.c (__bswapsi2): Use SItype.
31668         (__bswapdi2): Use DItype.
31669         * libgcc2.h: Update for above.
31670
31671 2007-01-04  Paul Brook  <paul@codesourcery.com>
31672
31673         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
31674         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
31675         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
31676         umulsidi3, umulsidi3adddi, smulsi3_highpart,
31677         umulsi3_highpart): Make conditional on !arm_arch6.
31678         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
31679         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
31680         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
31681         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
31682         umulsi3_highpart_v6): New insns.
31683
31684 2007-01-04  Roger Sayle  <roger@eyesopen.com>
31685
31686         * fold-const.c (fold_convert): When casting an expression to void,
31687         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
31688         have a type.  Instead of attempting to build a NOP_EXPR, return
31689         these "special" trees directly.
31690
31691 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
31692
31693         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
31694         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
31695         rs6000_cost->fp not 0 as adjustment for outer NEG.
31696
31697 2007-01-04  Jan Hubicka  <jh@suse.cz>
31698
31699         * cgraph.c (cgraph_release_function_body): New function.
31700         (cgraph_remove_node): Use it.
31701         * cgraph.h (cgraph_release_function_body): Declare.
31702         * cgraphunit.c (cgraph_expand_function): Use it.
31703         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
31704         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
31705         is initialized and while compilation of other function is running.
31706         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
31707         statement CFG annotations from here to ...
31708         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
31709
31710 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
31711
31712         * cfgloop.h (enum li_flags): Make the constants powers of two.
31713
31714 2007-01-04  Jan Hubicka  <jh@suse.cz>
31715
31716         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
31717         set.
31718         (fold_marked_statements): New function.
31719         (optimize_inline_calls, tree_function_versioning): Fold new statements.
31720         * tree-inline.h (copy_body_data): Add statements_to_fold.
31721
31722 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
31723
31724         * config.gcc: Mention libgcc/config.host.
31725         * Makefile.in: Update comments mentioning libgcc.
31726         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
31727         (all.cross, start.encap, rest.encap, rest.cross): Update
31728         dependencies for libgcc move.
31729         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
31730         (clean-target, clean-target-libgcc): Delete.
31731         (srcdirify, GCC_EXTRA_PARTS): New macros.
31732         (libgcc-support, libgcc.mvars): New rules.
31733         (distclean): Remove mention of mklibgcc.
31734         (install): Don't reference INSTALL_LIBGCC.
31735         (install-common): Don't reference EXTRA_PARTS.
31736         (install-libgcc, install-multilib): Delete rules.
31737         * mklibgcc.in: Delete file.
31738         * doc/configfiles.texi: Don't mention mklibgcc.
31739
31740         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
31741         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
31742         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
31743         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
31744         (mklibgcc, ldblspecs): Likewise.
31745
31746         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
31747         (posixpre.def): Use $(T).
31748         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
31749         (SHLIB_SRC, SHLIB_INSTALL): Delete.
31750         (SHLIB_LINK): Make dummy.
31751         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
31752
31753         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
31754
31755         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
31756         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
31757         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
31758         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
31759
31760         * configure.ac (all_outputs): Remove mklibgcc.
31761         * configure: Regenerated.
31762
31763 2007-01-03  Josh Conner  <jconner@apple.com>
31764
31765         PR middle-end/29683
31766         * calls.c (compute_argument_addresses): Set stack and stack_slot
31767         for partial args, too.
31768         (store_one_arg): Use locate.size.constant for the size when
31769         generating a save_area.
31770
31771 2007-01-03  Robert Kennedy <jimbob@google.com>
31772
31773         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
31774         whose definitions are deleted due to basic block merging.
31775
31776 2007-01-03  Paul Brook  <paul@codesourcery.com>
31777
31778         PR target/16634
31779         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
31780         functions.
31781         (use_return_insn): Return 0 for Thumb interrupt functions.
31782         (print_multi_reg): Add rfe argument for IRQ returns.
31783         (arm_output_epilogue): Pop interrupt return address directly into PC.
31784         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
31785
31786 2007-01-03  Paul Brook  <paul@codesourcery.com>
31787
31788         Merge from sourcerygxx-4_1.
31789         * config/arm/thumb2.md: New file.
31790         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
31791         Thumb-2.
31792         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
31793         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
31794         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
31795         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
31796         tables.
31797         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
31798         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
31799         comptibility.
31800         * config/arm/ieee754-sf.S: Ditto.
31801         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
31802         (thumb1_base_register_rtx_p): ... to this.
31803         (thumb_index_register_rtx_p): Rename...
31804         (thumb1_index_register_rtx_p): ... to this.
31805         (thumb_output_function_prologue): Rename...
31806         (thumb1_output_function_prologue): ... to this.
31807         (thumb_legitimate_address_p): Rename...
31808         (thumb1_legitimate_address_p): ... to this.
31809         (thumb_rtx_costs): Rename...
31810         (thumb1_rtx_costs): ... to this.
31811         (thumb_compute_save_reg_mask): Rename...
31812         (thumb1_compute_save_reg_mask): ... to this.
31813         (thumb_final_prescan_insn): Rename...
31814         (thumb1_final_prescan_insn): ... to this.
31815         (thumb_expand_epilogue): Rename...
31816         (thumb1_expand_epilogue): ... to this.
31817         (arm_unwind_emit_stm): Rename...
31818         (arm_unwind_emit_sequence): ... to this.
31819         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
31820         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
31821         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
31822         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
31823         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
31824         thumb2_output_casesi): New functions.
31825         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
31826         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
31827         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
31828         THUMB2_WORK_REGS): Define.
31829         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
31830         arm_condexec_mask, arm_condexec_masklen)): New variables.
31831         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
31832         (arm_override_options): Check new CPU capabilities.
31833         Set new architecture flag variables.
31834         (arm_isr_value): Handle v7m interrupt functions.
31835         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
31836         Thumb-2.
31837         (const_ok_for_arm): Handle Thumb-2 constants.
31838         (arm_gen_constant): Ditto.  Use movw when available.
31839         (arm_function_ok_for_sibcall): Return false for v7m interrupt
31840         functions.
31841         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
31842         (thumb_find_work_register, arm_load_pic_register,
31843         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
31844         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
31845         print_multi_reg, output_mov_long_double_fpa_from_arm,
31846         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
31847         output_mov_double_fpa_from_arm, output_move_double,
31848         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
31849         output_return_instruction, arm_output_function_prologue,
31850         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
31851         arm_output_mi_thunk, thumb_set_return_address): Ditto.
31852         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
31853         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
31854         (arithmetic_instr, shift_op): Use arm_shift_nmem.
31855         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
31856         '!' and 'L'.
31857         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
31858         (thumb_expand_prologue): Use thumb_set_frame_pointer.
31859         (arm_file_start): Output directive for unified syntax.
31860         (arm_unwind_emit_set): Handle stack alignment instruction.
31861         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
31862         Add v6t2, v7, v7a, v7r and v7m.
31863         (RETLDM): Add Thumb-2 code.
31864         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
31865         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
31866         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
31867         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
31868         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
31869         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
31870         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
31871         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
31872         ADJUST_INSN_LENGTH): Define.
31873         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
31874         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
31875         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
31876         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
31877         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
31878         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
31879         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
31880         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
31881         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
31882         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
31883         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
31884         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
31885         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
31886         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
31887         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
31888         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
31889         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
31890         cortex-m3.
31891         * config/arm/arm-tune.md: Regenerate.
31892         * config/arm/arm-protos.h: Update prototypes.
31893         * config/arm/vfp.md: Enable patterns for Thumb-2.
31894         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
31895         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
31896         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
31897         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
31898         * config/arm/libunwind.S: Add Thumb-2 code.
31899         * config/arm/constraints.md: Update include Thumb-2.
31900         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
31901         * config/arm/ieee754-df.S: Ditto.
31902         * config/arm/bpabi.S: Ditto.
31903         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
31904         * config/arm/predicates.md (low_register_operand,
31905         low_reg_or_int_operand, thumb_16bit_operator): New.
31906         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
31907         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
31908         * config/arm/t-arm-elf: Add armv7 multilib.
31909         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
31910         Include thumb2.md.
31911         (UNSPEC_STACK_ALIGN, ce_count): New.
31912         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
31913         arm_zero_extendsidi2, arm_zero_extendqidi2): New
31914         insns/expanders.
31915         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
31916         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
31917         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
31918         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
31919         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
31920         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
31921         insns.
31922         * doc/extend.texi: Document ARMv7-M interrupt functions.
31923         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
31924
31925 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
31926
31927         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
31928         (struct _Unwind_Context): Rename args_size to flags, remove
31929         signal_frame field, add a new args_size field and version field.
31930         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
31931         _Unwind_IsExtendedContext): New inline functions.
31932         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
31933         Assume by_value array is only present if _Unwind_IsExtendedContext.
31934         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
31935         _Unwind_IsSignalFrame.
31936         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
31937         (uw_update_context_1): Use _Unwind_SetSignalFrame.
31938         (uw_init_context_1): Initialize context->flags to
31939         EXTENDED_CONTEXT_BIT.
31940         * config/rs6000/linux-unwind.h (frob_update_context): Use
31941         _Unwind_SetSignalFrame.
31942
31943 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31944
31945         PR middle-end/30353
31946         * gimplify.c (gimplify_modify_expr_complex_part): Move below
31947         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
31948         the value.
31949
31950 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
31951
31952         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
31953         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
31954         RET, AT_SP): Remove.
31955         * config/i386/i386.md (*sse_prologue_save_insn): Use return
31956         instead of RET.
31957
31958         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
31959         * cfgbuild.c (find_basic_blocks): Likewise.
31960         * cfgrtl.c (rtl_create_basic_block): Likewise.
31961         * function.c (temp_slots_at_level): Likewise.
31962         * reg-stack.c (stack_regs_mentioned): Likewise.
31963         * regclass.c (allocate_reg_info): Likewise.
31964         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
31965         set_bb_for_stmt, move_block_to_fn): Likewise.
31966         * tree-complex.c (tree_lower_complex): Likewise.
31967         * vec.h (VEC_safe_grow_cleared): New.
31968
31969         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
31970
31971 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
31972
31973         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
31974         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
31975         to loop_version.
31976         * cfgloopmanip.c (scale_loop_frequencies): Export.
31977         (loopify): Scale the frequencies by prescribed coefficients.
31978         (set_zero_probability): New function.
31979         (duplicate_loop_to_header_edge): Improve updating of frequencies.
31980         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
31981         and frequencies according to arguments.
31982         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
31983         correctly.
31984         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
31985         * modulo-sched.c (sms_schedule): Set probabilities for entering
31986         versioned loop correctly.
31987         * tree-vect-transform.c (vect_transform_loop): Ditto.
31988         * cfgloop.h (loopify, loop_version): Declaration changed.
31989         (scale_loop_frequencies): Declared.
31990
31991 2007-01-02  Jan Hubicka  <jh@suse.cz>
31992
31993         * cgraph.c: Include tree-flow.h
31994         (cgraph_add_new-function): Handle IPA_SSA mode; execute
31995         early_local_passes.
31996         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
31997         * tree-pass.h (pass_all_early_optimizations): Declare.
31998         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
31999         early_local_passes.
32000         (cgraph_analyze_function): Do early_local_passes.
32001         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
32002         Do not add referenced vars.
32003         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
32004         SSA form.
32005         (gate_all_early_local_passes): New gate.
32006         (pass_early_local_passes): Use new gate.
32007         (execute_early_local_optimizations): New functions.
32008         (gate_all_early_optimizations): New gate.
32009         (pass_all_early_optimizations): New pass.
32010         (execute_free_datastructures): Free SSA only when initialized.
32011         (gate_init_datastructures): Init only when optimizing.
32012         (tree_lowering_passes): Do early local passes when called late.
32013         * tree-profile.c (do_tree_profiling): Don't profile functions added
32014         late.
32015         (do_early_tree_profiling, pass_early_tree_profile): Kill.
32016         * tree-cfg.c (update_modified_stmts): Do not update when operands are
32017         not active.
32018         * passes.c (init_optimizations_passes): Reorder so we go into SSA
32019         during early_local_passes.
32020         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
32021
32022
32023 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
32024
32025         * Makefile.in: Update copyright year.
32026
32027 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
32028
32029         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
32030         in $(lang_checks) and check-consistency targets.
32031
32032 2007-01-02  Jan Hubicka  <jh@suse.cz>
32033
32034         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
32035         Do not add referenced vars.
32036         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
32037         are not active.
32038         * passes.c (init_optimization_passes): Put mudflap_2 after
32039         free_datastructures.
32040
32041 2007-01-02  Jan Hubicka  <jh@suse.cz>
32042
32043         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
32044         Set NOTHROW flag on call statements proved to be nothrow.
32045         Update statement of local calls so new pure/const functions are
32046         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
32047         goto receivers.
32048         (tree_rest_of_compilation): Register hooks and initialize bitmap
32049         early. Do not set after_inlining flag.
32050
32051 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
32052
32053         * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
32054         HOST_BITS_PER_LONGLONG
32055
32056 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
32057
32058         PR c/19977
32059         * c-typeck.c (store_init_value): Don't emit pedantic overflow
32060         warning for non-static initializers.
32061
32062 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
32063
32064         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
32065         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
32066         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
32067         Always use set_unique_reg_note to add REG_EQUAL notes.
32068
32069 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
32070
32071         Revert:
32072         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
32073
32074         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
32075         * cfgbuild.c (find_basic_blocks): Likewise.
32076         * cfgrtl.c (rtl_create_basic_block): Likewise.
32077         * function.c (temp_slots_at_level): Likewise.
32078         * reg-stack.c (stack_regs_mentioned): Likewise.
32079         * regclass.c (allocate_reg_info): Likewise.
32080         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
32081         set_bb_for_stmt, move_block_to_fn): Likewise.
32082         * tree-complex.c (tree_lower_complex): Likewise.
32083         * vec.h (VEC_safe_grow_cleared): New.
32084
32085 2007-01-02  Ian Lance Taylor  <iant@google.com>
32086
32087         * c-common.c (c_common_truthvalue_conversion): When warning about
32088         using an assignment as a truth value, set TREE_NO_WARNING.
32089
32090 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
32091
32092         PR middle-end/7651
32093         * c.opt (Wold-style-declaration): New.
32094         * doc/invoke.texi (C-only Warning Options): New.
32095         (Wold-style-declaration): Document it.
32096         (Wextra): Enabled by -Wextra.
32097         * c-opts.c (c_common_post_options): Enabled by -Wextra.
32098         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
32099         -Wold-style-declaration.
32100
32101 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
32102
32103         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
32104         * cfgbuild.c (find_basic_blocks): Likewise.
32105         * cfgrtl.c (rtl_create_basic_block): Likewise.
32106         * function.c (temp_slots_at_level): Likewise.
32107         * reg-stack.c (stack_regs_mentioned): Likewise.
32108         * regclass.c (allocate_reg_info): Likewise.
32109         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
32110         set_bb_for_stmt, move_block_to_fn): Likewise.
32111         * tree-complex.c (tree_lower_complex): Likewise.
32112         * vec.h (VEC_safe_grow_cleared): New.
32113
32114 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
32115
32116         * c-common.c (c_common_nodes_and_builtins): Since variants of
32117         void_type_node get built before it is given a name, we need to
32118         give those variants the name, too.
32119         (complete_array_type): We need to work with the canonical main
32120         type of the array, from which we will build the qualified version.
32121         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
32122         * print-tree.c (print_node): Display canonical type information
32123         for each type.
32124         * stor-layout.c (layout_type): When we don't know the
32125         alignment of a type for which we're building an array, we end up
32126         guessing wrong, so make the type require structural equality.
32127         * tree.c (make_node_stat): When we build a new type, it is its
32128         own canonical type.
32129         (build_type_attribute_qual_variant): When building an attribute
32130         variant, its canonical type is the non-attribute variant. However,
32131         if the attributes are target-dependent and they differ, we need to
32132         use structural equality checks for this type.
32133         (build_qualified_type): A qualified type is not equivalent to its
32134         unqualified variant; set the canonical type appropriately.
32135         (build_distinct_type_copy): When building a distinct type from
32136         another type, the new type is its own canonical type.
32137         (build_variant_type_copy): When building a new type variant, we
32138         assume that it is equivalent to the original type.
32139         (build_pointer_type_for_mode): When building a pointer type, also
32140         build a canonical type pointer.
32141         (build_reference_type_for_mode): When building a reference type,
32142         also build a canonical type reference.
32143         (build_index_type): When we can't hash an index type (e.g.,
32144         because its maximum value is negative), the index type requires
32145         structural equality tests.
32146         (build_array_type): Build the canonical form of an array type.
32147         (build_function_type): Function types require structural equality,
32148         because they contain default arguments, attributes, etc.
32149         (build_method_type_directly): Ditto for method types.
32150         (build_offset_type): Build the canonical offset type.
32151         (build_complex_type): Build the canonical vector type.
32152         (make_vector_type): Build the canonical vector type.
32153         * tree.h (TYPE_CANONICAL): New.
32154         (TYPE_STRUCTURAL_EQUALITY_P): New.
32155         (SET_TYPE_STRUCTURAL_EQUALITY): New.
32156         (struct tree_type): Added "canonical" field.
32157         * params.h (VERIFY_CANONICAL_TYPES): New.
32158         * doc/c-tree.texi (TYPE_CANONICAL): Document.
32159         (TYPE_STRUCTURAL_EQUALITY_P): Document.
32160         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
32161         * doc/invoke.texi (verify-canonical-types): Document --param
32162         parameter for verifying canonical types.
32163
32164 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
32165
32166         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
32167         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
32168         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
32169         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
32170         tm_file.
32171         * config/rs6000/e500.h: New.
32172         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
32173         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
32174         Remove.
32175         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
32176         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
32177         TARGET_E500_DOUBLE): Remove.
32178         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
32179         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
32180         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
32181         * config/rs6000/rs6000.c (rs6000_override_options): Use
32182         CHECK_E500_OPTIONS.
32183
32184 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
32185
32186         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
32187         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
32188         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
32189         rs6000_emit_cmove): Don't check TARGET_E500.
32190         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
32191         sordered): Don't check TARGET_E500.
32192
32193 2007-01-01  Eric Christopher  <echristo@apple.com>
32194
32195         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
32196         HARD_REGISTER_NUM_P.
32197
32198 2007-01-01  Roger Sayle  <roger@eyesopen.com>
32199
32200         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
32201         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
32202         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
32203         eq/ne Y".
32204
32205 2007-01-01  Mike Stump  <mrs@apple.com>
32206
32207         * configure.ac: Remove support for building with Apple's gcc-3.1.
32208
32209 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
32210
32211         PR middle-end/30311
32212         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
32213         REG is a hard register.  Do not modify REG before calling
32214         subreg_nregs.
32215         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
32216         multiple of the size of YMODE for certain lowpart cases.
32217
32218 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
32219
32220         PR middle-end/30253
32221         * gimplify (voidify_wrapper_expr): Update for
32222         GIMPLE_MODIFY_STMT.
32223
32224 2007-01-01  Andreas Schwab  <schwab@suse.de>
32225
32226         PR target/29166
32227         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
32228         save of BR0 in extra_spill_size instead of spill_size.
32229         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
32230         area.
32231         (ia64_expand_epilogue): Restore BR0 from its new location.
32232
32233 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
32234
32235         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
32236         Use a temporary variable if the left hand side is not a gimple
32237         register.
32238
32239 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
32240
32241         * gimplify.c (gimplify_return_expr): Make the temporary variable
32242         for the return expression, a gimple register variable.
32243
32244 2007-01-01  Jan Hubicka  <jh@suse.cz>
32245
32246         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
32247         INSN_LIST.
32248
32249 2007-01-01  Mike Stump  <mrs@apple.com>
32250
32251         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
32252         .literal16.
32253         * config/darwin.c (machopic_select_rtx_section): Use
32254         HAVE_GAS_LITERAL16.
32255         (darwin_mergeable_constant_section): Likewise.
32256         * configure: Regenerate.
32257         * config.in: Regenerate.
32258
32259 2007-01-01  Jan Hubicka  <jh@suse.cz>
32260             Andrew Pinski  <pinskia@gmail.com>
32261
32262         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
32263         before starting IPA passes.